@module-federation/runtime-core 2.0.1 → 2.2.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/_virtual/_rolldown/runtime.cjs +19 -0
- package/dist/_virtual/_rolldown/runtime.js +18 -0
- package/dist/constant.cjs +9 -0
- package/dist/constant.cjs.map +1 -0
- package/dist/constant.js +7 -0
- package/dist/constant.js.map +1 -0
- package/dist/core.cjs +153 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.ts +129 -0
- package/dist/core.js +153 -0
- package/dist/core.js.map +1 -0
- package/dist/global.cjs +160 -0
- package/dist/global.cjs.map +1 -0
- package/dist/global.d.ts +45 -0
- package/dist/global.js +142 -0
- package/dist/global.js.map +1 -0
- package/dist/helpers.cjs +44 -0
- package/dist/helpers.cjs.map +1 -0
- package/dist/helpers.d.ts +30 -0
- package/dist/helpers.js +44 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.cjs +60 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +29 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/module/index.cjs +129 -0
- package/dist/module/index.cjs.map +1 -0
- package/dist/module/index.d.ts +31 -0
- package/dist/module/index.js +129 -0
- package/dist/module/index.js.map +1 -0
- package/dist/plugins/generate-preload-assets.cjs +182 -0
- package/dist/plugins/generate-preload-assets.cjs.map +1 -0
- package/dist/plugins/generate-preload-assets.js +182 -0
- package/dist/plugins/generate-preload-assets.js.map +1 -0
- package/dist/plugins/snapshot/SnapshotHandler.cjs +190 -0
- package/dist/plugins/snapshot/SnapshotHandler.cjs.map +1 -0
- package/dist/plugins/snapshot/SnapshotHandler.d.ts +66 -0
- package/dist/plugins/snapshot/SnapshotHandler.js +189 -0
- package/dist/plugins/snapshot/SnapshotHandler.js.map +1 -0
- package/dist/plugins/snapshot/index.cjs +63 -0
- package/dist/plugins/snapshot/index.cjs.map +1 -0
- package/dist/plugins/snapshot/index.js +62 -0
- package/dist/plugins/snapshot/index.js.map +1 -0
- package/dist/remote/index.cjs +304 -0
- package/dist/remote/index.cjs.map +1 -0
- package/dist/remote/index.d.ts +119 -0
- package/dist/remote/index.js +304 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/shared/index.cjs +303 -0
- package/dist/shared/index.cjs.map +1 -0
- package/dist/shared/index.d.ts +82 -0
- package/dist/shared/index.js +303 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/type/config.d.ts +130 -0
- package/dist/type/index.cjs +13 -0
- package/dist/type/index.cjs.map +1 -0
- package/dist/type/index.d.ts +11 -0
- package/dist/type/index.js +8 -0
- package/dist/type/index.js.map +1 -0
- package/dist/type/plugin.d.ts +27 -0
- package/dist/type/preload.d.ts +31 -0
- package/dist/types.cjs +0 -0
- package/dist/types.d.ts +4 -1
- package/dist/types.js +1 -0
- package/dist/utils/context.cjs +45 -0
- package/dist/utils/context.cjs.map +1 -0
- package/dist/utils/context.d.ts +1 -0
- package/dist/utils/context.js +44 -0
- package/dist/utils/context.js.map +1 -0
- package/dist/utils/env.cjs +10 -0
- package/dist/utils/env.cjs.map +1 -0
- package/dist/utils/env.d.ts +1 -0
- package/dist/utils/env.js +10 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/hooks/asyncHook.cjs +23 -0
- package/dist/utils/hooks/asyncHook.cjs.map +1 -0
- package/dist/utils/hooks/asyncHook.d.ts +10 -0
- package/dist/utils/hooks/asyncHook.js +23 -0
- package/dist/utils/hooks/asyncHook.js.map +1 -0
- package/dist/utils/hooks/asyncWaterfallHooks.cjs +42 -0
- package/dist/utils/hooks/asyncWaterfallHooks.cjs.map +1 -0
- package/dist/utils/hooks/asyncWaterfallHooks.d.ts +12 -0
- package/dist/utils/hooks/asyncWaterfallHooks.js +42 -0
- package/dist/utils/hooks/asyncWaterfallHooks.js.map +1 -0
- package/dist/utils/hooks/index.cjs +5 -0
- package/dist/utils/hooks/index.d.ts +5 -0
- package/dist/utils/hooks/index.js +7 -0
- package/dist/utils/hooks/pluginSystem.cjs +37 -0
- package/dist/utils/hooks/pluginSystem.cjs.map +1 -0
- package/dist/utils/hooks/pluginSystem.d.ts +19 -0
- package/dist/utils/hooks/pluginSystem.js +37 -0
- package/dist/utils/hooks/pluginSystem.js.map +1 -0
- package/dist/utils/hooks/syncHook.cjs +36 -0
- package/dist/utils/hooks/syncHook.cjs.map +1 -0
- package/dist/utils/hooks/syncHook.d.ts +16 -0
- package/dist/utils/hooks/syncHook.js +35 -0
- package/dist/utils/hooks/syncHook.js.map +1 -0
- package/dist/utils/hooks/syncWaterfallHook.cjs +39 -0
- package/dist/utils/hooks/syncWaterfallHook.cjs.map +1 -0
- package/dist/utils/hooks/syncWaterfallHook.d.ts +11 -0
- package/dist/utils/hooks/syncWaterfallHook.js +38 -0
- package/dist/utils/hooks/syncWaterfallHook.js.map +1 -0
- package/dist/utils/index.cjs +8 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/load.cjs +179 -0
- package/dist/utils/load.cjs.map +1 -0
- package/dist/utils/load.d.ts +14 -0
- package/dist/utils/load.js +177 -0
- package/dist/utils/load.js.map +1 -0
- package/dist/utils/logger.cjs +34 -0
- package/dist/utils/logger.cjs.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.js +31 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/manifest.cjs +51 -0
- package/dist/utils/manifest.cjs.map +1 -0
- package/dist/utils/manifest.d.ts +10 -0
- package/dist/utils/manifest.js +49 -0
- package/dist/utils/manifest.js.map +1 -0
- package/dist/utils/plugin.cjs +27 -0
- package/dist/utils/plugin.cjs.map +1 -0
- package/dist/utils/plugin.d.ts +1 -0
- package/dist/utils/plugin.js +27 -0
- package/dist/utils/plugin.js.map +1 -0
- package/dist/utils/preload.cjs +146 -0
- package/dist/utils/preload.cjs.map +1 -0
- package/dist/utils/preload.d.ts +8 -0
- package/dist/utils/preload.js +143 -0
- package/dist/utils/preload.js.map +1 -0
- package/dist/utils/semver/compare.cjs +48 -0
- package/dist/utils/semver/compare.cjs.map +1 -0
- package/dist/utils/semver/compare.js +47 -0
- package/dist/utils/semver/compare.js.map +1 -0
- package/dist/utils/semver/constants.cjs +41 -0
- package/dist/utils/semver/constants.cjs.map +1 -0
- package/dist/utils/semver/constants.js +31 -0
- package/dist/utils/semver/constants.js.map +1 -0
- package/dist/utils/semver/index.cjs +68 -0
- package/dist/utils/semver/index.cjs.map +1 -0
- package/dist/utils/semver/index.d.ts +5 -0
- package/dist/utils/semver/index.js +68 -0
- package/dist/utils/semver/index.js.map +1 -0
- package/dist/utils/semver/parser.cjs +104 -0
- package/dist/utils/semver/parser.cjs.map +1 -0
- package/dist/utils/semver/parser.js +96 -0
- package/dist/utils/semver/parser.js.map +1 -0
- package/dist/utils/semver/utils.cjs +28 -0
- package/dist/utils/semver/utils.cjs.map +1 -0
- package/dist/utils/semver/utils.js +24 -0
- package/dist/utils/semver/utils.js.map +1 -0
- package/dist/utils/share.cjs +284 -0
- package/dist/utils/share.cjs.map +1 -0
- package/dist/utils/share.d.ts +23 -0
- package/dist/utils/share.js +278 -0
- package/dist/utils/share.js.map +1 -0
- package/dist/utils/tool.cjs +82 -0
- package/dist/utils/tool.cjs.map +1 -0
- package/dist/utils/tool.d.ts +8 -0
- package/dist/utils/tool.js +71 -0
- package/dist/utils/tool.js.map +1 -0
- package/package.json +16 -9
- package/dist/index.cjs.cjs +0 -3442
- package/dist/index.cjs.cjs.map +0 -1
- package/dist/index.cjs.d.ts +0 -1
- package/dist/index.esm.js +0 -3418
- package/dist/index.esm.js.map +0 -1
- package/dist/src/constant.d.ts +0 -2
- package/dist/src/core.d.ts +0 -119
- package/dist/src/global.d.ts +0 -42
- package/dist/src/helpers.d.ts +0 -38
- package/dist/src/index.d.ts +0 -14
- package/dist/src/module/index.d.ts +0 -25
- package/dist/src/plugins/generate-preload-assets.d.ts +0 -8
- package/dist/src/plugins/snapshot/SnapshotHandler.d.ts +0 -60
- package/dist/src/plugins/snapshot/index.d.ts +0 -5
- package/dist/src/remote/index.d.ts +0 -109
- package/dist/src/shared/index.d.ts +0 -75
- package/dist/src/type/config.d.ts +0 -128
- package/dist/src/type/index.d.ts +0 -3
- package/dist/src/type/plugin.d.ts +0 -35
- package/dist/src/type/preload.d.ts +0 -26
- package/dist/src/types.d.ts +0 -1
- package/dist/src/utils/env.d.ts +0 -3
- package/dist/src/utils/hooks/asyncHook.d.ts +0 -6
- package/dist/src/utils/hooks/asyncWaterfallHooks.d.ts +0 -10
- package/dist/src/utils/hooks/index.d.ts +0 -6
- package/dist/src/utils/hooks/pluginSystem.d.ts +0 -16
- package/dist/src/utils/hooks/syncHook.d.ts +0 -12
- package/dist/src/utils/hooks/syncWaterfallHook.d.ts +0 -9
- package/dist/src/utils/index.d.ts +0 -6
- package/dist/src/utils/load.d.ts +0 -11
- package/dist/src/utils/logger.d.ts +0 -6
- package/dist/src/utils/manifest.d.ts +0 -7
- package/dist/src/utils/plugin.d.ts +0 -3
- package/dist/src/utils/preload.d.ts +0 -6
- package/dist/src/utils/semver/compare.d.ts +0 -9
- package/dist/src/utils/semver/constants.d.ts +0 -10
- package/dist/src/utils/semver/index.d.ts +0 -2
- package/dist/src/utils/semver/parser.d.ts +0 -9
- package/dist/src/utils/semver/utils.d.ts +0 -11
- package/dist/src/utils/share.d.ts +0 -45
- package/dist/src/utils/tool.d.ts +0 -18
- package/dist/types.cjs.cjs +0 -3
- package/dist/types.cjs.cjs.map +0 -1
- package/dist/types.cjs.d.ts +0 -1
- package/dist/types.esm.js +0 -2
- package/dist/types.esm.js.map +0 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/utils/manifest.ts
|
|
2
|
+
function matchRemoteWithNameAndExpose(remotes, id) {
|
|
3
|
+
for (const remote of remotes) {
|
|
4
|
+
const isNameMatched = id.startsWith(remote.name);
|
|
5
|
+
let expose = id.replace(remote.name, "");
|
|
6
|
+
if (isNameMatched) {
|
|
7
|
+
if (expose.startsWith("/")) {
|
|
8
|
+
const pkgNameOrAlias = remote.name;
|
|
9
|
+
expose = `.${expose}`;
|
|
10
|
+
return {
|
|
11
|
+
pkgNameOrAlias,
|
|
12
|
+
expose,
|
|
13
|
+
remote
|
|
14
|
+
};
|
|
15
|
+
} else if (expose === "") return {
|
|
16
|
+
pkgNameOrAlias: remote.name,
|
|
17
|
+
expose: ".",
|
|
18
|
+
remote
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const isAliasMatched = remote.alias && id.startsWith(remote.alias);
|
|
22
|
+
let exposeWithAlias = remote.alias && id.replace(remote.alias, "");
|
|
23
|
+
if (remote.alias && isAliasMatched) {
|
|
24
|
+
if (exposeWithAlias && exposeWithAlias.startsWith("/")) {
|
|
25
|
+
const pkgNameOrAlias = remote.alias;
|
|
26
|
+
exposeWithAlias = `.${exposeWithAlias}`;
|
|
27
|
+
return {
|
|
28
|
+
pkgNameOrAlias,
|
|
29
|
+
expose: exposeWithAlias,
|
|
30
|
+
remote
|
|
31
|
+
};
|
|
32
|
+
} else if (exposeWithAlias === "") return {
|
|
33
|
+
pkgNameOrAlias: remote.alias,
|
|
34
|
+
expose: ".",
|
|
35
|
+
remote
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function matchRemote(remotes, nameOrAlias) {
|
|
41
|
+
for (const remote of remotes) {
|
|
42
|
+
if (nameOrAlias === remote.name) return remote;
|
|
43
|
+
if (remote.alias && nameOrAlias === remote.alias) return remote;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
//#endregion
|
|
48
|
+
export { matchRemote, matchRemoteWithNameAndExpose };
|
|
49
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","names":[],"sources":["../../src/utils/manifest.ts"],"sourcesContent":["import { Remote } from '../type';\n\n// Function to match a remote with its name and expose\n// id: pkgName(@federation/app1) + expose(button) = @federation/app1/button\n// id: alias(app1) + expose(button) = app1/button\n// id: alias(app1/utils) + expose(loadash/sort) = app1/utils/loadash/sort\nexport function matchRemoteWithNameAndExpose(\n remotes: Array<Remote>,\n id: string,\n):\n | {\n pkgNameOrAlias: string;\n expose: string;\n remote: Remote;\n }\n | undefined {\n for (const remote of remotes) {\n // match pkgName\n const isNameMatched = id.startsWith(remote.name);\n let expose = id.replace(remote.name, '');\n if (isNameMatched) {\n if (expose.startsWith('/')) {\n const pkgNameOrAlias = remote.name;\n expose = `.${expose}`;\n return {\n pkgNameOrAlias,\n expose,\n remote,\n };\n } else if (expose === '') {\n return {\n pkgNameOrAlias: remote.name,\n expose: '.',\n remote,\n };\n }\n }\n\n // match alias\n const isAliasMatched = remote.alias && id.startsWith(remote.alias);\n let exposeWithAlias = remote.alias && id.replace(remote.alias, '');\n if (remote.alias && isAliasMatched) {\n if (exposeWithAlias && exposeWithAlias.startsWith('/')) {\n const pkgNameOrAlias = remote.alias;\n exposeWithAlias = `.${exposeWithAlias}`;\n return {\n pkgNameOrAlias,\n expose: exposeWithAlias,\n remote,\n };\n } else if (exposeWithAlias === '') {\n return {\n pkgNameOrAlias: remote.alias,\n expose: '.',\n remote,\n };\n }\n }\n }\n\n return;\n}\n\n// Function to match a remote with its name or alias\nexport function matchRemote(\n remotes: Array<Remote>,\n nameOrAlias: string,\n): Remote | undefined {\n for (const remote of remotes) {\n const isNameMatched = nameOrAlias === remote.name;\n if (isNameMatched) {\n return remote;\n }\n\n const isAliasMatched = remote.alias && nameOrAlias === remote.alias;\n if (isAliasMatched) {\n return remote;\n }\n }\n return;\n}\n"],"mappings":";AAMA,SAAgB,6BACd,SACA,IAOY;AACZ,MAAK,MAAM,UAAU,SAAS;EAE5B,MAAM,gBAAgB,GAAG,WAAW,OAAO,KAAK;EAChD,IAAI,SAAS,GAAG,QAAQ,OAAO,MAAM,GAAG;AACxC,MAAI,eACF;OAAI,OAAO,WAAW,IAAI,EAAE;IAC1B,MAAM,iBAAiB,OAAO;AAC9B,aAAS,IAAI;AACb,WAAO;KACL;KACA;KACA;KACD;cACQ,WAAW,GACpB,QAAO;IACL,gBAAgB,OAAO;IACvB,QAAQ;IACR;IACD;;EAKL,MAAM,iBAAiB,OAAO,SAAS,GAAG,WAAW,OAAO,MAAM;EAClE,IAAI,kBAAkB,OAAO,SAAS,GAAG,QAAQ,OAAO,OAAO,GAAG;AAClE,MAAI,OAAO,SAAS,gBAClB;OAAI,mBAAmB,gBAAgB,WAAW,IAAI,EAAE;IACtD,MAAM,iBAAiB,OAAO;AAC9B,sBAAkB,IAAI;AACtB,WAAO;KACL;KACA,QAAQ;KACR;KACD;cACQ,oBAAoB,GAC7B,QAAO;IACL,gBAAgB,OAAO;IACvB,QAAQ;IACR;IACD;;;;AAST,SAAgB,YACd,SACA,aACoB;AACpB,MAAK,MAAM,UAAU,SAAS;AAE5B,MADsB,gBAAgB,OAAO,KAE3C,QAAO;AAIT,MADuB,OAAO,SAAS,gBAAgB,OAAO,MAE5D,QAAO"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const require_global = require('../global.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/utils/plugin.ts
|
|
4
|
+
function registerPlugins(plugins, instance) {
|
|
5
|
+
const globalPlugins = require_global.getGlobalHostPlugins();
|
|
6
|
+
const hookInstances = [
|
|
7
|
+
instance.hooks,
|
|
8
|
+
instance.remoteHandler.hooks,
|
|
9
|
+
instance.sharedHandler.hooks,
|
|
10
|
+
instance.snapshotHandler.hooks,
|
|
11
|
+
instance.loaderHook,
|
|
12
|
+
instance.bridgeHook
|
|
13
|
+
];
|
|
14
|
+
if (globalPlugins.length > 0) globalPlugins.forEach((plugin) => {
|
|
15
|
+
if (plugins?.find((item) => item.name !== plugin.name)) plugins.push(plugin);
|
|
16
|
+
});
|
|
17
|
+
if (plugins && plugins.length > 0) plugins.forEach((plugin) => {
|
|
18
|
+
hookInstances.forEach((hookInstance) => {
|
|
19
|
+
hookInstance.applyPlugin(plugin, instance);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
return plugins;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
exports.registerPlugins = registerPlugins;
|
|
27
|
+
//# sourceMappingURL=plugin.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.cjs","names":["getGlobalHostPlugins"],"sources":["../../src/utils/plugin.ts"],"sourcesContent":["import { ModuleFederation } from '../core';\nimport { UserOptions } from '../type';\nimport { getGlobalHostPlugins } from '../global';\n\nexport function registerPlugins(\n plugins: UserOptions['plugins'],\n instance: ModuleFederation,\n) {\n const globalPlugins = getGlobalHostPlugins();\n const hookInstances = [\n instance.hooks,\n instance.remoteHandler.hooks,\n instance.sharedHandler.hooks,\n instance.snapshotHandler.hooks,\n instance.loaderHook,\n instance.bridgeHook,\n ];\n // Incorporate global plugins\n if (globalPlugins.length > 0) {\n globalPlugins.forEach((plugin) => {\n if (plugins?.find((item) => item.name !== plugin.name)) {\n plugins.push(plugin);\n }\n });\n }\n\n if (plugins && plugins.length > 0) {\n plugins.forEach((plugin) => {\n hookInstances.forEach((hookInstance) => {\n hookInstance.applyPlugin(plugin, instance);\n });\n });\n }\n return plugins;\n}\n"],"mappings":";;;AAIA,SAAgB,gBACd,SACA,UACA;CACA,MAAM,gBAAgBA,qCAAsB;CAC5C,MAAM,gBAAgB;EACpB,SAAS;EACT,SAAS,cAAc;EACvB,SAAS,cAAc;EACvB,SAAS,gBAAgB;EACzB,SAAS;EACT,SAAS;EACV;AAED,KAAI,cAAc,SAAS,EACzB,eAAc,SAAS,WAAW;AAChC,MAAI,SAAS,MAAM,SAAS,KAAK,SAAS,OAAO,KAAK,CACpD,SAAQ,KAAK,OAAO;GAEtB;AAGJ,KAAI,WAAW,QAAQ,SAAS,EAC9B,SAAQ,SAAS,WAAW;AAC1B,gBAAc,SAAS,iBAAiB;AACtC,gBAAa,YAAY,QAAQ,SAAS;IAC1C;GACF;AAEJ,QAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { getGlobalHostPlugins } from "../global.js";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/plugin.ts
|
|
4
|
+
function registerPlugins(plugins, instance) {
|
|
5
|
+
const globalPlugins = getGlobalHostPlugins();
|
|
6
|
+
const hookInstances = [
|
|
7
|
+
instance.hooks,
|
|
8
|
+
instance.remoteHandler.hooks,
|
|
9
|
+
instance.sharedHandler.hooks,
|
|
10
|
+
instance.snapshotHandler.hooks,
|
|
11
|
+
instance.loaderHook,
|
|
12
|
+
instance.bridgeHook
|
|
13
|
+
];
|
|
14
|
+
if (globalPlugins.length > 0) globalPlugins.forEach((plugin) => {
|
|
15
|
+
if (plugins?.find((item) => item.name !== plugin.name)) plugins.push(plugin);
|
|
16
|
+
});
|
|
17
|
+
if (plugins && plugins.length > 0) plugins.forEach((plugin) => {
|
|
18
|
+
hookInstances.forEach((hookInstance) => {
|
|
19
|
+
hookInstance.applyPlugin(plugin, instance);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
return plugins;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { registerPlugins };
|
|
27
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","names":[],"sources":["../../src/utils/plugin.ts"],"sourcesContent":["import { ModuleFederation } from '../core';\nimport { UserOptions } from '../type';\nimport { getGlobalHostPlugins } from '../global';\n\nexport function registerPlugins(\n plugins: UserOptions['plugins'],\n instance: ModuleFederation,\n) {\n const globalPlugins = getGlobalHostPlugins();\n const hookInstances = [\n instance.hooks,\n instance.remoteHandler.hooks,\n instance.sharedHandler.hooks,\n instance.snapshotHandler.hooks,\n instance.loaderHook,\n instance.bridgeHook,\n ];\n // Incorporate global plugins\n if (globalPlugins.length > 0) {\n globalPlugins.forEach((plugin) => {\n if (plugins?.find((item) => item.name !== plugin.name)) {\n plugins.push(plugin);\n }\n });\n }\n\n if (plugins && plugins.length > 0) {\n plugins.forEach((plugin) => {\n hookInstances.forEach((hookInstance) => {\n hookInstance.applyPlugin(plugin, instance);\n });\n });\n }\n return plugins;\n}\n"],"mappings":";;;AAIA,SAAgB,gBACd,SACA,UACA;CACA,MAAM,gBAAgB,sBAAsB;CAC5C,MAAM,gBAAgB;EACpB,SAAS;EACT,SAAS,cAAc;EACvB,SAAS,cAAc;EACvB,SAAS,gBAAgB;EACzB,SAAS;EACT,SAAS;EACV;AAED,KAAI,cAAc,SAAS,EACzB,eAAc,SAAS,WAAW;AAChC,MAAI,SAAS,MAAM,SAAS,KAAK,SAAS,OAAO,KAAK,CACpD,SAAQ,KAAK,OAAO;GAEtB;AAGJ,KAAI,WAAW,QAAQ,SAAS,EAC9B,SAAQ,SAAS,WAAW;AAC1B,gBAAc,SAAS,iBAAiB;AACtC,gBAAa,YAAY,QAAQ,SAAS;IAC1C;GACF;AAEJ,QAAO"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
const require_logger = require('./logger.cjs');
|
|
2
|
+
const require_manifest = require('./manifest.cjs');
|
|
3
|
+
const require_load = require('./load.cjs');
|
|
4
|
+
let _module_federation_sdk = require("@module-federation/sdk");
|
|
5
|
+
|
|
6
|
+
//#region src/utils/preload.ts
|
|
7
|
+
function defaultPreloadArgs(preloadConfig) {
|
|
8
|
+
return {
|
|
9
|
+
resourceCategory: "sync",
|
|
10
|
+
share: true,
|
|
11
|
+
depsRemote: true,
|
|
12
|
+
prefetchInterface: false,
|
|
13
|
+
...preloadConfig
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function formatPreloadArgs(remotes, preloadArgs) {
|
|
17
|
+
return preloadArgs.map((args) => {
|
|
18
|
+
const remoteInfo = require_manifest.matchRemote(remotes, args.nameOrAlias);
|
|
19
|
+
require_logger.assert(remoteInfo, `Unable to preload ${args.nameOrAlias} as it is not included in ${!remoteInfo && (0, _module_federation_sdk.safeToString)({
|
|
20
|
+
remoteInfo,
|
|
21
|
+
remotes
|
|
22
|
+
})}`);
|
|
23
|
+
return {
|
|
24
|
+
remote: remoteInfo,
|
|
25
|
+
preloadConfig: defaultPreloadArgs(args)
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function normalizePreloadExposes(exposes) {
|
|
30
|
+
if (!exposes) return [];
|
|
31
|
+
return exposes.map((expose) => {
|
|
32
|
+
if (expose === ".") return expose;
|
|
33
|
+
if (expose.startsWith("./")) return expose.replace("./", "");
|
|
34
|
+
return expose;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function preloadAssets(remoteInfo, host, assets, useLinkPreload = true) {
|
|
38
|
+
const { cssAssets, jsAssetsWithoutEntry, entryAssets } = assets;
|
|
39
|
+
if (host.options.inBrowser) {
|
|
40
|
+
entryAssets.forEach((asset) => {
|
|
41
|
+
const { moduleInfo } = asset;
|
|
42
|
+
const module = host.moduleCache.get(remoteInfo.name);
|
|
43
|
+
if (module) require_load.getRemoteEntry({
|
|
44
|
+
origin: host,
|
|
45
|
+
remoteInfo: moduleInfo,
|
|
46
|
+
remoteEntryExports: module.remoteEntryExports
|
|
47
|
+
});
|
|
48
|
+
else require_load.getRemoteEntry({
|
|
49
|
+
origin: host,
|
|
50
|
+
remoteInfo: moduleInfo,
|
|
51
|
+
remoteEntryExports: void 0
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
if (useLinkPreload) {
|
|
55
|
+
const defaultAttrs = {
|
|
56
|
+
rel: "preload",
|
|
57
|
+
as: "style"
|
|
58
|
+
};
|
|
59
|
+
cssAssets.forEach((cssUrl) => {
|
|
60
|
+
const { link: cssEl, needAttach } = (0, _module_federation_sdk.createLink)({
|
|
61
|
+
url: cssUrl,
|
|
62
|
+
cb: () => {},
|
|
63
|
+
attrs: defaultAttrs,
|
|
64
|
+
createLinkHook: (url, attrs) => {
|
|
65
|
+
const res = host.loaderHook.lifecycle.createLink.emit({
|
|
66
|
+
url,
|
|
67
|
+
attrs
|
|
68
|
+
});
|
|
69
|
+
if (res instanceof HTMLLinkElement) return res;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
needAttach && document.head.appendChild(cssEl);
|
|
73
|
+
});
|
|
74
|
+
} else {
|
|
75
|
+
const defaultAttrs = {
|
|
76
|
+
rel: "stylesheet",
|
|
77
|
+
type: "text/css"
|
|
78
|
+
};
|
|
79
|
+
cssAssets.forEach((cssUrl) => {
|
|
80
|
+
const { link: cssEl, needAttach } = (0, _module_federation_sdk.createLink)({
|
|
81
|
+
url: cssUrl,
|
|
82
|
+
cb: () => {},
|
|
83
|
+
attrs: defaultAttrs,
|
|
84
|
+
createLinkHook: (url, attrs) => {
|
|
85
|
+
const res = host.loaderHook.lifecycle.createLink.emit({
|
|
86
|
+
url,
|
|
87
|
+
attrs
|
|
88
|
+
});
|
|
89
|
+
if (res instanceof HTMLLinkElement) return res;
|
|
90
|
+
},
|
|
91
|
+
needDeleteLink: false
|
|
92
|
+
});
|
|
93
|
+
needAttach && document.head.appendChild(cssEl);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (useLinkPreload) {
|
|
97
|
+
const defaultAttrs = {
|
|
98
|
+
rel: "preload",
|
|
99
|
+
as: "script"
|
|
100
|
+
};
|
|
101
|
+
jsAssetsWithoutEntry.forEach((jsUrl) => {
|
|
102
|
+
const { link: linkEl, needAttach } = (0, _module_federation_sdk.createLink)({
|
|
103
|
+
url: jsUrl,
|
|
104
|
+
cb: () => {},
|
|
105
|
+
attrs: defaultAttrs,
|
|
106
|
+
createLinkHook: (url, attrs) => {
|
|
107
|
+
const res = host.loaderHook.lifecycle.createLink.emit({
|
|
108
|
+
url,
|
|
109
|
+
attrs
|
|
110
|
+
});
|
|
111
|
+
if (res instanceof HTMLLinkElement) return res;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
needAttach && document.head.appendChild(linkEl);
|
|
115
|
+
});
|
|
116
|
+
} else {
|
|
117
|
+
const defaultAttrs = {
|
|
118
|
+
fetchpriority: "high",
|
|
119
|
+
type: remoteInfo?.type === "module" ? "module" : "text/javascript"
|
|
120
|
+
};
|
|
121
|
+
jsAssetsWithoutEntry.forEach((jsUrl) => {
|
|
122
|
+
const { script: scriptEl, needAttach } = (0, _module_federation_sdk.createScript)({
|
|
123
|
+
url: jsUrl,
|
|
124
|
+
cb: () => {},
|
|
125
|
+
attrs: defaultAttrs,
|
|
126
|
+
createScriptHook: (url, attrs) => {
|
|
127
|
+
const res = host.loaderHook.lifecycle.createScript.emit({
|
|
128
|
+
url,
|
|
129
|
+
attrs
|
|
130
|
+
});
|
|
131
|
+
if (res instanceof HTMLScriptElement) return res;
|
|
132
|
+
},
|
|
133
|
+
needDeleteScript: true
|
|
134
|
+
});
|
|
135
|
+
needAttach && document.head.appendChild(scriptEl);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
//#endregion
|
|
142
|
+
exports.defaultPreloadArgs = defaultPreloadArgs;
|
|
143
|
+
exports.formatPreloadArgs = formatPreloadArgs;
|
|
144
|
+
exports.normalizePreloadExposes = normalizePreloadExposes;
|
|
145
|
+
exports.preloadAssets = preloadAssets;
|
|
146
|
+
//# sourceMappingURL=preload.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preload.cjs","names":["matchRemote"],"sources":["../../src/utils/preload.ts"],"sourcesContent":["import { createLink, createScript, safeToString } from '@module-federation/sdk';\nimport {\n PreloadAssets,\n PreloadConfig,\n PreloadOptions,\n PreloadRemoteArgs,\n Remote,\n RemoteInfo,\n depsPreloadArg,\n} from '../type';\nimport { matchRemote } from './manifest';\nimport { assert } from './logger';\nimport { ModuleFederation } from '../core';\nimport { getRemoteEntry } from './load';\n\nexport function defaultPreloadArgs(\n preloadConfig: PreloadRemoteArgs | depsPreloadArg,\n): PreloadConfig {\n return {\n resourceCategory: 'sync',\n share: true,\n depsRemote: true,\n prefetchInterface: false,\n ...preloadConfig,\n } as PreloadConfig;\n}\n\nexport function formatPreloadArgs(\n remotes: Array<Remote>,\n preloadArgs: Array<PreloadRemoteArgs>,\n): PreloadOptions {\n return preloadArgs.map((args) => {\n const remoteInfo = matchRemote(remotes, args.nameOrAlias);\n assert(\n remoteInfo,\n `Unable to preload ${args.nameOrAlias} as it is not included in ${\n !remoteInfo &&\n safeToString({\n remoteInfo,\n remotes,\n })\n }`,\n );\n return {\n remote: remoteInfo,\n preloadConfig: defaultPreloadArgs(args),\n };\n });\n}\n\nexport function normalizePreloadExposes(exposes?: string[]): string[] {\n if (!exposes) {\n return [];\n }\n\n return exposes.map((expose) => {\n if (expose === '.') {\n return expose;\n }\n if (expose.startsWith('./')) {\n return expose.replace('./', '');\n }\n return expose;\n });\n}\n\nexport function preloadAssets(\n remoteInfo: RemoteInfo,\n host: ModuleFederation,\n assets: PreloadAssets,\n // It is used to distinguish preload from load remote parallel loading\n useLinkPreload = true,\n): void {\n const { cssAssets, jsAssetsWithoutEntry, entryAssets } = assets;\n\n if (host.options.inBrowser) {\n entryAssets.forEach((asset) => {\n const { moduleInfo } = asset;\n const module = host.moduleCache.get(remoteInfo.name);\n if (module) {\n getRemoteEntry({\n origin: host,\n remoteInfo: moduleInfo,\n remoteEntryExports: module.remoteEntryExports,\n });\n } else {\n getRemoteEntry({\n origin: host,\n remoteInfo: moduleInfo,\n remoteEntryExports: undefined,\n });\n }\n });\n\n if (useLinkPreload) {\n const defaultAttrs = {\n rel: 'preload',\n as: 'style',\n };\n cssAssets.forEach((cssUrl) => {\n const { link: cssEl, needAttach } = createLink({\n url: cssUrl,\n cb: () => {\n // noop\n },\n attrs: defaultAttrs,\n createLinkHook: (url, attrs) => {\n const res = host.loaderHook.lifecycle.createLink.emit({\n url,\n attrs,\n });\n if (res instanceof HTMLLinkElement) {\n return res;\n }\n return;\n },\n });\n\n needAttach && document.head.appendChild(cssEl);\n });\n } else {\n const defaultAttrs = {\n rel: 'stylesheet',\n type: 'text/css',\n };\n cssAssets.forEach((cssUrl) => {\n const { link: cssEl, needAttach } = createLink({\n url: cssUrl,\n cb: () => {\n // noop\n },\n attrs: defaultAttrs,\n createLinkHook: (url, attrs) => {\n const res = host.loaderHook.lifecycle.createLink.emit({\n url,\n attrs,\n });\n if (res instanceof HTMLLinkElement) {\n return res;\n }\n return;\n },\n needDeleteLink: false,\n });\n\n needAttach && document.head.appendChild(cssEl);\n });\n }\n\n if (useLinkPreload) {\n const defaultAttrs = {\n rel: 'preload',\n as: 'script',\n };\n jsAssetsWithoutEntry.forEach((jsUrl) => {\n const { link: linkEl, needAttach } = createLink({\n url: jsUrl,\n cb: () => {\n // noop\n },\n attrs: defaultAttrs,\n createLinkHook: (url: string, attrs) => {\n const res = host.loaderHook.lifecycle.createLink.emit({\n url,\n attrs,\n });\n if (res instanceof HTMLLinkElement) {\n return res;\n }\n return;\n },\n });\n needAttach && document.head.appendChild(linkEl);\n });\n } else {\n const defaultAttrs = {\n fetchpriority: 'high',\n type: remoteInfo?.type === 'module' ? 'module' : 'text/javascript',\n };\n jsAssetsWithoutEntry.forEach((jsUrl) => {\n const { script: scriptEl, needAttach } = createScript({\n url: jsUrl,\n cb: () => {\n // noop\n },\n attrs: defaultAttrs,\n createScriptHook: (url: string, attrs: any) => {\n const res = host.loaderHook.lifecycle.createScript.emit({\n url,\n attrs,\n });\n if (res instanceof HTMLScriptElement) {\n return res;\n }\n return;\n },\n needDeleteScript: true,\n });\n needAttach && document.head.appendChild(scriptEl);\n });\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ModuleFederation } from "../core.js";
|
|
2
|
+
import { RemoteInfo } from "../type/config.js";
|
|
3
|
+
import { PreloadAssets } from "../type/preload.js";
|
|
4
|
+
//#region src/utils/preload.d.ts
|
|
5
|
+
declare function preloadAssets(remoteInfo: RemoteInfo, host: ModuleFederation, assets: PreloadAssets, useLinkPreload?: boolean): void;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { preloadAssets };
|
|
8
|
+
//# sourceMappingURL=preload.d.ts.map
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { assert } from "./logger.js";
|
|
2
|
+
import { matchRemote } from "./manifest.js";
|
|
3
|
+
import { getRemoteEntry } from "./load.js";
|
|
4
|
+
import { createLink, createScript, safeToString } from "@module-federation/sdk";
|
|
5
|
+
|
|
6
|
+
//#region src/utils/preload.ts
|
|
7
|
+
function defaultPreloadArgs(preloadConfig) {
|
|
8
|
+
return {
|
|
9
|
+
resourceCategory: "sync",
|
|
10
|
+
share: true,
|
|
11
|
+
depsRemote: true,
|
|
12
|
+
prefetchInterface: false,
|
|
13
|
+
...preloadConfig
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function formatPreloadArgs(remotes, preloadArgs) {
|
|
17
|
+
return preloadArgs.map((args) => {
|
|
18
|
+
const remoteInfo = matchRemote(remotes, args.nameOrAlias);
|
|
19
|
+
assert(remoteInfo, `Unable to preload ${args.nameOrAlias} as it is not included in ${!remoteInfo && safeToString({
|
|
20
|
+
remoteInfo,
|
|
21
|
+
remotes
|
|
22
|
+
})}`);
|
|
23
|
+
return {
|
|
24
|
+
remote: remoteInfo,
|
|
25
|
+
preloadConfig: defaultPreloadArgs(args)
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function normalizePreloadExposes(exposes) {
|
|
30
|
+
if (!exposes) return [];
|
|
31
|
+
return exposes.map((expose) => {
|
|
32
|
+
if (expose === ".") return expose;
|
|
33
|
+
if (expose.startsWith("./")) return expose.replace("./", "");
|
|
34
|
+
return expose;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function preloadAssets(remoteInfo, host, assets, useLinkPreload = true) {
|
|
38
|
+
const { cssAssets, jsAssetsWithoutEntry, entryAssets } = assets;
|
|
39
|
+
if (host.options.inBrowser) {
|
|
40
|
+
entryAssets.forEach((asset) => {
|
|
41
|
+
const { moduleInfo } = asset;
|
|
42
|
+
const module = host.moduleCache.get(remoteInfo.name);
|
|
43
|
+
if (module) getRemoteEntry({
|
|
44
|
+
origin: host,
|
|
45
|
+
remoteInfo: moduleInfo,
|
|
46
|
+
remoteEntryExports: module.remoteEntryExports
|
|
47
|
+
});
|
|
48
|
+
else getRemoteEntry({
|
|
49
|
+
origin: host,
|
|
50
|
+
remoteInfo: moduleInfo,
|
|
51
|
+
remoteEntryExports: void 0
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
if (useLinkPreload) {
|
|
55
|
+
const defaultAttrs = {
|
|
56
|
+
rel: "preload",
|
|
57
|
+
as: "style"
|
|
58
|
+
};
|
|
59
|
+
cssAssets.forEach((cssUrl) => {
|
|
60
|
+
const { link: cssEl, needAttach } = createLink({
|
|
61
|
+
url: cssUrl,
|
|
62
|
+
cb: () => {},
|
|
63
|
+
attrs: defaultAttrs,
|
|
64
|
+
createLinkHook: (url, attrs) => {
|
|
65
|
+
const res = host.loaderHook.lifecycle.createLink.emit({
|
|
66
|
+
url,
|
|
67
|
+
attrs
|
|
68
|
+
});
|
|
69
|
+
if (res instanceof HTMLLinkElement) return res;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
needAttach && document.head.appendChild(cssEl);
|
|
73
|
+
});
|
|
74
|
+
} else {
|
|
75
|
+
const defaultAttrs = {
|
|
76
|
+
rel: "stylesheet",
|
|
77
|
+
type: "text/css"
|
|
78
|
+
};
|
|
79
|
+
cssAssets.forEach((cssUrl) => {
|
|
80
|
+
const { link: cssEl, needAttach } = createLink({
|
|
81
|
+
url: cssUrl,
|
|
82
|
+
cb: () => {},
|
|
83
|
+
attrs: defaultAttrs,
|
|
84
|
+
createLinkHook: (url, attrs) => {
|
|
85
|
+
const res = host.loaderHook.lifecycle.createLink.emit({
|
|
86
|
+
url,
|
|
87
|
+
attrs
|
|
88
|
+
});
|
|
89
|
+
if (res instanceof HTMLLinkElement) return res;
|
|
90
|
+
},
|
|
91
|
+
needDeleteLink: false
|
|
92
|
+
});
|
|
93
|
+
needAttach && document.head.appendChild(cssEl);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (useLinkPreload) {
|
|
97
|
+
const defaultAttrs = {
|
|
98
|
+
rel: "preload",
|
|
99
|
+
as: "script"
|
|
100
|
+
};
|
|
101
|
+
jsAssetsWithoutEntry.forEach((jsUrl) => {
|
|
102
|
+
const { link: linkEl, needAttach } = createLink({
|
|
103
|
+
url: jsUrl,
|
|
104
|
+
cb: () => {},
|
|
105
|
+
attrs: defaultAttrs,
|
|
106
|
+
createLinkHook: (url, attrs) => {
|
|
107
|
+
const res = host.loaderHook.lifecycle.createLink.emit({
|
|
108
|
+
url,
|
|
109
|
+
attrs
|
|
110
|
+
});
|
|
111
|
+
if (res instanceof HTMLLinkElement) return res;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
needAttach && document.head.appendChild(linkEl);
|
|
115
|
+
});
|
|
116
|
+
} else {
|
|
117
|
+
const defaultAttrs = {
|
|
118
|
+
fetchpriority: "high",
|
|
119
|
+
type: remoteInfo?.type === "module" ? "module" : "text/javascript"
|
|
120
|
+
};
|
|
121
|
+
jsAssetsWithoutEntry.forEach((jsUrl) => {
|
|
122
|
+
const { script: scriptEl, needAttach } = createScript({
|
|
123
|
+
url: jsUrl,
|
|
124
|
+
cb: () => {},
|
|
125
|
+
attrs: defaultAttrs,
|
|
126
|
+
createScriptHook: (url, attrs) => {
|
|
127
|
+
const res = host.loaderHook.lifecycle.createScript.emit({
|
|
128
|
+
url,
|
|
129
|
+
attrs
|
|
130
|
+
});
|
|
131
|
+
if (res instanceof HTMLScriptElement) return res;
|
|
132
|
+
},
|
|
133
|
+
needDeleteScript: true
|
|
134
|
+
});
|
|
135
|
+
needAttach && document.head.appendChild(scriptEl);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
//#endregion
|
|
142
|
+
export { defaultPreloadArgs, formatPreloadArgs, normalizePreloadExposes, preloadAssets };
|
|
143
|
+
//# sourceMappingURL=preload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preload.js","names":[],"sources":["../../src/utils/preload.ts"],"sourcesContent":["import { createLink, createScript, safeToString } from '@module-federation/sdk';\nimport {\n PreloadAssets,\n PreloadConfig,\n PreloadOptions,\n PreloadRemoteArgs,\n Remote,\n RemoteInfo,\n depsPreloadArg,\n} from '../type';\nimport { matchRemote } from './manifest';\nimport { assert } from './logger';\nimport { ModuleFederation } from '../core';\nimport { getRemoteEntry } from './load';\n\nexport function defaultPreloadArgs(\n preloadConfig: PreloadRemoteArgs | depsPreloadArg,\n): PreloadConfig {\n return {\n resourceCategory: 'sync',\n share: true,\n depsRemote: true,\n prefetchInterface: false,\n ...preloadConfig,\n } as PreloadConfig;\n}\n\nexport function formatPreloadArgs(\n remotes: Array<Remote>,\n preloadArgs: Array<PreloadRemoteArgs>,\n): PreloadOptions {\n return preloadArgs.map((args) => {\n const remoteInfo = matchRemote(remotes, args.nameOrAlias);\n assert(\n remoteInfo,\n `Unable to preload ${args.nameOrAlias} as it is not included in ${\n !remoteInfo &&\n safeToString({\n remoteInfo,\n remotes,\n })\n }`,\n );\n return {\n remote: remoteInfo,\n preloadConfig: defaultPreloadArgs(args),\n };\n });\n}\n\nexport function normalizePreloadExposes(exposes?: string[]): string[] {\n if (!exposes) {\n return [];\n }\n\n return exposes.map((expose) => {\n if (expose === '.') {\n return expose;\n }\n if (expose.startsWith('./')) {\n return expose.replace('./', '');\n }\n return expose;\n });\n}\n\nexport function preloadAssets(\n remoteInfo: RemoteInfo,\n host: ModuleFederation,\n assets: PreloadAssets,\n // It is used to distinguish preload from load remote parallel loading\n useLinkPreload = true,\n): void {\n const { cssAssets, jsAssetsWithoutEntry, entryAssets } = assets;\n\n if (host.options.inBrowser) {\n entryAssets.forEach((asset) => {\n const { moduleInfo } = asset;\n const module = host.moduleCache.get(remoteInfo.name);\n if (module) {\n getRemoteEntry({\n origin: host,\n remoteInfo: moduleInfo,\n remoteEntryExports: module.remoteEntryExports,\n });\n } else {\n getRemoteEntry({\n origin: host,\n remoteInfo: moduleInfo,\n remoteEntryExports: undefined,\n });\n }\n });\n\n if (useLinkPreload) {\n const defaultAttrs = {\n rel: 'preload',\n as: 'style',\n };\n cssAssets.forEach((cssUrl) => {\n const { link: cssEl, needAttach } = createLink({\n url: cssUrl,\n cb: () => {\n // noop\n },\n attrs: defaultAttrs,\n createLinkHook: (url, attrs) => {\n const res = host.loaderHook.lifecycle.createLink.emit({\n url,\n attrs,\n });\n if (res instanceof HTMLLinkElement) {\n return res;\n }\n return;\n },\n });\n\n needAttach && document.head.appendChild(cssEl);\n });\n } else {\n const defaultAttrs = {\n rel: 'stylesheet',\n type: 'text/css',\n };\n cssAssets.forEach((cssUrl) => {\n const { link: cssEl, needAttach } = createLink({\n url: cssUrl,\n cb: () => {\n // noop\n },\n attrs: defaultAttrs,\n createLinkHook: (url, attrs) => {\n const res = host.loaderHook.lifecycle.createLink.emit({\n url,\n attrs,\n });\n if (res instanceof HTMLLinkElement) {\n return res;\n }\n return;\n },\n needDeleteLink: false,\n });\n\n needAttach && document.head.appendChild(cssEl);\n });\n }\n\n if (useLinkPreload) {\n const defaultAttrs = {\n rel: 'preload',\n as: 'script',\n };\n jsAssetsWithoutEntry.forEach((jsUrl) => {\n const { link: linkEl, needAttach } = createLink({\n url: jsUrl,\n cb: () => {\n // noop\n },\n attrs: defaultAttrs,\n createLinkHook: (url: string, attrs) => {\n const res = host.loaderHook.lifecycle.createLink.emit({\n url,\n attrs,\n });\n if (res instanceof HTMLLinkElement) {\n return res;\n }\n return;\n },\n });\n needAttach && document.head.appendChild(linkEl);\n });\n } else {\n const defaultAttrs = {\n fetchpriority: 'high',\n type: remoteInfo?.type === 'module' ? 'module' : 'text/javascript',\n };\n jsAssetsWithoutEntry.forEach((jsUrl) => {\n const { script: scriptEl, needAttach } = createScript({\n url: jsUrl,\n cb: () => {\n // noop\n },\n attrs: defaultAttrs,\n createScriptHook: (url: string, attrs: any) => {\n const res = host.loaderHook.lifecycle.createScript.emit({\n url,\n attrs,\n });\n if (res instanceof HTMLScriptElement) {\n return res;\n }\n return;\n },\n needDeleteScript: true,\n });\n needAttach && document.head.appendChild(scriptEl);\n });\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/utils/semver/compare.ts
|
|
3
|
+
function compareAtom(rangeAtom, versionAtom) {
|
|
4
|
+
rangeAtom = Number(rangeAtom) || rangeAtom;
|
|
5
|
+
versionAtom = Number(versionAtom) || versionAtom;
|
|
6
|
+
if (rangeAtom > versionAtom) return 1;
|
|
7
|
+
if (rangeAtom === versionAtom) return 0;
|
|
8
|
+
return -1;
|
|
9
|
+
}
|
|
10
|
+
function comparePreRelease(rangeAtom, versionAtom) {
|
|
11
|
+
const { preRelease: rangePreRelease } = rangeAtom;
|
|
12
|
+
const { preRelease: versionPreRelease } = versionAtom;
|
|
13
|
+
if (rangePreRelease === void 0 && Boolean(versionPreRelease)) return 1;
|
|
14
|
+
if (Boolean(rangePreRelease) && versionPreRelease === void 0) return -1;
|
|
15
|
+
if (rangePreRelease === void 0 && versionPreRelease === void 0) return 0;
|
|
16
|
+
for (let i = 0, n = rangePreRelease.length; i <= n; i++) {
|
|
17
|
+
const rangeElement = rangePreRelease[i];
|
|
18
|
+
const versionElement = versionPreRelease[i];
|
|
19
|
+
if (rangeElement === versionElement) continue;
|
|
20
|
+
if (rangeElement === void 0 && versionElement === void 0) return 0;
|
|
21
|
+
if (!rangeElement) return 1;
|
|
22
|
+
if (!versionElement) return -1;
|
|
23
|
+
return compareAtom(rangeElement, versionElement);
|
|
24
|
+
}
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
function compareVersion(rangeAtom, versionAtom) {
|
|
28
|
+
return compareAtom(rangeAtom.major, versionAtom.major) || compareAtom(rangeAtom.minor, versionAtom.minor) || compareAtom(rangeAtom.patch, versionAtom.patch) || comparePreRelease(rangeAtom, versionAtom);
|
|
29
|
+
}
|
|
30
|
+
function eq(rangeAtom, versionAtom) {
|
|
31
|
+
return rangeAtom.version === versionAtom.version;
|
|
32
|
+
}
|
|
33
|
+
function compare(rangeAtom, versionAtom) {
|
|
34
|
+
switch (rangeAtom.operator) {
|
|
35
|
+
case "":
|
|
36
|
+
case "=": return eq(rangeAtom, versionAtom);
|
|
37
|
+
case ">": return compareVersion(rangeAtom, versionAtom) < 0;
|
|
38
|
+
case ">=": return eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) < 0;
|
|
39
|
+
case "<": return compareVersion(rangeAtom, versionAtom) > 0;
|
|
40
|
+
case "<=": return eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) > 0;
|
|
41
|
+
case void 0: return true;
|
|
42
|
+
default: return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//#endregion
|
|
47
|
+
exports.compare = compare;
|
|
48
|
+
//# sourceMappingURL=compare.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.cjs","names":[],"sources":["../../../src/utils/semver/compare.ts"],"sourcesContent":["// fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts\n// Copyright (c)\n// vite-plugin-federation is licensed under Mulan PSL v2.\n// You can use this software according to the terms and conditions of the Mulan PSL v2.\n// You may obtain a copy of Mulan PSL v2 at:\n// http://license.coscl.org.cn/MulanPSL2\n// THIS SOFTWARE IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.\n// See the Mulan PSL v2 for more details.\n\nexport interface CompareAtom {\n operator: string;\n version: string;\n major: string;\n minor: string;\n patch: string;\n preRelease?: string[];\n}\n\nfunction compareAtom(\n rangeAtom: string | number,\n versionAtom: string | number,\n): number {\n rangeAtom = Number(rangeAtom) || rangeAtom;\n versionAtom = Number(versionAtom) || versionAtom;\n\n if (rangeAtom > versionAtom) {\n return 1;\n }\n\n if (rangeAtom === versionAtom) {\n return 0;\n }\n\n return -1;\n}\n\nfunction comparePreRelease(\n rangeAtom: CompareAtom,\n versionAtom: CompareAtom,\n): number {\n const { preRelease: rangePreRelease } = rangeAtom;\n const { preRelease: versionPreRelease } = versionAtom;\n\n if (rangePreRelease === undefined && Boolean(versionPreRelease)) {\n return 1;\n }\n\n if (Boolean(rangePreRelease) && versionPreRelease === undefined) {\n return -1;\n }\n\n if (rangePreRelease === undefined && versionPreRelease === undefined) {\n return 0;\n }\n\n for (let i = 0, n = rangePreRelease!.length; i <= n; i++) {\n const rangeElement = rangePreRelease![i];\n const versionElement = versionPreRelease![i];\n\n if (rangeElement === versionElement) {\n continue;\n }\n\n if (rangeElement === undefined && versionElement === undefined) {\n return 0;\n }\n\n if (!rangeElement) {\n return 1;\n }\n\n if (!versionElement) {\n return -1;\n }\n\n return compareAtom(rangeElement, versionElement);\n }\n\n return 0;\n}\n\nfunction compareVersion(\n rangeAtom: CompareAtom,\n versionAtom: CompareAtom,\n): number {\n return (\n compareAtom(rangeAtom.major, versionAtom.major) ||\n compareAtom(rangeAtom.minor, versionAtom.minor) ||\n compareAtom(rangeAtom.patch, versionAtom.patch) ||\n comparePreRelease(rangeAtom, versionAtom)\n );\n}\n\nfunction eq(rangeAtom: CompareAtom, versionAtom: CompareAtom): boolean {\n return rangeAtom.version === versionAtom.version;\n}\n\nexport function compare(\n rangeAtom: CompareAtom,\n versionAtom: CompareAtom,\n): boolean {\n switch (rangeAtom.operator) {\n case '':\n case '=':\n return eq(rangeAtom, versionAtom);\n case '>':\n return compareVersion(rangeAtom, versionAtom) < 0;\n case '>=':\n return (\n eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) < 0\n );\n case '<':\n return compareVersion(rangeAtom, versionAtom) > 0;\n case '<=':\n return (\n eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) > 0\n );\n case undefined: {\n // mean * or x -> all versions\n return true;\n }\n default:\n return false;\n }\n}\n"],"mappings":";;AAkBA,SAAS,YACP,WACA,aACQ;AACR,aAAY,OAAO,UAAU,IAAI;AACjC,eAAc,OAAO,YAAY,IAAI;AAErC,KAAI,YAAY,YACd,QAAO;AAGT,KAAI,cAAc,YAChB,QAAO;AAGT,QAAO;;AAGT,SAAS,kBACP,WACA,aACQ;CACR,MAAM,EAAE,YAAY,oBAAoB;CACxC,MAAM,EAAE,YAAY,sBAAsB;AAE1C,KAAI,oBAAoB,UAAa,QAAQ,kBAAkB,CAC7D,QAAO;AAGT,KAAI,QAAQ,gBAAgB,IAAI,sBAAsB,OACpD,QAAO;AAGT,KAAI,oBAAoB,UAAa,sBAAsB,OACzD,QAAO;AAGT,MAAK,IAAI,IAAI,GAAG,IAAI,gBAAiB,QAAQ,KAAK,GAAG,KAAK;EACxD,MAAM,eAAe,gBAAiB;EACtC,MAAM,iBAAiB,kBAAmB;AAE1C,MAAI,iBAAiB,eACnB;AAGF,MAAI,iBAAiB,UAAa,mBAAmB,OACnD,QAAO;AAGT,MAAI,CAAC,aACH,QAAO;AAGT,MAAI,CAAC,eACH,QAAO;AAGT,SAAO,YAAY,cAAc,eAAe;;AAGlD,QAAO;;AAGT,SAAS,eACP,WACA,aACQ;AACR,QACE,YAAY,UAAU,OAAO,YAAY,MAAM,IAC/C,YAAY,UAAU,OAAO,YAAY,MAAM,IAC/C,YAAY,UAAU,OAAO,YAAY,MAAM,IAC/C,kBAAkB,WAAW,YAAY;;AAI7C,SAAS,GAAG,WAAwB,aAAmC;AACrE,QAAO,UAAU,YAAY,YAAY;;AAG3C,SAAgB,QACd,WACA,aACS;AACT,SAAQ,UAAU,UAAlB;EACE,KAAK;EACL,KAAK,IACH,QAAO,GAAG,WAAW,YAAY;EACnC,KAAK,IACH,QAAO,eAAe,WAAW,YAAY,GAAG;EAClD,KAAK,KACH,QACE,GAAG,WAAW,YAAY,IAAI,eAAe,WAAW,YAAY,GAAG;EAE3E,KAAK,IACH,QAAO,eAAe,WAAW,YAAY,GAAG;EAClD,KAAK,KACH,QACE,GAAG,WAAW,YAAY,IAAI,eAAe,WAAW,YAAY,GAAG;EAE3E,KAAK,OAEH,QAAO;EAET,QACE,QAAO"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//#region src/utils/semver/compare.ts
|
|
2
|
+
function compareAtom(rangeAtom, versionAtom) {
|
|
3
|
+
rangeAtom = Number(rangeAtom) || rangeAtom;
|
|
4
|
+
versionAtom = Number(versionAtom) || versionAtom;
|
|
5
|
+
if (rangeAtom > versionAtom) return 1;
|
|
6
|
+
if (rangeAtom === versionAtom) return 0;
|
|
7
|
+
return -1;
|
|
8
|
+
}
|
|
9
|
+
function comparePreRelease(rangeAtom, versionAtom) {
|
|
10
|
+
const { preRelease: rangePreRelease } = rangeAtom;
|
|
11
|
+
const { preRelease: versionPreRelease } = versionAtom;
|
|
12
|
+
if (rangePreRelease === void 0 && Boolean(versionPreRelease)) return 1;
|
|
13
|
+
if (Boolean(rangePreRelease) && versionPreRelease === void 0) return -1;
|
|
14
|
+
if (rangePreRelease === void 0 && versionPreRelease === void 0) return 0;
|
|
15
|
+
for (let i = 0, n = rangePreRelease.length; i <= n; i++) {
|
|
16
|
+
const rangeElement = rangePreRelease[i];
|
|
17
|
+
const versionElement = versionPreRelease[i];
|
|
18
|
+
if (rangeElement === versionElement) continue;
|
|
19
|
+
if (rangeElement === void 0 && versionElement === void 0) return 0;
|
|
20
|
+
if (!rangeElement) return 1;
|
|
21
|
+
if (!versionElement) return -1;
|
|
22
|
+
return compareAtom(rangeElement, versionElement);
|
|
23
|
+
}
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
function compareVersion(rangeAtom, versionAtom) {
|
|
27
|
+
return compareAtom(rangeAtom.major, versionAtom.major) || compareAtom(rangeAtom.minor, versionAtom.minor) || compareAtom(rangeAtom.patch, versionAtom.patch) || comparePreRelease(rangeAtom, versionAtom);
|
|
28
|
+
}
|
|
29
|
+
function eq(rangeAtom, versionAtom) {
|
|
30
|
+
return rangeAtom.version === versionAtom.version;
|
|
31
|
+
}
|
|
32
|
+
function compare(rangeAtom, versionAtom) {
|
|
33
|
+
switch (rangeAtom.operator) {
|
|
34
|
+
case "":
|
|
35
|
+
case "=": return eq(rangeAtom, versionAtom);
|
|
36
|
+
case ">": return compareVersion(rangeAtom, versionAtom) < 0;
|
|
37
|
+
case ">=": return eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) < 0;
|
|
38
|
+
case "<": return compareVersion(rangeAtom, versionAtom) > 0;
|
|
39
|
+
case "<=": return eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) > 0;
|
|
40
|
+
case void 0: return true;
|
|
41
|
+
default: return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
export { compare };
|
|
47
|
+
//# sourceMappingURL=compare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare.js","names":[],"sources":["../../../src/utils/semver/compare.ts"],"sourcesContent":["// fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts\n// Copyright (c)\n// vite-plugin-federation is licensed under Mulan PSL v2.\n// You can use this software according to the terms and conditions of the Mulan PSL v2.\n// You may obtain a copy of Mulan PSL v2 at:\n// http://license.coscl.org.cn/MulanPSL2\n// THIS SOFTWARE IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.\n// See the Mulan PSL v2 for more details.\n\nexport interface CompareAtom {\n operator: string;\n version: string;\n major: string;\n minor: string;\n patch: string;\n preRelease?: string[];\n}\n\nfunction compareAtom(\n rangeAtom: string | number,\n versionAtom: string | number,\n): number {\n rangeAtom = Number(rangeAtom) || rangeAtom;\n versionAtom = Number(versionAtom) || versionAtom;\n\n if (rangeAtom > versionAtom) {\n return 1;\n }\n\n if (rangeAtom === versionAtom) {\n return 0;\n }\n\n return -1;\n}\n\nfunction comparePreRelease(\n rangeAtom: CompareAtom,\n versionAtom: CompareAtom,\n): number {\n const { preRelease: rangePreRelease } = rangeAtom;\n const { preRelease: versionPreRelease } = versionAtom;\n\n if (rangePreRelease === undefined && Boolean(versionPreRelease)) {\n return 1;\n }\n\n if (Boolean(rangePreRelease) && versionPreRelease === undefined) {\n return -1;\n }\n\n if (rangePreRelease === undefined && versionPreRelease === undefined) {\n return 0;\n }\n\n for (let i = 0, n = rangePreRelease!.length; i <= n; i++) {\n const rangeElement = rangePreRelease![i];\n const versionElement = versionPreRelease![i];\n\n if (rangeElement === versionElement) {\n continue;\n }\n\n if (rangeElement === undefined && versionElement === undefined) {\n return 0;\n }\n\n if (!rangeElement) {\n return 1;\n }\n\n if (!versionElement) {\n return -1;\n }\n\n return compareAtom(rangeElement, versionElement);\n }\n\n return 0;\n}\n\nfunction compareVersion(\n rangeAtom: CompareAtom,\n versionAtom: CompareAtom,\n): number {\n return (\n compareAtom(rangeAtom.major, versionAtom.major) ||\n compareAtom(rangeAtom.minor, versionAtom.minor) ||\n compareAtom(rangeAtom.patch, versionAtom.patch) ||\n comparePreRelease(rangeAtom, versionAtom)\n );\n}\n\nfunction eq(rangeAtom: CompareAtom, versionAtom: CompareAtom): boolean {\n return rangeAtom.version === versionAtom.version;\n}\n\nexport function compare(\n rangeAtom: CompareAtom,\n versionAtom: CompareAtom,\n): boolean {\n switch (rangeAtom.operator) {\n case '':\n case '=':\n return eq(rangeAtom, versionAtom);\n case '>':\n return compareVersion(rangeAtom, versionAtom) < 0;\n case '>=':\n return (\n eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) < 0\n );\n case '<':\n return compareVersion(rangeAtom, versionAtom) > 0;\n case '<=':\n return (\n eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) > 0\n );\n case undefined: {\n // mean * or x -> all versions\n return true;\n }\n default:\n return false;\n }\n}\n"],"mappings":";AAkBA,SAAS,YACP,WACA,aACQ;AACR,aAAY,OAAO,UAAU,IAAI;AACjC,eAAc,OAAO,YAAY,IAAI;AAErC,KAAI,YAAY,YACd,QAAO;AAGT,KAAI,cAAc,YAChB,QAAO;AAGT,QAAO;;AAGT,SAAS,kBACP,WACA,aACQ;CACR,MAAM,EAAE,YAAY,oBAAoB;CACxC,MAAM,EAAE,YAAY,sBAAsB;AAE1C,KAAI,oBAAoB,UAAa,QAAQ,kBAAkB,CAC7D,QAAO;AAGT,KAAI,QAAQ,gBAAgB,IAAI,sBAAsB,OACpD,QAAO;AAGT,KAAI,oBAAoB,UAAa,sBAAsB,OACzD,QAAO;AAGT,MAAK,IAAI,IAAI,GAAG,IAAI,gBAAiB,QAAQ,KAAK,GAAG,KAAK;EACxD,MAAM,eAAe,gBAAiB;EACtC,MAAM,iBAAiB,kBAAmB;AAE1C,MAAI,iBAAiB,eACnB;AAGF,MAAI,iBAAiB,UAAa,mBAAmB,OACnD,QAAO;AAGT,MAAI,CAAC,aACH,QAAO;AAGT,MAAI,CAAC,eACH,QAAO;AAGT,SAAO,YAAY,cAAc,eAAe;;AAGlD,QAAO;;AAGT,SAAS,eACP,WACA,aACQ;AACR,QACE,YAAY,UAAU,OAAO,YAAY,MAAM,IAC/C,YAAY,UAAU,OAAO,YAAY,MAAM,IAC/C,YAAY,UAAU,OAAO,YAAY,MAAM,IAC/C,kBAAkB,WAAW,YAAY;;AAI7C,SAAS,GAAG,WAAwB,aAAmC;AACrE,QAAO,UAAU,YAAY,YAAY;;AAG3C,SAAgB,QACd,WACA,aACS;AACT,SAAQ,UAAU,UAAlB;EACE,KAAK;EACL,KAAK,IACH,QAAO,GAAG,WAAW,YAAY;EACnC,KAAK,IACH,QAAO,eAAe,WAAW,YAAY,GAAG;EAClD,KAAK,KACH,QACE,GAAG,WAAW,YAAY,IAAI,eAAe,WAAW,YAAY,GAAG;EAE3E,KAAK,IACH,QAAO,eAAe,WAAW,YAAY,GAAG;EAClD,KAAK,KACH,QACE,GAAG,WAAW,YAAY,IAAI,eAAe,WAAW,YAAY,GAAG;EAE3E,KAAK,OAEH,QAAO;EAET,QACE,QAAO"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/utils/semver/constants.ts
|
|
3
|
+
const buildIdentifier = "[0-9A-Za-z-]+";
|
|
4
|
+
const build = `(?:\\+(${buildIdentifier}(?:\\.${buildIdentifier})*))`;
|
|
5
|
+
const numericIdentifier = "0|[1-9]\\d*";
|
|
6
|
+
const numericIdentifierLoose = "[0-9]+";
|
|
7
|
+
const nonNumericIdentifier = "\\d*[a-zA-Z-][a-zA-Z0-9-]*";
|
|
8
|
+
const preReleaseIdentifierLoose = `(?:${numericIdentifierLoose}|${nonNumericIdentifier})`;
|
|
9
|
+
const preReleaseLoose = `(?:-?(${preReleaseIdentifierLoose}(?:\\.${preReleaseIdentifierLoose})*))`;
|
|
10
|
+
const preReleaseIdentifier = `(?:${numericIdentifier}|${nonNumericIdentifier})`;
|
|
11
|
+
const preRelease = `(?:-(${preReleaseIdentifier}(?:\\.${preReleaseIdentifier})*))`;
|
|
12
|
+
const xRangeIdentifier = `${numericIdentifier}|x|X|\\*`;
|
|
13
|
+
const xRangePlain = `[v=\\s]*(${xRangeIdentifier})(?:\\.(${xRangeIdentifier})(?:\\.(${xRangeIdentifier})(?:${preRelease})?${build}?)?)?`;
|
|
14
|
+
const hyphenRange = `^\\s*(${xRangePlain})\\s+-\\s+(${xRangePlain})\\s*$`;
|
|
15
|
+
const loosePlain = `[v=\\s]*${`(${numericIdentifierLoose})\\.(${numericIdentifierLoose})\\.(${numericIdentifierLoose})`}${preReleaseLoose}?${build}?`;
|
|
16
|
+
const gtlt = "((?:<|>)?=?)";
|
|
17
|
+
const comparatorTrim = `(\\s*)${gtlt}\\s*(${loosePlain}|${xRangePlain})`;
|
|
18
|
+
const loneTilde = "(?:~>?)";
|
|
19
|
+
const tildeTrim = `(\\s*)${loneTilde}\\s+`;
|
|
20
|
+
const loneCaret = "(?:\\^)";
|
|
21
|
+
const caretTrim = `(\\s*)${loneCaret}\\s+`;
|
|
22
|
+
const star = "(<|>)?=?\\s*\\*";
|
|
23
|
+
const caret = `^${loneCaret}${xRangePlain}$`;
|
|
24
|
+
const fullPlain = `v?${`(${numericIdentifier})\\.(${numericIdentifier})\\.(${numericIdentifier})`}${preRelease}?${build}?`;
|
|
25
|
+
const tilde = `^${loneTilde}${xRangePlain}$`;
|
|
26
|
+
const xRange = `^${gtlt}\\s*${xRangePlain}$`;
|
|
27
|
+
const comparator = `^${gtlt}\\s*(${fullPlain})$|^$`;
|
|
28
|
+
const gte0 = "^\\s*>=\\s*0.0.0\\s*$";
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
exports.caret = caret;
|
|
32
|
+
exports.caretTrim = caretTrim;
|
|
33
|
+
exports.comparator = comparator;
|
|
34
|
+
exports.comparatorTrim = comparatorTrim;
|
|
35
|
+
exports.gte0 = gte0;
|
|
36
|
+
exports.hyphenRange = hyphenRange;
|
|
37
|
+
exports.star = star;
|
|
38
|
+
exports.tilde = tilde;
|
|
39
|
+
exports.tildeTrim = tildeTrim;
|
|
40
|
+
exports.xRange = xRange;
|
|
41
|
+
//# sourceMappingURL=constants.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.cjs","names":[],"sources":["../../../src/utils/semver/constants.ts"],"sourcesContent":["// fork from https://github.com/originjs/vite-plugin-federation/blob/v1.1.12/packages/lib/src/utils/semver/index.ts\n// those constants are based on https://www.rubydoc.info/gems/semantic_range/3.0.0/SemanticRange#BUILDIDENTIFIER-constant\n// Copyright (c)\n// vite-plugin-federation is licensed under Mulan PSL v2.\n// You can use this software according to the terms and conditions of the Mulan PSL v2.\n// You may obtain a copy of Mulan PSL v2 at:\n// http://license.coscl.org.cn/MulanPSL2\n// THIS SOFTWARE IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.\n// See the Mulan PSL v2 for more details.\n\nconst buildIdentifier = '[0-9A-Za-z-]+';\nconst build = `(?:\\\\+(${buildIdentifier}(?:\\\\.${buildIdentifier})*))`;\nconst numericIdentifier = '0|[1-9]\\\\d*';\nconst numericIdentifierLoose = '[0-9]+';\nconst nonNumericIdentifier = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*';\nconst preReleaseIdentifierLoose = `(?:${numericIdentifierLoose}|${nonNumericIdentifier})`;\nconst preReleaseLoose = `(?:-?(${preReleaseIdentifierLoose}(?:\\\\.${preReleaseIdentifierLoose})*))`;\nconst preReleaseIdentifier = `(?:${numericIdentifier}|${nonNumericIdentifier})`;\nconst preRelease = `(?:-(${preReleaseIdentifier}(?:\\\\.${preReleaseIdentifier})*))`;\nconst xRangeIdentifier = `${numericIdentifier}|x|X|\\\\*`;\nconst xRangePlain = `[v=\\\\s]*(${xRangeIdentifier})(?:\\\\.(${xRangeIdentifier})(?:\\\\.(${xRangeIdentifier})(?:${preRelease})?${build}?)?)?`;\nexport const hyphenRange = `^\\\\s*(${xRangePlain})\\\\s+-\\\\s+(${xRangePlain})\\\\s*$`;\nconst mainVersionLoose = `(${numericIdentifierLoose})\\\\.(${numericIdentifierLoose})\\\\.(${numericIdentifierLoose})`;\nconst loosePlain = `[v=\\\\s]*${mainVersionLoose}${preReleaseLoose}?${build}?`;\nconst gtlt = '((?:<|>)?=?)';\nexport const comparatorTrim = `(\\\\s*)${gtlt}\\\\s*(${loosePlain}|${xRangePlain})`;\nconst loneTilde = '(?:~>?)';\nexport const tildeTrim = `(\\\\s*)${loneTilde}\\\\s+`;\nconst loneCaret = '(?:\\\\^)';\nexport const caretTrim = `(\\\\s*)${loneCaret}\\\\s+`;\nexport const star = '(<|>)?=?\\\\s*\\\\*';\nexport const caret = `^${loneCaret}${xRangePlain}$`;\nconst mainVersion = `(${numericIdentifier})\\\\.(${numericIdentifier})\\\\.(${numericIdentifier})`;\nconst fullPlain = `v?${mainVersion}${preRelease}?${build}?`;\nexport const tilde = `^${loneTilde}${xRangePlain}$`;\nexport const xRange = `^${gtlt}\\\\s*${xRangePlain}$`;\nexport const comparator = `^${gtlt}\\\\s*(${fullPlain})$|^$`;\n// copy from semver package\nexport const gte0 = '^\\\\s*>=\\\\s*0.0.0\\\\s*$';\n"],"mappings":";;AAUA,MAAM,kBAAkB;AACxB,MAAM,QAAQ,UAAU,gBAAgB,QAAQ,gBAAgB;AAChE,MAAM,oBAAoB;AAC1B,MAAM,yBAAyB;AAC/B,MAAM,uBAAuB;AAC7B,MAAM,4BAA4B,MAAM,uBAAuB,GAAG,qBAAqB;AACvF,MAAM,kBAAkB,SAAS,0BAA0B,QAAQ,0BAA0B;AAC7F,MAAM,uBAAuB,MAAM,kBAAkB,GAAG,qBAAqB;AAC7E,MAAM,aAAa,QAAQ,qBAAqB,QAAQ,qBAAqB;AAC7E,MAAM,mBAAmB,GAAG,kBAAkB;AAC9C,MAAM,cAAc,YAAY,iBAAiB,UAAU,iBAAiB,UAAU,iBAAiB,MAAM,WAAW,IAAI,MAAM;AAClI,MAAa,cAAc,SAAS,YAAY,aAAa,YAAY;AAEzE,MAAM,aAAa,WADM,IAAI,uBAAuB,OAAO,uBAAuB,OAAO,uBAAuB,KAC/D,gBAAgB,GAAG,MAAM;AAC1E,MAAM,OAAO;AACb,MAAa,iBAAiB,SAAS,KAAK,OAAO,WAAW,GAAG,YAAY;AAC7E,MAAM,YAAY;AAClB,MAAa,YAAY,SAAS,UAAU;AAC5C,MAAM,YAAY;AAClB,MAAa,YAAY,SAAS,UAAU;AAC5C,MAAa,OAAO;AACpB,MAAa,QAAQ,IAAI,YAAY,YAAY;AAEjD,MAAM,YAAY,KADE,IAAI,kBAAkB,OAAO,kBAAkB,OAAO,kBAAkB,KACvD,WAAW,GAAG,MAAM;AACzD,MAAa,QAAQ,IAAI,YAAY,YAAY;AACjD,MAAa,SAAS,IAAI,KAAK,MAAM,YAAY;AACjD,MAAa,aAAa,IAAI,KAAK,OAAO,UAAU;AAEpD,MAAa,OAAO"}
|