@module-federation/webpack-bundler-runtime 2.0.1 → 2.2.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 (105) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/attachShareScopeMap.cjs +11 -0
  3. package/dist/attachShareScopeMap.cjs.map +1 -0
  4. package/dist/attachShareScopeMap.d.ts +7 -0
  5. package/dist/attachShareScopeMap.js +10 -0
  6. package/dist/attachShareScopeMap.js.map +1 -0
  7. package/dist/bundler.cjs +18 -0
  8. package/dist/bundler.d.ts +4 -0
  9. package/dist/bundler.js +4 -0
  10. package/dist/constant.cjs +8 -0
  11. package/dist/constant.cjs.map +1 -0
  12. package/dist/constant.d.ts +5 -1
  13. package/dist/constant.js +6 -0
  14. package/dist/constant.js.map +1 -0
  15. package/dist/consumes.cjs +55 -0
  16. package/dist/consumes.cjs.map +1 -0
  17. package/dist/consumes.js +55 -0
  18. package/dist/consumes.js.map +1 -0
  19. package/dist/getSharedFallbackGetter.cjs +27 -0
  20. package/dist/getSharedFallbackGetter.cjs.map +1 -0
  21. package/dist/getSharedFallbackGetter.js +26 -0
  22. package/dist/getSharedFallbackGetter.js.map +1 -0
  23. package/dist/getUsedExports.cjs +11 -0
  24. package/dist/getUsedExports.cjs.map +1 -0
  25. package/dist/getUsedExports.js +10 -0
  26. package/dist/getUsedExports.js.map +1 -0
  27. package/dist/index.cjs +50 -0
  28. package/dist/index.cjs.map +1 -0
  29. package/dist/index.d.ts +46 -2
  30. package/dist/index.js +36 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/init.cjs +82 -0
  33. package/dist/init.cjs.map +1 -0
  34. package/dist/init.js +80 -0
  35. package/dist/init.js.map +1 -0
  36. package/dist/initContainerEntry.cjs +43 -0
  37. package/dist/initContainerEntry.cjs.map +1 -0
  38. package/dist/initContainerEntry.d.ts +7 -0
  39. package/dist/initContainerEntry.js +42 -0
  40. package/dist/initContainerEntry.js.map +1 -0
  41. package/dist/initializeSharing.cjs +61 -0
  42. package/dist/initializeSharing.cjs.map +1 -0
  43. package/dist/initializeSharing.d.ts +13 -0
  44. package/dist/initializeSharing.js +61 -0
  45. package/dist/initializeSharing.js.map +1 -0
  46. package/dist/installInitialConsumes.cjs +63 -0
  47. package/dist/installInitialConsumes.cjs.map +1 -0
  48. package/dist/installInitialConsumes.js +63 -0
  49. package/dist/installInitialConsumes.js.map +1 -0
  50. package/dist/remotes.cjs +74 -0
  51. package/dist/remotes.cjs.map +1 -0
  52. package/dist/remotes.js +73 -0
  53. package/dist/remotes.js.map +1 -0
  54. package/dist/runtime-core/dist/core.d.ts +130 -0
  55. package/dist/runtime-core/dist/global.d.ts +24 -0
  56. package/dist/runtime-core/dist/helpers.d.ts +1 -0
  57. package/dist/runtime-core/dist/index.d.ts +6 -0
  58. package/dist/runtime-core/dist/module/index.d.ts +32 -0
  59. package/dist/runtime-core/dist/plugins/snapshot/SnapshotHandler.d.ts +67 -0
  60. package/dist/runtime-core/dist/remote/index.d.ts +120 -0
  61. package/dist/runtime-core/dist/shared/index.d.ts +84 -0
  62. package/dist/runtime-core/dist/type/config.d.ts +117 -0
  63. package/dist/runtime-core/dist/type/index.d.ts +1 -0
  64. package/dist/runtime-core/dist/type/plugin.d.ts +28 -0
  65. package/dist/runtime-core/dist/type/preload.d.ts +32 -0
  66. package/dist/runtime-core/dist/types.d.ts +3 -0
  67. package/dist/runtime-core/dist/utils/hooks/asyncHook.d.ts +11 -0
  68. package/dist/runtime-core/dist/utils/hooks/asyncWaterfallHooks.d.ts +13 -0
  69. package/dist/runtime-core/dist/utils/hooks/pluginSystem.d.ts +20 -0
  70. package/dist/runtime-core/dist/utils/hooks/syncHook.d.ts +17 -0
  71. package/dist/runtime-core/dist/utils/hooks/syncWaterfallHook.d.ts +12 -0
  72. package/dist/runtime-core/dist/utils/load.d.ts +15 -0
  73. package/dist/runtime-core/dist/utils/manifest.d.ts +1 -0
  74. package/dist/runtime-core/dist/utils/preload.d.ts +1 -0
  75. package/dist/runtime-core/dist/utils/share.d.ts +1 -0
  76. package/dist/sdk/dist/types/plugins/ModuleFederationPlugin.d.ts +11 -0
  77. package/dist/types.d.ts +201 -0
  78. package/dist/updateOptions.cjs +112 -0
  79. package/dist/updateOptions.cjs.map +1 -0
  80. package/dist/updateOptions.js +110 -0
  81. package/dist/updateOptions.js.map +1 -0
  82. package/package.json +20 -9
  83. package/dist/constant.cjs.cjs +0 -6
  84. package/dist/constant.cjs.cjs.map +0 -1
  85. package/dist/constant.cjs.d.ts +0 -1
  86. package/dist/constant.esm.js +0 -4
  87. package/dist/constant.esm.js.map +0 -1
  88. package/dist/index.cjs.cjs +0 -793
  89. package/dist/index.cjs.cjs.map +0 -1
  90. package/dist/index.cjs.d.ts +0 -2
  91. package/dist/index.esm.js +0 -772
  92. package/dist/index.esm.js.map +0 -1
  93. package/dist/src/attachShareScopeMap.d.ts +0 -2
  94. package/dist/src/constant.d.ts +0 -1
  95. package/dist/src/consumes.d.ts +0 -2
  96. package/dist/src/getSharedFallbackGetter.d.ts +0 -2
  97. package/dist/src/getUsedExports.d.ts +0 -2
  98. package/dist/src/index.d.ts +0 -39
  99. package/dist/src/init.d.ts +0 -4
  100. package/dist/src/initContainerEntry.d.ts +0 -2
  101. package/dist/src/initializeSharing.d.ts +0 -2
  102. package/dist/src/installInitialConsumes.d.ts +0 -2
  103. package/dist/src/remotes.d.ts +0 -2
  104. package/dist/src/types.d.ts +0 -194
  105. package/dist/src/updateOptions.d.ts +0 -3
