@bleedingdev/modern-js-federation-runtime 3.9.3-ultramodern.8 → 3.9.3-ultramodern.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/cjs/module-federation/native-browser-dev-client.js +320 -0
  2. package/dist/cjs/module-federation/native-browser-dev-refresh.js +226 -0
  3. package/dist/cjs/module-federation/native-browser-dev-runtime-plugin.js +233 -0
  4. package/dist/cjs/module-federation/native-dev-refresh-runtime-plugin.js +267 -0
  5. package/dist/cjs/module-federation/renderer-runtime-plugin.js +5 -2
  6. package/dist/esm/module-federation/native-browser-dev-client.mjs +276 -0
  7. package/dist/esm/module-federation/native-browser-dev-refresh.mjs +182 -0
  8. package/dist/esm/module-federation/native-browser-dev-runtime-plugin.mjs +183 -0
  9. package/dist/esm/module-federation/native-dev-refresh-runtime-plugin.mjs +229 -0
  10. package/dist/esm/module-federation/renderer-runtime-plugin.mjs +5 -2
  11. package/dist/esm-node/module-federation/native-browser-dev-client.mjs +277 -0
  12. package/dist/esm-node/module-federation/native-browser-dev-refresh.mjs +183 -0
  13. package/dist/esm-node/module-federation/native-browser-dev-runtime-plugin.mjs +184 -0
  14. package/dist/esm-node/module-federation/native-dev-refresh-runtime-plugin.mjs +230 -0
  15. package/dist/esm-node/module-federation/renderer-runtime-plugin.mjs +5 -2
  16. package/dist/types/module-federation/native-browser-dev-client.d.ts +41 -0
  17. package/dist/types/module-federation/native-browser-dev-refresh.d.ts +86 -0
  18. package/dist/types/module-federation/native-browser-dev-runtime-plugin.d.ts +40 -0
  19. package/dist/types/module-federation/native-dev-refresh-runtime-plugin.d.ts +90 -0
  20. package/package.json +54 -7
  21. package/src/module-federation/native-browser-dev-client.ts +424 -0
  22. package/src/module-federation/native-browser-dev-refresh.ts +373 -0
  23. package/src/module-federation/native-browser-dev-runtime-plugin.ts +276 -0
  24. package/src/module-federation/native-dev-refresh-runtime-plugin.ts +445 -0
  25. package/src/module-federation/renderer-runtime-plugin.ts +7 -2
