@module-federation/webpack-bundler-runtime 2.8.2 → 2.9.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.
package/dist/consumes.cjs CHANGED
@@ -41,7 +41,14 @@ function consumes(options) {
41
41
  usedExports,
42
42
  useIn: [federationInstance.options.name]
43
43
  };
44
- const promise = federationInstance.loadShare(shareKey, { customShareInfo }).then((factory) => {
44
+ const promise = federationInstance.loadShare(shareKey, {
45
+ customShareInfo,
46
+ context: {
47
+ trigger: "build",
48
+ moduleId: id,
49
+ chunkId
50
+ }
51
+ }).then((factory) => {
45
52
  if (factory === false) {
46
53
  if (typeof getter !== "function") throw new Error(require_getShortErrorMsg.getShortErrorMsg(require_error_codes.RUNTIME_012, { [require_error_codes.RUNTIME_012]: "The getter for the shared module is not a function. This may be caused by setting \"shared.import: false\" without the host providing the corresponding lib." }, { shareKey }));
47
54
  return treeShakingGetter?.() || getter();
@@ -1 +1 @@
1
- {"version":3,"file":"consumes.cjs","names":["getUsedExports","getShortErrorMsg","RUNTIME_012"],"sources":["../src/consumes.ts"],"sourcesContent":["import { ConsumesOptions } from './types';\nimport { attachShareScopeMap } from './attachShareScopeMap';\nimport { updateConsumeOptions } from './updateOptions';\nimport { getUsedExports } from './getUsedExports';\nimport type { Shared } from '@module-federation/runtime/types';\nimport { getShortErrorMsg, RUNTIME_012 } from '@module-federation/error-codes';\n\nexport function consumes(options: ConsumesOptions) {\n updateConsumeOptions(options);\n const {\n chunkId,\n promises,\n installedModules,\n webpackRequire,\n chunkMapping,\n moduleToHandlerMapping,\n } = options;\n\n attachShareScopeMap(webpackRequire);\n if (webpackRequire.o(chunkMapping, chunkId)) {\n chunkMapping[chunkId].forEach((id) => {\n if (webpackRequire.o(installedModules, id)) {\n return promises.push(installedModules[id] as Promise<any>);\n }\n const onFactory = (factory: () => any) => {\n installedModules[id] = 0;\n webpackRequire.m[id] = (module) => {\n delete webpackRequire.c[id];\n const result = factory();\n // Add layer property from shareConfig if available\n const { shareInfo } = moduleToHandlerMapping[id];\n if (\n shareInfo?.shareConfig?.layer &&\n result &&\n typeof result === 'object'\n ) {\n try {\n // Only set layer if it's not already defined or if it's undefined\n if (\n !result.hasOwnProperty('layer') ||\n (result as any).layer === undefined\n ) {\n (result as any).layer = shareInfo.shareConfig.layer;\n }\n } catch (e) {\n // Ignore if layer property is read-only\n }\n }\n module.exports = result;\n };\n };\n const onError = (error: unknown) => {\n delete installedModules[id];\n webpackRequire.m[id] = (module) => {\n delete webpackRequire.c[id];\n throw error;\n };\n };\n try {\n const federationInstance = webpackRequire.federation.instance;\n if (!federationInstance) {\n throw new Error('Federation instance not found!');\n }\n const { shareKey, getter, shareInfo, treeShakingGetter } =\n moduleToHandlerMapping[id];\n const usedExports = getUsedExports(webpackRequire, shareKey);\n const customShareInfo: Partial<Shared> = { ...shareInfo };\n // compatibility for rspack, which will wrap scope with array, but webpack will not\n // https://github.com/web-infra-dev/rspack/blob/main/packages/rspack/src/runtime/moduleFederationDefaultRuntime.js#L95\n if (\n Array.isArray(customShareInfo.scope) &&\n Array.isArray(customShareInfo.scope[0])\n ) {\n customShareInfo.scope = customShareInfo.scope[0];\n }\n if (usedExports) {\n customShareInfo.treeShaking = {\n usedExports,\n useIn: [federationInstance.options.name],\n };\n }\n const promise = federationInstance\n .loadShare(shareKey, {\n customShareInfo,\n })\n .then((factory: any) => {\n if (factory === false) {\n if (typeof getter !== 'function') {\n throw new Error(\n getShortErrorMsg(\n RUNTIME_012,\n {\n [RUNTIME_012]:\n 'The getter for the shared module is not a function. This may be caused by setting \"shared.import: false\" without the host providing the corresponding lib.',\n },\n { shareKey },\n ),\n );\n }\n return treeShakingGetter?.() || getter();\n }\n return factory;\n });\n\n if (promise.then) {\n promises.push(\n (installedModules[id] = promise.then(onFactory).catch(onError)),\n );\n } else {\n // @ts-ignore maintain previous logic\n onFactory(promise);\n }\n } catch (e) {\n onError(e);\n }\n });\n }\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,SAAS,SAA0B;AACjD,4CAAqB,QAAQ;CAC7B,MAAM,EACJ,SACA,UACA,kBACA,gBACA,cACA,2BACE;AAEJ,iDAAoB,eAAe;AACnC,KAAI,eAAe,EAAE,cAAc,QAAQ,CACzC,cAAa,SAAS,SAAS,OAAO;AACpC,MAAI,eAAe,EAAE,kBAAkB,GAAG,CACxC,QAAO,SAAS,KAAK,iBAAiB,IAAoB;EAE5D,MAAM,aAAa,YAAuB;AACxC,oBAAiB,MAAM;AACvB,kBAAe,EAAE,OAAO,WAAW;AACjC,WAAO,eAAe,EAAE;IACxB,MAAM,SAAS,SAAS;IAExB,MAAM,EAAE,cAAc,uBAAuB;AAC7C,QACE,WAAW,aAAa,SACxB,UACA,OAAO,WAAW,SAElB,KAAI;AAEF,SACE,CAAC,OAAO,eAAe,QAAQ,IAC9B,OAAe,UAAU,OAE1B,CAAC,OAAe,QAAQ,UAAU,YAAY;aAEzC,GAAG;AAId,WAAO,UAAU;;;EAGrB,MAAM,WAAW,UAAmB;AAClC,UAAO,iBAAiB;AACxB,kBAAe,EAAE,OAAO,WAAW;AACjC,WAAO,eAAe,EAAE;AACxB,UAAM;;;AAGV,MAAI;GACF,MAAM,qBAAqB,eAAe,WAAW;AACrD,OAAI,CAAC,mBACH,OAAM,IAAI,MAAM,iCAAiC;GAEnD,MAAM,EAAE,UAAU,QAAQ,WAAW,sBACnC,uBAAuB;GACzB,MAAM,cAAcA,sCAAe,gBAAgB,SAAS;GAC5D,MAAM,kBAAmC,EAAE,GAAG,WAAW;AAGzD,OACE,MAAM,QAAQ,gBAAgB,MAAM,IACpC,MAAM,QAAQ,gBAAgB,MAAM,GAAG,CAEvC,iBAAgB,QAAQ,gBAAgB,MAAM;AAEhD,OAAI,YACF,iBAAgB,cAAc;IAC5B;IACA,OAAO,CAAC,mBAAmB,QAAQ,KAAK;IACzC;GAEH,MAAM,UAAU,mBACb,UAAU,UAAU,EACnB,iBACD,CAAC,CACD,MAAM,YAAiB;AACtB,QAAI,YAAY,OAAO;AACrB,SAAI,OAAO,WAAW,WACpB,OAAM,IAAI,MACRC,0CACEC,iCACA,GACGA,kCACC,gKACH,EACD,EAAE,UAAU,CACb,CACF;AAEH,YAAO,qBAAqB,IAAI,QAAQ;;AAE1C,WAAO;KACP;AAEJ,OAAI,QAAQ,KACV,UAAS,KACN,iBAAiB,MAAM,QAAQ,KAAK,UAAU,CAAC,MAAM,QAAQ,CAC/D;OAGD,WAAU,QAAQ;WAEb,GAAG;AACV,WAAQ,EAAE;;GAEZ"}
1
+ {"version":3,"file":"consumes.cjs","names":["getUsedExports","getShortErrorMsg","RUNTIME_012"],"sources":["../src/consumes.ts"],"sourcesContent":["import { ConsumesOptions } from './types';\nimport { attachShareScopeMap } from './attachShareScopeMap';\nimport { updateConsumeOptions } from './updateOptions';\nimport { getUsedExports } from './getUsedExports';\nimport type { Shared } from '@module-federation/runtime/types';\nimport { getShortErrorMsg, RUNTIME_012 } from '@module-federation/error-codes';\n\nexport function consumes(options: ConsumesOptions) {\n updateConsumeOptions(options);\n const {\n chunkId,\n promises,\n installedModules,\n webpackRequire,\n chunkMapping,\n moduleToHandlerMapping,\n } = options;\n\n attachShareScopeMap(webpackRequire);\n if (webpackRequire.o(chunkMapping, chunkId)) {\n chunkMapping[chunkId].forEach((id) => {\n if (webpackRequire.o(installedModules, id)) {\n return promises.push(installedModules[id] as Promise<any>);\n }\n const onFactory = (factory: () => any) => {\n installedModules[id] = 0;\n webpackRequire.m[id] = (module) => {\n delete webpackRequire.c[id];\n const result = factory();\n // Add layer property from shareConfig if available\n const { shareInfo } = moduleToHandlerMapping[id];\n if (\n shareInfo?.shareConfig?.layer &&\n result &&\n typeof result === 'object'\n ) {\n try {\n // Only set layer if it's not already defined or if it's undefined\n if (\n !result.hasOwnProperty('layer') ||\n (result as any).layer === undefined\n ) {\n (result as any).layer = shareInfo.shareConfig.layer;\n }\n } catch (e) {\n // Ignore if layer property is read-only\n }\n }\n module.exports = result;\n };\n };\n const onError = (error: unknown) => {\n delete installedModules[id];\n webpackRequire.m[id] = (module) => {\n delete webpackRequire.c[id];\n throw error;\n };\n };\n try {\n const federationInstance = webpackRequire.federation.instance;\n if (!federationInstance) {\n throw new Error('Federation instance not found!');\n }\n const { shareKey, getter, shareInfo, treeShakingGetter } =\n moduleToHandlerMapping[id];\n const usedExports = getUsedExports(webpackRequire, shareKey);\n const customShareInfo: Partial<Shared> = { ...shareInfo };\n // compatibility for rspack, which will wrap scope with array, but webpack will not\n // https://github.com/web-infra-dev/rspack/blob/main/packages/rspack/src/runtime/moduleFederationDefaultRuntime.js#L95\n if (\n Array.isArray(customShareInfo.scope) &&\n Array.isArray(customShareInfo.scope[0])\n ) {\n customShareInfo.scope = customShareInfo.scope[0];\n }\n if (usedExports) {\n customShareInfo.treeShaking = {\n usedExports,\n useIn: [federationInstance.options.name],\n };\n }\n const promise = federationInstance\n .loadShare(shareKey, {\n customShareInfo,\n context: {\n trigger: 'build',\n moduleId: id,\n chunkId,\n },\n })\n .then((factory: any) => {\n if (factory === false) {\n if (typeof getter !== 'function') {\n throw new Error(\n getShortErrorMsg(\n RUNTIME_012,\n {\n [RUNTIME_012]:\n 'The getter for the shared module is not a function. This may be caused by setting \"shared.import: false\" without the host providing the corresponding lib.',\n },\n { shareKey },\n ),\n );\n }\n return treeShakingGetter?.() || getter();\n }\n return factory;\n });\n\n if (promise.then) {\n promises.push(\n (installedModules[id] = promise.then(onFactory).catch(onError)),\n );\n } else {\n // @ts-ignore maintain previous logic\n onFactory(promise);\n }\n } catch (e) {\n onError(e);\n }\n });\n }\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,SAAS,SAA0B;AACjD,4CAAqB,QAAQ;CAC7B,MAAM,EACJ,SACA,UACA,kBACA,gBACA,cACA,2BACE;AAEJ,iDAAoB,eAAe;AACnC,KAAI,eAAe,EAAE,cAAc,QAAQ,CACzC,cAAa,SAAS,SAAS,OAAO;AACpC,MAAI,eAAe,EAAE,kBAAkB,GAAG,CACxC,QAAO,SAAS,KAAK,iBAAiB,IAAoB;EAE5D,MAAM,aAAa,YAAuB;AACxC,oBAAiB,MAAM;AACvB,kBAAe,EAAE,OAAO,WAAW;AACjC,WAAO,eAAe,EAAE;IACxB,MAAM,SAAS,SAAS;IAExB,MAAM,EAAE,cAAc,uBAAuB;AAC7C,QACE,WAAW,aAAa,SACxB,UACA,OAAO,WAAW,SAElB,KAAI;AAEF,SACE,CAAC,OAAO,eAAe,QAAQ,IAC9B,OAAe,UAAU,OAE1B,CAAC,OAAe,QAAQ,UAAU,YAAY;aAEzC,GAAG;AAId,WAAO,UAAU;;;EAGrB,MAAM,WAAW,UAAmB;AAClC,UAAO,iBAAiB;AACxB,kBAAe,EAAE,OAAO,WAAW;AACjC,WAAO,eAAe,EAAE;AACxB,UAAM;;;AAGV,MAAI;GACF,MAAM,qBAAqB,eAAe,WAAW;AACrD,OAAI,CAAC,mBACH,OAAM,IAAI,MAAM,iCAAiC;GAEnD,MAAM,EAAE,UAAU,QAAQ,WAAW,sBACnC,uBAAuB;GACzB,MAAM,cAAcA,sCAAe,gBAAgB,SAAS;GAC5D,MAAM,kBAAmC,EAAE,GAAG,WAAW;AAGzD,OACE,MAAM,QAAQ,gBAAgB,MAAM,IACpC,MAAM,QAAQ,gBAAgB,MAAM,GAAG,CAEvC,iBAAgB,QAAQ,gBAAgB,MAAM;AAEhD,OAAI,YACF,iBAAgB,cAAc;IAC5B;IACA,OAAO,CAAC,mBAAmB,QAAQ,KAAK;IACzC;GAEH,MAAM,UAAU,mBACb,UAAU,UAAU;IACnB;IACA,SAAS;KACP,SAAS;KACT,UAAU;KACV;KACD;IACF,CAAC,CACD,MAAM,YAAiB;AACtB,QAAI,YAAY,OAAO;AACrB,SAAI,OAAO,WAAW,WACpB,OAAM,IAAI,MACRC,0CACEC,iCACA,GACGA,kCACC,gKACH,EACD,EAAE,UAAU,CACb,CACF;AAEH,YAAO,qBAAqB,IAAI,QAAQ;;AAE1C,WAAO;KACP;AAEJ,OAAI,QAAQ,KACV,UAAS,KACN,iBAAiB,MAAM,QAAQ,KAAK,UAAU,CAAC,MAAM,QAAQ,CAC/D;OAGD,WAAU,QAAQ;WAEb,GAAG;AACV,WAAQ,EAAE;;GAEZ"}
package/dist/consumes.js CHANGED
@@ -41,7 +41,14 @@ function consumes(options) {
41
41
  usedExports,
42
42
  useIn: [federationInstance.options.name]
43
43
  };
44
- const promise = federationInstance.loadShare(shareKey, { customShareInfo }).then((factory) => {
44
+ const promise = federationInstance.loadShare(shareKey, {
45
+ customShareInfo,
46
+ context: {
47
+ trigger: "build",
48
+ moduleId: id,
49
+ chunkId
50
+ }
51
+ }).then((factory) => {
45
52
  if (factory === false) {
46
53
  if (typeof getter !== "function") throw new Error(getShortErrorMsg(RUNTIME_012, { [RUNTIME_012]: "The getter for the shared module is not a function. This may be caused by setting \"shared.import: false\" without the host providing the corresponding lib." }, { shareKey }));
47
54
  return treeShakingGetter?.() || getter();
@@ -1 +1 @@
1
- {"version":3,"file":"consumes.js","names":[],"sources":["../src/consumes.ts"],"sourcesContent":["import { ConsumesOptions } from './types';\nimport { attachShareScopeMap } from './attachShareScopeMap';\nimport { updateConsumeOptions } from './updateOptions';\nimport { getUsedExports } from './getUsedExports';\nimport type { Shared } from '@module-federation/runtime/types';\nimport { getShortErrorMsg, RUNTIME_012 } from '@module-federation/error-codes';\n\nexport function consumes(options: ConsumesOptions) {\n updateConsumeOptions(options);\n const {\n chunkId,\n promises,\n installedModules,\n webpackRequire,\n chunkMapping,\n moduleToHandlerMapping,\n } = options;\n\n attachShareScopeMap(webpackRequire);\n if (webpackRequire.o(chunkMapping, chunkId)) {\n chunkMapping[chunkId].forEach((id) => {\n if (webpackRequire.o(installedModules, id)) {\n return promises.push(installedModules[id] as Promise<any>);\n }\n const onFactory = (factory: () => any) => {\n installedModules[id] = 0;\n webpackRequire.m[id] = (module) => {\n delete webpackRequire.c[id];\n const result = factory();\n // Add layer property from shareConfig if available\n const { shareInfo } = moduleToHandlerMapping[id];\n if (\n shareInfo?.shareConfig?.layer &&\n result &&\n typeof result === 'object'\n ) {\n try {\n // Only set layer if it's not already defined or if it's undefined\n if (\n !result.hasOwnProperty('layer') ||\n (result as any).layer === undefined\n ) {\n (result as any).layer = shareInfo.shareConfig.layer;\n }\n } catch (e) {\n // Ignore if layer property is read-only\n }\n }\n module.exports = result;\n };\n };\n const onError = (error: unknown) => {\n delete installedModules[id];\n webpackRequire.m[id] = (module) => {\n delete webpackRequire.c[id];\n throw error;\n };\n };\n try {\n const federationInstance = webpackRequire.federation.instance;\n if (!federationInstance) {\n throw new Error('Federation instance not found!');\n }\n const { shareKey, getter, shareInfo, treeShakingGetter } =\n moduleToHandlerMapping[id];\n const usedExports = getUsedExports(webpackRequire, shareKey);\n const customShareInfo: Partial<Shared> = { ...shareInfo };\n // compatibility for rspack, which will wrap scope with array, but webpack will not\n // https://github.com/web-infra-dev/rspack/blob/main/packages/rspack/src/runtime/moduleFederationDefaultRuntime.js#L95\n if (\n Array.isArray(customShareInfo.scope) &&\n Array.isArray(customShareInfo.scope[0])\n ) {\n customShareInfo.scope = customShareInfo.scope[0];\n }\n if (usedExports) {\n customShareInfo.treeShaking = {\n usedExports,\n useIn: [federationInstance.options.name],\n };\n }\n const promise = federationInstance\n .loadShare(shareKey, {\n customShareInfo,\n })\n .then((factory: any) => {\n if (factory === false) {\n if (typeof getter !== 'function') {\n throw new Error(\n getShortErrorMsg(\n RUNTIME_012,\n {\n [RUNTIME_012]:\n 'The getter for the shared module is not a function. This may be caused by setting \"shared.import: false\" without the host providing the corresponding lib.',\n },\n { shareKey },\n ),\n );\n }\n return treeShakingGetter?.() || getter();\n }\n return factory;\n });\n\n if (promise.then) {\n promises.push(\n (installedModules[id] = promise.then(onFactory).catch(onError)),\n );\n } else {\n // @ts-ignore maintain previous logic\n onFactory(promise);\n }\n } catch (e) {\n onError(e);\n }\n });\n }\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,SAAS,SAA0B;AACjD,sBAAqB,QAAQ;CAC7B,MAAM,EACJ,SACA,UACA,kBACA,gBACA,cACA,2BACE;AAEJ,qBAAoB,eAAe;AACnC,KAAI,eAAe,EAAE,cAAc,QAAQ,CACzC,cAAa,SAAS,SAAS,OAAO;AACpC,MAAI,eAAe,EAAE,kBAAkB,GAAG,CACxC,QAAO,SAAS,KAAK,iBAAiB,IAAoB;EAE5D,MAAM,aAAa,YAAuB;AACxC,oBAAiB,MAAM;AACvB,kBAAe,EAAE,OAAO,WAAW;AACjC,WAAO,eAAe,EAAE;IACxB,MAAM,SAAS,SAAS;IAExB,MAAM,EAAE,cAAc,uBAAuB;AAC7C,QACE,WAAW,aAAa,SACxB,UACA,OAAO,WAAW,SAElB,KAAI;AAEF,SACE,CAAC,OAAO,eAAe,QAAQ,IAC9B,OAAe,UAAU,OAE1B,CAAC,OAAe,QAAQ,UAAU,YAAY;aAEzC,GAAG;AAId,WAAO,UAAU;;;EAGrB,MAAM,WAAW,UAAmB;AAClC,UAAO,iBAAiB;AACxB,kBAAe,EAAE,OAAO,WAAW;AACjC,WAAO,eAAe,EAAE;AACxB,UAAM;;;AAGV,MAAI;GACF,MAAM,qBAAqB,eAAe,WAAW;AACrD,OAAI,CAAC,mBACH,OAAM,IAAI,MAAM,iCAAiC;GAEnD,MAAM,EAAE,UAAU,QAAQ,WAAW,sBACnC,uBAAuB;GACzB,MAAM,cAAc,eAAe,gBAAgB,SAAS;GAC5D,MAAM,kBAAmC,EAAE,GAAG,WAAW;AAGzD,OACE,MAAM,QAAQ,gBAAgB,MAAM,IACpC,MAAM,QAAQ,gBAAgB,MAAM,GAAG,CAEvC,iBAAgB,QAAQ,gBAAgB,MAAM;AAEhD,OAAI,YACF,iBAAgB,cAAc;IAC5B;IACA,OAAO,CAAC,mBAAmB,QAAQ,KAAK;IACzC;GAEH,MAAM,UAAU,mBACb,UAAU,UAAU,EACnB,iBACD,CAAC,CACD,MAAM,YAAiB;AACtB,QAAI,YAAY,OAAO;AACrB,SAAI,OAAO,WAAW,WACpB,OAAM,IAAI,MACR,iBACE,aACA,GACG,cACC,gKACH,EACD,EAAE,UAAU,CACb,CACF;AAEH,YAAO,qBAAqB,IAAI,QAAQ;;AAE1C,WAAO;KACP;AAEJ,OAAI,QAAQ,KACV,UAAS,KACN,iBAAiB,MAAM,QAAQ,KAAK,UAAU,CAAC,MAAM,QAAQ,CAC/D;OAGD,WAAU,QAAQ;WAEb,GAAG;AACV,WAAQ,EAAE;;GAEZ"}
1
+ {"version":3,"file":"consumes.js","names":[],"sources":["../src/consumes.ts"],"sourcesContent":["import { ConsumesOptions } from './types';\nimport { attachShareScopeMap } from './attachShareScopeMap';\nimport { updateConsumeOptions } from './updateOptions';\nimport { getUsedExports } from './getUsedExports';\nimport type { Shared } from '@module-federation/runtime/types';\nimport { getShortErrorMsg, RUNTIME_012 } from '@module-federation/error-codes';\n\nexport function consumes(options: ConsumesOptions) {\n updateConsumeOptions(options);\n const {\n chunkId,\n promises,\n installedModules,\n webpackRequire,\n chunkMapping,\n moduleToHandlerMapping,\n } = options;\n\n attachShareScopeMap(webpackRequire);\n if (webpackRequire.o(chunkMapping, chunkId)) {\n chunkMapping[chunkId].forEach((id) => {\n if (webpackRequire.o(installedModules, id)) {\n return promises.push(installedModules[id] as Promise<any>);\n }\n const onFactory = (factory: () => any) => {\n installedModules[id] = 0;\n webpackRequire.m[id] = (module) => {\n delete webpackRequire.c[id];\n const result = factory();\n // Add layer property from shareConfig if available\n const { shareInfo } = moduleToHandlerMapping[id];\n if (\n shareInfo?.shareConfig?.layer &&\n result &&\n typeof result === 'object'\n ) {\n try {\n // Only set layer if it's not already defined or if it's undefined\n if (\n !result.hasOwnProperty('layer') ||\n (result as any).layer === undefined\n ) {\n (result as any).layer = shareInfo.shareConfig.layer;\n }\n } catch (e) {\n // Ignore if layer property is read-only\n }\n }\n module.exports = result;\n };\n };\n const onError = (error: unknown) => {\n delete installedModules[id];\n webpackRequire.m[id] = (module) => {\n delete webpackRequire.c[id];\n throw error;\n };\n };\n try {\n const federationInstance = webpackRequire.federation.instance;\n if (!federationInstance) {\n throw new Error('Federation instance not found!');\n }\n const { shareKey, getter, shareInfo, treeShakingGetter } =\n moduleToHandlerMapping[id];\n const usedExports = getUsedExports(webpackRequire, shareKey);\n const customShareInfo: Partial<Shared> = { ...shareInfo };\n // compatibility for rspack, which will wrap scope with array, but webpack will not\n // https://github.com/web-infra-dev/rspack/blob/main/packages/rspack/src/runtime/moduleFederationDefaultRuntime.js#L95\n if (\n Array.isArray(customShareInfo.scope) &&\n Array.isArray(customShareInfo.scope[0])\n ) {\n customShareInfo.scope = customShareInfo.scope[0];\n }\n if (usedExports) {\n customShareInfo.treeShaking = {\n usedExports,\n useIn: [federationInstance.options.name],\n };\n }\n const promise = federationInstance\n .loadShare(shareKey, {\n customShareInfo,\n context: {\n trigger: 'build',\n moduleId: id,\n chunkId,\n },\n })\n .then((factory: any) => {\n if (factory === false) {\n if (typeof getter !== 'function') {\n throw new Error(\n getShortErrorMsg(\n RUNTIME_012,\n {\n [RUNTIME_012]:\n 'The getter for the shared module is not a function. This may be caused by setting \"shared.import: false\" without the host providing the corresponding lib.',\n },\n { shareKey },\n ),\n );\n }\n return treeShakingGetter?.() || getter();\n }\n return factory;\n });\n\n if (promise.then) {\n promises.push(\n (installedModules[id] = promise.then(onFactory).catch(onError)),\n );\n } else {\n // @ts-ignore maintain previous logic\n onFactory(promise);\n }\n } catch (e) {\n onError(e);\n }\n });\n }\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,SAAS,SAA0B;AACjD,sBAAqB,QAAQ;CAC7B,MAAM,EACJ,SACA,UACA,kBACA,gBACA,cACA,2BACE;AAEJ,qBAAoB,eAAe;AACnC,KAAI,eAAe,EAAE,cAAc,QAAQ,CACzC,cAAa,SAAS,SAAS,OAAO;AACpC,MAAI,eAAe,EAAE,kBAAkB,GAAG,CACxC,QAAO,SAAS,KAAK,iBAAiB,IAAoB;EAE5D,MAAM,aAAa,YAAuB;AACxC,oBAAiB,MAAM;AACvB,kBAAe,EAAE,OAAO,WAAW;AACjC,WAAO,eAAe,EAAE;IACxB,MAAM,SAAS,SAAS;IAExB,MAAM,EAAE,cAAc,uBAAuB;AAC7C,QACE,WAAW,aAAa,SACxB,UACA,OAAO,WAAW,SAElB,KAAI;AAEF,SACE,CAAC,OAAO,eAAe,QAAQ,IAC9B,OAAe,UAAU,OAE1B,CAAC,OAAe,QAAQ,UAAU,YAAY;aAEzC,GAAG;AAId,WAAO,UAAU;;;EAGrB,MAAM,WAAW,UAAmB;AAClC,UAAO,iBAAiB;AACxB,kBAAe,EAAE,OAAO,WAAW;AACjC,WAAO,eAAe,EAAE;AACxB,UAAM;;;AAGV,MAAI;GACF,MAAM,qBAAqB,eAAe,WAAW;AACrD,OAAI,CAAC,mBACH,OAAM,IAAI,MAAM,iCAAiC;GAEnD,MAAM,EAAE,UAAU,QAAQ,WAAW,sBACnC,uBAAuB;GACzB,MAAM,cAAc,eAAe,gBAAgB,SAAS;GAC5D,MAAM,kBAAmC,EAAE,GAAG,WAAW;AAGzD,OACE,MAAM,QAAQ,gBAAgB,MAAM,IACpC,MAAM,QAAQ,gBAAgB,MAAM,GAAG,CAEvC,iBAAgB,QAAQ,gBAAgB,MAAM;AAEhD,OAAI,YACF,iBAAgB,cAAc;IAC5B;IACA,OAAO,CAAC,mBAAmB,QAAQ,KAAK;IACzC;GAEH,MAAM,UAAU,mBACb,UAAU,UAAU;IACnB;IACA,SAAS;KACP,SAAS;KACT,UAAU;KACV;KACD;IACF,CAAC,CACD,MAAM,YAAiB;AACtB,QAAI,YAAY,OAAO;AACrB,SAAI,OAAO,WAAW,WACpB,OAAM,IAAI,MACR,iBACE,aACA,GACG,cACC,gKACH,EACD,EAAE,UAAU,CACb,CACF;AAEH,YAAO,qBAAqB,IAAI,QAAQ;;AAE1C,WAAO;KACP;AAEJ,OAAI,QAAQ,KACV,UAAS,KACN,iBAAiB,MAAM,QAAQ,KAAK,UAAU,CAAC,MAAM,QAAQ,CAC/D;OAGD,WAAU,QAAQ;WAEb,GAAG;AACV,WAAQ,EAAE;;GAEZ"}
@@ -14,8 +14,20 @@ function handleInitialConsumes(options) {
14
14
  usedExports,
15
15
  useIn: [federationInstance.options.name]
16
16
  };
17
- if (asyncLoad) return federationInstance.loadShare(shareKey, { customShareInfo });
18
- return federationInstance.loadShareSync(shareKey, { customShareInfo });
17
+ if (asyncLoad) return federationInstance.loadShare(shareKey, {
18
+ customShareInfo,
19
+ context: {
20
+ trigger: "build",
21
+ moduleId
22
+ }
23
+ });
24
+ return federationInstance.loadShareSync(shareKey, {
25
+ customShareInfo,
26
+ context: {
27
+ trigger: "build",
28
+ moduleId
29
+ }
30
+ });
19
31
  } catch (err) {
20
32
  console.error("loadShareSync failed! The function should not be called unless you set \"eager:true\". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.");
21
33
  console.error("The original error message is as follows: ");
@@ -1 +1 @@
1
- {"version":3,"file":"installInitialConsumes.cjs","names":["getUsedExports"],"sources":["../src/installInitialConsumes.ts"],"sourcesContent":["import { getUsedExports } from './getUsedExports';\nimport {\n HandleInitialConsumesOptions,\n InstallInitialConsumesOptions,\n} from './types';\nimport type { Shared } from '@module-federation/runtime/types';\nimport { updateConsumeOptions } from './updateOptions';\n\nfunction handleInitialConsumes(options: HandleInitialConsumesOptions) {\n const { moduleId, moduleToHandlerMapping, webpackRequire, asyncLoad } =\n options;\n\n const federationInstance = webpackRequire.federation.instance;\n if (!federationInstance) {\n throw new Error('Federation instance not found!');\n }\n const { shareKey, shareInfo } = moduleToHandlerMapping[moduleId];\n\n try {\n const usedExports = getUsedExports(webpackRequire, shareKey);\n\n const customShareInfo: Partial<Shared> = { ...shareInfo };\n if (usedExports) {\n customShareInfo.treeShaking = {\n usedExports,\n useIn: [federationInstance.options.name],\n };\n }\n if (asyncLoad) {\n return federationInstance.loadShare(shareKey, {\n customShareInfo,\n });\n }\n return federationInstance.loadShareSync(shareKey, {\n customShareInfo,\n });\n } catch (err) {\n console.error(\n 'loadShareSync failed! The function should not be called unless you set \"eager:true\". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.',\n );\n console.error('The original error message is as follows: ');\n throw err;\n }\n}\n\nexport function installInitialConsumes(options: InstallInitialConsumesOptions) {\n updateConsumeOptions(options);\n\n const {\n moduleToHandlerMapping,\n webpackRequire,\n installedModules,\n initialConsumes,\n asyncLoad,\n } = options;\n\n const factoryIdSets: Array<\n [string | number, () => Promise<false | (() => unknown)> | (() => unknown)]\n > = [];\n initialConsumes.forEach((id) => {\n const factoryGetter = () =>\n handleInitialConsumes({\n moduleId: id,\n moduleToHandlerMapping,\n webpackRequire,\n asyncLoad,\n }) as Promise<false | (() => unknown)>;\n factoryIdSets.push([id, factoryGetter]);\n });\n\n const setModule = (\n id: string | number,\n factoryGetter: () => () => unknown,\n ) => {\n webpackRequire.m[id] = (module) => {\n // Handle scenario when module is used synchronously\n installedModules[id] = 0;\n delete webpackRequire.c[id];\n\n const factory = factoryGetter();\n if (typeof factory !== 'function') {\n throw new Error(\n `Shared module is not available for eager consumption: ${id}`,\n );\n }\n const result = factory();\n // Add layer property from shareConfig if available\n const { shareInfo } = moduleToHandlerMapping[id];\n if (\n shareInfo?.shareConfig?.layer &&\n result &&\n typeof result === 'object'\n ) {\n try {\n // Only set layer if it's not already defined or if it's undefined\n if (\n !result.hasOwnProperty('layer') ||\n (result as any).layer === undefined\n ) {\n (result as any).layer = shareInfo.shareConfig.layer;\n }\n } catch (e) {\n // Ignore if layer property is read-only\n }\n }\n module.exports = result;\n };\n };\n\n if (asyncLoad) {\n return Promise.all(\n factoryIdSets.map(async ([id, factoryGetter]) => {\n const result = await factoryGetter();\n setModule(id, () => result as () => unknown);\n }),\n );\n }\n factoryIdSets.forEach(([id, factoryGetter]) => {\n setModule(id, factoryGetter as () => () => unknown);\n });\n}\n"],"mappings":";;;;AAQA,SAAS,sBAAsB,SAAuC;CACpE,MAAM,EAAE,UAAU,wBAAwB,gBAAgB,cACxD;CAEF,MAAM,qBAAqB,eAAe,WAAW;AACrD,KAAI,CAAC,mBACH,OAAM,IAAI,MAAM,iCAAiC;CAEnD,MAAM,EAAE,UAAU,cAAc,uBAAuB;AAEvD,KAAI;EACF,MAAM,cAAcA,sCAAe,gBAAgB,SAAS;EAE5D,MAAM,kBAAmC,EAAE,GAAG,WAAW;AACzD,MAAI,YACF,iBAAgB,cAAc;GAC5B;GACA,OAAO,CAAC,mBAAmB,QAAQ,KAAK;GACzC;AAEH,MAAI,UACF,QAAO,mBAAmB,UAAU,UAAU,EAC5C,iBACD,CAAC;AAEJ,SAAO,mBAAmB,cAAc,UAAU,EAChD,iBACD,CAAC;UACK,KAAK;AACZ,UAAQ,MACN,iMACD;AACD,UAAQ,MAAM,6CAA6C;AAC3D,QAAM;;;AAIV,SAAgB,uBAAuB,SAAwC;AAC7E,4CAAqB,QAAQ;CAE7B,MAAM,EACJ,wBACA,gBACA,kBACA,iBACA,cACE;CAEJ,MAAM,gBAEF,EAAE;AACN,iBAAgB,SAAS,OAAO;EAC9B,MAAM,sBACJ,sBAAsB;GACpB,UAAU;GACV;GACA;GACA;GACD,CAAC;AACJ,gBAAc,KAAK,CAAC,IAAI,cAAc,CAAC;GACvC;CAEF,MAAM,aACJ,IACA,kBACG;AACH,iBAAe,EAAE,OAAO,WAAW;AAEjC,oBAAiB,MAAM;AACvB,UAAO,eAAe,EAAE;GAExB,MAAM,UAAU,eAAe;AAC/B,OAAI,OAAO,YAAY,WACrB,OAAM,IAAI,MACR,yDAAyD,KAC1D;GAEH,MAAM,SAAS,SAAS;GAExB,MAAM,EAAE,cAAc,uBAAuB;AAC7C,OACE,WAAW,aAAa,SACxB,UACA,OAAO,WAAW,SAElB,KAAI;AAEF,QACE,CAAC,OAAO,eAAe,QAAQ,IAC9B,OAAe,UAAU,OAE1B,CAAC,OAAe,QAAQ,UAAU,YAAY;YAEzC,GAAG;AAId,UAAO,UAAU;;;AAIrB,KAAI,UACF,QAAO,QAAQ,IACb,cAAc,IAAI,OAAO,CAAC,IAAI,mBAAmB;EAC/C,MAAM,SAAS,MAAM,eAAe;AACpC,YAAU,UAAU,OAAwB;GAC5C,CACH;AAEH,eAAc,SAAS,CAAC,IAAI,mBAAmB;AAC7C,YAAU,IAAI,cAAqC;GACnD"}
1
+ {"version":3,"file":"installInitialConsumes.cjs","names":["getUsedExports"],"sources":["../src/installInitialConsumes.ts"],"sourcesContent":["import { getUsedExports } from './getUsedExports';\nimport {\n HandleInitialConsumesOptions,\n InstallInitialConsumesOptions,\n} from './types';\nimport type { Shared } from '@module-federation/runtime/types';\nimport { updateConsumeOptions } from './updateOptions';\n\nfunction handleInitialConsumes(options: HandleInitialConsumesOptions) {\n const { moduleId, moduleToHandlerMapping, webpackRequire, asyncLoad } =\n options;\n\n const federationInstance = webpackRequire.federation.instance;\n if (!federationInstance) {\n throw new Error('Federation instance not found!');\n }\n const { shareKey, shareInfo } = moduleToHandlerMapping[moduleId];\n\n try {\n const usedExports = getUsedExports(webpackRequire, shareKey);\n\n const customShareInfo: Partial<Shared> = { ...shareInfo };\n if (usedExports) {\n customShareInfo.treeShaking = {\n usedExports,\n useIn: [federationInstance.options.name],\n };\n }\n if (asyncLoad) {\n return federationInstance.loadShare(shareKey, {\n customShareInfo,\n context: {\n trigger: 'build',\n moduleId,\n },\n });\n }\n return federationInstance.loadShareSync(shareKey, {\n customShareInfo,\n context: {\n trigger: 'build',\n moduleId,\n },\n });\n } catch (err) {\n console.error(\n 'loadShareSync failed! The function should not be called unless you set \"eager:true\". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.',\n );\n console.error('The original error message is as follows: ');\n throw err;\n }\n}\n\nexport function installInitialConsumes(options: InstallInitialConsumesOptions) {\n updateConsumeOptions(options);\n\n const {\n moduleToHandlerMapping,\n webpackRequire,\n installedModules,\n initialConsumes,\n asyncLoad,\n } = options;\n\n const factoryIdSets: Array<\n [string | number, () => Promise<false | (() => unknown)> | (() => unknown)]\n > = [];\n initialConsumes.forEach((id) => {\n const factoryGetter = () =>\n handleInitialConsumes({\n moduleId: id,\n moduleToHandlerMapping,\n webpackRequire,\n asyncLoad,\n }) as Promise<false | (() => unknown)>;\n factoryIdSets.push([id, factoryGetter]);\n });\n\n const setModule = (\n id: string | number,\n factoryGetter: () => () => unknown,\n ) => {\n webpackRequire.m[id] = (module) => {\n // Handle scenario when module is used synchronously\n installedModules[id] = 0;\n delete webpackRequire.c[id];\n\n const factory = factoryGetter();\n if (typeof factory !== 'function') {\n throw new Error(\n `Shared module is not available for eager consumption: ${id}`,\n );\n }\n const result = factory();\n // Add layer property from shareConfig if available\n const { shareInfo } = moduleToHandlerMapping[id];\n if (\n shareInfo?.shareConfig?.layer &&\n result &&\n typeof result === 'object'\n ) {\n try {\n // Only set layer if it's not already defined or if it's undefined\n if (\n !result.hasOwnProperty('layer') ||\n (result as any).layer === undefined\n ) {\n (result as any).layer = shareInfo.shareConfig.layer;\n }\n } catch (e) {\n // Ignore if layer property is read-only\n }\n }\n module.exports = result;\n };\n };\n\n if (asyncLoad) {\n return Promise.all(\n factoryIdSets.map(async ([id, factoryGetter]) => {\n const result = await factoryGetter();\n setModule(id, () => result as () => unknown);\n }),\n );\n }\n factoryIdSets.forEach(([id, factoryGetter]) => {\n setModule(id, factoryGetter as () => () => unknown);\n });\n}\n"],"mappings":";;;;AAQA,SAAS,sBAAsB,SAAuC;CACpE,MAAM,EAAE,UAAU,wBAAwB,gBAAgB,cACxD;CAEF,MAAM,qBAAqB,eAAe,WAAW;AACrD,KAAI,CAAC,mBACH,OAAM,IAAI,MAAM,iCAAiC;CAEnD,MAAM,EAAE,UAAU,cAAc,uBAAuB;AAEvD,KAAI;EACF,MAAM,cAAcA,sCAAe,gBAAgB,SAAS;EAE5D,MAAM,kBAAmC,EAAE,GAAG,WAAW;AACzD,MAAI,YACF,iBAAgB,cAAc;GAC5B;GACA,OAAO,CAAC,mBAAmB,QAAQ,KAAK;GACzC;AAEH,MAAI,UACF,QAAO,mBAAmB,UAAU,UAAU;GAC5C;GACA,SAAS;IACP,SAAS;IACT;IACD;GACF,CAAC;AAEJ,SAAO,mBAAmB,cAAc,UAAU;GAChD;GACA,SAAS;IACP,SAAS;IACT;IACD;GACF,CAAC;UACK,KAAK;AACZ,UAAQ,MACN,iMACD;AACD,UAAQ,MAAM,6CAA6C;AAC3D,QAAM;;;AAIV,SAAgB,uBAAuB,SAAwC;AAC7E,4CAAqB,QAAQ;CAE7B,MAAM,EACJ,wBACA,gBACA,kBACA,iBACA,cACE;CAEJ,MAAM,gBAEF,EAAE;AACN,iBAAgB,SAAS,OAAO;EAC9B,MAAM,sBACJ,sBAAsB;GACpB,UAAU;GACV;GACA;GACA;GACD,CAAC;AACJ,gBAAc,KAAK,CAAC,IAAI,cAAc,CAAC;GACvC;CAEF,MAAM,aACJ,IACA,kBACG;AACH,iBAAe,EAAE,OAAO,WAAW;AAEjC,oBAAiB,MAAM;AACvB,UAAO,eAAe,EAAE;GAExB,MAAM,UAAU,eAAe;AAC/B,OAAI,OAAO,YAAY,WACrB,OAAM,IAAI,MACR,yDAAyD,KAC1D;GAEH,MAAM,SAAS,SAAS;GAExB,MAAM,EAAE,cAAc,uBAAuB;AAC7C,OACE,WAAW,aAAa,SACxB,UACA,OAAO,WAAW,SAElB,KAAI;AAEF,QACE,CAAC,OAAO,eAAe,QAAQ,IAC9B,OAAe,UAAU,OAE1B,CAAC,OAAe,QAAQ,UAAU,YAAY;YAEzC,GAAG;AAId,UAAO,UAAU;;;AAIrB,KAAI,UACF,QAAO,QAAQ,IACb,cAAc,IAAI,OAAO,CAAC,IAAI,mBAAmB;EAC/C,MAAM,SAAS,MAAM,eAAe;AACpC,YAAU,UAAU,OAAwB;GAC5C,CACH;AAEH,eAAc,SAAS,CAAC,IAAI,mBAAmB;AAC7C,YAAU,IAAI,cAAqC;GACnD"}
@@ -14,8 +14,20 @@ function handleInitialConsumes(options) {
14
14
  usedExports,
15
15
  useIn: [federationInstance.options.name]
16
16
  };
17
- if (asyncLoad) return federationInstance.loadShare(shareKey, { customShareInfo });
18
- return federationInstance.loadShareSync(shareKey, { customShareInfo });
17
+ if (asyncLoad) return federationInstance.loadShare(shareKey, {
18
+ customShareInfo,
19
+ context: {
20
+ trigger: "build",
21
+ moduleId
22
+ }
23
+ });
24
+ return federationInstance.loadShareSync(shareKey, {
25
+ customShareInfo,
26
+ context: {
27
+ trigger: "build",
28
+ moduleId
29
+ }
30
+ });
19
31
  } catch (err) {
20
32
  console.error("loadShareSync failed! The function should not be called unless you set \"eager:true\". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.");
21
33
  console.error("The original error message is as follows: ");
@@ -1 +1 @@
1
- {"version":3,"file":"installInitialConsumes.js","names":[],"sources":["../src/installInitialConsumes.ts"],"sourcesContent":["import { getUsedExports } from './getUsedExports';\nimport {\n HandleInitialConsumesOptions,\n InstallInitialConsumesOptions,\n} from './types';\nimport type { Shared } from '@module-federation/runtime/types';\nimport { updateConsumeOptions } from './updateOptions';\n\nfunction handleInitialConsumes(options: HandleInitialConsumesOptions) {\n const { moduleId, moduleToHandlerMapping, webpackRequire, asyncLoad } =\n options;\n\n const federationInstance = webpackRequire.federation.instance;\n if (!federationInstance) {\n throw new Error('Federation instance not found!');\n }\n const { shareKey, shareInfo } = moduleToHandlerMapping[moduleId];\n\n try {\n const usedExports = getUsedExports(webpackRequire, shareKey);\n\n const customShareInfo: Partial<Shared> = { ...shareInfo };\n if (usedExports) {\n customShareInfo.treeShaking = {\n usedExports,\n useIn: [federationInstance.options.name],\n };\n }\n if (asyncLoad) {\n return federationInstance.loadShare(shareKey, {\n customShareInfo,\n });\n }\n return federationInstance.loadShareSync(shareKey, {\n customShareInfo,\n });\n } catch (err) {\n console.error(\n 'loadShareSync failed! The function should not be called unless you set \"eager:true\". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.',\n );\n console.error('The original error message is as follows: ');\n throw err;\n }\n}\n\nexport function installInitialConsumes(options: InstallInitialConsumesOptions) {\n updateConsumeOptions(options);\n\n const {\n moduleToHandlerMapping,\n webpackRequire,\n installedModules,\n initialConsumes,\n asyncLoad,\n } = options;\n\n const factoryIdSets: Array<\n [string | number, () => Promise<false | (() => unknown)> | (() => unknown)]\n > = [];\n initialConsumes.forEach((id) => {\n const factoryGetter = () =>\n handleInitialConsumes({\n moduleId: id,\n moduleToHandlerMapping,\n webpackRequire,\n asyncLoad,\n }) as Promise<false | (() => unknown)>;\n factoryIdSets.push([id, factoryGetter]);\n });\n\n const setModule = (\n id: string | number,\n factoryGetter: () => () => unknown,\n ) => {\n webpackRequire.m[id] = (module) => {\n // Handle scenario when module is used synchronously\n installedModules[id] = 0;\n delete webpackRequire.c[id];\n\n const factory = factoryGetter();\n if (typeof factory !== 'function') {\n throw new Error(\n `Shared module is not available for eager consumption: ${id}`,\n );\n }\n const result = factory();\n // Add layer property from shareConfig if available\n const { shareInfo } = moduleToHandlerMapping[id];\n if (\n shareInfo?.shareConfig?.layer &&\n result &&\n typeof result === 'object'\n ) {\n try {\n // Only set layer if it's not already defined or if it's undefined\n if (\n !result.hasOwnProperty('layer') ||\n (result as any).layer === undefined\n ) {\n (result as any).layer = shareInfo.shareConfig.layer;\n }\n } catch (e) {\n // Ignore if layer property is read-only\n }\n }\n module.exports = result;\n };\n };\n\n if (asyncLoad) {\n return Promise.all(\n factoryIdSets.map(async ([id, factoryGetter]) => {\n const result = await factoryGetter();\n setModule(id, () => result as () => unknown);\n }),\n );\n }\n factoryIdSets.forEach(([id, factoryGetter]) => {\n setModule(id, factoryGetter as () => () => unknown);\n });\n}\n"],"mappings":";;;;AAQA,SAAS,sBAAsB,SAAuC;CACpE,MAAM,EAAE,UAAU,wBAAwB,gBAAgB,cACxD;CAEF,MAAM,qBAAqB,eAAe,WAAW;AACrD,KAAI,CAAC,mBACH,OAAM,IAAI,MAAM,iCAAiC;CAEnD,MAAM,EAAE,UAAU,cAAc,uBAAuB;AAEvD,KAAI;EACF,MAAM,cAAc,eAAe,gBAAgB,SAAS;EAE5D,MAAM,kBAAmC,EAAE,GAAG,WAAW;AACzD,MAAI,YACF,iBAAgB,cAAc;GAC5B;GACA,OAAO,CAAC,mBAAmB,QAAQ,KAAK;GACzC;AAEH,MAAI,UACF,QAAO,mBAAmB,UAAU,UAAU,EAC5C,iBACD,CAAC;AAEJ,SAAO,mBAAmB,cAAc,UAAU,EAChD,iBACD,CAAC;UACK,KAAK;AACZ,UAAQ,MACN,iMACD;AACD,UAAQ,MAAM,6CAA6C;AAC3D,QAAM;;;AAIV,SAAgB,uBAAuB,SAAwC;AAC7E,sBAAqB,QAAQ;CAE7B,MAAM,EACJ,wBACA,gBACA,kBACA,iBACA,cACE;CAEJ,MAAM,gBAEF,EAAE;AACN,iBAAgB,SAAS,OAAO;EAC9B,MAAM,sBACJ,sBAAsB;GACpB,UAAU;GACV;GACA;GACA;GACD,CAAC;AACJ,gBAAc,KAAK,CAAC,IAAI,cAAc,CAAC;GACvC;CAEF,MAAM,aACJ,IACA,kBACG;AACH,iBAAe,EAAE,OAAO,WAAW;AAEjC,oBAAiB,MAAM;AACvB,UAAO,eAAe,EAAE;GAExB,MAAM,UAAU,eAAe;AAC/B,OAAI,OAAO,YAAY,WACrB,OAAM,IAAI,MACR,yDAAyD,KAC1D;GAEH,MAAM,SAAS,SAAS;GAExB,MAAM,EAAE,cAAc,uBAAuB;AAC7C,OACE,WAAW,aAAa,SACxB,UACA,OAAO,WAAW,SAElB,KAAI;AAEF,QACE,CAAC,OAAO,eAAe,QAAQ,IAC9B,OAAe,UAAU,OAE1B,CAAC,OAAe,QAAQ,UAAU,YAAY;YAEzC,GAAG;AAId,UAAO,UAAU;;;AAIrB,KAAI,UACF,QAAO,QAAQ,IACb,cAAc,IAAI,OAAO,CAAC,IAAI,mBAAmB;EAC/C,MAAM,SAAS,MAAM,eAAe;AACpC,YAAU,UAAU,OAAwB;GAC5C,CACH;AAEH,eAAc,SAAS,CAAC,IAAI,mBAAmB;AAC7C,YAAU,IAAI,cAAqC;GACnD"}
1
+ {"version":3,"file":"installInitialConsumes.js","names":[],"sources":["../src/installInitialConsumes.ts"],"sourcesContent":["import { getUsedExports } from './getUsedExports';\nimport {\n HandleInitialConsumesOptions,\n InstallInitialConsumesOptions,\n} from './types';\nimport type { Shared } from '@module-federation/runtime/types';\nimport { updateConsumeOptions } from './updateOptions';\n\nfunction handleInitialConsumes(options: HandleInitialConsumesOptions) {\n const { moduleId, moduleToHandlerMapping, webpackRequire, asyncLoad } =\n options;\n\n const federationInstance = webpackRequire.federation.instance;\n if (!federationInstance) {\n throw new Error('Federation instance not found!');\n }\n const { shareKey, shareInfo } = moduleToHandlerMapping[moduleId];\n\n try {\n const usedExports = getUsedExports(webpackRequire, shareKey);\n\n const customShareInfo: Partial<Shared> = { ...shareInfo };\n if (usedExports) {\n customShareInfo.treeShaking = {\n usedExports,\n useIn: [federationInstance.options.name],\n };\n }\n if (asyncLoad) {\n return federationInstance.loadShare(shareKey, {\n customShareInfo,\n context: {\n trigger: 'build',\n moduleId,\n },\n });\n }\n return federationInstance.loadShareSync(shareKey, {\n customShareInfo,\n context: {\n trigger: 'build',\n moduleId,\n },\n });\n } catch (err) {\n console.error(\n 'loadShareSync failed! The function should not be called unless you set \"eager:true\". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.',\n );\n console.error('The original error message is as follows: ');\n throw err;\n }\n}\n\nexport function installInitialConsumes(options: InstallInitialConsumesOptions) {\n updateConsumeOptions(options);\n\n const {\n moduleToHandlerMapping,\n webpackRequire,\n installedModules,\n initialConsumes,\n asyncLoad,\n } = options;\n\n const factoryIdSets: Array<\n [string | number, () => Promise<false | (() => unknown)> | (() => unknown)]\n > = [];\n initialConsumes.forEach((id) => {\n const factoryGetter = () =>\n handleInitialConsumes({\n moduleId: id,\n moduleToHandlerMapping,\n webpackRequire,\n asyncLoad,\n }) as Promise<false | (() => unknown)>;\n factoryIdSets.push([id, factoryGetter]);\n });\n\n const setModule = (\n id: string | number,\n factoryGetter: () => () => unknown,\n ) => {\n webpackRequire.m[id] = (module) => {\n // Handle scenario when module is used synchronously\n installedModules[id] = 0;\n delete webpackRequire.c[id];\n\n const factory = factoryGetter();\n if (typeof factory !== 'function') {\n throw new Error(\n `Shared module is not available for eager consumption: ${id}`,\n );\n }\n const result = factory();\n // Add layer property from shareConfig if available\n const { shareInfo } = moduleToHandlerMapping[id];\n if (\n shareInfo?.shareConfig?.layer &&\n result &&\n typeof result === 'object'\n ) {\n try {\n // Only set layer if it's not already defined or if it's undefined\n if (\n !result.hasOwnProperty('layer') ||\n (result as any).layer === undefined\n ) {\n (result as any).layer = shareInfo.shareConfig.layer;\n }\n } catch (e) {\n // Ignore if layer property is read-only\n }\n }\n module.exports = result;\n };\n };\n\n if (asyncLoad) {\n return Promise.all(\n factoryIdSets.map(async ([id, factoryGetter]) => {\n const result = await factoryGetter();\n setModule(id, () => result as () => unknown);\n }),\n );\n }\n factoryIdSets.forEach(([id, factoryGetter]) => {\n setModule(id, factoryGetter as () => () => unknown);\n });\n}\n"],"mappings":";;;;AAQA,SAAS,sBAAsB,SAAuC;CACpE,MAAM,EAAE,UAAU,wBAAwB,gBAAgB,cACxD;CAEF,MAAM,qBAAqB,eAAe,WAAW;AACrD,KAAI,CAAC,mBACH,OAAM,IAAI,MAAM,iCAAiC;CAEnD,MAAM,EAAE,UAAU,cAAc,uBAAuB;AAEvD,KAAI;EACF,MAAM,cAAc,eAAe,gBAAgB,SAAS;EAE5D,MAAM,kBAAmC,EAAE,GAAG,WAAW;AACzD,MAAI,YACF,iBAAgB,cAAc;GAC5B;GACA,OAAO,CAAC,mBAAmB,QAAQ,KAAK;GACzC;AAEH,MAAI,UACF,QAAO,mBAAmB,UAAU,UAAU;GAC5C;GACA,SAAS;IACP,SAAS;IACT;IACD;GACF,CAAC;AAEJ,SAAO,mBAAmB,cAAc,UAAU;GAChD;GACA,SAAS;IACP,SAAS;IACT;IACD;GACF,CAAC;UACK,KAAK;AACZ,UAAQ,MACN,iMACD;AACD,UAAQ,MAAM,6CAA6C;AAC3D,QAAM;;;AAIV,SAAgB,uBAAuB,SAAwC;AAC7E,sBAAqB,QAAQ;CAE7B,MAAM,EACJ,wBACA,gBACA,kBACA,iBACA,cACE;CAEJ,MAAM,gBAEF,EAAE;AACN,iBAAgB,SAAS,OAAO;EAC9B,MAAM,sBACJ,sBAAsB;GACpB,UAAU;GACV;GACA;GACA;GACD,CAAC;AACJ,gBAAc,KAAK,CAAC,IAAI,cAAc,CAAC;GACvC;CAEF,MAAM,aACJ,IACA,kBACG;AACH,iBAAe,EAAE,OAAO,WAAW;AAEjC,oBAAiB,MAAM;AACvB,UAAO,eAAe,EAAE;GAExB,MAAM,UAAU,eAAe;AAC/B,OAAI,OAAO,YAAY,WACrB,OAAM,IAAI,MACR,yDAAyD,KAC1D;GAEH,MAAM,SAAS,SAAS;GAExB,MAAM,EAAE,cAAc,uBAAuB;AAC7C,OACE,WAAW,aAAa,SACxB,UACA,OAAO,WAAW,SAElB,KAAI;AAEF,QACE,CAAC,OAAO,eAAe,QAAQ,IAC9B,OAAe,UAAU,OAE1B,CAAC,OAAe,QAAQ,UAAU,YAAY;YAEzC,GAAG;AAId,UAAO,UAAU;;;AAIrB,KAAI,UACF,QAAO,QAAQ,IACb,cAAc,IAAI,OAAO,CAAC,IAAI,mBAAmB;EAC/C,MAAM,SAAS,MAAM,eAAe;AACpC,YAAU,UAAU,OAAwB;GAC5C,CACH;AAEH,eAAc,SAAS,CAAC,IAAI,mBAAmB;AAC7C,YAAU,IAAI,cAAqC;GACnD"}
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.8.2",
4
+ "version": "2.9.0",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "description": "Module Federation Runtime for webpack",
@@ -26,9 +26,9 @@
26
26
  "module": "./dist/index.js",
27
27
  "types": "./dist/index.d.ts",
28
28
  "dependencies": {
29
- "@module-federation/error-codes": "2.8.2",
30
- "@module-federation/runtime": "2.8.2",
31
- "@module-federation/sdk": "2.8.2"
29
+ "@module-federation/error-codes": "2.9.0",
30
+ "@module-federation/runtime": "2.9.0",
31
+ "@module-federation/sdk": "2.9.0"
32
32
  },
33
33
  "exports": {
34
34
  ".": {