@module-federation/sdk 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/README.md +9 -3
- package/dist/_virtual/_rolldown/runtime.cjs +19 -0
- package/dist/_virtual/_rolldown/runtime.js +18 -0
- package/dist/constant.cjs +70 -0
- package/dist/constant.cjs.map +1 -0
- package/dist/constant.d.ts +53 -0
- package/dist/constant.js +55 -0
- package/dist/constant.js.map +1 -0
- package/dist/createModuleFederationConfig.cjs +9 -0
- package/dist/createModuleFederationConfig.cjs.map +1 -0
- package/dist/createModuleFederationConfig.d.ts +6 -0
- package/dist/createModuleFederationConfig.js +8 -0
- package/dist/createModuleFederationConfig.js.map +1 -0
- package/dist/dom.cjs +180 -0
- package/dist/dom.cjs.map +1 -0
- package/dist/dom.d.ts +33 -0
- package/dist/dom.js +176 -0
- package/dist/dom.js.map +1 -0
- package/dist/env.cjs +34 -0
- package/dist/env.cjs.map +1 -0
- package/dist/env.d.ts +12 -0
- package/dist/env.js +30 -0
- package/dist/env.js.map +1 -0
- package/dist/generateSnapshotFromManifest.cjs +138 -0
- package/dist/generateSnapshotFromManifest.cjs.map +1 -0
- package/dist/generateSnapshotFromManifest.d.ts +20 -0
- package/dist/generateSnapshotFromManifest.js +134 -0
- package/dist/generateSnapshotFromManifest.js.map +1 -0
- package/dist/index.cjs +104 -0
- package/dist/index.d.ts +21 -1
- package/dist/index.js +17 -0
- package/dist/logger.cjs +129 -0
- package/dist/logger.cjs.map +1 -0
- package/dist/logger.d.ts +34 -0
- package/dist/logger.js +125 -0
- package/dist/logger.js.map +1 -0
- package/dist/node.cjs +122 -0
- package/dist/node.cjs.map +1 -0
- package/dist/node.d.ts +15 -0
- package/dist/node.js +120 -0
- package/dist/node.js.map +1 -0
- package/dist/normalize-webpack-path.cjs +28 -0
- package/dist/normalize-webpack-path.cjs.map +1 -0
- package/dist/normalize-webpack-path.d.ts +10 -1
- package/dist/normalize-webpack-path.js +26 -0
- package/dist/normalize-webpack-path.js.map +1 -0
- package/dist/normalizeOptions.cjs +19 -0
- package/dist/normalizeOptions.cjs.map +1 -0
- package/dist/normalizeOptions.d.ts +5 -0
- package/dist/normalizeOptions.js +18 -0
- package/dist/normalizeOptions.js.map +1 -0
- package/dist/types/common.d.ts +14 -0
- package/dist/types/hooks.d.ts +16 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/manifest.d.ts +34 -0
- package/dist/types/plugins/ConsumeSharedPlugin.cjs +13 -0
- package/dist/types/plugins/ConsumeSharedPlugin.cjs.map +1 -0
- package/dist/types/plugins/ConsumeSharedPlugin.d.ts +109 -0
- package/dist/types/plugins/ConsumeSharedPlugin.js +8 -0
- package/dist/types/plugins/ConsumeSharedPlugin.js.map +1 -0
- package/dist/types/plugins/ContainerPlugin.cjs +13 -0
- package/dist/types/plugins/ContainerPlugin.cjs.map +1 -0
- package/dist/types/plugins/ContainerPlugin.d.ts +42 -0
- package/dist/types/plugins/ContainerPlugin.js +8 -0
- package/dist/types/plugins/ContainerPlugin.js.map +1 -0
- package/dist/types/plugins/ContainerReferencePlugin.cjs +13 -0
- package/dist/types/plugins/ContainerReferencePlugin.cjs.map +1 -0
- package/dist/types/plugins/ContainerReferencePlugin.d.ts +24 -0
- package/dist/types/plugins/ContainerReferencePlugin.js +8 -0
- package/dist/types/plugins/ContainerReferencePlugin.js.map +1 -0
- package/dist/types/plugins/ModuleFederationPlugin.cjs +13 -0
- package/dist/types/plugins/ModuleFederationPlugin.cjs.map +1 -0
- package/dist/types/plugins/ModuleFederationPlugin.d.ts +455 -0
- package/dist/types/plugins/ModuleFederationPlugin.js +8 -0
- package/dist/types/plugins/ModuleFederationPlugin.js.map +1 -0
- package/dist/types/plugins/ProvideSharedPlugin.cjs +13 -0
- package/dist/types/plugins/ProvideSharedPlugin.cjs.map +1 -0
- package/dist/types/plugins/ProvideSharedPlugin.d.ts +97 -0
- package/dist/types/plugins/ProvideSharedPlugin.js +8 -0
- package/dist/types/plugins/ProvideSharedPlugin.js.map +1 -0
- package/dist/types/plugins/SharePlugin.cjs +13 -0
- package/dist/types/plugins/SharePlugin.cjs.map +1 -0
- package/dist/types/plugins/SharePlugin.d.ts +26 -0
- package/dist/types/plugins/SharePlugin.js +8 -0
- package/dist/types/plugins/SharePlugin.js.map +1 -0
- package/dist/types/plugins/index.d.ts +6 -0
- package/dist/types/snapshot.d.ts +81 -0
- package/dist/types/stats.d.ts +101 -0
- package/dist/utils.cjs +127 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/{src/utils.d.ts → utils.d.ts} +7 -3
- package/dist/utils.js +116 -0
- package/dist/utils.js.map +1 -0
- package/package.json +14 -7
- package/dist/index.cjs.cjs +0 -1032
- package/dist/index.cjs.cjs.map +0 -1
- package/dist/index.cjs.d.ts +0 -1
- package/dist/index.esm.js +0 -978
- package/dist/index.esm.js.map +0 -1
- package/dist/normalize-webpack-path.cjs.cjs +0 -42
- package/dist/normalize-webpack-path.cjs.cjs.map +0 -1
- package/dist/normalize-webpack-path.cjs.d.ts +0 -1
- package/dist/normalize-webpack-path.esm.js +0 -39
- package/dist/normalize-webpack-path.esm.js.map +0 -1
- package/dist/src/constant.d.ts +0 -49
- package/dist/src/createModuleFederationConfig.d.ts +0 -2
- package/dist/src/dom.d.ts +0 -29
- package/dist/src/env.d.ts +0 -8
- package/dist/src/generateSnapshotFromManifest.d.ts +0 -15
- package/dist/src/index.d.ts +0 -11
- package/dist/src/logger.d.ts +0 -32
- package/dist/src/node.d.ts +0 -11
- package/dist/src/normalize-webpack-path.d.ts +0 -5
- package/dist/src/normalizeOptions.d.ts +0 -1
- package/dist/src/types/common.d.ts +0 -10
- package/dist/src/types/hooks.d.ts +0 -12
- package/dist/src/types/index.d.ts +0 -6
- package/dist/src/types/manifest.d.ts +0 -29
- package/dist/src/types/plugins/ContainerPlugin.d.ts +0 -32
- package/dist/src/types/plugins/ContainerReferencePlugin.d.ts +0 -15
- package/dist/src/types/plugins/ModuleFederationPlugin.d.ts +0 -425
- package/dist/src/types/plugins/SharePlugin.d.ts +0 -21
- package/dist/src/types/plugins/index.d.ts +0 -4
- package/dist/src/types/snapshot.d.ts +0 -77
- package/dist/src/types/stats.d.ts +0 -97
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { IncludeExcludeOptions } from "./ConsumeSharedPlugin.js";
|
|
2
|
+
|
|
3
|
+
//#region src/types/plugins/ProvideSharedPlugin.d.ts
|
|
4
|
+
declare namespace ProvideSharedPlugin_d_exports {
|
|
5
|
+
export { ProvideSharedPluginOptions, Provides, ProvidesConfig, ProvidesItem, ProvidesObject };
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Request to a module that should be provided as shared module to the share scope (will be resolved when relative).
|
|
9
|
+
*/
|
|
10
|
+
type ProvidesItem = string;
|
|
11
|
+
/**
|
|
12
|
+
* Advanced configuration for modules that should be provided as shared modules to the share scope.
|
|
13
|
+
*/
|
|
14
|
+
interface ProvidesConfig {
|
|
15
|
+
/**
|
|
16
|
+
* Include the provided module directly instead behind an async request. This allows to use this shared module in initial load too. All possible shared modules need to be eager too.
|
|
17
|
+
*/
|
|
18
|
+
eager?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Key in the share scope under which the shared modules should be stored.
|
|
21
|
+
*/
|
|
22
|
+
shareKey?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Import request to match on
|
|
25
|
+
*/
|
|
26
|
+
request?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Share scope name.
|
|
29
|
+
*/
|
|
30
|
+
shareScope?: string | string[];
|
|
31
|
+
/**
|
|
32
|
+
* Version requirement from module in share scope.
|
|
33
|
+
*/
|
|
34
|
+
requiredVersion?: false | string;
|
|
35
|
+
/**
|
|
36
|
+
* Do not accept shared module if version is not valid (defaults to yes, if local fallback module is available and shared module is not a singleton, otherwise no, has no effect if there is no required version specified).
|
|
37
|
+
*/
|
|
38
|
+
strictVersion?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Allow only a single version of the shared module in share scope (disabled by default).
|
|
41
|
+
*/
|
|
42
|
+
singleton?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Layer in which the shared module should be placed.
|
|
45
|
+
*/
|
|
46
|
+
layer?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Layer of the issuer.
|
|
49
|
+
*/
|
|
50
|
+
issuerLayer?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Version of the provided module. Will replace lower matching versions, but not higher.
|
|
53
|
+
*/
|
|
54
|
+
version?: false | string;
|
|
55
|
+
/**
|
|
56
|
+
* Filter for the shared module.
|
|
57
|
+
*/
|
|
58
|
+
exclude?: IncludeExcludeOptions;
|
|
59
|
+
/**
|
|
60
|
+
* Options for including only certain versions or requests of the provided module. Cannot be used with 'exclude'.
|
|
61
|
+
*/
|
|
62
|
+
include?: IncludeExcludeOptions;
|
|
63
|
+
/**
|
|
64
|
+
* Enable reconstructed lookup for node_modules paths for this share item
|
|
65
|
+
*/
|
|
66
|
+
allowNodeModulesSuffixMatch?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Tree shaking mode for the shared module.
|
|
69
|
+
*/
|
|
70
|
+
treeShakingMode?: 'server-calc' | 'runtime-infer';
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Modules that should be provided as shared modules to the share scope. Property names are used as share keys.
|
|
74
|
+
*/
|
|
75
|
+
interface ProvidesObject {
|
|
76
|
+
[k: string]: ProvidesConfig | ProvidesItem;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Modules that should be provided as shared modules to the share scope. When provided, property name is used to match modules, otherwise this is automatically inferred from share key.
|
|
80
|
+
*/
|
|
81
|
+
type Provides = (ProvidesItem | ProvidesObject)[] | ProvidesObject;
|
|
82
|
+
interface ProvideSharedPluginOptions {
|
|
83
|
+
provides: Provides;
|
|
84
|
+
/**
|
|
85
|
+
* Share scope name used for all provided modules (defaults to 'default').
|
|
86
|
+
*/
|
|
87
|
+
shareScope?: string | string[];
|
|
88
|
+
/**
|
|
89
|
+
* Experimental features configuration
|
|
90
|
+
*/
|
|
91
|
+
experiments?: {
|
|
92
|
+
/** Enable reconstructed lookup for node_modules paths */allowNodeModulesSuffixMatch?: boolean;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//#endregion
|
|
96
|
+
export { ProvideSharedPlugin_d_exports };
|
|
97
|
+
//# sourceMappingURL=ProvideSharedPlugin.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
|
|
3
|
+
//#region src/types/plugins/ProvideSharedPlugin.ts
|
|
4
|
+
var ProvideSharedPlugin_exports = /* @__PURE__ */ __exportAll({});
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
export { ProvideSharedPlugin_exports };
|
|
8
|
+
//# sourceMappingURL=ProvideSharedPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvideSharedPlugin.js","names":[],"sources":["../../../src/types/plugins/ProvideSharedPlugin.ts"],"sourcesContent":["/*\n * This file was automatically generated.\n * DO NOT MODIFY BY HAND.\n * Run `pnpm generate:schema -w` to update.\n */\n\nimport type { IncludeExcludeOptions } from './ConsumeSharedPlugin';\n\n/**\n * Request to a module that should be provided as shared module to the share scope (will be resolved when relative).\n */\nexport type ProvidesItem = string;\n\n/**\n * Advanced configuration for modules that should be provided as shared modules to the share scope.\n */\nexport interface ProvidesConfig {\n /**\n * Include the provided module directly instead behind an async request. This allows to use this shared module in initial load too. All possible shared modules need to be eager too.\n */\n eager?: boolean;\n /**\n * Key in the share scope under which the shared modules should be stored.\n */\n shareKey?: string;\n /**\n * Import request to match on\n */\n request?: string;\n /**\n * Share scope name.\n */\n shareScope?: string | string[];\n /**\n * Version requirement from module in share scope.\n */\n requiredVersion?: false | string;\n /**\n * Do not accept shared module if version is not valid (defaults to yes, if local fallback module is available and shared module is not a singleton, otherwise no, has no effect if there is no required version specified).\n */\n strictVersion?: boolean;\n /**\n * Allow only a single version of the shared module in share scope (disabled by default).\n */\n singleton?: boolean;\n /**\n * Layer in which the shared module should be placed.\n */\n layer?: string;\n /**\n * Layer of the issuer.\n */\n issuerLayer?: string;\n /**\n * Version of the provided module. Will replace lower matching versions, but not higher.\n */\n version?: false | string;\n /**\n * Filter for the shared module.\n */\n exclude?: IncludeExcludeOptions;\n /**\n * Options for including only certain versions or requests of the provided module. Cannot be used with 'exclude'.\n */\n include?: IncludeExcludeOptions;\n /**\n * Enable reconstructed lookup for node_modules paths for this share item\n */\n allowNodeModulesSuffixMatch?: boolean;\n /**\n * Tree shaking mode for the shared module.\n */\n treeShakingMode?: 'server-calc' | 'runtime-infer';\n}\n\n/**\n * Modules that should be provided as shared modules to the share scope. Property names are used as share keys.\n */\nexport interface ProvidesObject {\n [k: string]: ProvidesConfig | ProvidesItem;\n}\n\n/**\n * Modules that should be provided as shared modules to the share scope. When provided, property name is used to match modules, otherwise this is automatically inferred from share key.\n */\nexport type Provides = (ProvidesItem | ProvidesObject)[] | ProvidesObject;\n\nexport interface ProvideSharedPluginOptions {\n provides: Provides;\n /**\n * Share scope name used for all provided modules (defaults to 'default').\n */\n shareScope?: string | string[];\n /**\n * Experimental features configuration\n */\n experiments?: {\n /** Enable reconstructed lookup for node_modules paths */\n allowNodeModulesSuffixMatch?: boolean;\n };\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/types/plugins/SharePlugin.ts
|
|
4
|
+
var SharePlugin_exports = /* @__PURE__ */ require_runtime.__exportAll({});
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
Object.defineProperty(exports, 'SharePlugin_exports', {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return SharePlugin_exports;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=SharePlugin.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePlugin.cjs","names":[],"sources":["../../../src/types/plugins/SharePlugin.ts"],"sourcesContent":["/*\n * This file was automatically generated.\n * DO NOT MODIFY BY HAND.\n * Run `pnpm generate:schema -w` to update.\n */\n\nimport type { Shared } from './ModuleFederationPlugin';\n\nexport interface SharePluginOptions {\n /**\n * Enable/disable asynchronous loading of runtime modules. When enabled, entry points will be wrapped in asynchronous chunks.\n */\n async?: boolean;\n /**\n * Share scope name used for all shared modules (defaults to 'default').\n */\n shareScope?: string | string[];\n shared: Shared;\n /**\n * Experimental features configuration\n */\n experiments?: {\n /** Enable reconstructed lookup for node_modules paths */\n allowNodeModulesSuffixMatch?: boolean;\n };\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Shared } from "./ModuleFederationPlugin.js";
|
|
2
|
+
|
|
3
|
+
//#region src/types/plugins/SharePlugin.d.ts
|
|
4
|
+
declare namespace SharePlugin_d_exports {
|
|
5
|
+
export { SharePluginOptions };
|
|
6
|
+
}
|
|
7
|
+
interface SharePluginOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Enable/disable asynchronous loading of runtime modules. When enabled, entry points will be wrapped in asynchronous chunks.
|
|
10
|
+
*/
|
|
11
|
+
async?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Share scope name used for all shared modules (defaults to 'default').
|
|
14
|
+
*/
|
|
15
|
+
shareScope?: string | string[];
|
|
16
|
+
shared: Shared;
|
|
17
|
+
/**
|
|
18
|
+
* Experimental features configuration
|
|
19
|
+
*/
|
|
20
|
+
experiments?: {
|
|
21
|
+
/** Enable reconstructed lookup for node_modules paths */allowNodeModulesSuffixMatch?: boolean;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { SharePlugin_d_exports };
|
|
26
|
+
//# sourceMappingURL=SharePlugin.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
|
|
3
|
+
//#region src/types/plugins/SharePlugin.ts
|
|
4
|
+
var SharePlugin_exports = /* @__PURE__ */ __exportAll({});
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
export { SharePlugin_exports };
|
|
8
|
+
//# sourceMappingURL=SharePlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePlugin.js","names":[],"sources":["../../../src/types/plugins/SharePlugin.ts"],"sourcesContent":["/*\n * This file was automatically generated.\n * DO NOT MODIFY BY HAND.\n * Run `pnpm generate:schema -w` to update.\n */\n\nimport type { Shared } from './ModuleFederationPlugin';\n\nexport interface SharePluginOptions {\n /**\n * Enable/disable asynchronous loading of runtime modules. When enabled, entry points will be wrapped in asynchronous chunks.\n */\n async?: boolean;\n /**\n * Share scope name used for all shared modules (defaults to 'default').\n */\n shareScope?: string | string[];\n shared: Shared;\n /**\n * Experimental features configuration\n */\n experiments?: {\n /** Enable reconstructed lookup for node_modules paths */\n allowNodeModulesSuffixMatch?: boolean;\n };\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ModuleFederationPlugin_d_exports } from "./ModuleFederationPlugin.js";
|
|
2
|
+
import { ContainerPlugin_d_exports } from "./ContainerPlugin.js";
|
|
3
|
+
import { ContainerReferencePlugin_d_exports } from "./ContainerReferencePlugin.js";
|
|
4
|
+
import { SharePlugin_d_exports } from "./SharePlugin.js";
|
|
5
|
+
import { ConsumeSharedPlugin_d_exports } from "./ConsumeSharedPlugin.js";
|
|
6
|
+
import { ProvideSharedPlugin_d_exports } from "./ProvideSharedPlugin.js";
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { TreeShakingStatus } from "../constant.js";
|
|
2
|
+
import { RemoteEntryType, StatsAssets } from "./stats.js";
|
|
3
|
+
|
|
4
|
+
//#region src/types/snapshot.d.ts
|
|
5
|
+
interface BasicModuleInfo {
|
|
6
|
+
dev?: {
|
|
7
|
+
version?: string;
|
|
8
|
+
remotes?: {
|
|
9
|
+
[nameWithType: string]: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
version: string;
|
|
13
|
+
buildVersion: string;
|
|
14
|
+
remoteTypes: string;
|
|
15
|
+
remoteTypesZip: string;
|
|
16
|
+
remoteTypesAPI?: string;
|
|
17
|
+
remotesInfo: Record<string, {
|
|
18
|
+
matchedVersion: string;
|
|
19
|
+
}>;
|
|
20
|
+
shared: Array<{
|
|
21
|
+
sharedName: string;
|
|
22
|
+
fallback?: string;
|
|
23
|
+
fallbackName?: string;
|
|
24
|
+
fallbackType?: RemoteEntryType;
|
|
25
|
+
version?: string;
|
|
26
|
+
assets: StatsAssets;
|
|
27
|
+
treeShakingStatus?: TreeShakingStatus;
|
|
28
|
+
secondarySharedTreeShakingEntry?: string;
|
|
29
|
+
secondarySharedTreeShakingName?: string;
|
|
30
|
+
}>;
|
|
31
|
+
}
|
|
32
|
+
interface BasicProviderModuleInfo extends BasicModuleInfo {
|
|
33
|
+
remoteEntry: string;
|
|
34
|
+
remoteEntryType: RemoteEntryType;
|
|
35
|
+
ssrRemoteEntry?: string;
|
|
36
|
+
ssrRemoteEntryType?: RemoteEntryType;
|
|
37
|
+
globalName: string;
|
|
38
|
+
modules: Array<{
|
|
39
|
+
moduleName: string;
|
|
40
|
+
modulePath?: string;
|
|
41
|
+
assets: StatsAssets;
|
|
42
|
+
}>;
|
|
43
|
+
prefetchInterface?: boolean;
|
|
44
|
+
prefetchEntry?: string;
|
|
45
|
+
prefetchEntryType?: RemoteEntryType;
|
|
46
|
+
}
|
|
47
|
+
interface BasicProviderModuleInfoWithPublicPath extends BasicProviderModuleInfo {
|
|
48
|
+
publicPath: string;
|
|
49
|
+
ssrPublicPath?: string;
|
|
50
|
+
}
|
|
51
|
+
interface BasicProviderModuleInfoWithGetPublicPath extends BasicProviderModuleInfo {
|
|
52
|
+
getPublicPath: string;
|
|
53
|
+
}
|
|
54
|
+
interface ManifestProvider {
|
|
55
|
+
remoteEntry: string;
|
|
56
|
+
ssrRemoteEntry?: string;
|
|
57
|
+
version?: string;
|
|
58
|
+
}
|
|
59
|
+
interface PureEntryProvider extends ManifestProvider {
|
|
60
|
+
globalName: string;
|
|
61
|
+
}
|
|
62
|
+
interface BasicConsumerModuleInfo extends BasicModuleInfo {
|
|
63
|
+
consumerList: Array<string>;
|
|
64
|
+
}
|
|
65
|
+
interface ConsumerModuleInfoWithPublicPath extends BasicConsumerModuleInfo, BasicProviderModuleInfo {
|
|
66
|
+
publicPath: string;
|
|
67
|
+
ssrPublicPath?: string;
|
|
68
|
+
}
|
|
69
|
+
interface ConsumerModuleInfoWithGetPublicPath extends BasicConsumerModuleInfo, BasicProviderModuleInfo {
|
|
70
|
+
getPublicPath: string;
|
|
71
|
+
}
|
|
72
|
+
type PureConsumerModuleInfo = Omit<BasicConsumerModuleInfo, 'remoteTypes'>;
|
|
73
|
+
type ConsumerModuleInfo = ConsumerModuleInfoWithPublicPath | ConsumerModuleInfoWithGetPublicPath;
|
|
74
|
+
type ProviderModuleInfo = BasicProviderModuleInfoWithPublicPath | BasicProviderModuleInfoWithGetPublicPath;
|
|
75
|
+
type ModuleInfo = ConsumerModuleInfo | PureConsumerModuleInfo | ProviderModuleInfo;
|
|
76
|
+
type GlobalModuleInfo = {
|
|
77
|
+
[key: string]: ModuleInfo | ManifestProvider | PureEntryProvider | undefined;
|
|
78
|
+
};
|
|
79
|
+
//#endregion
|
|
80
|
+
export { BasicProviderModuleInfo, ConsumerModuleInfo, ConsumerModuleInfoWithPublicPath, GlobalModuleInfo, ManifestProvider, ModuleInfo, ProviderModuleInfo, PureConsumerModuleInfo, PureEntryProvider };
|
|
81
|
+
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { RemoteWithEntry, RemoteWithVersion } from "./common.js";
|
|
2
|
+
|
|
3
|
+
//#region src/types/stats.d.ts
|
|
4
|
+
type RemoteEntryType = 'var' | 'module' | 'assign' | 'assign-properties' | 'this' | 'window' | 'self' | 'global' | 'commonjs' | 'commonjs2' | 'commonjs-module' | 'commonjs-static' | 'amd' | 'amd-require' | 'umd' | 'umd2' | 'jsonp' | 'system' | string;
|
|
5
|
+
interface ResourceInfo {
|
|
6
|
+
path: string;
|
|
7
|
+
name: string;
|
|
8
|
+
type: RemoteEntryType;
|
|
9
|
+
}
|
|
10
|
+
interface StatsBuildInfo {
|
|
11
|
+
buildVersion: string;
|
|
12
|
+
buildName: string;
|
|
13
|
+
target?: string[];
|
|
14
|
+
plugins?: string[];
|
|
15
|
+
excludePlugins?: string[];
|
|
16
|
+
}
|
|
17
|
+
interface MetaDataTypes {
|
|
18
|
+
path: string;
|
|
19
|
+
name: string;
|
|
20
|
+
api: string;
|
|
21
|
+
zip: string;
|
|
22
|
+
}
|
|
23
|
+
interface BasicStatsMetaData {
|
|
24
|
+
name: string;
|
|
25
|
+
globalName: string;
|
|
26
|
+
buildInfo: StatsBuildInfo;
|
|
27
|
+
remoteEntry: ResourceInfo;
|
|
28
|
+
ssrRemoteEntry?: ResourceInfo;
|
|
29
|
+
prefetchInterface?: boolean;
|
|
30
|
+
prefetchEntry?: ResourceInfo;
|
|
31
|
+
types?: MetaDataTypes;
|
|
32
|
+
type: string;
|
|
33
|
+
pluginVersion?: string;
|
|
34
|
+
}
|
|
35
|
+
type StatsMetaDataWithGetPublicPath<T = BasicStatsMetaData> = T & {
|
|
36
|
+
getPublicPath: string;
|
|
37
|
+
};
|
|
38
|
+
type StatsMetaDataWithPublicPath<T = BasicStatsMetaData> = T & {
|
|
39
|
+
publicPath: string;
|
|
40
|
+
ssrPublicPath?: string;
|
|
41
|
+
};
|
|
42
|
+
type StatsMetaData<T = BasicStatsMetaData> = StatsMetaDataWithGetPublicPath<T> | StatsMetaDataWithPublicPath<T>;
|
|
43
|
+
interface StatsAssets {
|
|
44
|
+
js: StatsAssetsInfo;
|
|
45
|
+
css: StatsAssetsInfo;
|
|
46
|
+
}
|
|
47
|
+
interface StatsAssetsInfo {
|
|
48
|
+
sync: string[];
|
|
49
|
+
async: string[];
|
|
50
|
+
}
|
|
51
|
+
interface StatsShared {
|
|
52
|
+
id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
version: string;
|
|
55
|
+
singleton: boolean;
|
|
56
|
+
requiredVersion: string;
|
|
57
|
+
hash: string;
|
|
58
|
+
assets: StatsAssets;
|
|
59
|
+
deps: string[];
|
|
60
|
+
usedIn: string[];
|
|
61
|
+
usedExports: string[];
|
|
62
|
+
fallback: string;
|
|
63
|
+
fallbackName: string;
|
|
64
|
+
fallbackType: RemoteEntryType;
|
|
65
|
+
}
|
|
66
|
+
interface StatsRemoteVal {
|
|
67
|
+
moduleName: string;
|
|
68
|
+
federationContainerName: string;
|
|
69
|
+
consumingFederationContainerName: string;
|
|
70
|
+
alias: string;
|
|
71
|
+
usedIn: string[];
|
|
72
|
+
}
|
|
73
|
+
type StatsRemoteWithEntry<T = StatsRemoteVal> = T & Omit<RemoteWithEntry, 'name'>;
|
|
74
|
+
type StatsRemoteWithVersion<T = StatsRemoteVal> = T & Omit<RemoteWithVersion, 'name'>;
|
|
75
|
+
type StatsRemote<T = StatsRemoteVal> = StatsRemoteWithEntry<T> | StatsRemoteWithVersion<T>;
|
|
76
|
+
interface StatsModuleInfo {
|
|
77
|
+
name: string;
|
|
78
|
+
file: string[];
|
|
79
|
+
}
|
|
80
|
+
interface ManifestModuleInfos {
|
|
81
|
+
[exposeModuleName: string]: StatsModuleInfo;
|
|
82
|
+
}
|
|
83
|
+
interface StatsExpose {
|
|
84
|
+
id: string;
|
|
85
|
+
name: string;
|
|
86
|
+
path?: string;
|
|
87
|
+
file: string;
|
|
88
|
+
requires: string[];
|
|
89
|
+
assets: StatsAssets;
|
|
90
|
+
}
|
|
91
|
+
interface Stats<T = BasicStatsMetaData, K = StatsRemoteVal> {
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
metaData: StatsMetaData<T>;
|
|
95
|
+
shared: StatsShared[];
|
|
96
|
+
remotes: StatsRemote<K>[];
|
|
97
|
+
exposes: StatsExpose[];
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
export { BasicStatsMetaData, ManifestModuleInfos, MetaDataTypes, RemoteEntryType, ResourceInfo, Stats, StatsAssets, StatsBuildInfo, StatsExpose, StatsMetaData, StatsMetaDataWithGetPublicPath, StatsMetaDataWithPublicPath, StatsModuleInfo, StatsRemote, StatsRemoteVal, StatsRemoteWithEntry, StatsRemoteWithVersion, StatsShared };
|
|
101
|
+
//# sourceMappingURL=stats.d.ts.map
|
package/dist/utils.cjs
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
const require_constant = require('./constant.cjs');
|
|
2
|
+
const require_env = require('./env.cjs');
|
|
3
|
+
|
|
4
|
+
//#region src/utils.ts
|
|
5
|
+
const LOG_CATEGORY = "[ Federation Runtime ]";
|
|
6
|
+
const parseEntry = (str, devVerOrUrl, separator = require_constant.SEPARATOR) => {
|
|
7
|
+
const strSplit = str.split(separator);
|
|
8
|
+
const devVersionOrUrl = require_env.getProcessEnv()["NODE_ENV"] === "development" && devVerOrUrl;
|
|
9
|
+
const defaultVersion = "*";
|
|
10
|
+
const isEntry = (s) => s.startsWith("http") || s.includes(require_constant.MANIFEST_EXT);
|
|
11
|
+
if (strSplit.length >= 2) {
|
|
12
|
+
let [name, ...versionOrEntryArr] = strSplit;
|
|
13
|
+
if (str.startsWith(separator)) {
|
|
14
|
+
name = strSplit.slice(0, 2).join(separator);
|
|
15
|
+
versionOrEntryArr = [devVersionOrUrl || strSplit.slice(2).join(separator)];
|
|
16
|
+
}
|
|
17
|
+
let versionOrEntry = devVersionOrUrl || versionOrEntryArr.join(separator);
|
|
18
|
+
if (isEntry(versionOrEntry)) return {
|
|
19
|
+
name,
|
|
20
|
+
entry: versionOrEntry
|
|
21
|
+
};
|
|
22
|
+
else return {
|
|
23
|
+
name,
|
|
24
|
+
version: versionOrEntry || defaultVersion
|
|
25
|
+
};
|
|
26
|
+
} else if (strSplit.length === 1) {
|
|
27
|
+
const [name] = strSplit;
|
|
28
|
+
if (devVersionOrUrl && isEntry(devVersionOrUrl)) return {
|
|
29
|
+
name,
|
|
30
|
+
entry: devVersionOrUrl
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
name,
|
|
34
|
+
version: devVersionOrUrl || defaultVersion
|
|
35
|
+
};
|
|
36
|
+
} else throw `Invalid entry value: ${str}`;
|
|
37
|
+
};
|
|
38
|
+
const composeKeyWithSeparator = function(...args) {
|
|
39
|
+
if (!args.length) return "";
|
|
40
|
+
return args.reduce((sum, cur) => {
|
|
41
|
+
if (!cur) return sum;
|
|
42
|
+
if (!sum) return cur;
|
|
43
|
+
return `${sum}${require_constant.SEPARATOR}${cur}`;
|
|
44
|
+
}, "");
|
|
45
|
+
};
|
|
46
|
+
const encodeName = function(name, prefix = "", withExt = false) {
|
|
47
|
+
try {
|
|
48
|
+
const ext = withExt ? ".js" : "";
|
|
49
|
+
return `${prefix}${name.replace(new RegExp(`${require_constant.NameTransformSymbol.AT}`, "g"), require_constant.NameTransformMap[require_constant.NameTransformSymbol.AT]).replace(new RegExp(`${require_constant.NameTransformSymbol.HYPHEN}`, "g"), require_constant.NameTransformMap[require_constant.NameTransformSymbol.HYPHEN]).replace(new RegExp(`${require_constant.NameTransformSymbol.SLASH}`, "g"), require_constant.NameTransformMap[require_constant.NameTransformSymbol.SLASH])}${ext}`;
|
|
50
|
+
} catch (err) {
|
|
51
|
+
throw err;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const decodeName = function(name, prefix, withExt) {
|
|
55
|
+
try {
|
|
56
|
+
let decodedName = name;
|
|
57
|
+
if (prefix) {
|
|
58
|
+
if (!decodedName.startsWith(prefix)) return decodedName;
|
|
59
|
+
decodedName = decodedName.replace(new RegExp(prefix, "g"), "");
|
|
60
|
+
}
|
|
61
|
+
decodedName = decodedName.replace(new RegExp(`${require_constant.NameTransformMap[require_constant.NameTransformSymbol.AT]}`, "g"), require_constant.EncodedNameTransformMap[require_constant.NameTransformMap[require_constant.NameTransformSymbol.AT]]).replace(new RegExp(`${require_constant.NameTransformMap[require_constant.NameTransformSymbol.SLASH]}`, "g"), require_constant.EncodedNameTransformMap[require_constant.NameTransformMap[require_constant.NameTransformSymbol.SLASH]]).replace(new RegExp(`${require_constant.NameTransformMap[require_constant.NameTransformSymbol.HYPHEN]}`, "g"), require_constant.EncodedNameTransformMap[require_constant.NameTransformMap[require_constant.NameTransformSymbol.HYPHEN]]);
|
|
62
|
+
if (withExt) decodedName = decodedName.replace(".js", "");
|
|
63
|
+
return decodedName;
|
|
64
|
+
} catch (err) {
|
|
65
|
+
throw err;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const generateExposeFilename = (exposeName, withExt) => {
|
|
69
|
+
if (!exposeName) return "";
|
|
70
|
+
let expose = exposeName;
|
|
71
|
+
if (expose === ".") expose = "default_export";
|
|
72
|
+
if (expose.startsWith("./")) expose = expose.replace("./", "");
|
|
73
|
+
return encodeName(expose, "__federation_expose_", withExt);
|
|
74
|
+
};
|
|
75
|
+
const generateShareFilename = (pkgName, withExt) => {
|
|
76
|
+
if (!pkgName) return "";
|
|
77
|
+
return encodeName(pkgName, "__federation_shared_", withExt);
|
|
78
|
+
};
|
|
79
|
+
const getResourceUrl = (module, sourceUrl) => {
|
|
80
|
+
if ("getPublicPath" in module) {
|
|
81
|
+
let publicPath;
|
|
82
|
+
if (!module.getPublicPath.startsWith("function")) publicPath = new Function(module.getPublicPath)();
|
|
83
|
+
else publicPath = new Function("return " + module.getPublicPath)()();
|
|
84
|
+
return `${publicPath}${sourceUrl}`;
|
|
85
|
+
} else if ("publicPath" in module) {
|
|
86
|
+
if (!require_env.isBrowserEnv() && !require_env.isReactNativeEnv() && "ssrPublicPath" in module && typeof module.ssrPublicPath === "string") return `${module.ssrPublicPath}${sourceUrl}`;
|
|
87
|
+
return `${module.publicPath}${sourceUrl}`;
|
|
88
|
+
} else {
|
|
89
|
+
console.warn("Cannot get resource URL. If in debug mode, please ignore.", module, sourceUrl);
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const assert = (condition, msg) => {
|
|
94
|
+
if (!condition) error(msg);
|
|
95
|
+
};
|
|
96
|
+
const error = (msg) => {
|
|
97
|
+
throw new Error(`${LOG_CATEGORY}: ${msg}`);
|
|
98
|
+
};
|
|
99
|
+
const warn = (msg) => {
|
|
100
|
+
console.warn(`${LOG_CATEGORY}: ${msg}`);
|
|
101
|
+
};
|
|
102
|
+
function safeToString(info) {
|
|
103
|
+
try {
|
|
104
|
+
return JSON.stringify(info, null, 2);
|
|
105
|
+
} catch (e) {
|
|
106
|
+
return "";
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const VERSION_PATTERN_REGEXP = /^([\d^=v<>~]|[*xX]$)/;
|
|
110
|
+
function isRequiredVersion(str) {
|
|
111
|
+
return VERSION_PATTERN_REGEXP.test(str);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
//#endregion
|
|
115
|
+
exports.assert = assert;
|
|
116
|
+
exports.composeKeyWithSeparator = composeKeyWithSeparator;
|
|
117
|
+
exports.decodeName = decodeName;
|
|
118
|
+
exports.encodeName = encodeName;
|
|
119
|
+
exports.error = error;
|
|
120
|
+
exports.generateExposeFilename = generateExposeFilename;
|
|
121
|
+
exports.generateShareFilename = generateShareFilename;
|
|
122
|
+
exports.getResourceUrl = getResourceUrl;
|
|
123
|
+
exports.isRequiredVersion = isRequiredVersion;
|
|
124
|
+
exports.parseEntry = parseEntry;
|
|
125
|
+
exports.safeToString = safeToString;
|
|
126
|
+
exports.warn = warn;
|
|
127
|
+
//# sourceMappingURL=utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.cjs","names":["SEPARATOR","getProcessEnv","MANIFEST_EXT","NameTransformSymbol","NameTransformMap","EncodedNameTransformMap","isBrowserEnv","isReactNativeEnv"],"sources":["../src/utils.ts"],"sourcesContent":["import { RemoteEntryInfo, ModuleInfo } from './types';\nimport {\n NameTransformMap,\n NameTransformSymbol,\n EncodedNameTransformMap,\n SEPARATOR,\n MANIFEST_EXT,\n} from './constant';\nimport { getProcessEnv, isBrowserEnv, isReactNativeEnv } from './env';\n\nconst LOG_CATEGORY = '[ Federation Runtime ]';\n\n// entry: name:version version : 1.0.0 | ^1.2.3\n// entry: name:entry entry: https://localhost:9000/federation-manifest.json\nconst parseEntry = (\n str: string,\n devVerOrUrl?: string,\n separator = SEPARATOR,\n): RemoteEntryInfo => {\n const strSplit = str.split(separator);\n const devVersionOrUrl =\n getProcessEnv()['NODE_ENV'] === 'development' && devVerOrUrl;\n const defaultVersion = '*';\n const isEntry = (s: string) =>\n s.startsWith('http') || s.includes(MANIFEST_EXT);\n\n // Check if the string starts with a type\n if (strSplit.length >= 2) {\n let [name, ...versionOrEntryArr] = strSplit;\n // @name@manifest-url.json\n if (str.startsWith(separator)) {\n name = strSplit.slice(0, 2).join(separator);\n versionOrEntryArr = [\n devVersionOrUrl || strSplit.slice(2).join(separator),\n ];\n }\n\n let versionOrEntry = devVersionOrUrl || versionOrEntryArr.join(separator);\n\n if (isEntry(versionOrEntry)) {\n return {\n name,\n entry: versionOrEntry,\n };\n } else {\n // Apply version rule\n // devVersionOrUrl => inputVersion => defaultVersion\n return {\n name,\n version: versionOrEntry || defaultVersion,\n };\n }\n } else if (strSplit.length === 1) {\n const [name] = strSplit;\n if (devVersionOrUrl && isEntry(devVersionOrUrl)) {\n return {\n name,\n entry: devVersionOrUrl,\n };\n }\n return {\n name,\n version: devVersionOrUrl || defaultVersion,\n };\n } else {\n throw `Invalid entry value: ${str}`;\n }\n};\n\ndeclare global {\n // eslint-disable-next-line no-var\n var FEDERATION_DEBUG: string | undefined;\n}\n\nconst composeKeyWithSeparator = function (\n ...args: (string | undefined)[]\n): string {\n if (!args.length) {\n return '';\n }\n\n return args.reduce((sum, cur) => {\n if (!cur) {\n return sum;\n }\n if (!sum) {\n return cur;\n }\n\n return `${sum}${SEPARATOR}${cur}`;\n }, '') as string;\n};\n\nconst encodeName = function (\n name: string,\n prefix = '',\n withExt = false,\n): string {\n try {\n const ext = withExt ? '.js' : '';\n return `${prefix}${name\n .replace(\n new RegExp(`${NameTransformSymbol.AT}`, 'g'),\n NameTransformMap[NameTransformSymbol.AT],\n )\n .replace(\n new RegExp(`${NameTransformSymbol.HYPHEN}`, 'g'),\n NameTransformMap[NameTransformSymbol.HYPHEN],\n )\n .replace(\n new RegExp(`${NameTransformSymbol.SLASH}`, 'g'),\n NameTransformMap[NameTransformSymbol.SLASH],\n )}${ext}`;\n } catch (err) {\n throw err;\n }\n};\n\nconst decodeName = function (\n name: string,\n prefix?: string,\n withExt?: boolean,\n): string {\n try {\n let decodedName = name;\n if (prefix) {\n if (!decodedName.startsWith(prefix)) {\n return decodedName;\n }\n decodedName = decodedName.replace(new RegExp(prefix, 'g'), '');\n }\n decodedName = decodedName\n .replace(\n new RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`, 'g'),\n EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]],\n )\n .replace(\n new RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`, 'g'),\n EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]],\n )\n .replace(\n new RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`, 'g'),\n EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]],\n );\n if (withExt) {\n decodedName = decodedName.replace('.js', '');\n }\n return decodedName;\n } catch (err) {\n throw err;\n }\n};\n\nconst generateExposeFilename = (\n exposeName: string,\n withExt: boolean,\n): string => {\n if (!exposeName) {\n return '';\n }\n\n let expose = exposeName;\n if (expose === '.') {\n expose = 'default_export';\n }\n if (expose.startsWith('./')) {\n expose = expose.replace('./', '');\n }\n\n return encodeName(expose, '__federation_expose_', withExt);\n};\n\nconst generateShareFilename = (pkgName: string, withExt: boolean): string => {\n if (!pkgName) {\n return '';\n }\n return encodeName(pkgName, '__federation_shared_', withExt);\n};\n\nconst getResourceUrl = (module: ModuleInfo, sourceUrl: string): string => {\n if ('getPublicPath' in module) {\n let publicPath;\n\n if (!module.getPublicPath.startsWith('function')) {\n publicPath = new Function(module.getPublicPath)();\n } else {\n publicPath = new Function('return ' + module.getPublicPath)()();\n }\n\n return `${publicPath}${sourceUrl}`;\n } else if ('publicPath' in module) {\n if (\n !isBrowserEnv() &&\n !isReactNativeEnv() &&\n 'ssrPublicPath' in module &&\n typeof module.ssrPublicPath === 'string'\n ) {\n return `${module.ssrPublicPath}${sourceUrl}`;\n }\n return `${module.publicPath}${sourceUrl}`;\n } else {\n console.warn(\n 'Cannot get resource URL. If in debug mode, please ignore.',\n module,\n sourceUrl,\n );\n return '';\n }\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nconst assert = (condition: any, msg: string): asserts condition => {\n if (!condition) {\n error(msg);\n }\n};\n\nconst error = (msg: string | Error | unknown): never => {\n throw new Error(`${LOG_CATEGORY}: ${msg}`);\n};\n\nconst warn = (msg: Parameters<typeof console.warn>[0]): void => {\n console.warn(`${LOG_CATEGORY}: ${msg}`);\n};\n\nfunction safeToString(info: any): string {\n try {\n return JSON.stringify(info, null, 2);\n } catch (e) {\n return '';\n }\n}\n\n// RegExp for version string\nconst VERSION_PATTERN_REGEXP: RegExp = /^([\\d^=v<>~]|[*xX]$)/;\n\nfunction isRequiredVersion(str: string): boolean {\n return VERSION_PATTERN_REGEXP.test(str);\n}\n\nexport {\n parseEntry,\n decodeName,\n encodeName,\n composeKeyWithSeparator,\n generateExposeFilename,\n generateShareFilename,\n getResourceUrl,\n assert,\n error,\n warn,\n safeToString,\n isRequiredVersion,\n};\n"],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { RemoteEntryInfo
|
|
1
|
+
import { RemoteEntryInfo } from "./types/common.js";
|
|
2
|
+
import { ModuleInfo } from "./types/snapshot.js";
|
|
3
|
+
//#region src/utils.d.ts
|
|
2
4
|
declare const parseEntry: (str: string, devVerOrUrl?: string, separator?: string) => RemoteEntryInfo;
|
|
3
5
|
declare global {
|
|
4
|
-
|
|
6
|
+
var FEDERATION_DEBUG: string | undefined;
|
|
5
7
|
}
|
|
6
8
|
declare const composeKeyWithSeparator: (...args: (string | undefined)[]) => string;
|
|
7
9
|
declare const encodeName: (name: string, prefix?: string, withExt?: boolean) => string;
|
|
@@ -14,4 +16,6 @@ declare const error: (msg: string | Error | unknown) => never;
|
|
|
14
16
|
declare const warn: (msg: Parameters<typeof console.warn>[0]) => void;
|
|
15
17
|
declare function safeToString(info: any): string;
|
|
16
18
|
declare function isRequiredVersion(str: string): boolean;
|
|
17
|
-
|
|
19
|
+
//#endregion
|
|
20
|
+
export { assert, composeKeyWithSeparator, decodeName, encodeName, error, generateExposeFilename, generateShareFilename, getResourceUrl, isRequiredVersion, parseEntry, safeToString, warn };
|
|
21
|
+
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { EncodedNameTransformMap, MANIFEST_EXT, NameTransformMap, NameTransformSymbol, SEPARATOR } from "./constant.js";
|
|
2
|
+
import { getProcessEnv, isBrowserEnv, isReactNativeEnv } from "./env.js";
|
|
3
|
+
|
|
4
|
+
//#region src/utils.ts
|
|
5
|
+
const LOG_CATEGORY = "[ Federation Runtime ]";
|
|
6
|
+
const parseEntry = (str, devVerOrUrl, separator = SEPARATOR) => {
|
|
7
|
+
const strSplit = str.split(separator);
|
|
8
|
+
const devVersionOrUrl = getProcessEnv()["NODE_ENV"] === "development" && devVerOrUrl;
|
|
9
|
+
const defaultVersion = "*";
|
|
10
|
+
const isEntry = (s) => s.startsWith("http") || s.includes(MANIFEST_EXT);
|
|
11
|
+
if (strSplit.length >= 2) {
|
|
12
|
+
let [name, ...versionOrEntryArr] = strSplit;
|
|
13
|
+
if (str.startsWith(separator)) {
|
|
14
|
+
name = strSplit.slice(0, 2).join(separator);
|
|
15
|
+
versionOrEntryArr = [devVersionOrUrl || strSplit.slice(2).join(separator)];
|
|
16
|
+
}
|
|
17
|
+
let versionOrEntry = devVersionOrUrl || versionOrEntryArr.join(separator);
|
|
18
|
+
if (isEntry(versionOrEntry)) return {
|
|
19
|
+
name,
|
|
20
|
+
entry: versionOrEntry
|
|
21
|
+
};
|
|
22
|
+
else return {
|
|
23
|
+
name,
|
|
24
|
+
version: versionOrEntry || defaultVersion
|
|
25
|
+
};
|
|
26
|
+
} else if (strSplit.length === 1) {
|
|
27
|
+
const [name] = strSplit;
|
|
28
|
+
if (devVersionOrUrl && isEntry(devVersionOrUrl)) return {
|
|
29
|
+
name,
|
|
30
|
+
entry: devVersionOrUrl
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
name,
|
|
34
|
+
version: devVersionOrUrl || defaultVersion
|
|
35
|
+
};
|
|
36
|
+
} else throw `Invalid entry value: ${str}`;
|
|
37
|
+
};
|
|
38
|
+
const composeKeyWithSeparator = function(...args) {
|
|
39
|
+
if (!args.length) return "";
|
|
40
|
+
return args.reduce((sum, cur) => {
|
|
41
|
+
if (!cur) return sum;
|
|
42
|
+
if (!sum) return cur;
|
|
43
|
+
return `${sum}${SEPARATOR}${cur}`;
|
|
44
|
+
}, "");
|
|
45
|
+
};
|
|
46
|
+
const encodeName = function(name, prefix = "", withExt = false) {
|
|
47
|
+
try {
|
|
48
|
+
const ext = withExt ? ".js" : "";
|
|
49
|
+
return `${prefix}${name.replace(new RegExp(`${NameTransformSymbol.AT}`, "g"), NameTransformMap[NameTransformSymbol.AT]).replace(new RegExp(`${NameTransformSymbol.HYPHEN}`, "g"), NameTransformMap[NameTransformSymbol.HYPHEN]).replace(new RegExp(`${NameTransformSymbol.SLASH}`, "g"), NameTransformMap[NameTransformSymbol.SLASH])}${ext}`;
|
|
50
|
+
} catch (err) {
|
|
51
|
+
throw err;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const decodeName = function(name, prefix, withExt) {
|
|
55
|
+
try {
|
|
56
|
+
let decodedName = name;
|
|
57
|
+
if (prefix) {
|
|
58
|
+
if (!decodedName.startsWith(prefix)) return decodedName;
|
|
59
|
+
decodedName = decodedName.replace(new RegExp(prefix, "g"), "");
|
|
60
|
+
}
|
|
61
|
+
decodedName = decodedName.replace(new RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`, "g"), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(new RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`, "g"), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(new RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`, "g"), EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]);
|
|
62
|
+
if (withExt) decodedName = decodedName.replace(".js", "");
|
|
63
|
+
return decodedName;
|
|
64
|
+
} catch (err) {
|
|
65
|
+
throw err;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const generateExposeFilename = (exposeName, withExt) => {
|
|
69
|
+
if (!exposeName) return "";
|
|
70
|
+
let expose = exposeName;
|
|
71
|
+
if (expose === ".") expose = "default_export";
|
|
72
|
+
if (expose.startsWith("./")) expose = expose.replace("./", "");
|
|
73
|
+
return encodeName(expose, "__federation_expose_", withExt);
|
|
74
|
+
};
|
|
75
|
+
const generateShareFilename = (pkgName, withExt) => {
|
|
76
|
+
if (!pkgName) return "";
|
|
77
|
+
return encodeName(pkgName, "__federation_shared_", withExt);
|
|
78
|
+
};
|
|
79
|
+
const getResourceUrl = (module, sourceUrl) => {
|
|
80
|
+
if ("getPublicPath" in module) {
|
|
81
|
+
let publicPath;
|
|
82
|
+
if (!module.getPublicPath.startsWith("function")) publicPath = new Function(module.getPublicPath)();
|
|
83
|
+
else publicPath = new Function("return " + module.getPublicPath)()();
|
|
84
|
+
return `${publicPath}${sourceUrl}`;
|
|
85
|
+
} else if ("publicPath" in module) {
|
|
86
|
+
if (!isBrowserEnv() && !isReactNativeEnv() && "ssrPublicPath" in module && typeof module.ssrPublicPath === "string") return `${module.ssrPublicPath}${sourceUrl}`;
|
|
87
|
+
return `${module.publicPath}${sourceUrl}`;
|
|
88
|
+
} else {
|
|
89
|
+
console.warn("Cannot get resource URL. If in debug mode, please ignore.", module, sourceUrl);
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const assert = (condition, msg) => {
|
|
94
|
+
if (!condition) error(msg);
|
|
95
|
+
};
|
|
96
|
+
const error = (msg) => {
|
|
97
|
+
throw new Error(`${LOG_CATEGORY}: ${msg}`);
|
|
98
|
+
};
|
|
99
|
+
const warn = (msg) => {
|
|
100
|
+
console.warn(`${LOG_CATEGORY}: ${msg}`);
|
|
101
|
+
};
|
|
102
|
+
function safeToString(info) {
|
|
103
|
+
try {
|
|
104
|
+
return JSON.stringify(info, null, 2);
|
|
105
|
+
} catch (e) {
|
|
106
|
+
return "";
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const VERSION_PATTERN_REGEXP = /^([\d^=v<>~]|[*xX]$)/;
|
|
110
|
+
function isRequiredVersion(str) {
|
|
111
|
+
return VERSION_PATTERN_REGEXP.test(str);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
//#endregion
|
|
115
|
+
export { assert, composeKeyWithSeparator, decodeName, encodeName, error, generateExposeFilename, generateShareFilename, getResourceUrl, isRequiredVersion, parseEntry, safeToString, warn };
|
|
116
|
+
//# sourceMappingURL=utils.js.map
|