@fulgurjs/federation 5.7.0 → 5.8.0

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 (34) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/DESIGN.md +3 -0
  3. package/README.en.md +316 -363
  4. package/README.md +264 -1182
  5. package/dist/bridge-app-react.cjs +5 -1
  6. package/dist/bridge-app-react.js +5 -1
  7. package/dist/{chunk-OLQGJR2Z.js → chunk-GLASM5EX.js} +47 -17
  8. package/dist/{chunk-NHSQHAS4.js → chunk-V6EASSCR.js} +1 -1
  9. package/dist/{chunk-WOYDFERL.js → chunk-X34EJB4H.js} +1 -1
  10. package/dist/index.cjs +117 -13
  11. package/dist/index.js +117 -13
  12. package/dist/react.d.ts +4 -0
  13. package/dist/runtime-entry.d.ts +4 -0
  14. package/dist/runtime.js +22 -21
  15. package/docs/API.en.md +328 -0
  16. package/docs/API.md +913 -0
  17. package/docs/webpack-mf-/345/257/271/347/205/247/344/270/216/347/274/272/345/217/243.md +64 -37
  18. package/examples/bridge/react-host/package-lock.json +4 -4
  19. package/examples/bridge/react-host/package.json +1 -1
  20. package/examples/bridge/react-remote/package-lock.json +4 -4
  21. package/examples/bridge/react-remote/package.json +1 -1
  22. package/examples/bridge/vue-host/package-lock.json +4 -4
  23. package/examples/bridge/vue-host/package.json +3 -3
  24. package/examples/bridge/vue-remote/package-lock.json +4 -4
  25. package/examples/bridge/vue-remote/package.json +1 -1
  26. package/examples/react/host/package-lock.json +4 -4
  27. package/examples/react/host/package.json +1 -1
  28. package/examples/react/remote/package-lock.json +4 -4
  29. package/examples/react/remote/package.json +1 -1
  30. package/examples/vue/host/package-lock.json +4 -4
  31. package/examples/vue/host/package.json +1 -1
  32. package/examples/vue/remote/package-lock.json +4 -4
  33. package/examples/vue/remote/package.json +1 -1
  34. package/package.json +6 -4
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import fs from "fs";
8
8
  import path from "path";
9
9
 
10
10
  // src/version.ts
11
- var RUNTIME_VERSION = "5.7.0";
11
+ var RUNTIME_VERSION = "5.8.0";
12
12
 
13
13
  // src/dev-cors.ts
