{"version":3,"file":"angular-architects-module-federation-runtime.mjs","sources":["../../../../libs/mf-runtime/src/lib/loader/dynamic-federation.ts","../../../../libs/mf-runtime/src/angular-architects-module-federation-runtime.ts"],"sourcesContent":["type Scope = unknown;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Factory = () => any;\n\ntype Container = {\n init(shareScope: Scope): void;\n get(module: string): Factory;\n};\n\nlet config: Manifest = {};\n\nexport type ManifestFile = {\n [key: string]: string | T;\n};\n\nexport type Manifest = {\n [key: string]: T;\n};\n\nexport type RemoteConfig = {\n type: 'module' | 'script';\n remoteEntry: string;\n [key: string]: unknown;\n};\n\ndeclare const __webpack_init_sharing__: (shareScope: string) => Promise;\ndeclare const __webpack_share_scopes__: { default: Scope };\n\ntype ContainerMap = { [key: string]: Container };\n\nconst containerMap: ContainerMap = {};\nconst remoteMap = {};\n\nlet isDefaultScopeInitialized = false;\n\nasync function lookupExposedModule(\n key: string,\n exposedModule: string\n): Promise {\n const container = containerMap[key];\n const factory = await container.get(exposedModule);\n const Module = factory();\n return Module as T;\n}\n\nasync function initRemote(container: Container, key: string) {\n // const container = window[key] as Container;\n\n // Do we still need to initialize the remote?\n if (remoteMap[key]) {\n return container;\n }\n\n // Do we still need to initialize the share scope?\n if (!isDefaultScopeInitialized) {\n await __webpack_init_sharing__('default');\n isDefaultScopeInitialized = true;\n }\n\n await container.init(__webpack_share_scopes__.default);\n remoteMap[key] = true;\n return container;\n}\n\nexport type LoadRemoteEntryOptions =\n | LoadRemoteEntryScriptOptions\n | LoadRemoteEntryEsmOptions;\n\nexport type LoadRemoteEntryScriptOptions = {\n type?: 'script';\n remoteEntry: string;\n remoteName: string;\n};\n\nexport type LoadRemoteEntryEsmOptions = {\n type: 'module';\n remoteEntry: string;\n};\n\nexport async function loadRemoteEntry(\n remoteEntry: string,\n remoteName: string\n): Promise;\nexport async function loadRemoteEntry(\n options: LoadRemoteEntryOptions\n): Promise;\nexport async function loadRemoteEntry(\n remoteEntryOrOptions: string | LoadRemoteEntryOptions,\n remoteName?: string\n): Promise {\n if (typeof remoteEntryOrOptions === 'string') {\n const remoteEntry = remoteEntryOrOptions;\n return await loadRemoteScriptEntry(remoteEntry, remoteName);\n } else if (remoteEntryOrOptions.type === 'script') {\n const options = remoteEntryOrOptions;\n return await loadRemoteScriptEntry(options.remoteEntry, options.remoteName);\n } else if (remoteEntryOrOptions.type === 'module') {\n const options = remoteEntryOrOptions;\n await loadRemoteModuleEntry(options.remoteEntry);\n }\n}\n\nasync function loadRemoteModuleEntry(remoteEntry: string): Promise {\n if (containerMap[remoteEntry]) {\n return Promise.resolve();\n }\n return await import(/* webpackIgnore:true */ remoteEntry).then(\n (container) => {\n initRemote(container, remoteEntry);\n containerMap[remoteEntry] = container;\n }\n );\n}\n\nasync function loadRemoteScriptEntry(\n remoteEntry: string,\n remoteName: string\n): Promise {\n return new Promise((resolve, reject) => {\n // Is remoteEntry already loaded?\n if (containerMap[remoteName]) {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n script.src = remoteEntry;\n\n script.onerror = reject;\n\n script.onload = () => {\n const container = window[remoteName] as Container;\n initRemote(container, remoteName);\n containerMap[remoteName] = container;\n resolve();\n };\n\n document.body.appendChild(script);\n });\n}\n\nexport type LoadRemoteModuleOptions =\n | LoadRemoteModuleScriptOptions\n | LoadRemoteModuleEsmOptions\n | LoadRemoteModuleManifestOptions;\n\nexport type LoadRemoteModuleScriptOptions = {\n type?: 'script';\n remoteEntry?: string;\n remoteName: string;\n exposedModule: string;\n};\n\nexport type LoadRemoteModuleEsmOptions = {\n type: 'module';\n remoteEntry: string;\n exposedModule: string;\n};\n\nexport type LoadRemoteModuleManifestOptions = {\n type: 'manifest';\n remoteName: string;\n exposedModule: string;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport async function loadRemoteModule(remoteName: string, exposedModule: string): Promise;\nexport async function loadRemoteModule(options: LoadRemoteModuleOptions): Promise\nexport async function loadRemoteModule(\n optionsOrRemoteName: LoadRemoteModuleOptions | string,\n exposedModule?: string\n): Promise {\n let loadRemoteEntryOptions: LoadRemoteEntryOptions;\n let key: string;\n let remoteEntry: string;\n let options: LoadRemoteModuleOptions;\n\n if (typeof optionsOrRemoteName === 'string') {\n options = {\n type: 'manifest',\n remoteName: optionsOrRemoteName,\n exposedModule: exposedModule\n }\n }\n else {\n options = optionsOrRemoteName;\n }\n\n // To support legacy API (< ng 13)\n if (!options.type) {\n const hasManifest = Object.keys(config).length > 0;\n options.type = hasManifest ? 'manifest' : 'script';\n }\n\n if (options.type === 'manifest') {\n const manifestEntry = config[options.remoteName];\n if (!manifestEntry) {\n throw new Error('Manifest does not contain ' + options.remoteName);\n }\n options = {\n type: manifestEntry.type,\n exposedModule: options.exposedModule,\n remoteEntry: manifestEntry.remoteEntry,\n remoteName:\n manifestEntry.type === 'script' ? options.remoteName : undefined,\n };\n remoteEntry = manifestEntry.remoteEntry;\n } else {\n remoteEntry = options.remoteEntry;\n }\n\n if (options.type === 'script') {\n loadRemoteEntryOptions = {\n type: 'script',\n remoteEntry: options.remoteEntry,\n remoteName: options.remoteName,\n };\n key = options.remoteName;\n } else if (options.type === 'module') {\n loadRemoteEntryOptions = {\n type: 'module',\n remoteEntry: options.remoteEntry,\n };\n key = options.remoteEntry;\n }\n\n if (remoteEntry) {\n await loadRemoteEntry(loadRemoteEntryOptions);\n }\n\n return await lookupExposedModule(key, options.exposedModule);\n}\n\nexport async function setManifest(\n manifest: ManifestFile,\n skipRemoteEntries = false\n) {\n config = parseConfig(manifest);\n\n if (!skipRemoteEntries) {\n await loadRemoteEntries();\n }\n}\n\nexport function getManifest(): T {\n return config as T;\n}\n\nexport async function initFederation(manifest: string | ManifestFile, skipRemoteEntries = false): Promise {\n if (typeof manifest === 'string') {\n return loadManifest(manifest, skipRemoteEntries);\n }\n else {\n return setManifest(manifest, skipRemoteEntries);\n }\n}\n\nexport async function loadManifest(\n configFile: string,\n skipRemoteEntries = false\n): Promise {\n const result = await fetch(configFile);\n\n if (!result.ok) {\n throw Error('could not load configFile: ' + configFile);\n }\n\n config = parseConfig(await result.json());\n\n if (!skipRemoteEntries) {\n await loadRemoteEntries();\n }\n}\n\nfunction parseConfig(config: ManifestFile): Manifest {\n const result: Manifest = {};\n for (const key in config) {\n const value = config[key];\n\n let entry: RemoteConfig;\n if (typeof value === 'string') {\n entry = {\n remoteEntry: value,\n type: 'module',\n };\n } else {\n entry = {\n ...value,\n type: value.type || 'module',\n };\n }\n\n result[key] = entry;\n }\n return result;\n}\n\nasync function loadRemoteEntries() {\n const promises: Promise[] = [];\n\n for (const key in config) {\n const entry = config[key];\n\n if (entry.type === 'module') {\n promises.push(\n loadRemoteEntry({ type: 'module', remoteEntry: entry.remoteEntry })\n );\n } else {\n promises.push(\n loadRemoteEntry({\n type: 'script',\n remoteEntry: entry.remoteEntry,\n remoteName: key,\n })\n );\n }\n }\n\n await Promise.all(promises);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}