@@ -0,0 +1,320 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ prepareNativeBrowserDevClient: ()=>prepareNativeBrowserDevClient,
32
+ releaseNativeBrowserDevClient: ()=>releaseNativeBrowserDevClient,
33
+ startNativeBrowserDevClient: ()=>startNativeBrowserDevClient
34
+ });
35
+ const external_native_browser_dev_refresh_js_namespaceObject = require("./native-browser-dev-refresh.js");
36
+ const external_native_browser_dev_runtime_plugin_js_namespaceObject = require("./native-browser-dev-runtime-plugin.js");
37
+ const CLIENTS = Symbol.for('ultramodern.federation.browser-dev-clients.v1');
38
+ const clients = ()=>{
39
+ const root = globalThis;
40
+ if (!root[CLIENTS]) Object.defineProperty(root, CLIENTS, {
41
+ value: new Map()
42
+ });
43
+ return root[CLIENTS];
44
+ };
45
+ function commitClient(remoteName, graph) {
46
+ const state = clients().get(remoteName);
47
+ const next = state?.candidates.get(graph.runtimeHash)?.deref();
48
+ if (!state || !next) throw new Error('Accepted native graph has no matching fresh HMR runtime.');
49
+ if (state.active === next) return;
50
+ state.active?.stop();
51
+ state.active = next;
52
+ next.start();
53
+ }
54
+ function prepareNativeBrowserDevClient(remoteName, manifest) {
55
+ const hash = /\/__ultramodern_mf__\/([a-f0-9]+)\//u.exec(new URL(manifest).pathname)?.[1];
56
+ const candidate = hash && clients().get(remoteName)?.candidates.get(hash)?.deref();
57
+ if (!candidate) throw new Error('Native graph has no loaded standby HMR runtime.');
58
+ return candidate.lease();
59
+ }
60
+ function releaseNativeBrowserDevClient(remoteName, manifest) {
61
+ const hash = /\/__ultramodern_mf__\/([a-f0-9]+)\//u.exec(new URL(manifest).pathname)?.[1];
62
+ if (!hash) return;
63
+ const state = clients().get(remoteName);
64
+ const candidate = state?.candidates.get(hash)?.deref();
65
+ if (!state || !candidate) return;
66
+ candidate.releaseStandby();
67
+ }
68
+ function startNativeBrowserDevClient(options) {
69
+ const state = clients().get(options.remoteName) ?? {
70
+ candidates: new Map()
71
+ };
72
+ clients().set(options.remoteName, state);
73
+ const initialHash = options.hash();
74
+ let socket;
75
+ let ping;
76
+ let reconnect;
77
+ let reconnectCount = 0;
78
+ let lastHash;
79
+ let running = false;
80
+ let applying;
81
+ let lifetime;
82
+ let removeCustom;
83
+ const custom = new Map();
84
+ const queued = [];
85
+ const leases = new Set();
86
+ const base = options.serverBase.endsWith('/') ? options.serverBase : `${options.serverBase}/`;
87
+ const report = (error)=>{
88
+ console.error('[ultramodern] Native federation development update failed:', error);
89
+ if (false !== options.config.overlay && ('object' != typeof options.config.overlay || false !== options.config.overlay.errors)) options.overlay()?.create('Native federation update failed', String(error));
90
+ };
91
+ const send = (message)=>{
92
+ if (socket?.readyState === WebSocket.OPEN) socket.send(JSON.stringify(message));
93
+ else queued.push(message);
94
+ };
95
+ const errorMessage = (error)=>error instanceof Error ? error.message : String(error);
96
+ const onError = (event)=>send({
97
+ type: 'client-error',
98
+ id: crypto.randomUUID(),
99
+ message: event.message,
100
+ name: event.error?.name,
101
+ stack: event.error?.stack
102
+ });
103
+ const onRejected = (event)=>send({
104
+ type: 'client-error',
105
+ id: crypto.randomUUID(),
106
+ message: `Uncaught (in promise) ${errorMessage(event.reason)}`,
107
+ name: event.reason?.name,
108
+ stack: event.reason?.stack
109
+ });
110
+ const fullReload = (data)=>{
111
+ if (!options.liveReload) return;
112
+ if (data?.path?.endsWith('.html')) {
113
+ const pathname = decodeURI(location.pathname);
114
+ const target = base + data.path.slice(1);
115
+ if (pathname !== target && pathname !== target.slice(0, -5) && !(pathname.endsWith('/') && `${pathname}index.html` === target)) return;
116
+ }
117
+ location.reload();
118
+ };
119
+ const apply = ()=>{
120
+ if (!running || applying || !lastHash || lastHash === options.hash()) return;
121
+ const signal = lifetime.signal;
122
+ const targetHash = lastHash;
123
+ applying = (async ()=>{
124
+ if ((0, external_native_browser_dev_runtime_plugin_js_namespaceObject.hasNativeBrowserDevPublisher)(options.remoteName)) {
125
+ const graph = await (0, external_native_browser_dev_runtime_plugin_js_namespaceObject.readNativeBrowserDevPublication)(options.remoteName, {
126
+ signal: AbortSignal.any([
127
+ signal,
128
+ AbortSignal.timeout(3000)
129
+ ]),
130
+ revisionHeader: options.revisionHeader
131
+ });
132
+ if (signal.aborted) throw signal.reason;
133
+ if (graph.buildId !== options.buildId) {
134
+ try {
135
+ await (0, external_native_browser_dev_runtime_plugin_js_namespaceObject.replaceNativeBrowserDevRemote)(graph);
136
+ } catch (error) {
137
+ if (running && !signal.aborted && (0, external_native_browser_dev_runtime_plugin_js_namespaceObject.hasNativeBrowserDevPublisher)(options.remoteName) && (0, external_native_browser_dev_refresh_js_namespaceObject.isNativeBrowserDevCommitError)(error, graph.revision)) {
138
+ state.failure = {
139
+ runtimeHash: graph.runtimeHash,
140
+ error
141
+ };
142
+ report(error);
143
+ commitClient(options.remoteName, graph);
144
+ }
145
+ throw error;
146
+ }
147
+ if (!running || signal.aborted || !(0, external_native_browser_dev_runtime_plugin_js_namespaceObject.hasNativeBrowserDevPublisher)(options.remoteName)) return;
148
+ commitClient(options.remoteName, graph);
149
+ return;
150
+ }
151
+ }
152
+ if (!options.hot) return fullReload();
153
+ if ('idle' !== options.hot.status()) return;
154
+ try {
155
+ const updated = await options.hot.check(true);
156
+ if (!updated) fullReload();
157
+ } catch (error) {
158
+ console.error('[rsbuild] HMR update failed, performing full reload:', error);
159
+ fullReload();
160
+ }
161
+ })().catch((error)=>{
162
+ if (!signal.aborted) report(error);
163
+ }).finally(()=>{
164
+ applying = void 0;
165
+ if (running && !signal.aborted && lastHash !== targetHash) apply();
166
+ });
167
+ };
168
+ const clearOverlayForBuild = ()=>{
169
+ if (state.failure) {
170
+ if (!lastHash || lastHash === state.failure.runtimeHash) return;
171
+ state.failure = void 0;
172
+ }
173
+ options.overlay()?.clear();
174
+ };
175
+ const message = (event)=>{
176
+ let value;
177
+ try {
178
+ value = JSON.parse(event.data);
179
+ } catch (error) {
180
+ report(error);
181
+ return;
182
+ }
183
+ switch(value.type){
184
+ case 'hash':
185
+ lastHash = value.data;
186
+ break;
187
+ case 'ok':
188
+ clearOverlayForBuild();
189
+ apply();
190
+ break;
191
+ case 'warnings':
192
+ for (const warning of value.data?.text ?? [])console.warn(warning);
193
+ clearOverlayForBuild();
194
+ apply();
195
+ break;
196
+ case 'errors':
197
+ for (const error of value.data?.text ?? [])console.error(error);
198
+ if (value.data?.html) options.overlay()?.create('Build failed', value.data.html);
199
+ break;
200
+ case 'full-reload':
201
+ fullReload(value.data);
202
+ break;
203
+ case 'static-changed':
204
+ fullReload();
205
+ break;
206
+ case 'custom':
207
+ for (const listener of custom.get(value.data?.event) ?? [])listener(value.data.data);
208
+ break;
209
+ case 'resolved-client-error':
210
+ options.overlay()?.create('Runtime errors', String(value.data?.message ?? ''));
211
+ break;
212
+ }
213
+ };
214
+ const socketUrl = (fallback)=>{
215
+ const url = new URL('http://localhost');
216
+ url.hostname = (fallback ? options.serverHost : options.config.host) || location.hostname;
217
+ url.port = String((fallback ? options.serverPort : options.config.port) || location.port);
218
+ url.protocol = options.config.protocol || ('https:' === location.protocol ? 'wss:' : 'ws:');
219
+ url.pathname = options.config.path;
220
+ url.searchParams.set('token', options.token);
221
+ return options.resolveWebSocketUrl?.(url.href) ?? url.href;
222
+ };
223
+ const detachSocket = ()=>{
224
+ clearInterval(ping);
225
+ ping = void 0;
226
+ const previous = socket;
227
+ socket = void 0;
228
+ if (!previous) return;
229
+ previous.onopen = previous.onclose = previous.onmessage = previous.onerror = null;
230
+ previous.close();
231
+ };
232
+ const connect = (fallback = false)=>{
233
+ if (!running) return;
234
+ socket = new WebSocket(socketUrl(fallback));
235
+ socket.onopen = ()=>{
236
+ reconnectCount = 0;
237
+ ping = setInterval(()=>send({
238
+ type: 'ping'
239
+ }), 30000);
240
+ for (const item of queued.splice(0))send(item);
241
+ };
242
+ socket.onmessage = message;
243
+ socket.onclose = ()=>{
244
+ detachSocket();
245
+ if (!running || reconnectCount >= options.config.reconnect) return;
246
+ reconnectCount++;
247
+ reconnect = setTimeout(()=>connect(), 1000 * 1.5 ** reconnectCount);
248
+ };
249
+ socket.onerror = ()=>{
250
+ if (options.resolveWebSocketUrl || fallback || socketUrl(false) === socketUrl(true)) return;
251
+ detachSocket();
252
+ connect(true);
253
+ };
254
+ };
255
+ const client = {
256
+ arm () {
257
+ removeCustom ??= options.installCustomListeners(custom);
258
+ },
259
+ lease () {
260
+ const lease = {};
261
+ leases.add(lease);
262
+ client.arm();
263
+ return ()=>{
264
+ if (!leases.delete(lease)) return;
265
+ client.releaseStandby();
266
+ };
267
+ },
268
+ releaseStandby () {
269
+ if (state.active !== client && !leases.size) client.stop();
270
+ },
271
+ start () {
272
+ if (running) return;
273
+ running = true;
274
+ lifetime = new AbortController();
275
+ client.arm();
276
+ if (options.browserLogs) {
277
+ window.addEventListener('error', onError);
278
+ window.addEventListener('unhandledrejection', onRejected);
279
+ }
280
+ connect();
281
+ },
282
+ stop () {
283
+ if (!running && !removeCustom) return;
284
+ running = false;
285
+ lifetime?.abort(new Error('Native browser HMR runtime retired.'));
286
+ clearTimeout(reconnect);
287
+ reconnect = void 0;
288
+ detachSocket();
289
+ window.removeEventListener('error', onError);
290
+ window.removeEventListener('unhandledrejection', onRejected);
291
+ removeCustom?.();
292
+ removeCustom = void 0;
293
+ custom.clear();
294
+ queued.length = 0;
295
+ }
296
+ };
297
+ client.arm();
298
+ state.candidates.set(initialHash, new WeakRef(client));
299
+ if (!state.active) {
300
+ state.active = client;
301
+ client.start();
302
+ }
303
+ return ()=>{
304
+ client.stop();
305
+ if (state.active === client) state.active = void 0;
306
+ if (state.candidates.get(initialHash)?.deref() === client) state.candidates.delete(initialHash);
307
+ if (!state.active && !state.candidates.size) clients().delete(options.remoteName);
308
+ };
309
+ }
310
+ exports.prepareNativeBrowserDevClient = __webpack_exports__.prepareNativeBrowserDevClient;
311
+ exports.releaseNativeBrowserDevClient = __webpack_exports__.releaseNativeBrowserDevClient;
312
+ exports.startNativeBrowserDevClient = __webpack_exports__.startNativeBrowserDevClient;
313
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
314
+ "prepareNativeBrowserDevClient",
315
+ "releaseNativeBrowserDevClient",
316
+ "startNativeBrowserDevClient"
317
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
318
+ Object.defineProperty(exports, '__esModule', {
319
+ value: true
320
+ });
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ const COMMIT_ERROR = Symbol.for('ultramodern.federation.browser-dev-commit-error.v1');
31
+ class NativeBrowserDevCommitError extends Error {
32
+ constructor(revision, cause){
33
+ super(`Native browser refresh failed after ownership transfer began: ${cause instanceof Error ? cause.message : String(cause)}`, {
34
+ cause
35
+ }), this[COMMIT_ERROR] = true;
36
+ this.name = 'NativeBrowserDevCommitError';
37
+ Object.defineProperty(this, 'revision', {
38
+ value: revision,
39
+ enumerable: true
40
+ });
41
+ }
42
+ }
43
+ function isNativeBrowserDevCommitError(error, revision) {
44
+ return error instanceof Error && true === Reflect.get(error, COMMIT_ERROR) && Reflect.get(error, 'revision') === revision;
45
+ }
46
+ function nativeBrowserDevCommitFailure(revision, cause) {
47
+ return new NativeBrowserDevCommitError(revision, cause);
48
+ }
49
+ const selectedShares = (host)=>Object.entries(host.shareScopeMap).flatMap(([scope, packages])=>Object.entries(packages).flatMap(([name, versions])=>Object.entries(versions).filter(([, provider])=>provider.loaded || provider.loading).map(([version, provider])=>({
50
+ scope,
51
+ name,
52
+ version,
53
+ provider,
54
+ lib: provider.lib,
55
+ get: provider.get
56
+ }))));
57
+ function assertSelectedShares(host, shares) {
58
+ for (const share of shares){
59
+ const provider = host.shareScopeMap[share.scope]?.[share.name]?.[share.version];
60
+ if (provider !== share.provider || provider.lib !== share.lib || provider.get !== share.get) throw new Error(`Native browser refresh changed the selected shared provider ${share.name}.`);
61
+ }
62
+ }
63
+ function createNativeBrowserDevRefresh(options) {
64
+ let active;
65
+ let pending;
66
+ let disposed = false;
67
+ const consumed = new Set();
68
+ const recovery = new Set();
69
+ const released = new WeakSet();
70
+ const release = (stage)=>{
71
+ if (released.has(stage)) return;
72
+ released.add(stage);
73
+ try {
74
+ stage.release();
75
+ } finally{
76
+ stage.host.moduleCache.clear();
77
+ }
78
+ };
79
+ return {
80
+ replace (graph) {
81
+ if (disposed) return Promise.reject(new Error('Native browser refresh is disposed.'));
82
+ if (pending) return Promise.reject(new Error('Native browser refresh already has an active replacement.'));
83
+ if (!/^[a-f0-9]{64}$/u.test(graph.revision)) return Promise.reject(new Error('Native browser graph revision is invalid.'));
84
+ if (consumed.has(graph.revision)) return Promise.reject(new Error('Native browser graph was already consumed; rebuild before retrying.'));
85
+ const commitErrors = new WeakSet();
86
+ const task = (async ()=>{
87
+ const host = options.host;
88
+ const shares = selectedShares(host);
89
+ const replacement = options.prepareReplacement(options.boundary);
90
+ const stage = options.createHost({
91
+ ...host.options,
92
+ name: `${host.name}:native-dev:${graph.revision}`,
93
+ id: `${host.name}:native-dev:${graph.revision}`,
94
+ remotes: [
95
+ {
96
+ ...graph.remote
97
+ }
98
+ ],
99
+ shared: {}
100
+ });
101
+ if (stage.host === host || stage.host === active?.host) throw new Error('Native browser refresh requires an isolated staging host.');
102
+ let accepted = false;
103
+ let module;
104
+ let failed = false;
105
+ let failure;
106
+ try {
107
+ for (const [name, scope] of Object.entries(host.shareScopeMap)){
108
+ stage.host.initShareScopeMap(name, scope, {
109
+ hostShareScopeMap: host.shareScopeMap
110
+ });
111
+ if (stage.host.shareScopeMap[name] !== scope) throw new Error('Native browser refresh lost the actual shared scope.');
112
+ }
113
+ const factory = await stage.host.loadRemote(options.id, {
114
+ loadFactory: false
115
+ });
116
+ if (disposed) throw new Error('Native browser refresh was disposed while loading.');
117
+ if ('function' != typeof factory) throw new Error('Native browser refresh did not receive an exposed factory.');
118
+ assertSelectedShares(host, shares);
119
+ stage.prepareFactory?.();
120
+ consumed.add(graph.revision);
121
+ try {
122
+ module = replacement.execute(factory);
123
+ } catch (error) {
124
+ if (replacement.commitStarted) {
125
+ if (active) recovery.add(active);
126
+ active = stage;
127
+ accepted = true;
128
+ }
129
+ throw error;
130
+ }
131
+ const previous = active;
132
+ active = stage;
133
+ accepted = true;
134
+ assertSelectedShares(host, shares);
135
+ const retired = new Set(recovery);
136
+ recovery.clear();
137
+ if (previous) retired.add(previous);
138
+ const errors = [];
139
+ for (const retained of retired)try {
140
+ release(retained);
141
+ } catch (error) {
142
+ errors.push(error);
143
+ }
144
+ if (errors.length) throw new AggregateError(errors, 'Native browser refresh retirement failed.');
145
+ } catch (error) {
146
+ failed = true;
147
+ failure = error;
148
+ }
149
+ const retired = new Set();
150
+ if (disposed && active === stage) {
151
+ active = void 0;
152
+ for (const retained of recovery)retired.add(retained);
153
+ recovery.clear();
154
+ retired.add(stage);
155
+ } else if (!accepted) retired.add(stage);
156
+ const cleanupErrors = [];
157
+ for (const retained of retired)try {
158
+ release(retained);
159
+ } catch (error) {
160
+ cleanupErrors.push(error);
161
+ }
162
+ if (cleanupErrors.length) {
163
+ failure = new AggregateError(failed ? [
164
+ failure,
165
+ ...cleanupErrors
166
+ ] : cleanupErrors, 'Native browser refresh cleanup failed.');
167
+ failed = true;
168
+ }
169
+ if (failed) {
170
+ if (accepted) {
171
+ const committedFailure = nativeBrowserDevCommitFailure(graph.revision, failure);
172
+ commitErrors.add(committedFailure);
173
+ throw committedFailure;
174
+ }
175
+ throw failure;
176
+ }
177
+ return module;
178
+ })().catch((error)=>{
179
+ if (error instanceof Error && true === Reflect.get(error, COMMIT_ERROR) && !commitErrors.has(error)) throw new Error(`Native browser graph failed before its own ownership transfer: ${error.message}`, {
180
+ cause: error
181
+ });
182
+ throw error;
183
+ });
184
+ pending = task;
185
+ task.finally(()=>{
186
+ if (pending === task) pending = void 0;
187
+ }).catch(()=>{});
188
+ return task;
189
+ },
190
+ get activeHost () {
191
+ return active?.host ?? options.host;
192
+ },
193
+ dispose () {
194
+ if (disposed) return;
195
+ disposed = true;
196
+ const previous = active;
197
+ active = void 0;
198
+ const retained = new Set(recovery);
199
+ recovery.clear();
200
+ if (previous) retained.add(previous);
201
+ const errors = [];
202
+ for (const stage of retained)try {
203
+ release(stage);
204
+ } catch (error) {
205
+ errors.push(error);
206
+ }
207
+ if (errors.length) throw new AggregateError(errors, 'Native browser refresh cleanup failed.');
208
+ }
209
+ };
210
+ }
211
+ __webpack_require__.d(__webpack_exports__, {
212
+ createNativeBrowserDevRefresh: ()=>createNativeBrowserDevRefresh,
213
+ isNativeBrowserDevCommitError: ()=>isNativeBrowserDevCommitError,
214
+ nativeBrowserDevCommitFailure: ()=>nativeBrowserDevCommitFailure
215
+ });
216
+ exports.createNativeBrowserDevRefresh = __webpack_exports__.createNativeBrowserDevRefresh;
217
+ exports.isNativeBrowserDevCommitError = __webpack_exports__.isNativeBrowserDevCommitError;
218
+ exports.nativeBrowserDevCommitFailure = __webpack_exports__.nativeBrowserDevCommitFailure;
219
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
220
+ "createNativeBrowserDevRefresh",
221
+ "isNativeBrowserDevCommitError",
222
+ "nativeBrowserDevCommitFailure"
223
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
224
+ Object.defineProperty(exports, '__esModule', {
225
+ value: true
226
+ });