@module-federation/webpack-bundler-runtime 2.0.0 → 2.1.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 (107) 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/constant.cjs +8 -0
  8. package/dist/constant.cjs.map +1 -0
  9. package/dist/constant.d.ts +5 -1
  10. package/dist/constant.js +6 -0
  11. package/dist/constant.js.map +1 -0
  12. package/dist/consumes.cjs +55 -0
  13. package/dist/consumes.cjs.map +1 -0
  14. package/dist/consumes.js +55 -0
  15. package/dist/consumes.js.map +1 -0
  16. package/dist/getSharedFallbackGetter.cjs +27 -0
  17. package/dist/getSharedFallbackGetter.cjs.map +1 -0
  18. package/dist/getSharedFallbackGetter.js +26 -0
  19. package/dist/getSharedFallbackGetter.js.map +1 -0
  20. package/dist/getUsedExports.cjs +11 -0
  21. package/dist/getUsedExports.cjs.map +1 -0
  22. package/dist/getUsedExports.js +10 -0
  23. package/dist/getUsedExports.js.map +1 -0
  24. package/dist/index.cjs +50 -0
  25. package/dist/index.cjs.map +1 -0
  26. package/dist/index.d.ts +48 -2
  27. package/dist/index.js +36 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/init.cjs +82 -0
  30. package/dist/init.cjs.map +1 -0
  31. package/dist/init.js +80 -0
  32. package/dist/init.js.map +1 -0
  33. package/dist/initContainerEntry.cjs +43 -0
  34. package/dist/initContainerEntry.cjs.map +1 -0
  35. package/dist/initContainerEntry.d.ts +7 -0
  36. package/dist/initContainerEntry.js +42 -0
  37. package/dist/initContainerEntry.js.map +1 -0
  38. package/dist/initializeSharing.cjs +61 -0
  39. package/dist/initializeSharing.cjs.map +1 -0
  40. package/dist/initializeSharing.d.ts +13 -0
  41. package/dist/initializeSharing.js +61 -0
  42. package/dist/initializeSharing.js.map +1 -0
  43. package/dist/installInitialConsumes.cjs +63 -0
  44. package/dist/installInitialConsumes.cjs.map +1 -0
  45. package/dist/installInitialConsumes.js +63 -0
  46. package/dist/installInitialConsumes.js.map +1 -0
  47. package/dist/remotes.cjs +74 -0
  48. package/dist/remotes.cjs.map +1 -0
  49. package/dist/remotes.js +73 -0
  50. package/dist/remotes.js.map +1 -0
  51. package/dist/runtime-core/dist/core.d.ts +132 -0
  52. package/dist/runtime-core/dist/global.d.ts +25 -0
  53. package/dist/runtime-core/dist/helpers.d.ts +4 -0
  54. package/dist/runtime-core/dist/index.d.ts +15 -0
  55. package/dist/runtime-core/dist/module/index.d.ts +33 -0
  56. package/dist/runtime-core/dist/plugins/snapshot/SnapshotHandler.d.ts +68 -0
  57. package/dist/runtime-core/dist/remote/index.d.ts +121 -0
  58. package/dist/runtime-core/dist/shared/index.d.ts +85 -0
  59. package/dist/runtime-core/dist/type/config.d.ts +117 -0
  60. package/dist/runtime-core/dist/type/index.d.ts +3 -0
  61. package/dist/runtime-core/dist/type/plugin.d.ts +28 -0
  62. package/dist/runtime-core/dist/type/preload.d.ts +32 -0
  63. package/dist/runtime-core/dist/types.d.ts +4 -0
  64. package/dist/runtime-core/dist/utils/env.d.ts +1 -0
  65. package/dist/runtime-core/dist/utils/hooks/asyncHook.d.ts +11 -0
  66. package/dist/runtime-core/dist/utils/hooks/asyncWaterfallHooks.d.ts +13 -0
  67. package/dist/runtime-core/dist/utils/hooks/pluginSystem.d.ts +20 -0
  68. package/dist/runtime-core/dist/utils/hooks/syncHook.d.ts +17 -0
  69. package/dist/runtime-core/dist/utils/hooks/syncWaterfallHook.d.ts +12 -0
  70. package/dist/runtime-core/dist/utils/index.d.ts +2 -0
  71. package/dist/runtime-core/dist/utils/load.d.ts +16 -0
  72. package/dist/runtime-core/dist/utils/logger.d.ts +1 -0
  73. package/dist/runtime-core/dist/utils/manifest.d.ts +2 -0
  74. package/dist/runtime-core/dist/utils/plugin.d.ts +2 -0
  75. package/dist/runtime-core/dist/utils/preload.d.ts +4 -0
  76. package/dist/runtime-core/dist/utils/share.d.ts +3 -0
  77. package/dist/runtime-core/dist/utils/tool.d.ts +1 -0
  78. package/dist/sdk/dist/types/plugins/ModuleFederationPlugin.d.ts +13 -0
  79. package/dist/types.d.ts +201 -0
  80. package/dist/updateOptions.cjs +112 -0
  81. package/dist/updateOptions.cjs.map +1 -0
  82. package/dist/updateOptions.js +110 -0
  83. package/dist/updateOptions.js.map +1 -0
  84. package/package.json +9 -9
  85. package/dist/constant.cjs.cjs +0 -6
  86. package/dist/constant.cjs.cjs.map +0 -1
  87. package/dist/constant.cjs.d.ts +0 -1
  88. package/dist/constant.esm.js +0 -4
  89. package/dist/constant.esm.js.map +0 -1
  90. package/dist/index.cjs.cjs +0 -781
  91. package/dist/index.cjs.cjs.map +0 -1
  92. package/dist/index.cjs.d.ts +0 -2
  93. package/dist/index.esm.js +0 -767
  94. package/dist/index.esm.js.map +0 -1
  95. package/dist/src/attachShareScopeMap.d.ts +0 -2
  96. package/dist/src/constant.d.ts +0 -1
  97. package/dist/src/consumes.d.ts +0 -2
  98. package/dist/src/getSharedFallbackGetter.d.ts +0 -2
  99. package/dist/src/getUsedExports.d.ts +0 -2
  100. package/dist/src/index.d.ts +0 -4
  101. package/dist/src/init.d.ts +0 -4
  102. package/dist/src/initContainerEntry.d.ts +0 -2
  103. package/dist/src/initializeSharing.d.ts +0 -2
  104. package/dist/src/installInitialConsumes.d.ts +0 -2
  105. package/dist/src/remotes.d.ts +0 -2
  106. package/dist/src/types.d.ts +0 -194
  107. package/dist/src/updateOptions.d.ts +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateOptions.cjs","names":[],"sources":["../src/updateOptions.ts"],"sourcesContent":["import type {\n IdToRemoteMapItem,\n RemotesOptions,\n InstallInitialConsumesOptions,\n ConsumesOptions,\n} from './types';\nimport type {\n UserOptions,\n ShareArgs,\n SharedConfig,\n} from '@module-federation/runtime/types';\n\nexport function updateConsumeOptions(\n options: InstallInitialConsumesOptions | ConsumesOptions,\n) {\n const { webpackRequire, moduleToHandlerMapping } = options;\n const { consumesLoadingData, initializeSharingData } = webpackRequire;\n const { sharedFallback, bundlerRuntime, libraryType } =\n webpackRequire.federation;\n if (consumesLoadingData && !consumesLoadingData._updated) {\n const {\n moduleIdToConsumeDataMapping: updatedModuleIdToConsumeDataMapping = {},\n initialConsumes: updatedInitialConsumes = [],\n chunkMapping: updatedChunkMapping = {},\n } = consumesLoadingData;\n\n Object.entries(updatedModuleIdToConsumeDataMapping).forEach(\n ([id, data]) => {\n if (!moduleToHandlerMapping[id]) {\n moduleToHandlerMapping[id] = {\n // @ts-ignore\n getter: sharedFallback\n ? bundlerRuntime?.getSharedFallbackGetter({\n shareKey: data.shareKey,\n factory: data.fallback,\n webpackRequire,\n libraryType,\n })\n : data.fallback,\n treeShakingGetter: sharedFallback ? data.fallback : undefined,\n shareInfo: {\n shareConfig: {\n requiredVersion: data.requiredVersion,\n strictVersion: data.strictVersion,\n singleton: data.singleton,\n eager: data.eager,\n layer: data.layer,\n },\n scope: Array.isArray(data.shareScope)\n ? data.shareScope\n : [data.shareScope || 'default'],\n treeShaking: sharedFallback\n ? {\n get: data.fallback,\n mode: data.treeShakingMode,\n }\n : undefined,\n },\n shareKey: data.shareKey,\n };\n }\n },\n );\n\n if ('initialConsumes' in options) {\n const { initialConsumes = [] } = options;\n updatedInitialConsumes.forEach((id) => {\n if (!initialConsumes.includes(id)) {\n initialConsumes.push(id);\n }\n });\n }\n\n if ('chunkMapping' in options) {\n const { chunkMapping = {} } = options;\n Object.entries(updatedChunkMapping).forEach(([id, chunkModules]) => {\n if (!chunkMapping[id]) {\n chunkMapping[id] = [];\n }\n chunkModules.forEach((moduleId) => {\n if (!chunkMapping[id].includes(moduleId)) {\n chunkMapping[id].push(moduleId);\n }\n });\n });\n }\n consumesLoadingData._updated = 1;\n }\n\n if (initializeSharingData && !initializeSharingData._updated) {\n const { federation } = webpackRequire;\n if (\n !federation.instance ||\n !initializeSharingData.scopeToSharingDataMapping\n ) {\n return;\n }\n const shared: Record<string, Array<ShareArgs>> = {};\n for (let [scope, stages] of Object.entries(\n initializeSharingData.scopeToSharingDataMapping,\n )) {\n for (let stage of stages) {\n if (typeof stage === 'object' && stage !== null) {\n const {\n name,\n version,\n factory,\n eager,\n singleton,\n requiredVersion,\n strictVersion,\n } = stage;\n const shareConfig: SharedConfig = {\n requiredVersion: `^${version}`,\n };\n const isValidValue = function (\n val: unknown,\n ): val is NonNullable<unknown> {\n return typeof val !== 'undefined';\n };\n if (isValidValue(singleton)) {\n shareConfig.singleton = singleton;\n }\n if (isValidValue(requiredVersion)) {\n shareConfig.requiredVersion = requiredVersion;\n }\n if (isValidValue(eager)) {\n shareConfig.eager = eager;\n }\n if (isValidValue(strictVersion)) {\n shareConfig.strictVersion = strictVersion;\n }\n const options = {\n version,\n scope: [scope],\n shareConfig,\n get: factory,\n };\n if (shared[name]) {\n shared[name].push(options);\n } else {\n shared[name] = [options];\n }\n }\n }\n }\n federation.instance.registerShared(shared);\n initializeSharingData._updated = 1;\n }\n}\n\nexport function updateRemoteOptions(options: RemotesOptions) {\n const {\n webpackRequire,\n idToExternalAndNameMapping = {},\n idToRemoteMap = {},\n chunkMapping = {},\n } = options;\n const { remotesLoadingData } = webpackRequire;\n const remoteInfos =\n webpackRequire.federation?.bundlerRuntimeOptions?.remotes?.remoteInfos;\n if (!remotesLoadingData || remotesLoadingData._updated || !remoteInfos) {\n return;\n }\n const { chunkMapping: updatedChunkMapping, moduleIdToRemoteDataMapping } =\n remotesLoadingData;\n if (!updatedChunkMapping || !moduleIdToRemoteDataMapping) {\n return;\n }\n for (let [moduleId, data] of Object.entries(moduleIdToRemoteDataMapping)) {\n if (!idToExternalAndNameMapping[moduleId]) {\n idToExternalAndNameMapping[moduleId] = [\n data.shareScope,\n data.name,\n data.externalModuleId,\n ];\n }\n if (!idToRemoteMap[moduleId] && remoteInfos[data.remoteName]) {\n const items = remoteInfos[data.remoteName];\n idToRemoteMap[moduleId] ||= [];\n items.forEach((item) => {\n if (!idToRemoteMap[moduleId].includes(item)) {\n idToRemoteMap[moduleId].push(item);\n }\n });\n }\n }\n\n if (chunkMapping) {\n Object.entries(updatedChunkMapping).forEach(([id, chunkModules]) => {\n if (!chunkMapping[id]) {\n chunkMapping[id] = [];\n }\n chunkModules.forEach((moduleId) => {\n if (!chunkMapping[id].includes(moduleId)) {\n chunkMapping[id].push(moduleId);\n }\n });\n });\n }\n remotesLoadingData._updated = 1;\n}\n"],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ //#region src/updateOptions.ts
2
+ function updateConsumeOptions(options) {
3
+ const { webpackRequire, moduleToHandlerMapping } = options;
4
+ const { consumesLoadingData, initializeSharingData } = webpackRequire;
5
+ const { sharedFallback, bundlerRuntime, libraryType } = webpackRequire.federation;
6
+ if (consumesLoadingData && !consumesLoadingData._updated) {
7
+ const { moduleIdToConsumeDataMapping: updatedModuleIdToConsumeDataMapping = {}, initialConsumes: updatedInitialConsumes = [], chunkMapping: updatedChunkMapping = {} } = consumesLoadingData;
8
+ Object.entries(updatedModuleIdToConsumeDataMapping).forEach(([id, data]) => {
9
+ if (!moduleToHandlerMapping[id]) moduleToHandlerMapping[id] = {
10
+ getter: sharedFallback ? bundlerRuntime?.getSharedFallbackGetter({
11
+ shareKey: data.shareKey,
12
+ factory: data.fallback,
13
+ webpackRequire,
14
+ libraryType
15
+ }) : data.fallback,
16
+ treeShakingGetter: sharedFallback ? data.fallback : void 0,
17
+ shareInfo: {
18
+ shareConfig: {
19
+ requiredVersion: data.requiredVersion,
20
+ strictVersion: data.strictVersion,
21
+ singleton: data.singleton,
22
+ eager: data.eager,
23
+ layer: data.layer
24
+ },
25
+ scope: Array.isArray(data.shareScope) ? data.shareScope : [data.shareScope || "default"],
26
+ treeShaking: sharedFallback ? {
27
+ get: data.fallback,
28
+ mode: data.treeShakingMode
29
+ } : void 0
30
+ },
31
+ shareKey: data.shareKey
32
+ };
33
+ });
34
+ if ("initialConsumes" in options) {
35
+ const { initialConsumes = [] } = options;
36
+ updatedInitialConsumes.forEach((id) => {
37
+ if (!initialConsumes.includes(id)) initialConsumes.push(id);
38
+ });
39
+ }
40
+ if ("chunkMapping" in options) {
41
+ const { chunkMapping = {} } = options;
42
+ Object.entries(updatedChunkMapping).forEach(([id, chunkModules]) => {
43
+ if (!chunkMapping[id]) chunkMapping[id] = [];
44
+ chunkModules.forEach((moduleId) => {
45
+ if (!chunkMapping[id].includes(moduleId)) chunkMapping[id].push(moduleId);
46
+ });
47
+ });
48
+ }
49
+ consumesLoadingData._updated = 1;
50
+ }
51
+ if (initializeSharingData && !initializeSharingData._updated) {
52
+ const { federation } = webpackRequire;
53
+ if (!federation.instance || !initializeSharingData.scopeToSharingDataMapping) return;
54
+ const shared = {};
55
+ for (let [scope, stages] of Object.entries(initializeSharingData.scopeToSharingDataMapping)) for (let stage of stages) if (typeof stage === "object" && stage !== null) {
56
+ const { name, version, factory, eager, singleton, requiredVersion, strictVersion } = stage;
57
+ const shareConfig = { requiredVersion: `^${version}` };
58
+ const isValidValue = function(val) {
59
+ return typeof val !== "undefined";
60
+ };
61
+ if (isValidValue(singleton)) shareConfig.singleton = singleton;
62
+ if (isValidValue(requiredVersion)) shareConfig.requiredVersion = requiredVersion;
63
+ if (isValidValue(eager)) shareConfig.eager = eager;
64
+ if (isValidValue(strictVersion)) shareConfig.strictVersion = strictVersion;
65
+ const options = {
66
+ version,
67
+ scope: [scope],
68
+ shareConfig,
69
+ get: factory
70
+ };
71
+ if (shared[name]) shared[name].push(options);
72
+ else shared[name] = [options];
73
+ }
74
+ federation.instance.registerShared(shared);
75
+ initializeSharingData._updated = 1;
76
+ }
77
+ }
78
+ function updateRemoteOptions(options) {
79
+ const { webpackRequire, idToExternalAndNameMapping = {}, idToRemoteMap = {}, chunkMapping = {} } = options;
80
+ const { remotesLoadingData } = webpackRequire;
81
+ const remoteInfos = webpackRequire.federation?.bundlerRuntimeOptions?.remotes?.remoteInfos;
82
+ if (!remotesLoadingData || remotesLoadingData._updated || !remoteInfos) return;
83
+ const { chunkMapping: updatedChunkMapping, moduleIdToRemoteDataMapping } = remotesLoadingData;
84
+ if (!updatedChunkMapping || !moduleIdToRemoteDataMapping) return;
85
+ for (let [moduleId, data] of Object.entries(moduleIdToRemoteDataMapping)) {
86
+ if (!idToExternalAndNameMapping[moduleId]) idToExternalAndNameMapping[moduleId] = [
87
+ data.shareScope,
88
+ data.name,
89
+ data.externalModuleId
90
+ ];
91
+ if (!idToRemoteMap[moduleId] && remoteInfos[data.remoteName]) {
92
+ const items = remoteInfos[data.remoteName];
93
+ idToRemoteMap[moduleId] ||= [];
94
+ items.forEach((item) => {
95
+ if (!idToRemoteMap[moduleId].includes(item)) idToRemoteMap[moduleId].push(item);
96
+ });
97
+ }
98
+ }
99
+ if (chunkMapping) Object.entries(updatedChunkMapping).forEach(([id, chunkModules]) => {
100
+ if (!chunkMapping[id]) chunkMapping[id] = [];
101
+ chunkModules.forEach((moduleId) => {
102
+ if (!chunkMapping[id].includes(moduleId)) chunkMapping[id].push(moduleId);
103
+ });
104
+ });
105
+ remotesLoadingData._updated = 1;
106
+ }
107
+
108
+ //#endregion
109
+ export { updateConsumeOptions, updateRemoteOptions };
110
+ //# sourceMappingURL=updateOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateOptions.js","names":[],"sources":["../src/updateOptions.ts"],"sourcesContent":["import type {\n IdToRemoteMapItem,\n RemotesOptions,\n InstallInitialConsumesOptions,\n ConsumesOptions,\n} from './types';\nimport type {\n UserOptions,\n ShareArgs,\n SharedConfig,\n} from '@module-federation/runtime/types';\n\nexport function updateConsumeOptions(\n options: InstallInitialConsumesOptions | ConsumesOptions,\n) {\n const { webpackRequire, moduleToHandlerMapping } = options;\n const { consumesLoadingData, initializeSharingData } = webpackRequire;\n const { sharedFallback, bundlerRuntime, libraryType } =\n webpackRequire.federation;\n if (consumesLoadingData && !consumesLoadingData._updated) {\n const {\n moduleIdToConsumeDataMapping: updatedModuleIdToConsumeDataMapping = {},\n initialConsumes: updatedInitialConsumes = [],\n chunkMapping: updatedChunkMapping = {},\n } = consumesLoadingData;\n\n Object.entries(updatedModuleIdToConsumeDataMapping).forEach(\n ([id, data]) => {\n if (!moduleToHandlerMapping[id]) {\n moduleToHandlerMapping[id] = {\n // @ts-ignore\n getter: sharedFallback\n ? bundlerRuntime?.getSharedFallbackGetter({\n shareKey: data.shareKey,\n factory: data.fallback,\n webpackRequire,\n libraryType,\n })\n : data.fallback,\n treeShakingGetter: sharedFallback ? data.fallback : undefined,\n shareInfo: {\n shareConfig: {\n requiredVersion: data.requiredVersion,\n strictVersion: data.strictVersion,\n singleton: data.singleton,\n eager: data.eager,\n layer: data.layer,\n },\n scope: Array.isArray(data.shareScope)\n ? data.shareScope\n : [data.shareScope || 'default'],\n treeShaking: sharedFallback\n ? {\n get: data.fallback,\n mode: data.treeShakingMode,\n }\n : undefined,\n },\n shareKey: data.shareKey,\n };\n }\n },\n );\n\n if ('initialConsumes' in options) {\n const { initialConsumes = [] } = options;\n updatedInitialConsumes.forEach((id) => {\n if (!initialConsumes.includes(id)) {\n initialConsumes.push(id);\n }\n });\n }\n\n if ('chunkMapping' in options) {\n const { chunkMapping = {} } = options;\n Object.entries(updatedChunkMapping).forEach(([id, chunkModules]) => {\n if (!chunkMapping[id]) {\n chunkMapping[id] = [];\n }\n chunkModules.forEach((moduleId) => {\n if (!chunkMapping[id].includes(moduleId)) {\n chunkMapping[id].push(moduleId);\n }\n });\n });\n }\n consumesLoadingData._updated = 1;\n }\n\n if (initializeSharingData && !initializeSharingData._updated) {\n const { federation } = webpackRequire;\n if (\n !federation.instance ||\n !initializeSharingData.scopeToSharingDataMapping\n ) {\n return;\n }\n const shared: Record<string, Array<ShareArgs>> = {};\n for (let [scope, stages] of Object.entries(\n initializeSharingData.scopeToSharingDataMapping,\n )) {\n for (let stage of stages) {\n if (typeof stage === 'object' && stage !== null) {\n const {\n name,\n version,\n factory,\n eager,\n singleton,\n requiredVersion,\n strictVersion,\n } = stage;\n const shareConfig: SharedConfig = {\n requiredVersion: `^${version}`,\n };\n const isValidValue = function (\n val: unknown,\n ): val is NonNullable<unknown> {\n return typeof val !== 'undefined';\n };\n if (isValidValue(singleton)) {\n shareConfig.singleton = singleton;\n }\n if (isValidValue(requiredVersion)) {\n shareConfig.requiredVersion = requiredVersion;\n }\n if (isValidValue(eager)) {\n shareConfig.eager = eager;\n }\n if (isValidValue(strictVersion)) {\n shareConfig.strictVersion = strictVersion;\n }\n const options = {\n version,\n scope: [scope],\n shareConfig,\n get: factory,\n };\n if (shared[name]) {\n shared[name].push(options);\n } else {\n shared[name] = [options];\n }\n }\n }\n }\n federation.instance.registerShared(shared);\n initializeSharingData._updated = 1;\n }\n}\n\nexport function updateRemoteOptions(options: RemotesOptions) {\n const {\n webpackRequire,\n idToExternalAndNameMapping = {},\n idToRemoteMap = {},\n chunkMapping = {},\n } = options;\n const { remotesLoadingData } = webpackRequire;\n const remoteInfos =\n webpackRequire.federation?.bundlerRuntimeOptions?.remotes?.remoteInfos;\n if (!remotesLoadingData || remotesLoadingData._updated || !remoteInfos) {\n return;\n }\n const { chunkMapping: updatedChunkMapping, moduleIdToRemoteDataMapping } =\n remotesLoadingData;\n if (!updatedChunkMapping || !moduleIdToRemoteDataMapping) {\n return;\n }\n for (let [moduleId, data] of Object.entries(moduleIdToRemoteDataMapping)) {\n if (!idToExternalAndNameMapping[moduleId]) {\n idToExternalAndNameMapping[moduleId] = [\n data.shareScope,\n data.name,\n data.externalModuleId,\n ];\n }\n if (!idToRemoteMap[moduleId] && remoteInfos[data.remoteName]) {\n const items = remoteInfos[data.remoteName];\n idToRemoteMap[moduleId] ||= [];\n items.forEach((item) => {\n if (!idToRemoteMap[moduleId].includes(item)) {\n idToRemoteMap[moduleId].push(item);\n }\n });\n }\n }\n\n if (chunkMapping) {\n Object.entries(updatedChunkMapping).forEach(([id, chunkModules]) => {\n if (!chunkMapping[id]) {\n chunkMapping[id] = [];\n }\n chunkModules.forEach((moduleId) => {\n if (!chunkMapping[id].includes(moduleId)) {\n chunkMapping[id].push(moduleId);\n }\n });\n });\n }\n remotesLoadingData._updated = 1;\n}\n"],"mappings":";AAYA,SAAgB,qBACd,SACA;CACA,MAAM,EAAE,gBAAgB,2BAA2B;CACnD,MAAM,EAAE,qBAAqB,0BAA0B;CACvD,MAAM,EAAE,gBAAgB,gBAAgB,gBACtC,eAAe;AACjB,KAAI,uBAAuB,CAAC,oBAAoB,UAAU;EACxD,MAAM,EACJ,8BAA8B,sCAAsC,EAAE,EACtE,iBAAiB,yBAAyB,EAAE,EAC5C,cAAc,sBAAsB,EAAE,KACpC;AAEJ,SAAO,QAAQ,oCAAoC,CAAC,SACjD,CAAC,IAAI,UAAU;AACd,OAAI,CAAC,uBAAuB,IAC1B,wBAAuB,MAAM;IAE3B,QAAQ,iBACJ,gBAAgB,wBAAwB;KACtC,UAAU,KAAK;KACf,SAAS,KAAK;KACd;KACA;KACD,CAAC,GACF,KAAK;IACT,mBAAmB,iBAAiB,KAAK,WAAW;IACpD,WAAW;KACT,aAAa;MACX,iBAAiB,KAAK;MACtB,eAAe,KAAK;MACpB,WAAW,KAAK;MAChB,OAAO,KAAK;MACZ,OAAO,KAAK;MACb;KACD,OAAO,MAAM,QAAQ,KAAK,WAAW,GACjC,KAAK,aACL,CAAC,KAAK,cAAc,UAAU;KAClC,aAAa,iBACT;MACE,KAAK,KAAK;MACV,MAAM,KAAK;MACZ,GACD;KACL;IACD,UAAU,KAAK;IAChB;IAGN;AAED,MAAI,qBAAqB,SAAS;GAChC,MAAM,EAAE,kBAAkB,EAAE,KAAK;AACjC,0BAAuB,SAAS,OAAO;AACrC,QAAI,CAAC,gBAAgB,SAAS,GAAG,CAC/B,iBAAgB,KAAK,GAAG;KAE1B;;AAGJ,MAAI,kBAAkB,SAAS;GAC7B,MAAM,EAAE,eAAe,EAAE,KAAK;AAC9B,UAAO,QAAQ,oBAAoB,CAAC,SAAS,CAAC,IAAI,kBAAkB;AAClE,QAAI,CAAC,aAAa,IAChB,cAAa,MAAM,EAAE;AAEvB,iBAAa,SAAS,aAAa;AACjC,SAAI,CAAC,aAAa,IAAI,SAAS,SAAS,CACtC,cAAa,IAAI,KAAK,SAAS;MAEjC;KACF;;AAEJ,sBAAoB,WAAW;;AAGjC,KAAI,yBAAyB,CAAC,sBAAsB,UAAU;EAC5D,MAAM,EAAE,eAAe;AACvB,MACE,CAAC,WAAW,YACZ,CAAC,sBAAsB,0BAEvB;EAEF,MAAM,SAA2C,EAAE;AACnD,OAAK,IAAI,CAAC,OAAO,WAAW,OAAO,QACjC,sBAAsB,0BACvB,CACC,MAAK,IAAI,SAAS,OAChB,KAAI,OAAO,UAAU,YAAY,UAAU,MAAM;GAC/C,MAAM,EACJ,MACA,SACA,SACA,OACA,WACA,iBACA,kBACE;GACJ,MAAM,cAA4B,EAChC,iBAAiB,IAAI,WACtB;GACD,MAAM,eAAe,SACnB,KAC6B;AAC7B,WAAO,OAAO,QAAQ;;AAExB,OAAI,aAAa,UAAU,CACzB,aAAY,YAAY;AAE1B,OAAI,aAAa,gBAAgB,CAC/B,aAAY,kBAAkB;AAEhC,OAAI,aAAa,MAAM,CACrB,aAAY,QAAQ;AAEtB,OAAI,aAAa,cAAc,CAC7B,aAAY,gBAAgB;GAE9B,MAAM,UAAU;IACd;IACA,OAAO,CAAC,MAAM;IACd;IACA,KAAK;IACN;AACD,OAAI,OAAO,MACT,QAAO,MAAM,KAAK,QAAQ;OAE1B,QAAO,QAAQ,CAAC,QAAQ;;AAKhC,aAAW,SAAS,eAAe,OAAO;AAC1C,wBAAsB,WAAW;;;AAIrC,SAAgB,oBAAoB,SAAyB;CAC3D,MAAM,EACJ,gBACA,6BAA6B,EAAE,EAC/B,gBAAgB,EAAE,EAClB,eAAe,EAAE,KACf;CACJ,MAAM,EAAE,uBAAuB;CAC/B,MAAM,cACJ,eAAe,YAAY,uBAAuB,SAAS;AAC7D,KAAI,CAAC,sBAAsB,mBAAmB,YAAY,CAAC,YACzD;CAEF,MAAM,EAAE,cAAc,qBAAqB,gCACzC;AACF,KAAI,CAAC,uBAAuB,CAAC,4BAC3B;AAEF,MAAK,IAAI,CAAC,UAAU,SAAS,OAAO,QAAQ,4BAA4B,EAAE;AACxE,MAAI,CAAC,2BAA2B,UAC9B,4BAA2B,YAAY;GACrC,KAAK;GACL,KAAK;GACL,KAAK;GACN;AAEH,MAAI,CAAC,cAAc,aAAa,YAAY,KAAK,aAAa;GAC5D,MAAM,QAAQ,YAAY,KAAK;AAC/B,iBAAc,cAAc,EAAE;AAC9B,SAAM,SAAS,SAAS;AACtB,QAAI,CAAC,cAAc,UAAU,SAAS,KAAK,CACzC,eAAc,UAAU,KAAK,KAAK;KAEpC;;;AAIN,KAAI,aACF,QAAO,QAAQ,oBAAoB,CAAC,SAAS,CAAC,IAAI,kBAAkB;AAClE,MAAI,CAAC,aAAa,IAChB,cAAa,MAAM,EAAE;AAEvB,eAAa,SAAS,aAAa;AACjC,OAAI,CAAC,aAAa,IAAI,SAAS,SAAS,CACtC,cAAa,IAAI,KAAK,SAAS;IAEjC;GACF;AAEJ,oBAAmB,WAAW"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "public": true,
3
3
  "name": "@module-federation/webpack-bundler-runtime",
4
- "version": "2.0.0",
4
+ "version": "2.1.0",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "description": "Module Federation Runtime for webpack",
@@ -22,32 +22,32 @@
22
22
  "directory": "packages/webpack-bundler-runtime"
23
23
  },
24
24
  "author": "zhanghang <hanric.zhang@gmail.com>",
25
- "main": "./dist/index.cjs.cjs",
26
- "module": "./dist/index.esm.js",
25
+ "main": "./dist/index.cjs",
26
+ "module": "./dist/index.js",
27
27
  "types": "./dist/index.d.ts",
28
28
  "dependencies": {
29
- "@module-federation/runtime": "2.0.0",
30
- "@module-federation/sdk": "2.0.0"
29
+ "@module-federation/runtime": "2.1.0",
30
+ "@module-federation/sdk": "2.1.0"
31
31
  },
32
32
  "exports": {
33
33
  ".": {
34
34
  "import": {
35
35
  "types": "./dist/index.d.ts",
36
- "default": "./dist/index.esm.js"
36
+ "default": "./dist/index.js"
37
37
  },
38
38
  "require": {
39
39
  "types": "./dist/index.d.ts",
40
- "default": "./dist/index.cjs.cjs"
40
+ "default": "./dist/index.cjs"
41
41
  }
42
42
  },
43
43
  "./constant": {
44
44
  "import": {
45
45
  "types": "./dist/constant.d.ts",
46
- "default": "./dist/constant.esm.js"
46
+ "default": "./dist/constant.js"
47
47
  },
48
48
  "require": {
49
49
  "types": "./dist/constant.d.ts",
50
- "default": "./dist/constant.cjs.cjs"
50
+ "default": "./dist/constant.cjs"
51
51
  }
52
52
  },
53
53
  "./*": "./*"
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- const FEDERATION_SUPPORTED_TYPES = ['script'];
4
-
5
- exports.FEDERATION_SUPPORTED_TYPES = FEDERATION_SUPPORTED_TYPES;
6
- //# sourceMappingURL=constant.cjs.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constant.cjs.cjs","sources":["../src/constant.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAO,MAAM,0BAA0B,GAAG,CAAC,QAAQ;;;;"}
@@ -1 +0,0 @@
1
- export * from "./src/constant";
@@ -1,4 +0,0 @@
1
- const FEDERATION_SUPPORTED_TYPES = ['script'];
2
-
3
- export { FEDERATION_SUPPORTED_TYPES };
4
- //# sourceMappingURL=constant.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constant.esm.js","sources":["../src/constant.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAO,MAAM,0BAA0B,GAAG,CAAC,QAAQ;;;;"}