@module-federation/runtime 0.0.0-feat-node-support-1702930274548 → 0.0.0-feat-node-support-1703050615268
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/index.cjs.js +28 -36
- package/index.esm.js +28 -36
- package/package.json +2 -2
- package/share.cjs.js +3 -6
- package/share.esm.js +3 -6
- package/src/core.d.ts +3 -3
- package/src/module/index.d.ts +4 -2
- package/src/utils/share.d.ts +11 -2
package/index.cjs.js
CHANGED
|
@@ -869,13 +869,14 @@ function _ts_generator(thisArg1, body1) {
|
|
|
869
869
|
}
|
|
870
870
|
function importNodeModule(name11) {
|
|
871
871
|
if (!name11) {
|
|
872
|
-
throw new Error("import specifier is
|
|
873
|
-
}
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
872
|
+
throw new Error("import specifier is required");
|
|
873
|
+
}
|
|
874
|
+
var importModule11 = new Function("name", "return import(name)");
|
|
875
|
+
return importModule11(name11).then(function(res11) {
|
|
876
|
+
return res11.default;
|
|
877
|
+
}).catch(function(error11) {
|
|
878
|
+
console.error("Error importing module ".concat(name11, ":"), error11);
|
|
879
|
+
throw error11;
|
|
879
880
|
});
|
|
880
881
|
}
|
|
881
882
|
function createScriptNode(url, cb, attrs, createScriptHook) {
|
|
@@ -1000,8 +1001,6 @@ function loadScriptNode(url11, info11) {
|
|
|
1000
1001
|
reject11(error11);
|
|
1001
1002
|
} else {
|
|
1002
1003
|
var _info_attrs2, _info_attrs11;
|
|
1003
|
-
// Handle the loaded script context as needed
|
|
1004
|
-
console.log("Script loaded successfully:", scriptContext11);
|
|
1005
1004
|
var remoteEntryKey11 = (info11 === null || info11 === void 0 ? void 0 : (_info_attrs2 = info11.attrs) === null || _info_attrs2 === void 0 ? void 0 : _info_attrs2["globalName"]) || "__FEDERATION_".concat(info11 === null || info11 === void 0 ? void 0 : (_info_attrs11 = info11.attrs) === null || _info_attrs11 === void 0 ? void 0 : _info_attrs11["name"], ":custom__");
|
|
1006
1005
|
var entryExports11 = globalThis[remoteEntryKey11] = scriptContext11;
|
|
1007
1006
|
resolve11(entryExports11);
|
|
@@ -1153,15 +1152,11 @@ let Module = class Module {
|
|
|
1153
1152
|
const { loadFactory = true } = options || {
|
|
1154
1153
|
loadFactory: true
|
|
1155
1154
|
};
|
|
1156
|
-
|
|
1155
|
+
this.hostInfo.name;
|
|
1157
1156
|
// Get remoteEntry.js
|
|
1158
1157
|
const remoteEntryExports = await this.getEntry();
|
|
1159
1158
|
if (!this.inited) {
|
|
1160
|
-
const
|
|
1161
|
-
if (!globalShareScopeMap[hostName]) {
|
|
1162
|
-
globalShareScopeMap[hostName] = {};
|
|
1163
|
-
}
|
|
1164
|
-
const localShareScopeMap = globalShareScopeMap[hostName];
|
|
1159
|
+
const localShareScopeMap = this.shareScopeMap;
|
|
1165
1160
|
const remoteShareScope = this.remoteInfo.shareScope || 'default';
|
|
1166
1161
|
if (!localShareScopeMap[remoteShareScope]) {
|
|
1167
1162
|
localShareScopeMap[remoteShareScope] = {};
|
|
@@ -1183,9 +1178,9 @@ let Module = class Module {
|
|
|
1183
1178
|
remotes: [],
|
|
1184
1179
|
name: this.remoteInfo.name
|
|
1185
1180
|
}));
|
|
1186
|
-
if (!__FEDERATION__.__SHARE__['default'] &&
|
|
1181
|
+
if (!__FEDERATION__.__SHARE__['default'] && this.shareScopeMap && this.shareScopeMap['default']) {
|
|
1187
1182
|
// @ts-ignore compat prev logic , and it will be optimized by supporting startup hook
|
|
1188
|
-
__FEDERATION__.__SHARE__['default'] =
|
|
1183
|
+
__FEDERATION__.__SHARE__['default'] = this.shareScopeMap['default'];
|
|
1189
1184
|
}
|
|
1190
1185
|
}
|
|
1191
1186
|
}
|
|
@@ -1202,7 +1197,7 @@ let Module = class Module {
|
|
|
1202
1197
|
return exposeContent;
|
|
1203
1198
|
}
|
|
1204
1199
|
// loading: Record<string, undefined | Promise<RemoteEntryExports | void>> = {};
|
|
1205
|
-
constructor({ hostInfo, remoteInfo, shared, loaderHook }){
|
|
1200
|
+
constructor({ hostInfo, remoteInfo, shared, loaderHook, shareScopeMap }){
|
|
1206
1201
|
this.inited = false;
|
|
1207
1202
|
this.shared = {};
|
|
1208
1203
|
this.lib = undefined;
|
|
@@ -1210,6 +1205,7 @@ let Module = class Module {
|
|
|
1210
1205
|
this.remoteInfo = remoteInfo;
|
|
1211
1206
|
this.shared = shared;
|
|
1212
1207
|
this.loaderHook = loaderHook;
|
|
1208
|
+
this.shareScopeMap = shareScopeMap;
|
|
1213
1209
|
}
|
|
1214
1210
|
};
|
|
1215
1211
|
|
|
@@ -1740,7 +1736,7 @@ function generatePreloadAssets(origin, preloadOptions, remote, globalSnapshot, r
|
|
|
1740
1736
|
if (!shareInfo) {
|
|
1741
1737
|
return;
|
|
1742
1738
|
}
|
|
1743
|
-
const registeredShared = share.getRegisteredShare(origin.
|
|
1739
|
+
const registeredShared = share.getRegisteredShare(origin.shareScopeMap, shared.sharedName, shareInfo, origin.hooks.lifecycle.resolveShare);
|
|
1744
1740
|
// If the global share does not exist, or the lib function does not exist, it means that the shared has not been loaded yet and can be preloaded.
|
|
1745
1741
|
if (registeredShared && typeof registeredShared.lib === 'function') {
|
|
1746
1742
|
shared.assets.js.sync.forEach((asset)=>{
|
|
@@ -2067,8 +2063,9 @@ function _object_without_properties_loose(source, excluded) {
|
|
|
2067
2063
|
class FederationHost {
|
|
2068
2064
|
_setGlobalShareScopeMap() {
|
|
2069
2065
|
const globalShareScopeMap = share.getGlobalShareScope();
|
|
2070
|
-
|
|
2071
|
-
|
|
2066
|
+
const identifier = this.options.id || this.options.name;
|
|
2067
|
+
if (identifier && !globalShareScopeMap[identifier]) {
|
|
2068
|
+
globalShareScopeMap[identifier] = this.shareScopeMap;
|
|
2072
2069
|
}
|
|
2073
2070
|
}
|
|
2074
2071
|
initOptions(userOptions) {
|
|
@@ -2100,7 +2097,7 @@ class FederationHost {
|
|
|
2100
2097
|
// Assert that shareInfoRes exists, if not, throw an error
|
|
2101
2098
|
share.assert(shareInfoRes, `Cannot find ${pkgName} Share in the ${this.options.name}. Please ensure that the ${pkgName} Share parameters have been injected`);
|
|
2102
2099
|
// Retrieve from cache
|
|
2103
|
-
const registeredShared = share.getRegisteredShare(this.
|
|
2100
|
+
const registeredShared = share.getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
|
|
2104
2101
|
const addUseIn = (shared)=>{
|
|
2105
2102
|
if (!shared.useIn) {
|
|
2106
2103
|
shared.useIn = [];
|
|
@@ -2124,7 +2121,7 @@ class FederationHost {
|
|
|
2124
2121
|
shareInfoRes.lib = factory;
|
|
2125
2122
|
shareInfoRes.loaded = true;
|
|
2126
2123
|
addUseIn(shareInfoRes);
|
|
2127
|
-
const gShared = share.getRegisteredShare(this.
|
|
2124
|
+
const gShared = share.getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
|
|
2128
2125
|
if (gShared) {
|
|
2129
2126
|
gShared.lib = factory;
|
|
2130
2127
|
gShared.loaded = true;
|
|
@@ -2150,8 +2147,7 @@ class FederationHost {
|
|
|
2150
2147
|
shareInfoRes.lib = factory;
|
|
2151
2148
|
shareInfoRes.loaded = true;
|
|
2152
2149
|
addUseIn(shareInfoRes);
|
|
2153
|
-
|
|
2154
|
-
const gShared = share.getRegisteredShare(this.options.name, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
|
|
2150
|
+
const gShared = share.getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
|
|
2155
2151
|
if (gShared) {
|
|
2156
2152
|
gShared.lib = factory;
|
|
2157
2153
|
gShared.loaded = true;
|
|
@@ -2177,7 +2173,7 @@ class FederationHost {
|
|
|
2177
2173
|
loadShareSync(pkgName) {
|
|
2178
2174
|
var _this_options_shared;
|
|
2179
2175
|
const shareInfo = (_this_options_shared = this.options.shared) == null ? void 0 : _this_options_shared[pkgName];
|
|
2180
|
-
const registeredShared = share.getRegisteredShare(this.
|
|
2176
|
+
const registeredShared = share.getRegisteredShare(this.shareScopeMap, pkgName, shareInfo, this.hooks.lifecycle.resolveShare);
|
|
2181
2177
|
if (registeredShared && typeof registeredShared.lib === 'function') {
|
|
2182
2178
|
share.addUniqueItem(registeredShared.useIn, this.options.name);
|
|
2183
2179
|
if (!registeredShared.loaded) {
|
|
@@ -2257,7 +2253,8 @@ class FederationHost {
|
|
|
2257
2253
|
remoteInfo,
|
|
2258
2254
|
shared: this.options.shared || {},
|
|
2259
2255
|
plugins: this.options.plugins,
|
|
2260
|
-
loaderHook: this.loaderHook
|
|
2256
|
+
loaderHook: this.loaderHook,
|
|
2257
|
+
shareScopeMap: this.shareScopeMap
|
|
2261
2258
|
};
|
|
2262
2259
|
if (!module) {
|
|
2263
2260
|
module = new Module(moduleOptions);
|
|
@@ -2338,12 +2335,8 @@ class FederationHost {
|
|
|
2338
2335
|
* If the share scope does not exist, it creates one.
|
|
2339
2336
|
*/ // eslint-disable-next-line @typescript-eslint/member-ordering
|
|
2340
2337
|
initializeSharing(shareScopeName = share.DEFAULT_SCOPE, strategy) {
|
|
2341
|
-
const
|
|
2338
|
+
const shareScope = this.shareScopeMap;
|
|
2342
2339
|
const hostName = this.options.name;
|
|
2343
|
-
if (!globalShareScope[hostName]) {
|
|
2344
|
-
globalShareScope[hostName] = {};
|
|
2345
|
-
}
|
|
2346
|
-
const shareScope = globalShareScope[hostName];
|
|
2347
2340
|
// Creates a new share scope if necessary
|
|
2348
2341
|
if (!shareScope[shareScopeName]) {
|
|
2349
2342
|
shareScope[shareScopeName] = {};
|
|
@@ -2440,8 +2433,7 @@ class FederationHost {
|
|
|
2440
2433
|
const sharedKeys = Object.keys(formatShareOptions);
|
|
2441
2434
|
sharedKeys.forEach((sharedKey)=>{
|
|
2442
2435
|
const sharedVal = formatShareOptions[sharedKey];
|
|
2443
|
-
|
|
2444
|
-
const registeredShared = share.getRegisteredShare(userOptions.name, sharedKey, sharedVal, this.hooks.lifecycle.resolveShare);
|
|
2436
|
+
const registeredShared = share.getRegisteredShare(this.shareScopeMap, sharedKey, sharedVal, this.hooks.lifecycle.resolveShare);
|
|
2445
2437
|
if (!registeredShared && sharedVal && sharedVal.lib) {
|
|
2446
2438
|
this.setShared({
|
|
2447
2439
|
pkgName: sharedKey,
|
|
@@ -2532,13 +2524,13 @@ class FederationHost {
|
|
|
2532
2524
|
errorLoadRemote: new AsyncHook('errorLoadRemote'),
|
|
2533
2525
|
beforeLoadShare: new AsyncWaterfallHook('beforeLoadShare'),
|
|
2534
2526
|
loadShare: new AsyncHook(),
|
|
2535
|
-
resolveShare: new
|
|
2527
|
+
resolveShare: new SyncWaterfallHook('resolveShare'),
|
|
2536
2528
|
beforePreloadRemote: new AsyncHook(),
|
|
2537
2529
|
generatePreloadAssets: new AsyncHook('generatePreloadAssets'),
|
|
2538
2530
|
afterPreloadRemote: new AsyncHook()
|
|
2539
2531
|
});
|
|
2540
2532
|
this.releaseNumber = `0`;
|
|
2541
|
-
this.version = `0.0.0-feat-node-support-
|
|
2533
|
+
this.version = `0.0.0-feat-node-support-1703050615268`;
|
|
2542
2534
|
this.moduleCache = new Map();
|
|
2543
2535
|
this.loaderHook = new PluginSystem({
|
|
2544
2536
|
// FIXME: may not be suitable
|
package/index.esm.js
CHANGED
|
@@ -866,13 +866,14 @@ function _ts_generator(thisArg1, body1) {
|
|
|
866
866
|
}
|
|
867
867
|
function importNodeModule(name11) {
|
|
868
868
|
if (!name11) {
|
|
869
|
-
throw new Error("import specifier is
|
|
870
|
-
}
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
869
|
+
throw new Error("import specifier is required");
|
|
870
|
+
}
|
|
871
|
+
var importModule11 = new Function("name", "return import(name)");
|
|
872
|
+
return importModule11(name11).then(function(res11) {
|
|
873
|
+
return res11.default;
|
|
874
|
+
}).catch(function(error11) {
|
|
875
|
+
console.error("Error importing module ".concat(name11, ":"), error11);
|
|
876
|
+
throw error11;
|
|
876
877
|
});
|
|
877
878
|
}
|
|
878
879
|
function createScriptNode(url, cb, attrs, createScriptHook) {
|
|
@@ -997,8 +998,6 @@ function loadScriptNode(url11, info11) {
|
|
|
997
998
|
reject11(error11);
|
|
998
999
|
} else {
|
|
999
1000
|
var _info_attrs2, _info_attrs11;
|
|
1000
|
-
// Handle the loaded script context as needed
|
|
1001
|
-
console.log("Script loaded successfully:", scriptContext11);
|
|
1002
1001
|
var remoteEntryKey11 = (info11 === null || info11 === void 0 ? void 0 : (_info_attrs2 = info11.attrs) === null || _info_attrs2 === void 0 ? void 0 : _info_attrs2["globalName"]) || "__FEDERATION_".concat(info11 === null || info11 === void 0 ? void 0 : (_info_attrs11 = info11.attrs) === null || _info_attrs11 === void 0 ? void 0 : _info_attrs11["name"], ":custom__");
|
|
1003
1002
|
var entryExports11 = globalThis[remoteEntryKey11] = scriptContext11;
|
|
1004
1003
|
resolve11(entryExports11);
|
|
@@ -1150,15 +1149,11 @@ let Module = class Module {
|
|
|
1150
1149
|
const { loadFactory = true } = options || {
|
|
1151
1150
|
loadFactory: true
|
|
1152
1151
|
};
|
|
1153
|
-
|
|
1152
|
+
this.hostInfo.name;
|
|
1154
1153
|
// Get remoteEntry.js
|
|
1155
1154
|
const remoteEntryExports = await this.getEntry();
|
|
1156
1155
|
if (!this.inited) {
|
|
1157
|
-
const
|
|
1158
|
-
if (!globalShareScopeMap[hostName]) {
|
|
1159
|
-
globalShareScopeMap[hostName] = {};
|
|
1160
|
-
}
|
|
1161
|
-
const localShareScopeMap = globalShareScopeMap[hostName];
|
|
1156
|
+
const localShareScopeMap = this.shareScopeMap;
|
|
1162
1157
|
const remoteShareScope = this.remoteInfo.shareScope || 'default';
|
|
1163
1158
|
if (!localShareScopeMap[remoteShareScope]) {
|
|
1164
1159
|
localShareScopeMap[remoteShareScope] = {};
|
|
@@ -1180,9 +1175,9 @@ let Module = class Module {
|
|
|
1180
1175
|
remotes: [],
|
|
1181
1176
|
name: this.remoteInfo.name
|
|
1182
1177
|
}));
|
|
1183
|
-
if (!__FEDERATION__.__SHARE__['default'] &&
|
|
1178
|
+
if (!__FEDERATION__.__SHARE__['default'] && this.shareScopeMap && this.shareScopeMap['default']) {
|
|
1184
1179
|
// @ts-ignore compat prev logic , and it will be optimized by supporting startup hook
|
|
1185
|
-
__FEDERATION__.__SHARE__['default'] =
|
|
1180
|
+
__FEDERATION__.__SHARE__['default'] = this.shareScopeMap['default'];
|
|
1186
1181
|
}
|
|
1187
1182
|
}
|
|
1188
1183
|
}
|
|
@@ -1199,7 +1194,7 @@ let Module = class Module {
|
|
|
1199
1194
|
return exposeContent;
|
|
1200
1195
|
}
|
|
1201
1196
|
// loading: Record<string, undefined | Promise<RemoteEntryExports | void>> = {};
|
|
1202
|
-
constructor({ hostInfo, remoteInfo, shared, loaderHook }){
|
|
1197
|
+
constructor({ hostInfo, remoteInfo, shared, loaderHook, shareScopeMap }){
|
|
1203
1198
|
this.inited = false;
|
|
1204
1199
|
this.shared = {};
|
|
1205
1200
|
this.lib = undefined;
|
|
@@ -1207,6 +1202,7 @@ let Module = class Module {
|
|
|
1207
1202
|
this.remoteInfo = remoteInfo;
|
|
1208
1203
|
this.shared = shared;
|
|
1209
1204
|
this.loaderHook = loaderHook;
|
|
1205
|
+
this.shareScopeMap = shareScopeMap;
|
|
1210
1206
|
}
|
|
1211
1207
|
};
|
|
1212
1208
|
|
|
@@ -1737,7 +1733,7 @@ function generatePreloadAssets(origin, preloadOptions, remote, globalSnapshot, r
|
|
|
1737
1733
|
if (!shareInfo) {
|
|
1738
1734
|
return;
|
|
1739
1735
|
}
|
|
1740
|
-
const registeredShared = getRegisteredShare(origin.
|
|
1736
|
+
const registeredShared = getRegisteredShare(origin.shareScopeMap, shared.sharedName, shareInfo, origin.hooks.lifecycle.resolveShare);
|
|
1741
1737
|
// If the global share does not exist, or the lib function does not exist, it means that the shared has not been loaded yet and can be preloaded.
|
|
1742
1738
|
if (registeredShared && typeof registeredShared.lib === 'function') {
|
|
1743
1739
|
shared.assets.js.sync.forEach((asset)=>{
|
|
@@ -2064,8 +2060,9 @@ function _object_without_properties_loose(source, excluded) {
|
|
|
2064
2060
|
class FederationHost {
|
|
2065
2061
|
_setGlobalShareScopeMap() {
|
|
2066
2062
|
const globalShareScopeMap = getGlobalShareScope();
|
|
2067
|
-
|
|
2068
|
-
|
|
2063
|
+
const identifier = this.options.id || this.options.name;
|
|
2064
|
+
if (identifier && !globalShareScopeMap[identifier]) {
|
|
2065
|
+
globalShareScopeMap[identifier] = this.shareScopeMap;
|
|
2069
2066
|
}
|
|
2070
2067
|
}
|
|
2071
2068
|
initOptions(userOptions) {
|
|
@@ -2097,7 +2094,7 @@ class FederationHost {
|
|
|
2097
2094
|
// Assert that shareInfoRes exists, if not, throw an error
|
|
2098
2095
|
assert(shareInfoRes, `Cannot find ${pkgName} Share in the ${this.options.name}. Please ensure that the ${pkgName} Share parameters have been injected`);
|
|
2099
2096
|
// Retrieve from cache
|
|
2100
|
-
const registeredShared = getRegisteredShare(this.
|
|
2097
|
+
const registeredShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
|
|
2101
2098
|
const addUseIn = (shared)=>{
|
|
2102
2099
|
if (!shared.useIn) {
|
|
2103
2100
|
shared.useIn = [];
|
|
@@ -2121,7 +2118,7 @@ class FederationHost {
|
|
|
2121
2118
|
shareInfoRes.lib = factory;
|
|
2122
2119
|
shareInfoRes.loaded = true;
|
|
2123
2120
|
addUseIn(shareInfoRes);
|
|
2124
|
-
const gShared = getRegisteredShare(this.
|
|
2121
|
+
const gShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
|
|
2125
2122
|
if (gShared) {
|
|
2126
2123
|
gShared.lib = factory;
|
|
2127
2124
|
gShared.loaded = true;
|
|
@@ -2147,8 +2144,7 @@ class FederationHost {
|
|
|
2147
2144
|
shareInfoRes.lib = factory;
|
|
2148
2145
|
shareInfoRes.loaded = true;
|
|
2149
2146
|
addUseIn(shareInfoRes);
|
|
2150
|
-
|
|
2151
|
-
const gShared = getRegisteredShare(this.options.name, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
|
|
2147
|
+
const gShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfoRes, this.hooks.lifecycle.resolveShare);
|
|
2152
2148
|
if (gShared) {
|
|
2153
2149
|
gShared.lib = factory;
|
|
2154
2150
|
gShared.loaded = true;
|
|
@@ -2174,7 +2170,7 @@ class FederationHost {
|
|
|
2174
2170
|
loadShareSync(pkgName) {
|
|
2175
2171
|
var _this_options_shared;
|
|
2176
2172
|
const shareInfo = (_this_options_shared = this.options.shared) == null ? void 0 : _this_options_shared[pkgName];
|
|
2177
|
-
const registeredShared = getRegisteredShare(this.
|
|
2173
|
+
const registeredShared = getRegisteredShare(this.shareScopeMap, pkgName, shareInfo, this.hooks.lifecycle.resolveShare);
|
|
2178
2174
|
if (registeredShared && typeof registeredShared.lib === 'function') {
|
|
2179
2175
|
addUniqueItem(registeredShared.useIn, this.options.name);
|
|
2180
2176
|
if (!registeredShared.loaded) {
|
|
@@ -2254,7 +2250,8 @@ class FederationHost {
|
|
|
2254
2250
|
remoteInfo,
|
|
2255
2251
|
shared: this.options.shared || {},
|
|
2256
2252
|
plugins: this.options.plugins,
|
|
2257
|
-
loaderHook: this.loaderHook
|
|
2253
|
+
loaderHook: this.loaderHook,
|
|
2254
|
+
shareScopeMap: this.shareScopeMap
|
|
2258
2255
|
};
|
|
2259
2256
|
if (!module) {
|
|
2260
2257
|
module = new Module(moduleOptions);
|
|
@@ -2335,12 +2332,8 @@ class FederationHost {
|
|
|
2335
2332
|
* If the share scope does not exist, it creates one.
|
|
2336
2333
|
*/ // eslint-disable-next-line @typescript-eslint/member-ordering
|
|
2337
2334
|
initializeSharing(shareScopeName = DEFAULT_SCOPE, strategy) {
|
|
2338
|
-
const
|
|
2335
|
+
const shareScope = this.shareScopeMap;
|
|
2339
2336
|
const hostName = this.options.name;
|
|
2340
|
-
if (!globalShareScope[hostName]) {
|
|
2341
|
-
globalShareScope[hostName] = {};
|
|
2342
|
-
}
|
|
2343
|
-
const shareScope = globalShareScope[hostName];
|
|
2344
2337
|
// Creates a new share scope if necessary
|
|
2345
2338
|
if (!shareScope[shareScopeName]) {
|
|
2346
2339
|
shareScope[shareScopeName] = {};
|
|
@@ -2437,8 +2430,7 @@ class FederationHost {
|
|
|
2437
2430
|
const sharedKeys = Object.keys(formatShareOptions);
|
|
2438
2431
|
sharedKeys.forEach((sharedKey)=>{
|
|
2439
2432
|
const sharedVal = formatShareOptions[sharedKey];
|
|
2440
|
-
|
|
2441
|
-
const registeredShared = getRegisteredShare(userOptions.name, sharedKey, sharedVal, this.hooks.lifecycle.resolveShare);
|
|
2433
|
+
const registeredShared = getRegisteredShare(this.shareScopeMap, sharedKey, sharedVal, this.hooks.lifecycle.resolveShare);
|
|
2442
2434
|
if (!registeredShared && sharedVal && sharedVal.lib) {
|
|
2443
2435
|
this.setShared({
|
|
2444
2436
|
pkgName: sharedKey,
|
|
@@ -2529,13 +2521,13 @@ class FederationHost {
|
|
|
2529
2521
|
errorLoadRemote: new AsyncHook('errorLoadRemote'),
|
|
2530
2522
|
beforeLoadShare: new AsyncWaterfallHook('beforeLoadShare'),
|
|
2531
2523
|
loadShare: new AsyncHook(),
|
|
2532
|
-
resolveShare: new
|
|
2524
|
+
resolveShare: new SyncWaterfallHook('resolveShare'),
|
|
2533
2525
|
beforePreloadRemote: new AsyncHook(),
|
|
2534
2526
|
generatePreloadAssets: new AsyncHook('generatePreloadAssets'),
|
|
2535
2527
|
afterPreloadRemote: new AsyncHook()
|
|
2536
2528
|
});
|
|
2537
2529
|
this.releaseNumber = `0`;
|
|
2538
|
-
this.version = `0.0.0-feat-node-support-
|
|
2530
|
+
this.version = `0.0.0-feat-node-support-1703050615268`;
|
|
2539
2531
|
this.moduleCache = new Map();
|
|
2540
2532
|
this.loaderHook = new PluginSystem({
|
|
2541
2533
|
// FIXME: may not be suitable
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@module-federation/runtime",
|
|
3
|
-
"version": "0.0.0-feat-node-support-
|
|
3
|
+
"version": "0.0.0-feat-node-support-1703050615268",
|
|
4
4
|
"author": "zhouxiao <codingzx@gmail.com>",
|
|
5
5
|
"main": "./index.cjs.js",
|
|
6
6
|
"module": "./index.esm.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@module-federation/sdk": "0.0.0-feat-node-support-
|
|
37
|
+
"@module-federation/sdk": "0.0.0-feat-node-support-1703050615268",
|
|
38
38
|
"semver": "7.5.4"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {}
|
package/share.cjs.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
function getBuilderId() {
|
|
4
|
-
//@ts-ignore
|
|
5
4
|
return typeof FEDERATION_BUILD_IDENTIFIER !== 'undefined' ? FEDERATION_BUILD_IDENTIFIER : '';
|
|
6
5
|
}
|
|
7
6
|
function isDebugMode() {
|
|
@@ -165,7 +164,7 @@ function getGlobalFederationConstructor() {
|
|
|
165
164
|
function setGlobalFederationConstructor(FederationConstructor) {
|
|
166
165
|
if (isDebugMode()) {
|
|
167
166
|
Global.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = FederationConstructor;
|
|
168
|
-
Global.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = '0.0.0-feat-node-support-
|
|
167
|
+
Global.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = '0.0.0-feat-node-support-1703050615268';
|
|
169
168
|
}
|
|
170
169
|
}
|
|
171
170
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
@@ -708,9 +707,7 @@ function getFindShareFunction(strategy) {
|
|
|
708
707
|
}
|
|
709
708
|
// Details about shared resources
|
|
710
709
|
// TODO: Implement strictVersion for alignment with module federation.
|
|
711
|
-
function getRegisteredShare(
|
|
712
|
-
const globalShares = Global.__FEDERATION__.__SHARE__;
|
|
713
|
-
const localShareScopeMap = globalShares[instanceName];
|
|
710
|
+
function getRegisteredShare(localShareScopeMap, pkgName, shareInfo, resolveShare) {
|
|
714
711
|
if (!localShareScopeMap) {
|
|
715
712
|
return;
|
|
716
713
|
}
|
|
@@ -749,7 +746,7 @@ function getRegisteredShare(instanceName, pkgName, shareInfo, resolveShareHook)
|
|
|
749
746
|
GlobalFederation: Global.__FEDERATION__,
|
|
750
747
|
resolver: defaultResolver
|
|
751
748
|
};
|
|
752
|
-
const resolveShared =
|
|
749
|
+
const resolveShared = resolveShare.emit(params) || params;
|
|
753
750
|
return resolveShared.resolver();
|
|
754
751
|
}
|
|
755
752
|
}
|
package/share.esm.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
function getBuilderId() {
|
|
2
|
-
//@ts-ignore
|
|
3
2
|
return typeof FEDERATION_BUILD_IDENTIFIER !== 'undefined' ? FEDERATION_BUILD_IDENTIFIER : '';
|
|
4
3
|
}
|
|
5
4
|
function isDebugMode() {
|
|
@@ -163,7 +162,7 @@ function getGlobalFederationConstructor() {
|
|
|
163
162
|
function setGlobalFederationConstructor(FederationConstructor) {
|
|
164
163
|
if (isDebugMode()) {
|
|
165
164
|
Global.__FEDERATION__.__DEBUG_CONSTRUCTOR__ = FederationConstructor;
|
|
166
|
-
Global.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = '0.0.0-feat-node-support-
|
|
165
|
+
Global.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__ = '0.0.0-feat-node-support-1703050615268';
|
|
167
166
|
}
|
|
168
167
|
}
|
|
169
168
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
@@ -706,9 +705,7 @@ function getFindShareFunction(strategy) {
|
|
|
706
705
|
}
|
|
707
706
|
// Details about shared resources
|
|
708
707
|
// TODO: Implement strictVersion for alignment with module federation.
|
|
709
|
-
function getRegisteredShare(
|
|
710
|
-
const globalShares = Global.__FEDERATION__.__SHARE__;
|
|
711
|
-
const localShareScopeMap = globalShares[instanceName];
|
|
708
|
+
function getRegisteredShare(localShareScopeMap, pkgName, shareInfo, resolveShare) {
|
|
712
709
|
if (!localShareScopeMap) {
|
|
713
710
|
return;
|
|
714
711
|
}
|
|
@@ -747,7 +744,7 @@ function getRegisteredShare(instanceName, pkgName, shareInfo, resolveShareHook)
|
|
|
747
744
|
GlobalFederation: Global.__FEDERATION__,
|
|
748
745
|
resolver: defaultResolver
|
|
749
746
|
};
|
|
750
|
-
const resolveShared =
|
|
747
|
+
const resolveShared = resolveShare.emit(params) || params;
|
|
751
748
|
return resolveShared.resolver();
|
|
752
749
|
}
|
|
753
750
|
}
|
package/src/core.d.ts
CHANGED
|
@@ -61,14 +61,14 @@ export declare class FederationHost {
|
|
|
61
61
|
origin: FederationHost;
|
|
62
62
|
}>;
|
|
63
63
|
loadShare: AsyncHook<[FederationHost, string, ShareInfos], false | void | Promise<false | void>>;
|
|
64
|
-
resolveShare:
|
|
64
|
+
resolveShare: SyncWaterfallHook<{
|
|
65
65
|
shareScopeMap: ShareScopeMap;
|
|
66
66
|
scope: string;
|
|
67
67
|
pkgName: string;
|
|
68
68
|
version: string;
|
|
69
69
|
GlobalFederation: Federation;
|
|
70
|
-
resolver: () => Shared;
|
|
71
|
-
}
|
|
70
|
+
resolver: () => Shared | undefined;
|
|
71
|
+
}>;
|
|
72
72
|
beforePreloadRemote: AsyncHook<{
|
|
73
73
|
preloadOps: Array<PreloadRemoteArgs>;
|
|
74
74
|
options: Options;
|
package/src/module/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FederationHost } from '../core';
|
|
2
|
-
import { RemoteEntryExports, Options, Remote, ShareInfos, RemoteInfo } from '../type';
|
|
2
|
+
import { RemoteEntryExports, Options, Remote, ShareInfos, RemoteInfo, ShareScopeMap } from '../type';
|
|
3
3
|
export type ModuleOptions = ConstructorParameters<typeof Module>[0];
|
|
4
4
|
type HostInfo = Remote;
|
|
5
5
|
declare class Module {
|
|
@@ -10,12 +10,14 @@ declare class Module {
|
|
|
10
10
|
remoteEntryExports?: RemoteEntryExports;
|
|
11
11
|
lib: RemoteEntryExports | undefined;
|
|
12
12
|
loaderHook: FederationHost['loaderHook'];
|
|
13
|
-
|
|
13
|
+
shareScopeMap: ShareScopeMap;
|
|
14
|
+
constructor({ hostInfo, remoteInfo, shared, loaderHook, shareScopeMap, }: {
|
|
14
15
|
hostInfo: HostInfo;
|
|
15
16
|
remoteInfo: RemoteInfo;
|
|
16
17
|
shared: ShareInfos;
|
|
17
18
|
plugins: Options['plugins'];
|
|
18
19
|
loaderHook: FederationHost['loaderHook'];
|
|
20
|
+
shareScopeMap: ShareScopeMap;
|
|
19
21
|
});
|
|
20
22
|
getEntry(): Promise<RemoteEntryExports>;
|
|
21
23
|
get(expose: string, options?: {
|
package/src/utils/share.d.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Federation } from '../global';
|
|
2
|
+
import { GlobalShareScopeMap, Shared, ShareArgs, ShareInfos, ShareScopeMap } from '../type';
|
|
3
|
+
import { SyncWaterfallHook } from './hooks';
|
|
2
4
|
export declare function formatShare(shareArgs: ShareArgs, from: string): Shared;
|
|
3
5
|
export declare function formatShareConfigs(shareArgs: {
|
|
4
6
|
[pkgName: string]: ShareArgs;
|
|
5
7
|
}, from: string): ShareInfos;
|
|
6
|
-
export declare function getRegisteredShare(
|
|
8
|
+
export declare function getRegisteredShare(localShareScopeMap: ShareScopeMap, pkgName: string, shareInfo: ShareInfos[keyof ShareInfos], resolveShare: SyncWaterfallHook<{
|
|
9
|
+
shareScopeMap: ShareScopeMap;
|
|
10
|
+
scope: string;
|
|
11
|
+
pkgName: string;
|
|
12
|
+
version: string;
|
|
13
|
+
GlobalFederation: Federation;
|
|
14
|
+
resolver: () => Shared | undefined;
|
|
15
|
+
}>): Shared | void;
|
|
7
16
|
export declare function getGlobalShareScope(): GlobalShareScopeMap;
|