@module-federation/data-prefetch 0.0.0-fix-lazy-comile-20250925082726
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/LICENSE +21 -0
- package/README.md +3 -0
- package/dist/LICENSE +21 -0
- package/dist/babel.cjs.cjs +46 -0
- package/dist/babel.cjs.cjs.map +1 -0
- package/dist/babel.cjs.d.ts +2 -0
- package/dist/babel.d.ts +2 -0
- package/dist/babel.esm.js +44 -0
- package/dist/babel.esm.js.map +1 -0
- package/dist/cli.cjs.cjs +154 -0
- package/dist/cli.cjs.cjs.map +1 -0
- package/dist/cli.cjs.d.ts +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.esm.js +151 -0
- package/dist/cli.esm.js.map +1 -0
- package/dist/constant.cjs.cjs +6 -0
- package/dist/constant.cjs.cjs.map +1 -0
- package/dist/constant.esm.js +4 -0
- package/dist/constant.esm.js.map +1 -0
- package/dist/index.cjs.cjs +10 -0
- package/dist/index.cjs.cjs.map +1 -0
- package/dist/index.cjs.d.ts +1 -0
- package/dist/index.cjs2.cjs +8 -0
- package/dist/index.cjs2.cjs.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +3 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.esm2.js +6 -0
- package/dist/index.esm2.js.map +1 -0
- package/dist/plugin.cjs.cjs +155 -0
- package/dist/plugin.cjs.cjs.map +1 -0
- package/dist/plugin.cjs.d.ts +2 -0
- package/dist/plugin.d.ts +2 -0
- package/dist/plugin.esm.js +150 -0
- package/dist/plugin.esm.js.map +1 -0
- package/dist/prefetch.cjs.cjs +194 -0
- package/dist/prefetch.cjs.cjs.map +1 -0
- package/dist/prefetch.esm.js +191 -0
- package/dist/prefetch.esm.js.map +1 -0
- package/dist/react.cjs.cjs +75 -0
- package/dist/react.cjs.cjs.map +1 -0
- package/dist/react.cjs.d.ts +1 -0
- package/dist/react.d.ts +1 -0
- package/dist/react.esm.js +73 -0
- package/dist/react.esm.js.map +1 -0
- package/dist/runtime-utils.cjs.cjs +28 -0
- package/dist/runtime-utils.cjs.cjs.map +1 -0
- package/dist/runtime-utils.esm.js +23 -0
- package/dist/runtime-utils.esm.js.map +1 -0
- package/dist/src/cli/babel.d.ts +37 -0
- package/dist/src/cli/index.d.ts +16 -0
- package/dist/src/common/constant.d.ts +1 -0
- package/dist/src/common/index.d.ts +1 -0
- package/dist/src/common/node-utils.d.ts +2 -0
- package/dist/src/common/runtime-utils.d.ts +5 -0
- package/dist/src/constant.d.ts +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/logger/index.d.ts +2 -0
- package/dist/src/plugin.d.ts +3 -0
- package/dist/src/prefetch.d.ts +42 -0
- package/dist/src/react/hooks.d.ts +11 -0
- package/dist/src/react/index.d.ts +1 -0
- package/dist/src/react/utils.d.ts +1 -0
- package/dist/src/universal/index.d.ts +2 -0
- package/dist/universal.cjs.cjs +28 -0
- package/dist/universal.cjs.cjs.map +1 -0
- package/dist/universal.cjs.d.ts +1 -0
- package/dist/universal.d.ts +1 -0
- package/dist/universal.esm.js +26 -0
- package/dist/universal.esm.js.map +1 -0
- package/package.json +98 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var prefetch = require('./prefetch.cjs.cjs');
|
|
6
|
+
var sdk = require('@module-federation/sdk');
|
|
7
|
+
var runtimeUtils = require('./runtime-utils.cjs.cjs');
|
|
8
|
+
var index = require('./index.cjs2.cjs');
|
|
9
|
+
var constant = require('./constant.cjs.cjs');
|
|
10
|
+
|
|
11
|
+
const loadingArray = [];
|
|
12
|
+
let sharedFlag = constant.SHARED_STRATEGY;
|
|
13
|
+
const prefetchPlugin = ()=>({
|
|
14
|
+
name: 'data-prefetch-runtime-plugin',
|
|
15
|
+
initContainer (options) {
|
|
16
|
+
const { remoteSnapshot, remoteInfo, id, origin } = options;
|
|
17
|
+
const snapshot = remoteSnapshot;
|
|
18
|
+
const { name } = remoteInfo;
|
|
19
|
+
const prefetchOptions = {
|
|
20
|
+
name,
|
|
21
|
+
remote: remoteInfo,
|
|
22
|
+
origin,
|
|
23
|
+
remoteSnapshot: snapshot
|
|
24
|
+
};
|
|
25
|
+
const signal = runtimeUtils.getSignalFromManifest(snapshot);
|
|
26
|
+
if (!signal) {
|
|
27
|
+
return options;
|
|
28
|
+
}
|
|
29
|
+
if (sharedFlag !== constant.SHARED_STRATEGY) {
|
|
30
|
+
throw new Error(`[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'`);
|
|
31
|
+
}
|
|
32
|
+
const instance = prefetch.MFDataPrefetch.getInstance(name) || new prefetch.MFDataPrefetch(prefetchOptions);
|
|
33
|
+
let prefetchUrl;
|
|
34
|
+
if (snapshot.prefetchEntry) {
|
|
35
|
+
prefetchUrl = sdk.getResourceUrl(snapshot, snapshot.prefetchEntry);
|
|
36
|
+
}
|
|
37
|
+
const exist = loadingArray.find((loading)=>loading.id === id);
|
|
38
|
+
if (exist) {
|
|
39
|
+
return options;
|
|
40
|
+
}
|
|
41
|
+
const promise = instance.loadEntry(prefetchUrl).then(()=>prefetch.__awaiter(this, void 0, void 0, function*() {
|
|
42
|
+
const projectExports = instance.getProjectExports();
|
|
43
|
+
if (projectExports instanceof Promise) {
|
|
44
|
+
yield projectExports;
|
|
45
|
+
}
|
|
46
|
+
return Promise.resolve().then(()=>{
|
|
47
|
+
const exports = instance.getExposeExports(id);
|
|
48
|
+
index.logger.info(`1. Start Prefetch initContainer: ${id} - ${performance.now()}`);
|
|
49
|
+
const result = Object.keys(exports).map((k)=>{
|
|
50
|
+
const value = instance.prefetch({
|
|
51
|
+
id,
|
|
52
|
+
functionId: k
|
|
53
|
+
});
|
|
54
|
+
const functionId = k;
|
|
55
|
+
return {
|
|
56
|
+
value,
|
|
57
|
+
functionId
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
return result;
|
|
61
|
+
});
|
|
62
|
+
}));
|
|
63
|
+
loadingArray.push({
|
|
64
|
+
id,
|
|
65
|
+
promise
|
|
66
|
+
});
|
|
67
|
+
return options;
|
|
68
|
+
},
|
|
69
|
+
afterResolve (options) {
|
|
70
|
+
const { remoteSnapshot, remoteInfo, id, origin } = options;
|
|
71
|
+
const snapshot = remoteSnapshot;
|
|
72
|
+
const { name } = remoteInfo;
|
|
73
|
+
const prefetchOptions = {
|
|
74
|
+
name,
|
|
75
|
+
remote: remoteInfo,
|
|
76
|
+
origin,
|
|
77
|
+
remoteSnapshot: snapshot
|
|
78
|
+
};
|
|
79
|
+
const signal = runtimeUtils.getSignalFromManifest(snapshot);
|
|
80
|
+
if (!signal) {
|
|
81
|
+
return options;
|
|
82
|
+
}
|
|
83
|
+
const inited = loadingArray.some((info)=>info.id === id);
|
|
84
|
+
if (!inited) {
|
|
85
|
+
return options;
|
|
86
|
+
}
|
|
87
|
+
if (sharedFlag !== constant.SHARED_STRATEGY) {
|
|
88
|
+
throw new Error(`[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'`);
|
|
89
|
+
}
|
|
90
|
+
const instance = prefetch.MFDataPrefetch.getInstance(name) || new prefetch.MFDataPrefetch(prefetchOptions);
|
|
91
|
+
let prefetchUrl;
|
|
92
|
+
if (snapshot.prefetchEntry) {
|
|
93
|
+
prefetchUrl = sdk.getResourceUrl(snapshot, snapshot.prefetchEntry);
|
|
94
|
+
}
|
|
95
|
+
const index$1 = loadingArray.findIndex((loading)=>loading.id === id);
|
|
96
|
+
if (index$1 !== -1) {
|
|
97
|
+
loadingArray.splice(index$1, 1);
|
|
98
|
+
}
|
|
99
|
+
const promise = instance.loadEntry(prefetchUrl).then(()=>prefetch.__awaiter(this, void 0, void 0, function*() {
|
|
100
|
+
const projectExports = instance.getProjectExports();
|
|
101
|
+
if (projectExports instanceof Promise) {
|
|
102
|
+
yield projectExports;
|
|
103
|
+
}
|
|
104
|
+
return Promise.resolve().then(()=>{
|
|
105
|
+
const exports = instance.getExposeExports(id);
|
|
106
|
+
index.logger.info(`1. Start Prefetch afterResolve: ${id} - ${performance.now()}`);
|
|
107
|
+
const result = Object.keys(exports).map((k)=>{
|
|
108
|
+
const value = instance.prefetch({
|
|
109
|
+
id,
|
|
110
|
+
functionId: k
|
|
111
|
+
});
|
|
112
|
+
const functionId = k;
|
|
113
|
+
return {
|
|
114
|
+
value,
|
|
115
|
+
functionId
|
|
116
|
+
};
|
|
117
|
+
});
|
|
118
|
+
return result;
|
|
119
|
+
});
|
|
120
|
+
}));
|
|
121
|
+
loadingArray.push({
|
|
122
|
+
id,
|
|
123
|
+
promise
|
|
124
|
+
});
|
|
125
|
+
return options;
|
|
126
|
+
},
|
|
127
|
+
onLoad (options) {
|
|
128
|
+
return prefetch.__awaiter(this, void 0, void 0, function*() {
|
|
129
|
+
var _a;
|
|
130
|
+
const { remote, id } = options;
|
|
131
|
+
const { name } = remote;
|
|
132
|
+
const promise = (_a = loadingArray.find((loading)=>loading.id === id)) === null || _a === void 0 ? void 0 : _a.promise;
|
|
133
|
+
if (promise) {
|
|
134
|
+
const prefetch$1 = yield promise;
|
|
135
|
+
const prefetchValue = prefetch$1.map((result)=>result.value);
|
|
136
|
+
yield Promise.all(prefetchValue);
|
|
137
|
+
const instance = prefetch.MFDataPrefetch.getInstance(name);
|
|
138
|
+
prefetch$1.forEach((result)=>{
|
|
139
|
+
const { value, functionId } = result;
|
|
140
|
+
instance.memorize(id + functionId, value);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
return options;
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
beforeLoadShare (options) {
|
|
147
|
+
const shareInfo = options.shareInfo;
|
|
148
|
+
sharedFlag = (shareInfo === null || shareInfo === void 0 ? void 0 : shareInfo.strategy) || sharedFlag;
|
|
149
|
+
return options;
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
exports.default = prefetchPlugin;
|
|
154
|
+
exports.prefetchPlugin = prefetchPlugin;
|
|
155
|
+
//# sourceMappingURL=plugin.cjs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.cjs.cjs","sources":["../src/plugin.ts"],"sourcesContent":["import { __awaiter } from \"tslib\";\nimport { getResourceUrl } from '@module-federation/sdk';\nimport { getSignalFromManifest } from './common/runtime-utils';\nimport { MFDataPrefetch } from './prefetch';\nimport logger from './logger';\nimport { SHARED_STRATEGY } from './constant';\nconst loadingArray = [];\nlet sharedFlag = SHARED_STRATEGY;\nexport const prefetchPlugin = () => ({\n name: 'data-prefetch-runtime-plugin',\n initContainer(options) {\n const { remoteSnapshot, remoteInfo, id, origin } = options;\n const snapshot = remoteSnapshot;\n const { name } = remoteInfo;\n const prefetchOptions = {\n name,\n remote: remoteInfo,\n origin,\n remoteSnapshot: snapshot,\n };\n const signal = getSignalFromManifest(snapshot);\n if (!signal) {\n return options;\n }\n if (sharedFlag !== SHARED_STRATEGY) {\n throw new Error(`[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'`);\n }\n const instance = MFDataPrefetch.getInstance(name) || new MFDataPrefetch(prefetchOptions);\n let prefetchUrl;\n if (snapshot.prefetchEntry) {\n prefetchUrl = getResourceUrl(snapshot, snapshot.prefetchEntry);\n }\n const exist = loadingArray.find((loading) => loading.id === id);\n if (exist) {\n return options;\n }\n const promise = instance.loadEntry(prefetchUrl).then(() => __awaiter(this, void 0, void 0, function* () {\n const projectExports = instance.getProjectExports();\n if (projectExports instanceof Promise) {\n yield projectExports;\n }\n return Promise.resolve().then(() => {\n const exports = instance.getExposeExports(id);\n logger.info(`1. Start Prefetch initContainer: ${id} - ${performance.now()}`);\n const result = Object.keys(exports).map((k) => {\n const value = instance.prefetch({\n id,\n functionId: k,\n });\n const functionId = k;\n return {\n value,\n functionId,\n };\n });\n return result;\n });\n }));\n loadingArray.push({\n id,\n promise,\n });\n return options;\n },\n afterResolve(options) {\n const { remoteSnapshot, remoteInfo, id, origin } = options;\n const snapshot = remoteSnapshot;\n const { name } = remoteInfo;\n const prefetchOptions = {\n name,\n remote: remoteInfo,\n origin,\n remoteSnapshot: snapshot,\n };\n const signal = getSignalFromManifest(snapshot);\n if (!signal) {\n return options;\n }\n const inited = loadingArray.some((info) => info.id === id);\n if (!inited) {\n return options;\n }\n if (sharedFlag !== SHARED_STRATEGY) {\n throw new Error(`[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'`);\n }\n const instance = MFDataPrefetch.getInstance(name) || new MFDataPrefetch(prefetchOptions);\n let prefetchUrl;\n if (snapshot.prefetchEntry) {\n prefetchUrl = getResourceUrl(snapshot, snapshot.prefetchEntry);\n }\n const index = loadingArray.findIndex((loading) => loading.id === id);\n if (index !== -1) {\n loadingArray.splice(index, 1);\n }\n const promise = instance.loadEntry(prefetchUrl).then(() => __awaiter(this, void 0, void 0, function* () {\n const projectExports = instance.getProjectExports();\n if (projectExports instanceof Promise) {\n yield projectExports;\n }\n return Promise.resolve().then(() => {\n const exports = instance.getExposeExports(id);\n logger.info(`1. Start Prefetch afterResolve: ${id} - ${performance.now()}`);\n const result = Object.keys(exports).map((k) => {\n const value = instance.prefetch({\n id,\n functionId: k,\n });\n const functionId = k;\n return {\n value,\n functionId,\n };\n });\n return result;\n });\n }));\n loadingArray.push({\n id,\n promise,\n });\n return options;\n },\n onLoad(options) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n const { remote, id } = options;\n const { name } = remote;\n const promise = (_a = loadingArray.find((loading) => loading.id === id)) === null || _a === void 0 ? void 0 : _a.promise;\n if (promise) {\n const prefetch = yield promise;\n const prefetchValue = prefetch.map((result) => result.value);\n yield Promise.all(prefetchValue);\n const instance = MFDataPrefetch.getInstance(name);\n prefetch.forEach((result) => {\n const { value, functionId } = result;\n instance.memorize(id + functionId, value);\n });\n }\n return options;\n });\n },\n beforeLoadShare(options) {\n const shareInfo = options.shareInfo;\n sharedFlag = (shareInfo === null || shareInfo === void 0 ? void 0 : shareInfo.strategy) || sharedFlag;\n return options;\n },\n});\nexport default prefetchPlugin;\n"],"names":["loadingArray","sharedFlag","SHARED_STRATEGY","prefetchPlugin","name","initContainer","options","remoteSnapshot","remoteInfo","id","origin","snapshot","prefetchOptions","remote","signal","getSignalFromManifest","Error","instance","MFDataPrefetch","getInstance","prefetchUrl","prefetchEntry","getResourceUrl","exist","find","loading","promise","loadEntry","then","__awaiter","projectExports","getProjectExports","Promise","resolve","exports","getExposeExports","logger","info","performance","now","result","Object","keys","map","k","value","prefetch","functionId","push","afterResolve","inited","some","index","findIndex","splice","onLoad","_a","prefetchValue","all","forEach","memorize","beforeLoadShare","shareInfo","strategy"],"mappings":"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"}
|
package/dist/plugin.d.ts
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { _ as __awaiter, M as MFDataPrefetch } from './prefetch.esm.js';
|
|
2
|
+
import { getResourceUrl } from '@module-federation/sdk';
|
|
3
|
+
import { a as getSignalFromManifest } from './runtime-utils.esm.js';
|
|
4
|
+
import { l as logger } from './index.esm2.js';
|
|
5
|
+
import { S as SHARED_STRATEGY } from './constant.esm.js';
|
|
6
|
+
|
|
7
|
+
const loadingArray = [];
|
|
8
|
+
let sharedFlag = SHARED_STRATEGY;
|
|
9
|
+
const prefetchPlugin = ()=>({
|
|
10
|
+
name: 'data-prefetch-runtime-plugin',
|
|
11
|
+
initContainer (options) {
|
|
12
|
+
const { remoteSnapshot, remoteInfo, id, origin } = options;
|
|
13
|
+
const snapshot = remoteSnapshot;
|
|
14
|
+
const { name } = remoteInfo;
|
|
15
|
+
const prefetchOptions = {
|
|
16
|
+
name,
|
|
17
|
+
remote: remoteInfo,
|
|
18
|
+
origin,
|
|
19
|
+
remoteSnapshot: snapshot
|
|
20
|
+
};
|
|
21
|
+
const signal = getSignalFromManifest(snapshot);
|
|
22
|
+
if (!signal) {
|
|
23
|
+
return options;
|
|
24
|
+
}
|
|
25
|
+
if (sharedFlag !== SHARED_STRATEGY) {
|
|
26
|
+
throw new Error(`[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'`);
|
|
27
|
+
}
|
|
28
|
+
const instance = MFDataPrefetch.getInstance(name) || new MFDataPrefetch(prefetchOptions);
|
|
29
|
+
let prefetchUrl;
|
|
30
|
+
if (snapshot.prefetchEntry) {
|
|
31
|
+
prefetchUrl = getResourceUrl(snapshot, snapshot.prefetchEntry);
|
|
32
|
+
}
|
|
33
|
+
const exist = loadingArray.find((loading)=>loading.id === id);
|
|
34
|
+
if (exist) {
|
|
35
|
+
return options;
|
|
36
|
+
}
|
|
37
|
+
const promise = instance.loadEntry(prefetchUrl).then(()=>__awaiter(this, void 0, void 0, function*() {
|
|
38
|
+
const projectExports = instance.getProjectExports();
|
|
39
|
+
if (projectExports instanceof Promise) {
|
|
40
|
+
yield projectExports;
|
|
41
|
+
}
|
|
42
|
+
return Promise.resolve().then(()=>{
|
|
43
|
+
const exports = instance.getExposeExports(id);
|
|
44
|
+
logger.info(`1. Start Prefetch initContainer: ${id} - ${performance.now()}`);
|
|
45
|
+
const result = Object.keys(exports).map((k)=>{
|
|
46
|
+
const value = instance.prefetch({
|
|
47
|
+
id,
|
|
48
|
+
functionId: k
|
|
49
|
+
});
|
|
50
|
+
const functionId = k;
|
|
51
|
+
return {
|
|
52
|
+
value,
|
|
53
|
+
functionId
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
return result;
|
|
57
|
+
});
|
|
58
|
+
}));
|
|
59
|
+
loadingArray.push({
|
|
60
|
+
id,
|
|
61
|
+
promise
|
|
62
|
+
});
|
|
63
|
+
return options;
|
|
64
|
+
},
|
|
65
|
+
afterResolve (options) {
|
|
66
|
+
const { remoteSnapshot, remoteInfo, id, origin } = options;
|
|
67
|
+
const snapshot = remoteSnapshot;
|
|
68
|
+
const { name } = remoteInfo;
|
|
69
|
+
const prefetchOptions = {
|
|
70
|
+
name,
|
|
71
|
+
remote: remoteInfo,
|
|
72
|
+
origin,
|
|
73
|
+
remoteSnapshot: snapshot
|
|
74
|
+
};
|
|
75
|
+
const signal = getSignalFromManifest(snapshot);
|
|
76
|
+
if (!signal) {
|
|
77
|
+
return options;
|
|
78
|
+
}
|
|
79
|
+
const inited = loadingArray.some((info)=>info.id === id);
|
|
80
|
+
if (!inited) {
|
|
81
|
+
return options;
|
|
82
|
+
}
|
|
83
|
+
if (sharedFlag !== SHARED_STRATEGY) {
|
|
84
|
+
throw new Error(`[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'`);
|
|
85
|
+
}
|
|
86
|
+
const instance = MFDataPrefetch.getInstance(name) || new MFDataPrefetch(prefetchOptions);
|
|
87
|
+
let prefetchUrl;
|
|
88
|
+
if (snapshot.prefetchEntry) {
|
|
89
|
+
prefetchUrl = getResourceUrl(snapshot, snapshot.prefetchEntry);
|
|
90
|
+
}
|
|
91
|
+
const index = loadingArray.findIndex((loading)=>loading.id === id);
|
|
92
|
+
if (index !== -1) {
|
|
93
|
+
loadingArray.splice(index, 1);
|
|
94
|
+
}
|
|
95
|
+
const promise = instance.loadEntry(prefetchUrl).then(()=>__awaiter(this, void 0, void 0, function*() {
|
|
96
|
+
const projectExports = instance.getProjectExports();
|
|
97
|
+
if (projectExports instanceof Promise) {
|
|
98
|
+
yield projectExports;
|
|
99
|
+
}
|
|
100
|
+
return Promise.resolve().then(()=>{
|
|
101
|
+
const exports = instance.getExposeExports(id);
|
|
102
|
+
logger.info(`1. Start Prefetch afterResolve: ${id} - ${performance.now()}`);
|
|
103
|
+
const result = Object.keys(exports).map((k)=>{
|
|
104
|
+
const value = instance.prefetch({
|
|
105
|
+
id,
|
|
106
|
+
functionId: k
|
|
107
|
+
});
|
|
108
|
+
const functionId = k;
|
|
109
|
+
return {
|
|
110
|
+
value,
|
|
111
|
+
functionId
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
return result;
|
|
115
|
+
});
|
|
116
|
+
}));
|
|
117
|
+
loadingArray.push({
|
|
118
|
+
id,
|
|
119
|
+
promise
|
|
120
|
+
});
|
|
121
|
+
return options;
|
|
122
|
+
},
|
|
123
|
+
onLoad (options) {
|
|
124
|
+
return __awaiter(this, void 0, void 0, function*() {
|
|
125
|
+
var _a;
|
|
126
|
+
const { remote, id } = options;
|
|
127
|
+
const { name } = remote;
|
|
128
|
+
const promise = (_a = loadingArray.find((loading)=>loading.id === id)) === null || _a === void 0 ? void 0 : _a.promise;
|
|
129
|
+
if (promise) {
|
|
130
|
+
const prefetch = yield promise;
|
|
131
|
+
const prefetchValue = prefetch.map((result)=>result.value);
|
|
132
|
+
yield Promise.all(prefetchValue);
|
|
133
|
+
const instance = MFDataPrefetch.getInstance(name);
|
|
134
|
+
prefetch.forEach((result)=>{
|
|
135
|
+
const { value, functionId } = result;
|
|
136
|
+
instance.memorize(id + functionId, value);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return options;
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
beforeLoadShare (options) {
|
|
143
|
+
const shareInfo = options.shareInfo;
|
|
144
|
+
sharedFlag = (shareInfo === null || shareInfo === void 0 ? void 0 : shareInfo.strategy) || sharedFlag;
|
|
145
|
+
return options;
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
export { prefetchPlugin as default, prefetchPlugin };
|
|
150
|
+
//# sourceMappingURL=plugin.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.esm.js","sources":["../src/plugin.ts"],"sourcesContent":["import { __awaiter } from \"tslib\";\nimport { getResourceUrl } from '@module-federation/sdk';\nimport { getSignalFromManifest } from './common/runtime-utils';\nimport { MFDataPrefetch } from './prefetch';\nimport logger from './logger';\nimport { SHARED_STRATEGY } from './constant';\nconst loadingArray = [];\nlet sharedFlag = SHARED_STRATEGY;\nexport const prefetchPlugin = () => ({\n name: 'data-prefetch-runtime-plugin',\n initContainer(options) {\n const { remoteSnapshot, remoteInfo, id, origin } = options;\n const snapshot = remoteSnapshot;\n const { name } = remoteInfo;\n const prefetchOptions = {\n name,\n remote: remoteInfo,\n origin,\n remoteSnapshot: snapshot,\n };\n const signal = getSignalFromManifest(snapshot);\n if (!signal) {\n return options;\n }\n if (sharedFlag !== SHARED_STRATEGY) {\n throw new Error(`[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'`);\n }\n const instance = MFDataPrefetch.getInstance(name) || new MFDataPrefetch(prefetchOptions);\n let prefetchUrl;\n if (snapshot.prefetchEntry) {\n prefetchUrl = getResourceUrl(snapshot, snapshot.prefetchEntry);\n }\n const exist = loadingArray.find((loading) => loading.id === id);\n if (exist) {\n return options;\n }\n const promise = instance.loadEntry(prefetchUrl).then(() => __awaiter(this, void 0, void 0, function* () {\n const projectExports = instance.getProjectExports();\n if (projectExports instanceof Promise) {\n yield projectExports;\n }\n return Promise.resolve().then(() => {\n const exports = instance.getExposeExports(id);\n logger.info(`1. Start Prefetch initContainer: ${id} - ${performance.now()}`);\n const result = Object.keys(exports).map((k) => {\n const value = instance.prefetch({\n id,\n functionId: k,\n });\n const functionId = k;\n return {\n value,\n functionId,\n };\n });\n return result;\n });\n }));\n loadingArray.push({\n id,\n promise,\n });\n return options;\n },\n afterResolve(options) {\n const { remoteSnapshot, remoteInfo, id, origin } = options;\n const snapshot = remoteSnapshot;\n const { name } = remoteInfo;\n const prefetchOptions = {\n name,\n remote: remoteInfo,\n origin,\n remoteSnapshot: snapshot,\n };\n const signal = getSignalFromManifest(snapshot);\n if (!signal) {\n return options;\n }\n const inited = loadingArray.some((info) => info.id === id);\n if (!inited) {\n return options;\n }\n if (sharedFlag !== SHARED_STRATEGY) {\n throw new Error(`[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'`);\n }\n const instance = MFDataPrefetch.getInstance(name) || new MFDataPrefetch(prefetchOptions);\n let prefetchUrl;\n if (snapshot.prefetchEntry) {\n prefetchUrl = getResourceUrl(snapshot, snapshot.prefetchEntry);\n }\n const index = loadingArray.findIndex((loading) => loading.id === id);\n if (index !== -1) {\n loadingArray.splice(index, 1);\n }\n const promise = instance.loadEntry(prefetchUrl).then(() => __awaiter(this, void 0, void 0, function* () {\n const projectExports = instance.getProjectExports();\n if (projectExports instanceof Promise) {\n yield projectExports;\n }\n return Promise.resolve().then(() => {\n const exports = instance.getExposeExports(id);\n logger.info(`1. Start Prefetch afterResolve: ${id} - ${performance.now()}`);\n const result = Object.keys(exports).map((k) => {\n const value = instance.prefetch({\n id,\n functionId: k,\n });\n const functionId = k;\n return {\n value,\n functionId,\n };\n });\n return result;\n });\n }));\n loadingArray.push({\n id,\n promise,\n });\n return options;\n },\n onLoad(options) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n const { remote, id } = options;\n const { name } = remote;\n const promise = (_a = loadingArray.find((loading) => loading.id === id)) === null || _a === void 0 ? void 0 : _a.promise;\n if (promise) {\n const prefetch = yield promise;\n const prefetchValue = prefetch.map((result) => result.value);\n yield Promise.all(prefetchValue);\n const instance = MFDataPrefetch.getInstance(name);\n prefetch.forEach((result) => {\n const { value, functionId } = result;\n instance.memorize(id + functionId, value);\n });\n }\n return options;\n });\n },\n beforeLoadShare(options) {\n const shareInfo = options.shareInfo;\n sharedFlag = (shareInfo === null || shareInfo === void 0 ? void 0 : shareInfo.strategy) || sharedFlag;\n return options;\n },\n});\nexport default prefetchPlugin;\n"],"names":["loadingArray","sharedFlag","SHARED_STRATEGY","prefetchPlugin","name","initContainer","options","remoteSnapshot","remoteInfo","id","origin","snapshot","prefetchOptions","remote","signal","getSignalFromManifest","Error","instance","MFDataPrefetch","getInstance","prefetchUrl","prefetchEntry","getResourceUrl","exist","find","loading","promise","loadEntry","then","__awaiter","projectExports","getProjectExports","Promise","resolve","exports","getExposeExports","logger","info","performance","now","result","Object","keys","map","k","value","prefetch","functionId","push","afterResolve","inited","some","index","findIndex","splice","onLoad","_a","prefetchValue","all","forEach","memorize","beforeLoadShare","shareInfo","strategy"],"mappings":"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"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var runtime = require('@module-federation/runtime');
|
|
4
|
+
var sdk = require('@module-federation/sdk');
|
|
5
|
+
var runtimeUtils = require('./runtime-utils.cjs.cjs');
|
|
6
|
+
|
|
7
|
+
/******************************************************************************
|
|
8
|
+
Copyright (c) Microsoft Corporation.
|
|
9
|
+
|
|
10
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
11
|
+
purpose with or without fee is hereby granted.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
14
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
15
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
16
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
17
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
18
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
19
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
20
|
+
***************************************************************************** */ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */ function _instanceof(left, right) {
|
|
21
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
22
|
+
return !!right[Symbol.hasInstance](left);
|
|
23
|
+
} else {
|
|
24
|
+
return left instanceof right;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
28
|
+
function adopt(value) {
|
|
29
|
+
return _instanceof(value, P) ? value : new P(function(resolve) {
|
|
30
|
+
resolve(value);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return new (P || (P = Promise))(function(resolve, reject) {
|
|
34
|
+
function fulfilled(value) {
|
|
35
|
+
try {
|
|
36
|
+
step(generator.next(value));
|
|
37
|
+
} catch (e) {
|
|
38
|
+
reject(e);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function rejected(value) {
|
|
42
|
+
try {
|
|
43
|
+
step(generator["throw"](value));
|
|
44
|
+
} catch (e) {
|
|
45
|
+
reject(e);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function step(result) {
|
|
49
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
50
|
+
}
|
|
51
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
typeof SuppressedError === "function" ? SuppressedError : function _SuppressedError(error, suppressed, message) {
|
|
55
|
+
var e = new Error(message);
|
|
56
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
var _a, _b;
|
|
60
|
+
var _c;
|
|
61
|
+
(_a = globalThis.__FEDERATION__) !== null && _a !== void 0 ? _a : globalThis.__FEDERATION__ = {};
|
|
62
|
+
(_b = (_c = globalThis.__FEDERATION__).__PREFETCH__) !== null && _b !== void 0 ? _b : _c.__PREFETCH__ = {
|
|
63
|
+
entryLoading: {},
|
|
64
|
+
instance: new Map(),
|
|
65
|
+
__PREFETCH_EXPORTS__: {}
|
|
66
|
+
};
|
|
67
|
+
class MFDataPrefetch {
|
|
68
|
+
get global() {
|
|
69
|
+
return globalThis.__FEDERATION__.__PREFETCH__;
|
|
70
|
+
}
|
|
71
|
+
static getInstance(id) {
|
|
72
|
+
return globalThis.__FEDERATION__.__PREFETCH__.instance.get(id);
|
|
73
|
+
}
|
|
74
|
+
loadEntry(entry) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function*() {
|
|
76
|
+
const { name, remoteSnapshot, remote, origin } = this._options;
|
|
77
|
+
if (entry) {
|
|
78
|
+
const { buildVersion, globalName } = remoteSnapshot;
|
|
79
|
+
const uniqueKey = globalName || `${name}:${buildVersion}`;
|
|
80
|
+
if (!this.global.entryLoading[uniqueKey]) {
|
|
81
|
+
this.global.entryLoading[uniqueKey] = sdk.loadScript(entry, {});
|
|
82
|
+
}
|
|
83
|
+
return this.global.entryLoading[uniqueKey];
|
|
84
|
+
} else {
|
|
85
|
+
const remoteInfo = runtime.getRemoteInfo(remote);
|
|
86
|
+
const module = origin.moduleCache.get(remoteInfo.name);
|
|
87
|
+
return runtime.getRemoteEntry({
|
|
88
|
+
origin: origin,
|
|
89
|
+
remoteInfo,
|
|
90
|
+
remoteEntryExports: module ? module.remoteEntryExports : undefined
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
getProjectExports() {
|
|
96
|
+
var _a;
|
|
97
|
+
if (Object.keys(this._exports).length > 0) {
|
|
98
|
+
return this._exports;
|
|
99
|
+
}
|
|
100
|
+
const { name } = this._options;
|
|
101
|
+
const exportsPromiseFn = (_a = globalThis.__FEDERATION__.__PREFETCH__.__PREFETCH_EXPORTS__) === null || _a === void 0 ? void 0 : _a[name];
|
|
102
|
+
const exportsPromise = typeof exportsPromiseFn === 'function' ? exportsPromiseFn() : exportsPromiseFn;
|
|
103
|
+
const resolve = exportsPromise.then((exports = {})=>{
|
|
104
|
+
const memory = {};
|
|
105
|
+
Object.keys(exports).forEach((key)=>{
|
|
106
|
+
memory[key] = {};
|
|
107
|
+
const exportVal = exports[key];
|
|
108
|
+
Object.keys(exportVal).reduce((memo, current)=>{
|
|
109
|
+
if (current.toLocaleLowerCase().endsWith('prefetch') || current.toLocaleLowerCase() === 'default') {
|
|
110
|
+
memo[current] = exportVal[current];
|
|
111
|
+
}
|
|
112
|
+
return memo;
|
|
113
|
+
}, memory[key]);
|
|
114
|
+
});
|
|
115
|
+
this.memorizeExports(memory);
|
|
116
|
+
});
|
|
117
|
+
return resolve;
|
|
118
|
+
}
|
|
119
|
+
memorizeExports(exports) {
|
|
120
|
+
this._exports = exports;
|
|
121
|
+
}
|
|
122
|
+
getExposeExports(id) {
|
|
123
|
+
const prefetchId = runtimeUtils.getPrefetchId(id);
|
|
124
|
+
const compatId = runtimeUtils.compatGetPrefetchId(id);
|
|
125
|
+
const prefetchExports = this._exports[prefetchId] || this._exports[compatId];
|
|
126
|
+
return prefetchExports || {};
|
|
127
|
+
}
|
|
128
|
+
prefetch(prefetchOptions) {
|
|
129
|
+
const { id, functionId = 'default', refetchParams } = prefetchOptions;
|
|
130
|
+
let prefetchResult;
|
|
131
|
+
const prefetchId = runtimeUtils.getPrefetchId(id);
|
|
132
|
+
const compatId = runtimeUtils.compatGetPrefetchId(id);
|
|
133
|
+
const memorizeId = id + functionId;
|
|
134
|
+
const memory = this.prefetchMemory.get(memorizeId);
|
|
135
|
+
if (!this.checkOutdate(prefetchOptions) && memory) {
|
|
136
|
+
return memory;
|
|
137
|
+
}
|
|
138
|
+
const prefetchExports = this._exports[prefetchId] || this._exports[compatId];
|
|
139
|
+
if (!prefetchExports) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const executePrefetch = prefetchExports[functionId];
|
|
143
|
+
if (typeof executePrefetch === 'function') {
|
|
144
|
+
if (refetchParams) {
|
|
145
|
+
prefetchResult = executePrefetch(refetchParams);
|
|
146
|
+
} else {
|
|
147
|
+
prefetchResult = executePrefetch();
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
throw new Error(`[Module Federation Data Prefetch]: No prefetch function called ${functionId} export in prefetch file`);
|
|
151
|
+
}
|
|
152
|
+
this.memorize(memorizeId, prefetchResult);
|
|
153
|
+
return prefetchResult;
|
|
154
|
+
}
|
|
155
|
+
memorize(id, value) {
|
|
156
|
+
this.prefetchMemory.set(id, value);
|
|
157
|
+
}
|
|
158
|
+
markOutdate(markOptions, isOutdate) {
|
|
159
|
+
const { id, functionId = 'default' } = markOptions;
|
|
160
|
+
if (!this.recordOutdate[id]) {
|
|
161
|
+
this.recordOutdate[id] = {};
|
|
162
|
+
}
|
|
163
|
+
this.recordOutdate[id][functionId] = isOutdate;
|
|
164
|
+
}
|
|
165
|
+
checkOutdate(outdateOptions) {
|
|
166
|
+
const { id, functionId = 'default', cacheStrategy } = outdateOptions;
|
|
167
|
+
if (typeof cacheStrategy === 'function') {
|
|
168
|
+
return cacheStrategy();
|
|
169
|
+
}
|
|
170
|
+
if (!this.recordOutdate[id]) {
|
|
171
|
+
this.recordOutdate[id] = {};
|
|
172
|
+
}
|
|
173
|
+
if (this.recordOutdate[id][functionId]) {
|
|
174
|
+
this.markOutdate({
|
|
175
|
+
id,
|
|
176
|
+
functionId
|
|
177
|
+
}, false);
|
|
178
|
+
return true;
|
|
179
|
+
} else {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
constructor(options){
|
|
184
|
+
this.prefetchMemory = new Map();
|
|
185
|
+
this.recordOutdate = {};
|
|
186
|
+
this._exports = {};
|
|
187
|
+
this._options = options;
|
|
188
|
+
this.global.instance.set(options.name, this);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
exports.MFDataPrefetch = MFDataPrefetch;
|
|
193
|
+
exports.__awaiter = __awaiter;
|
|
194
|
+
//# sourceMappingURL=prefetch.cjs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefetch.cjs.cjs","sources":["../src/prefetch.ts"],"sourcesContent":["var _a, _b;\nvar _c;\nimport { __awaiter } from \"tslib\";\nimport { getRemoteEntry, getRemoteInfo, } from '@module-federation/runtime';\nimport { loadScript, } from '@module-federation/sdk';\nimport { getPrefetchId, compatGetPrefetchId } from './common/runtime-utils';\n(_a = globalThis.__FEDERATION__) !== null && _a !== void 0 ? _a : (globalThis.__FEDERATION__ = {});\n(_b = (_c = globalThis.__FEDERATION__).__PREFETCH__) !== null && _b !== void 0 ? _b : (_c.__PREFETCH__ = {\n entryLoading: {},\n instance: new Map(),\n __PREFETCH_EXPORTS__: {},\n});\nexport class MFDataPrefetch {\n constructor(options) {\n this.prefetchMemory = new Map();\n this.recordOutdate = {};\n this._exports = {};\n this._options = options;\n this.global.instance.set(options.name, this);\n }\n get global() {\n return globalThis.__FEDERATION__\n .__PREFETCH__;\n }\n static getInstance(id) {\n return globalThis.__FEDERATION__.__PREFETCH__.instance.get(id);\n }\n loadEntry(entry) {\n return __awaiter(this, void 0, void 0, function* () {\n const { name, remoteSnapshot, remote, origin } = this._options;\n if (entry) {\n const { buildVersion, globalName } = remoteSnapshot;\n const uniqueKey = globalName || `${name}:${buildVersion}`;\n if (!this.global.entryLoading[uniqueKey]) {\n this.global.entryLoading[uniqueKey] = loadScript(entry, {});\n }\n return this.global.entryLoading[uniqueKey];\n }\n else {\n const remoteInfo = getRemoteInfo(remote);\n const module = origin.moduleCache.get(remoteInfo.name);\n return getRemoteEntry({\n origin: origin,\n remoteInfo,\n remoteEntryExports: module ? module.remoteEntryExports : undefined,\n });\n }\n });\n }\n getProjectExports() {\n var _a;\n if (Object.keys(this._exports).length > 0) {\n return this._exports;\n }\n const { name } = this._options;\n const exportsPromiseFn = (_a = globalThis.__FEDERATION__.__PREFETCH__.__PREFETCH_EXPORTS__) === null || _a === void 0 ? void 0 : _a[name];\n const exportsPromise = typeof exportsPromiseFn === 'function'\n ? exportsPromiseFn()\n : exportsPromiseFn;\n const resolve = exportsPromise.then((exports = {}) => {\n const memory = {};\n Object.keys(exports).forEach((key) => {\n memory[key] = {};\n const exportVal = exports[key];\n Object.keys(exportVal).reduce((memo, current) => {\n if (current.toLocaleLowerCase().endsWith('prefetch') ||\n current.toLocaleLowerCase() === 'default') {\n memo[current] = exportVal[current];\n }\n return memo;\n }, memory[key]);\n });\n this.memorizeExports(memory);\n });\n return resolve;\n }\n memorizeExports(exports) {\n this._exports = exports;\n }\n getExposeExports(id) {\n const prefetchId = getPrefetchId(id);\n const compatId = compatGetPrefetchId(id);\n const prefetchExports = this._exports[prefetchId] || this._exports[compatId];\n return prefetchExports || {};\n }\n prefetch(prefetchOptions) {\n const { id, functionId = 'default', refetchParams } = prefetchOptions;\n let prefetchResult;\n const prefetchId = getPrefetchId(id);\n const compatId = compatGetPrefetchId(id);\n const memorizeId = id + functionId;\n const memory = this.prefetchMemory.get(memorizeId);\n if (!this.checkOutdate(prefetchOptions) && memory) {\n return memory;\n }\n const prefetchExports = this._exports[prefetchId] || this._exports[compatId];\n if (!prefetchExports) {\n return;\n }\n const executePrefetch = prefetchExports[functionId];\n if (typeof executePrefetch === 'function') {\n if (refetchParams) {\n prefetchResult = executePrefetch(refetchParams);\n }\n else {\n prefetchResult = executePrefetch();\n }\n }\n else {\n throw new Error(`[Module Federation Data Prefetch]: No prefetch function called ${functionId} export in prefetch file`);\n }\n this.memorize(memorizeId, prefetchResult);\n return prefetchResult;\n }\n memorize(id, value) {\n this.prefetchMemory.set(id, value);\n }\n markOutdate(markOptions, isOutdate) {\n const { id, functionId = 'default' } = markOptions;\n if (!this.recordOutdate[id]) {\n this.recordOutdate[id] = {};\n }\n this.recordOutdate[id][functionId] = isOutdate;\n }\n checkOutdate(outdateOptions) {\n const { id, functionId = 'default', cacheStrategy } = outdateOptions;\n if (typeof cacheStrategy === 'function') {\n return cacheStrategy();\n }\n if (!this.recordOutdate[id]) {\n this.recordOutdate[id] = {};\n }\n if (this.recordOutdate[id][functionId]) {\n this.markOutdate({\n id,\n functionId,\n }, false);\n return true;\n }\n else {\n return false;\n }\n }\n}\n"],"names":["_a","_b","_c","globalThis","__FEDERATION__","__PREFETCH__","entryLoading","instance","Map","__PREFETCH_EXPORTS__","MFDataPrefetch","global","getInstance","id","get","loadEntry","entry","__awaiter","name","remoteSnapshot","remote","origin","_options","buildVersion","globalName","uniqueKey","loadScript","remoteInfo","getRemoteInfo","module","moduleCache","getRemoteEntry","remoteEntryExports","undefined","getProjectExports","Object","keys","_exports","length","exportsPromiseFn","exportsPromise","resolve","then","exports","memory","forEach","key","exportVal","reduce","memo","current","toLocaleLowerCase","endsWith","memorizeExports","getExposeExports","prefetchId","getPrefetchId","compatId","compatGetPrefetchId","prefetchExports","prefetch","prefetchOptions","functionId","refetchParams","prefetchResult","memorizeId","prefetchMemory","checkOutdate","executePrefetch","Error","memorize","value","set","markOutdate","markOptions","isOutdate","recordOutdate","outdateOptions","cacheStrategy","constructor","options"],"mappings":"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"}
|