{"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> = {};\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 {\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"}