{"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 = { ...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 unknown)> | (() => unknown)]\n > = [];\n initialConsumes.forEach((id) => {\n const factoryGetter = () =>\n handleInitialConsumes({\n moduleId: id,\n moduleToHandlerMapping,\n webpackRequire,\n asyncLoad,\n }) as Promise 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"}