@@ -0,0 +1,73 @@
1
+ import { attachShareScopeMap } from "./attachShareScopeMap.js";
2
+ import { FEDERATION_SUPPORTED_TYPES } from "./constant.js";
3
+ import { updateRemoteOptions } from "./updateOptions.js";
4
+ import { ENCODE_NAME_PREFIX, decodeName } from "@module-federation/sdk";
5
+
6
+ //#region src/remotes.ts
7
+ function remotes(options) {
8
+ updateRemoteOptions(options);
9
+ const { chunkId, promises, webpackRequire, chunkMapping, idToExternalAndNameMapping, idToRemoteMap } = options;
10
+ attachShareScopeMap(webpackRequire);
11
+ if (webpackRequire.o(chunkMapping, chunkId)) chunkMapping[chunkId].forEach((id) => {
12
+ let getScope = webpackRequire.R;
13
+ if (!getScope) getScope = [];
14
+ const data = idToExternalAndNameMapping[id];
15
+ const remoteInfos = idToRemoteMap[id] || [];
16
+ if (getScope.indexOf(data) >= 0) return;
17
+ getScope.push(data);
18
+ if (data.p) return promises.push(data.p);
19
+ const onError = (error) => {
20
+ if (!error) error = /* @__PURE__ */ new Error("Container missing");
21
+ if (typeof error.message === "string") error.message += `\nwhile loading "${data[1]}" from ${data[2]}`;
22
+ webpackRequire.m[id] = () => {
23
+ throw error;
24
+ };
25
+ data.p = 0;
26
+ };
27
+ const handleFunction = (fn, arg1, arg2, d, next, first) => {
28
+ try {
29
+ const promise = fn(arg1, arg2);
30
+ if (promise && promise.then) {
31
+ const p = promise.then((result) => next(result, d), onError);
32
+ if (first) promises.push(data.p = p);
33
+ else return p;
34
+ } else return next(promise, d, first);
35
+ } catch (error) {
36
+ onError(error);
37
+ }
38
+ };
39
+ const onExternal = (external, _, first) => external ? handleFunction(webpackRequire.I, data[0], 0, external, onInitialized, first) : onError();
40
+ var onInitialized = (_, external, first) => handleFunction(external.get, data[1], getScope, 0, onFactory, first);
41
+ var onFactory = (factory) => {
42
+ data.p = 1;
43
+ webpackRequire.m[id] = (module) => {
44
+ module.exports = factory();
45
+ };
46
+ };
47
+ const onRemoteLoaded = () => {
48
+ try {
49
+ const remoteModuleName = decodeName(remoteInfos[0].name, ENCODE_NAME_PREFIX) + data[1].slice(1);
50
+ const instance = webpackRequire.federation.instance;
51
+ const loadRemote = () => webpackRequire.federation.instance.loadRemote(remoteModuleName, {
52
+ loadFactory: false,
53
+ from: "build"
54
+ });
55
+ if (instance.options.shareStrategy === "version-first") {
56
+ const shareScopes = Array.isArray(data[0]) ? data[0] : [data[0]];
57
+ return Promise.all(shareScopes.map((shareScope) => instance.sharedHandler.initializeSharing(shareScope))).then(() => {
58
+ return loadRemote();
59
+ });
60
+ }
61
+ return loadRemote();
62
+ } catch (error) {
63
+ onError(error);
64
+ }
65
+ };
66
+ if (remoteInfos.length === 1 && FEDERATION_SUPPORTED_TYPES.includes(remoteInfos[0].externalType) && remoteInfos[0].name) handleFunction(onRemoteLoaded, data[2], 0, 0, onFactory, 1);
67
+ else handleFunction(webpackRequire, data[2], 0, 0, onExternal, 1);
68
+ });
69
+ }
70
+
71
+ //#endregion
72
+ export { remotes };
73
+ //# sourceMappingURL=remotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remotes.js","names":[],"sources":["../src/remotes.ts"],"sourcesContent":["import { attachShareScopeMap } from './attachShareScopeMap';\nimport type { RemoteEntryExports } from './types';\nimport { RemotesOptions } from './types';\nimport { FEDERATION_SUPPORTED_TYPES } from './constant';\nimport { decodeName, ENCODE_NAME_PREFIX } from '@module-federation/sdk';\nimport { updateRemoteOptions } from './updateOptions';\n\nexport function remotes(options: RemotesOptions) {\n updateRemoteOptions(options);\n\n const {\n chunkId,\n promises,\n webpackRequire,\n chunkMapping,\n idToExternalAndNameMapping,\n idToRemoteMap,\n } = options;\n attachShareScopeMap(webpackRequire);\n\n if (webpackRequire.o(chunkMapping, chunkId)) {\n chunkMapping[chunkId].forEach((id) => {\n let getScope = webpackRequire.R;\n if (!getScope) {\n getScope = [];\n }\n const data = idToExternalAndNameMapping[id];\n const remoteInfos = idToRemoteMap[id] || [];\n // @ts-ignore seems not work\n if (getScope.indexOf(data) >= 0) {\n return;\n }\n // @ts-ignore seems not work\n getScope.push(data);\n if (data.p) {\n return promises.push(data.p as Promise<any>);\n }\n const onError = (error?: Error) => {\n if (!error) {\n error = new Error('Container missing');\n }\n if (typeof error.message === 'string') {\n error.message += `\\nwhile loading \"${data[1]}\" from ${data[2]}`;\n }\n webpackRequire.m[id] = () => {\n throw error;\n };\n data.p = 0;\n };\n const handleFunction = (\n fn: (...args: any[]) => any,\n arg1: any,\n arg2: any,\n d: any,\n next: (...args: any[]) => any,\n first: 1 | 0,\n ) => {\n try {\n const promise = fn(arg1, arg2);\n if (promise && promise.then) {\n const p = promise.then((result: any) => next(result, d), onError);\n if (first) {\n promises.push((data.p = p));\n } else {\n return p;\n }\n } else {\n return next(promise, d, first);\n }\n } catch (error) {\n onError(error as Error);\n }\n };\n const onExternal = (\n external: (...args: any[]) => any,\n _: any,\n first: 1 | 0,\n ) =>\n external\n ? handleFunction(\n webpackRequire.I,\n data[0],\n 0,\n external,\n onInitialized,\n first,\n )\n : onError();\n\n // eslint-disable-next-line no-var\n var onInitialized = (\n _: any,\n external: RemoteEntryExports,\n first: 1 | 0,\n ) => handleFunction(external.get, data[1], getScope, 0, onFactory, first);\n // eslint-disable-next-line no-var\n var onFactory = (factory: () => any) => {\n data.p = 1;\n webpackRequire.m[id] = (module) => {\n module.exports = factory();\n };\n };\n const onRemoteLoaded = () => {\n try {\n const remoteName = decodeName(\n remoteInfos[0].name,\n ENCODE_NAME_PREFIX,\n );\n\n const remoteModuleName = remoteName + data[1].slice(1);\n const instance = webpackRequire.federation.instance!;\n const loadRemote = () =>\n webpackRequire.federation.instance!.loadRemote(remoteModuleName, {\n loadFactory: false,\n from: 'build',\n });\n\n if (instance.options.shareStrategy === 'version-first') {\n const shareScopes = Array.isArray(data[0]) ? data[0] : [data[0]];\n\n return Promise.all(\n shareScopes.map((shareScope) =>\n instance.sharedHandler.initializeSharing(shareScope),\n ),\n ).then(() => {\n return loadRemote();\n });\n }\n\n return loadRemote();\n } catch (error) {\n onError(error as Error);\n }\n };\n\n const useRuntimeLoad =\n remoteInfos.length === 1 &&\n FEDERATION_SUPPORTED_TYPES.includes(remoteInfos[0].externalType) &&\n remoteInfos[0].name;\n\n if (useRuntimeLoad) {\n handleFunction(onRemoteLoaded, data[2], 0, 0, onFactory, 1);\n } else {\n handleFunction(webpackRequire, data[2], 0, 0, onExternal, 1);\n }\n });\n }\n}\n"],"mappings":";;;;;;AAOA,SAAgB,QAAQ,SAAyB;AAC/C,qBAAoB,QAAQ;CAE5B,MAAM,EACJ,SACA,UACA,gBACA,cACA,4BACA,kBACE;AACJ,qBAAoB,eAAe;AAEnC,KAAI,eAAe,EAAE,cAAc,QAAQ,CACzC,cAAa,SAAS,SAAS,OAAO;EACpC,IAAI,WAAW,eAAe;AAC9B,MAAI,CAAC,SACH,YAAW,EAAE;EAEf,MAAM,OAAO,2BAA2B;EACxC,MAAM,cAAc,cAAc,OAAO,EAAE;AAE3C,MAAI,SAAS,QAAQ,KAAK,IAAI,EAC5B;AAGF,WAAS,KAAK,KAAK;AACnB,MAAI,KAAK,EACP,QAAO,SAAS,KAAK,KAAK,EAAkB;EAE9C,MAAM,WAAW,UAAkB;AACjC,OAAI,CAAC,MACH,yBAAQ,IAAI,MAAM,oBAAoB;AAExC,OAAI,OAAO,MAAM,YAAY,SAC3B,OAAM,WAAW,oBAAoB,KAAK,GAAG,SAAS,KAAK;AAE7D,kBAAe,EAAE,YAAY;AAC3B,UAAM;;AAER,QAAK,IAAI;;EAEX,MAAM,kBACJ,IACA,MACA,MACA,GACA,MACA,UACG;AACH,OAAI;IACF,MAAM,UAAU,GAAG,MAAM,KAAK;AAC9B,QAAI,WAAW,QAAQ,MAAM;KAC3B,MAAM,IAAI,QAAQ,MAAM,WAAgB,KAAK,QAAQ,EAAE,EAAE,QAAQ;AACjE,SAAI,MACF,UAAS,KAAM,KAAK,IAAI,EAAG;SAE3B,QAAO;UAGT,QAAO,KAAK,SAAS,GAAG,MAAM;YAEzB,OAAO;AACd,YAAQ,MAAe;;;EAG3B,MAAM,cACJ,UACA,GACA,UAEA,WACI,eACE,eAAe,GACf,KAAK,IACL,GACA,UACA,eACA,MACD,GACD,SAAS;EAGf,IAAI,iBACF,GACA,UACA,UACG,eAAe,SAAS,KAAK,KAAK,IAAI,UAAU,GAAG,WAAW,MAAM;EAEzE,IAAI,aAAa,YAAuB;AACtC,QAAK,IAAI;AACT,kBAAe,EAAE,OAAO,WAAW;AACjC,WAAO,UAAU,SAAS;;;EAG9B,MAAM,uBAAuB;AAC3B,OAAI;IAMF,MAAM,mBALa,WACjB,YAAY,GAAG,MACf,mBACD,GAEqC,KAAK,GAAG,MAAM,EAAE;IACtD,MAAM,WAAW,eAAe,WAAW;IAC3C,MAAM,mBACJ,eAAe,WAAW,SAAU,WAAW,kBAAkB;KAC/D,aAAa;KACb,MAAM;KACP,CAAC;AAEJ,QAAI,SAAS,QAAQ,kBAAkB,iBAAiB;KACtD,MAAM,cAAc,MAAM,QAAQ,KAAK,GAAG,GAAG,KAAK,KAAK,CAAC,KAAK,GAAG;AAEhE,YAAO,QAAQ,IACb,YAAY,KAAK,eACf,SAAS,cAAc,kBAAkB,WAAW,CACrD,CACF,CAAC,WAAW;AACX,aAAO,YAAY;OACnB;;AAGJ,WAAO,YAAY;YACZ,OAAO;AACd,YAAQ,MAAe;;;AAS3B,MAJE,YAAY,WAAW,KACvB,2BAA2B,SAAS,YAAY,GAAG,aAAa,IAChE,YAAY,GAAG,KAGf,gBAAe,gBAAgB,KAAK,IAAI,GAAG,GAAG,WAAW,EAAE;MAE3D,gBAAe,gBAAgB,KAAK,IAAI,GAAG,GAAG,YAAY,EAAE;GAE9D"}
@@ -0,0 +1,130 @@
1
+ import { SyncHook } from "./utils/hooks/syncHook.js";
2
+ import { AsyncHook } from "./utils/hooks/asyncHook.js";
3
+ import { SyncWaterfallHook } from "./utils/hooks/syncWaterfallHook.js";
4
+ import { AsyncWaterfallHook } from "./utils/hooks/asyncWaterfallHooks.js";
5
+ import { PluginSystem } from "./utils/hooks/pluginSystem.js";
6
+ import { CallFrom, InitScope, Options, Remote, RemoteEntryExports, RemoteEntryInitOptions, RemoteInfo, ShareInfos, ShareScopeMap, Shared, UserOptions } from "./type/config.js";
7
+ import { PreloadRemoteArgs } from "./type/preload.js";
8
+ import { RemoteHandler } from "./remote/index.js";
9
+ import { SharedHandler } from "./shared/index.js";
10
+ import { SnapshotHandler } from "./plugins/snapshot/SnapshotHandler.js";
11
+ import { getRemoteEntry } from "./utils/load.js";
12
+ import { Module$1 } from "./module/index.js";
13
+ import { CreateScriptHookReturn, GlobalModuleInfo, ModuleInfo } from "@module-federation/sdk";
14
+
15
+ //#region ../runtime-core/dist/core.d.ts
16
+ //#region src/core.d.ts
17
+ declare class ModuleFederation {
18
+ options: Options;
19
+ hooks: PluginSystem<{
20
+ beforeInit: SyncWaterfallHook<{
21
+ userOptions: UserOptions;
22
+ options: Options;
23
+ origin: ModuleFederation;
24
+ /**
25
+ * @deprecated shareInfo will be removed soon, please use userOptions directly!
26
+ */
27
+ shareInfo: ShareInfos;
28
+ }>;
29
+ init: SyncHook<[{
30
+ options: Options;
31
+ origin: ModuleFederation;
32
+ }], void>;
33
+ beforeInitContainer: AsyncWaterfallHook<{
34
+ shareScope: ShareScopeMap[string];
35
+ initScope: InitScope;
36
+ remoteEntryInitOptions: RemoteEntryInitOptions;
37
+ remoteInfo: RemoteInfo;
38
+ origin: ModuleFederation;
39
+ }>;
40
+ initContainer: AsyncWaterfallHook<{
41
+ shareScope: ShareScopeMap[string];
42
+ initScope: InitScope;
43
+ remoteEntryInitOptions: RemoteEntryInitOptions;
44
+ remoteInfo: RemoteInfo;
45
+ remoteEntryExports: RemoteEntryExports;
46
+ origin: ModuleFederation;
47
+ id?: string;
48
+ remoteSnapshot?: ModuleInfo;
49
+ }>;
50
+ }>;
51
+ version: string;
52
+ name: string;
53
+ moduleCache: Map<string, Module$1>;
54
+ snapshotHandler: SnapshotHandler;
55
+ sharedHandler: SharedHandler;
56
+ remoteHandler: RemoteHandler;
57
+ shareScopeMap: ShareScopeMap;
58
+ loaderHook: PluginSystem<{
59
+ getModuleInfo: SyncHook<[{
60
+ target: Record<string, any>;
61
+ key: any;
62
+ }], void | {
63
+ value: any | undefined;
64
+ key: string;
65
+ }>;
66
+ createScript: SyncHook<[{
67
+ url: string;
68
+ attrs?: Record<string, any>;
69
+ }], CreateScriptHookReturn>;
70
+ createLink: SyncHook<[{
71
+ url: string;
72
+ attrs?: Record<string, any>;
73
+ }], void | HTMLLinkElement>;
74
+ fetch: AsyncHook<[string, RequestInit], false | void | Promise<Response>>;
75
+ loadEntryError: AsyncHook<[{
76
+ getRemoteEntry: typeof getRemoteEntry;
77
+ origin: ModuleFederation;
78
+ remoteInfo: RemoteInfo;
79
+ remoteEntryExports?: RemoteEntryExports | undefined;
80
+ globalLoading: Record<string, Promise<void | RemoteEntryExports> | undefined>;
81
+ uniqueKey: string;
82
+ }], Promise<Promise<RemoteEntryExports | undefined> | undefined>>;
83
+ getModuleFactory: AsyncHook<[{
84
+ remoteEntryExports: RemoteEntryExports;
85
+ expose: string;
86
+ moduleInfo: RemoteInfo;
87
+ }], Promise<(() => Promise<Module$1>) | undefined>>;
88
+ }>;
89
+ bridgeHook: PluginSystem<{
90
+ beforeBridgeRender: SyncHook<[Record<string, any>], void | Record<string, any>>;
91
+ afterBridgeRender: SyncHook<[Record<string, any>], void | Record<string, any>>;
92
+ beforeBridgeDestroy: SyncHook<[Record<string, any>], void | Record<string, any>>;
93
+ afterBridgeDestroy: SyncHook<[Record<string, any>], void | Record<string, any>>;
94
+ }>;
95
+ moduleInfo?: GlobalModuleInfo[string];
96
+ constructor(userOptions: UserOptions);
97
+ initOptions(userOptions: UserOptions): Options;
98
+ loadShare<T>(pkgName: string, extraOptions?: {
99
+ customShareInfo?: Partial<Shared>;
100
+ resolver?: (sharedOptions: ShareInfos[string]) => Shared;
101
+ }): Promise<false | (() => T | undefined)>;
102
+ loadShareSync<T>(pkgName: string, extraOptions?: {
103
+ customShareInfo?: Partial<Shared>;
104
+ from?: 'build' | 'runtime';
105
+ resolver?: (sharedOptions: ShareInfos[string]) => Shared;
106
+ }): () => T | never;
107
+ initializeSharing(shareScopeName?: string, extraOptions?: {
108
+ initScope?: InitScope;
109
+ from?: CallFrom;
110
+ strategy?: Shared['strategy'];
111
+ }): Array<Promise<void>>;
112
+ initRawContainer(name: string, url: string, container: RemoteEntryExports): Module$1;
113
+ loadRemote<T>(id: string, options?: {
114
+ loadFactory?: boolean;
115
+ from: CallFrom;
116
+ }): Promise<T | null>;
117
+ preloadRemote(preloadOptions: Array<PreloadRemoteArgs>): Promise<void>;
118
+ initShareScopeMap(scopeName: string, shareScope: ShareScopeMap[string], extraOptions?: {
119
+ hostShareScopeMap?: ShareScopeMap;
120
+ }): void;
121
+ formatOptions(globalOptions: Options, userOptions: UserOptions): Options;
122
+ registerPlugins(plugins: UserOptions['plugins']): void;
123
+ registerRemotes(remotes: Remote[], options?: {
124
+ force?: boolean;
125
+ }): void;
126
+ registerShared(shared: UserOptions['shared']): void;
127
+ } //#endregion
128
+ //#endregion
129
+ export { ModuleFederation };
130
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1,24 @@
1
+ import { GlobalShareScopeMap, RemoteEntryExports } from "./type/config.js";
2
+ import { ModuleFederationRuntimePlugin } from "./type/plugin.js";
3
+ import { ModuleFederation } from "./core.js";
4
+ import { GlobalModuleInfo, ModuleInfo } from "@module-federation/sdk";
5
+
6
+ //#region ../runtime-core/dist/global.d.ts
7
+ //#region src/global.d.ts
8
+ interface Federation {
9
+ __GLOBAL_PLUGIN__: Array<ModuleFederationRuntimePlugin>;
10
+ __DEBUG_CONSTRUCTOR_VERSION__?: string;
11
+ moduleInfo: GlobalModuleInfo;
12
+ __DEBUG_CONSTRUCTOR__?: typeof ModuleFederation;
13
+ __INSTANCES__: Array<ModuleFederation>;
14
+ __SHARE__: GlobalShareScopeMap;
15
+ __MANIFEST_LOADING__: Record<string, Promise<ModuleInfo>>;
16
+ __PRELOADED_MAP__: Map<string, boolean>;
17
+ }
18
+ declare global {
19
+ var __FEDERATION__: Federation, __VMOK__: Federation, __GLOBAL_LOADING_REMOTE_ENTRY__: Record<string, undefined | Promise<RemoteEntryExports | void>>;
20
+ }
21
+ declare const getGlobalSnapshot: () => GlobalModuleInfo;
22
+ //#endregion
23
+ export { Federation, getGlobalSnapshot };
24
+ //# sourceMappingURL=global.d.ts.map
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,6 @@
1
+ import { UserOptions } from "./type/config.js";
2
+ import { ModuleFederationRuntimePlugin } from "./type/plugin.js";
3
+ import { Federation, getGlobalSnapshot } from "./global.js";
4
+ import { getRemoteEntry } from "./utils/load.js";
5
+ import { ModuleFederation } from "./core.js";
6
+ import { Module$1 } from "./module/index.js";
@@ -0,0 +1,32 @@
1
+ import { InitScope, RemoteEntryExports, RemoteInfo } from "../type/config.js";
2
+ import { ModuleFederation } from "../core.js";
3
+ import { ModuleInfo } from "@module-federation/sdk";
4
+
5
+ //#region ../runtime-core/dist/module/index.d.ts
6
+ //#region src/module/index.d.ts
7
+ type ModuleOptions = ConstructorParameters<typeof Module$1>[0];
8
+ declare class Module$1 {
9
+ remoteInfo: RemoteInfo;
10
+ inited: boolean;
11
+ initing: boolean;
12
+ initPromise?: Promise<void>;
13
+ remoteEntryExports?: RemoteEntryExports;
14
+ lib: RemoteEntryExports | undefined;
15
+ host: ModuleFederation;
16
+ constructor({
17
+ remoteInfo,
18
+ host
19
+ }: {
20
+ remoteInfo: RemoteInfo;
21
+ host: ModuleFederation;
22
+ });
23
+ getEntry(): Promise<RemoteEntryExports>;
24
+ init(id?: string, remoteSnapshot?: ModuleInfo, rawInitScope?: InitScope): Promise<RemoteEntryExports>;
25
+ get(id: string, expose: string, options?: {
26
+ loadFactory?: boolean;
27
+ }, remoteSnapshot?: ModuleInfo): Promise<any>;
28
+ private wraperFactory;
29
+ } //#endregion
30
+ //#endregion
31
+ export { Module$1, ModuleOptions };
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,67 @@
1
+ import { AsyncHook } from "../../utils/hooks/asyncHook.js";
2
+ import { AsyncWaterfallHook } from "../../utils/hooks/asyncWaterfallHooks.js";
3
+ import { PluginSystem } from "../../utils/hooks/pluginSystem.js";
4
+ import { Options, Remote } from "../../type/config.js";
5
+ import { getGlobalSnapshot } from "../../global.js";
6
+ import { ModuleFederation } from "../../core.js";
7
+ import { GlobalModuleInfo, Manifest, ModuleInfo } from "@module-federation/sdk";
8
+
9
+ //#region ../runtime-core/dist/plugins/snapshot/SnapshotHandler.d.ts
10
+ //#region src/plugins/snapshot/SnapshotHandler.d.ts
11
+ declare class SnapshotHandler {
12
+ loadingHostSnapshot: Promise<GlobalModuleInfo | void> | null;
13
+ HostInstance: ModuleFederation;
14
+ manifestCache: Map<string, Manifest>;
15
+ hooks: PluginSystem<{
16
+ beforeLoadRemoteSnapshot: AsyncHook<[{
17
+ options: Options;
18
+ moduleInfo: Remote;
19
+ }], void>;
20
+ loadSnapshot: AsyncWaterfallHook<{
21
+ options: Options;
22
+ moduleInfo: Remote;
23
+ hostGlobalSnapshot: GlobalModuleInfo[string] | undefined;
24
+ globalSnapshot: ReturnType<typeof getGlobalSnapshot>;
25
+ remoteSnapshot?: GlobalModuleInfo[string] | undefined;
26
+ }>;
27
+ loadRemoteSnapshot: AsyncWaterfallHook<{
28
+ options: Options;
29
+ moduleInfo: Remote;
30
+ manifestJson?: Manifest;
31
+ manifestUrl?: string;
32
+ remoteSnapshot: ModuleInfo;
33
+ from: "global" | "manifest";
34
+ }>;
35
+ afterLoadSnapshot: AsyncWaterfallHook<{
36
+ id?: string;
37
+ host: ModuleFederation;
38
+ options: Options;
39
+ moduleInfo: Remote;
40
+ remoteSnapshot: ModuleInfo;
41
+ }>;
42
+ }>;
43
+ loaderHook: ModuleFederation['loaderHook'];
44
+ manifestLoading: Record<string, Promise<ModuleInfo>>;
45
+ constructor(HostInstance: ModuleFederation);
46
+ loadRemoteSnapshotInfo({
47
+ moduleInfo,
48
+ id,
49
+ expose
50
+ }: {
51
+ moduleInfo: Remote;
52
+ id?: string;
53
+ expose?: string;
54
+ }): Promise<{
55
+ remoteSnapshot: ModuleInfo;
56
+ globalSnapshot: GlobalModuleInfo;
57
+ }> | never;
58
+ getGlobalRemoteInfo(moduleInfo: Remote): {
59
+ hostGlobalSnapshot: ModuleInfo | undefined;
60
+ globalSnapshot: ReturnType<typeof getGlobalSnapshot>;
61
+ remoteSnapshot: GlobalModuleInfo[string] | undefined;
62
+ };
63
+ private getManifestJson;
64
+ } //#endregion
65
+ //#endregion
66
+ export { SnapshotHandler };
67
+ //# sourceMappingURL=SnapshotHandler.d.ts.map
@@ -0,0 +1,120 @@
1
+ import { SyncHook } from "../utils/hooks/syncHook.js";
2
+ import { AsyncHook } from "../utils/hooks/asyncHook.js";
3
+ import { SyncWaterfallHook } from "../utils/hooks/syncWaterfallHook.js";
4
+ import { AsyncWaterfallHook } from "../utils/hooks/asyncWaterfallHooks.js";
5
+ import { PluginSystem } from "../utils/hooks/pluginSystem.js";
6
+ import { CallFrom, Options, Remote, RemoteEntryExports, RemoteInfo, UserOptions } from "../type/config.js";
7
+ import { PreloadAssets, PreloadOptions, PreloadRemoteArgs } from "../type/preload.js";
8
+ import { ModuleFederation } from "../core.js";
9
+ import { Module$1, ModuleOptions } from "../module/index.js";
10
+ import { GlobalModuleInfo, ModuleInfo } from "@module-federation/sdk";
11
+
12
+ //#region ../runtime-core/dist/remote/index.d.ts
13
+ //#region src/remote/index.d.ts
14
+ interface LoadRemoteMatch {
15
+ id: string;
16
+ pkgNameOrAlias: string;
17
+ expose: string;
18
+ remote: Remote;
19
+ options: Options;
20
+ origin: ModuleFederation;
21
+ remoteInfo: RemoteInfo;
22
+ remoteSnapshot?: ModuleInfo;
23
+ }
24
+ declare class RemoteHandler {
25
+ host: ModuleFederation;
26
+ idToRemoteMap: Record<string, {
27
+ name: string;
28
+ expose: string;
29
+ }>;
30
+ hooks: PluginSystem<{
31
+ beforeRegisterRemote: SyncWaterfallHook<{
32
+ remote: Remote;
33
+ origin: ModuleFederation;
34
+ }>;
35
+ registerRemote: SyncWaterfallHook<{
36
+ remote: Remote;
37
+ origin: ModuleFederation;
38
+ }>;
39
+ beforeRequest: AsyncWaterfallHook<{
40
+ id: string;
41
+ options: Options;
42
+ origin: ModuleFederation;
43
+ }>;
44
+ onLoad: AsyncHook<[{
45
+ id: string;
46
+ expose: string;
47
+ pkgNameOrAlias: string;
48
+ remote: Remote;
49
+ options: ModuleOptions;
50
+ origin: ModuleFederation;
51
+ exposeModule: any;
52
+ exposeModuleFactory: any;
53
+ moduleInstance: Module$1;
54
+ }], void>;
55
+ handlePreloadModule: SyncHook<[{
56
+ id: string;
57
+ name: string;
58
+ remote: Remote;
59
+ remoteSnapshot: ModuleInfo;
60
+ preloadConfig: PreloadRemoteArgs;
61
+ origin: ModuleFederation;
62
+ }], void>;
63
+ errorLoadRemote: AsyncHook<[{
64
+ id: string;
65
+ error: unknown;
66
+ options?: any;
67
+ from: CallFrom;
68
+ lifecycle: "beforeRequest" | "beforeLoadShare" | "afterResolve" | "onLoad";
69
+ origin: ModuleFederation;
70
+ }], unknown>;
71
+ beforePreloadRemote: AsyncHook<[{
72
+ preloadOps: Array<PreloadRemoteArgs>;
73
+ options: Options;
74
+ origin: ModuleFederation;
75
+ }], false | void | Promise<false | void>>;
76
+ generatePreloadAssets: AsyncHook<[{
77
+ origin: ModuleFederation;
78
+ preloadOptions: PreloadOptions[number];
79
+ remote: Remote;
80
+ remoteInfo: RemoteInfo;
81
+ remoteSnapshot: ModuleInfo;
82
+ globalSnapshot: GlobalModuleInfo;
83
+ }], Promise<PreloadAssets>>;
84
+ afterPreloadRemote: AsyncHook<{
85
+ preloadOps: Array<PreloadRemoteArgs>;
86
+ options: Options;
87
+ origin: ModuleFederation;
88
+ }, false | void | Promise<false | void>>;
89
+ loadEntry: AsyncHook<[{
90
+ loaderHook: ModuleFederation["loaderHook"];
91
+ remoteInfo: RemoteInfo;
92
+ remoteEntryExports?: RemoteEntryExports;
93
+ }], Promise<RemoteEntryExports>>;
94
+ }>;
95
+ constructor(host: ModuleFederation);
96
+ formatAndRegisterRemote(globalOptions: Options, userOptions: UserOptions): Remote[];
97
+ setIdToRemoteMap(id: string, remoteMatchInfo: LoadRemoteMatch): void;
98
+ loadRemote<T>(id: string, options?: {
99
+ loadFactory?: boolean;
100
+ from: CallFrom;
101
+ }): Promise<T | null>;
102
+ preloadRemote(preloadOptions: Array<PreloadRemoteArgs>): Promise<void>;
103
+ registerRemotes(remotes: Remote[], options?: {
104
+ force?: boolean;
105
+ }): void;
106
+ getRemoteModuleAndOptions(options: {
107
+ id: string;
108
+ }): Promise<{
109
+ module: Module$1;
110
+ moduleOptions: ModuleOptions;
111
+ remoteMatchInfo: LoadRemoteMatch;
112
+ }>;
113
+ registerRemote(remote: Remote, targetRemotes: Remote[], options?: {
114
+ force?: boolean;
115
+ }): void;
116
+ private removeRemote;
117
+ } //#endregion
118
+ //#endregion
119
+ export { LoadRemoteMatch, RemoteHandler };
120
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,84 @@
1
+ import { AsyncHook } from "../utils/hooks/asyncHook.js";
2
+ import { SyncWaterfallHook } from "../utils/hooks/syncWaterfallHook.js";
3
+ import { AsyncWaterfallHook } from "../utils/hooks/asyncWaterfallHooks.js";
4
+ import { PluginSystem } from "../utils/hooks/pluginSystem.js";
5
+ import { CallFrom, InitScope, InitTokens, Options, ShareInfos, ShareScopeMap, ShareStrategy, Shared, UserOptions } from "../type/config.js";
6
+ import { LoadRemoteMatch } from "../remote/index.js";
7
+ import { Federation } from "../global.js";
8
+ import { ModuleFederation } from "../core.js";
9
+
10
+ //#region ../runtime-core/dist/shared/index.d.ts
11
+ //#region src/shared/index.d.ts
12
+ declare class SharedHandler {
13
+ host: ModuleFederation;
14
+ shareScopeMap: ShareScopeMap;
15
+ hooks: PluginSystem<{
16
+ beforeRegisterShare: SyncWaterfallHook<{
17
+ pkgName: string;
18
+ shared: Shared;
19
+ origin: ModuleFederation;
20
+ }>;
21
+ afterResolve: AsyncWaterfallHook<LoadRemoteMatch>;
22
+ beforeLoadShare: AsyncWaterfallHook<{
23
+ pkgName: string;
24
+ shareInfo?: Shared;
25
+ shared: Options["shared"];
26
+ origin: ModuleFederation;
27
+ }>;
28
+ loadShare: AsyncHook<[ModuleFederation, string, ShareInfos], false | void | Promise<false | void>>;
29
+ resolveShare: SyncWaterfallHook<{
30
+ shareScopeMap: ShareScopeMap;
31
+ scope: string;
32
+ pkgName: string;
33
+ version: string;
34
+ shareInfo: Shared;
35
+ GlobalFederation: Federation;
36
+ resolver: () => {
37
+ shared: Shared;
38
+ useTreesShaking: boolean;
39
+ } | undefined;
40
+ }>;
41
+ initContainerShareScopeMap: SyncWaterfallHook<{
42
+ shareScope: ShareScopeMap[string];
43
+ options: Options;
44
+ origin: ModuleFederation;
45
+ scopeName: string;
46
+ hostShareScopeMap?: ShareScopeMap;
47
+ }>;
48
+ }>;
49
+ initTokens: InitTokens;
50
+ constructor(host: ModuleFederation);
51
+ registerShared(globalOptions: Options, userOptions: UserOptions): {
52
+ newShareInfos: ShareInfos;
53
+ allShareInfos: {
54
+ [pkgName: string]: Shared[];
55
+ };
56
+ };
57
+ loadShare<T>(pkgName: string, extraOptions?: {
58
+ customShareInfo?: Partial<Shared>;
59
+ resolver?: (sharedOptions: ShareInfos[string]) => Shared;
60
+ }): Promise<false | (() => T | undefined)>;
61
+ /**
62
+ * This function initializes the sharing sequence (executed only once per share scope).
63
+ * It accepts one argument, the name of the share scope.
64
+ * If the share scope does not exist, it creates one.
65
+ */
66
+ initializeSharing(shareScopeName?: string, extraOptions?: {
67
+ initScope?: InitScope;
68
+ from?: CallFrom;
69
+ strategy?: ShareStrategy;
70
+ }): Array<Promise<void>>;
71
+ loadShareSync<T>(pkgName: string, extraOptions?: {
72
+ from?: 'build' | 'runtime';
73
+ customShareInfo?: Partial<Shared>;
74
+ resolver?: (sharedOptions: ShareInfos[string]) => Shared;
75
+ }): () => T | never;
76
+ initShareScopeMap(scopeName: string, shareScope: ShareScopeMap[string], extraOptions?: {
77
+ hostShareScopeMap?: ShareScopeMap;
78
+ }): void;
79
+ private setShared;
80
+ private _setGlobalShareScopeMap;
81
+ } //#endregion
82
+ //#endregion
83
+ export { SharedHandler };
84
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,117 @@
1
+ import { ModuleFederationRuntimePlugin } from "./plugin.js";
2
+ import { Module, RemoteEntryType, RemoteWithEntry, RemoteWithVersion, TreeShakingStatus } from "@module-federation/sdk";
3
+
4
+ //#region ../runtime-core/dist/type/config.d.ts
5
+ //#region src/type/config.d.ts
6
+ type Optional<T, K extends keyof T> = Omit<T, K> & Partial<T>;
7
+ interface RemoteInfoCommon {
8
+ alias?: string;
9
+ shareScope?: string | string[];
10
+ type?: RemoteEntryType;
11
+ entryGlobalName?: string;
12
+ }
13
+ type Remote = (RemoteWithEntry | RemoteWithVersion) & RemoteInfoCommon;
14
+ interface RemoteInfo {
15
+ alias?: string;
16
+ name: string;
17
+ version?: string;
18
+ buildVersion?: string;
19
+ entry: string;
20
+ type: RemoteEntryType;
21
+ entryGlobalName: string;
22
+ shareScope: string | string[];
23
+ }
24
+ interface SharedConfig {
25
+ singleton?: boolean;
26
+ requiredVersion: false | string;
27
+ eager?: boolean;
28
+ strictVersion?: boolean;
29
+ layer?: string | null;
30
+ }
31
+ type TreeShakingArgs = {
32
+ usedExports?: string[];
33
+ get?: SharedGetter;
34
+ lib?: () => Module;
35
+ status?: TreeShakingStatus;
36
+ mode?: 'server-calc' | 'runtime-infer';
37
+ loading?: null | Promise<any>;
38
+ loaded?: boolean;
39
+ useIn?: Array<string>;
40
+ };
41
+ type SharedBaseArgs = {
42
+ version?: string;
43
+ shareConfig?: SharedConfig;
44
+ scope?: string | Array<string>;
45
+ deps?: Array<string>;
46
+ strategy?: 'version-first' | 'loaded-first';
47
+ loaded?: boolean;
48
+ treeShaking?: TreeShakingArgs;
49
+ };
50
+ type SharedGetter = (() => () => Module) | (() => Promise<() => Module>);
51
+ type ShareArgs = (SharedBaseArgs & {
52
+ get: SharedGetter;
53
+ }) | (SharedBaseArgs & {
54
+ lib: () => Module;
55
+ }) | SharedBaseArgs;
56
+ type ShareStrategy = 'version-first' | 'loaded-first';
57
+ type Shared = {
58
+ version: string;
59
+ get: SharedGetter;
60
+ shareConfig: SharedConfig;
61
+ scope: Array<string>;
62
+ useIn: Array<string>;
63
+ from: string;
64
+ deps: Array<string>;
65
+ lib?: () => Module;
66
+ loaded?: boolean;
67
+ loading?: null | Promise<any>;
68
+ eager?: boolean;
69
+ /**
70
+ * @deprecated set in initOptions.shareStrategy instead
71
+ */
72
+ strategy: ShareStrategy;
73
+ treeShaking?: TreeShakingArgs;
74
+ };
75
+ type ShareScopeMap = {
76
+ [scope: string]: {
77
+ [pkgName: string]: {
78
+ [sharedVersion: string]: Shared;
79
+ };
80
+ };
81
+ };
82
+ type GlobalShareScopeMap = {
83
+ [instanceName: string]: ShareScopeMap;
84
+ };
85
+ type ShareInfos = {
86
+ [pkgName: string]: Shared[];
87
+ };
88
+ interface Options {
89
+ id?: string;
90
+ name: string;
91
+ version?: string;
92
+ remotes: Array<Remote>;
93
+ shared: ShareInfos;
94
+ plugins: Array<ModuleFederationRuntimePlugin>;
95
+ inBrowser: boolean;
96
+ shareStrategy?: ShareStrategy;
97
+ }
98
+ type UserOptions = Omit<Optional<Options, 'plugins'>, 'shared' | 'inBrowser'> & {
99
+ shared?: {
100
+ [pkgName: string]: ShareArgs | ShareArgs[];
101
+ };
102
+ };
103
+ type RemoteEntryInitOptions = {
104
+ version: string;
105
+ shareScopeMap?: ShareScopeMap;
106
+ shareScopeKeys: string | string[];
107
+ };
108
+ type InitTokens = Record<string, Record<string, any>>;
109
+ type InitScope = InitTokens[];
110
+ type CallFrom = 'build' | 'runtime';
111
+ type RemoteEntryExports = {
112
+ get: (id: string) => () => Promise<Module>;
113
+ init: (shareScope: ShareScopeMap[string], initScope?: InitScope, remoteEntryInitOPtions?: RemoteEntryInitOptions) => void | Promise<void>;
114
+ }; //#endregion
115
+ //#endregion
116
+ export { CallFrom, GlobalShareScopeMap, InitScope, InitTokens, Optional, Options, Remote, RemoteEntryExports, RemoteEntryInitOptions, RemoteInfo, RemoteInfoCommon, ShareArgs, ShareInfos, ShareScopeMap, ShareStrategy, Shared, SharedConfig, SharedGetter, TreeShakingArgs, UserOptions };
117
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ export { };