@module-federation/runtime-core 0.0.0-feat-operate-openruntime-20260624070405 → 0.0.0-feat-operate-openruntime-20260624071936
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/core.cjs +1 -1
- package/dist/core.js +1 -1
- package/dist/global.cjs +1 -1
- package/dist/global.js +1 -1
- package/dist/utils/share.cjs +4 -4
- package/dist/utils/share.cjs.map +1 -1
- package/dist/utils/share.js +4 -4
- package/dist/utils/share.js.map +1 -1
- package/package.json +3 -3
package/dist/core.cjs
CHANGED
|
@@ -30,7 +30,7 @@ var ModuleFederation = class {
|
|
|
30
30
|
beforeInitContainer: new require_asyncWaterfallHooks.AsyncWaterfallHook("beforeInitContainer"),
|
|
31
31
|
initContainer: new require_asyncWaterfallHooks.AsyncWaterfallHook("initContainer")
|
|
32
32
|
});
|
|
33
|
-
this.version = "0.0.0-feat-operate-openruntime-
|
|
33
|
+
this.version = "0.0.0-feat-operate-openruntime-20260624071936";
|
|
34
34
|
this.moduleCache = /* @__PURE__ */ new Map();
|
|
35
35
|
this.loaderHook = new require_pluginSystem.PluginSystem({
|
|
36
36
|
getModuleInfo: new require_syncHook.SyncHook(),
|
package/dist/core.js
CHANGED
|
@@ -30,7 +30,7 @@ var ModuleFederation = class {
|
|
|
30
30
|
beforeInitContainer: new AsyncWaterfallHook("beforeInitContainer"),
|
|
31
31
|
initContainer: new AsyncWaterfallHook("initContainer")
|
|
32
32
|
});
|
|
33
|
-
this.version = "0.0.0-feat-operate-openruntime-
|
|
33
|
+
this.version = "0.0.0-feat-operate-openruntime-20260624071936";
|
|
34
34
|
this.moduleCache = /* @__PURE__ */ new Map();
|
|
35
35
|
this.loaderHook = new PluginSystem({
|
|
36
36
|
getModuleInfo: new SyncHook(),
|
package/dist/global.cjs
CHANGED
|
@@ -65,7 +65,7 @@ function getGlobalFederationConstructor() {
|
|
|
65
65
|
function setGlobalFederationConstructor(FederationConstructor, isDebug = (0, _module_federation_sdk.isDebugMode)()) {
|
|
66
66
|
if (isDebug) {
|
|
67
67
|
CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = FederationConstructor;
|
|
68
|
-
CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.0.0-feat-operate-openruntime-
|
|
68
|
+
CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.0.0-feat-operate-openruntime-20260624071936";
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
function getInfoWithoutType(target, key) {
|
package/dist/global.js
CHANGED
|
@@ -65,7 +65,7 @@ function getGlobalFederationConstructor() {
|
|
|
65
65
|
function setGlobalFederationConstructor(FederationConstructor, isDebug = isDebugMode()) {
|
|
66
66
|
if (isDebug) {
|
|
67
67
|
CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = FederationConstructor;
|
|
68
|
-
CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.0.0-feat-operate-openruntime-
|
|
68
|
+
CurrentGlobal.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = "0.0.0-feat-operate-openruntime-20260624071936";
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
function getInfoWithoutType(target, key) {
|
package/dist/utils/share.cjs
CHANGED
|
@@ -22,10 +22,10 @@ function formatShare(shareArgs, from, name, shareStrategy) {
|
|
|
22
22
|
...shareArgs,
|
|
23
23
|
shareConfig: {
|
|
24
24
|
requiredVersion: `^${shareArgs.version}`,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
...shareArgs.shareConfig,
|
|
26
|
+
singleton: Boolean(shareArgs.shareConfig?.singleton),
|
|
27
|
+
eager: Boolean(shareArgs.shareConfig?.eager),
|
|
28
|
+
strictVersion: Boolean(shareArgs.shareConfig?.strictVersion)
|
|
29
29
|
},
|
|
30
30
|
get,
|
|
31
31
|
loaded: shareArgs?.loaded || "lib" in shareArgs ? true : void 0,
|
package/dist/utils/share.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.cjs","names":["TreeShakingStatus","arrayOptions","satisfy","DEFAULT_SCOPE","Global"],"sources":["../../src/utils/share.ts"],"sourcesContent":["import { DEFAULT_SCOPE } from '../constant';\nimport { TreeShakingStatus } from '@module-federation/sdk';\nimport { Global, Federation } from '../global';\nimport {\n GlobalShareScopeMap,\n Shared,\n ShareArgs,\n ShareInfos,\n ShareScopeMap,\n LoadShareExtraOptions,\n UserOptions,\n Options,\n ShareStrategy,\n TreeShakingArgs,\n SharedGetter,\n} from '../type';\nimport { warn, error } from './logger';\nimport { satisfy } from './semver';\nimport { SyncWaterfallHook } from './hooks';\nimport { addUniqueItem, arrayOptions } from './tool';\n\nfunction formatShare(\n shareArgs: ShareArgs,\n from: string,\n name: string,\n shareStrategy?: ShareStrategy,\n): Shared {\n let get: Shared['get'];\n if ('get' in shareArgs) {\n // eslint-disable-next-line prefer-destructuring\n get = shareArgs.get;\n } else if ('lib' in shareArgs) {\n get = () => Promise.resolve(shareArgs.lib);\n } else {\n get = () =>\n Promise.resolve(() => {\n error(\n `Cannot get shared \"${name}\" from \"${from}\": neither \"get\" nor \"lib\" is provided in the share config.`,\n );\n });\n }\n\n if (shareArgs.shareConfig?.eager && shareArgs.treeShaking?.mode) {\n error(\n `Invalid shared config for \"${name}\" from \"${from}\": cannot use both \"eager: true\" and \"treeShaking.mode\" simultaneously. Choose one strategy.`,\n );\n }\n\n return {\n deps: [],\n useIn: [],\n from,\n loading: null,\n ...shareArgs,\n shareConfig: {\n requiredVersion: `^${shareArgs.version}`,\n singleton: false,\n eager: false,\n strictVersion: false,\n ...shareArgs.shareConfig,\n },\n get,\n loaded: shareArgs?.loaded || 'lib' in shareArgs ? true : undefined,\n version: shareArgs.version ?? '0',\n scope: Array.isArray(shareArgs.scope)\n ? shareArgs.scope\n : [shareArgs.scope ?? 'default'],\n strategy: (shareArgs.strategy ?? shareStrategy) || 'version-first',\n treeShaking: shareArgs.treeShaking\n ? {\n ...shareArgs.treeShaking,\n mode: shareArgs.treeShaking.mode ?? 'server-calc',\n status: shareArgs.treeShaking.status ?? TreeShakingStatus.UNKNOWN,\n useIn: [],\n }\n : undefined,\n };\n}\n\nexport function formatShareConfigs(\n prevOptions: Options,\n newOptions: UserOptions,\n) {\n const shareArgs = newOptions.shared || {};\n const from = newOptions.name;\n\n const newShareInfos = Object.keys(shareArgs).reduce((res, pkgName) => {\n const arrayShareArgs = arrayOptions(shareArgs[pkgName]);\n res[pkgName] = res[pkgName] || [];\n arrayShareArgs.forEach((shareConfig) => {\n res[pkgName].push(\n formatShare(shareConfig, from, pkgName, newOptions.shareStrategy),\n );\n });\n return res;\n }, {} as ShareInfos);\n\n const allShareInfos = {\n ...prevOptions.shared,\n };\n\n Object.keys(newShareInfos).forEach((shareKey) => {\n if (!allShareInfos[shareKey]) {\n allShareInfos[shareKey] = newShareInfos[shareKey];\n } else {\n newShareInfos[shareKey].forEach((newUserSharedOptions) => {\n const isSameVersion = allShareInfos[shareKey].find(\n (sharedVal) => sharedVal.version === newUserSharedOptions.version,\n );\n if (!isSameVersion) {\n allShareInfos[shareKey].push(newUserSharedOptions);\n }\n });\n }\n });\n return { allShareInfos, newShareInfos };\n}\n\nexport function shouldUseTreeShaking(\n treeShaking?: TreeShakingArgs,\n usedExports?: string[],\n) {\n if (!treeShaking) {\n return false;\n }\n const { status, mode } = treeShaking;\n if (status === TreeShakingStatus.NO_USE) {\n return false;\n }\n\n if (status === TreeShakingStatus.CALCULATED) {\n return true;\n }\n\n if (mode === 'runtime-infer') {\n if (!usedExports) {\n return true;\n }\n return isMatchUsedExports(treeShaking, usedExports);\n }\n\n return false;\n}\n\n/**\n * compare version a and b, return true if a is less than b\n */\nexport function versionLt(a: string, b: string): boolean {\n const transformInvalidVersion = (version: string) => {\n const isNumberVersion = !Number.isNaN(Number(version));\n if (isNumberVersion) {\n const splitArr = version.split('.');\n let validVersion = version;\n for (let i = 0; i < 3 - splitArr.length; i++) {\n validVersion += '.0';\n }\n return validVersion;\n }\n return version;\n };\n if (satisfy(transformInvalidVersion(a), `<=${transformInvalidVersion(b)}`)) {\n return true;\n } else {\n return false;\n }\n}\n\nexport const findVersion = (\n shareVersionMap: ShareScopeMap[string][string],\n cb?: (prev: string, cur: string) => boolean,\n): string => {\n const callback =\n cb ||\n function (prev: string, cur: string): boolean {\n return versionLt(prev, cur);\n };\n\n return Object.keys(shareVersionMap).reduce((prev: number | string, cur) => {\n if (!prev) {\n return cur;\n }\n if (callback(prev as string, cur)) {\n return cur;\n }\n\n // default version is '0' https://github.com/webpack/webpack/blob/main/lib/sharing/ProvideSharedModule.js#L136\n if (prev === '0') {\n return cur;\n }\n\n return prev;\n }, 0) as string;\n};\n\nexport const isLoaded = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return Boolean(shared.loaded) || typeof shared.lib === 'function';\n};\n\nconst isLoading = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return Boolean(shared.loading);\n};\n\nconst isMatchUsedExports = (\n treeShaking?: TreeShakingArgs,\n usedExports?: string[],\n) => {\n if (!treeShaking || !usedExports) {\n return false;\n }\n\n const { usedExports: treeShakingUsedExports } = treeShaking;\n\n if (!treeShakingUsedExports) {\n return false;\n }\n\n if (usedExports.every((e) => treeShakingUsedExports.includes(e))) {\n return true;\n }\n\n return false;\n};\n\nfunction findSingletonVersionOrderByVersion(\n shareScopeMap: ShareScopeMap,\n scope: string,\n pkgName: string,\n treeShaking?: TreeShakingArgs,\n): {\n version: string;\n useTreesShaking: boolean;\n} {\n const versions = shareScopeMap[scope][pkgName];\n let version = '';\n let useTreesShaking = shouldUseTreeShaking(treeShaking);\n // return false means use prev version\n const callback = function (prev: string, cur: string): boolean {\n if (useTreesShaking) {\n if (!versions[prev].treeShaking) {\n return true;\n }\n if (!versions[cur].treeShaking) {\n return false;\n }\n return !isLoaded(versions[prev].treeShaking) && versionLt(prev, cur);\n }\n return !isLoaded(versions[prev]) && versionLt(prev, cur);\n };\n\n if (useTreesShaking) {\n version = findVersion(shareScopeMap[scope][pkgName], callback);\n if (version) {\n return {\n version,\n useTreesShaking,\n };\n }\n useTreesShaking = false;\n }\n\n return {\n version: findVersion(shareScopeMap[scope][pkgName], callback),\n useTreesShaking,\n };\n}\n\nconst isLoadingOrLoaded = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return isLoaded(shared) || isLoading(shared);\n};\n\nfunction findSingletonVersionOrderByLoaded(\n shareScopeMap: ShareScopeMap,\n scope: string,\n pkgName: string,\n treeShaking?: TreeShakingArgs,\n): {\n version: string;\n useTreesShaking: boolean;\n} {\n const versions = shareScopeMap[scope][pkgName];\n let version = '';\n let useTreesShaking = shouldUseTreeShaking(treeShaking);\n\n // return false means use prev version\n const callback = function (prev: string, cur: string): boolean {\n if (useTreesShaking) {\n if (!versions[prev].treeShaking) {\n return true;\n }\n if (!versions[cur].treeShaking) {\n return false;\n }\n if (isLoadingOrLoaded(versions[cur].treeShaking)) {\n if (isLoadingOrLoaded(versions[prev].treeShaking)) {\n return Boolean(versionLt(prev, cur));\n } else {\n return true;\n }\n }\n if (isLoadingOrLoaded(versions[prev].treeShaking)) {\n return false;\n }\n }\n\n if (isLoadingOrLoaded(versions[cur])) {\n if (isLoadingOrLoaded(versions[prev])) {\n return Boolean(versionLt(prev, cur));\n } else {\n return true;\n }\n }\n if (isLoadingOrLoaded(versions[prev])) {\n return false;\n }\n return versionLt(prev, cur);\n };\n\n if (useTreesShaking) {\n version = findVersion(shareScopeMap[scope][pkgName], callback);\n if (version) {\n return {\n version,\n useTreesShaking,\n };\n }\n useTreesShaking = false;\n }\n\n return {\n version: findVersion(shareScopeMap[scope][pkgName], callback),\n useTreesShaking,\n };\n}\n\nfunction getFindShareFunction(strategy: Shared['strategy']) {\n if (strategy === 'loaded-first') {\n return findSingletonVersionOrderByLoaded;\n }\n return findSingletonVersionOrderByVersion;\n}\n\nexport function getRegisteredShare(\n localShareScopeMap: ShareScopeMap,\n pkgName: string,\n shareInfo: Shared,\n resolveShare: SyncWaterfallHook<{\n shareScopeMap: ShareScopeMap;\n scope: string;\n pkgName: string;\n version: string;\n shareInfo: Shared;\n GlobalFederation: Federation;\n resolver: () => { shared: Shared; useTreesShaking: boolean } | undefined;\n }>,\n): { shared: Shared; useTreesShaking: boolean } | void {\n if (!localShareScopeMap) {\n return;\n }\n const {\n shareConfig,\n scope = DEFAULT_SCOPE,\n strategy,\n treeShaking,\n } = shareInfo;\n const scopes = Array.isArray(scope) ? scope : [scope];\n for (const sc of scopes) {\n if (\n shareConfig &&\n localShareScopeMap[sc] &&\n localShareScopeMap[sc][pkgName]\n ) {\n const { requiredVersion } = shareConfig;\n const findShareFunction = getFindShareFunction(strategy);\n const { version: maxOrSingletonVersion, useTreesShaking } =\n findShareFunction(localShareScopeMap, sc, pkgName, treeShaking);\n\n const defaultResolver = () => {\n const shared = localShareScopeMap[sc][pkgName][maxOrSingletonVersion];\n if (shareConfig.singleton) {\n if (\n typeof requiredVersion === 'string' &&\n !satisfy(maxOrSingletonVersion, requiredVersion)\n ) {\n const msg = `Version ${maxOrSingletonVersion} from ${\n maxOrSingletonVersion && shared.from\n } of shared singleton module ${pkgName} does not satisfy the requirement of ${\n shareInfo.from\n } which needs ${requiredVersion})`;\n\n if (shareConfig.strictVersion) {\n error(msg);\n } else {\n warn(msg);\n }\n }\n return {\n shared,\n useTreesShaking,\n };\n } else {\n if (requiredVersion === false || requiredVersion === '*') {\n return {\n shared,\n useTreesShaking,\n };\n }\n if (satisfy(maxOrSingletonVersion, requiredVersion)) {\n return {\n shared,\n useTreesShaking,\n };\n }\n\n const _usedTreeShaking = shouldUseTreeShaking(treeShaking);\n if (_usedTreeShaking) {\n for (const [versionKey, versionValue] of Object.entries(\n localShareScopeMap[sc][pkgName],\n )) {\n if (\n !shouldUseTreeShaking(\n versionValue.treeShaking,\n treeShaking?.usedExports,\n )\n ) {\n continue;\n }\n\n if (satisfy(versionKey, requiredVersion)) {\n return {\n shared: versionValue,\n useTreesShaking: _usedTreeShaking,\n };\n }\n }\n }\n for (const [versionKey, versionValue] of Object.entries(\n localShareScopeMap[sc][pkgName],\n )) {\n if (satisfy(versionKey, requiredVersion)) {\n return {\n shared: versionValue,\n useTreesShaking: false,\n };\n }\n }\n }\n return;\n };\n const params = {\n shareScopeMap: localShareScopeMap,\n scope: sc,\n pkgName,\n version: maxOrSingletonVersion,\n GlobalFederation: Global.__FEDERATION__,\n shareInfo,\n resolver: defaultResolver,\n };\n const resolveShared = resolveShare.emit(params) || params;\n return resolveShared.resolver();\n }\n }\n}\n\nexport function getGlobalShareScope(): GlobalShareScopeMap {\n return Global.__FEDERATION__.__SHARE__;\n}\n\nexport function getTargetSharedOptions(options: {\n pkgName: string;\n extraOptions?: LoadShareExtraOptions;\n shareInfos: ShareInfos;\n}) {\n const { pkgName, extraOptions, shareInfos } = options;\n const defaultResolver = (sharedOptions: ShareInfos[string]) => {\n if (!sharedOptions) {\n return undefined;\n }\n const shareVersionMap: ShareScopeMap[string][string] = {};\n sharedOptions.forEach((shared) => {\n shareVersionMap[shared.version] = shared;\n });\n const callback = function (prev: string, cur: string): boolean {\n return (\n // TODO: consider multiple treeShaking shared scenes\n !isLoaded(shareVersionMap[prev]) && versionLt(prev, cur)\n );\n };\n\n const maxVersion = findVersion(shareVersionMap, callback);\n return shareVersionMap[maxVersion];\n };\n\n const resolver = extraOptions?.resolver ?? defaultResolver;\n const isPlainObject = (val: unknown): val is Record<string, any> => {\n return val !== null && typeof val === 'object' && !Array.isArray(val);\n };\n\n const merge = <T extends Record<string, any>>(\n ...sources: Array<Partial<T> | undefined>\n ): T => {\n const out = {} as T;\n for (const src of sources) {\n if (!src) continue;\n for (const [key, value] of Object.entries(src)) {\n const prev = (out as any)[key];\n if (isPlainObject(prev) && isPlainObject(value)) {\n (out as any)[key] = merge(prev, value);\n } else if (value !== undefined) {\n (out as any)[key] = value;\n }\n }\n }\n return out;\n };\n\n return merge(resolver(shareInfos[pkgName]), extraOptions?.customShareInfo);\n}\n\nexport const addUseIn = (\n shared: { useIn?: Array<string> },\n from: string,\n): void => {\n if (!shared.useIn) {\n shared.useIn = [];\n }\n addUniqueItem(shared.useIn, from);\n};\n\nexport function directShare(\n shared: Shared,\n useTreesShaking?: boolean,\n): Shared | TreeShakingArgs {\n if (useTreesShaking && shared.treeShaking) {\n return shared.treeShaking;\n }\n\n return shared;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"share.cjs","names":["TreeShakingStatus","arrayOptions","satisfy","DEFAULT_SCOPE","Global"],"sources":["../../src/utils/share.ts"],"sourcesContent":["import { DEFAULT_SCOPE } from '../constant';\nimport { TreeShakingStatus } from '@module-federation/sdk';\nimport { Global, Federation } from '../global';\nimport {\n GlobalShareScopeMap,\n Shared,\n ShareArgs,\n ShareInfos,\n ShareScopeMap,\n LoadShareExtraOptions,\n UserOptions,\n Options,\n ShareStrategy,\n TreeShakingArgs,\n SharedGetter,\n} from '../type';\nimport { warn, error } from './logger';\nimport { satisfy } from './semver';\nimport { SyncWaterfallHook } from './hooks';\nimport { addUniqueItem, arrayOptions } from './tool';\n\nfunction formatShare(\n shareArgs: ShareArgs,\n from: string,\n name: string,\n shareStrategy?: ShareStrategy,\n): Shared {\n let get: Shared['get'];\n if ('get' in shareArgs) {\n // eslint-disable-next-line prefer-destructuring\n get = shareArgs.get;\n } else if ('lib' in shareArgs) {\n get = () => Promise.resolve(shareArgs.lib);\n } else {\n get = () =>\n Promise.resolve(() => {\n error(\n `Cannot get shared \"${name}\" from \"${from}\": neither \"get\" nor \"lib\" is provided in the share config.`,\n );\n });\n }\n\n if (shareArgs.shareConfig?.eager && shareArgs.treeShaking?.mode) {\n error(\n `Invalid shared config for \"${name}\" from \"${from}\": cannot use both \"eager: true\" and \"treeShaking.mode\" simultaneously. Choose one strategy.`,\n );\n }\n\n return {\n deps: [],\n useIn: [],\n from,\n loading: null,\n ...shareArgs,\n shareConfig: {\n requiredVersion: `^${shareArgs.version}`,\n ...shareArgs.shareConfig,\n singleton: Boolean(shareArgs.shareConfig?.singleton),\n eager: Boolean(shareArgs.shareConfig?.eager),\n strictVersion: Boolean(shareArgs.shareConfig?.strictVersion),\n },\n get,\n loaded: shareArgs?.loaded || 'lib' in shareArgs ? true : undefined,\n version: shareArgs.version ?? '0',\n scope: Array.isArray(shareArgs.scope)\n ? shareArgs.scope\n : [shareArgs.scope ?? 'default'],\n strategy: (shareArgs.strategy ?? shareStrategy) || 'version-first',\n treeShaking: shareArgs.treeShaking\n ? {\n ...shareArgs.treeShaking,\n mode: shareArgs.treeShaking.mode ?? 'server-calc',\n status: shareArgs.treeShaking.status ?? TreeShakingStatus.UNKNOWN,\n useIn: [],\n }\n : undefined,\n };\n}\n\nexport function formatShareConfigs(\n prevOptions: Options,\n newOptions: UserOptions,\n) {\n const shareArgs = newOptions.shared || {};\n const from = newOptions.name;\n\n const newShareInfos = Object.keys(shareArgs).reduce((res, pkgName) => {\n const arrayShareArgs = arrayOptions(shareArgs[pkgName]);\n res[pkgName] = res[pkgName] || [];\n arrayShareArgs.forEach((shareConfig) => {\n res[pkgName].push(\n formatShare(shareConfig, from, pkgName, newOptions.shareStrategy),\n );\n });\n return res;\n }, {} as ShareInfos);\n\n const allShareInfos = {\n ...prevOptions.shared,\n };\n\n Object.keys(newShareInfos).forEach((shareKey) => {\n if (!allShareInfos[shareKey]) {\n allShareInfos[shareKey] = newShareInfos[shareKey];\n } else {\n newShareInfos[shareKey].forEach((newUserSharedOptions) => {\n const isSameVersion = allShareInfos[shareKey].find(\n (sharedVal) => sharedVal.version === newUserSharedOptions.version,\n );\n if (!isSameVersion) {\n allShareInfos[shareKey].push(newUserSharedOptions);\n }\n });\n }\n });\n return { allShareInfos, newShareInfos };\n}\n\nexport function shouldUseTreeShaking(\n treeShaking?: TreeShakingArgs,\n usedExports?: string[],\n) {\n if (!treeShaking) {\n return false;\n }\n const { status, mode } = treeShaking;\n if (status === TreeShakingStatus.NO_USE) {\n return false;\n }\n\n if (status === TreeShakingStatus.CALCULATED) {\n return true;\n }\n\n if (mode === 'runtime-infer') {\n if (!usedExports) {\n return true;\n }\n return isMatchUsedExports(treeShaking, usedExports);\n }\n\n return false;\n}\n\n/**\n * compare version a and b, return true if a is less than b\n */\nexport function versionLt(a: string, b: string): boolean {\n const transformInvalidVersion = (version: string) => {\n const isNumberVersion = !Number.isNaN(Number(version));\n if (isNumberVersion) {\n const splitArr = version.split('.');\n let validVersion = version;\n for (let i = 0; i < 3 - splitArr.length; i++) {\n validVersion += '.0';\n }\n return validVersion;\n }\n return version;\n };\n if (satisfy(transformInvalidVersion(a), `<=${transformInvalidVersion(b)}`)) {\n return true;\n } else {\n return false;\n }\n}\n\nexport const findVersion = (\n shareVersionMap: ShareScopeMap[string][string],\n cb?: (prev: string, cur: string) => boolean,\n): string => {\n const callback =\n cb ||\n function (prev: string, cur: string): boolean {\n return versionLt(prev, cur);\n };\n\n return Object.keys(shareVersionMap).reduce((prev: number | string, cur) => {\n if (!prev) {\n return cur;\n }\n if (callback(prev as string, cur)) {\n return cur;\n }\n\n // default version is '0' https://github.com/webpack/webpack/blob/main/lib/sharing/ProvideSharedModule.js#L136\n if (prev === '0') {\n return cur;\n }\n\n return prev;\n }, 0) as string;\n};\n\nexport const isLoaded = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return Boolean(shared.loaded) || typeof shared.lib === 'function';\n};\n\nconst isLoading = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return Boolean(shared.loading);\n};\n\nconst isMatchUsedExports = (\n treeShaking?: TreeShakingArgs,\n usedExports?: string[],\n) => {\n if (!treeShaking || !usedExports) {\n return false;\n }\n\n const { usedExports: treeShakingUsedExports } = treeShaking;\n\n if (!treeShakingUsedExports) {\n return false;\n }\n\n if (usedExports.every((e) => treeShakingUsedExports.includes(e))) {\n return true;\n }\n\n return false;\n};\n\nfunction findSingletonVersionOrderByVersion(\n shareScopeMap: ShareScopeMap,\n scope: string,\n pkgName: string,\n treeShaking?: TreeShakingArgs,\n): {\n version: string;\n useTreesShaking: boolean;\n} {\n const versions = shareScopeMap[scope][pkgName];\n let version = '';\n let useTreesShaking = shouldUseTreeShaking(treeShaking);\n // return false means use prev version\n const callback = function (prev: string, cur: string): boolean {\n if (useTreesShaking) {\n if (!versions[prev].treeShaking) {\n return true;\n }\n if (!versions[cur].treeShaking) {\n return false;\n }\n return !isLoaded(versions[prev].treeShaking) && versionLt(prev, cur);\n }\n return !isLoaded(versions[prev]) && versionLt(prev, cur);\n };\n\n if (useTreesShaking) {\n version = findVersion(shareScopeMap[scope][pkgName], callback);\n if (version) {\n return {\n version,\n useTreesShaking,\n };\n }\n useTreesShaking = false;\n }\n\n return {\n version: findVersion(shareScopeMap[scope][pkgName], callback),\n useTreesShaking,\n };\n}\n\nconst isLoadingOrLoaded = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return isLoaded(shared) || isLoading(shared);\n};\n\nfunction findSingletonVersionOrderByLoaded(\n shareScopeMap: ShareScopeMap,\n scope: string,\n pkgName: string,\n treeShaking?: TreeShakingArgs,\n): {\n version: string;\n useTreesShaking: boolean;\n} {\n const versions = shareScopeMap[scope][pkgName];\n let version = '';\n let useTreesShaking = shouldUseTreeShaking(treeShaking);\n\n // return false means use prev version\n const callback = function (prev: string, cur: string): boolean {\n if (useTreesShaking) {\n if (!versions[prev].treeShaking) {\n return true;\n }\n if (!versions[cur].treeShaking) {\n return false;\n }\n if (isLoadingOrLoaded(versions[cur].treeShaking)) {\n if (isLoadingOrLoaded(versions[prev].treeShaking)) {\n return Boolean(versionLt(prev, cur));\n } else {\n return true;\n }\n }\n if (isLoadingOrLoaded(versions[prev].treeShaking)) {\n return false;\n }\n }\n\n if (isLoadingOrLoaded(versions[cur])) {\n if (isLoadingOrLoaded(versions[prev])) {\n return Boolean(versionLt(prev, cur));\n } else {\n return true;\n }\n }\n if (isLoadingOrLoaded(versions[prev])) {\n return false;\n }\n return versionLt(prev, cur);\n };\n\n if (useTreesShaking) {\n version = findVersion(shareScopeMap[scope][pkgName], callback);\n if (version) {\n return {\n version,\n useTreesShaking,\n };\n }\n useTreesShaking = false;\n }\n\n return {\n version: findVersion(shareScopeMap[scope][pkgName], callback),\n useTreesShaking,\n };\n}\n\nfunction getFindShareFunction(strategy: Shared['strategy']) {\n if (strategy === 'loaded-first') {\n return findSingletonVersionOrderByLoaded;\n }\n return findSingletonVersionOrderByVersion;\n}\n\nexport function getRegisteredShare(\n localShareScopeMap: ShareScopeMap,\n pkgName: string,\n shareInfo: Shared,\n resolveShare: SyncWaterfallHook<{\n shareScopeMap: ShareScopeMap;\n scope: string;\n pkgName: string;\n version: string;\n shareInfo: Shared;\n GlobalFederation: Federation;\n resolver: () => { shared: Shared; useTreesShaking: boolean } | undefined;\n }>,\n): { shared: Shared; useTreesShaking: boolean } | void {\n if (!localShareScopeMap) {\n return;\n }\n const {\n shareConfig,\n scope = DEFAULT_SCOPE,\n strategy,\n treeShaking,\n } = shareInfo;\n const scopes = Array.isArray(scope) ? scope : [scope];\n for (const sc of scopes) {\n if (\n shareConfig &&\n localShareScopeMap[sc] &&\n localShareScopeMap[sc][pkgName]\n ) {\n const { requiredVersion } = shareConfig;\n const findShareFunction = getFindShareFunction(strategy);\n const { version: maxOrSingletonVersion, useTreesShaking } =\n findShareFunction(localShareScopeMap, sc, pkgName, treeShaking);\n\n const defaultResolver = () => {\n const shared = localShareScopeMap[sc][pkgName][maxOrSingletonVersion];\n if (shareConfig.singleton) {\n if (\n typeof requiredVersion === 'string' &&\n !satisfy(maxOrSingletonVersion, requiredVersion)\n ) {\n const msg = `Version ${maxOrSingletonVersion} from ${\n maxOrSingletonVersion && shared.from\n } of shared singleton module ${pkgName} does not satisfy the requirement of ${\n shareInfo.from\n } which needs ${requiredVersion})`;\n\n if (shareConfig.strictVersion) {\n error(msg);\n } else {\n warn(msg);\n }\n }\n return {\n shared,\n useTreesShaking,\n };\n } else {\n if (requiredVersion === false || requiredVersion === '*') {\n return {\n shared,\n useTreesShaking,\n };\n }\n if (satisfy(maxOrSingletonVersion, requiredVersion)) {\n return {\n shared,\n useTreesShaking,\n };\n }\n\n const _usedTreeShaking = shouldUseTreeShaking(treeShaking);\n if (_usedTreeShaking) {\n for (const [versionKey, versionValue] of Object.entries(\n localShareScopeMap[sc][pkgName],\n )) {\n if (\n !shouldUseTreeShaking(\n versionValue.treeShaking,\n treeShaking?.usedExports,\n )\n ) {\n continue;\n }\n\n if (satisfy(versionKey, requiredVersion)) {\n return {\n shared: versionValue,\n useTreesShaking: _usedTreeShaking,\n };\n }\n }\n }\n for (const [versionKey, versionValue] of Object.entries(\n localShareScopeMap[sc][pkgName],\n )) {\n if (satisfy(versionKey, requiredVersion)) {\n return {\n shared: versionValue,\n useTreesShaking: false,\n };\n }\n }\n }\n return;\n };\n const params = {\n shareScopeMap: localShareScopeMap,\n scope: sc,\n pkgName,\n version: maxOrSingletonVersion,\n GlobalFederation: Global.__FEDERATION__,\n shareInfo,\n resolver: defaultResolver,\n };\n const resolveShared = resolveShare.emit(params) || params;\n return resolveShared.resolver();\n }\n }\n}\n\nexport function getGlobalShareScope(): GlobalShareScopeMap {\n return Global.__FEDERATION__.__SHARE__;\n}\n\nexport function getTargetSharedOptions(options: {\n pkgName: string;\n extraOptions?: LoadShareExtraOptions;\n shareInfos: ShareInfos;\n}) {\n const { pkgName, extraOptions, shareInfos } = options;\n const defaultResolver = (sharedOptions: ShareInfos[string]) => {\n if (!sharedOptions) {\n return undefined;\n }\n const shareVersionMap: ShareScopeMap[string][string] = {};\n sharedOptions.forEach((shared) => {\n shareVersionMap[shared.version] = shared;\n });\n const callback = function (prev: string, cur: string): boolean {\n return (\n // TODO: consider multiple treeShaking shared scenes\n !isLoaded(shareVersionMap[prev]) && versionLt(prev, cur)\n );\n };\n\n const maxVersion = findVersion(shareVersionMap, callback);\n return shareVersionMap[maxVersion];\n };\n\n const resolver = extraOptions?.resolver ?? defaultResolver;\n const isPlainObject = (val: unknown): val is Record<string, any> => {\n return val !== null && typeof val === 'object' && !Array.isArray(val);\n };\n\n const merge = <T extends Record<string, any>>(\n ...sources: Array<Partial<T> | undefined>\n ): T => {\n const out = {} as T;\n for (const src of sources) {\n if (!src) continue;\n for (const [key, value] of Object.entries(src)) {\n const prev = (out as any)[key];\n if (isPlainObject(prev) && isPlainObject(value)) {\n (out as any)[key] = merge(prev, value);\n } else if (value !== undefined) {\n (out as any)[key] = value;\n }\n }\n }\n return out;\n };\n\n return merge(resolver(shareInfos[pkgName]), extraOptions?.customShareInfo);\n}\n\nexport const addUseIn = (\n shared: { useIn?: Array<string> },\n from: string,\n): void => {\n if (!shared.useIn) {\n shared.useIn = [];\n }\n addUniqueItem(shared.useIn, from);\n};\n\nexport function directShare(\n shared: Shared,\n useTreesShaking?: boolean,\n): Shared | TreeShakingArgs {\n if (useTreesShaking && shared.treeShaking) {\n return shared.treeShaking;\n }\n\n return shared;\n}\n"],"mappings":";;;;;;;;AAqBA,SAAS,YACP,WACA,MACA,MACA,eACQ;CACR,IAAI;AACJ,KAAI,SAAS,UAEX,OAAM,UAAU;UACP,SAAS,UAClB,aAAY,QAAQ,QAAQ,UAAU,IAAI;KAE1C,aACE,QAAQ,cAAc;AACpB,uBACE,sBAAsB,KAAK,UAAU,KAAK,6DAC3C;GACD;AAGN,KAAI,UAAU,aAAa,SAAS,UAAU,aAAa,KACzD,sBACE,8BAA8B,KAAK,UAAU,KAAK,8FACnD;AAGH,QAAO;EACL,MAAM,EAAE;EACR,OAAO,EAAE;EACT;EACA,SAAS;EACT,GAAG;EACH,aAAa;GACX,iBAAiB,IAAI,UAAU;GAC/B,GAAG,UAAU;GACb,WAAW,QAAQ,UAAU,aAAa,UAAU;GACpD,OAAO,QAAQ,UAAU,aAAa,MAAM;GAC5C,eAAe,QAAQ,UAAU,aAAa,cAAc;GAC7D;EACD;EACA,QAAQ,WAAW,UAAU,SAAS,YAAY,OAAO;EACzD,SAAS,UAAU,WAAW;EAC9B,OAAO,MAAM,QAAQ,UAAU,MAAM,GACjC,UAAU,QACV,CAAC,UAAU,SAAS,UAAU;EAClC,WAAW,UAAU,YAAY,kBAAkB;EACnD,aAAa,UAAU,cACnB;GACE,GAAG,UAAU;GACb,MAAM,UAAU,YAAY,QAAQ;GACpC,QAAQ,UAAU,YAAY,UAAUA,yCAAkB;GAC1D,OAAO,EAAE;GACV,GACD;EACL;;AAGH,SAAgB,mBACd,aACA,YACA;CACA,MAAM,YAAY,WAAW,UAAU,EAAE;CACzC,MAAM,OAAO,WAAW;CAExB,MAAM,gBAAgB,OAAO,KAAK,UAAU,CAAC,QAAQ,KAAK,YAAY;EACpE,MAAM,iBAAiBC,0BAAa,UAAU,SAAS;AACvD,MAAI,WAAW,IAAI,YAAY,EAAE;AACjC,iBAAe,SAAS,gBAAgB;AACtC,OAAI,SAAS,KACX,YAAY,aAAa,MAAM,SAAS,WAAW,cAAc,CAClE;IACD;AACF,SAAO;IACN,EAAE,CAAe;CAEpB,MAAM,gBAAgB,EACpB,GAAG,YAAY,QAChB;AAED,QAAO,KAAK,cAAc,CAAC,SAAS,aAAa;AAC/C,MAAI,CAAC,cAAc,UACjB,eAAc,YAAY,cAAc;MAExC,eAAc,UAAU,SAAS,yBAAyB;AAIxD,OAAI,CAHkB,cAAc,UAAU,MAC3C,cAAc,UAAU,YAAY,qBAAqB,QAC3D,CAEC,eAAc,UAAU,KAAK,qBAAqB;IAEpD;GAEJ;AACF,QAAO;EAAE;EAAe;EAAe;;AAGzC,SAAgB,qBACd,aACA,aACA;AACA,KAAI,CAAC,YACH,QAAO;CAET,MAAM,EAAE,QAAQ,SAAS;AACzB,KAAI,WAAWD,yCAAkB,OAC/B,QAAO;AAGT,KAAI,WAAWA,yCAAkB,WAC/B,QAAO;AAGT,KAAI,SAAS,iBAAiB;AAC5B,MAAI,CAAC,YACH,QAAO;AAET,SAAO,mBAAmB,aAAa,YAAY;;AAGrD,QAAO;;;;;AAMT,SAAgB,UAAU,GAAW,GAAoB;CACvD,MAAM,2BAA2B,YAAoB;AAEnD,MADwB,CAAC,OAAO,MAAM,OAAO,QAAQ,CAAC,EACjC;GACnB,MAAM,WAAW,QAAQ,MAAM,IAAI;GACnC,IAAI,eAAe;AACnB,QAAK,IAAI,IAAI,GAAG,IAAI,IAAI,SAAS,QAAQ,IACvC,iBAAgB;AAElB,UAAO;;AAET,SAAO;;AAET,KAAIE,sBAAQ,wBAAwB,EAAE,EAAE,KAAK,wBAAwB,EAAE,GAAG,CACxE,QAAO;KAEP,QAAO;;AAIX,MAAa,eACX,iBACA,OACW;CACX,MAAM,WACJ,MACA,SAAU,MAAc,KAAsB;AAC5C,SAAO,UAAU,MAAM,IAAI;;AAG/B,QAAO,OAAO,KAAK,gBAAgB,CAAC,QAAQ,MAAuB,QAAQ;AACzE,MAAI,CAAC,KACH,QAAO;AAET,MAAI,SAAS,MAAgB,IAAI,CAC/B,QAAO;AAIT,MAAI,SAAS,IACX,QAAO;AAGT,SAAO;IACN,EAAE;;AAGP,MAAa,YAAY,WAInB;AACJ,QAAO,QAAQ,OAAO,OAAO,IAAI,OAAO,OAAO,QAAQ;;AAGzD,MAAM,aAAa,WAIb;AACJ,QAAO,QAAQ,OAAO,QAAQ;;AAGhC,MAAM,sBACJ,aACA,gBACG;AACH,KAAI,CAAC,eAAe,CAAC,YACnB,QAAO;CAGT,MAAM,EAAE,aAAa,2BAA2B;AAEhD,KAAI,CAAC,uBACH,QAAO;AAGT,KAAI,YAAY,OAAO,MAAM,uBAAuB,SAAS,EAAE,CAAC,CAC9D,QAAO;AAGT,QAAO;;AAGT,SAAS,mCACP,eACA,OACA,SACA,aAIA;CACA,MAAM,WAAW,cAAc,OAAO;CACtC,IAAI,UAAU;CACd,IAAI,kBAAkB,qBAAqB,YAAY;CAEvD,MAAM,WAAW,SAAU,MAAc,KAAsB;AAC7D,MAAI,iBAAiB;AACnB,OAAI,CAAC,SAAS,MAAM,YAClB,QAAO;AAET,OAAI,CAAC,SAAS,KAAK,YACjB,QAAO;AAET,UAAO,CAAC,SAAS,SAAS,MAAM,YAAY,IAAI,UAAU,MAAM,IAAI;;AAEtE,SAAO,CAAC,SAAS,SAAS,MAAM,IAAI,UAAU,MAAM,IAAI;;AAG1D,KAAI,iBAAiB;AACnB,YAAU,YAAY,cAAc,OAAO,UAAU,SAAS;AAC9D,MAAI,QACF,QAAO;GACL;GACA;GACD;AAEH,oBAAkB;;AAGpB,QAAO;EACL,SAAS,YAAY,cAAc,OAAO,UAAU,SAAS;EAC7D;EACD;;AAGH,MAAM,qBAAqB,WAIrB;AACJ,QAAO,SAAS,OAAO,IAAI,UAAU,OAAO;;AAG9C,SAAS,kCACP,eACA,OACA,SACA,aAIA;CACA,MAAM,WAAW,cAAc,OAAO;CACtC,IAAI,UAAU;CACd,IAAI,kBAAkB,qBAAqB,YAAY;CAGvD,MAAM,WAAW,SAAU,MAAc,KAAsB;AAC7D,MAAI,iBAAiB;AACnB,OAAI,CAAC,SAAS,MAAM,YAClB,QAAO;AAET,OAAI,CAAC,SAAS,KAAK,YACjB,QAAO;AAET,OAAI,kBAAkB,SAAS,KAAK,YAAY,CAC9C,KAAI,kBAAkB,SAAS,MAAM,YAAY,CAC/C,QAAO,QAAQ,UAAU,MAAM,IAAI,CAAC;OAEpC,QAAO;AAGX,OAAI,kBAAkB,SAAS,MAAM,YAAY,CAC/C,QAAO;;AAIX,MAAI,kBAAkB,SAAS,KAAK,CAClC,KAAI,kBAAkB,SAAS,MAAM,CACnC,QAAO,QAAQ,UAAU,MAAM,IAAI,CAAC;MAEpC,QAAO;AAGX,MAAI,kBAAkB,SAAS,MAAM,CACnC,QAAO;AAET,SAAO,UAAU,MAAM,IAAI;;AAG7B,KAAI,iBAAiB;AACnB,YAAU,YAAY,cAAc,OAAO,UAAU,SAAS;AAC9D,MAAI,QACF,QAAO;GACL;GACA;GACD;AAEH,oBAAkB;;AAGpB,QAAO;EACL,SAAS,YAAY,cAAc,OAAO,UAAU,SAAS;EAC7D;EACD;;AAGH,SAAS,qBAAqB,UAA8B;AAC1D,KAAI,aAAa,eACf,QAAO;AAET,QAAO;;AAGT,SAAgB,mBACd,oBACA,SACA,WACA,cASqD;AACrD,KAAI,CAAC,mBACH;CAEF,MAAM,EACJ,aACA,QAAQC,gCACR,UACA,gBACE;CACJ,MAAM,SAAS,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM;AACrD,MAAK,MAAM,MAAM,OACf,KACE,eACA,mBAAmB,OACnB,mBAAmB,IAAI,UACvB;EACA,MAAM,EAAE,oBAAoB;EAE5B,MAAM,EAAE,SAAS,uBAAuB,oBADd,qBAAqB,SAAS,CAEpC,oBAAoB,IAAI,SAAS,YAAY;EAEjE,MAAM,wBAAwB;GAC5B,MAAM,SAAS,mBAAmB,IAAI,SAAS;AAC/C,OAAI,YAAY,WAAW;AACzB,QACE,OAAO,oBAAoB,YAC3B,CAACD,sBAAQ,uBAAuB,gBAAgB,EAChD;KACA,MAAM,MAAM,WAAW,sBAAsB,QAC3C,yBAAyB,OAAO,KACjC,8BAA8B,QAAQ,uCACrC,UAAU,KACX,eAAe,gBAAgB;AAEhC,SAAI,YAAY,cACd,sBAAM,IAAI;SAEV,qBAAK,IAAI;;AAGb,WAAO;KACL;KACA;KACD;UACI;AACL,QAAI,oBAAoB,SAAS,oBAAoB,IACnD,QAAO;KACL;KACA;KACD;AAEH,QAAIA,sBAAQ,uBAAuB,gBAAgB,CACjD,QAAO;KACL;KACA;KACD;IAGH,MAAM,mBAAmB,qBAAqB,YAAY;AAC1D,QAAI,iBACF,MAAK,MAAM,CAAC,YAAY,iBAAiB,OAAO,QAC9C,mBAAmB,IAAI,SACxB,EAAE;AACD,SACE,CAAC,qBACC,aAAa,aACb,aAAa,YACd,CAED;AAGF,SAAIA,sBAAQ,YAAY,gBAAgB,CACtC,QAAO;MACL,QAAQ;MACR,iBAAiB;MAClB;;AAIP,SAAK,MAAM,CAAC,YAAY,iBAAiB,OAAO,QAC9C,mBAAmB,IAAI,SACxB,CACC,KAAIA,sBAAQ,YAAY,gBAAgB,CACtC,QAAO;KACL,QAAQ;KACR,iBAAiB;KAClB;;;EAMT,MAAM,SAAS;GACb,eAAe;GACf,OAAO;GACP;GACA,SAAS;GACT,kBAAkBE,sBAAO;GACzB;GACA,UAAU;GACX;AAED,UADsB,aAAa,KAAK,OAAO,IAAI,QAC9B,UAAU;;;AAKrC,SAAgB,sBAA2C;AACzD,QAAOA,sBAAO,eAAe;;AAG/B,SAAgB,uBAAuB,SAIpC;CACD,MAAM,EAAE,SAAS,cAAc,eAAe;CAC9C,MAAM,mBAAmB,kBAAsC;AAC7D,MAAI,CAAC,cACH;EAEF,MAAM,kBAAiD,EAAE;AACzD,gBAAc,SAAS,WAAW;AAChC,mBAAgB,OAAO,WAAW;IAClC;EACF,MAAM,WAAW,SAAU,MAAc,KAAsB;AAC7D,UAEE,CAAC,SAAS,gBAAgB,MAAM,IAAI,UAAU,MAAM,IAAI;;AAK5D,SAAO,gBADY,YAAY,iBAAiB,SAAS;;CAI3D,MAAM,WAAW,cAAc,YAAY;CAC3C,MAAM,iBAAiB,QAA6C;AAClE,SAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,IAAI;;CAGvE,MAAM,SACJ,GAAG,YACG;EACN,MAAM,MAAM,EAAE;AACd,OAAK,MAAM,OAAO,SAAS;AACzB,OAAI,CAAC,IAAK;AACV,QAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,EAAE;IAC9C,MAAM,OAAQ,IAAY;AAC1B,QAAI,cAAc,KAAK,IAAI,cAAc,MAAM,CAC7C,CAAC,IAAY,OAAO,MAAM,MAAM,MAAM;aAC7B,UAAU,OACnB,CAAC,IAAY,OAAO;;;AAI1B,SAAO;;AAGT,QAAO,MAAM,SAAS,WAAW,SAAS,EAAE,cAAc,gBAAgB;;AAG5E,MAAa,YACX,QACA,SACS;AACT,KAAI,CAAC,OAAO,MACV,QAAO,QAAQ,EAAE;AAEnB,4BAAc,OAAO,OAAO,KAAK;;AAGnC,SAAgB,YACd,QACA,iBAC0B;AAC1B,KAAI,mBAAmB,OAAO,YAC5B,QAAO,OAAO;AAGhB,QAAO"}
|
package/dist/utils/share.js
CHANGED
|
@@ -22,10 +22,10 @@ function formatShare(shareArgs, from, name, shareStrategy) {
|
|
|
22
22
|
...shareArgs,
|
|
23
23
|
shareConfig: {
|
|
24
24
|
requiredVersion: `^${shareArgs.version}`,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
...shareArgs.shareConfig,
|
|
26
|
+
singleton: Boolean(shareArgs.shareConfig?.singleton),
|
|
27
|
+
eager: Boolean(shareArgs.shareConfig?.eager),
|
|
28
|
+
strictVersion: Boolean(shareArgs.shareConfig?.strictVersion)
|
|
29
29
|
},
|
|
30
30
|
get,
|
|
31
31
|
loaded: shareArgs?.loaded || "lib" in shareArgs ? true : void 0,
|
package/dist/utils/share.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.js","names":[],"sources":["../../src/utils/share.ts"],"sourcesContent":["import { DEFAULT_SCOPE } from '../constant';\nimport { TreeShakingStatus } from '@module-federation/sdk';\nimport { Global, Federation } from '../global';\nimport {\n GlobalShareScopeMap,\n Shared,\n ShareArgs,\n ShareInfos,\n ShareScopeMap,\n LoadShareExtraOptions,\n UserOptions,\n Options,\n ShareStrategy,\n TreeShakingArgs,\n SharedGetter,\n} from '../type';\nimport { warn, error } from './logger';\nimport { satisfy } from './semver';\nimport { SyncWaterfallHook } from './hooks';\nimport { addUniqueItem, arrayOptions } from './tool';\n\nfunction formatShare(\n shareArgs: ShareArgs,\n from: string,\n name: string,\n shareStrategy?: ShareStrategy,\n): Shared {\n let get: Shared['get'];\n if ('get' in shareArgs) {\n // eslint-disable-next-line prefer-destructuring\n get = shareArgs.get;\n } else if ('lib' in shareArgs) {\n get = () => Promise.resolve(shareArgs.lib);\n } else {\n get = () =>\n Promise.resolve(() => {\n error(\n `Cannot get shared \"${name}\" from \"${from}\": neither \"get\" nor \"lib\" is provided in the share config.`,\n );\n });\n }\n\n if (shareArgs.shareConfig?.eager && shareArgs.treeShaking?.mode) {\n error(\n `Invalid shared config for \"${name}\" from \"${from}\": cannot use both \"eager: true\" and \"treeShaking.mode\" simultaneously. Choose one strategy.`,\n );\n }\n\n return {\n deps: [],\n useIn: [],\n from,\n loading: null,\n ...shareArgs,\n shareConfig: {\n requiredVersion: `^${shareArgs.version}`,\n singleton: false,\n eager: false,\n strictVersion: false,\n ...shareArgs.shareConfig,\n },\n get,\n loaded: shareArgs?.loaded || 'lib' in shareArgs ? true : undefined,\n version: shareArgs.version ?? '0',\n scope: Array.isArray(shareArgs.scope)\n ? shareArgs.scope\n : [shareArgs.scope ?? 'default'],\n strategy: (shareArgs.strategy ?? shareStrategy) || 'version-first',\n treeShaking: shareArgs.treeShaking\n ? {\n ...shareArgs.treeShaking,\n mode: shareArgs.treeShaking.mode ?? 'server-calc',\n status: shareArgs.treeShaking.status ?? TreeShakingStatus.UNKNOWN,\n useIn: [],\n }\n : undefined,\n };\n}\n\nexport function formatShareConfigs(\n prevOptions: Options,\n newOptions: UserOptions,\n) {\n const shareArgs = newOptions.shared || {};\n const from = newOptions.name;\n\n const newShareInfos = Object.keys(shareArgs).reduce((res, pkgName) => {\n const arrayShareArgs = arrayOptions(shareArgs[pkgName]);\n res[pkgName] = res[pkgName] || [];\n arrayShareArgs.forEach((shareConfig) => {\n res[pkgName].push(\n formatShare(shareConfig, from, pkgName, newOptions.shareStrategy),\n );\n });\n return res;\n }, {} as ShareInfos);\n\n const allShareInfos = {\n ...prevOptions.shared,\n };\n\n Object.keys(newShareInfos).forEach((shareKey) => {\n if (!allShareInfos[shareKey]) {\n allShareInfos[shareKey] = newShareInfos[shareKey];\n } else {\n newShareInfos[shareKey].forEach((newUserSharedOptions) => {\n const isSameVersion = allShareInfos[shareKey].find(\n (sharedVal) => sharedVal.version === newUserSharedOptions.version,\n );\n if (!isSameVersion) {\n allShareInfos[shareKey].push(newUserSharedOptions);\n }\n });\n }\n });\n return { allShareInfos, newShareInfos };\n}\n\nexport function shouldUseTreeShaking(\n treeShaking?: TreeShakingArgs,\n usedExports?: string[],\n) {\n if (!treeShaking) {\n return false;\n }\n const { status, mode } = treeShaking;\n if (status === TreeShakingStatus.NO_USE) {\n return false;\n }\n\n if (status === TreeShakingStatus.CALCULATED) {\n return true;\n }\n\n if (mode === 'runtime-infer') {\n if (!usedExports) {\n return true;\n }\n return isMatchUsedExports(treeShaking, usedExports);\n }\n\n return false;\n}\n\n/**\n * compare version a and b, return true if a is less than b\n */\nexport function versionLt(a: string, b: string): boolean {\n const transformInvalidVersion = (version: string) => {\n const isNumberVersion = !Number.isNaN(Number(version));\n if (isNumberVersion) {\n const splitArr = version.split('.');\n let validVersion = version;\n for (let i = 0; i < 3 - splitArr.length; i++) {\n validVersion += '.0';\n }\n return validVersion;\n }\n return version;\n };\n if (satisfy(transformInvalidVersion(a), `<=${transformInvalidVersion(b)}`)) {\n return true;\n } else {\n return false;\n }\n}\n\nexport const findVersion = (\n shareVersionMap: ShareScopeMap[string][string],\n cb?: (prev: string, cur: string) => boolean,\n): string => {\n const callback =\n cb ||\n function (prev: string, cur: string): boolean {\n return versionLt(prev, cur);\n };\n\n return Object.keys(shareVersionMap).reduce((prev: number | string, cur) => {\n if (!prev) {\n return cur;\n }\n if (callback(prev as string, cur)) {\n return cur;\n }\n\n // default version is '0' https://github.com/webpack/webpack/blob/main/lib/sharing/ProvideSharedModule.js#L136\n if (prev === '0') {\n return cur;\n }\n\n return prev;\n }, 0) as string;\n};\n\nexport const isLoaded = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return Boolean(shared.loaded) || typeof shared.lib === 'function';\n};\n\nconst isLoading = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return Boolean(shared.loading);\n};\n\nconst isMatchUsedExports = (\n treeShaking?: TreeShakingArgs,\n usedExports?: string[],\n) => {\n if (!treeShaking || !usedExports) {\n return false;\n }\n\n const { usedExports: treeShakingUsedExports } = treeShaking;\n\n if (!treeShakingUsedExports) {\n return false;\n }\n\n if (usedExports.every((e) => treeShakingUsedExports.includes(e))) {\n return true;\n }\n\n return false;\n};\n\nfunction findSingletonVersionOrderByVersion(\n shareScopeMap: ShareScopeMap,\n scope: string,\n pkgName: string,\n treeShaking?: TreeShakingArgs,\n): {\n version: string;\n useTreesShaking: boolean;\n} {\n const versions = shareScopeMap[scope][pkgName];\n let version = '';\n let useTreesShaking = shouldUseTreeShaking(treeShaking);\n // return false means use prev version\n const callback = function (prev: string, cur: string): boolean {\n if (useTreesShaking) {\n if (!versions[prev].treeShaking) {\n return true;\n }\n if (!versions[cur].treeShaking) {\n return false;\n }\n return !isLoaded(versions[prev].treeShaking) && versionLt(prev, cur);\n }\n return !isLoaded(versions[prev]) && versionLt(prev, cur);\n };\n\n if (useTreesShaking) {\n version = findVersion(shareScopeMap[scope][pkgName], callback);\n if (version) {\n return {\n version,\n useTreesShaking,\n };\n }\n useTreesShaking = false;\n }\n\n return {\n version: findVersion(shareScopeMap[scope][pkgName], callback),\n useTreesShaking,\n };\n}\n\nconst isLoadingOrLoaded = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return isLoaded(shared) || isLoading(shared);\n};\n\nfunction findSingletonVersionOrderByLoaded(\n shareScopeMap: ShareScopeMap,\n scope: string,\n pkgName: string,\n treeShaking?: TreeShakingArgs,\n): {\n version: string;\n useTreesShaking: boolean;\n} {\n const versions = shareScopeMap[scope][pkgName];\n let version = '';\n let useTreesShaking = shouldUseTreeShaking(treeShaking);\n\n // return false means use prev version\n const callback = function (prev: string, cur: string): boolean {\n if (useTreesShaking) {\n if (!versions[prev].treeShaking) {\n return true;\n }\n if (!versions[cur].treeShaking) {\n return false;\n }\n if (isLoadingOrLoaded(versions[cur].treeShaking)) {\n if (isLoadingOrLoaded(versions[prev].treeShaking)) {\n return Boolean(versionLt(prev, cur));\n } else {\n return true;\n }\n }\n if (isLoadingOrLoaded(versions[prev].treeShaking)) {\n return false;\n }\n }\n\n if (isLoadingOrLoaded(versions[cur])) {\n if (isLoadingOrLoaded(versions[prev])) {\n return Boolean(versionLt(prev, cur));\n } else {\n return true;\n }\n }\n if (isLoadingOrLoaded(versions[prev])) {\n return false;\n }\n return versionLt(prev, cur);\n };\n\n if (useTreesShaking) {\n version = findVersion(shareScopeMap[scope][pkgName], callback);\n if (version) {\n return {\n version,\n useTreesShaking,\n };\n }\n useTreesShaking = false;\n }\n\n return {\n version: findVersion(shareScopeMap[scope][pkgName], callback),\n useTreesShaking,\n };\n}\n\nfunction getFindShareFunction(strategy: Shared['strategy']) {\n if (strategy === 'loaded-first') {\n return findSingletonVersionOrderByLoaded;\n }\n return findSingletonVersionOrderByVersion;\n}\n\nexport function getRegisteredShare(\n localShareScopeMap: ShareScopeMap,\n pkgName: string,\n shareInfo: Shared,\n resolveShare: SyncWaterfallHook<{\n shareScopeMap: ShareScopeMap;\n scope: string;\n pkgName: string;\n version: string;\n shareInfo: Shared;\n GlobalFederation: Federation;\n resolver: () => { shared: Shared; useTreesShaking: boolean } | undefined;\n }>,\n): { shared: Shared; useTreesShaking: boolean } | void {\n if (!localShareScopeMap) {\n return;\n }\n const {\n shareConfig,\n scope = DEFAULT_SCOPE,\n strategy,\n treeShaking,\n } = shareInfo;\n const scopes = Array.isArray(scope) ? scope : [scope];\n for (const sc of scopes) {\n if (\n shareConfig &&\n localShareScopeMap[sc] &&\n localShareScopeMap[sc][pkgName]\n ) {\n const { requiredVersion } = shareConfig;\n const findShareFunction = getFindShareFunction(strategy);\n const { version: maxOrSingletonVersion, useTreesShaking } =\n findShareFunction(localShareScopeMap, sc, pkgName, treeShaking);\n\n const defaultResolver = () => {\n const shared = localShareScopeMap[sc][pkgName][maxOrSingletonVersion];\n if (shareConfig.singleton) {\n if (\n typeof requiredVersion === 'string' &&\n !satisfy(maxOrSingletonVersion, requiredVersion)\n ) {\n const msg = `Version ${maxOrSingletonVersion} from ${\n maxOrSingletonVersion && shared.from\n } of shared singleton module ${pkgName} does not satisfy the requirement of ${\n shareInfo.from\n } which needs ${requiredVersion})`;\n\n if (shareConfig.strictVersion) {\n error(msg);\n } else {\n warn(msg);\n }\n }\n return {\n shared,\n useTreesShaking,\n };\n } else {\n if (requiredVersion === false || requiredVersion === '*') {\n return {\n shared,\n useTreesShaking,\n };\n }\n if (satisfy(maxOrSingletonVersion, requiredVersion)) {\n return {\n shared,\n useTreesShaking,\n };\n }\n\n const _usedTreeShaking = shouldUseTreeShaking(treeShaking);\n if (_usedTreeShaking) {\n for (const [versionKey, versionValue] of Object.entries(\n localShareScopeMap[sc][pkgName],\n )) {\n if (\n !shouldUseTreeShaking(\n versionValue.treeShaking,\n treeShaking?.usedExports,\n )\n ) {\n continue;\n }\n\n if (satisfy(versionKey, requiredVersion)) {\n return {\n shared: versionValue,\n useTreesShaking: _usedTreeShaking,\n };\n }\n }\n }\n for (const [versionKey, versionValue] of Object.entries(\n localShareScopeMap[sc][pkgName],\n )) {\n if (satisfy(versionKey, requiredVersion)) {\n return {\n shared: versionValue,\n useTreesShaking: false,\n };\n }\n }\n }\n return;\n };\n const params = {\n shareScopeMap: localShareScopeMap,\n scope: sc,\n pkgName,\n version: maxOrSingletonVersion,\n GlobalFederation: Global.__FEDERATION__,\n shareInfo,\n resolver: defaultResolver,\n };\n const resolveShared = resolveShare.emit(params) || params;\n return resolveShared.resolver();\n }\n }\n}\n\nexport function getGlobalShareScope(): GlobalShareScopeMap {\n return Global.__FEDERATION__.__SHARE__;\n}\n\nexport function getTargetSharedOptions(options: {\n pkgName: string;\n extraOptions?: LoadShareExtraOptions;\n shareInfos: ShareInfos;\n}) {\n const { pkgName, extraOptions, shareInfos } = options;\n const defaultResolver = (sharedOptions: ShareInfos[string]) => {\n if (!sharedOptions) {\n return undefined;\n }\n const shareVersionMap: ShareScopeMap[string][string] = {};\n sharedOptions.forEach((shared) => {\n shareVersionMap[shared.version] = shared;\n });\n const callback = function (prev: string, cur: string): boolean {\n return (\n // TODO: consider multiple treeShaking shared scenes\n !isLoaded(shareVersionMap[prev]) && versionLt(prev, cur)\n );\n };\n\n const maxVersion = findVersion(shareVersionMap, callback);\n return shareVersionMap[maxVersion];\n };\n\n const resolver = extraOptions?.resolver ?? defaultResolver;\n const isPlainObject = (val: unknown): val is Record<string, any> => {\n return val !== null && typeof val === 'object' && !Array.isArray(val);\n };\n\n const merge = <T extends Record<string, any>>(\n ...sources: Array<Partial<T> | undefined>\n ): T => {\n const out = {} as T;\n for (const src of sources) {\n if (!src) continue;\n for (const [key, value] of Object.entries(src)) {\n const prev = (out as any)[key];\n if (isPlainObject(prev) && isPlainObject(value)) {\n (out as any)[key] = merge(prev, value);\n } else if (value !== undefined) {\n (out as any)[key] = value;\n }\n }\n }\n return out;\n };\n\n return merge(resolver(shareInfos[pkgName]), extraOptions?.customShareInfo);\n}\n\nexport const addUseIn = (\n shared: { useIn?: Array<string> },\n from: string,\n): void => {\n if (!shared.useIn) {\n shared.useIn = [];\n }\n addUniqueItem(shared.useIn, from);\n};\n\nexport function directShare(\n shared: Shared,\n useTreesShaking?: boolean,\n): Shared | TreeShakingArgs {\n if (useTreesShaking && shared.treeShaking) {\n return shared.treeShaking;\n }\n\n return shared;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"share.js","names":[],"sources":["../../src/utils/share.ts"],"sourcesContent":["import { DEFAULT_SCOPE } from '../constant';\nimport { TreeShakingStatus } from '@module-federation/sdk';\nimport { Global, Federation } from '../global';\nimport {\n GlobalShareScopeMap,\n Shared,\n ShareArgs,\n ShareInfos,\n ShareScopeMap,\n LoadShareExtraOptions,\n UserOptions,\n Options,\n ShareStrategy,\n TreeShakingArgs,\n SharedGetter,\n} from '../type';\nimport { warn, error } from './logger';\nimport { satisfy } from './semver';\nimport { SyncWaterfallHook } from './hooks';\nimport { addUniqueItem, arrayOptions } from './tool';\n\nfunction formatShare(\n shareArgs: ShareArgs,\n from: string,\n name: string,\n shareStrategy?: ShareStrategy,\n): Shared {\n let get: Shared['get'];\n if ('get' in shareArgs) {\n // eslint-disable-next-line prefer-destructuring\n get = shareArgs.get;\n } else if ('lib' in shareArgs) {\n get = () => Promise.resolve(shareArgs.lib);\n } else {\n get = () =>\n Promise.resolve(() => {\n error(\n `Cannot get shared \"${name}\" from \"${from}\": neither \"get\" nor \"lib\" is provided in the share config.`,\n );\n });\n }\n\n if (shareArgs.shareConfig?.eager && shareArgs.treeShaking?.mode) {\n error(\n `Invalid shared config for \"${name}\" from \"${from}\": cannot use both \"eager: true\" and \"treeShaking.mode\" simultaneously. Choose one strategy.`,\n );\n }\n\n return {\n deps: [],\n useIn: [],\n from,\n loading: null,\n ...shareArgs,\n shareConfig: {\n requiredVersion: `^${shareArgs.version}`,\n ...shareArgs.shareConfig,\n singleton: Boolean(shareArgs.shareConfig?.singleton),\n eager: Boolean(shareArgs.shareConfig?.eager),\n strictVersion: Boolean(shareArgs.shareConfig?.strictVersion),\n },\n get,\n loaded: shareArgs?.loaded || 'lib' in shareArgs ? true : undefined,\n version: shareArgs.version ?? '0',\n scope: Array.isArray(shareArgs.scope)\n ? shareArgs.scope\n : [shareArgs.scope ?? 'default'],\n strategy: (shareArgs.strategy ?? shareStrategy) || 'version-first',\n treeShaking: shareArgs.treeShaking\n ? {\n ...shareArgs.treeShaking,\n mode: shareArgs.treeShaking.mode ?? 'server-calc',\n status: shareArgs.treeShaking.status ?? TreeShakingStatus.UNKNOWN,\n useIn: [],\n }\n : undefined,\n };\n}\n\nexport function formatShareConfigs(\n prevOptions: Options,\n newOptions: UserOptions,\n) {\n const shareArgs = newOptions.shared || {};\n const from = newOptions.name;\n\n const newShareInfos = Object.keys(shareArgs).reduce((res, pkgName) => {\n const arrayShareArgs = arrayOptions(shareArgs[pkgName]);\n res[pkgName] = res[pkgName] || [];\n arrayShareArgs.forEach((shareConfig) => {\n res[pkgName].push(\n formatShare(shareConfig, from, pkgName, newOptions.shareStrategy),\n );\n });\n return res;\n }, {} as ShareInfos);\n\n const allShareInfos = {\n ...prevOptions.shared,\n };\n\n Object.keys(newShareInfos).forEach((shareKey) => {\n if (!allShareInfos[shareKey]) {\n allShareInfos[shareKey] = newShareInfos[shareKey];\n } else {\n newShareInfos[shareKey].forEach((newUserSharedOptions) => {\n const isSameVersion = allShareInfos[shareKey].find(\n (sharedVal) => sharedVal.version === newUserSharedOptions.version,\n );\n if (!isSameVersion) {\n allShareInfos[shareKey].push(newUserSharedOptions);\n }\n });\n }\n });\n return { allShareInfos, newShareInfos };\n}\n\nexport function shouldUseTreeShaking(\n treeShaking?: TreeShakingArgs,\n usedExports?: string[],\n) {\n if (!treeShaking) {\n return false;\n }\n const { status, mode } = treeShaking;\n if (status === TreeShakingStatus.NO_USE) {\n return false;\n }\n\n if (status === TreeShakingStatus.CALCULATED) {\n return true;\n }\n\n if (mode === 'runtime-infer') {\n if (!usedExports) {\n return true;\n }\n return isMatchUsedExports(treeShaking, usedExports);\n }\n\n return false;\n}\n\n/**\n * compare version a and b, return true if a is less than b\n */\nexport function versionLt(a: string, b: string): boolean {\n const transformInvalidVersion = (version: string) => {\n const isNumberVersion = !Number.isNaN(Number(version));\n if (isNumberVersion) {\n const splitArr = version.split('.');\n let validVersion = version;\n for (let i = 0; i < 3 - splitArr.length; i++) {\n validVersion += '.0';\n }\n return validVersion;\n }\n return version;\n };\n if (satisfy(transformInvalidVersion(a), `<=${transformInvalidVersion(b)}`)) {\n return true;\n } else {\n return false;\n }\n}\n\nexport const findVersion = (\n shareVersionMap: ShareScopeMap[string][string],\n cb?: (prev: string, cur: string) => boolean,\n): string => {\n const callback =\n cb ||\n function (prev: string, cur: string): boolean {\n return versionLt(prev, cur);\n };\n\n return Object.keys(shareVersionMap).reduce((prev: number | string, cur) => {\n if (!prev) {\n return cur;\n }\n if (callback(prev as string, cur)) {\n return cur;\n }\n\n // default version is '0' https://github.com/webpack/webpack/blob/main/lib/sharing/ProvideSharedModule.js#L136\n if (prev === '0') {\n return cur;\n }\n\n return prev;\n }, 0) as string;\n};\n\nexport const isLoaded = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return Boolean(shared.loaded) || typeof shared.lib === 'function';\n};\n\nconst isLoading = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return Boolean(shared.loading);\n};\n\nconst isMatchUsedExports = (\n treeShaking?: TreeShakingArgs,\n usedExports?: string[],\n) => {\n if (!treeShaking || !usedExports) {\n return false;\n }\n\n const { usedExports: treeShakingUsedExports } = treeShaking;\n\n if (!treeShakingUsedExports) {\n return false;\n }\n\n if (usedExports.every((e) => treeShakingUsedExports.includes(e))) {\n return true;\n }\n\n return false;\n};\n\nfunction findSingletonVersionOrderByVersion(\n shareScopeMap: ShareScopeMap,\n scope: string,\n pkgName: string,\n treeShaking?: TreeShakingArgs,\n): {\n version: string;\n useTreesShaking: boolean;\n} {\n const versions = shareScopeMap[scope][pkgName];\n let version = '';\n let useTreesShaking = shouldUseTreeShaking(treeShaking);\n // return false means use prev version\n const callback = function (prev: string, cur: string): boolean {\n if (useTreesShaking) {\n if (!versions[prev].treeShaking) {\n return true;\n }\n if (!versions[cur].treeShaking) {\n return false;\n }\n return !isLoaded(versions[prev].treeShaking) && versionLt(prev, cur);\n }\n return !isLoaded(versions[prev]) && versionLt(prev, cur);\n };\n\n if (useTreesShaking) {\n version = findVersion(shareScopeMap[scope][pkgName], callback);\n if (version) {\n return {\n version,\n useTreesShaking,\n };\n }\n useTreesShaking = false;\n }\n\n return {\n version: findVersion(shareScopeMap[scope][pkgName], callback),\n useTreesShaking,\n };\n}\n\nconst isLoadingOrLoaded = (shared: {\n loading?: null | Promise<any>;\n loaded?: boolean;\n lib?: () => unknown;\n}) => {\n return isLoaded(shared) || isLoading(shared);\n};\n\nfunction findSingletonVersionOrderByLoaded(\n shareScopeMap: ShareScopeMap,\n scope: string,\n pkgName: string,\n treeShaking?: TreeShakingArgs,\n): {\n version: string;\n useTreesShaking: boolean;\n} {\n const versions = shareScopeMap[scope][pkgName];\n let version = '';\n let useTreesShaking = shouldUseTreeShaking(treeShaking);\n\n // return false means use prev version\n const callback = function (prev: string, cur: string): boolean {\n if (useTreesShaking) {\n if (!versions[prev].treeShaking) {\n return true;\n }\n if (!versions[cur].treeShaking) {\n return false;\n }\n if (isLoadingOrLoaded(versions[cur].treeShaking)) {\n if (isLoadingOrLoaded(versions[prev].treeShaking)) {\n return Boolean(versionLt(prev, cur));\n } else {\n return true;\n }\n }\n if (isLoadingOrLoaded(versions[prev].treeShaking)) {\n return false;\n }\n }\n\n if (isLoadingOrLoaded(versions[cur])) {\n if (isLoadingOrLoaded(versions[prev])) {\n return Boolean(versionLt(prev, cur));\n } else {\n return true;\n }\n }\n if (isLoadingOrLoaded(versions[prev])) {\n return false;\n }\n return versionLt(prev, cur);\n };\n\n if (useTreesShaking) {\n version = findVersion(shareScopeMap[scope][pkgName], callback);\n if (version) {\n return {\n version,\n useTreesShaking,\n };\n }\n useTreesShaking = false;\n }\n\n return {\n version: findVersion(shareScopeMap[scope][pkgName], callback),\n useTreesShaking,\n };\n}\n\nfunction getFindShareFunction(strategy: Shared['strategy']) {\n if (strategy === 'loaded-first') {\n return findSingletonVersionOrderByLoaded;\n }\n return findSingletonVersionOrderByVersion;\n}\n\nexport function getRegisteredShare(\n localShareScopeMap: ShareScopeMap,\n pkgName: string,\n shareInfo: Shared,\n resolveShare: SyncWaterfallHook<{\n shareScopeMap: ShareScopeMap;\n scope: string;\n pkgName: string;\n version: string;\n shareInfo: Shared;\n GlobalFederation: Federation;\n resolver: () => { shared: Shared; useTreesShaking: boolean } | undefined;\n }>,\n): { shared: Shared; useTreesShaking: boolean } | void {\n if (!localShareScopeMap) {\n return;\n }\n const {\n shareConfig,\n scope = DEFAULT_SCOPE,\n strategy,\n treeShaking,\n } = shareInfo;\n const scopes = Array.isArray(scope) ? scope : [scope];\n for (const sc of scopes) {\n if (\n shareConfig &&\n localShareScopeMap[sc] &&\n localShareScopeMap[sc][pkgName]\n ) {\n const { requiredVersion } = shareConfig;\n const findShareFunction = getFindShareFunction(strategy);\n const { version: maxOrSingletonVersion, useTreesShaking } =\n findShareFunction(localShareScopeMap, sc, pkgName, treeShaking);\n\n const defaultResolver = () => {\n const shared = localShareScopeMap[sc][pkgName][maxOrSingletonVersion];\n if (shareConfig.singleton) {\n if (\n typeof requiredVersion === 'string' &&\n !satisfy(maxOrSingletonVersion, requiredVersion)\n ) {\n const msg = `Version ${maxOrSingletonVersion} from ${\n maxOrSingletonVersion && shared.from\n } of shared singleton module ${pkgName} does not satisfy the requirement of ${\n shareInfo.from\n } which needs ${requiredVersion})`;\n\n if (shareConfig.strictVersion) {\n error(msg);\n } else {\n warn(msg);\n }\n }\n return {\n shared,\n useTreesShaking,\n };\n } else {\n if (requiredVersion === false || requiredVersion === '*') {\n return {\n shared,\n useTreesShaking,\n };\n }\n if (satisfy(maxOrSingletonVersion, requiredVersion)) {\n return {\n shared,\n useTreesShaking,\n };\n }\n\n const _usedTreeShaking = shouldUseTreeShaking(treeShaking);\n if (_usedTreeShaking) {\n for (const [versionKey, versionValue] of Object.entries(\n localShareScopeMap[sc][pkgName],\n )) {\n if (\n !shouldUseTreeShaking(\n versionValue.treeShaking,\n treeShaking?.usedExports,\n )\n ) {\n continue;\n }\n\n if (satisfy(versionKey, requiredVersion)) {\n return {\n shared: versionValue,\n useTreesShaking: _usedTreeShaking,\n };\n }\n }\n }\n for (const [versionKey, versionValue] of Object.entries(\n localShareScopeMap[sc][pkgName],\n )) {\n if (satisfy(versionKey, requiredVersion)) {\n return {\n shared: versionValue,\n useTreesShaking: false,\n };\n }\n }\n }\n return;\n };\n const params = {\n shareScopeMap: localShareScopeMap,\n scope: sc,\n pkgName,\n version: maxOrSingletonVersion,\n GlobalFederation: Global.__FEDERATION__,\n shareInfo,\n resolver: defaultResolver,\n };\n const resolveShared = resolveShare.emit(params) || params;\n return resolveShared.resolver();\n }\n }\n}\n\nexport function getGlobalShareScope(): GlobalShareScopeMap {\n return Global.__FEDERATION__.__SHARE__;\n}\n\nexport function getTargetSharedOptions(options: {\n pkgName: string;\n extraOptions?: LoadShareExtraOptions;\n shareInfos: ShareInfos;\n}) {\n const { pkgName, extraOptions, shareInfos } = options;\n const defaultResolver = (sharedOptions: ShareInfos[string]) => {\n if (!sharedOptions) {\n return undefined;\n }\n const shareVersionMap: ShareScopeMap[string][string] = {};\n sharedOptions.forEach((shared) => {\n shareVersionMap[shared.version] = shared;\n });\n const callback = function (prev: string, cur: string): boolean {\n return (\n // TODO: consider multiple treeShaking shared scenes\n !isLoaded(shareVersionMap[prev]) && versionLt(prev, cur)\n );\n };\n\n const maxVersion = findVersion(shareVersionMap, callback);\n return shareVersionMap[maxVersion];\n };\n\n const resolver = extraOptions?.resolver ?? defaultResolver;\n const isPlainObject = (val: unknown): val is Record<string, any> => {\n return val !== null && typeof val === 'object' && !Array.isArray(val);\n };\n\n const merge = <T extends Record<string, any>>(\n ...sources: Array<Partial<T> | undefined>\n ): T => {\n const out = {} as T;\n for (const src of sources) {\n if (!src) continue;\n for (const [key, value] of Object.entries(src)) {\n const prev = (out as any)[key];\n if (isPlainObject(prev) && isPlainObject(value)) {\n (out as any)[key] = merge(prev, value);\n } else if (value !== undefined) {\n (out as any)[key] = value;\n }\n }\n }\n return out;\n };\n\n return merge(resolver(shareInfos[pkgName]), extraOptions?.customShareInfo);\n}\n\nexport const addUseIn = (\n shared: { useIn?: Array<string> },\n from: string,\n): void => {\n if (!shared.useIn) {\n shared.useIn = [];\n }\n addUniqueItem(shared.useIn, from);\n};\n\nexport function directShare(\n shared: Shared,\n useTreesShaking?: boolean,\n): Shared | TreeShakingArgs {\n if (useTreesShaking && shared.treeShaking) {\n return shared.treeShaking;\n }\n\n return shared;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@module-federation/runtime-core",
|
|
3
|
-
"version": "0.0.0-feat-operate-openruntime-
|
|
3
|
+
"version": "0.0.0-feat-operate-openruntime-20260624071936",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"author": "zhouxiao <codingzx@gmail.com>",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@module-federation/sdk": "0.0.0-feat-operate-openruntime-
|
|
56
|
-
"@module-federation/error-codes": "0.0.0-feat-operate-openruntime-
|
|
55
|
+
"@module-federation/sdk": "0.0.0-feat-operate-openruntime-20260624071936",
|
|
56
|
+
"@module-federation/error-codes": "0.0.0-feat-operate-openruntime-20260624071936"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|
|
59
59
|
"build": "tsdown --config tsdown.config.ts",
|