@fulgurjs/federation 4.2.1 → 4.3.1

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.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RUNTIME_VERSION
3
- } from "./chunk-S3MYAJG5.js";
3
+ } from "./chunk-LU3MBKB2.js";
4
4
 
5
5
  // src/index.ts
6
6
  import path6 from "path";
@@ -64,7 +64,7 @@ function joinUrl(base, file) {
64
64
  function normalizeRemoteValue(key, value, filename, warnings) {
65
65
  if (typeof value === "function") {
66
66
  warnings.push(
67
- `remotes["${key}"] is a function (promise-based remote): it cannot be serialized into the bundle; register it at runtime via registerRemote() (same semantics as webpack "promise new Promise"). The key stays in config for import-syntax rewriting.`
67
+ `\u8FDC\u7A0B\u5E94\u7528 "${key}" \u4F7F\u7528\u52A8\u6001 Promise \u914D\u7F6E\uFF0C\u65E0\u6CD5\u76F4\u63A5\u5199\u5165\u6784\u5EFA\u4EA7\u7269\u3002\u8BF7\u5728\u8FD0\u884C\u65F6\u8C03\u7528 registerRemote() \u6CE8\u518C\uFF1B\u914D\u7F6E\u4E2D\u7684\u952E\u4ECD\u7528\u4E8E\u6539\u5199 import \u8BED\u6CD5\u3002`
68
68
  );
69
69
  return {
70
70
  key,
@@ -84,7 +84,7 @@ function normalizeRemoteValue(key, value, filename, warnings) {
84
84
  selfName = raw.slice(0, at);
85
85
  raw = raw.slice(at + 1);
86
86
  } else if (at === 0 || at === raw.length - 1) {
87
- throw new Error(`Invalid remote request "${raw}" for "${key}": misplaced "@".`);
87
+ throw new Error(`\u8FDC\u7A0B\u5E94\u7528 "${key}" \u7684\u5730\u5740 "${raw}" \u65E0\u6548\uFF1A@ \u4F4D\u7F6E\u9519\u8BEF\u3002\u8BF7\u4F7F\u7528 name@url\uFF0C\u6216\u76F4\u63A5\u586B\u5199\u8FDC\u7A0B\u5730\u5740\u3002`);
88
88
  }
89
89
  }
90
90
  const resolveEntry = (rawUrl, mode) => {
@@ -147,10 +147,10 @@ function normalizeShared(shared, shareScopeDefault, pkgDependencies, root, warni
147
147
  for (const [configKey, hint] of entries) {
148
148
  if (hint.eager && hint.import === false) {
149
149
  configError(
150
- `CFG-008: shared["${configKey}"] combines eager with import:false`,
150
+ `CFG-008\uFF1Ashared["${configKey}"] \u4E0D\u80FD\u540C\u65F6\u914D\u7F6E eager \u548C import:false`,
151
151
  hint,
152
- "eager requires a local copy to bundle into the initial chunk",
153
- `shared: { '${configKey}': { eager: true } } // or drop eager: { '${configKey}': { import: false } }`
152
+ "eager \u9700\u8981\u5C06\u672C\u5730\u526F\u672C\u6253\u8FDB\u521D\u59CB chunk\uFF0C\u800C import:false \u8868\u793A\u6CA1\u6709\u672C\u5730\u526F\u672C",
153
+ `shared: { '${configKey}': { eager: true } } // \u6216\u53D6\u6D88 eager\uFF1A{ '${configKey}': { import: false } }`
154
154
  );
155
155
  }
156
156
  const canonical = configKey.endsWith("/") ? configKey.slice(0, -1) : configKey;
@@ -161,10 +161,10 @@ function normalizeShared(shared, shareScopeDefault, pkgDependencies, root, warni
161
161
  const dup = out.find((s) => s.shareKey === shareKeyOfHint && s.shareScope === shareScopeOfHint);
162
162
  if (dup) {
163
163
  configError(
164
- `CFG-008: shared key "${shareKeyOfHint}" is declared twice in share scope "${shareScopeOfHint}" (keys "${dup.configKey}" and "${configKey}")`,
164
+ `CFG-008\uFF1A\u5171\u4EAB\u952E "${shareKeyOfHint}" \u5728\u4F5C\u7528\u57DF "${shareScopeOfHint}" \u4E2D\u91CD\u590D\u58F0\u660E\uFF08\u914D\u7F6E\u952E "${dup.configKey}" \u4E0E "${configKey}"\uFF09`,
165
165
  configKey,
166
- "one declaration per shareKey per share scope",
167
- `merge hints: { '${shareKeyOfHint}': { singleton: true } } // or use distinct shareKey values`
166
+ "\u6BCF\u4E2A\u5171\u4EAB\u4F5C\u7528\u57DF\u5185\uFF0C\u540C\u4E00 shareKey \u53EA\u80FD\u58F0\u660E\u4E00\u6B21",
167
+ `\u5408\u5E76\u914D\u7F6E\uFF1A{ '${shareKeyOfHint}': { singleton: true } } // \u6216\u4F7F\u7528\u4E0D\u540C\u7684 shareKey`
168
168
  );
169
169
  }
170
170
  let requiredVersion;
@@ -179,7 +179,7 @@ function normalizeShared(shared, shareScopeDefault, pkgDependencies, root, warni
179
179
  } else {
180
180
  requiredVersion = false;
181
181
  warnings.push(
182
- `shared["${configKey}"]: requiredVersion could not be inferred from package.json; accepting any version.`
182
+ `\u5171\u4EAB\u4F9D\u8D56 "${configKey}" \u65E0\u6CD5\u4ECE package.json \u63A8\u65AD requiredVersion\uFF0C\u6682\u63A5\u53D7\u4EFB\u610F\u7248\u672C\u3002\u5EFA\u8BAE\u663E\u5F0F\u586B\u5199\u7248\u672C\u7EA6\u675F\u3002`
183
183
  );
184
184
  }
185
185
  }
@@ -193,7 +193,7 @@ function normalizeShared(shared, shareScopeDefault, pkgDependencies, root, warni
193
193
  } else {
194
194
  version = "0.0.0";
195
195
  warnings.push(
196
- `shared["${configKey}"]: installed version not found; registering as 0.0.0 (it will still be consumable but ranked lowest).`
196
+ `\u5171\u4EAB\u4F9D\u8D56 "${configKey}" \u672A\u627E\u5230\u5DF2\u5B89\u88C5\u7248\u672C\uFF0C\u6682\u6309 0.0.0 \u6CE8\u518C\uFF1B\u4ECD\u53EF\u4F7F\u7528\uFF0C\u4F46\u7248\u672C\u9009\u62E9\u4F18\u5148\u7EA7\u6700\u4F4E\u3002\u8BF7\u68C0\u67E5\u4F9D\u8D56\u662F\u5426\u5B89\u88C5\u6216\u663E\u5F0F\u586B\u5199 shared.version\u3002`
197
197
  );
198
198
  }
199
199
  }
@@ -224,33 +224,33 @@ function configError(what, got, expect, example) {
224
224
  const gotText = typeof got === "string" ? `"${got}"` : JSON.stringify(got);
225
225
  throw new Error(
226
226
  [
227
- `[fulgurjs] Invalid federation() config \u2014 ${what}`,
228
- ` got: ${gotText}`,
229
- ` expected: ${expect}`,
230
- ` example: ${example}`
227
+ `[fulgurjs] federation() \u914D\u7F6E\u65E0\u6548\uFF1A${what}`,
228
+ ` \u5F53\u524D\u503C\uFF1A${gotText}`,
229
+ ` \u9884\u671F\u503C\uFF1A${expect}`,
230
+ ` \u4FEE\u6CD5\u793A\u4F8B\uFF1A${example}`
231
231
  ].join("\n")
232
232
  );
233
233
  }
234
234
  function validateOptions(options) {
235
235
  if (options.name === void 0 || options.name === null || options.name === "") {
236
236
  configError(
237
- "`name` is required (container name, also used as uniqueName)",
237
+ "\u7F3A\u5C11\u5FC5\u586B\u7684 name\uFF08\u5BB9\u5668\u540D\u79F0\uFF0C\u4E5F\u662F\u9875\u9762\u5185\u7684\u552F\u4E00\u6807\u8BC6\uFF09",
238
238
  options.name,
239
- "a non-empty string unique among host/remotes in the same page",
239
+ "\u540C\u4E00\u9875\u9762\u7684\u5BBF\u4E3B\u4E0E\u8FDC\u7A0B\u4E4B\u95F4\u552F\u4E00\u7684\u975E\u7A7A\u5B57\u7B26\u4E32",
240
240
  `federation({ name: 'my-app', ... })`
241
241
  );
242
242
  }
243
243
  if (typeof options.name !== "string" || !/^[a-zA-Z][\w.-]*$/.test(options.name)) {
244
244
  configError(
245
- "`name` must match /^[a-zA-Z][\\w.-]*$/ (letters first, no spaces/slashes)",
245
+ "name \u683C\u5F0F\u4E0D\u6B63\u786E\uFF1A\u5FC5\u987B\u4EE5\u82F1\u6587\u5B57\u6BCD\u5F00\u5934\uFF0C\u4E0D\u80FD\u5305\u542B\u7A7A\u683C\u6216\u659C\u6760",
246
246
  options.name,
247
- 'e.g. "my-app", "host-app"',
247
+ '\u4F8B\u5982 "my-app" \u6216 "host-app"',
248
248
  `federation({ name: 'my-app', ... })`
249
249
  );
250
250
  }
251
251
  if (options.remoteType !== void 0 && options.remoteType !== "module") {
252
252
  configError(
253
- 'CFG-011: remoteType other than "module" is not supported',
253
+ 'CFG-011\uFF1AremoteType \u76EE\u524D\u4EC5\u652F\u6301 "module"',
254
254
  options.remoteType,
255
255
  '"module"\uFF08\u7F3A\u7701\u5373\u53EF\uFF09\u2014\u2014webpack script/var remote \u4E92\u64CD\u4F5C\u672A\u5B9E\u73B0',
256
256
  `// \u5220\u9664 remoteType \u914D\u7F6E\uFF08fulgurjs \u53EA\u4EA7\u51FA ESM module remote\uFF09`
@@ -258,7 +258,7 @@ function validateOptions(options) {
258
258
  }
259
259
  if (options.library?.type !== void 0 && options.library.type !== "module" && options.library.type !== "esm") {
260
260
  configError(
261
- 'CFG-011: library.type other than "module"/"esm" is not supported',
261
+ 'CFG-011\uFF1Alibrary.type \u76EE\u524D\u4EC5\u652F\u6301 "module" \u6216 "esm"',
262
262
  options.library.type,
263
263
  '"module" \u6216 "esm"\uFF08\u7F3A\u7701\u5373\u53EF\uFF09\u2014\u2014webpack UMD/var \u8F93\u51FA\u4E92\u64CD\u4F5C\u672A\u5B9E\u73B0',
264
264
  `// \u5220\u9664 library \u914D\u7F6E\uFF08fulgurjs remoteEntry \u6052\u4E3A ESM\uFF09`
@@ -266,7 +266,7 @@ function validateOptions(options) {
266
266
  }
267
267
  if (options.automaticAsyncBoundary === false) {
268
268
  configError(
269
- "CFG-011: automaticAsyncBoundary=false cannot be honored",
269
+ "CFG-011\uFF1A\u4E0D\u80FD\u5173\u95ED\u81EA\u52A8\u5F02\u6B65\u8FB9\u754C\uFF08automaticAsyncBoundary=false\uFF09",
270
270
  options.automaticAsyncBoundary,
271
271
  "\u7F3A\u7701\u6216 true\u2014\u2014fulgurjs \u4F7F\u7528 TLA \u81EA\u52A8\u5F02\u6B65\u8FB9\u754C\uFF0C\u4E0D\u5B58\u5728\u624B\u5DE5 bootstrap \u6A21\u5F0F",
272
272
  `// \u5220\u9664 automaticAsyncBoundary \u914D\u7F6E\uFF08\u5BB9\u5668\u534F\u8BAE\u5929\u7136\u5F02\u6B65\uFF09`
@@ -276,9 +276,9 @@ function validateOptions(options) {
276
276
  const norm = key.startsWith("./") ? key : `./${key}`;
277
277
  if (norm === SETUP_EXPOSE_KEY) {
278
278
  configError(
279
- `CFG-012: exposes key "${norm}" is reserved for the federation setup entry`,
279
+ `CFG-012\uFF1Aexposes \u952E "${norm}" \u5DF2\u7531\u8054\u90A6 setup \u5165\u53E3\u4FDD\u7559`,
280
280
  key,
281
- `a public expose name\uFF08\u5185\u90E8\u4FDD\u7559\u952E "${SETUP_EXPOSE_KEY}" \u7531 setup \u9009\u9879\u81EA\u52A8\u751F\u6210\uFF09`,
281
+ `\u4F7F\u7528\u5176\u4ED6\u516C\u5F00 expose \u540D\u79F0\uFF1B\u5185\u90E8\u4FDD\u7559\u952E "${SETUP_EXPOSE_KEY}" \u7531 setup \u9009\u9879\u81EA\u52A8\u751F\u6210`,
282
282
  `// \u628A\u8BE5 expose \u6539\u540D\uFF0C\u6216\u5220\u9664\u5B83\u5E76\u628A\u539F\u6587\u4EF6\u8DEF\u5F84\u914D\u7F6E\u5230 federation({ setup })`
283
283
  );
284
284
  }
@@ -286,29 +286,29 @@ function validateOptions(options) {
286
286
  if (options.setup !== void 0) {
287
287
  if (typeof options.setup !== "string" || options.setup.trim() === "") {
288
288
  configError(
289
- "CFG-012: setup must be a non-empty module path relative to the app root",
289
+ "CFG-012\uFF1Asetup \u5FC5\u987B\u662F\u76F8\u5BF9\u5E94\u7528\u6839\u76EE\u5F55\u7684\u975E\u7A7A\u6A21\u5757\u8DEF\u5F84",
290
290
  options.setup,
291
- 'e.g. "./src/fulgurjs/setup.ts"\uFF08\u9ED8\u8BA4\u5BFC\u51FA setup(context)\uFF0C\u53EF\u9009\u5177\u540D\u5BFC\u51FA onSession(context)\uFF09',
291
+ '\u4F8B\u5982 "./src/fulgurjs/setup.ts"\uFF08\u9ED8\u8BA4\u5BFC\u51FA setup(context)\uFF0C\u53EF\u9009\u5177\u540D\u5BFC\u51FA onSession(context)\uFF09',
292
292
  `federation({ name: 'my-app', setup: './src/fulgurjs/setup.ts', ... })`
293
293
  );
294
294
  }
295
295
  }
296
296
  if (options.exposes !== void 0 && typeof options.exposes !== "object") {
297
- configError("`exposes` must be an object", options.exposes, 'an object of { "./Module": "./src/path" }', `exposes: { './Button': './src/Button.vue' }`);
297
+ configError("exposes \u5FC5\u987B\u662F\u5BF9\u8C61", options.exposes, '\u5F62\u5982 { "./Module": "./src/path" } \u7684\u5BF9\u8C61', `exposes: { './Button': './src/Button.vue' }`);
298
298
  }
299
299
  if (options.remotes !== void 0 && typeof options.remotes !== "object") {
300
- configError("`remotes` must be an object", options.remotes, "an object of { name: url | { dev, prod } | () => Promise<container> }", `remotes: { 'remote-a': 'http://localhost:5101' }`);
300
+ configError("remotes \u5FC5\u987B\u662F\u5BF9\u8C61", options.remotes, "\u5F62\u5982 { \u540D\u79F0: \u5730\u5740 | { dev, prod } | \u52A8\u6001\u52A0\u8F7D\u51FD\u6570 } \u7684\u5BF9\u8C61", `remotes: { 'remote-a': 'http://localhost:5101' }`);
301
301
  }
302
302
  if (options.shared !== void 0 && typeof options.shared !== "object") {
303
- configError("`shared` must be an array or an object", options.shared, '["vue"] or { vue: { singleton: true } }', `shared: { vue: { singleton: true } }`);
303
+ configError("shared \u5FC5\u987B\u662F\u6570\u7EC4\u6216\u5BF9\u8C61", options.shared, '["vue"] \u6216 { vue: { singleton: true } }', `shared: { vue: { singleton: true } }`);
304
304
  }
305
305
  for (const [key, val] of Object.entries(options.exposes ?? {})) {
306
306
  const importPath = typeof val === "string" ? val : val?.import;
307
307
  if (!importPath || typeof importPath !== "string") {
308
308
  configError(
309
- `exposes["${key}"].import is missing`,
309
+ `exposes["${key}"].import \u7F3A\u5931`,
310
310
  val,
311
- 'a source path string, or { import: "./src/path" }',
311
+ '\u6E90\u7801\u8DEF\u5F84\u5B57\u7B26\u4E32\uFF0C\u6216 { import: "./src/path" }',
312
312
  `exposes: { '${key.startsWith("./") ? key : "./" + key}': './src/views/Home.vue' }`
313
313
  );
314
314
  }
@@ -316,32 +316,32 @@ function validateOptions(options) {
316
316
  for (const [key, val] of Object.entries(options.remotes ?? {})) {
317
317
  if (/[/@\s]/.test(key)) {
318
318
  configError(
319
- `remotes key "${key}" contains invalid characters (@, / or whitespace)`,
319
+ `remotes \u952E "${key}" \u5305\u542B\u975E\u6CD5\u5B57\u7B26\uFF08@\u3001/ \u6216\u7A7A\u767D\u5B57\u7B26\uFF09`,
320
320
  key,
321
- 'a bare module-style name used as import prefix, e.g. "remote-a"',
321
+ '\u4F5C\u4E3A import \u524D\u7F00\u4F7F\u7528\u7684\u7EAF\u6A21\u5757\u540D\uFF0C\u4F8B\u5982 "remote-a"',
322
322
  `remotes: { 'remote-a': '...' } // then: import X from 'remote-a/Button'`
323
323
  );
324
324
  }
325
325
  if (typeof val === "function") continue;
326
326
  const cfg = typeof val === "string" ? { external: val } : val;
327
327
  if (typeof val === "string" && val.trim() === "") {
328
- configError(`remotes["${key}"] is an empty string`, val, "a remote base URL or full entry URL", `remotes: { '${key}': 'http://localhost:5101' }`);
328
+ configError(`remotes["${key}"] \u662F\u7A7A\u5B57\u7B26\u4E32`, val, "\u8FDC\u7A0B\u57FA\u7840\u5730\u5740\u6216\u5B8C\u6574\u5165\u53E3\u5730\u5740", `remotes: { '${key}': 'http://localhost:5101' }`);
329
329
  }
330
330
  if (typeof val !== "string" && typeof cfg !== "object") {
331
- configError(`remotes["${key}"] has unsupported type`, val, "string | { dev?, prod?, external? } | () => Promise<container>", `remotes: { '${key}': { dev: 'http://localhost:5101', prod: '/remote-a' } }`);
331
+ configError(`remotes["${key}"] \u7684\u503C\u7C7B\u578B\u4E0D\u53D7\u652F\u6301`, val, "\u5B57\u7B26\u4E32\u3001{ dev?, prod?, external? } \u5BF9\u8C61\u6216\u52A8\u6001\u52A0\u8F7D\u51FD\u6570", `remotes: { '${key}': { dev: 'http://localhost:5101', prod: '/remote-a' } }`);
332
332
  }
333
333
  if (!cfg?.external && !cfg?.dev && !cfg?.prod) {
334
334
  configError(
335
- `remotes["${key}"] has no address (need one of external / dev / prod)`,
335
+ `remotes["${key}"] \u6CA1\u6709\u5730\u5740\uFF08external\u3001dev\u3001prod \u81F3\u5C11\u586B\u5199\u4E00\u4E2A\uFF09`,
336
336
  val,
337
- "at least one address; with only one URL it is used for both dev and prod",
337
+ "\u81F3\u5C11\u4E00\u4E2A\u5730\u5740\uFF1B\u53EA\u586B\u4E00\u4E2A\u5730\u5740\u65F6\u5F00\u53D1\u4E0E\u751F\u4EA7\u5171\u7528",
338
338
  `remotes: { '${key}': 'http://localhost:5101' }
339
- // or split: { '${key}': { dev: 'http://localhost:5101', prod: '/${key}' } }`
339
+ // \u6216\u5206\u522B\u586B\u5199\uFF1A{ '${key}': { dev: 'http://localhost:5101', prod: '/${key}' } }`
340
340
  );
341
341
  }
342
342
  if (cfg.timeout !== void 0 && (typeof cfg.timeout !== "number" || !Number.isFinite(cfg.timeout) || cfg.timeout <= 0)) {
343
343
  configError(
344
- `CFG-009: remotes["${key}"].timeout must be a finite positive number (ms)`,
344
+ `CFG-009\uFF1Aremotes["${key}"].timeout \u5FC5\u987B\u662F\u5927\u4E8E 0 \u7684\u6709\u9650\u6BEB\u79D2\u6570`,
345
345
  cfg.timeout,
346
346
  "e.g. 15000\uFF08\u7701\u7565\u7528\u9ED8\u8BA4 15s\uFF09",
347
347
  `remotes: { '${key}': { external: '\u2026', timeout: 15000 } }`
@@ -349,7 +349,7 @@ function validateOptions(options) {
349
349
  }
350
350
  if (cfg.retries !== void 0 && (typeof cfg.retries !== "number" || !Number.isInteger(cfg.retries) || cfg.retries < 0 || cfg.retries > 10)) {
351
351
  configError(
352
- `CFG-009: remotes["${key}"].retries must be an integer in 0..10`,
352
+ `CFG-009\uFF1Aremotes["${key}"].retries \u5FC5\u987B\u662F 0 \u5230 10 \u7684\u6574\u6570`,
353
353
  cfg.retries,
354
354
  "e.g. 2\uFF08\u7701\u7565\u7528\u9ED8\u8BA4 2\uFF1B\u4E0A\u9650 10 \u9632\u9000\u907F\u98CE\u66B4\uFF09",
355
355
  `remotes: { '${key}': { external: '\u2026', retries: 2 } }`
@@ -359,7 +359,7 @@ function validateOptions(options) {
359
359
  if (brk) {
360
360
  if (brk.threshold !== void 0 && (typeof brk.threshold !== "number" || !Number.isFinite(brk.threshold) || brk.threshold <= 0)) {
361
361
  configError(
362
- `CFG-009: remotes["${key}"].breaker.threshold must be a finite positive number`,
362
+ `CFG-009\uFF1Aremotes["${key}"].breaker.threshold \u5FC5\u987B\u662F\u5927\u4E8E 0 \u7684\u6709\u9650\u6570\u5B57`,
363
363
  brk.threshold,
364
364
  "e.g. 5\uFF08\u8FDE\u7EED\u5931\u8D25 5 \u6B21\u540E\u7194\u65AD\uFF09",
365
365
  `remotes: { '${key}': { external: '\u2026', breaker: { threshold: 5, resetMs: 30000 } } }`
@@ -367,7 +367,7 @@ function validateOptions(options) {
367
367
  }
368
368
  if (brk.resetMs !== void 0 && (typeof brk.resetMs !== "number" || !Number.isFinite(brk.resetMs) || brk.resetMs <= 0)) {
369
369
  configError(
370
- `CFG-009: remotes["${key}"].breaker.resetMs must be a finite positive number (ms)`,
370
+ `CFG-009\uFF1Aremotes["${key}"].breaker.resetMs \u5FC5\u987B\u662F\u5927\u4E8E 0 \u7684\u6709\u9650\u6BEB\u79D2\u6570`,
371
371
  brk.resetMs,
372
372
  "e.g. 30000\uFF08\u7194\u65AD 30s \u540E\u534A\u5F00\uFF09",
373
373
  `remotes: { '${key}': { external: '\u2026', breaker: { threshold: 5, resetMs: 30000 } } }`
@@ -377,15 +377,15 @@ function validateOptions(options) {
377
377
  for (const slot of ["dev", "prod", "external"]) {
378
378
  const v = cfg[slot];
379
379
  if (v !== void 0 && typeof v !== "string") {
380
- configError(`remotes["${key}"].${slot} must be a string`, v, "a URL string", `remotes: { '${key}': { ${slot}: 'http://localhost:5101' } }`);
380
+ configError(`remotes["${key}"].${slot} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32`, v, "URL \u5B57\u7B26\u4E32", `remotes: { '${key}': { ${slot}: 'http://localhost:5101' } }`);
381
381
  }
382
382
  if (slot !== "external") {
383
383
  const slotUrl = cfg[slot];
384
384
  if (typeof slotUrl === "string" && /^[A-Za-z][\w.-]*@/.test(slotUrl)) {
385
385
  configError(
386
- `CFG-007: remotes["${key}"].${slot} uses the "name@url" prefix, which the object form does not support (it is concatenated verbatim into a broken URL)`,
386
+ `CFG-007\uFF1Aremotes["${key}"].${slot} \u4F7F\u7528\u4E86 name@url \u524D\u7F00\uFF1B\u5BF9\u8C61\u5199\u6CD5\u4E0D\u652F\u6301\u8BE5\u524D\u7F00\uFF0C\u5426\u5219\u4F1A\u62FC\u51FA\u9519\u8BEF\u5730\u5740`,
387
387
  slotUrl,
388
- "a bare URL (the remote self-name defaults to the key), or the plain string form if renaming is needed",
388
+ "\u4E0D\u5E26\u524D\u7F00\u7684 URL\uFF08\u8FDC\u7A0B\u540D\u79F0\u9ED8\u8BA4\u4F7F\u7528\u952E\u540D\uFF09\uFF1B\u9700\u8981\u6539\u540D\u65F6\u6539\u7528\u5B57\u7B26\u4E32\u5199\u6CD5",
389
389
  `remotes: { '${key}': 'http://localhost:5101' } // or: remotes: { '${key}': { dev: 'http://localhost:5101', prod: '/${key}' } }`
390
390
  );
391
391
  }
@@ -403,7 +403,7 @@ function validateOptions(options) {
403
403
  }
404
404
  if (options.devFsRoot !== void 0 && typeof options.devFsRoot !== "boolean") {
405
405
  configError(
406
- "`devFsRoot` must be a boolean",
406
+ "devFsRoot \u5FC5\u987B\u662F\u5E03\u5C14\u503C",
407
407
  options.devFsRoot,
408
408
  "true\uFF08dev manifest \u643A\u5E26 fsRoot\uFF0C\u73B0\u72B6\u9ED8\u8BA4\uFF09\u6216 false\uFF08\u4E0D\u66B4\u9732\u672C\u673A\u8DEF\u5F84\uFF09",
409
409
  `devFsRoot: false`
@@ -413,11 +413,11 @@ function validateOptions(options) {
413
413
  function normalizeOptions(options, root, command) {
414
414
  const warnings = [];
415
415
  validateOptions(options);
416
- if (!options.name) throw new Error("[fulgurjs] option `name` is required.");
416
+ if (!options.name) throw new Error('[fulgurjs] \u7F3A\u5C11\u5FC5\u586B\u914D\u7F6E name\u3002\u8BF7\u5728 federation({ name: "\u5E94\u7528\u540D" }) \u4E2D\u58F0\u660E\u552F\u4E00\u7684\u5E94\u7528\u540D\u3002');
417
417
  const exposes = [];
418
418
  for (const [rawName, val] of Object.entries(options.exposes ?? {})) {
419
419
  const name = rawName.startsWith("./") ? rawName : `./${rawName}`;
420
- if (rawName !== name) warnings.push(`exposes key "${rawName}" normalized to "${name}".`);
420
+ if (rawName !== name) warnings.push(`\u66B4\u9732\u6A21\u5757\u952E "${rawName}" \u5DF2\u89C4\u8303\u5316\u4E3A "${name}"\u3002\u5EFA\u8BAE\u5728 exposes \u4E2D\u76F4\u63A5\u4F7F\u7528\u5E26 ./ \u524D\u7F00\u7684\u952E\u3002`);
421
421
  const hint = typeof val === "string" ? { import: val } : val;
422
422
  exposes.push({ name, import: hint.import, chunkName: hint.name });
423
423
  }
@@ -437,18 +437,18 @@ function normalizeOptions(options, root, command) {
437
437
  const seenNames = /* @__PURE__ */ new Map();
438
438
  for (const r of remotes) {
439
439
  if (seenNames.has(r.name) && seenNames.get(r.name) !== r.key) {
440
- warnings.push(`remote name "${r.name}" is declared for multiple keys; names must be unique.`);
440
+ warnings.push(`\u8FDC\u7A0B\u540D\u79F0 "${r.name}" \u88AB\u591A\u4E2A remotes \u952E\u91CD\u590D\u58F0\u660E\uFF1B\u8BF7\u4E3A\u6BCF\u4E2A\u8FDC\u7A0B\u4F7F\u7528\u552F\u4E00\u540D\u79F0\u3002`);
441
441
  }
442
442
  seenNames.set(r.name, r.key);
443
443
  }
444
444
  if ((options.exposes === void 0 || Object.keys(options.exposes).length === 0) && (options.remotes === void 0 || Object.keys(options.remotes).length === 0)) {
445
445
  warnings.push(
446
- 'federation() has neither `exposes` nor `remotes` \u2014 it only sets up shared modules. If you intended a remote, add `exposes: { "./Module": "./src/path" }`; if a host, add `remotes: { ... }`.'
446
+ "federation() \u672A\u914D\u7F6E exposes \u6216 remotes\uFF0C\u76EE\u524D\u53EA\u4F1A\u6CE8\u518C\u5171\u4EAB\u4F9D\u8D56\u3002\u82E5\u8981\u63D0\u4F9B\u8FDC\u7A0B\u6A21\u5757\uFF0C\u8BF7\u914D\u7F6E exposes\uFF1B\u82E5\u8981\u6D88\u8D39\u8FDC\u7A0B\u5E94\u7528\uFF0C\u8BF7\u914D\u7F6E remotes\u3002"
447
447
  );
448
448
  }
449
449
  if (Object.keys(options.exposes ?? {}).length === 0 && Object.keys(options.remotes ?? {}).length > 0) {
450
450
  warnings.push(
451
- `federation({ name: "${options.name}" }) consumes remotes but exposes nothing \u2014 this app is a pure host. Files will not be available to other apps; add \`exposes\` if that is unintended.`
451
+ `\u5E94\u7528 "${options.name}" \u914D\u7F6E\u4E86 remotes\uFF0C\u4F46\u6CA1\u6709 exposes\uFF0C\u56E0\u6B64\u662F\u7EAF\u5BBF\u4E3B\uFF1B\u5176\u4ED6\u5E94\u7528\u65E0\u6CD5\u4ECE\u5B83\u52A0\u8F7D\u6A21\u5757\u3002\u82E5\u5E0C\u671B\u5BF9\u5916\u63D0\u4F9B\u6A21\u5757\uFF0C\u8BF7\u6DFB\u52A0 exposes\u3002`
452
452
  );
453
453
  }
454
454
  return {
@@ -1311,7 +1311,7 @@ export { ${nsAs[1]} };`);
1311
1311
  const inner = clauseRaw.slice(clauseRaw.indexOf("{") + 1, clauseRaw.lastIndexOf("}"));
1312
1312
  if (/export\s+\*/.test(clauseRaw) && !clauseRaw.includes("{")) {
1313
1313
  throw new Error(
1314
- `[fulgurjs] "export * from '${spec2}'" on a shared module is not supported (ESM cannot create dynamic export bindings). Use named re-exports: "export { a, b } from '${spec2}'".`
1314
+ `[fulgurjs] \u5171\u4EAB\u6A21\u5757\u4E0D\u652F\u6301 "export * from '${spec2}'"\uFF1AESM \u65E0\u6CD5\u4E3A\u52A8\u6001\u534F\u5546\u7684\u6A21\u5757\u521B\u5EFA\u901A\u914D\u7B26\u5BFC\u51FA\u7ED1\u5B9A\u3002\u8BF7\u6539\u4E3A\u660E\u786E\u5217\u51FA\u540D\u79F0\uFF1A"export { a, b } from '${spec2}'"\u3002`
1315
1315
  );
1316
1316
  }
1317
1317
  const bindings = parseBindings(inner).map((b) => b.imported === "default" ? "default" : b.imported);
@@ -1378,13 +1378,13 @@ async function fetchManifest(devEntry, attempts = 30, delayMs = 2e3) {
1378
1378
  const parsed = parseManifest(await res.json());
1379
1379
  if (parsed.unsupportedVersion) {
1380
1380
  console.warn(
1381
- `[fulgurjs] dts: remote manifest schemaVersion=${parsed.unsupportedVersion} \u4E0D\u88AB\u5F53\u524D\u63D2\u4EF6\u652F\u6301\uFF08\u672C\u673A\u652F\u6301 1\uFF09\uFF1B\u7C7B\u578B\u6620\u5C04\u8DF3\u8FC7\u3002\u8BF7\u5BF9\u9F50\u5BBF\u4E3B\u4E0E\u8FDC\u7A0B\u7684 @fulgurjs/federation \u7248\u672C\u3002`
1381
+ `[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u8FDC\u7A0B manifest \u7684\u534F\u8BAE\u7248\u672C\u4E3A ${parsed.unsupportedVersion}\uFF0C\u5F53\u524D\u4EC5\u652F\u6301\u7248\u672C 1\uFF1B\u5DF2\u8DF3\u8FC7\u7C7B\u578B\u6620\u5C04\u3002\u8BF7\u5BF9\u9F50\u5BBF\u4E3B\u4E0E\u8FDC\u7A0B\u7684 @fulgurjs/federation \u7248\u672C\u3002`
1382
1382
  );
1383
1383
  return null;
1384
1384
  }
1385
1385
  if (parsed.issues.length > 0) {
1386
1386
  console.warn(
1387
- `[fulgurjs] dts: remote manifest \u5951\u7EA6\u6821\u9A8C\u5931\u8D25\uFF08${manifestUrl.href}\uFF09\uFF1A` + parsed.issues.map((x) => `${x.field}: ${x.message}`).join("\uFF1B") + `\u3002\u7C7B\u578B\u6620\u5C04\u8DF3\u8FC7\u3002`
1387
+ `[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u8FDC\u7A0B manifest \u5951\u7EA6\u6821\u9A8C\u5931\u8D25\uFF08${manifestUrl.href}\uFF09\uFF1A` + parsed.issues.map((x) => `${x.field}: ${x.message}`).join("\uFF1B") + `\u3002\u7C7B\u578B\u6620\u5C04\u8DF3\u8FC7\u3002`
1388
1388
  );
1389
1389
  return null;
1390
1390
  }
@@ -1476,13 +1476,13 @@ async function generateDevTypes(options, _server) {
1476
1476
  if (!remote.devEntry || remote.promise) continue;
1477
1477
  const manifest = await fetchManifest(remote.devEntry);
1478
1478
  if (!manifest || !manifest.exposes) {
1479
- console.warn(`[fulgurjs] dts: remote "${remote.key}" dev manifest unavailable; type mapping skipped.`);
1479
+ console.warn(`[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u8FDC\u7A0B\u5E94\u7528 "${remote.key}" \u7684\u5F00\u53D1 manifest \u4E0D\u53EF\u7528\uFF0C\u5DF2\u8DF3\u8FC7\u7C7B\u578B\u6620\u5C04\u3002\u8BF7\u68C0\u67E5\u8FDC\u7A0B\u5F00\u53D1\u670D\u52A1\u548C manifest \u5730\u5740\u3002`);
1480
1480
  continue;
1481
1481
  }
1482
1482
  const remoteRoot = manifest.fsRoot;
1483
1483
  if (!remoteRoot) {
1484
1484
  console.warn(
1485
- `[fulgurjs] dts: remote "${remote.key}" \u7684 manifest \u672A\u643A\u5E26 fsRoot\uFF08devFsRoot: false \u6216\u8FDC\u7A0B\u63D2\u4EF6\u7248\u672C\u8FC7\u65E7\uFF09\uFF1B\u7C7B\u578B\u6620\u5C04\u964D\u7EA7\u4E3A any \u6869\u3002\u540C\u673A\u8054\u8C03\u9700\u8FDC\u7A0B devFsRoot: true\uFF08\u9ED8\u8BA4\uFF09\u5E76\u91CD\u542F\u5176 dev server\u3002`
1485
+ `[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u8FDC\u7A0B\u5E94\u7528 "${remote.key}" \u7684 manifest \u672A\u643A\u5E26 fsRoot\uFF08\u53EF\u80FD\u5173\u95ED\u4E86 devFsRoot\uFF0C\u6216\u8FDC\u7A0B\u63D2\u4EF6\u7248\u672C\u8FC7\u65E7\uFF09\uFF1B\u7C7B\u578B\u6620\u5C04\u5C06\u964D\u7EA7\u4E3A any\u3002\u540C\u673A\u8054\u8C03\u8BF7\u5728\u8FDC\u7A0B\u542F\u7528 devFsRoot: true\uFF08\u9ED8\u8BA4\u503C\uFF09\u5E76\u91CD\u542F\u5F00\u53D1\u670D\u52A1\u3002`
1486
1486
  );
1487
1487
  continue;
1488
1488
  }
@@ -1491,7 +1491,7 @@ async function generateDevTypes(options, _server) {
1491
1491
  realRoot = fs2.realpathSync(remoteRoot);
1492
1492
  } catch {
1493
1493
  console.warn(
1494
- `[fulgurjs] dts: remote "${remote.key}" is not on this machine (fsRoot unreachable); type mapping skipped (module types fall back to any).`
1494
+ `[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u8FDC\u7A0B\u5E94\u7528 "${remote.key}" \u7684 fsRoot \u5728\u672C\u673A\u4E0D\u53EF\u8BBF\u95EE\uFF0C\u5DF2\u8DF3\u8FC7\u7C7B\u578B\u6620\u5C04\uFF0C\u6A21\u5757\u7C7B\u578B\u5C06\u964D\u7EA7\u4E3A any\u3002\u8BF7\u68C0\u67E5\u9879\u76EE\u4F4D\u7F6E\u6216\u5173\u95ED\u672C\u673A\u7C7B\u578B\u76F4\u8FDE\u3002`
1495
1495
  );
1496
1496
  continue;
1497
1497
  }
@@ -1502,18 +1502,18 @@ async function generateDevTypes(options, _server) {
1502
1502
  let accepted = 0;
1503
1503
  for (const expose of manifest.exposes ?? []) {
1504
1504
  if (manifest.setup && expose.name === manifest.setup) continue;
1505
- const skipped = (reason) => console.warn(`[fulgurjs] dts: remote "${remote.key}" expose ${JSON.stringify(expose.name)} \u8DF3\u8FC7\uFF1A${reason}`);
1505
+ const skipped = (reason) => console.warn(`[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u8FDC\u7A0B\u5E94\u7528 "${remote.key}" \u7684\u66B4\u9732\u6A21\u5757 ${JSON.stringify(expose.name)} \u5DF2\u8DF3\u8FC7\u3002\u539F\u56E0\uFF1A${reason}\u3002\u8BF7\u68C0\u67E5\u8BE5\u6A21\u5757\u5728\u8FDC\u7A0B manifest \u4E2D\u7684\u6E90\u6587\u4EF6\u8DEF\u5F84\u3002`);
1506
1506
  const src = expose.src;
1507
1507
  if (!src || typeof src !== "string") {
1508
1508
  skipped("src \u7F3A\u5931");
1509
1509
  continue;
1510
1510
  }
1511
1511
  if (src.startsWith("/") || /^[a-z]+:/i.test(src)) {
1512
- skipped(`src \u5FC5\u987B\u662F\u76F8\u5BF9\u8DEF\u5F84\uFF0Cgot ${JSON.stringify(src)}`);
1512
+ skipped(`src \u5FC5\u987B\u662F\u76F8\u5BF9\u8DEF\u5F84\uFF0C\u5F53\u524D\u503C\u4E3A ${JSON.stringify(src)}`);
1513
1513
  continue;
1514
1514
  }
1515
1515
  if (src.split("/").includes("..")) {
1516
- skipped(`src \u4E0D\u5F97\u5305\u542B ..\uFF0Cgot ${JSON.stringify(src)}`);
1516
+ skipped(`src \u4E0D\u5F97\u5305\u542B ..\uFF0C\u5F53\u524D\u503C\u4E3A ${JSON.stringify(src)}`);
1517
1517
  continue;
1518
1518
  }
1519
1519
  const abs = path3.join(realRoot, src);
@@ -1565,7 +1565,7 @@ async function generateDevTypes(options, _server) {
1565
1565
  `);
1566
1566
  }
1567
1567
  console.log(
1568
- `[fulgurjs] dts: generated ${dir}/${remote.key}.d.ts (${accepted}/${manifest.exposes?.length ?? 0} exposes, mode=${mode}). \u786E\u4FDD tsconfig include \u5305\u542B "${dir}" \u4EE5\u83B7\u5F97\u7C7B\u578B\u8865\u5168\u3002`
1568
+ `[fulgurjs] \u7C7B\u578B\u751F\u6210\uFF1A\u5DF2\u751F\u6210 ${dir}/${remote.key}.d.ts\uFF08\u5DF2\u6536\u5F55 ${accepted}/${manifest.exposes?.length ?? 0} \u4E2A\u66B4\u9732\u6A21\u5757\uFF0C\u6A21\u5F0F ${mode}\uFF09\u3002\u8BF7\u786E\u4FDD tsconfig \u7684 include \u5305\u542B "${dir}"\uFF0C\u4EE5\u83B7\u5F97\u7C7B\u578B\u8865\u5168\u3002`
1569
1569
  );
1570
1570
  }
1571
1571
  }
@@ -1653,7 +1653,7 @@ async function probeRemotesAndBuildSchema(options) {
1653
1653
  console.warn(
1654
1654
  formatFulgurjsDiagnostic({
1655
1655
  code: "DEV-002",
1656
- symptom: `remote "${remote.key}" \u7684 manifest schemaVersion=${parsed.unsupportedVersion} \u4E0D\u53D7\u652F\u6301\uFF08\u672C\u673A\u652F\u6301 1\uFF09`,
1656
+ symptom: `\u8FDC\u7A0B\u5E94\u7528 "${remote.key}" \u7684 manifest \u534F\u8BAE\u7248\u672C\u4E3A ${parsed.unsupportedVersion}\uFF0C\u5F53\u524D\u4EC5\u652F\u6301\u7248\u672C 1`,
1657
1657
  cause: "\u5BBF\u4E3B\u4E0E\u8FDC\u7A0B\u7684 @fulgurjs/federation \u5927\u7248\u672C\u4E0D\u4E00\u81F4",
1658
1658
  fix: "\u5BF9\u9F50\u5BBF\u4E3B\u4E0E\u8FDC\u7A0B\u7684 @fulgurjs/federation \u7248\u672C\u540E\u91CD\u542F dev server",
1659
1659
  details: { remote: remote.key, url: u.href }
@@ -1666,7 +1666,7 @@ async function probeRemotesAndBuildSchema(options) {
1666
1666
  console.warn(
1667
1667
  formatFulgurjsDiagnostic({
1668
1668
  code: "DEV-002",
1669
- symptom: `remote "${remote.key}" \u7684 dev manifest \u5951\u7EA6\u6821\u9A8C\u5931\u8D25\uFF08${u.href}\uFF09`,
1669
+ symptom: `\u8FDC\u7A0B\u5E94\u7528 "${remote.key}" \u7684\u5F00\u53D1 manifest \u5951\u7EA6\u6821\u9A8C\u5931\u8D25\uFF08${u.href}\uFF09`,
1670
1670
  cause: parsed.issues.map((x) => `${x.field}: ${x.message}`).join("\uFF1B"),
1671
1671
  fix: "\u6838\u5BF9 remote \u7684 federation \u914D\u7F6E exposes\uFF0C\u5E76\u786E\u8BA4 @fulgurjs/federation \u7248\u672C\u4E0E\u5BBF\u4E3B\u4E00\u81F4",
1672
1672
  details: { remote: remote.key, url: u.href, issues: parsed.issues.slice(0, 5) }
@@ -1681,7 +1681,7 @@ async function probeRemotesAndBuildSchema(options) {
1681
1681
  console.warn(
1682
1682
  formatFulgurjsDiagnostic({
1683
1683
  code: "DEV-002",
1684
- symptom: `remote "${remote.key}" \u7684 dev manifest \u53EF\u8FBE\u4F46 exposes \u4E3A\u7A7A\uFF08${u.href}\uFF09`,
1684
+ symptom: `\u8FDC\u7A0B\u5E94\u7528 "${remote.key}" \u7684\u5F00\u53D1 manifest \u53EF\u8FBE\uFF0C\u4F46 exposes \u4E3A\u7A7A\uFF08${u.href}\uFF09`,
1685
1685
  cause: "remote \u4FA7 federation({ exposes }) \u4E3A\u7A7A\uFF0C\u6216\u5176\u63D2\u4EF6\u7248\u672C\u8FC7\u65E7\u5BFC\u81F4 manifest \u7F3A\u5B57\u6BB5",
1686
1686
  fix: "\u6838\u5BF9 remote \u7684 federation \u914D\u7F6E exposes\uFF0C\u5E76\u786E\u8BA4 @fulgurjs/federation \u7248\u672C\u4E0E\u5BBF\u4E3B\u4E00\u81F4",
1687
1687
  details: { remote: remote.key, url: u.href, pluginVersion: manifest.version }
@@ -1693,8 +1693,8 @@ async function probeRemotesAndBuildSchema(options) {
1693
1693
  console.warn(
1694
1694
  formatFulgurjsDiagnostic({
1695
1695
  code: "DEV-006",
1696
- symptom: `\u5BBF\u4E3B\u4E0E remote "${remote.key}" \u7684 @fulgurjs/federation \u7248\u672C\u4E0D\u4E00\u81F4`,
1697
- cause: `\u5BBF\u4E3B ${options.pluginVersion} vs \u8FDC\u7A0B ${remoteVersion}\uFF08pnpm tarball \u65AD\u94FE/\u6F0F\u5347\u7EA7\u5E38\u89C1\uFF09`,
1696
+ symptom: `\u5BBF\u4E3B\u4E0E\u8FDC\u7A0B\u5E94\u7528 "${remote.key}" \u7684 @fulgurjs/federation \u7248\u672C\u4E0D\u4E00\u81F4`,
1697
+ cause: `\u5BBF\u4E3B\u4E3A ${options.pluginVersion}\uFF0C\u8FDC\u7A0B\u4E3A ${remoteVersion}\uFF08\u5E38\u89C1\u4E8E pnpm \u5B89\u88C5\u6E90\u65AD\u94FE\u6216\u6F0F\u5347\u7EA7\uFF09`,
1698
1698
  fix: "\u7EDF\u4E00\u5347\u7EA7\u5404\u5E94\u7528\u4F9D\u8D56\u5230\u540C\u4E00\u7248\u672C\uFF1Apnpm add -D @fulgurjs/federation@<version> \u5E76\u91CD\u542F dev server",
1699
1699
  details: { host: options.pluginVersion, remote: remoteVersion }
1700
1700
  })
@@ -1707,7 +1707,7 @@ async function probeRemotesAndBuildSchema(options) {
1707
1707
  console.warn(
1708
1708
  formatFulgurjsDiagnostic({
1709
1709
  code: "DEV-001",
1710
- symptom: `remote "${remote.key}" \u7684 dev manifest \u4E0D\u53EF\u8FBE\uFF08${u.href}\uFF09\u2014\u2014\u8BE5 remote \u7684\u8DEF\u7531\u5B58\u5728\u6027\u6821\u9A8C\u5C06\u8DF3\u8FC7`,
1710
+ symptom: `\u8FDC\u7A0B\u5E94\u7528 "${remote.key}" \u7684\u5F00\u53D1 manifest \u4E0D\u53EF\u8FBE\uFF08${u.href}\uFF09\u2014\u2014\u5C06\u8DF3\u8FC7\u8BE5\u8FDC\u7A0B\u7684\u8DEF\u7531\u5B58\u5728\u6027\u6821\u9A8C`,
1711
1711
  cause: portOpen ? "\u7AEF\u53E3\u6709\u8FDB\u7A0B\u76D1\u542C\u4F46 manifest \u7AEF\u70B9\u5F02\u5E38\uFF1Aremote dev server \u53EF\u80FD\u4EE5\u975E\u8054\u90A6\u914D\u7F6E\u542F\u52A8\uFF0C\u6216 base/\u8DEF\u5F84\u4E0E remotes[].dev \u4E0D\u4E00\u81F4" : "\u7AEF\u53E3\u65E0\u8FDB\u7A0B\u76D1\u542C\uFF1Aremote dev server \u672A\u542F\u52A8\uFF0C\u6216 remotes[].dev \u7AEF\u53E3\u5199\u9519\uFF08server.origin \u9519\u4F4D\u540C\u6B3E\uFF09",
1712
1712
  fix: "\u542F\u52A8\u5BF9\u5E94 remote \u7684 dev server\uFF1B\u6838\u5BF9\u5BBF\u4E3B federation({ remotes }) \u7684 dev URL \u4E0E remote \u5B9E\u9645 VITE_PORT/base",
1713
1713
  details: { remote: remote.key, url: u.href, port, portOpen, error: String(err?.message ?? err) }
@@ -1750,7 +1750,7 @@ function syncViteCacheMarker(root, pluginVersion, log) {
1750
1750
  }
1751
1751
 
1752
1752
  // src/runtime-code.gen.ts
1753
- var runtime_code_gen_default = 'var pe=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function L(s){let c=pe.exec(String(s).trim());return c?{major:Number(c[1]),minor:Number(c[2]??0),patch:Number(c[3]??0),pre:c[4]?c[4].split("."):[]}:null}function de(s,c){if(s.length===0&&c.length===0)return 0;if(s.length===0)return 1;if(c.length===0)return-1;let l=Math.max(s.length,c.length);for(let n=0;n<l;n++){let g=s[n],y=c[n];if(g===void 0)return-1;if(y===void 0)return 1;let w=/^\\d+$/.test(g),b=/^\\d+$/.test(y);if(w&&b){let T=Number(g)-Number(y);if(T!==0)return T}else{if(w!==b)return w?-1:1;if(g!==y)return g<y?-1:1}}return 0}function x(s,c){let l=L(s),n=L(c);return!l||!n?s<c?-1:s>c?1:0:l.major!==n.major?l.major-n.major:l.minor!==n.minor?l.minor-n.minor:l.patch!==n.patch?l.patch-n.patch:de(l.pre,n.pre)}var ge=/^[a-z]+[+:-]/i;function k(s,c){if(c===!1||c==null||c==="")return!0;let l=String(c).trim();return!l||l==="*"||l==="latest"||ge.test(l)?!0:l.split("||").some(n=>he(s,n.trim()))}function he(s,c){if(!c||c==="*")return!L(s)?.pre.length;let l=c.split(/\\s+-\\s+/);if(l.length===2){let y=l[0].trim(),w=l[1].trim();return!(!k(s,`>=${y}`)||!k(s,`<=${w}`))}let n=L(s);if(!n)return!1;let g=ye(c);if(g===null)return!0;for(let y of g)if(!be(n,s,y))return!1;return!(n.pre.length>0&&!g.some(y=>y.ver.pre.length>0)&&!g.some(w=>w.ver.major===n.major&&w.ver.minor===n.minor&&w.ver.patch===n.patch))}function ye(s){let c=[],l=s.trim().split(/\\s+/).filter(Boolean);if(l.length===0)return null;for(let n of l){let g=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(n);if(!g)return null;let y=g[1],w=g[2],b=Se(y,w);if(b===null)return null;c.push(...b)}return c}function Se(s,c){let l=Ee(c);if(!l)return null;let{ver:n,partial:g}=l;switch(s){case"^":{let y=Re(n);return y?[{op:">=",ver:n},{op:"<",ver:y}]:null}case"~":{let y=g>=2?{major:n.major,minor:n.minor+1,patch:0,pre:[]}:{major:n.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:n},{op:"<",ver:y}]}case">=":return[{op:">=",ver:n}];case">":return g===1?[{op:">=",ver:{major:n.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:{major:n.major,minor:n.minor+1,patch:0,pre:[]}}]:[{op:">",ver:n}];case"<":return g===1?[{op:"<",ver:{major:n.major,minor:0,patch:0,pre:[]}}]:g===2?[{op:"<",ver:{major:n.major,minor:n.minor,patch:0,pre:[]}}]:[{op:"<",ver:n}];case"<=":return[{op:"<=",ver:n}];case"=":case void 0:return g===1?[{op:">=",ver:n},{op:"<",ver:{major:n.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:n},{op:"<",ver:{major:n.major,minor:n.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:n}];default:return null}}function Re(s){return s.major>0?{major:s.major+1,minor:0,patch:0,pre:[]}:s.minor>0?{major:0,minor:s.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:s.patch+1,pre:[]}}function Ee(s){let c=s.replace(/^v/,"").trim();if(!c||c==="*"||c==="x"||c==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let l=c.split("."),n=[],g=0;for(let b of l.slice(0,3))if(/^\\d+$/.test(b))n.push(Number(b)),g++;else{if(b==="x"||b==="X"||b==="*")break;break}let y=c.split("-"),w=y.length>1?y.slice(1).join("-").split("+")[0].split("."):[];return g===0&&w.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:n[0]??0,minor:n[1]??0,patch:n[2]??0,pre:w},partial:g}}function we(s,c){switch(c){case">=":return s>=0;case">":return s>0;case"<":return s<0;case"<=":return s<=0;case"=":return s===0}}function be(s,c,l){let n=`${s.major}.${s.minor}.${s.patch}`+(s.pre.length?`-${s.pre.join(".")}`:"");if(l.upper)return!(!(x(n,`${l.ver.major}.${l.ver.minor}.${l.ver.patch}`+(l.ver.pre.length?`-${l.ver.pre.join(".")}`:""))>=0)||!(x(n,`${l.upper.major}.${l.upper.minor}.${l.upper.patch}`)<0));let g=x(n,`${l.ver.major}.${l.ver.minor}.${l.ver.patch}`+(l.ver.pre.length?`-${l.ver.pre.join(".")}`:"")),y=we(g,l.op);return l.ver.pre.length>0&&s.pre.length===0&&(l.op===">"||l.op==="<")?!1:y}var S=class extends Error{code;details;constructor(c,l,n){super(`[fulgurjs:${c}] ${l}`),this.name="FgError",this.code=c,this.details=n}},R={REMOTE_LOAD_FAILED:"MFU-001",REMOTE_NAME_MISMATCH:"MFU-002",SHARE_STRICT_VERSION:"MFU-003",SHARE_NOT_AVAILABLE:"MFU-004",CONTAINER_REINIT_CONFLICT:"MFU-005",MODULE_NOT_EXPOSED:"MFU-006",PRELOAD_FAILED:"MFU-007",REMOTE_UNKNOWN:"MFU-008",EMPTY_EXPORTS:"MFU-009",SINGLETON_SKEW:"MFU-010",SETUP_INVALID_EXPORT:"MFU-011",SETUP_RUN_FAILED:"MFU-012",SETUP_SESSION_KEY_MISSING:"MFU-013",SETUP_RECURSION:"MFU-014"};var J="4.2.1";var Pe="__fulgurjsSetup",_e="__FULGURJS_APP_CONFIG__",D=15e3,B=2,ve=5,Me=3e4,$e=4e3,xe=.2;function Ie(){let s=Object.create(null),c=new Map,l=[],n=new Map,g=new Map,y=new WeakMap,w=new WeakMap,b={},T=()=>{for(let e of l)try{e.init?.(b)}catch(r){console.warn("[fulgurjs] runtimePlugin init failed:",e.name,r)}},U=new Map,j,Y=e=>{let r=U.get(e);return r||U.set(e,r={}),r},V=()=>globalThis[_e]??{};async function K(e,r,t,o){let a=u=>u instanceof S?u:new S(R.SETUP_RUN_FAILED,`${o} of "${e}" threw: ${String(u?.message??u)}\n \\u4FEE\\u6CD5: \\u4FEE\\u590D\\u8BE5 ${o} \\u7684\\u521D\\u59CB\\u5316\\u903B\\u8F91\\u540E\\u91CD\\u65B0\\u52A0\\u8F7D\\uFF08\\u5931\\u8D25\\u7684\\u521D\\u59CB\\u5316\\u7F13\\u5B58\\u5DF2\\u6E05\\u9664\\uFF0C\\u53EF\\u76F4\\u63A5\\u91CD\\u8BD5\\uFF09`,{remote:e,phase:o});j=e;let i;try{i=r(t)}catch(u){throw a(u)}finally{j=void 0}try{await i}catch(u){throw a(u)}}async function Z(e,r,t,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await F(`${e.name}/${t}`)}catch{}let a=await r.get(t),i=a?.default;if(typeof i!="function")throw new S(R.SETUP_INVALID_EXPORT,`setup module "${t}" of "${e.name}": default export is ${a==null?String(a):typeof i}, expected a function\n expected: export default async function setup(context: RemoteSetupContext) { ... }\n \\u4FEE\\u6CD5: \\u5728 federation({ setup }) \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u8865\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u51FD\\u6570\\uFF08\\u5177\\u540D onSession \\u53EF\\u9009\\uFF1B\\u5176\\u4ED6\\u5BFC\\u51FA\\u4E0D\\u4F5C\\u4E3A\\u751F\\u547D\\u5468\\u671F\\u5165\\u53E3\\uFF09`,{remote:e.name,module:t});if(a.onSession!==void 0&&typeof a.onSession!="function")throw new S(R.SETUP_INVALID_EXPORT,`setup module "${t}" of "${e.name}": export "onSession" is ${typeof a.onSession}, expected a function\n \\u4FEE\\u6CD5: \\u5C06 onSession \\u4FEE\\u6B63\\u4E3A\\u51FD\\u6570\\u5BFC\\u51FA\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5177\\u540D\\u5BFC\\u51FA\\uFF08\\u5176\\u4ED6\\u5BFC\\u51FA\\u540D\\u4E0D\\u4F5C\\u4E3A\\u751F\\u547D\\u5468\\u671F\\u5165\\u53E3\\uFF09`,{remote:e.name,module:t});o.setupExports=a,await K(e.name,i,{appContext:V(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(a){throw e.debug.setup="failed",o.setupExports=void 0,a}}async function Q(e,r,t){let o=V(),a=o?.sessionKey;if(typeof a!="string"||a==="")throw new S(R.SETUP_SESSION_KEY_MISSING,`remote "${e.name}" declares onSession but AppContext.sessionKey is ${a===void 0?"missing":JSON.stringify(a)}\n expected: \\u5BBF\\u4E3B\\u767B\\u5F55\\u540E provideAppContext({ ..., sessionKey: \'<\\u975E\\u654F\\u611F\\u767B\\u5F55\\u4EE3\\u6B21 ID>\' })\n \\u4FEE\\u6CD5: \\u5BBF\\u4E3B\\u767B\\u5F55\\u6D41\\u7A0B\\u6BCF\\u6B21\\u6210\\u529F\\u767B\\u5F55/\\u91CD\\u767B\\u751F\\u6210\\u65B0\\u4EE3\\u6B21 ID\\uFF08\\u7981\\u6B62\\u7528 token \\u5145\\u5F53\\uFF09\\uFF0C\\u5E76\\u5728 loadRemote \\u524D\\u63D0\\u4F9B`,{remote:e.name});if(r.sessionPromise&&r.sessionKey===a)return r.sessionPromise;r.controller?.abort();let i=new AbortController;r.controller=i,r.sessionKey=a;let u=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),p=(async()=>{await u,!i.signal.aborted&&await K(e.name,t,{appContext:o,sessionKey:a,signal:i.signal},"onSession")})();return r.sessionPromise=p,p.catch(()=>{r.sessionKey===a&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),p}async function ee(e,r){let t=r?.[Pe];if(typeof t!="string"||t==="")return;let o=Y(e.name);o.setupPromise||(o.setupPromise=Z(e,r,t,o).catch(i=>{throw o.setupPromise=void 0,i})),await o.setupPromise;let a=o.setupExports?.onSession;typeof a=="function"&&await Q(e,o,a)}function re(){for(let e of U.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let A=e=>s[e]??=Object.create(null);function _(e){try{b.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function te(e="default"){return A(e),s}function ne(e,r,t,o,a={}){let i=A(e||"default"),u=Object.hasOwn(i,r)?i[r]:void 0,p=u&&typeof u=="object"?u:void 0;p||(p=Object.create(null),i[r]=p),!(Object.hasOwn(p,t)&&p[t])&&(p[t]={version:t,get:o,from:a.from??"unknown",eager:!!a.eager,loaded:!!a.loaded})}function oe(e){let r=(t,o,a)=>{if(t===void 0)return;if(!(typeof t=="number"&&(a?Number.isInteger(t)&&t>=0&&t<=10:Number.isFinite(t)&&t>0)))throw new Error(`[fulgurjs] registerRemote("${e.name}"): ${o} must be a ${a?"integer 0..10":"finite positive number"}, got ${String(t)}`)};r(e.timeout,"timeout"),r(e.retries,"retries",!0),e.breaker&&(r(e.breaker.threshold,"breaker.threshold"),r(e.breaker.resetMs,"breaker.resetMs"))}function H(e){for(let r of e){oe(r);let t=c.get(r.name);c.set(r.name,{timeout:D,retries:B,...t,...r,breakerThreshold:r.breaker?.threshold??t?.breakerThreshold??ve,breakerResetMs:r.breaker?.resetMs??t?.breakerResetMs??Me,state:t?.state??"idle",breakerState:t?.breakerState??{fails:0,openUntil:0},entryInflight:t?.entryInflight??new Map,debug:t?.debug??{entry:r.entry,status:"idle",setup:"none"}})}}function ie(e){H([e])}function se(e){l.push(...e),T()}async function ae(e,r={}){let t=r.shareScope||"default",o=r.shareKey||e,i=A(t)[o]||{},u=Object.keys(i),p=r.requiredVersion,h=u.filter(f=>p===void 0||p===!1||k(f,p)),d;if(r.singleton&&u.length>0){let f=u.filter(m=>i[m].loaded);if(d=[...f.length?f:u].sort(x).pop(),u.length>1||!h.includes(d)){let m=i[d],$=`singleton skew "${o}": req "${p??"any"}" use ${d} from ${m.from}`;if(r.strictVersion){let v=new S(R.SHARE_STRICT_VERSION,$,{shareKey:o,requiredVersion:p});throw _({remote:m.from,error:v}),v}console.warn(`[fulgurjs:MFU-010] ${$}`)}}else if(d=[...h].sort(x).pop(),!d){if(r.strictVersion){let m=new S(R.SHARE_STRICT_VERSION,`no satisfying version for "${o}" (required "${p}") in share scope "${t}"`);throw _({remote:o,error:m}),m}if(r.fallback)return r.fallback();let f=new S(R.SHARE_NOT_AVAILABLE,`shared "${o}" (${p??"any"}) unavailable in scope "${t}" (no local fallback)`,{shareKey:o,requiredVersion:p});throw _({remote:o,error:f}),f}let E=i[d];if(b.resolveShare){let f=await b.resolveShare({shareKey:o,shareScope:t,requiredVersion:p,picked:E,available:Object.values(i)});f&&(E=f)}return E.loaded=!0,E.get()}function ce(e){try{let r=new URL(e,typeof location<"u"?location.href:"http://f.invalid");return r.protocol+"//"+r.host+r.pathname}catch{return String(e).replace(/[?#].*$/,"")}}function q(e,r,t){return new Promise((o,a)=>{let i=setTimeout(()=>a(new Error(`timeout after ${r}ms: ${t}`)),r);e.then(u=>{clearTimeout(i),o(u)},u=>{clearTimeout(i),a(u)})})}let le=e=>new Promise(r=>setTimeout(r,e));function N(e,r){if(!e||typeof e.get!="function")throw new Error(`remoteEntry of "${r.name}" does not export a container interface (get/init)`);if(e.name&&r.name&&e.name!==r.name){let t=`remoteEntry self-reported name "${e.name}" mismatches configured name "${r.name}"`;if(r.promise)console.warn(`[fulgurjs] ${t} (promise-based remote, continuing)`);else throw Object.assign(new Error(t),{code:R.REMOTE_NAME_MISMATCH})}}async function G(e,r){let t=r.entryInflight.get(e),o=t??import(e);return t||(r.entryInflight.set(e,o),o.catch(()=>r.entryInflight.delete(e))),q(o,r.timeout??D,`load remoteEntry ${e}`)}async function X(e,r){let t=e.shareScope||"default";if(e.container){let i=w.get(e.container);if(i&&i!==t)throw new S(R.CONTAINER_REINIT_CONFLICT,`container "${e.name}" already initialized with share scope "${i}", cannot re-init with "${t}"`);return e.container}if(e.containerPromise)return e.containerPromise;let o=e.breakerState;if(o.openUntil>Date.now()){let i=new S(R.REMOTE_LOAD_FAILED,`circuit breaker open for remote "${e.name}" until ${new Date(o.openUntil).toISOString()}`,{remote:e.name});throw _({remote:e.name,error:i}),i}e.state="loading",e.debug.status="loading";let a=(async()=>{let i=[];if(e.promise)i.push(async()=>{let f=await q(e.promise(),e.timeout??D,`resolve promise remote "${e.name}"`),m=typeof f=="string"?await G(f,e):f;return N(m,e),m});else for(let f of[e.entry,...e.fallback??[]])i.push(async()=>{let m=await G(f,e);return N(m,e),m});let u,p,h=!1,d=r?.retries??e.retries??B;for(let f of i){for(let m=0;m<=d;m++){let $=performance.now();try{u=await f(),e.lastLoadMs=Math.round(performance.now()-$),e.debug.lastLoadMs=e.lastLoadMs,h=!0;break}catch(v){if(p=v,v?.code)throw v;m<d&&await le(Math.min($e,200*2**m)*(1-xe*(1-2*Math.random())))}}if(h)break}if(!h||!u){let f=ce(e.entry),m=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(m.push(`1. is the remote dev server running? open ${f} in a browser \\u2014 it must return JS, not HTML`),m.push("2. is the URL correct in federation({ remotes })? dev/prod entries can differ"),m.push("3. CORS: the remote dev server must allow cross-origin requests (check its server.cors)")):(m.push(`1. is the remote deployed? open ${f} in a browser \\u2014 it must return JS`),m.push("2. NGINX/CDN routing: the entry path must serve the remoteEntry JS (check try_files)")),new S(R.REMOTE_LOAD_FAILED,`failed to load remote "${e.name}" from ${f}: ${String(p?.message??p)}\n`+m.join(`\n`),{remote:e.name})}N(u,e);let E=w.get(u);if(E&&E!==t)throw new S(R.CONTAINER_REINIT_CONFLICT,`container "${e.name}" already initialized with share scope "${E}", cannot re-init with "${t}"`);return typeof u.init=="function"&&await u.init(s),w.set(u,t),e.container=u,e.state="loaded",e.debug.status="loaded",o.fails=0,u})();e.containerPromise=a;try{return await a}catch(i){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(i?.message??i),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),i instanceof S)throw _({remote:e.name,error:i}),i;if(i?.code)throw _({remote:e.name,error:i}),i;let u=new S(R.REMOTE_LOAD_FAILED,String(i?.message??i),{remote:e.name});throw _({remote:e.name,error:u}),u}}function C(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:z(e.slice(r+1))}}function z(e){return e?e.startsWith(".")?e:`./${e}`:""}async function ue(e,r){let{remote:t,module:o}=C(e);if(o&&j===t)throw new S(R.SETUP_RECURSION,`loadRemote("${e}") re-entered from setup/onSession of "${t}" \\u2014 the initialization promise would await itself (deadlock)\n \\u4FEE\\u6CD5: setup/onSession \\u5185\\u4E0D loadRemote \\u540C\\u4E00\\u8FDC\\u7A0B\\u7684\\u6A21\\u5757\\uFF1B\\u9700\\u8981\\u7684\\u4E1A\\u52A1\\u6A21\\u5757\\u6539\\u4E3A\\u5728\\u9875\\u9762\\u7EC4\\u4EF6\\u5185\\u52A0\\u8F7D\\uFF0C\\u6216\\u7ECF context \\u901A\\u9053\\u89E3\\u8026`,{remote:t});try{b.beforeLoadRemote?.({remote:t,module:o})}catch(h){console.warn("[fulgurjs] beforeLoadRemote hook error (ignored):",h)}let a=c.get(t);if(!a)throw new S(R.REMOTE_UNKNOWN,`unknown remote "${t}". Register it via federation({ remotes }) or registerRemote().`,{remote:t});let i;try{let h=o&&a.manifestUrl?F(e):Promise.resolve();[i]=await Promise.all([X(a,{retries:r?.retries}),h])}catch(h){if(r?.fallbackModule)return console.error(`[fulgurjs] loadRemote("${e}") failed; returning fallbackModule (\\u663E\\u5F0F\\u964D\\u7EA7\\uFF0C\\u9519\\u8BEF\\u5DF2\\u900F\\u51FA)`,h),_({remote:t,error:h}),await r.fallbackModule();throw h}if(!o)return i;await ee(a,i);let u=`${t}@${a.shareScope||"default"}#${o}`;n.has(u)||n.set(u,i.get(o).catch(h=>{throw n.delete(u),h instanceof S||h?.code?h:new S(R.REMOTE_LOAD_FAILED,`failed to load module "${o}" from remote "${t}": ${String(h?.message??h)}`,{remote:t,module:o})}));let p;try{p=await n.get(u)}catch(h){if(r?.fallbackModule)return console.error(`[fulgurjs] loadRemote("${e}") failed; returning fallbackModule (\\u663E\\u5F0F\\u964D\\u7EA7\\uFF0C\\u9519\\u8BEF\\u5DF2\\u900F\\u51FA)`,h),_({remote:t,error:h}),await r.fallbackModule();throw h}try{b.afterLoadRemote?.({remote:t,module:o,module_ns:p})}catch(h){console.warn("[fulgurjs] afterLoadRemote hook error (ignored):",h)}if(p&&typeof p=="object"&&Object.keys(p).length===0){let h=new S(R.EMPTY_EXPORTS,`no exports: ${o} @ ${t}`,{remote:t,module:o});_({remote:t,error:h}),console.error(`[fulgurjs:MFU-009] ${h.message}`)}return p}function fe(e){let r=c.get(e);if(!r)throw new S(R.REMOTE_UNKNOWN,`unknown remote "${e}"`,{remote:e});return X(r)}async function F(e,r={}){let{remote:t,module:o}=C(e),a=c.get(t);if(!a)throw new S(R.REMOTE_UNKNOWN,`unknown remote "${t}"`,{remote:t});let i=r.mode??"preload",u=(d,E)=>{if(d.sheet)return Promise.resolve();let f=y.get(d);if(f)return f;let m=new Promise($=>{let v=()=>{d.removeEventListener("load",v),d.removeEventListener("error",I),$()},I=()=>{_({remote:t,error:new S(R.PRELOAD_FAILED,`failed to load remote stylesheet ${E}`,{remote:t})}),v()};d.addEventListener("load",v,{once:!0}),d.addEventListener("error",I,{once:!0}),d.sheet&&v()});return y.set(d,m),m},p=(d,E)=>{if(typeof document>"u")return Promise.resolve();let f=document.querySelector(`link[href="${d}"]`);if(f)return E==="style"&&i==="preload"?y.get(f)??Promise.resolve():Promise.resolve();let m=document.createElement("link");m.rel=E==="style"?"stylesheet":"modulepreload",m.href=d,i==="prefetch"&&(m.fetchPriority="low");let $=E==="style"?u(m,d):Promise.resolve();return document.head.appendChild(m),E==="style"&&i==="preload"?$:Promise.resolve()},h=d=>{let E=typeof document<"u"?document.baseURI:void 0,f=new URL(a.entry,E||"http://fulgurjs.invalid/");return!f.pathname.endsWith("/")&&!f.pathname.split("/").pop().includes(".")&&(f.pathname+="/"),new URL(d,f).href};try{if(a.manifestUrl){let d=g.get(a.manifestUrl);d||(d=fetch(a.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(f=>f.ok?f.json():void 0),g.set(a.manifestUrl,d),d.then(f=>{f||g.delete(a.manifestUrl)},()=>g.delete(a.manifestUrl)));let E=await d;if(E){let f=E.schemaVersion;if(typeof f=="number"&&(!Number.isInteger(f)||f>1)){_({remote:t,error:new S(R.PRELOAD_FAILED,`unsupported manifest schemaVersion ${String(f)} (expected 1)`,{remote:t})}),await p(a.entry,"modulepreload");return}await p(a.entry,"modulepreload");let m=E.exposes,$=Array.isArray(m)?m.filter(M=>M&&typeof M=="object").map(M=>[String(M.name??""),M]):m&&typeof m=="object"?Object.entries(m):[],v=o?$.filter(([M,O])=>z(String(O?.name??M))===o):$,I=[];for(let[,M]of v)if(typeof M?.file=="string"&&await p(h(M.file),"modulepreload"),Array.isArray(M?.css))for(let O of M.css){if(typeof O!="string")continue;let me=p(h(O),"style");i==="preload"&&I.push(me)}await Promise.all(I);return}}await p(a.entry,"modulepreload")}catch(d){_({remote:t,error:new S(R.PRELOAD_FAILED,String(d?.message??d),{remote:t})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=s,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,t]of c)e[r]={...t.debug,entry:t.entry};return e},errors:[]}),{shareScopeMap:s,initSharing:te,registerShare:ne,registerRemotes:H,registerRemote:ie,registerPlugins:se,loadShare:ae,loadRemote:ue,getContainer:fe,preloadRemote:F,parseSpec:C,clearSessionState:re}}var W=globalThis,P=W.__FULGURJS_RUNTIME__??Ie();W.__FULGURJS_RUNTIME__=P;try{Object.freeze(P)}catch{}var Ne=J;function Ce(){return P}var Fe=P.initSharing,De=P.registerShare,Ve=P.registerRemotes,Ke=P.registerRemote,He=P.registerPlugins,qe=P.loadShare,Ge=P.loadRemote,Xe=P.getContainer,ze=P.preloadRemote,Je=P.parseSpec,Be=P.clearSessionState,We=P.shareScopeMap;function Ye(s){if(s&&typeof s=="object"&&"default"in s){let c=s.default;return c!==void 0?c:s}return s}var Ze=P;export{Be as clearSessionState,Ze as default,Xe as getContainer,Ce as getRuntime,Fe as initSharing,Ge as loadRemote,qe as loadShare,Je as parseSpec,ze as preloadRemote,He as registerPlugins,Ke as registerRemote,Ve as registerRemotes,De as registerShare,P as runtime,We as shareScopeMap,Ye as unwrapDefault,Ne as version};\n';
1753
+ var runtime_code_gen_default = 'var de=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function L(i){let c=de.exec(String(i).trim());return c?{major:Number(c[1]),minor:Number(c[2]??0),patch:Number(c[3]??0),pre:c[4]?c[4].split("."):[]}:null}function ge(i,c){if(i.length===0&&c.length===0)return 0;if(i.length===0)return 1;if(c.length===0)return-1;let l=Math.max(i.length,c.length);for(let o=0;o<l;o++){let g=i[o],y=c[o];if(g===void 0)return-1;if(y===void 0)return 1;let w=/^\\d+$/.test(g),b=/^\\d+$/.test(y);if(w&&b){let I=Number(g)-Number(y);if(I!==0)return I}else{if(w!==b)return w?-1:1;if(g!==y)return g<y?-1:1}}return 0}function O(i,c){let l=L(i),o=L(c);return!l||!o?i<c?-1:i>c?1:0:l.major!==o.major?l.major-o.major:l.minor!==o.minor?l.minor-o.minor:l.patch!==o.patch?l.patch-o.patch:ge(l.pre,o.pre)}var he=/^[a-z]+[+:-]/i;function j(i,c){if(c===!1||c==null||c==="")return!0;let l=String(c).trim();return!l||l==="*"||l==="latest"||he.test(l)?!0:l.split("||").some(o=>ye(i,o.trim()))}function ye(i,c){if(!c||c==="*")return!L(i)?.pre.length;let l=c.split(/\\s+-\\s+/);if(l.length===2){let y=l[0].trim(),w=l[1].trim();return!(!j(i,`>=${y}`)||!j(i,`<=${w}`))}let o=L(i);if(!o)return!1;let g=Se(c);if(g===null)return!0;for(let y of g)if(!Pe(o,i,y))return!1;return!(o.pre.length>0&&!g.some(y=>y.ver.pre.length>0)&&!g.some(w=>w.ver.major===o.major&&w.ver.minor===o.minor&&w.ver.patch===o.patch))}function Se(i){let c=[],l=i.trim().split(/\\s+/).filter(Boolean);if(l.length===0)return null;for(let o of l){let g=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(o);if(!g)return null;let y=g[1],w=g[2],b=Ee(y,w);if(b===null)return null;c.push(...b)}return c}function Ee(i,c){let l=we(c);if(!l)return null;let{ver:o,partial:g}=l;switch(i){case"^":{let y=Re(o);return y?[{op:">=",ver:o},{op:"<",ver:y}]:null}case"~":{let y=g>=2?{major:o.major,minor:o.minor+1,patch:0,pre:[]}:{major:o.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:o},{op:"<",ver:y}]}case">=":return[{op:">=",ver:o}];case">":return g===1?[{op:">=",ver:{major:o.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:{major:o.major,minor:o.minor+1,patch:0,pre:[]}}]:[{op:">",ver:o}];case"<":return g===1?[{op:"<",ver:{major:o.major,minor:0,patch:0,pre:[]}}]:g===2?[{op:"<",ver:{major:o.major,minor:o.minor,patch:0,pre:[]}}]:[{op:"<",ver:o}];case"<=":return[{op:"<=",ver:o}];case"=":case void 0:return g===1?[{op:">=",ver:o},{op:"<",ver:{major:o.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:o},{op:"<",ver:{major:o.major,minor:o.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:o}];default:return null}}function Re(i){return i.major>0?{major:i.major+1,minor:0,patch:0,pre:[]}:i.minor>0?{major:0,minor:i.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:i.patch+1,pre:[]}}function we(i){let c=i.replace(/^v/,"").trim();if(!c||c==="*"||c==="x"||c==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let l=c.split("."),o=[],g=0;for(let b of l.slice(0,3))if(/^\\d+$/.test(b))o.push(Number(b)),g++;else{if(b==="x"||b==="X"||b==="*")break;break}let y=c.split("-"),w=y.length>1?y.slice(1).join("-").split("+")[0].split("."):[];return g===0&&w.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:o[0]??0,minor:o[1]??0,patch:o[2]??0,pre:w},partial:g}}function be(i,c){switch(c){case">=":return i>=0;case">":return i>0;case"<":return i<0;case"<=":return i<=0;case"=":return i===0}}function Pe(i,c,l){let o=`${i.major}.${i.minor}.${i.patch}`+(i.pre.length?`-${i.pre.join(".")}`:"");if(l.upper)return!(!(O(o,`${l.ver.major}.${l.ver.minor}.${l.ver.patch}`+(l.ver.pre.length?`-${l.ver.pre.join(".")}`:""))>=0)||!(O(o,`${l.upper.major}.${l.upper.minor}.${l.upper.patch}`)<0));let g=O(o,`${l.ver.major}.${l.ver.minor}.${l.ver.patch}`+(l.ver.pre.length?`-${l.ver.pre.join(".")}`:"")),y=be(g,l.op);return l.ver.pre.length>0&&i.pre.length===0&&(l.op===">"||l.op==="<")?!1:y}var S=class extends Error{code;details;constructor(c,l,o){super(`[fulgurjs:${c}] ${l}`),this.name="FgError",this.code=c,this.details=o}},E={REMOTE_LOAD_FAILED:"MFU-001",REMOTE_NAME_MISMATCH:"MFU-002",SHARE_STRICT_VERSION:"MFU-003",SHARE_NOT_AVAILABLE:"MFU-004",CONTAINER_REINIT_CONFLICT:"MFU-005",MODULE_NOT_EXPOSED:"MFU-006",PRELOAD_FAILED:"MFU-007",REMOTE_UNKNOWN:"MFU-008",EMPTY_EXPORTS:"MFU-009",SINGLETON_SKEW:"MFU-010",SETUP_INVALID_EXPORT:"MFU-011",SETUP_RUN_FAILED:"MFU-012",SETUP_SESSION_KEY_MISSING:"MFU-013",SETUP_RECURSION:"MFU-014"};var W="4.3.1";var _e="__fulgurjsSetup",$e="__FULGURJS_APP_CONFIG__",D=15e3,z=2,Me=5,ve=3e4,Ie=4e3,Te=.2;function Oe(){let i=Object.create(null),c=new Map,l=[],o=new Set,g=new Map,y=new Map,w=new WeakMap,b=new WeakMap,I={},Z=()=>{for(let e of l)try{e.init?.(I)}catch(r){console.warn("[fulgurjs] \\u8FD0\\u884C\\u65F6\\u6269\\u5C55\\u521D\\u59CB\\u5316\\u5931\\u8D25\\uFF0C\\u8BE5\\u6269\\u5C55\\u5C06\\u4E0D\\u53EF\\u7528\\uFF1A",e.name,r)}},k=new Map,A,Q=e=>{let r=k.get(e);return r||k.set(e,r={}),r},V=()=>globalThis[$e]??{};async function K(e,r,t,n){let a=u=>u instanceof S?u:new S(E.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${n} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${String(u?.message??u)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${n} \\u51FD\\u6570\\u540E\\u91CD\\u65B0\\u52A0\\u8F7D\\uFF1B\\u5931\\u8D25\\u7F13\\u5B58\\u5DF2\\u6E05\\u9664\\uFF0C\\u53EF\\u4EE5\\u76F4\\u63A5\\u91CD\\u8BD5\\u3002`,{remote:e,phase:n});A=e;let s;try{s=r(t)}catch(u){throw a(u)}finally{A=void 0}try{await s}catch(u){throw a(u)}}async function ee(e,r,t,n){e.debug.setup="pending";try{if(e.manifestUrl)try{await F(`${e.name}/${t}`)}catch{}let a=await r.get(t),s=a?.default;if(typeof s!="function")throw new S(E.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${t}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${a==null?String(a):typeof s}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728 setup \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u4E2D\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u51FD\\u6570\\uFF0C\\u4F8B\\u5982 export default async function setup(context) { ... }\\uFF1B\\u5177\\u540D onSession \\u53EF\\u9009\\u3002`,{remote:e.name,module:t});if(a.onSession!==void 0&&typeof a.onSession!="function")throw new S(E.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${t}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AonSession \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof a.onSession}\\uFF0C\\u5E94\\u4E3A\\u51FD\\u6570\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5C06 onSession \\u6539\\u4E3A\\u5177\\u540D\\u5BFC\\u51FA\\u7684\\u51FD\\u6570\\uFF0C\\u6216\\u5220\\u9664\\u8BE5\\u5BFC\\u51FA\\u3002`,{remote:e.name,module:t});n.setupExports=a,await K(e.name,s,{appContext:V(),signal:(n.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(a){throw e.debug.setup="failed",n.setupExports=void 0,a}}async function re(e,r,t){let n=V(),a=n?.sessionKey;if(typeof a!="string"||a==="")throw new S(E.SETUP_SESSION_KEY_MISSING,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u58F0\\u660E\\u4E86 onSession\\uFF0C\\u4F46\\u5BBF\\u4E3B\\u5C1A\\u672A\\u63D0\\u4F9B\\u6709\\u6548\\u7684 AppContext.sessionKey\\u3002\n\\u539F\\u56E0\\uFF1A\\u5F53\\u524D\\u503C\\u4E3A ${a===void 0?"\\u7F3A\\u5931":JSON.stringify(a)}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5BBF\\u4E3B\\u6BCF\\u6B21\\u767B\\u5F55\\u6216\\u91CD\\u767B\\u65F6\\u751F\\u6210\\u65B0\\u7684\\u975E\\u654F\\u611F\\u767B\\u5F55\\u4EE3\\u6B21 ID\\uFF0C\\u5E76\\u5728\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u9875\\u9762\\u524D\\u8C03\\u7528 provideAppContext({ ..., sessionKey: \'\\u767B\\u5F55\\u4EE3\\u6B21 ID\' })\\uFF1B\\u4E0D\\u8981\\u4F7F\\u7528 token \\u539F\\u6587\\u3002`,{remote:e.name});if(r.sessionPromise&&r.sessionKey===a)return r.sessionPromise;r.controller?.abort();let s=new AbortController;r.controller=s,r.sessionKey=a;let u=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),p=(async()=>{await u,!s.signal.aborted&&await K(e.name,t,{appContext:n,sessionKey:a,signal:s.signal},"onSession")})();return r.sessionPromise=p,p.catch(()=>{r.sessionKey===a&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),p}async function te(e,r){let t=r?.[_e];if(typeof t!="string"||t==="")return;let n=Q(e.name);n.setupPromise||(n.setupPromise=ee(e,r,t,n).catch(s=>{throw n.setupPromise=void 0,s})),await n.setupPromise;let a=n.setupExports?.onSession;typeof a=="function"&&await re(e,n,a)}function ne(){for(let e of k.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let U=e=>i[e]??=Object.create(null);function _(e){try{I.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function oe(e="default"){return U(e),i}function se(e,r,t,n,a={}){let s=U(e||"default"),u=Object.hasOwn(s,r)?s[r]:void 0,p=u&&typeof u=="object"?u:void 0;p||(p=Object.create(null),s[r]=p),!(Object.hasOwn(p,t)&&p[t])&&(p[t]={version:t,get:n,from:a.from??"unknown",eager:!!a.eager,loaded:!!a.loaded})}function ie(e){let r=(t,n,a)=>{if(t===void 0)return;if(!(typeof t=="number"&&(a?Number.isInteger(t)&&t>=0&&t<=10:Number.isFinite(t)&&t>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${n} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(t)}\\uFF0C\\u5E94\\u4E3A${a?" 0 \\u5230 10 \\u7684\\u6574\\u6570":"\\u5927\\u4E8E 0 \\u7684\\u6709\\u9650\\u6570\\u5B57"}\\u3002\\u8BF7\\u4FEE\\u6B63 registerRemote \\u914D\\u7F6E\\u3002`)};r(e.timeout,"timeout"),r(e.retries,"retries",!0),e.breaker&&(r(e.breaker.threshold,"breaker.threshold"),r(e.breaker.resetMs,"breaker.resetMs"))}function H(e){for(let r of e){ie(r);let t=c.get(r.name);c.set(r.name,{timeout:D,retries:z,...t,...r,breakerThreshold:r.breaker?.threshold??t?.breakerThreshold??Me,breakerResetMs:r.breaker?.resetMs??t?.breakerResetMs??ve,state:t?.state??"idle",breakerState:t?.breakerState??{fails:0,openUntil:0},entryInflight:t?.entryInflight??new Map,debug:t?.debug??{entry:r.entry,status:"idle",setup:"none"}})}}function ae(e){H([e])}function ce(e){l.push(...e),Z()}async function le(e,r={}){let t=r.shareScope||"default",n=r.shareKey||e,s=U(t)[n]||{},u=Object.keys(s),p=r.requiredVersion,h=u.filter(f=>p===void 0||p===!1||j(f,p)),d;if(r.singleton&&u.length>0){let f=u.filter(m=>s[m].loaded);if(d=[...f.length?f:u].sort(O).pop(),!h.includes(d)){let m=s[d],v=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${n}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u5E94\\u7528\\u8981\\u6C42 ${p??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${u.join("\\u3001")}\\uFF1B\\u4E3A\\u4FDD\\u8BC1\\u5168\\u9875\\u53EA\\u4F7F\\u7528\\u4E00\\u4E2A\\u5B9E\\u4F8B\\uFF0C\\u6700\\u7EC8\\u590D\\u7528 ${m.from} \\u63D0\\u4F9B\\u7684 ${d}\\u3002\n\\u5F71\\u54CD\\uFF1A\\u53EF\\u80FD\\u51FA\\u73B0\\u72B6\\u6001\\u4E0D\\u4E00\\u81F4\\u6216\\u8FD0\\u884C\\u9519\\u8BEF\\uFF0C\\u5177\\u4F53\\u53D6\\u51B3\\u4E8E\\u4E24\\u7AEF API \\u662F\\u5426\\u517C\\u5BB9\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u6838\\u5BF9\\u540E\\u8C03\\u6574 shared.requiredVersion\\uFF1B\\u82E5\\u5FC5\\u987B\\u62D2\\u7EDD\\u4E0D\\u517C\\u5BB9\\u7248\\u672C\\uFF0C\\u8BF7\\u542F\\u7528 strictVersion\\u3002`;if(r.strictVersion){let T=new S(E.SHARE_STRICT_VERSION,v,{shareKey:n,requiredVersion:p});throw _({remote:m.from,error:T}),T}let $=`${t}|${n}|${p??"*"}|${d}|${u.join(",")}`;o.has($)||(o.add($),console.warn(`[fulgurjs:MFU-010] ${v}`))}}else if(d=[...h].sort(O).pop(),!d){if(r.strictVersion){let m=new S(E.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${t}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${n}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${p}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${u.join("\\u3001")||"\\u65E0"}\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u4E0E\\u8FDC\\u7A0B\\u7684\\u4F9D\\u8D56\\u7248\\u672C\\uFF0C\\u6216\\u4FEE\\u6B63 shared.requiredVersion\\u3002`);throw _({remote:n,error:m}),m}if(r.fallback)return r.fallback();let f=new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${n}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${t}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${p??"\\u4EFB\\u610F\\u7248\\u672C"} \\u8981\\u6C42\\u7684\\u7248\\u672C\\uFF0C\\u4E14\\u672A\\u914D\\u7F6E\\u672C\\u5730\\u526F\\u672C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5728\\u5BBF\\u4E3B\\u6216\\u8FDC\\u7A0B\\u6CE8\\u518C\\u8BE5\\u4F9D\\u8D56\\uFF0C\\u6216\\u4E3A shared \\u914D\\u7F6E\\u53EF\\u7528\\u7684\\u672C\\u5730\\u526F\\u672C\\u3002`,{shareKey:n,requiredVersion:p});throw _({remote:n,error:f}),f}let R=s[d];if(I.resolveShare){let f=await I.resolveShare({shareKey:n,shareScope:t,requiredVersion:p,picked:R,available:Object.values(s)});f&&(R=f)}return R.loaded=!0,R.get()}function q(e){try{let r=new URL(e,typeof location<"u"?location.href:"http://f.invalid");return r.protocol+"//"+r.host+r.pathname}catch{return String(e).replace(/[?#].*$/,"")}}function G(e,r,t){return new Promise((n,a)=>{let s=setTimeout(()=>a(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${t}`)),r);e.then(u=>{clearTimeout(s),n(u)},u=>{clearTimeout(s),a(u)})})}let ue=e=>new Promise(r=>setTimeout(r,e));function N(e,r){if(!e||typeof e.get!="function")throw new Error(`\\u8FDC\\u7A0B\\u5E94\\u7528 "${r.name}" \\u7684 remoteEntry \\u672A\\u5BFC\\u51FA\\u5BB9\\u5668\\u63A5\\u53E3\\u3002\\u8BF7\\u786E\\u8BA4\\u5165\\u53E3\\u5BFC\\u51FA\\u4E86 get()\\uFF0C\\u5E76\\u68C0\\u67E5\\u8BE5\\u5730\\u5740\\u662F\\u5426\\u8FD4\\u56DE\\u6B63\\u786E\\u7684\\u8054\\u90A6\\u5165\\u53E3 JS\\u3002`);if(e.name&&r.name&&e.name!==r.name){let t=`\\u8FDC\\u7A0B\\u5165\\u53E3\\u81EA\\u62A5\\u540D\\u79F0 "${e.name}" \\u4E0E\\u5BBF\\u4E3B\\u914D\\u7F6E\\u540D\\u79F0 "${r.name}" \\u4E0D\\u4E00\\u81F4\\u3002\\u8BF7\\u7EDF\\u4E00\\u4E24\\u4FA7 federation({ name }) \\u4E0E remotes \\u7684\\u540D\\u79F0\\u3002`;if(r.promise)console.warn(`[fulgurjs] ${t} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`);else throw Object.assign(new Error(t),{code:E.REMOTE_NAME_MISMATCH})}}async function J(e,r){let t=r.entryInflight.get(e),n=t??import(e);return t||(r.entryInflight.set(e,n),n.catch(()=>r.entryInflight.delete(e))),G(n,r.timeout??D,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${q(e)}`)}async function X(e,r){let t=e.shareScope||"default";if(e.container){let s=b.get(e.container);if(s&&s!==t)throw new S(E.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${s}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${t}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let n=e.breakerState;if(n.openUntil>Date.now()){let s=new S(E.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u8FDE\\u7EED\\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u7194\\u65AD\\u5668\\u5DF2\\u5F00\\u542F\\uFF1B\\u5C06\\u5728 ${new Date(n.openUntil).toISOString()} \\u540E\\u5141\\u8BB8\\u91CD\\u8BD5\\u3002\\u8BF7\\u5148\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u670D\\u52A1\\u548C\\u7F51\\u7EDC\\u3002`,{remote:e.name});throw _({remote:e.name,error:s}),s}e.state="loading",e.debug.status="loading";let a=(async()=>{let s=[];if(e.promise)s.push(async()=>{let f=await G(e.promise(),e.timeout??D,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),m=typeof f=="string"?await J(f,e):f;return N(m,e),m});else for(let f of[e.entry,...e.fallback??[]])s.push(async()=>{let m=await J(f,e);return N(m,e),m});let u,p,h=!1,d=r?.retries??e.retries??z;for(let f of s){for(let m=0;m<=d;m++){let v=performance.now();try{u=await f(),e.lastLoadMs=Math.round(performance.now()-v),e.debug.lastLoadMs=e.lastLoadMs,h=!0;break}catch($){if(p=$,$?.code)throw $;m<d&&await ue(Math.min(Ie,200*2**m)*(1-Te*(1-2*Math.random())))}}if(h)break}if(!h||!u){let f=q(e.entry),m=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(m.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${f}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),m.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),m.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(m.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${f}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),m.push("2. \\u68C0\\u67E5 Nginx/CDN \\u7684\\u5165\\u53E3\\u8DEF\\u5F84\\u6620\\u5C04\\uFF1B\\u8BE5\\u5730\\u5740\\u4E0D\\u80FD\\u56DE\\u9000\\u5230 index.html\\u3002")),new S(E.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${f} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${String(p?.message??p)}\n\\u4FEE\\u6CD5\\uFF1A\n${m.join(`\n`)}`,{remote:e.name})}N(u,e);let R=b.get(u);if(R&&R!==t)throw new S(E.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${R}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${t}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof u.init=="function"&&await u.init(i),b.set(u,t),e.container=u,e.state="loaded",e.debug.status="loaded",n.fails=0,u})();e.containerPromise=a;try{return await a}catch(s){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(s?.message??s),n.fails+=1,n.fails>=e.breakerThreshold&&(n.openUntil=Date.now()+e.breakerResetMs,n.fails=0),s instanceof S)throw _({remote:e.name,error:s}),s;if(s?.code)throw _({remote:e.name,error:s}),s;let u=new S(E.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(s?.message??s)}\\u3002\\u8BF7\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5165\\u53E3\\u3001\\u7F51\\u7EDC\\u53CA\\u5171\\u4EAB\\u4F9D\\u8D56\\u3002`,{remote:e.name});throw _({remote:e.name,error:u}),u}}function C(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:B(e.slice(r+1))}}function B(e){return e?e.startsWith(".")?e:`./${e}`:""}async function fe(e,r){let{remote:t,module:n}=C(e);if(n&&A===t)throw new S(E.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684 setup/onSession \\u53C8\\u540C\\u6B65\\u52A0\\u8F7D\\u4E86\\u81EA\\u8EAB\\u6A21\\u5757\\uFF0C\\u5F62\\u6210\\u5FAA\\u73AF\\u7B49\\u5F85\\u3002\n\\u539F\\u56E0\\uFF1A\\u521D\\u59CB\\u5316\\u5C1A\\u672A\\u5B8C\\u6210\\uFF0C\\u4E0D\\u80FD\\u7B49\\u5F85\\u81EA\\u8EAB\\u7684\\u521D\\u59CB\\u5316\\u7ED3\\u679C\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u4E0D\\u8981\\u5728 setup/onSession \\u4E2D\\u52A0\\u8F7D\\u540C\\u4E00\\u8FDC\\u7A0B\\u7684\\u6A21\\u5757\\uFF1B\\u8BF7\\u5728\\u9875\\u9762\\u7EC4\\u4EF6\\u4E2D\\u52A0\\u8F7D\\uFF0C\\u6216\\u901A\\u8FC7 context \\u89E3\\u8026\\u3002`,{remote:t});try{I.beforeLoadRemote?.({remote:t,module:n})}catch(h){console.warn("[fulgurjs] beforeLoadRemote \\u89C2\\u6D4B\\u94A9\\u5B50\\u6267\\u884C\\u5931\\u8D25\\uFF1B\\u6A21\\u5757\\u52A0\\u8F7D\\u5C06\\u7EE7\\u7EED\\u3002\\u8BF7\\u68C0\\u67E5\\u8BE5\\u94A9\\u5B50\\uFF1A",h)}let a=c.get(t);if(!a)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:t});let s;try{let h=n&&a.manifestUrl?F(e):Promise.resolve();[s]=await Promise.all([X(a,{retries:r?.retries}),h])}catch(h){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u6B63\\u5728\\u4F7F\\u7528\\u663E\\u5F0F\\u914D\\u7F6E\\u7684 fallbackModule\\uFF1B\\u539F\\u59CB\\u9519\\u8BEF\\uFF1A`,h),_({remote:t,error:h}),await r.fallbackModule();throw h}if(!n)return s;await te(a,s);let u=`${t}@${a.shareScope||"default"}#${n}`;g.has(u)||g.set(u,s.get(n).catch(h=>{throw g.delete(u),h instanceof S||h?.code?h:new S(E.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u52A0\\u8F7D\\u6A21\\u5757 "${n}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(h?.message??h)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:t,module:n})}));let p;try{p=await g.get(u)}catch(h){if(r?.fallbackModule)return console.error(`[fulgurjs] \\u8FDC\\u7A0B\\u6A21\\u5757 "${e}" \\u52A0\\u8F7D\\u5931\\u8D25\\uFF0C\\u6B63\\u5728\\u4F7F\\u7528\\u663E\\u5F0F\\u914D\\u7F6E\\u7684 fallbackModule\\uFF1B\\u539F\\u59CB\\u9519\\u8BEF\\uFF1A`,h),_({remote:t,error:h}),await r.fallbackModule();throw h}try{I.afterLoadRemote?.({remote:t,module:n,module_ns:p})}catch(h){console.warn("[fulgurjs] afterLoadRemote \\u89C2\\u6D4B\\u94A9\\u5B50\\u6267\\u884C\\u5931\\u8D25\\uFF1B\\u5DF2\\u52A0\\u8F7D\\u6A21\\u5757\\u4ECD\\u53EF\\u4F7F\\u7528\\u3002\\u8BF7\\u68C0\\u67E5\\u8BE5\\u94A9\\u5B50\\uFF1A",h)}if(p&&typeof p=="object"&&Object.keys(p).length===0){let h=new S(E.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684\\u6A21\\u5757 "${n}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:t,module:n});_({remote:t,error:h}),console.error(h.message)}return p}function me(e){let r=c.get(e);if(!r)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return X(r)}async function F(e,r={}){let{remote:t,module:n}=C(e),a=c.get(t);if(!a)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:t});let s=r.mode??"preload",u=(d,R)=>{if(d.sheet)return Promise.resolve();let f=w.get(d);if(f)return f;let m=new Promise(v=>{let $=()=>{d.removeEventListener("load",$),d.removeEventListener("error",T),v()},T=()=>{_({remote:t,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${R}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:t})}),$()};d.addEventListener("load",$,{once:!0}),d.addEventListener("error",T,{once:!0}),d.sheet&&$()});return w.set(d,m),m},p=(d,R)=>{if(typeof document>"u")return Promise.resolve();let f=document.querySelector(`link[href="${d}"]`);if(f)return R==="style"&&s==="preload"?w.get(f)??Promise.resolve():Promise.resolve();let m=document.createElement("link");m.rel=R==="style"?"stylesheet":"modulepreload",m.href=d,s==="prefetch"&&(m.fetchPriority="low");let v=R==="style"?u(m,d):Promise.resolve();return document.head.appendChild(m),R==="style"&&s==="preload"?v:Promise.resolve()},h=d=>{let R=typeof document<"u"?document.baseURI:void 0,f=new URL(a.entry,R||"http://fulgurjs.invalid/");return!f.pathname.endsWith("/")&&!f.pathname.split("/").pop().includes(".")&&(f.pathname+="/"),new URL(d,f).href};try{if(a.manifestUrl){let d=y.get(a.manifestUrl);d||(d=fetch(a.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(f=>f.ok?f.json():void 0),y.set(a.manifestUrl,d),d.then(f=>{f||y.delete(a.manifestUrl)},()=>y.delete(a.manifestUrl)));let R=await d;if(R){let f=R.schemaVersion;if(typeof f=="number"&&(!Number.isInteger(f)||f>1)){_({remote:t,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(f)}\\uFF0C\\u5F53\\u524D\\u4EC5\\u652F\\u6301\\u7248\\u672C 1\\u3002\\u8BF7\\u7EDF\\u4E00\\u5BBF\\u4E3B\\u548C\\u8FDC\\u7A0B\\u7684\\u63D2\\u4EF6\\u7248\\u672C\\u3002`,{remote:t})}),await p(a.entry,"modulepreload");return}await p(a.entry,"modulepreload");let m=R.exposes,v=Array.isArray(m)?m.filter(M=>M&&typeof M=="object").map(M=>[String(M.name??""),M]):m&&typeof m=="object"?Object.entries(m):[],$=n?v.filter(([M,x])=>B(String(x?.name??M))===n):v,T=[];for(let[,M]of $)if(typeof M?.file=="string"&&await p(h(M.file),"modulepreload"),Array.isArray(M?.css))for(let x of M.css){if(typeof x!="string")continue;let pe=p(h(x),"style");s==="preload"&&T.push(pe)}await Promise.all(T);return}}await p(a.entry,"modulepreload")}catch(d){_({remote:t,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${t}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(d?.message??d)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:t})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=i,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,t]of c)e[r]={...t.debug,entry:t.entry};return e},errors:[]}),{shareScopeMap:i,initSharing:oe,registerShare:se,registerRemotes:H,registerRemote:ae,registerPlugins:ce,loadShare:le,loadRemote:fe,getContainer:me,preloadRemote:F,parseSpec:C,clearSessionState:ne}}var Y=globalThis,P=Y.__FULGURJS_RUNTIME__??Oe();Y.__FULGURJS_RUNTIME__=P;try{Object.freeze(P)}catch{}var Ce=W;function Fe(){return P}var De=P.initSharing,Ve=P.registerShare,Ke=P.registerRemotes,He=P.registerRemote,qe=P.registerPlugins,Ge=P.loadShare,Je=P.loadRemote,Xe=P.getContainer,Be=P.preloadRemote,We=P.parseSpec,ze=P.clearSessionState,Ye=P.shareScopeMap;function Ze(i){if(i&&typeof i=="object"&&"default"in i){let c=i.default;return c!==void 0?c:i}return i}var Qe=P;export{ze as clearSessionState,Qe as default,Xe as getContainer,Fe as getRuntime,De as initSharing,Je as loadRemote,Ge as loadShare,We as parseSpec,Be as preloadRemote,qe as registerPlugins,He as registerRemote,Ke as registerRemotes,Ve as registerShare,P as runtime,Ye as shareScopeMap,Ze as unwrapDefault,Ce as version};\n';
1754
1754
 
1755
1755
  // src/index.ts
1756
1756
  function readRuntimeCode() {
@@ -1772,7 +1772,7 @@ function enumerateCjsExports(packageName, appRoot) {
1772
1772
  names = Object.keys(mod);
1773
1773
  } catch {
1774
1774
  console.warn(
1775
- `[fulgurjs] cannot enumerate CJS exports of shared package "${packageName}" for the optimize-deps facade; the facade will export default only. If consumers destructure named exports from it, add this package to optimizeDeps.exclude to serve it through the transform pipeline instead.`
1775
+ `[fulgurjs] \u65E0\u6CD5\u679A\u4E3E\u5171\u4EAB\u4F9D\u8D56 "${packageName}" \u7684 CJS \u5BFC\u51FA\uFF0C\u9884\u6784\u5EFA\u95E8\u9762\u53EA\u4F1A\u63D0\u4F9B\u9ED8\u8BA4\u5BFC\u51FA\u3002\u5982\u679C\u4E1A\u52A1\u4EE3\u7801\u9700\u8981\u5177\u540D\u5BFC\u51FA\uFF0C\u8BF7\u5C06\u8BE5\u4F9D\u8D56\u52A0\u5165 optimizeDeps.exclude\uFF0C\u4F7F\u5176\u7ECF\u8FC7\u8054\u90A6\u8F6C\u6362\u6D41\u7A0B\u3002`
1776
1776
  );
1777
1777
  }
1778
1778
  nsExportCache.set(packageName, names);
@@ -1815,7 +1815,6 @@ function facadeChunkOf(id) {
1815
1815
  return null;
1816
1816
  }
1817
1817
  function federation(options) {
1818
- const warnedUnknownPrefixes = /* @__PURE__ */ new Set();
1819
1818
  let remoteSchemaPromise = null;
1820
1819
  const state = {
1821
1820
  command: "serve",
@@ -1917,7 +1916,7 @@ export { default } from ${JSON.stringify(url)};
1917
1916
  if (userTarget) {
1918
1917
  if (/es20(0\d|1\d|20|21)/.test(String(userTarget))) {
1919
1918
  normalized.warnings.push(
1920
- `build.target="${String(userTarget)}" does not support top-level await; fulgurjs requires es2022 or higher.`
1919
+ `build.target="${String(userTarget)}" \u4E0D\u652F\u6301\u9876\u5C42 await\uFF1Bfulgurjs \u9700\u8981 es2022 \u6216\u66F4\u9AD8\u7248\u672C\u3002\u8BF7\u8C03\u6574 build.target\u3002`
1921
1920
  );
1922
1921
  }
1923
1922
  } else {
@@ -1937,7 +1936,7 @@ export { default } from ${JSON.stringify(url)};
1937
1936
  console.warn(
1938
1937
  formatFulgurjsDiagnostic({
1939
1938
  code: "BLD-006",
1940
- symptom: "build.rollupOptions.output is an array; fulgurjs cannot inject the shared-facade chunk guard automatically",
1939
+ symptom: "build.rollupOptions.output \u662F\u6570\u7EC4\uFF0Cfulgurjs \u65E0\u6CD5\u81EA\u52A8\u6CE8\u5165\u5171\u4EAB\u95E8\u9762 chunk \u9632\u62A4",
1941
1940
  cause: "devSharedSelf \u95E8\u9762\u5316 + manualChunks \u5F3A\u5236\u5206\u7EC4\u53EF\u80FD\u5F62\u6210 chunk \u5FAA\u73AF\u4F9D\u8D56\uFF08\u8FD0\u884C\u65F6 TypeError\uFF1A\u534F\u5546\u51FD\u6570\u672A\u521D\u59CB\u5316\uFF09",
1942
1941
  fix: `\u5728\u6BCF\u4E2A output \u9879\u7684 manualChunks \u6700\u524D\u9762\u52A0\u5206\u652F\uFF1Aif (id.startsWith('virtual:fulgurjs-')) return 'fulgurjs-shared-facades'`
1943
1942
  })
@@ -1974,7 +1973,7 @@ export { default } from ${JSON.stringify(url)};
1974
1973
  configResolved(resolved) {
1975
1974
  state.base = normalizeBase(resolved.base);
1976
1975
  if (resolved.build?.ssr) {
1977
- console.warn("[fulgurjs] SSR builds are not supported in this version; plugin hooks disabled.");
1976
+ console.warn("[fulgurjs] \u5F53\u524D\u7248\u672C\u4E0D\u652F\u6301 SSR \u6784\u5EFA\uFF1B\u8054\u90A6\u63D2\u4EF6\u94A9\u5B50\u5DF2\u505C\u7528\u3002\u8BF7\u4F7F\u7528\u5BA2\u6237\u7AEF\u6784\u5EFA\u3002");
1978
1977
  }
1979
1978
  const n0 = state.normalized;
1980
1979
  const optimize = resolved.optimizeDeps;
@@ -2017,20 +2016,6 @@ export { default } from ${JSON.stringify(url)};
2017
2016
  }
2018
2017
  }
2019
2018
  }
2020
- const n = state.normalized;
2021
- if (n && !bare.startsWith("\0") && !bareClean.startsWith(".") && !bareClean.startsWith("/") && !bareClean.startsWith("virtual:")) {
2022
- const slash = bareClean.indexOf("/");
2023
- if (slash > 0) {
2024
- const prefix = bareClean.slice(0, slash);
2025
- const known = bareClean === "@fulgurjs/federation/runtime" || n.remotes.some((r) => r.key === prefix) || n.shared.some((sh) => sh.aliases.includes(prefix) || sh.aliases.some((a) => a.endsWith("/") && prefix.startsWith(a)));
2026
- if (!known && !warnedUnknownPrefixes.has(prefix)) {
2027
- warnedUnknownPrefixes.add(prefix);
2028
- console.warn(
2029
- `[fulgurjs] "${source}" uses prefix "${prefix}/", which is not in federation({ remotes }) or shared. If "${prefix}" is a federated remote, add it: remotes: { '${prefix}': '<url>' }. (Ignore this if it is a plain npm package.)`
2030
- );
2031
- }
2032
- }
2033
- }
2034
2019
  if (bareClean === RUNTIME_VIRTUAL_ID) return RESOLVED.runtime;
2035
2020
  if (bareClean === RUNTIME_PROXY_VIRTUAL_ID) return RESOLVED.runtimeProxy;
2036
2021
  if (bareClean === INIT_VIRTUAL_ID) return RESOLVED.init;
@@ -2188,12 +2173,12 @@ ${code}`, map: null };
2188
2173
  state.manualChunkGroups.set(r.id.split("?")[0], group);
2189
2174
  } else {
2190
2175
  console.warn(
2191
- `[fulgurjs] manualChunks: could not resolve "${specifier}" for group "${group}"; those modules will fall back to automatic chunking. (Their shared-negotiation facades are still guarded.)`
2176
+ `[fulgurjs] manualChunks \u5206\u7EC4 "${group}" \u4E2D\u7684\u6A21\u5757 "${specifier}" \u65E0\u6CD5\u89E3\u6790\uFF0C\u5DF2\u56DE\u9000\u4E3A\u81EA\u52A8\u5206\u5305\uFF1B\u5171\u4EAB\u534F\u5546\u95E8\u9762\u4ECD\u53D7\u4FDD\u62A4\u3002\u8BF7\u68C0\u67E5\u6A21\u5757\u8DEF\u5F84\u3002`
2192
2177
  );
2193
2178
  }
2194
2179
  } catch {
2195
2180
  console.warn(
2196
- `[fulgurjs] manualChunks: resolving "${specifier}" (group "${group}") failed; those modules will fall back to automatic chunking.`
2181
+ `[fulgurjs] manualChunks \u5206\u7EC4 "${group}" \u4E2D\u7684\u6A21\u5757 "${specifier}" \u89E3\u6790\u5931\u8D25\uFF0C\u5DF2\u56DE\u9000\u4E3A\u81EA\u52A8\u5206\u5305\u3002\u8BF7\u68C0\u67E5\u6A21\u5757\u8DEF\u5F84\u3002`
2197
2182
  );
2198
2183
  }
2199
2184
  }