@module-federation/data-prefetch 0.0.0-next-20250925034616 → 0.0.0-perf-devtools-20260106124142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/babel.cjs.cjs +23 -15
- package/dist/babel.cjs.cjs.map +1 -1
- package/dist/babel.esm.js +23 -15
- package/dist/babel.esm.js.map +1 -1
- package/dist/cli.cjs.cjs +43 -41
- package/dist/cli.cjs.cjs.map +1 -1
- package/dist/cli.esm.js +44 -42
- package/dist/cli.esm.js.map +1 -1
- package/dist/constant.cjs.cjs.map +1 -1
- package/dist/constant.esm.js.map +1 -1
- package/dist/index.cjs2.cjs.map +1 -1
- package/dist/index.esm2.js.map +1 -1
- package/dist/plugin.cjs.cjs +134 -131
- package/dist/plugin.cjs.cjs.map +1 -1
- package/dist/plugin.esm.js +134 -131
- package/dist/plugin.esm.js.map +1 -1
- package/dist/prefetch.cjs.cjs +49 -61
- package/dist/prefetch.cjs.cjs.map +1 -1
- package/dist/prefetch.esm.js +49 -61
- package/dist/prefetch.esm.js.map +1 -1
- package/dist/react.cjs.cjs +18 -17
- package/dist/react.cjs.cjs.map +1 -1
- package/dist/react.esm.js +18 -17
- package/dist/react.esm.js.map +1 -1
- package/dist/runtime-utils.cjs.cjs +6 -5
- package/dist/runtime-utils.cjs.cjs.map +1 -1
- package/dist/runtime-utils.esm.js +6 -5
- package/dist/runtime-utils.esm.js.map +1 -1
- package/dist/universal.cjs.cjs +7 -5
- package/dist/universal.cjs.cjs.map +1 -1
- package/dist/universal.esm.js +7 -5
- package/dist/universal.esm.js.map +1 -1
- package/package.json +3 -3
package/dist/cli.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.esm.js","sources":["../src/common/constant.ts","../src/common/node-utils.ts","../src/cli/index.ts"],"sourcesContent":["export const TEMP_DIR = '.mf';\n","import path from 'path';\nimport fs from 'fs-extra';\nexport const fileExistsWithCaseSync = (filepath) => {\n const dir = path.dirname(filepath);\n if (filepath === '/' || filepath === '.') {\n return true;\n }\n const filenames = fs.readdirSync(dir);\n if (filenames.indexOf(path.basename(filepath)) === -1) {\n return false;\n }\n return fileExistsWithCaseSync(dir);\n};\nexport const fixPrefetchPath = (exposePath) => {\n const pathExt = ['.js', '.ts'];\n const extReg = /\\.(ts|js|tsx|jsx)$/;\n if (extReg.test(exposePath)) {\n return pathExt.map((ext) => exposePath.replace(extReg, `.prefetch${ext}`));\n }\n else {\n return pathExt.map((ext) => exposePath + `.prefetch${ext}`);\n }\n};\n","import path from 'path';\nimport fs from 'fs-extra';\nimport { encodeName, MFPrefetchCommon, } from '@module-federation/sdk';\nimport { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\nimport { TEMP_DIR } from '../common/constant';\nimport { fileExistsWithCaseSync, fixPrefetchPath } from '../common/node-utils';\nimport { getPrefetchId } from '../common/runtime-utils';\nimport { SHARED_STRATEGY } from '../constant';\nconst { RuntimeGlobals, Template } = require(normalizeWebpackPath('webpack'));\nexport function getFederationGlobalScope(runtimeGlobals) {\n return `${runtimeGlobals.require || '__webpack_require__'}.federation`;\n}\nexport class PrefetchPlugin {\n constructor(options) {\n this.options = options;\n this._reWriteExports = '';\n }\n apply(compiler) {\n var _a;\n const { name, exposes } = this.options;\n if (!exposes) {\n return;\n }\n if (!compiler.options.context) {\n throw new Error('compiler.options.context is not defined');\n }\n const { runtimePlugins } = this.options;\n if (!Array.isArray(runtimePlugins)) {\n this.options.runtimePlugins = [];\n }\n const runtimePath = path.resolve(__dirname, './plugin.esm.js');\n if (!((_a = this.options.runtimePlugins) === null || _a === void 0 ? void 0 : _a.includes(runtimePath))) {\n this.options.runtimePlugins.push(runtimePath);\n }\n if (this.options.shareStrategy !== SHARED_STRATEGY) {\n this.options.shareStrategy = SHARED_STRATEGY;\n console.warn(`[Module Federation Data Prefetch]: Your shared strategy is set to '${SHARED_STRATEGY}', this is a necessary condition for data prefetch`);\n }\n const encodedName = encodeName(name);\n const asyncEntryPath = path.resolve(compiler.options.context, `node_modules/${TEMP_DIR}/${encodedName}/bootstrap.js`);\n if (fs.existsSync(asyncEntryPath)) {\n fs.unlinkSync(asyncEntryPath);\n }\n if (!this.options.dataPrefetch) {\n return;\n }\n const prefetchs = [];\n const exposeAlias = Object.keys(exposes);\n exposeAlias.forEach((alias) => {\n let exposePath;\n const exposeValue = exposes[alias];\n if (typeof exposeValue === 'string') {\n exposePath = exposeValue;\n }\n else {\n exposePath = exposeValue.import[0];\n }\n const targetPaths = fixPrefetchPath(exposePath);\n for (const pathItem of targetPaths) {\n const absolutePath = path.resolve(compiler.options.context, pathItem);\n if (fileExistsWithCaseSync(absolutePath)) {\n prefetchs.push(pathItem);\n const absoluteAlias = alias.replace('.', '');\n this._reWriteExports += `export * as ${getPrefetchId(`${name}${absoluteAlias}`)} from '${absolutePath}';\\n`;\n break;\n }\n }\n });\n if (!this._reWriteExports) {\n return;\n }\n const tempDirRealPath = path.resolve(compiler.options.context, 'node_modules', TEMP_DIR);\n if (!fs.existsSync(tempDirRealPath)) {\n fs.mkdirSync(tempDirRealPath);\n }\n if (!fs.existsSync(`${tempDirRealPath}/${encodedName}`)) {\n fs.mkdirSync(`${tempDirRealPath}/${encodedName}`);\n }\n fs.writeFileSync(asyncEntryPath, this._reWriteExports);\n new compiler.webpack.DefinePlugin({\n FederationDataPrefetch: JSON.stringify(asyncEntryPath),\n }).apply(compiler);\n }\n static addRuntime(compiler, options) {\n const encodedName = encodeName(options.name);\n if (!compiler.options.context) {\n throw new Error('compiler.options.context is not defined');\n }\n const prefetchEntry = path.resolve(compiler.options.context, `node_modules/.mf/${encodedName}/bootstrap.js`);\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.asString([\n fs.existsSync(prefetchEntry)\n ? Template.indent([\n 'function injectPrefetch() {',\n Template.indent([\n `globalThis.__FEDERATION__ = globalThis.__FEDERATION__ || {};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] || {`,\n `entryLoading: {},`,\n `instance: new Map(),`,\n `__PREFETCH_EXPORTS__: {},`,\n `};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] || {};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}']['${options.name}'] = function(){ return import('${prefetchEntry}');}`,\n ]),\n '}',\n `${federationGlobal}.prefetch = injectPrefetch`,\n ])\n : '',\n Template.indent([\n `if(!${federationGlobal}.isMFRemote && ${federationGlobal}.prefetch){`,\n `${federationGlobal}.prefetch()`,\n '}',\n ]),\n ]);\n }\n static setRemoteIdentifier() {\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.indent([`${federationGlobal}.isMFRemote = true;`]);\n }\n static removeRemoteIdentifier() {\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.indent([`${federationGlobal}.isMFRemote = false;`]);\n }\n}\n"],"names":["TEMP_DIR","fileExistsWithCaseSync","filepath","dir","path","dirname","filenames","fs","readdirSync","indexOf","basename","fixPrefetchPath","exposePath","pathExt","extReg","test","map","ext","replace","RuntimeGlobals","Template","require","normalizeWebpackPath","getFederationGlobalScope","runtimeGlobals","PrefetchPlugin","apply","compiler","_a","name","exposes","options","context","Error","runtimePlugins","Array","isArray","runtimePath","resolve","__dirname","includes","push","shareStrategy","SHARED_STRATEGY","console","warn","encodedName","encodeName","asyncEntryPath","existsSync","unlinkSync","dataPrefetch","exposeAlias","Object","keys","forEach","alias","exposeValue","import","targetPaths","pathItem","absolutePath","absoluteAlias","_reWriteExports","getPrefetchId","tempDirRealPath","mkdirSync","writeFileSync","webpack","DefinePlugin","FederationDataPrefetch","JSON","stringify","addRuntime","prefetchEntry","federationGlobal","asString","indent","MFPrefetchCommon","globalKey","exportsKey","setRemoteIdentifier","removeRemoteIdentifier","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.esm.js","sources":["../src/common/constant.ts","../src/common/node-utils.ts","../src/cli/index.ts"],"sourcesContent":["export const TEMP_DIR = '.mf';\n","import path from 'path';\nimport fs from 'fs-extra';\nexport const fileExistsWithCaseSync = (filepath) => {\n const dir = path.dirname(filepath);\n if (filepath === '/' || filepath === '.') {\n return true;\n }\n const filenames = fs.readdirSync(dir);\n if (filenames.indexOf(path.basename(filepath)) === -1) {\n return false;\n }\n return fileExistsWithCaseSync(dir);\n};\nexport const fixPrefetchPath = (exposePath) => {\n const pathExt = ['.js', '.ts'];\n const extReg = /\\.(ts|js|tsx|jsx)$/;\n if (extReg.test(exposePath)) {\n return pathExt.map((ext) => exposePath.replace(extReg, `.prefetch${ext}`));\n }\n else {\n return pathExt.map((ext) => exposePath + `.prefetch${ext}`);\n }\n};\n","import path from 'path';\nimport fs from 'fs-extra';\nimport { bindLoggerToCompiler, createInfrastructureLogger, createLogger, encodeName, MFPrefetchCommon, } from '@module-federation/sdk';\nimport { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\nimport { TEMP_DIR } from '../common/constant';\nimport { fileExistsWithCaseSync, fixPrefetchPath } from '../common/node-utils';\nimport { getPrefetchId } from '../common/runtime-utils';\nimport { SHARED_STRATEGY } from '../constant';\nconst { RuntimeGlobals, Template } = require(normalizeWebpackPath('webpack'));\nconst createBundlerLogger = typeof createInfrastructureLogger === 'function'\n ? createInfrastructureLogger\n : createLogger;\nconst logger = createBundlerLogger('[ Module Federation Data Prefetch Plugin ]');\nexport function getFederationGlobalScope(runtimeGlobals) {\n return `${runtimeGlobals.require || '__webpack_require__'}.federation`;\n}\nexport class PrefetchPlugin {\n constructor(options) {\n this.options = options;\n this._reWriteExports = '';\n }\n apply(compiler) {\n var _a;\n bindLoggerToCompiler(logger, compiler, 'PrefetchPlugin');\n const { name, exposes } = this.options;\n if (!exposes) {\n return;\n }\n if (!compiler.options.context) {\n throw new Error('compiler.options.context is not defined');\n }\n const { runtimePlugins } = this.options;\n if (!Array.isArray(runtimePlugins)) {\n this.options.runtimePlugins = [];\n }\n const runtimePath = path.resolve(__dirname, './plugin.esm.js');\n if (!((_a = this.options.runtimePlugins) === null || _a === void 0 ? void 0 : _a.includes(runtimePath))) {\n this.options.runtimePlugins.push(runtimePath);\n }\n if (this.options.shareStrategy !== SHARED_STRATEGY) {\n this.options.shareStrategy = SHARED_STRATEGY;\n logger.warn(`[Module Federation Data Prefetch]: Your shared strategy is set to '${SHARED_STRATEGY}', this is a necessary condition for data prefetch`);\n }\n const encodedName = encodeName(name);\n const asyncEntryPath = path.resolve(compiler.options.context, `node_modules/${TEMP_DIR}/${encodedName}/bootstrap.js`);\n if (fs.existsSync(asyncEntryPath)) {\n fs.unlinkSync(asyncEntryPath);\n }\n if (!this.options.dataPrefetch) {\n return;\n }\n const prefetchs = [];\n const exposeAlias = Object.keys(exposes);\n exposeAlias.forEach((alias) => {\n let exposePath;\n const exposeValue = exposes[alias];\n if (typeof exposeValue === 'string') {\n exposePath = exposeValue;\n }\n else {\n exposePath = exposeValue.import[0];\n }\n const targetPaths = fixPrefetchPath(exposePath);\n for (const pathItem of targetPaths) {\n const absolutePath = path.resolve(compiler.options.context, pathItem);\n if (fileExistsWithCaseSync(absolutePath)) {\n prefetchs.push(pathItem);\n const absoluteAlias = alias.replace('.', '');\n this._reWriteExports += `export * as ${getPrefetchId(`${name}${absoluteAlias}`)} from '${absolutePath}';\\n`;\n break;\n }\n }\n });\n if (!this._reWriteExports) {\n return;\n }\n const tempDirRealPath = path.resolve(compiler.options.context, 'node_modules', TEMP_DIR);\n if (!fs.existsSync(tempDirRealPath)) {\n fs.mkdirSync(tempDirRealPath);\n }\n if (!fs.existsSync(`${tempDirRealPath}/${encodedName}`)) {\n fs.mkdirSync(`${tempDirRealPath}/${encodedName}`);\n }\n fs.writeFileSync(asyncEntryPath, this._reWriteExports);\n new compiler.webpack.DefinePlugin({\n FederationDataPrefetch: JSON.stringify(asyncEntryPath),\n }).apply(compiler);\n }\n static addRuntime(compiler, options) {\n const encodedName = encodeName(options.name);\n if (!compiler.options.context) {\n throw new Error('compiler.options.context is not defined');\n }\n const prefetchEntry = path.resolve(compiler.options.context, `node_modules/.mf/${encodedName}/bootstrap.js`);\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.asString([\n fs.existsSync(prefetchEntry)\n ? Template.indent([\n 'function injectPrefetch() {',\n Template.indent([\n `globalThis.__FEDERATION__ = globalThis.__FEDERATION__ || {};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}'] || {`,\n `entryLoading: {},`,\n `instance: new Map(),`,\n `__PREFETCH_EXPORTS__: {},`,\n `};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] = globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}'] || {};`,\n `globalThis.__FEDERATION__['${MFPrefetchCommon.globalKey}']['${MFPrefetchCommon.exportsKey}']['${options.name}'] = function(){ return import('${prefetchEntry}');}`,\n ]),\n '}',\n `${federationGlobal}.prefetch = injectPrefetch`,\n ])\n : '',\n Template.indent([\n `if(!${federationGlobal}.isMFRemote && ${federationGlobal}.prefetch){`,\n `${federationGlobal}.prefetch()`,\n '}',\n ]),\n ]);\n }\n static setRemoteIdentifier() {\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.indent([`${federationGlobal}.isMFRemote = true;`]);\n }\n static removeRemoteIdentifier() {\n const federationGlobal = getFederationGlobalScope(RuntimeGlobals || {});\n return Template.indent([`${federationGlobal}.isMFRemote = false;`]);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constant.cjs.cjs","sources":["../src/constant.ts"],"sourcesContent":["export const SHARED_STRATEGY = 'loaded-first';\n"],"names":[
|
|
1
|
+
{"version":3,"file":"constant.cjs.cjs","sources":["../src/constant.ts"],"sourcesContent":["export const SHARED_STRATEGY = 'loaded-first';\n"],"names":[],"mappings":";;AAAY,MAAC,eAAe,GAAG;;;;"}
|
package/dist/constant.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constant.esm.js","sources":["../src/constant.ts"],"sourcesContent":["export const SHARED_STRATEGY = 'loaded-first';\n"],"names":[
|
|
1
|
+
{"version":3,"file":"constant.esm.js","sources":["../src/constant.ts"],"sourcesContent":["export const SHARED_STRATEGY = 'loaded-first';\n"],"names":[],"mappings":"AAAY,MAAC,eAAe,GAAG;;;;"}
|
package/dist/index.cjs2.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs2.cjs","sources":["../src/logger/index.ts"],"sourcesContent":["import { createLogger } from '@module-federation/sdk';\nconst logger = createLogger('[ Module Federation Data Prefetch ]');\nexport default logger;\n"],"names":["
|
|
1
|
+
{"version":3,"file":"index.cjs2.cjs","sources":["../src/logger/index.ts"],"sourcesContent":["import { createLogger } from '@module-federation/sdk';\nconst logger = createLogger('[ Module Federation Data Prefetch ]');\nexport default logger;\n"],"names":["createLogger"],"mappings":";;;;AACK,MAAC,MAAM,GAAGA,gBAAY,CAAC,qCAAqC;;;;"}
|
package/dist/index.esm2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm2.js","sources":["../src/logger/index.ts"],"sourcesContent":["import { createLogger } from '@module-federation/sdk';\nconst logger = createLogger('[ Module Federation Data Prefetch ]');\nexport default logger;\n"],"names":[
|
|
1
|
+
{"version":3,"file":"index.esm2.js","sources":["../src/logger/index.ts"],"sourcesContent":["import { createLogger } from '@module-federation/sdk';\nconst logger = createLogger('[ Module Federation Data Prefetch ]');\nexport default logger;\n"],"names":[],"mappings":";;AACK,MAAC,MAAM,GAAG,YAAY,CAAC,qCAAqC;;;;"}
|
package/dist/plugin.cjs.cjs
CHANGED
|
@@ -10,145 +10,148 @@ var constant = require('./constant.cjs.cjs');
|
|
|
10
10
|
|
|
11
11
|
const loadingArray = [];
|
|
12
12
|
let sharedFlag = constant.SHARED_STRATEGY;
|
|
13
|
-
const prefetchPlugin = ()=>({
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
});
|
|
13
|
+
const prefetchPlugin = () => ({
|
|
14
|
+
name: 'data-prefetch-runtime-plugin',
|
|
15
|
+
initContainer(options) {
|
|
16
|
+
const { remoteSnapshot, remoteInfo, id, origin } = options;
|
|
17
|
+
if (!id) {
|
|
67
18
|
return options;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
loadingArray.splice(index$1, 1);
|
|
19
|
+
}
|
|
20
|
+
const snapshot = remoteSnapshot;
|
|
21
|
+
const { name } = remoteInfo;
|
|
22
|
+
const prefetchOptions = {
|
|
23
|
+
name,
|
|
24
|
+
remote: remoteInfo,
|
|
25
|
+
origin,
|
|
26
|
+
remoteSnapshot: snapshot,
|
|
27
|
+
};
|
|
28
|
+
const signal = runtimeUtils.getSignalFromManifest(snapshot);
|
|
29
|
+
if (!signal) {
|
|
30
|
+
return options;
|
|
31
|
+
}
|
|
32
|
+
if (sharedFlag !== constant.SHARED_STRATEGY) {
|
|
33
|
+
throw new Error(`[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'`);
|
|
34
|
+
}
|
|
35
|
+
const instance = prefetch.MFDataPrefetch.getInstance(name) || new prefetch.MFDataPrefetch(prefetchOptions);
|
|
36
|
+
let prefetchUrl;
|
|
37
|
+
if (snapshot.prefetchEntry) {
|
|
38
|
+
prefetchUrl = sdk.getResourceUrl(snapshot, snapshot.prefetchEntry);
|
|
39
|
+
}
|
|
40
|
+
const exist = loadingArray.find((loading) => loading.id === id);
|
|
41
|
+
if (exist) {
|
|
42
|
+
return options;
|
|
43
|
+
}
|
|
44
|
+
const promise = instance.loadEntry(prefetchUrl).then(() => prefetch.__awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const projectExports = instance.getProjectExports();
|
|
46
|
+
if (projectExports instanceof Promise) {
|
|
47
|
+
yield projectExports;
|
|
98
48
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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;
|
|
49
|
+
return Promise.resolve().then(() => {
|
|
50
|
+
const exports = instance.getExposeExports(id);
|
|
51
|
+
index.logger.info(`1. Start Prefetch initContainer: ${id} - ${performance.now()}`);
|
|
52
|
+
const result = Object.keys(exports).map((k) => {
|
|
53
|
+
const value = instance.prefetch({
|
|
54
|
+
id,
|
|
55
|
+
functionId: k,
|
|
119
56
|
});
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
57
|
+
const functionId = k;
|
|
58
|
+
return {
|
|
59
|
+
value,
|
|
60
|
+
functionId,
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
return result;
|
|
124
64
|
});
|
|
65
|
+
}));
|
|
66
|
+
loadingArray.push({
|
|
67
|
+
id,
|
|
68
|
+
promise,
|
|
69
|
+
});
|
|
70
|
+
return options;
|
|
71
|
+
},
|
|
72
|
+
afterResolve(options) {
|
|
73
|
+
const { remoteSnapshot, remoteInfo, id, origin } = options;
|
|
74
|
+
const snapshot = remoteSnapshot;
|
|
75
|
+
const { name } = remoteInfo;
|
|
76
|
+
const prefetchOptions = {
|
|
77
|
+
name,
|
|
78
|
+
remote: remoteInfo,
|
|
79
|
+
origin,
|
|
80
|
+
remoteSnapshot: snapshot,
|
|
81
|
+
};
|
|
82
|
+
const signal = runtimeUtils.getSignalFromManifest(snapshot);
|
|
83
|
+
if (!signal) {
|
|
125
84
|
return options;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
85
|
+
}
|
|
86
|
+
const inited = loadingArray.some((info) => info.id === id);
|
|
87
|
+
if (!inited) {
|
|
88
|
+
return options;
|
|
89
|
+
}
|
|
90
|
+
if (sharedFlag !== constant.SHARED_STRATEGY) {
|
|
91
|
+
throw new Error(`[Module Federation Data Prefetch]: If you want to use data prefetch, the shared strategy must be 'loaded-first'`);
|
|
92
|
+
}
|
|
93
|
+
const instance = prefetch.MFDataPrefetch.getInstance(name) || new prefetch.MFDataPrefetch(prefetchOptions);
|
|
94
|
+
let prefetchUrl;
|
|
95
|
+
if (snapshot.prefetchEntry) {
|
|
96
|
+
prefetchUrl = sdk.getResourceUrl(snapshot, snapshot.prefetchEntry);
|
|
97
|
+
}
|
|
98
|
+
const index$1 = loadingArray.findIndex((loading) => loading.id === id);
|
|
99
|
+
if (index$1 !== -1) {
|
|
100
|
+
loadingArray.splice(index$1, 1);
|
|
101
|
+
}
|
|
102
|
+
const promise = instance.loadEntry(prefetchUrl).then(() => prefetch.__awaiter(this, void 0, void 0, function* () {
|
|
103
|
+
const projectExports = instance.getProjectExports();
|
|
104
|
+
if (projectExports instanceof Promise) {
|
|
105
|
+
yield projectExports;
|
|
106
|
+
}
|
|
107
|
+
return Promise.resolve().then(() => {
|
|
108
|
+
const exports = instance.getExposeExports(id);
|
|
109
|
+
index.logger.info(`1. Start Prefetch afterResolve: ${id} - ${performance.now()}`);
|
|
110
|
+
const result = Object.keys(exports).map((k) => {
|
|
111
|
+
const value = instance.prefetch({
|
|
112
|
+
id,
|
|
113
|
+
functionId: k,
|
|
141
114
|
});
|
|
142
|
-
|
|
143
|
-
|
|
115
|
+
const functionId = k;
|
|
116
|
+
return {
|
|
117
|
+
value,
|
|
118
|
+
functionId,
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
return result;
|
|
144
122
|
});
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
123
|
+
}));
|
|
124
|
+
loadingArray.push({
|
|
125
|
+
id,
|
|
126
|
+
promise,
|
|
127
|
+
});
|
|
128
|
+
return options;
|
|
129
|
+
},
|
|
130
|
+
onLoad(options) {
|
|
131
|
+
return prefetch.__awaiter(this, void 0, void 0, function* () {
|
|
132
|
+
var _a;
|
|
133
|
+
const { remote, id } = options;
|
|
134
|
+
const { name } = remote;
|
|
135
|
+
const promise = (_a = loadingArray.find((loading) => loading.id === id)) === null || _a === void 0 ? void 0 : _a.promise;
|
|
136
|
+
if (promise) {
|
|
137
|
+
const prefetch$1 = yield promise;
|
|
138
|
+
const prefetchValue = prefetch$1.map((result) => result.value);
|
|
139
|
+
yield Promise.all(prefetchValue);
|
|
140
|
+
const instance = prefetch.MFDataPrefetch.getInstance(name);
|
|
141
|
+
prefetch$1.forEach((result) => {
|
|
142
|
+
const { value, functionId } = result;
|
|
143
|
+
instance.memorize(id + functionId, value);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
149
146
|
return options;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
147
|
+
});
|
|
148
|
+
},
|
|
149
|
+
beforeLoadShare(options) {
|
|
150
|
+
const shareInfo = options.shareInfo;
|
|
151
|
+
sharedFlag = (shareInfo === null || shareInfo === void 0 ? void 0 : shareInfo.strategy) || sharedFlag;
|
|
152
|
+
return options;
|
|
153
|
+
},
|
|
154
|
+
});
|
|
152
155
|
|
|
153
156
|
exports.default = prefetchPlugin;
|
|
154
157
|
exports.prefetchPlugin = prefetchPlugin;
|
package/dist/plugin.cjs.cjs.map
CHANGED
|
@@ -1 +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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"}
|
|
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 if (!id) {\n return options;\n }\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":["SHARED_STRATEGY","getSignalFromManifest","MFDataPrefetch","getResourceUrl","__awaiter","logger","index","prefetch"],"mappings":"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"}
|