14
14
  function normalizeDevCorsOrigins(input) {
@@ -465,7 +465,7 @@ function normalizeOptions(options, root, command) {
465
465
  runtime: options.runtime,
466
466
  runtimeChunk: options.runtimeChunk,
467
467
  manifest: options.manifest === void 0 ? true : !!options.manifest,
468
- runtimePlugins: options.runtimePlugins ?? [],
468
+ runtimePlugins: (options.runtimePlugins ?? []).map((id) => id.startsWith(".") ? path.resolve(root, id) : id),
469
469
  dts: options.dts === void 0 ? true : options.dts,
470
470
  root,
471
471
  pluginVersion: RUNTIME_VERSION,
@@ -857,6 +857,28 @@ function genInitModule(options, command) {
857
857
  return `${lines.join("\n")}
858
858
  `;
859
859
  }
860
+ function prepareSharesCode(options) {
861
+ const requests = options.shared.map((item) => ({
862
+ name: item.shareKey,
863
+ opts: {
864
+ shareScope: item.shareScope,
865
+ shareKey: item.shareKey,
866
+ requiredVersion: item.requiredVersion === false ? void 0 : item.requiredVersion,
867
+ singleton: item.singleton,
868
+ strictVersion: item.strictVersion,
869
+ localVersion: item.version
870
+ }
871
+ }));
872
+ return `await __fulgurjs_prepare(${JSON.stringify(requests)});`;
873
+ }
874
+ function genAsyncBootstrap(options, entry) {
875
+ return [
876
+ genInitModule(options, "build"),
877
+ 'import { prepareShares as __fulgurjs_prepare } from "virtual:fulgurjs-runtime";',
878
+ prepareSharesCode(options),
879
+ `await import(${JSON.stringify(entry)});`
880
+ ].join("\n");
881
+ }
860
882
  function manifestUrlFor(r, command) {
861
883
  const entry = command === "serve" ? r.devEntry : r.prodEntry;
862
884
  if (!entry) return null;
@@ -966,6 +988,7 @@ function genDevRemoteEntry(options, base) {
966
988
  const b = base.endsWith("/") ? base : `${base}/`;
967
989
  const remoteLines = registerRemotesLines(options, "serve");
968
990
  return `import ${JSON.stringify(`${b}@vite/client`)};
991
+ import { prepareShares as __fulgurjs_prepare } from ${JSON.stringify(`${b}@id/virtual:fulgurjs-runtime`)};
969
992
  import { name as _fulgurjs_name, exposes, provides } from ${JSON.stringify(`${b}@id/__x00__virtual:fulgurjs-provides`)};
970
993
  ${remoteLines.length > 0 ? `import { registerRemotes } from ${JSON.stringify(`${b}@id/virtual:fulgurjs-runtime`)};
971
994
  ${remoteLines.join("\n")}` : ""}
@@ -989,6 +1012,7 @@ export async function get(moduleName) {
989
1012
  err.code = 'MFU-006';
990
1013
  throw err;
991
1014
  }
1015
+ ${prepareSharesCode(options)}
992
1016
  return loader();
993
1017
  }
994
1018
  `;
@@ -1043,6 +1067,7 @@ function genBuildRemoteEntry(options, exposeAbsPaths) {
1043
1067
  );
1044
1068
  const remoteLines = registerRemotesLines(options, "build");
1045
1069
  return [
1070
+ 'import { prepareShares as __fulgurjs_prepare } from "virtual:fulgurjs-runtime";',
1046
1071
  ...remoteLines.length > 0 ? [`import { registerRemotes } from "virtual:fulgurjs-runtime";`, ...remoteLines] : [],
1047
1072
  `const exposes = {`,
1048
1073
  ...exposes,
@@ -1069,6 +1094,7 @@ function genBuildRemoteEntry(options, exposeAbsPaths) {
1069
1094
  ` err.code = 'MFU-006';`,
1070
1095
  ` throw err;`,
1071
1096
  ` }`,
1097
+ ` ${prepareSharesCode(options)}`,
1072
1098
  ` return loader();`,
1073
1099
  `}`,
1074
1100
  ""
@@ -2611,7 +2637,7 @@ function repairRolldownAsyncMarks(code, sourceName) {
2611
2637
  }
2612
2638
 
2613
2639
  // src/runtime-code.gen.ts
2614
- var runtime_code_gen_default = 'var be=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function j(c){let u=be.exec(String(c).trim());return u?{major:Number(u[1]),minor:Number(u[2]??0),patch:Number(u[3]??0),pre:u[4]?u[4].split("."):[]}:null}function ve(c,u){if(c.length===0&&u.length===0)return 0;if(c.length===0)return 1;if(u.length===0)return-1;let f=Math.max(c.length,u.length);for(let s=0;s<f;s++){let g=c[s],y=u[s];if(g===void 0)return-1;if(y===void 0)return 1;let R=/^\\d+$/.test(g),v=/^\\d+$/.test(y);if(R&&v){let k=Number(g)-Number(y);if(k!==0)return k}else{if(R!==v)return R?-1:1;if(g!==y)return g<y?-1:1}}return 0}function T(c,u){let f=j(c),s=j(u);return!f||!s?c<u?-1:c>u?1:0:f.major!==s.major?f.major-s.major:f.minor!==s.minor?f.minor-s.minor:f.patch!==s.patch?f.patch-s.patch:ve(f.pre,s.pre)}var $e=/^[a-z]+[+:-]/i;function N(c,u){if(u===!1||u==null||u==="")return!0;let f=String(u).trim();return!f||f==="*"||f==="latest"||$e.test(f)?!0:f.split("||").some(s=>Pe(c,s.trim()))}function Pe(c,u){if(!u||u==="*")return!j(c)?.pre.length;let f=u.split(/\\s+-\\s+/);if(f.length===2){let y=f[0].trim(),R=f[1].trim();return!(!N(c,`>=${y}`)||!N(c,`<=${R}`))}let s=j(c);if(!s)return!1;let g=_e(u);if(g===null)return!0;for(let y of g)if(!Ie(s,c,y))return!1;return!(s.pre.length>0&&!g.some(y=>y.ver.pre.length>0)&&!g.some(R=>R.ver.major===s.major&&R.ver.minor===s.minor&&R.ver.patch===s.patch))}function _e(c){let u=[],f=c.trim().split(/\\s+/).filter(Boolean);if(f.length===0)return null;for(let s of f){let g=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(s);if(!g)return null;let y=g[1],R=g[2],v=Le(y,R);if(v===null)return null;u.push(...v)}return u}function Le(c,u){let f=Oe(u);if(!f)return null;let{ver:s,partial:g}=f;switch(c){case"^":{let y=Me(s);return y?[{op:">=",ver:s},{op:"<",ver:y}]:null}case"~":{let y=g>=2?{major:s.major,minor:s.minor+1,patch:0,pre:[]}:{major:s.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:s},{op:"<",ver:y}]}case">=":return[{op:">=",ver:s}];case">":return g===1?[{op:">=",ver:{major:s.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:{major:s.major,minor:s.minor+1,patch:0,pre:[]}}]:[{op:">",ver:s}];case"<":return g===1?[{op:"<",ver:{major:s.major,minor:0,patch:0,pre:[]}}]:g===2?[{op:"<",ver:{major:s.major,minor:s.minor,patch:0,pre:[]}}]:[{op:"<",ver:s}];case"<=":return[{op:"<=",ver:s}];case"=":case void 0:return g===1?[{op:">=",ver:s},{op:"<",ver:{major:s.major+1,minor:0,patch:0,pre:[]}}]:g===2?[{op:">=",ver:s},{op:"<",ver:{major:s.major,minor:s.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:s}];default:return null}}function Me(c){return c.major>0?{major:c.major+1,minor:0,patch:0,pre:[]}:c.minor>0?{major:0,minor:c.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:c.patch+1,pre:[]}}function Oe(c){let u=c.replace(/^v/,"").trim();if(!u||u==="*"||u==="x"||u==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let f=u.split("."),s=[],g=0;for(let v of f.slice(0,3))if(/^\\d+$/.test(v))s.push(Number(v)),g++;else{if(v==="x"||v==="X"||v==="*")break;break}let y=u.split("-"),R=y.length>1?y.slice(1).join("-").split("+")[0].split("."):[];return g===0&&R.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:s[0]??0,minor:s[1]??0,patch:s[2]??0,pre:R},partial:g}}function ke(c,u){switch(u){case">=":return c>=0;case">":return c>0;case"<":return c<0;case"<=":return c<=0;case"=":return c===0}}function Ie(c,u,f){let s=`${c.major}.${c.minor}.${c.patch}`+(c.pre.length?`-${c.pre.join(".")}`:"");if(f.upper)return!(!(T(s,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:""))>=0)||!(T(s,`${f.upper.major}.${f.upper.minor}.${f.upper.patch}`)<0));let g=T(s,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:"")),y=ke(g,f.op);return f.ver.pre.length>0&&c.pre.length===0&&(f.op===">"||f.op==="<")?!1:y}var S=class extends Error{code;details;constructor(u,f,s,g){super(`[fulgurjs:${u}] ${f}`,g),this.name="FgError",this.code=u,this.details=s}},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 re="5.7.0";var Te="__fulgurjsSetup",xe="__FULGURJS_APP_CONFIG__",q=15e3,ne=2,Ae=5,je=3e4,Ne=4e3,Ue=.2;function Ce(){let c=Object.create(null),u=new Map,f=[],s=new Set,g=new Map,y=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),R=new Map,v=new Map,k=new WeakMap,U=new WeakMap,M={},oe=()=>{for(let e of f)try{e.init?.(M)}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)}},C=new Map,F,ie=e=>{let r=C.get(e);return r||C.set(e,r={}),r},H=()=>globalThis[xe]??{};async function G(e,r,n,o){let i=l=>l instanceof S?l:new S(E.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${o} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${String(l?.message??l)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${o} \\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:o},{cause:l});F=e;let t;try{t=r(n)}catch(l){throw i(l)}finally{F=void 0}try{await t}catch(l){throw i(l)}}async function se(e,r,n,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await K(`${e.name}/${n}`)}catch{}let i=await r.get(n),t=i?.default;if(typeof t!="function")throw new S(E.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${i==null?String(i):typeof t}\\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:n});if(i.onSession!==void 0&&typeof i.onSession!="function")throw new S(E.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AonSession \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof i.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:n});o.setupExports=i,await G(e.name,t,{appContext:H(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(i){throw e.debug.setup="failed",o.setupExports=void 0,i}}async function ae(e,r,n){let o=H(),i=o?.sessionKey;if(typeof i!="string"||i==="")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 ${i===void 0?"\\u7F3A\\u5931":JSON.stringify(i)}\\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===i)return r.sessionPromise;r.controller?.abort();let t=new AbortController;r.controller=t,r.sessionKey=i;let l=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),d=(async()=>{await l,!t.signal.aborted&&await G(e.name,n,{appContext:o,sessionKey:i,signal:t.signal},"onSession")})();return r.sessionPromise=d,d.catch(()=>{r.sessionKey===i&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),d}async function ce(e,r){let n=r?.[Te];if(typeof n!="string"||n==="")return;let o=ie(e.name);o.setupPromise||(o.setupPromise=se(e,r,n,o).catch(t=>{throw o.setupPromise=void 0,t})),await o.setupPromise;let i=o.setupExports?.onSession;typeof i=="function"&&await ae(e,o,i)}function le(){for(let e of C.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let I=e=>c[e]??=Object.create(null);function $(e){try{M.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function ue(e="default"){return I(e),c}function B(e,r,n,o,i={}){let t=I(e||"default"),l=Object.hasOwn(t,r)?t[r]:void 0,d=l&&typeof l=="object"?l:void 0;d||(d=Object.create(null),t[r]=d),!(Object.hasOwn(d,n)&&d[n])&&(d[n]={version:n,get:o,from:i.from??"unknown",eager:!!i.eager,loaded:!!i.loaded})}function fe(e){let r=(n,o,i)=>{if(n===void 0)return;if(!(typeof n=="number"&&(i?Number.isInteger(n)&&n>=0&&n<=10:Number.isFinite(n)&&n>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${o} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(n)}\\uFF0C\\u5E94\\u4E3A${i?" 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 J(e){for(let r of e){fe(r);let n=u.get(r.name);u.set(r.name,{timeout:q,retries:ne,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??Ae,breakerResetMs:r.breaker?.resetMs??n?.breakerResetMs??je,state:n?.state??"idle",breakerState:n?.breakerState??{fails:0,openUntil:0},entryInflight:n?.entryInflight??new Map,entryFailCounts:n?.entryFailCounts??new Map,debug:n?.debug??{entry:r.entry,status:"idle",setup:"none"}})}}function de(e){J([e])}function me(e){f.push(...e),g.clear(),oe()}function x(e,r,n=!1){let o=r.shareScope||"default",i=r.shareKey||e,l=I(o)[i]||{},d=Object.keys(l).filter(p=>!n||r.singleton||l[p].value!==void 0);if(n&&d.length===0)return;let a=r.requiredVersion,m=d.filter(p=>a===void 0||a===!1||N(p,a)),w;if(r.singleton&&d.length>0){let p=d.filter(h=>l[h].loaded);if(w=[...p.length?p:d].sort(T).pop(),!m.includes(w)){let h=l[w],L=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${i}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u5E94\\u7528\\u8981\\u6C42 ${a??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${d.join("\\u3001")}\\uFF1B\\u4E3A\\u4FDD\\u8BC1\\u5168\\u9875\\u53EA\\u4F7F\\u7528\\u4E00\\u4E2A\\u5B9E\\u4F8B\\uFF0C\\u6700\\u7EC8\\u590D\\u7528 ${h.from} \\u63D0\\u4F9B\\u7684 ${w}\\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 O=new S(E.SHARE_STRICT_VERSION,L,{shareKey:i,requiredVersion:a});throw $({remote:h.from,error:O}),O}let P=`${o}|${i}|${a??"*"}|${w}|${d.join(",")}`;s.has(P)||(s.add(P),console.warn(`[fulgurjs:MFU-010] ${L}`))}}else if(w=[...m].sort(T).pop(),!w){if(r.strictVersion){let p=new S(E.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${o}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${i}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${a}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${d.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:i,error:p}),p}return}return l[w]}function W(e,r,n){let o=r.localVersion;if(!o||n===void 0)return;let i=r.shareScope||"default",t=r.shareKey||e,l=I(i),d=Object.hasOwn(l,t)?l[t]:void 0;if(d&&Object.keys(d).length>0){try{let m=x(e,r);m&&m.value===void 0&&(m.version===o?(m.value=n,m.loaded=!0):r.singleton&&(m.value=n,m.loaded=!0,console.warn(`[fulgurjs:MFU-010] \\u5171\\u4EAB\\u5355\\u4F8B "${t}" \\u7684\\u9996\\u6B21\\u6D88\\u8D39\\u8005\\u4EE5\\u672C\\u5730\\u7248\\u672C ${o} \\u63A5\\u7BA1\\u4E86 ${m.from} \\u58F0\\u660E\\u7684 ${m.version} \\u69FD\\u4F4D\\uFF08\\u8BE5\\u7248\\u672C\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\u3002`)))}catch{}return}B(i,t,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let a=l[t]?.[o];a&&(a.value=n)}async function pe(e,r={}){let n=r.shareScope||"default",o=r.shareKey||e,i=I(n)[o]||{},t=x(e,r);if(!t){if(r.fallback){let m=await r.fallback();return W(e,r,m),m}let a=new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${o}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${n}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${r.requiredVersion??"\\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:o,requiredVersion:r.requiredVersion});throw $({remote:o,error:a}),a}if(M.resolveShare){let a=await M.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:t,available:Object.values(i)});a&&(t=a)}if(t.value!==void 0)return g.set(y(e,r),t),t.value;if(t.loaded=!0,!t.pendingGet)try{t.pendingGet=t.get()}catch(a){t.pendingGet=Promise.reject(a)}let l=t.pendingGet,d;try{d=await l}catch(a){if(t.value!==void 0)return g.set(y(e,r),t),t.value;throw t.loaded=!1,a}finally{t.pendingGet===l&&(t.pendingGet=void 0)}return t.value===void 0&&(t.value=d),g.set(y(e,r),t),t.value}function ge(e,r={}){return M.resolveShare?g.get(y(e,r))?.value:x(e,r,!0)?.value}function he(e,r,n,o){W(e,{...r,localVersion:n},o)}function ye(e,r){let n=r.shareScope||"default",o=r.shareKey||e;if(M.resolveShare){let t=y(e,r),l=g.get(t);if(l&&l.value!==void 0)return{kind:"ready",value:l.value};let d=M.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:x(e,r),available:Object.values(I(n)[o]||{})});if(d&&typeof d.then=="function")throw new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u5BF9\\u5171\\u4EAB "${o}" \\u8FD4\\u56DE\\u4E86 Promise\\uFF0C\\u4F46\\u8BE5\\u5171\\u4EAB\\u6B63\\u88AB\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u6D88\\u8D39\\uFF08Vite 8 \\u540C\\u6B65\\u534F\\u5546\\u95E8\\u9762\\uFF09\\u3002\n\\u539F\\u56E0\\uFF1A\\u6A21\\u5757\\u6C42\\u503C\\u671F\\u65E0\\u6CD5\\u7B49\\u5F85\\u5F02\\u6B65\\u51B3\\u7B56\\uFF1B\\u9759\\u6001\\u5BFC\\u5165\\u4E0D\\u80FD\\u9759\\u9ED8\\u5FFD\\u7565 hook \\u51B3\\u7B56\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9 resolveShare \\u5BF9\\u8BE5\\u952E\\u540C\\u6B65\\u8FD4\\u56DE picked\\uFF08\\u4ECE available \\u4E2D\\u9009\\u62E9\\uFF09\\uFF1B\\u6216\\u8BA9\\u9996\\u6B21\\u6D88\\u8D39\\u5148\\u7ECF\\u4E00\\u6B21\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u534F\\u5546\\uFF08\\u6210\\u529F\\u5FEB\\u7167\\u4F1A\\u88AB\\u9759\\u6001\\u5BFC\\u5165\\u590D\\u7528\\uFF09\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let a=d;if(a){if(a.value!==void 0)return g.set(y(e,r),a),{kind:"ready",value:a.value};if(a.version!==void 0&&a.version===r.localVersion)return{kind:"local"};throw new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u4E3A\\u5171\\u4EAB "${o}" \\u9009\\u62E9\\u4E86 ${a.version??"\\u672A\\u5C31\\u7EEA\\u6761\\u76EE"}\\uFF08\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\uFF0C\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u65E0\\u6CD5\\u7B49\\u5F85\\u5176\\u5B9E\\u4F8B\\u5C31\\u7EEA\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9 hook \\u4F18\\u5148\\u9009\\u62E9\\u5DF2\\u5C31\\u7EEA\\u5B9E\\u4F8B\\u6216\\u672C\\u5E94\\u7528\\u672C\\u5730\\u7248\\u672C\\uFF08${r.localVersion??"\\u672A\\u58F0\\u660E"}\\uFF09\\uFF0C\\u6216\\u5148\\u7ECF\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u534F\\u5546\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0})}}let i=x(e,r);if(!i)return{kind:"local"};if(i.value!==void 0)return{kind:"ready",value:i.value};if(i.version!==void 0&&i.version===r.localVersion)return{kind:"local"};if(r.singleton){if(r.strictVersion)throw new S(E.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${o}" \\u9009\\u4E2D\\u4E86 ${i.from} \\u63D0\\u4F9B\\u7684 ${i.version}\\uFF08\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\uFF0C\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u65E0\\u6CD5\\u7B49\\u5F85\\u5176\\u5B9E\\u4F8B\\u5C31\\u7EEA\\u3002\n\\u539F\\u56E0\\uFF1A\\u5355\\u4F8B\\u5FC5\\u987B\\u5168\\u9875\\u4E00\\u81F4\\uFF0C\\u4E0D\\u80FD\\u9759\\u9ED8\\u6539\\u7528\\u672C\\u5730\\u526F\\u672C\\u5206\\u88C2\\u5B9E\\u4F8B\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9\\u8BE5\\u5171\\u4EAB\\u7684\\u9996\\u6B21\\u6D88\\u8D39\\u5148\\u7ECF\\u4E00\\u6B21\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u52A0\\u8F7D\\uFF0C\\u6216\\u5C06\\u672C\\u5E94\\u7528\\u7248\\u672C\\u4E0E\\u4F5C\\u7528\\u57DF\\u63D0\\u4F9B\\u7248\\u672C\\u5BF9\\u9F50\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let t=`${n}|${o}|${i.version}|${r.localVersion}`;return s.has(t)||(s.add(t),console.warn(`[fulgurjs:MFU-010] \\u5171\\u4EAB\\u5355\\u4F8B "${o}"\\uFF1A\\u4F5C\\u7528\\u57DF\\u4E2D ${i.from} \\u63D0\\u4F9B\\u7684 ${i.version} \\u5C1A\\u672A\\u52A0\\u8F7D\\uFF0C\\u9996\\u4E2A\\u6D88\\u8D39\\u8005\\u4EE5\\u672C\\u5730\\u7248\\u672C ${r.localVersion??""} \\u63A5\\u7BA1\\uFF08\\u540E\\u7EED\\u6D88\\u8D39\\u8005\\u6309\\u5DF2\\u52A0\\u8F7D\\u4F18\\u5148\\u6536\\u655B\\u5230\\u8BE5\\u5B9E\\u4F8B\\uFF09\\u3002`)),{kind:"local"}}return console.warn(`[fulgurjs] \\u5171\\u4EAB "${o}" \\u7684\\u540C\\u6B65\\u9759\\u6001\\u6D88\\u8D39\\u4F7F\\u7528\\u672C\\u5730\\u526F\\u672C ${r.localVersion??""}\\uFF08\\u4F5C\\u7528\\u57DF\\u4E2D\\u6EE1\\u8DB3\\u8981\\u6C42\\u7684\\u53E6\\u4E00\\u7248\\u672C ${i.version} \\u5C1A\\u672A\\u5C31\\u7EEA\\uFF0C\\u65E0\\u6CD5\\u540C\\u6B65\\u7B49\\u5F85\\uFF09\\uFF1B\\u975E\\u5355\\u4F8B\\u5141\\u8BB8\\u591A\\u7248\\u672C\\u5171\\u5B58\\u3002`),{kind:"local"}}function X(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 z(e,r,n){return new Promise((o,i)=>{let t=setTimeout(()=>i(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${n}`)),r);e.then(l=>{clearTimeout(t),o(l)},l=>{clearTimeout(t),i(l)})})}let Se=e=>new Promise(r=>setTimeout(r,e)),Y=new Set;function V(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 n=`\\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){let o=`${r.name}\\u2194${e.name}`;Y.has(o)||(Y.add(o),console.warn(`[fulgurjs] ${n} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`))}else throw Object.assign(new Error(n),{code:E.REMOTE_NAME_MISMATCH})}}async function Z(e,r){let n=r.entryFailCounts.get(e)??0,o=n>0?`${e}${e.includes("?")?"&":"?"}fulgurjs_retry=${n}`:e,i=r.entryInflight.get(e),t=i??import(o);return i||(r.entryInflight.set(e,t),t.catch(()=>{r.entryInflight.delete(e),r.entryFailCounts.set(e,(r.entryFailCounts.get(e)??0)+1)})),z(t,r.timeout??q,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${X(e)}`)}async function Q(e,r){let n=e.shareScope||"default";if(e.container){let t=U.get(e.container);if(t&&t!==n)throw new S(E.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${t}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let o=e.breakerState;if(o.openUntil>Date.now()){let t=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(o.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:t}),t}e.state="loading",e.debug.status="loading";let i=(async()=>{let t=[];if(e.promise)t.push(async()=>{let p=await z(e.promise(),e.timeout??q,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),h=typeof p=="string"?await Z(p,e):p;return V(h,e),h});else for(let p of[e.entry,...e.fallback??[]])t.push(async()=>{let h=await Z(p,e);return V(h,e),h});let l,d,a=!1,m=r?.retries??e.retries??ne;for(let p of t){for(let h=0;h<=m;h++){let L=performance.now();try{l=await p(),e.lastLoadMs=Math.round(performance.now()-L),e.debug.lastLoadMs=e.lastLoadMs,a=!0;break}catch(P){if(d=P,P?.code)throw P;h<m&&await Se(Math.min(Ne,200*2**h)*(1-Ue*(1-2*Math.random())))}}if(a)break}if(!a||!l){let p=X(e.entry),h=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${p}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),h.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),h.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(h.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${p}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),h.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 ${p} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${String(d?.message??d)}\n\\u4FEE\\u6CD5\\uFF1A\n${h.join(`\n`)}`,{remote:e.name})}V(l,e);let w=U.get(l);if(w&&w!==n)throw new S(E.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${w}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof l.init=="function"&&await l.init(c),U.set(l,n),e.container=l,e.state="loaded",e.debug.status="loaded",o.fails=0,l})();e.containerPromise=i;try{return await i}catch(t){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(t?.message??t),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),t instanceof S)throw $({remote:e.name,error:t}),t;if(t?.code)throw $({remote:e.name,error:t}),t;let l=new S(E.REMOTE_LOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(t?.message??t)}\\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:l}),l}}function D(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:ee(e.slice(r+1))}}function ee(e){return e?e.startsWith(".")?e:`./${e}`:""}async function Ee(e,r){let{remote:n,module:o}=D(e);if(o&&F===n)throw new S(E.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\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:n});try{M.beforeLoadRemote?.({remote:n,module:o})}catch(a){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",a)}let i=u.get(n);if(!i)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:n});let t;try{let a=o&&i.manifestUrl?K(e):Promise.resolve();[t]=await Promise.all([Q(i,{retries:r?.retries}),a])}catch(a){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`,a),$({remote:n,error:a}),await r.fallbackModule();throw a}if(!o)return t;await ce(i,t);let l=`${n}@${i.shareScope||"default"}#${o}`;R.has(l)||R.set(l,t.get(o).catch(a=>{throw R.delete(l),a instanceof S||a?.code?a:new S(E.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${o}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(a?.message??a)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:o})}));let d;try{d=await R.get(l)}catch(a){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`,a),$({remote:n,error:a}),await r.fallbackModule();throw a}try{M.afterLoadRemote?.({remote:n,module:o,module_ns:d})}catch(a){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",a)}if(d&&typeof d=="object"&&Object.keys(d).length===0){let a=new S(E.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6A21\\u5757 "${o}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:n,module:o});$({remote:n,error:a}),console.error(a.message)}return d}function we(e){let r=u.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 Q(r)}async function K(e,r={}){let{remote:n,module:o}=D(e),i=u.get(n);if(!i)throw new S(E.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:n});let t=r.mode??"preload",l=(m,w)=>{if(m.sheet)return Promise.resolve();let p=k.get(m);if(p)return p;let h=new Promise(L=>{let P=()=>{m.removeEventListener("load",P),m.removeEventListener("error",O),L()},O=()=>{$({remote:n,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${w}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),P()};m.addEventListener("load",P,{once:!0}),m.addEventListener("error",O,{once:!0}),m.sheet&&P()});return k.set(m,h),h},d=(m,w)=>{if(typeof document>"u")return Promise.resolve();let p=document.querySelector(`link[href="${m}"]`);if(p)return w==="style"&&t==="preload"?k.get(p)??Promise.resolve():Promise.resolve();let h=document.createElement("link");h.rel=w==="style"?"stylesheet":"modulepreload",h.href=m,t==="prefetch"&&(h.fetchPriority="low");let L=w==="style"?l(h,m):Promise.resolve();return document.head.appendChild(h),w==="style"&&t==="preload"?L:Promise.resolve()},a=m=>{let w=typeof document<"u"?document.baseURI:void 0,p=new URL(i.entry,w||"http://fulgurjs.invalid/");return!p.pathname.endsWith("/")&&!p.pathname.split("/").pop().includes(".")&&(p.pathname+="/"),new URL(m,p).href};try{if(i.manifestUrl){let m=v.get(i.manifestUrl);m||(m=fetch(i.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(p=>p.ok?p.json():void 0),v.set(i.manifestUrl,m),m.then(p=>{p||v.delete(i.manifestUrl)},()=>v.delete(i.manifestUrl)));let w=await m;if(w){let p=w.schemaVersion;if(typeof p=="number"&&(!Number.isInteger(p)||p>1)){$({remote:n,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(p)}\\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:n})}),await d(i.entry,"modulepreload");return}await d(i.entry,"modulepreload");let h=w.exposes,L=Array.isArray(h)?h.filter(_=>_&&typeof _=="object").map(_=>[String(_.name??""),_]):h&&typeof h=="object"?Object.entries(h):[],P=o?L.filter(([_,A])=>ee(String(A?.name??_))===o):L,O=[];for(let[,_]of P)if(typeof _?.file=="string"&&await d(a(_.file),"modulepreload"),Array.isArray(_?.css))for(let A of _.css){if(typeof A!="string")continue;let Re=d(a(A),"style");t==="preload"&&O.push(Re)}await Promise.all(O);return}}await d(i.entry,"modulepreload")}catch(m){$({remote:n,error:new S(E.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(m?.message??m)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:n})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=c,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,n]of u)e[r]={...n.debug,entry:n.entry};return e},errors:[]}),{shareScopeMap:c,initSharing:ue,registerShare:B,registerRemotes:J,registerRemote:de,registerPlugins:me,loadShare:pe,loadShareSync:ye,getLoadedShare:ge,pinLoadedShare:he,loadRemote:Ee,getContainer:we,preloadRemote:K,parseSpec:D,clearSessionState:le}}var te=globalThis,b=te.__FULGURJS_RUNTIME__??Ce();te.__FULGURJS_RUNTIME__=b;try{Object.freeze(b)}catch{}var Be=re;function Je(){return b}var We=b.initSharing,Xe=b.registerShare,ze=b.registerRemotes,Ye=b.registerRemote,Ze=b.registerPlugins,Qe=b.loadShare,er=b.getLoadedShare,rr=b.loadShareSync,nr=b.pinLoadedShare,tr=b.loadRemote,or=b.getContainer,ir=b.preloadRemote,sr=b.parseSpec,ar=b.clearSessionState,cr=b.shareScopeMap;function lr(c){if(c&&typeof c=="object"&&"default"in c){let u=c.default;return u!==void 0?u:c}return c}var ur=b;export{ar as clearSessionState,ur as default,or as getContainer,er as getLoadedShare,Je as getRuntime,We as initSharing,tr as loadRemote,Qe as loadShare,rr as loadShareSync,sr as parseSpec,nr as pinLoadedShare,ir as preloadRemote,Ze as registerPlugins,Ye as registerRemote,ze as registerRemotes,Xe as registerShare,b as runtime,cr as shareScopeMap,lr as unwrapDefault,Be as version};\n';
2640
+ var runtime_code_gen_default = 'var ve=/^v?(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?(?:-((?:[0-9A-Za-z-]+)(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z.-]+)?$/;function N(c){let u=ve.exec(String(c).trim());return u?{major:Number(u[1]),minor:Number(u[2]??0),patch:Number(u[3]??0),pre:u[4]?u[4].split("."):[]}:null}function $e(c,u){if(c.length===0&&u.length===0)return 0;if(c.length===0)return 1;if(u.length===0)return-1;let f=Math.max(c.length,u.length);for(let a=0;a<f;a++){let p=c[a],S=u[a];if(p===void 0)return-1;if(S===void 0)return 1;let b=/^\\d+$/.test(p),v=/^\\d+$/.test(S);if(b&&v){let I=Number(p)-Number(S);if(I!==0)return I}else{if(b!==v)return b?-1:1;if(p!==S)return p<S?-1:1}}return 0}function x(c,u){let f=N(c),a=N(u);return!f||!a?c<u?-1:c>u?1:0:f.major!==a.major?f.major-a.major:f.minor!==a.minor?f.minor-a.minor:f.patch!==a.patch?f.patch-a.patch:$e(f.pre,a.pre)}var Pe=/^[a-z]+[+:-]/i;function A(c,u){if(u===!1||u==null||u==="")return!0;let f=String(u).trim();return!f||f==="*"||f==="latest"||Pe.test(f)?!0:f.split("||").some(a=>_e(c,a.trim()))}function _e(c,u){if(!u||u==="*")return!N(c)?.pre.length;let f=u.split(/\\s+-\\s+/);if(f.length===2){let S=f[0].trim(),b=f[1].trim();return!(!A(c,`>=${S}`)||!A(c,`<=${b}`))}let a=N(c);if(!a)return!1;let p=Le(u);if(p===null)return!0;for(let S of p)if(!Te(a,c,S))return!1;return!(a.pre.length>0&&!p.some(S=>S.ver.pre.length>0)&&!p.some(b=>b.ver.major===a.major&&b.ver.minor===a.minor&&b.ver.patch===a.patch))}function Le(c){let u=[],f=c.trim().split(/\\s+/).filter(Boolean);if(f.length===0)return null;for(let a of f){let p=/^(>=|<=|>|<|=|\\^|~)?(.*)$/.exec(a);if(!p)return null;let S=p[1],b=p[2],v=Oe(S,b);if(v===null)return null;u.push(...v)}return u}function Oe(c,u){let f=Me(u);if(!f)return null;let{ver:a,partial:p}=f;switch(c){case"^":{let S=ke(a);return S?[{op:">=",ver:a},{op:"<",ver:S}]:null}case"~":{let S=p>=2?{major:a.major,minor:a.minor+1,patch:0,pre:[]}:{major:a.major+1,minor:0,patch:0,pre:[]};return[{op:">=",ver:a},{op:"<",ver:S}]}case">=":return[{op:">=",ver:a}];case">":return p===1?[{op:">=",ver:{major:a.major+1,minor:0,patch:0,pre:[]}}]:p===2?[{op:">=",ver:{major:a.major,minor:a.minor+1,patch:0,pre:[]}}]:[{op:">",ver:a}];case"<":return p===1?[{op:"<",ver:{major:a.major,minor:0,patch:0,pre:[]}}]:p===2?[{op:"<",ver:{major:a.major,minor:a.minor,patch:0,pre:[]}}]:[{op:"<",ver:a}];case"<=":return[{op:"<=",ver:a}];case"=":case void 0:return p===1?[{op:">=",ver:a},{op:"<",ver:{major:a.major+1,minor:0,patch:0,pre:[]}}]:p===2?[{op:">=",ver:a},{op:"<",ver:{major:a.major,minor:a.minor+1,patch:0,pre:[]}}]:[{op:"=",ver:a}];default:return null}}function ke(c){return c.major>0?{major:c.major+1,minor:0,patch:0,pre:[]}:c.minor>0?{major:0,minor:c.minor+1,patch:0,pre:[]}:{major:0,minor:0,patch:c.patch+1,pre:[]}}function Me(c){let u=c.replace(/^v/,"").trim();if(!u||u==="*"||u==="x"||u==="X")return{ver:{major:0,minor:0,patch:0,pre:[]},partial:0};let f=u.split("."),a=[],p=0;for(let v of f.slice(0,3))if(/^\\d+$/.test(v))a.push(Number(v)),p++;else{if(v==="x"||v==="X"||v==="*")break;break}let S=u.split("-"),b=S.length>1?S.slice(1).join("-").split("+")[0].split("."):[];return p===0&&b.length===0?{ver:{major:0,minor:0,patch:0,pre:[]},partial:0}:{ver:{major:a[0]??0,minor:a[1]??0,patch:a[2]??0,pre:b},partial:p}}function Ie(c,u){switch(u){case">=":return c>=0;case">":return c>0;case"<":return c<0;case"<=":return c<=0;case"=":return c===0}}function Te(c,u,f){let a=`${c.major}.${c.minor}.${c.patch}`+(c.pre.length?`-${c.pre.join(".")}`:"");if(f.upper)return!(!(x(a,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:""))>=0)||!(x(a,`${f.upper.major}.${f.upper.minor}.${f.upper.patch}`)<0));let p=x(a,`${f.ver.major}.${f.ver.minor}.${f.ver.patch}`+(f.ver.pre.length?`-${f.ver.pre.join(".")}`:"")),S=Ie(p,f.op);return f.ver.pre.length>0&&c.pre.length===0&&(f.op===">"||f.op==="<")?!1:S}var E=class extends Error{code;details;constructor(u,f,a,p){super(`[fulgurjs:${u}] ${f}`,p),this.name="FgError",this.code=u,this.details=a}},w={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 ne="5.8.0";var xe="__fulgurjsSetup",Ae="__FULGURJS_APP_CONFIG__",H=15e3,te=2,je=5,Ne=3e4,Ue=4e3,Ve=.2;function Ce(){let c=Object.create(null),u=new Map,f=[],a=new Set,p=new Map,S=(e,r)=>JSON.stringify([r.shareScope||"default",r.shareKey||e,r.requiredVersion??null,!!r.singleton,!!r.strictVersion]),b=new Map,v=new Map,I=new WeakMap,U=new WeakMap,_={},se=()=>{for(let e of f)try{e.init?.(_)}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)}},V=new Map,C,ie=e=>{let r=V.get(e);return r||V.set(e,r={}),r},G=()=>globalThis[Ae]??{};async function B(e,r,n,o){let t=l=>l instanceof E?l:new E(w.SETUP_RUN_FAILED,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}" \\u7684 ${o} \\u521D\\u59CB\\u5316\\u5931\\u8D25\\u3002\n\\u539F\\u56E0\\uFF1A${String(l?.message??l)}\n\\u4FEE\\u6CD5\\uFF1A\\u68C0\\u67E5\\u5E76\\u4FEE\\u590D\\u8BE5 ${o} \\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:o},{cause:l});C=e;let s;try{s=r(n)}catch(l){throw t(l)}finally{C=void 0}try{await s}catch(l){throw t(l)}}async function ae(e,r,n,o){e.debug.setup="pending";try{if(e.manifestUrl)try{await q(`${e.name}/${n}`)}catch{}let t=await r.get(n),s=t?.default;if(typeof s!="function")throw new E(w.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1A\\u9ED8\\u8BA4\\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${t==null?String(t):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:n});if(t.onSession!==void 0&&typeof t.onSession!="function")throw new E(w.SETUP_INVALID_EXPORT,`\\u73B0\\u8C61\\uFF1A\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 setup \\u6A21\\u5757 "${n}" \\u65E0\\u6CD5\\u521D\\u59CB\\u5316\\u3002\n\\u539F\\u56E0\\uFF1AonSession \\u5BFC\\u51FA\\u7C7B\\u578B\\u4E3A ${typeof t.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:n});o.setupExports=t,await B(e.name,s,{appContext:G(),signal:(o.controller??=new AbortController).signal},"setup"),e.debug.setup="ready"}catch(t){throw e.debug.setup="failed",o.setupExports=void 0,t}}async function ce(e,r,n){let o=G(),t=o?.sessionKey;if(typeof t!="string"||t==="")throw new E(w.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 ${t===void 0?"\\u7F3A\\u5931":JSON.stringify(t)}\\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===t)return r.sessionPromise;r.controller?.abort();let s=new AbortController;r.controller=s,r.sessionKey=t;let l=r.sessionPromise?r.sessionPromise.catch(()=>{}):Promise.resolve(),i=(async()=>{await l,!s.signal.aborted&&await B(e.name,n,{appContext:o,sessionKey:t,signal:s.signal},"onSession")})();return r.sessionPromise=i,i.catch(()=>{r.sessionKey===t&&(r.sessionKey=void 0,r.sessionPromise=void 0)}),i}async function le(e,r){let n=r?.[xe];if(typeof n!="string"||n==="")return;let o=ie(e.name);o.setupPromise||(o.setupPromise=ae(e,r,n,o).catch(s=>{throw o.setupPromise=void 0,s})),await o.setupPromise;let t=o.setupExports?.onSession;typeof t=="function"&&await ce(e,o,t)}function ue(){for(let e of V.values()){try{e.controller?.abort()}catch{}e.sessionKey=void 0,e.sessionPromise=void 0}}let M=e=>c[e]??=Object.create(null);function $(e){try{_.onRemoteError?.(e)}catch{}typeof window<"u"&&window.dispatchEvent(new CustomEvent("fulgurjs:error",{detail:e}))}function fe(e="default"){return M(e),c}function F(e,r,n,o,t={}){let s=M(e||"default"),l=Object.hasOwn(s,r)?s[r]:void 0,i=l&&typeof l=="object"?l:void 0;i||(i=Object.create(null),s[r]=i),!(Object.hasOwn(i,n)&&i[n])&&(i[n]={version:n,get:o,from:t.from??"unknown",eager:!!t.eager,loaded:!!t.loaded})}function de(e){let r=(n,o,t)=>{if(n===void 0)return;if(!(typeof n=="number"&&(t?Number.isInteger(n)&&n>=0&&n<=10:Number.isFinite(n)&&n>0)))throw new Error(`[fulgurjs] \\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}" \\u7684 ${o} \\u914D\\u7F6E\\u65E0\\u6548\\uFF1A\\u5F53\\u524D\\u4E3A ${String(n)}\\uFF0C\\u5E94\\u4E3A${t?" 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 J(e){for(let r of e){de(r);let n=u.get(r.name);u.set(r.name,{timeout:H,retries:te,...n,...r,breakerThreshold:r.breaker?.threshold??n?.breakerThreshold??je,breakerResetMs:r.breaker?.resetMs??n?.breakerResetMs??Ne,state:n?.state??"idle",breakerState:n?.breakerState??{fails:0,openUntil:0},entryInflight:n?.entryInflight??new Map,entryFailCounts:n?.entryFailCounts??new Map,debug:n?.debug??{entry:r.entry,status:"idle",setup:"none"}})}}function me(e){J([e])}function pe(e){f.push(...e),p.clear(),se()}function T(e,r,n=!1){let o=r.shareScope||"default",t=r.shareKey||e,l=M(o)[t]||{},i=Object.keys(l).filter(m=>!n||r.singleton||l[m].value!==void 0);if(n&&i.length===0)return;let d=r.requiredVersion,g=i.filter(m=>d===void 0||d===!1||A(m,d)),h;if(r.singleton&&i.length>0){let m=i.filter(y=>l[y].loaded);if(h=[...m.length?m:i].sort(x).pop(),!g.includes(h)){let y=l[h],O=`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u5355\\u4F8B "${t}" \\u7684\\u5B9E\\u9645\\u7248\\u672C\\u4E0D\\u6EE1\\u8DB3\\u5F53\\u524D\\u5E94\\u7528\\u8981\\u6C42\\u3002\n\\u539F\\u56E0\\uFF1A\\u5E94\\u7528\\u8981\\u6C42 ${d??"\\u4EFB\\u610F\\u7248\\u672C"}\\uFF0C\\u4F5C\\u7528\\u57DF\\u4E2D\\u6709 ${i.join("\\u3001")}\\uFF1B\\u4E3A\\u4FDD\\u8BC1\\u5168\\u9875\\u53EA\\u4F7F\\u7528\\u4E00\\u4E2A\\u5B9E\\u4F8B\\uFF0C\\u6700\\u7EC8\\u590D\\u7528 ${y.from} \\u63D0\\u4F9B\\u7684 ${h}\\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 k=new E(w.SHARE_STRICT_VERSION,O,{shareKey:t,requiredVersion:d});throw $({remote:y.from,error:k}),k}let P=`${o}|${t}|${d??"*"}|${h}|${i.join(",")}`;a.has(P)||(a.add(P),console.warn(`[fulgurjs:MFU-010] ${O}`))}}else if(h=[...g].sort(x).pop(),!h){if(r.strictVersion){let m=new E(w.SHARE_STRICT_VERSION,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${o}" \\u4E2D\\u627E\\u4E0D\\u5230\\u7B26\\u5408\\u8981\\u6C42\\u7684 "${t}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u8981\\u6C42\\u7248\\u672C ${d}\\uFF0C\\u5F53\\u524D\\u53EF\\u7528\\u7248\\u672C\\u4E3A ${i.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:t,error:m}),m}return}return l[h]}function W(e,r,n){let o=r.localVersion;if(!o||n===void 0)return;let t=r.shareScope||"default",s=r.shareKey||e,l=M(t),i=Object.hasOwn(l,s)?l[s]:void 0;if(i&&Object.keys(i).length>0){try{let g=T(e,r);if(g&&g.value===void 0){if(g.version===o)g.value=n,g.loaded=!0;else if(r.singleton&&!g.pendingGet){F(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let h=l[s][o];h.value=n,h.loaded=!0}}}catch{}return}F(t,s,o,()=>Promise.resolve(n),{from:"fulgurjs:local-fallback",loaded:!0});let d=l[s]?.[o];d&&(d.value=n)}async function X(e,r={}){let n=r.shareScope||"default",o=r.shareKey||e,t=M(n)[o]||{},s=S(e,r),l=_.resolveShare?p.get(s):void 0,i=l||T(e,r);if(!i){if(r.fallback){let m=await r.fallback();return W(e,r,m),m}let h=new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5171\\u4EAB\\u4F9D\\u8D56 "${o}"\\u3002\n\\u539F\\u56E0\\uFF1A\\u4F5C\\u7528\\u57DF "${n}" \\u4E2D\\u6CA1\\u6709\\u7B26\\u5408 ${r.requiredVersion??"\\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:o,requiredVersion:r.requiredVersion});throw $({remote:o,error:h}),h}if(_.resolveShare&&!l){let h=await _.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:i,available:Object.values(t)});h&&(i=h),p.set(s,i)}if(i.value!==void 0)return p.set(S(e,r),i),i.value;if(i.loaded=!0,!i.pendingGet)try{i.pendingGet=i.get()}catch(h){i.pendingGet=Promise.reject(h)}let d=i.pendingGet,g;try{g=await d}catch(h){if(i.value!==void 0)return p.set(S(e,r),i),i.value;throw i.loaded=!1,p.get(s)===i&&p.delete(s),h}finally{i.pendingGet===d&&(i.pendingGet=void 0)}return i.value===void 0&&(i.value=g),p.set(S(e,r),i),i.value}function ge(e,r={}){return _.resolveShare?p.get(S(e,r))?.value:T(e,r,!0)?.value}function he(e,r,n,o){W(e,{...r,localVersion:n},o)}function ye(e,r){let n=r.shareScope||"default",o=r.shareKey||e;if(_.resolveShare){let s=S(e,r),l=p.get(s);if(l&&l.value!==void 0)return{kind:"ready",value:l.value};let i=l||_.resolveShare({shareKey:o,shareScope:n,requiredVersion:r.requiredVersion,picked:T(e,r),available:Object.values(M(n)[o]||{})});if(i&&typeof i.then=="function")throw Promise.resolve(i).catch(()=>{}),new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u5BF9\\u5171\\u4EAB "${o}" \\u8FD4\\u56DE\\u4E86 Promise\\uFF0C\\u4F46\\u8BE5\\u5171\\u4EAB\\u6B63\\u88AB\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u6D88\\u8D39\\uFF08Vite 8 \\u540C\\u6B65\\u534F\\u5546\\u95E8\\u9762\\uFF09\\u3002\n\\u539F\\u56E0\\uFF1A\\u6A21\\u5757\\u6C42\\u503C\\u671F\\u65E0\\u6CD5\\u7B49\\u5F85\\u5F02\\u6B65\\u51B3\\u7B56\\uFF1B\\u9759\\u6001\\u5BFC\\u5165\\u4E0D\\u80FD\\u9759\\u9ED8\\u5FFD\\u7565 hook \\u51B3\\u7B56\\u3002\n\\u4FEE\\u6CD5\\uFF1AVite 8 HTML \\u5165\\u53E3\\u4F1A\\u5148\\u5B8C\\u6210\\u5F02\\u6B65\\u534F\\u5546\\uFF1B\\u5176\\u4ED6\\u5165\\u53E3\\u8BF7\\u5148\\u52A8\\u6001 loadShare \\u5EFA\\u7ACB\\u5FEB\\u7167\\uFF0C\\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u8BA9\\u8BE5\\u952E\\u540C\\u6B65\\u8FD4\\u56DE picked\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let d=i;if(d){if(d.value!==void 0)return p.set(S(e,r),d),{kind:"ready",value:d.value};if(d.version!==void 0&&d.version===r.localVersion)return{kind:"local"};throw new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1AresolveShare \\u4E3A "${o}" \\u9009\\u62E9\\u4E86\\u672A\\u5C31\\u7EEA\\u7684 ${d.version??"\\u6761\\u76EE"}\\u3002\n\\u539F\\u56E0\\uFF1A\\u540C\\u6B65\\u6D88\\u8D39\\u4E0D\\u80FD\\u7B49\\u5F85\\u52A0\\u8F7D\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u5148\\u52A8\\u6001 loadShare \\u518D\\u5BFC\\u5165\\u6D88\\u8D39\\u8005\\uFF0C\\u6216\\u9009\\u62E9\\u5DF2\\u5C31\\u7EEA\\u5B9E\\u4F8B/\\u672C\\u5730\\u7248\\u672C ${r.localVersion??"\\u672A\\u58F0\\u660E"}\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0})}}let t=T(e,r);if(!t)return{kind:"local"};if(t.value!==void 0)return{kind:"ready",value:t.value};if(t.version!==void 0&&t.version===r.localVersion)return{kind:"local"};if(r.singleton||r.strictVersion&&r.requiredVersion&&(!r.localVersion||!A(r.localVersion,r.requiredVersion))){if(r.strictVersion||t.pendingGet)throw new E(w.SHARE_NOT_AVAILABLE,`\\u73B0\\u8C61\\uFF1A\\u5171\\u4EAB "${o}" \\u9009\\u4E2D\\u4E86 ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version}\\uFF08\\u5C1A\\u672A\\u52A0\\u8F7D\\uFF09\\uFF0C\\u540C\\u6B65\\u9759\\u6001\\u5BFC\\u5165\\u65E0\\u6CD5\\u7B49\\u5F85\\u5176\\u5B9E\\u4F8B\\u5C31\\u7EEA\\u3002\n\\u539F\\u56E0\\uFF1A\\u4E0D\\u80FD\\u6539\\u7528\\u4E0D\\u517C\\u5BB9\\u7684\\u672C\\u5730\\u526F\\u672C\\u6216\\u5206\\u88C2\\u5355\\u4F8B\\u3002\n\\u4FEE\\u6CD5\\uFF1A\\u8BA9\\u8BE5\\u5171\\u4EAB\\u7684\\u9996\\u6B21\\u6D88\\u8D39\\u5148\\u7ECF\\u4E00\\u6B21\\u52A8\\u6001 loadShare \\u5B8C\\u6210\\u52A0\\u8F7D\\uFF0C\\u6216\\u5C06\\u672C\\u5E94\\u7528\\u7248\\u672C\\u4E0E\\u4F5C\\u7528\\u57DF\\u63D0\\u4F9B\\u7248\\u672C\\u5BF9\\u9F50\\u3002`,{shareKey:o,requiredVersion:r.requiredVersion,syncUnsupported:!0});let s=`${n}|${o}|${t.version}|${r.localVersion}`;return a.has(s)||(a.add(s),console.warn(`[fulgurjs:MFU-010] \\u5171\\u4EAB\\u5355\\u4F8B "${o}"\\uFF1A\\u4F5C\\u7528\\u57DF\\u4E2D ${t.from} \\u63D0\\u4F9B\\u7684 ${t.version} \\u5C1A\\u672A\\u52A0\\u8F7D\\uFF0C\\u9996\\u4E2A\\u6D88\\u8D39\\u8005\\u4EE5\\u672C\\u5730\\u7248\\u672C ${r.localVersion??""} \\u63A5\\u7BA1\\uFF08\\u540E\\u7EED\\u6D88\\u8D39\\u8005\\u6309\\u5DF2\\u52A0\\u8F7D\\u4F18\\u5148\\u6536\\u655B\\u5230\\u8BE5\\u5B9E\\u4F8B\\uFF09\\u3002`)),{kind:"local"}}return console.warn(`[fulgurjs] \\u5171\\u4EAB "${o}"\\uFF1A\\u975E\\u5355\\u4F8B\\u540C\\u6B65\\u6D88\\u8D39\\u4F7F\\u7528\\u672C\\u5730 ${r.localVersion??""}\\uFF0C\\u8FDC\\u7A0B ${t.version} \\u5C1A\\u672A\\u5C31\\u7EEA\\u3002`),{kind:"local"}}async function Se(e){if(_.resolveShare){for(let{name:r,opts:n}of e){let o=S(r,n);if(p.has(o))continue;let t=T(r,n),s=await _.resolveShare({shareKey:n.shareKey||r,shareScope:n.shareScope||"default",requiredVersion:n.requiredVersion,picked:t,available:Object.values(M(n.shareScope||"default")[n.shareKey||r]||{})})||t;s&&p.set(o,s)}for(let{name:r,opts:n}of e)await X(r,n)}}function z(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 Y(e,r,n){return new Promise((o,t)=>{let s=setTimeout(()=>t(new Error(`\\u7B49\\u5F85\\u8D85\\u8FC7 ${r} \\u6BEB\\u79D2\\uFF1A${n}`)),r);e.then(l=>{clearTimeout(s),o(l)},l=>{clearTimeout(s),t(l)})})}let Ee=e=>new Promise(r=>setTimeout(r,e)),Z=new Set;function D(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 n=`\\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){let o=`${r.name}\\u2194${e.name}`;Z.has(o)||(Z.add(o),console.warn(`[fulgurjs] ${n} \\u5F53\\u524D\\u662F\\u52A8\\u6001 Promise \\u8FDC\\u7A0B\\uFF0C\\u7EE7\\u7EED\\u52A0\\u8F7D\\u3002`))}else throw Object.assign(new Error(n),{code:w.REMOTE_NAME_MISMATCH})}}async function Q(e,r){let n=r.entryFailCounts.get(e)??0,o=n>0?`${e}${e.includes("?")?"&":"?"}fulgurjs_retry=${n}`:e,t=r.entryInflight.get(e),s=t??import(o);return t||(r.entryInflight.set(e,s),s.catch(()=>{r.entryInflight.delete(e),r.entryFailCounts.set(e,(r.entryFailCounts.get(e)??0)+1)})),Y(s,r.timeout??H,`\\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5165\\u53E3 ${z(e)}`)}async function ee(e,r){let n=e.shareScope||"default";if(e.container){let s=U.get(e.container);if(s&&s!==n)throw new E(w.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 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return e.container}if(e.containerPromise)return e.containerPromise;let o=e.breakerState;if(o.openUntil>Date.now()){let s=new E(w.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(o.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 t=(async()=>{let s=[];if(e.promise)s.push(async()=>{let m=await Y(e.promise(),e.timeout??H,`\\u89E3\\u6790\\u52A8\\u6001\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"`),y=typeof m=="string"?await Q(m,e):m;return D(y,e),y});else for(let m of[e.entry,...e.fallback??[]])s.push(async()=>{let y=await Q(m,e);return D(y,e),y});let l,i,d=!1,g=r?.retries??e.retries??te;for(let m of s){for(let y=0;y<=g;y++){let O=performance.now();try{l=await m(),e.lastLoadMs=Math.round(performance.now()-O),e.debug.lastLoadMs=e.lastLoadMs,d=!0;break}catch(P){if(i=P,P?.code)throw P;y<g&&await Ee(Math.min(Ue,200*2**y)*(1-Ve*(1-2*Math.random())))}}if(d)break}if(!d||!l){let m=z(e.entry),y=[];throw/^https?:\\/\\//.test(e.entry)&&typeof location<"u"?(y.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${m}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u5DF2\\u542F\\u52A8\\uFF0C\\u5E76\\u8FD4\\u56DE JS \\u800C\\u975E HTML\\u3002`),y.push("2. \\u6838\\u5BF9 federation({ remotes }) \\u4E2D\\u7684\\u5730\\u5740\\uFF1B\\u5F00\\u53D1\\u548C\\u751F\\u4EA7\\u5730\\u5740\\u53EF\\u4EE5\\u4E0D\\u540C\\u3002"),y.push("3. \\u82E5\\u8DE8\\u57DF\\uFF0C\\u68C0\\u67E5\\u8FDC\\u7A0B\\u5F00\\u53D1\\u670D\\u52A1\\u7684 server.cors \\u914D\\u7F6E\\u3002")):(y.push(`1. \\u5728\\u6D4F\\u89C8\\u5668\\u6253\\u5F00 ${m}\\uFF0C\\u786E\\u8BA4\\u8FDC\\u7A0B\\u5E94\\u7528\\u5DF2\\u90E8\\u7F72\\uFF0C\\u4E14\\u5165\\u53E3\\u8FD4\\u56DE JS\\u3002`),y.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 E(w.REMOTE_LOAD_FAILED,`\\u73B0\\u8C61\\uFF1A\\u65E0\\u6CD5\\u4ECE ${m} \\u52A0\\u8F7D\\u8FDC\\u7A0B\\u5E94\\u7528 "${e.name}"\\u3002\n\\u539F\\u56E0\\uFF1A${String(i?.message??i)}\n\\u4FEE\\u6CD5\\uFF1A\n${y.join(`\n`)}`,{remote:e.name})}D(l,e);let h=U.get(l);if(h&&h!==n)throw new E(w.CONTAINER_REINIT_CONFLICT,`\\u8FDC\\u7A0B\\u5BB9\\u5668 "${e.name}" \\u5DF2\\u4F7F\\u7528\\u5171\\u4EAB\\u4F5C\\u7528\\u57DF "${h}" \\u521D\\u59CB\\u5316\\uFF0C\\u4E0D\\u80FD\\u518D\\u4EE5 "${n}" \\u521D\\u59CB\\u5316\\u3002\\u8BF7\\u7EDF\\u4E00 shareScope \\u914D\\u7F6E\\u3002`);return typeof l.init=="function"&&await l.init(c),U.set(l,n),e.container=l,e.state="loaded",e.debug.status="loaded",o.fails=0,l})();e.containerPromise=t;try{return await t}catch(s){if(e.containerPromise=void 0,e.state="failed",e.debug.status="failed",e.debug.error=String(s?.message??s),o.fails+=1,o.fails>=e.breakerThreshold&&(o.openUntil=Date.now()+e.breakerResetMs,o.fails=0),s instanceof E)throw $({remote:e.name,error:s}),s;if(s?.code)throw $({remote:e.name,error:s}),s;let l=new E(w.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:l}),l}}function K(e){let r=e.indexOf("/");return r===-1?{remote:e,module:""}:{remote:e.slice(0,r),module:re(e.slice(r+1))}}function re(e){return e?e.startsWith(".")?e:`./${e}`:""}async function we(e,r){let{remote:n,module:o}=K(e);if(o&&C===n)throw new E(w.SETUP_RECURSION,`\\u73B0\\u8C61\\uFF1A\\u52A0\\u8F7D "${e}" \\u65F6\\uFF0C\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\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:n});try{_.beforeLoadRemote?.({remote:n,module:o})}catch(d){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",d)}let t=u.get(n);if(!t)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5728 federation({ remotes }) \\u4E2D\\u914D\\u7F6E\\uFF0C\\u6216\\u5728\\u52A0\\u8F7D\\u524D\\u8C03\\u7528 registerRemote()\\u3002`,{remote:n});let s;try{let d=o&&t.manifestUrl?q(e):Promise.resolve();[s]=await Promise.all([ee(t,{retries:r?.retries}),d])}catch(d){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`,d),$({remote:n,error:d}),await r.fallbackModule();throw d}if(!o)return s;await le(t,s);let l=`${n}@${t.shareScope||"default"}#${o}`;b.has(l)||b.set(l,s.get(o).catch(d=>{throw b.delete(l),d instanceof E||d?.code?d:new E(w.REMOTE_LOAD_FAILED,`\\u65E0\\u6CD5\\u4ECE\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u52A0\\u8F7D\\u6A21\\u5757 "${o}"\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(d?.message??d)}\\u3002\\u8BF7\\u6838\\u5BF9 exposes \\u952E\\u548C\\u8FDC\\u7A0B\\u6784\\u5EFA\\u4EA7\\u7269\\u3002`,{remote:n,module:o})}));let i;try{i=await b.get(l)}catch(d){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`,d),$({remote:n,error:d}),await r.fallbackModule();throw d}try{_.afterLoadRemote?.({remote:n,module:o,module_ns:i})}catch(d){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",d)}if(i&&typeof i=="object"&&Object.keys(i).length===0){let d=new E(w.EMPTY_EXPORTS,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6A21\\u5757 "${o}" \\u6CA1\\u6709\\u4EFB\\u4F55\\u5BFC\\u51FA\\u3002\\u8BF7\\u68C0\\u67E5 exposes \\u6307\\u5411\\u7684\\u6587\\u4EF6\\u53CA\\u5176 export \\u58F0\\u660E\\u3002`,{remote:n,module:o});$({remote:n,error:d}),console.error(d.message)}return i}function Re(e){let r=u.get(e);if(!r)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${e}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:e});return ee(r)}async function q(e,r={}){let{remote:n,module:o}=K(e),t=u.get(n);if(!t)throw new E(w.REMOTE_UNKNOWN,`\\u672A\\u77E5\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}"\\u3002\\u8BF7\\u5148\\u6CE8\\u518C\\u8BE5\\u8FDC\\u7A0B\\u5E94\\u7528\\u3002`,{remote:n});let s=r.mode??"preload",l=(g,h)=>{if(g.sheet)return Promise.resolve();let m=I.get(g);if(m)return m;let y=new Promise(O=>{let P=()=>{g.removeEventListener("load",P),g.removeEventListener("error",k),O()},k=()=>{$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684\\u6837\\u5F0F\\u8D44\\u6E90\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A${h}\\u3002\\u8BF7\\u68C0\\u67E5\\u6587\\u4EF6\\u662F\\u5426\\u5B58\\u5728\\u4EE5\\u53CA\\u8DE8\\u57DF\\u548C\\u7F13\\u5B58\\u914D\\u7F6E\\u3002`,{remote:n})}),P()};g.addEventListener("load",P,{once:!0}),g.addEventListener("error",k,{once:!0}),g.sheet&&P()});return I.set(g,y),y},i=(g,h)=>{if(typeof document>"u")return Promise.resolve();let m=document.querySelector(`link[href="${g}"]`);if(m)return h==="style"&&s==="preload"?I.get(m)??Promise.resolve():Promise.resolve();let y=document.createElement("link");y.rel=h==="style"?"stylesheet":"modulepreload",y.href=g,s==="prefetch"&&(y.fetchPriority="low");let O=h==="style"?l(y,g):Promise.resolve();return document.head.appendChild(y),h==="style"&&s==="preload"?O:Promise.resolve()},d=g=>{let h=typeof document<"u"?document.baseURI:void 0,m=new URL(t.entry,h||"http://fulgurjs.invalid/");return!m.pathname.endsWith("/")&&!m.pathname.split("/").pop().includes(".")&&(m.pathname+="/"),new URL(g,m).href};try{if(t.manifestUrl){let g=v.get(t.manifestUrl);g||(g=fetch(t.manifestUrl,{cache:"no-cache",signal:AbortSignal.timeout(8e3)}).then(m=>m.ok?m.json():void 0),v.set(t.manifestUrl,g),g.then(m=>{m||v.delete(t.manifestUrl)},()=>v.delete(t.manifestUrl)));let h=await g;if(h){let m=h.schemaVersion;if(typeof m=="number"&&(!Number.isInteger(m)||m>1)){$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u7684 manifest \\u534F\\u8BAE\\u7248\\u672C\\u4E3A ${String(m)}\\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:n})}),await i(t.entry,"modulepreload");return}await i(t.entry,"modulepreload");let y=h.exposes,O=Array.isArray(y)?y.filter(L=>L&&typeof L=="object").map(L=>[String(L.name??""),L]):y&&typeof y=="object"?Object.entries(y):[],P=o?O.filter(([L,j])=>re(String(j?.name??L))===o):O,k=[];for(let[,L]of P)if(typeof L?.file=="string"&&await i(d(L.file),"modulepreload"),Array.isArray(L?.css))for(let j of L.css){if(typeof j!="string")continue;let be=i(d(j),"style");s==="preload"&&k.push(be)}await Promise.all(k);return}}await i(t.entry,"modulepreload")}catch(g){$({remote:n,error:new E(w.PRELOAD_FAILED,`\\u8FDC\\u7A0B\\u5E94\\u7528 "${n}" \\u9884\\u52A0\\u8F7D\\u5931\\u8D25\\u3002\\u5E95\\u5C42\\u539F\\u56E0\\uFF1A${String(g?.message??g)}\\u3002\\u8BF7\\u68C0\\u67E5 manifest \\u548C\\u8D44\\u6E90\\u5730\\u5740\\u3002`,{remote:n})})}}return typeof window>"u"||(window.__FULGURJS_SCOPE__=c,window.__FULGURJS_INFO__={get remotes(){let e={};for(let[r,n]of u)e[r]={...n.debug,entry:n.entry};return e},errors:[]}),{shareScopeMap:c,initSharing:fe,registerShare:F,registerRemotes:J,registerRemote:me,registerPlugins:pe,loadShare:X,loadShareSync:ye,prepareShares:Se,getLoadedShare:ge,pinLoadedShare:he,loadRemote:we,getContainer:Re,preloadRemote:q,parseSpec:K,clearSessionState:ue}}var oe=globalThis,R=oe.__FULGURJS_RUNTIME__??Ce();oe.__FULGURJS_RUNTIME__=R;try{Object.freeze(R)}catch{}var Je=ne;function We(){return R}var Xe=R.initSharing,ze=R.registerShare,Ye=R.registerRemotes,Ze=R.registerRemote,Qe=R.registerPlugins,er=R.loadShare,rr=R.getLoadedShare,nr=R.prepareShares||(async c=>{for(let{name:u,opts:f}of c)await R.loadShare(u,f)}),tr=R.loadShareSync,or=R.pinLoadedShare,sr=R.loadRemote,ir=R.getContainer,ar=R.preloadRemote,cr=R.parseSpec,lr=R.clearSessionState,ur=R.shareScopeMap;function fr(c){if(c&&typeof c=="object"&&"default"in c){let u=c.default;return u!==void 0?u:c}return c}var dr=R;export{lr as clearSessionState,dr as default,ir as getContainer,rr as getLoadedShare,We as getRuntime,Xe as initSharing,sr as loadRemote,er as loadShare,tr as loadShareSync,cr as parseSpec,or as pinLoadedShare,ar as preloadRemote,nr as prepareShares,Qe as registerPlugins,Ze as registerRemote,Ye as registerRemotes,ze as registerShare,R as runtime,ur as shareScopeMap,fr as unwrapDefault,Je as version};\n';
2615
2641
 
2616
2642
  // src/index.ts
2617
2643
  function readRuntimeCode() {
@@ -2690,6 +2716,58 @@ function providerChunkOf(id, roots) {
2690
2716
  if (!provider) return void 0;
2691
2717
  return "fulgurjs-provider-" + (provider.shareKey.replace(/[^A-Za-z0-9_-]/g, "_") || "unknown");
2692
2718
  }
2719
+ var providerClosureCache = /* @__PURE__ */ new Map();
2720
+ var providerClosureBuilt = false;
2721
+ function providerChunkOfWithClosure(id, roots, meta, seeds = []) {
2722
+ if (roots.length === 0) return void 0;
2723
+ const clean = id.replace(/^\0/, "").split("?")[0];
2724
+ const direct = providerChunkOf(clean, roots);
2725
+ if (direct) return direct;
2726
+ const getModuleInfo = meta?.getModuleInfo;
2727
+ if (!getModuleInfo) return void 0;
2728
+ if (!providerClosureBuilt) {
2729
+ providerClosureBuilt = true;
2730
+ debugLog("facade", { stage: "provider-closure", seeds: seeds.length, hasGetModuleInfo: typeof getModuleInfo === "function" });
2731
+ const visited = /* @__PURE__ */ new Set();
2732
+ const queue = [];
2733
+ const nameOf = (p) => "fulgurjs-provider-" + (p.shareKey.replace(/[^A-Za-z0-9_-]/g, "_") || "unknown");
2734
+ for (const seed of seeds) {
2735
+ const owner = roots.find((p) => seed.replace(/^\0/, "").split("?")[0].startsWith(p.root));
2736
+ if (!owner) continue;
2737
+ visited.add(seed);
2738
+ queue.push({ id: seed, name: nameOf(owner) });
2739
+ }
2740
+ for (const p of roots) {
2741
+ if (!p.entryId || visited.has(p.entryId)) continue;
2742
+ visited.add(p.entryId);
2743
+ queue.push({ id: p.entryId, name: nameOf(p) });
2744
+ }
2745
+ while (queue.length > 0) {
2746
+ const { id: cur, name } = queue.shift();
2747
+ let info = null;
2748
+ try {
2749
+ info = getModuleInfo(cur);
2750
+ } catch {
2751
+ info = null;
2752
+ }
2753
+ for (const dep of info?.importedIds ?? []) {
2754
+ const depClean = dep.replace(/^\0/, "").split("?")[0];
2755
+ if (depClean.startsWith("virtual:fulgurjs-")) continue;
2756
+ if (visited.has(depClean)) continue;
2757
+ const directDep = providerChunkOf(depClean, roots);
2758
+ if (directDep && directDep !== name) {
2759
+ visited.add(depClean);
2760
+ continue;
2761
+ }
2762
+ visited.add(depClean);
2763
+ providerClosureCache.set(depClean, name);
2764
+ queue.push({ id: depClean, name });
2765
+ }
2766
+ }
2767
+ debugLog("facade", { stage: "provider-closure-done", captured: providerClosureCache.size, sample: [...providerClosureCache.keys()].slice(0, 8).map((k) => k.slice(-60)) });
2768
+ }
2769
+ return providerClosureCache.get(clean);
2770
+ }
2693
2771
  async function resolveSharedImportTarget(item, root) {
2694
2772
  const specifier = item.import;
2695
2773
  if (typeof specifier !== "string") return item.shareKey;
@@ -2706,11 +2784,13 @@ function federation(options) {
2706
2784
  command: "serve",
2707
2785
  rolldownBuild: false,
2708
2786
  providerRoots: [],
2787
+ providerEntrySeeds: [],
2709
2788
  base: "/",
2710
2789
  exposeAbsPaths: {},
2711
2790
  exposeFiles: {},
2712
2791
  resolvedSharedPaths: /* @__PURE__ */ new Map(),
2713
2792
  entryAbsPaths: /* @__PURE__ */ new Set(),
2793
+ bootstrapEntries: /* @__PURE__ */ new Set(),
2714
2794
  entryInitInjected: /* @__PURE__ */ new Set(),
2715
2795
  manualChunkGroups: /* @__PURE__ */ new Map(),
2716
2796
  sharedClosureRoots: [],
@@ -2859,7 +2939,7 @@ export { default } from ${JSON.stringify(url)};
2859
2939
  const facade = facadeChunkOf(id);
2860
2940
  if (facade) return facade;
2861
2941
  if (isOwnPackageModule(id)) return void 0;
2862
- return userFn(id, meta);
2942
+ return providerChunkOfWithClosure(id, state.providerRoots, meta, state.providerEntrySeeds) ?? userFn(id, meta);
2863
2943
  };
2864
2944
  const extraBuild = extra.build ??= {};
2865
2945
  extraBuild.rollupOptions = { ...extraBuild.rollupOptions ?? {}, output: { manualChunks: wrapped } };
@@ -2867,11 +2947,11 @@ export { default } from ${JSON.stringify(url)};
2867
2947
  state.manualChunkSpecsPending = Object.entries(userManualChunks).flatMap(
2868
2948
  ([group, specs]) => specs.map((s) => [group, s])
2869
2949
  );
2870
- const wrapped = (id) => {
2950
+ const wrapped = (id, meta) => {
2871
2951
  const facade = facadeChunkOf(id);
2872
2952
  if (facade) return facade;
2873
2953
  if (isOwnPackageModule(id)) return void 0;
2874
- return state.manualChunkGroups.get(id.split("?")[0]) ?? state.manualChunkGroups.get(id);
2954
+ return providerChunkOfWithClosure(id, state.providerRoots, meta, state.providerEntrySeeds) ?? state.manualChunkGroups.get(id.split("?")[0]) ?? state.manualChunkGroups.get(id);
2875
2955
  };
2876
2956
  const extraBuild = extra.build ??= {};
2877
2957
  extraBuild.rollupOptions = { ...extraBuild.rollupOptions ?? {}, output: { manualChunks: wrapped } };
@@ -2885,7 +2965,7 @@ export { default } from ${JSON.stringify(url)};
2885
2965
  const facade = facadeChunkOf(id);
2886
2966
  if (facade) return facade;
2887
2967
  if (isOwnPackageModule(id)) return void 0;
2888
- return providerChunkOf(id, state.providerRoots) ?? userFn?.(id, meta);
2968
+ return providerChunkOfWithClosure(id, state.providerRoots, meta, state.providerEntrySeeds) ?? userFn?.(id, meta);
2889
2969
  };
2890
2970
  const extraBuild = extra.build ??= {};
2891
2971
  if (Array.isArray(userOutput)) {
@@ -2921,7 +3001,7 @@ export { default } from ${JSON.stringify(url)};
2921
3001
  const facade = facadeChunkOf(id);
2922
3002
  if (facade) return facade;
2923
3003
  if (isOwnPackageModule(id)) return void 0;
2924
- return groupOf(id);
3004
+ return providerChunkOfWithClosure(id, state.providerRoots, meta, state.providerEntrySeeds) ?? groupOf(id);
2925
3005
  }
2926
3006
  }
2927
3007
  };
@@ -2953,10 +3033,10 @@ export { default } from ${JSON.stringify(url)};
2953
3033
  if (isOwnPackageModule(id)) return facadeChunkOf(id) ?? reactDomChunkOf(id) ?? void 0;
2954
3034
  const prev = previousMc?.(id, meta);
2955
3035
  if (prev !== void 0) return prev;
3036
+ const provider = providerChunkOfWithClosure(id, state.providerRoots, meta, state.providerEntrySeeds);
3037
+ if (provider) return provider;
2956
3038
  const user = userFn3?.(id, meta);
2957
3039
  if (user !== void 0) return user;
2958
- const provider = providerChunkOf(id, state.providerRoots);
2959
- if (provider) return provider;
2960
3040
  const facade = facadeChunkOf(id);
2961
3041
  if (facade) return facade;
2962
3042
  return reactDomChunkOf(id);
@@ -3021,6 +3101,7 @@ export { default } from ${JSON.stringify(url)};
3021
3101
  if (bareClean === RUNTIME_VIRTUAL_ID) return RESOLVED.runtime;
3022
3102
  if (bareClean === RUNTIME_PROXY_VIRTUAL_ID) return RESOLVED.runtimeProxy;
3023
3103
  if (bareClean === INIT_VIRTUAL_ID) return RESOLVED.init;
3104
+ if (bareClean.startsWith("virtual:fulgurjs-bootstrap:")) return "\0" + bareClean;
3024
3105
  if (bareClean === "virtual:fulgurjs-remote-schema") return bareClean;
3025
3106
  if (bareClean === "virtual:fulgurjs-api-facade") return bareClean;
3026
3107
  if (bareClean === "virtual:fulgurjs-api-facade-react") return bareClean;
@@ -3052,6 +3133,9 @@ export { default } from ${JSON.stringify(url)};
3052
3133
  const clean = q === -1 ? raw : raw.slice(0, q);
3053
3134
  if (clean === "virtual:fulgurjs-runtime") return readRuntimeCode();
3054
3135
  if (clean === RESOLVED.runtimeProxy || clean === RUNTIME_PROXY_VIRTUAL_ID) return genRuntimeProxyModule();
3136
+ if (clean.startsWith("virtual:fulgurjs-bootstrap:") && state.normalized) {
3137
+ return genAsyncBootstrap(state.normalized, decodeURIComponent(clean.slice("virtual:fulgurjs-bootstrap:".length)));
3138
+ }
3055
3139
  if (clean === "virtual:fulgurjs-init" && state.normalized) {
3056
3140
  return genInitModule(state.normalized, state.command);
3057
3141
  }
@@ -3154,7 +3238,7 @@ export { default } from ${JSON.stringify(url)};
3154
3238
  async transform(code, id) {
3155
3239
  if (!state.normalized) return null;
3156
3240
  const clean = id.split("?")[0];
3157
- if (state.command === "build" && state.entryAbsPaths.has(clean) && !state.entryInitInjected.has(clean)) {
3241
+ if (state.command === "build" && state.entryAbsPaths.has(clean) && !state.bootstrapEntries.has(clean) && !state.entryInitInjected.has(clean)) {
3158
3242
  state.entryInitInjected.add(clean);
3159
3243
  const initCode = genInitModule(state.normalized, state.command);
3160
3244
  return { code: `${initCode}
@@ -3209,6 +3293,18 @@ ${code}`, map: null };
3209
3293
  state.entryAbsPaths.add(abs);
3210
3294
  }
3211
3295
  debugLog("init-entry", { stage: "capture", count: state.entryAbsPaths.size, entries: [...state.entryAbsPaths].map((p) => redactModulePath(p, state.normalized.root)) });
3296
+ if (state.normalized.runtimePlugins.length > 0) {
3297
+ return html.replace(/<script\b[^>]*>[\s\S]*?<\/script>/g, (script) => {
3298
+ const tag = script.slice(0, script.indexOf(">") + 1);
3299
+ if (!/\btype=["']module["']/.test(tag)) return script;
3300
+ const src = srcRe.exec(tag)?.[1];
3301
+ if (!src || src.startsWith("http") || src.startsWith("//")) return script;
3302
+ const abs = path6.resolve(state.normalized.root, src.startsWith("/") ? src.slice(1) : src);
3303
+ state.bootstrapEntries.add(abs);
3304
+ const id = "virtual:fulgurjs-bootstrap:" + encodeURIComponent(abs);
3305
+ return tag.replace(/\s+src=["'][^"']+["']/, "") + `import ${JSON.stringify(id)};</script>`;
3306
+ });
3307
+ }
3212
3308
  return html;
3213
3309
  }
3214
3310
  },
@@ -3216,6 +3312,9 @@ ${code}`, map: null };
3216
3312
  if (state.command !== "build" || !state.normalized) return;
3217
3313
  const n = state.normalized;
3218
3314
  state.providerRoots = [];
3315
+ state.providerEntrySeeds = [];
3316
+ providerClosureCache.clear();
3317
+ providerClosureBuilt = false;
3219
3318
  const providerRequire = createRequire3(path6.join(n.root, "package.json"));
3220
3319
  for (const item of n.shared) {
3221
3320
  if (item.import === false) continue;
@@ -3225,7 +3324,8 @@ ${code}`, map: null };
3225
3324
  if (pos < 0) continue;
3226
3325
  const parts = file.slice(pos + "/node_modules/".length).split("/");
3227
3326
  const pkg = parts[0].startsWith("@") ? parts.slice(0, 2).join("/") : parts[0];
3228
- state.providerRoots.push({ root: file.slice(0, pos + "/node_modules/".length) + pkg + "/", shareKey: item.shareKey });
3327
+ state.providerRoots.push({ root: file.slice(0, pos + "/node_modules/".length) + pkg + "/", shareKey: item.shareKey, entryId: file });
3328
+ state.providerEntrySeeds.push(file);
3229
3329
  } catch {
3230
3330
  }
3231
3331
  }
@@ -3241,8 +3341,9 @@ ${code}`, map: null };
3241
3341
  const parts = file.slice(pos + marker.length).split("/");
3242
3342
  const pkg = parts[0].startsWith("@") ? parts.slice(0, 2).join("/") : parts[0];
3243
3343
  const root = file.slice(0, pos + marker.length) + pkg + "/";
3344
+ state.providerEntrySeeds.push(file);
3244
3345
  if (!state.providerRoots.some((provider) => provider.root === root && provider.shareKey === item.shareKey)) {
3245
- state.providerRoots.push({ root, shareKey: item.shareKey });
3346
+ state.providerRoots.push({ root, shareKey: item.shareKey, entryId: file });
3246
3347
  }
3247
3348
  }
3248
3349
  }
@@ -3641,6 +3742,9 @@ ${entryChunk.code}`;
3641
3742
  if (!quickCheck) return null;
3642
3743
  const n = state.normalized;
3643
3744
  const isPureRemoteBuild = n.exposes.length > 0 && n.remotes.length === 0;
3745
+ const providerCjs = /require\s*\(\s*["']/.test(code) && state.providerRoots.some((provider) => clean.startsWith(provider.root));
3746
+ const allowNodeModules = n.devSharedSelf || isPureRemoteBuild || providerCjs;
3747
+ if (!isTransformableId(id, allowNodeModules)) return null;
3644
3748
  return transformModule(code, id, {
3645
3749
  onRewrite: () => {
3646
3750
  debugLog("transform", { stage: "post-fallback", mode: "build", module: redactModulePath(id, n.root) });
package/dist/react.d.ts CHANGED
@@ -133,6 +133,10 @@ declare function createRuntime(): {
133
133
  kind: "ready" | "local";
134
134
  value?: any;
135
135
  };
136
+ prepareShares: (requests: Array<{
137
+ name: string;
138
+ opts: LoadShareOptions;
139
+ }>) => Promise<void>;
136
140
  getLoadedShare: (name: string, opts?: LoadShareOptions) => any;
137
141
  pinLoadedShare: (name: string, opts: LoadShareOptions, localVersion: string, instance: unknown) => void;
138
142
  loadRemote: <T = Record<string, any>>(spec: string, opts?: LoadRemoteOptions) => Promise<T>;
@@ -133,6 +133,10 @@ declare function createRuntime(): {
133
133
  kind: "ready" | "local";
134
134
  value?: any;
135
135
  };
136
+ prepareShares: (requests: Array<{
137
+ name: string;
138
+ opts: LoadShareOptions;
139
+ }>) => Promise<void>;
136
140
  getLoadedShare: (name: string, opts?: LoadShareOptions) => any;
137
141
  pinLoadedShare: (name: string, opts: LoadShareOptions, localVersion: string, instance: unknown) => void;
138
142
  loadRemote: <T = Record<string, any>>(spec: string, opts?: LoadRemoteOptions) => Promise<T>;