@module-federation/enhanced 0.2.0-canary.3 → 0.2.0-canary.5
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/package.json +1 -1
- package/src/lib/container/AsyncBoundaryPlugin.d.ts +7 -2
- package/src/lib/container/AsyncBoundaryPlugin.js +112 -69
- package/src/lib/container/AsyncBoundaryPlugin.js.map +1 -1
- package/src/lib/container/HoistContainerReferencesPlugin.d.ts +19 -0
- package/src/lib/container/HoistContainerReferencesPlugin.js +78 -0
- package/src/lib/container/HoistContainerReferencesPlugin.js.map +1 -0
- package/src/lib/container/RemoteRuntimeModule.js +2 -3
- package/src/lib/container/RemoteRuntimeModule.js.map +1 -1
- package/src/lib/sharing/ConsumeSharedRuntimeModule.js +3 -4
- package/src/lib/sharing/ConsumeSharedRuntimeModule.js.map +1 -1
package/package.json
CHANGED
|
@@ -10,7 +10,12 @@ declare class AsyncEntryStartupPlugin {
|
|
|
10
10
|
private _runtimeChunks;
|
|
11
11
|
constructor(options?: Options);
|
|
12
12
|
apply(compiler: Compiler): void;
|
|
13
|
-
private
|
|
14
|
-
private
|
|
13
|
+
private _collectRuntimeChunks;
|
|
14
|
+
private _handleRenderStartup;
|
|
15
|
+
private _getChunkRuntime;
|
|
16
|
+
private _getRemotes;
|
|
17
|
+
private _getShared;
|
|
18
|
+
private _getInitialEntryModules;
|
|
19
|
+
private _getTemplateString;
|
|
15
20
|
}
|
|
16
21
|
export default AsyncEntryStartupPlugin;
|
|
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
const _RuntimeGlobals = /*#__PURE__*/ _interop_require_default(require("webpack/lib/RuntimeGlobals"));
|
|
12
12
|
const _Template = /*#__PURE__*/ _interop_require_default(require("webpack/lib/Template"));
|
|
13
|
+
const _SortableSet = /*#__PURE__*/ _interop_require_default(require("webpack/lib/util/SortableSet"));
|
|
13
14
|
function _interop_require_default(obj) {
|
|
14
15
|
return obj && obj.__esModule ? obj : {
|
|
15
16
|
default: obj
|
|
@@ -18,12 +19,12 @@ function _interop_require_default(obj) {
|
|
|
18
19
|
let AsyncEntryStartupPlugin = class AsyncEntryStartupPlugin {
|
|
19
20
|
apply(compiler) {
|
|
20
21
|
compiler.hooks.thisCompilation.tap('AsyncEntryStartupPlugin', (compilation)=>{
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
22
|
+
this._collectRuntimeChunks(compilation);
|
|
23
|
+
this._handleRenderStartup(compiler, compilation);
|
|
23
24
|
});
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
compilation.hooks.beforeChunkAssets.tap('
|
|
26
|
+
_collectRuntimeChunks(compilation) {
|
|
27
|
+
compilation.hooks.beforeChunkAssets.tap('AsyncEntryStartupPlugin', ()=>{
|
|
27
28
|
for (const chunk of compilation.chunks){
|
|
28
29
|
if (chunk.hasRuntime() && chunk.id !== null) {
|
|
29
30
|
this._runtimeChunks.set(chunk.id, chunk);
|
|
@@ -36,10 +37,9 @@ let AsyncEntryStartupPlugin = class AsyncEntryStartupPlugin {
|
|
|
36
37
|
}
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
+
_handleRenderStartup(compiler, compilation) {
|
|
40
41
|
compiler.webpack.javascript.JavascriptModulesPlugin.getCompilationHooks(compilation).renderStartup.tap('AsyncEntryStartupPlugin', (source, renderContext, upperContext)=>{
|
|
41
|
-
var _compiler_options_optimization, _compiler_options
|
|
42
|
-
// Check if this._runtimeChunks contains any runtime chunks
|
|
42
|
+
var _compiler_options_optimization, _compiler_options;
|
|
43
43
|
const isSingleRuntime = (_compiler_options = compiler.options) == null ? void 0 : (_compiler_options_optimization = _compiler_options.optimization) == null ? void 0 : _compiler_options_optimization.runtimeChunk;
|
|
44
44
|
if ((upperContext == null ? void 0 : upperContext.chunk.id) && isSingleRuntime) {
|
|
45
45
|
if (upperContext == null ? void 0 : upperContext.chunk.hasRuntime()) {
|
|
@@ -47,93 +47,136 @@ let AsyncEntryStartupPlugin = class AsyncEntryStartupPlugin {
|
|
|
47
47
|
return source;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
// Check if excludeChunk is provided, use it to decide further processing
|
|
51
50
|
if (this._options.excludeChunk && this._options.excludeChunk(upperContext.chunk)) {
|
|
52
51
|
return source;
|
|
53
52
|
}
|
|
54
|
-
const runtime =
|
|
55
|
-
if (typeof upperContext.chunk.runtime === 'string' || typeof upperContext.chunk.runtime === 'number') {
|
|
56
|
-
if (this._runtimeChunks.has(upperContext.chunk.runtime)) {
|
|
57
|
-
runtime.add(this._runtimeChunks.get(upperContext.chunk.runtime));
|
|
58
|
-
} else {
|
|
59
|
-
runtime.add(upperContext.chunk);
|
|
60
|
-
}
|
|
61
|
-
} else if (upperContext.chunk.runtime && typeof upperContext.chunk.runtime[Symbol.iterator] === 'function') {
|
|
62
|
-
for (const runtimeItem of upperContext.chunk.runtime){
|
|
63
|
-
if (this._runtimeChunks.has(runtimeItem)) {
|
|
64
|
-
runtime.add(this._runtimeChunks.get(runtimeItem));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (runtime.size === 0) {
|
|
69
|
-
runtime.add(upperContext.chunk);
|
|
70
|
-
}
|
|
71
|
-
// Get the runtime requirements of the chunk
|
|
53
|
+
const runtime = this._getChunkRuntime(upperContext);
|
|
72
54
|
let remotes = '';
|
|
73
55
|
let shared = '';
|
|
74
56
|
for (const runtimeItem of runtime){
|
|
57
|
+
if (!runtimeItem) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
75
60
|
const requirements = compilation.chunkGraph.getTreeRuntimeRequirements(runtimeItem);
|
|
76
61
|
const hasRemoteModules = compilation.chunkGraph.getChunkModulesIterableBySourceType(upperContext.chunk, 'remote');
|
|
77
62
|
const consumeShares = compilation.chunkGraph.getChunkModulesIterableBySourceType(upperContext.chunk, 'consume-shared');
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
63
|
+
const entryOptions = upperContext.chunk.getEntryOptions();
|
|
64
|
+
const chunksToRef = (entryOptions == null ? void 0 : entryOptions.dependOn) ? [
|
|
65
|
+
...entryOptions.dependOn,
|
|
66
|
+
upperContext.chunk.id
|
|
67
|
+
] : [
|
|
68
|
+
upperContext.chunk.id
|
|
69
|
+
];
|
|
70
|
+
remotes = this._getRemotes(requirements, Boolean(hasRemoteModules), chunksToRef, remotes);
|
|
71
|
+
shared = this._getShared(requirements, Boolean(consumeShares), chunksToRef, shared);
|
|
86
72
|
}
|
|
87
|
-
// If no remotes or shared, return the source
|
|
88
73
|
if (!remotes && !shared) {
|
|
89
74
|
return source;
|
|
90
75
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
// If shouldInclude is true, push the module to initialEntryModules
|
|
107
|
-
if (shouldInclude) {
|
|
108
|
-
initialEntryModules.push(`__webpack_require__(${JSON.stringify(entryModuleID)});`);
|
|
109
|
-
}
|
|
76
|
+
const initialEntryModules = this._getInitialEntryModules(compilation, upperContext);
|
|
77
|
+
return this._getTemplateString(compiler, initialEntryModules, shared, remotes, source);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
_getChunkRuntime(upperContext) {
|
|
81
|
+
const runtime = new Set();
|
|
82
|
+
const chunkRuntime = upperContext.chunk.runtime;
|
|
83
|
+
if (chunkRuntime) {
|
|
84
|
+
const runtimeItems = chunkRuntime instanceof _SortableSet.default ? chunkRuntime : [
|
|
85
|
+
chunkRuntime
|
|
86
|
+
];
|
|
87
|
+
for (const runtimeItem of runtimeItems){
|
|
88
|
+
const chunk = this._runtimeChunks.get(runtimeItem);
|
|
89
|
+
if (chunk) {
|
|
90
|
+
runtime.add(chunk);
|
|
110
91
|
}
|
|
111
92
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
93
|
+
}
|
|
94
|
+
if (runtime.size === 0) {
|
|
95
|
+
runtime.add(upperContext.chunk);
|
|
96
|
+
}
|
|
97
|
+
return runtime;
|
|
98
|
+
}
|
|
99
|
+
_getRemotes(requirements, hasRemoteModules, chunksToRef, remotes) {
|
|
100
|
+
if (!requirements.has(_RuntimeGlobals.default.currentRemoteGetScope) && !hasRemoteModules && !requirements.has('__webpack_require__.vmok')) {
|
|
101
|
+
return remotes;
|
|
102
|
+
}
|
|
103
|
+
const remotesParts = remotes.startsWith('if(__webpack_require__.f && __webpack_require__.f.remotes) {') ? [
|
|
104
|
+
remotes
|
|
105
|
+
] : [
|
|
106
|
+
remotes,
|
|
107
|
+
'if(__webpack_require__.f && __webpack_require__.f.remotes) {'
|
|
108
|
+
];
|
|
109
|
+
for (const chunkId of chunksToRef){
|
|
110
|
+
if (chunkId !== null) {
|
|
111
|
+
remotesParts.push(` __webpack_require__.f.remotes(${JSON.stringify(chunkId)}, promiseTrack);`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
remotesParts.push('}');
|
|
115
|
+
return remotesParts.join('');
|
|
116
|
+
}
|
|
117
|
+
_getShared(requirements, consumeShares, chunksToRef, shared) {
|
|
118
|
+
if (!requirements.has(_RuntimeGlobals.default.shareScopeMap) && !consumeShares && !requirements.has(_RuntimeGlobals.default.initializeSharing)) {
|
|
119
|
+
return shared;
|
|
120
|
+
}
|
|
121
|
+
const sharedParts = shared.startsWith('if(__webpack_require__.f && __webpack_require__.f.consumes) {') ? [
|
|
122
|
+
shared
|
|
123
|
+
] : [
|
|
124
|
+
shared,
|
|
125
|
+
'if(__webpack_require__.f && __webpack_require__.f.consumes) {'
|
|
126
|
+
];
|
|
127
|
+
for (const chunkId of chunksToRef){
|
|
128
|
+
if (chunkId !== null) {
|
|
129
|
+
sharedParts.push(` __webpack_require__.f.consumes(${JSON.stringify(chunkId)}, promiseTrack);`);
|
|
121
130
|
}
|
|
131
|
+
}
|
|
132
|
+
sharedParts.push('}');
|
|
133
|
+
return sharedParts.join('');
|
|
134
|
+
}
|
|
135
|
+
_getInitialEntryModules(compilation, upperContext) {
|
|
136
|
+
const entryModules = compilation.chunkGraph.getChunkEntryModulesIterable(upperContext.chunk);
|
|
137
|
+
const initialEntryModules = [];
|
|
138
|
+
for (const entryModule of entryModules){
|
|
139
|
+
const entryModuleID = compilation.chunkGraph.getModuleId(entryModule);
|
|
140
|
+
if (entryModuleID) {
|
|
141
|
+
let shouldInclude = false;
|
|
142
|
+
if (typeof this._options.eager === 'function') {
|
|
143
|
+
shouldInclude = this._options.eager(entryModule);
|
|
144
|
+
} else if (this._options.eager && this._options.eager.test(entryModule.identifier())) {
|
|
145
|
+
shouldInclude = true;
|
|
146
|
+
}
|
|
147
|
+
if (shouldInclude) {
|
|
148
|
+
initialEntryModules.push(`__webpack_require__(${JSON.stringify(entryModuleID)});`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return initialEntryModules;
|
|
153
|
+
}
|
|
154
|
+
_getTemplateString(compiler, initialEntryModules, shared, remotes, source) {
|
|
155
|
+
var _compiler_options_experiments, _compiler_options, _compiler_options_experiments1, _compiler_options1;
|
|
156
|
+
if (((_compiler_options = compiler.options) == null ? void 0 : (_compiler_options_experiments = _compiler_options.experiments) == null ? void 0 : _compiler_options_experiments.topLevelAwait) && ((_compiler_options1 = compiler.options) == null ? void 0 : (_compiler_options_experiments1 = _compiler_options1.experiments) == null ? void 0 : _compiler_options_experiments1.outputModule)) {
|
|
122
157
|
return _Template.default.asString([
|
|
123
158
|
'var promiseTrack = [];',
|
|
124
159
|
_Template.default.asString(initialEntryModules),
|
|
125
160
|
shared,
|
|
126
161
|
remotes,
|
|
127
|
-
'
|
|
128
|
-
_Template.default.indent(source.source())
|
|
129
|
-
_Template.default.indent('return __webpack_exports__'),
|
|
130
|
-
'});'
|
|
162
|
+
'await Promise.all(promiseTrack)',
|
|
163
|
+
_Template.default.indent(source.source())
|
|
131
164
|
]);
|
|
132
|
-
}
|
|
165
|
+
}
|
|
166
|
+
return _Template.default.asString([
|
|
167
|
+
'var promiseTrack = [];',
|
|
168
|
+
_Template.default.asString(initialEntryModules),
|
|
169
|
+
shared,
|
|
170
|
+
remotes,
|
|
171
|
+
'var __webpack_exports__ = Promise.all(promiseTrack).then(function() {',
|
|
172
|
+
_Template.default.indent(source.source()),
|
|
173
|
+
_Template.default.indent('return __webpack_exports__'),
|
|
174
|
+
'});'
|
|
175
|
+
]);
|
|
133
176
|
}
|
|
134
177
|
constructor(options){
|
|
135
|
-
this._options = options || {};
|
|
136
178
|
this._runtimeChunks = new Map();
|
|
179
|
+
this._options = options || {};
|
|
137
180
|
}
|
|
138
181
|
};
|
|
139
182
|
const _default = AsyncEntryStartupPlugin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/container/AsyncBoundaryPlugin.ts"],"sourcesContent":["import Compiler from 'webpack/lib/Compiler';\nimport Compilation from 'webpack/lib/Compilation';\nimport Chunk from 'webpack/lib/Chunk';\nimport RuntimeGlobals from 'webpack/lib/RuntimeGlobals';\nimport Template from 'webpack/lib/Template';\nimport Module from 'webpack/lib/Module';\n\ninterface Options {\n eager?: RegExp | ((module: Module) => boolean);\n excludeChunk?: (chunk: Chunk) => boolean;\n}\n\nclass AsyncEntryStartupPlugin {\n private _options: Options;\n private _runtimeChunks: Map<string | number, Chunk>;\n\n constructor(options?: Options) {\n this._options = options || {};\n this._runtimeChunks = new Map<string | number, Chunk>();\n }\n\n apply(compiler: Compiler): void {\n compiler.hooks.thisCompilation.tap(\n 'AsyncEntryStartupPlugin',\n (compilation: Compilation) => {\n this.collectRuntimeChunks(compilation);\n this.handleRenderStartup(compiler, compilation);\n },\n );\n }\n\n private collectRuntimeChunks(compilation: Compilation): void {\n compilation.hooks.beforeChunkAssets.tap(\n 'CollectRuntimeChunksPlugin',\n () => {\n for (const chunk of compilation.chunks) {\n if (chunk.hasRuntime() && chunk.id !== null) {\n this._runtimeChunks.set(chunk.id, chunk);\n for (const dependentChunk of compilation.chunkGraph.getChunkEntryDependentChunksIterable(\n chunk,\n )) {\n if (dependentChunk.id !== null) {\n this._runtimeChunks.set(dependentChunk.id, dependentChunk);\n }\n }\n }\n }\n },\n );\n }\n\n private handleRenderStartup(\n compiler: Compiler,\n compilation: Compilation,\n ): void {\n compiler.webpack.javascript.JavascriptModulesPlugin.getCompilationHooks(\n compilation,\n ).renderStartup.tap(\n 'AsyncEntryStartupPlugin',\n (source: any, renderContext: Module, upperContext: { chunk: Chunk }) => {\n // Check if this._runtimeChunks contains any runtime chunks\n const isSingleRuntime = compiler.options?.optimization?.runtimeChunk;\n if (upperContext?.chunk.id && isSingleRuntime) {\n if (upperContext?.chunk.hasRuntime()) {\n this._runtimeChunks.set(upperContext.chunk.id, upperContext.chunk);\n return source;\n }\n }\n\n // Check if excludeChunk is provided, use it to decide further processing\n if (\n this._options.excludeChunk &&\n this._options.excludeChunk(upperContext.chunk)\n ) {\n return source;\n }\n\n const runtime = new Set();\n if (\n typeof upperContext.chunk.runtime === 'string' ||\n typeof upperContext.chunk.runtime === 'number'\n ) {\n if (this._runtimeChunks.has(upperContext.chunk.runtime)) {\n runtime.add(this._runtimeChunks.get(upperContext.chunk.runtime));\n } else {\n runtime.add(upperContext.chunk);\n }\n } else if (\n upperContext.chunk.runtime &&\n typeof upperContext.chunk.runtime[Symbol.iterator] === 'function'\n ) {\n for (const runtimeItem of upperContext.chunk.runtime) {\n if (this._runtimeChunks.has(runtimeItem)) {\n runtime.add(this._runtimeChunks.get(runtimeItem));\n }\n }\n }\n if (runtime.size === 0) {\n runtime.add(upperContext.chunk);\n }\n // Get the runtime requirements of the chunk\n let remotes = '';\n let shared = '';\n\n for (const runtimeItem of runtime) {\n const requirements =\n compilation.chunkGraph.getTreeRuntimeRequirements(\n runtimeItem as Chunk,\n );\n\n const hasRemoteModules =\n compilation.chunkGraph.getChunkModulesIterableBySourceType(\n upperContext.chunk,\n 'remote',\n );\n\n const consumeShares =\n compilation.chunkGraph.getChunkModulesIterableBySourceType(\n upperContext.chunk,\n 'consume-shared',\n );\n\n // Check if the chunk has remote get scope\n if (\n requirements.has(RuntimeGlobals.currentRemoteGetScope) ||\n hasRemoteModules ||\n requirements.has('__webpack_require__.vmok')\n ) {\n remotes = `if(__webpack_require__.f && __webpack_require__.f.remotes) __webpack_require__.f.remotes(${JSON.stringify(\n upperContext.chunk.id,\n )}, promiseTrack);`;\n }\n\n // Check if the chunk has share scope map or initialize sharing\n if (\n requirements.has(RuntimeGlobals.shareScopeMap) ||\n requirements.has(RuntimeGlobals.initializeSharing) ||\n consumeShares\n ) {\n shared = `if(__webpack_require__.f && __webpack_require__.f.consumes) __webpack_require__.f.consumes(${JSON.stringify(\n upperContext.chunk.id,\n )}, promiseTrack);`;\n }\n }\n\n // If no remotes or shared, return the source\n if (!remotes && !shared) {\n return source;\n }\n\n // Get the entry modules of the chunk\n const entryModules =\n compilation.chunkGraph.getChunkEntryModulesIterable(\n upperContext.chunk,\n );\n\n const initialEntryModules = [];\n\n // Iterate over the entry modules\n for (const entryModule of entryModules) {\n const entryModuleID = compilation.chunkGraph.getModuleId(entryModule);\n if (entryModuleID) {\n let shouldInclude = false;\n\n // Check if eager is a function and call it\n if (typeof this._options.eager === 'function') {\n shouldInclude = this._options.eager(entryModule);\n } else if (\n this._options.eager &&\n this._options.eager.test(entryModule.identifier())\n ) {\n // Check if eager is a RegExp and test it\n shouldInclude = true;\n }\n\n // If shouldInclude is true, push the module to initialEntryModules\n if (shouldInclude) {\n initialEntryModules.push(\n `__webpack_require__(${JSON.stringify(entryModuleID)});`,\n );\n }\n }\n }\n if (\n compiler.options?.experiments?.topLevelAwait &&\n compiler.options?.experiments?.outputModule\n ) {\n return Template.asString([\n 'var promiseTrack = [];',\n Template.asString(initialEntryModules),\n shared,\n remotes,\n 'await Promise.all(promiseTrack)',\n Template.indent(source.source()),\n ]);\n }\n return Template.asString([\n 'var promiseTrack = [];',\n Template.asString(initialEntryModules),\n shared,\n remotes,\n 'var __webpack_exports__ = Promise.all(promiseTrack).then(function() {',\n Template.indent(source.source()),\n Template.indent('return __webpack_exports__'),\n '});',\n ]);\n },\n );\n }\n}\n\nexport default AsyncEntryStartupPlugin;\n"],"names":["AsyncEntryStartupPlugin","apply","compiler","hooks","thisCompilation","tap","compilation","collectRuntimeChunks","handleRenderStartup","beforeChunkAssets","chunk","chunks","hasRuntime","id","_runtimeChunks","set","dependentChunk","chunkGraph","getChunkEntryDependentChunksIterable","webpack","javascript","JavascriptModulesPlugin","getCompilationHooks","renderStartup","source","renderContext","upperContext","isSingleRuntime","options","optimization","runtimeChunk","_options","excludeChunk","runtime","Set","has","add","get","Symbol","iterator","runtimeItem","size","remotes","shared","requirements","getTreeRuntimeRequirements","hasRemoteModules","getChunkModulesIterableBySourceType","consumeShares","RuntimeGlobals","currentRemoteGetScope","JSON","stringify","shareScopeMap","initializeSharing","entryModules","getChunkEntryModulesIterable","initialEntryModules","entryModule","entryModuleID","getModuleId","shouldInclude","eager","test","identifier","push","experiments","topLevelAwait","outputModule","Template","asString","indent","constructor","Map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/container/AsyncBoundaryPlugin.ts"],"sourcesContent":["import Compiler from 'webpack/lib/Compiler';\nimport Compilation from 'webpack/lib/Compilation';\nimport Chunk, { Source } from 'webpack/lib/Chunk';\nimport RuntimeGlobals from 'webpack/lib/RuntimeGlobals';\nimport Template from 'webpack/lib/Template';\nimport SortableSet from 'webpack/lib/util/SortableSet';\nimport Module from 'webpack/lib/Module';\nimport { StartupRenderContext } from 'webpack/lib/javascript/JavascriptModulesPlugin';\n\ninterface Options {\n eager?: RegExp | ((module: Module) => boolean);\n excludeChunk?: (chunk: Chunk) => boolean;\n}\n\nclass AsyncEntryStartupPlugin {\n private _options: Options;\n private _runtimeChunks = new Map<string | number, Chunk | undefined>();\n\n constructor(options?: Options) {\n this._options = options || {};\n }\n\n apply(compiler: Compiler) {\n compiler.hooks.thisCompilation.tap(\n 'AsyncEntryStartupPlugin',\n (compilation: Compilation) => {\n this._collectRuntimeChunks(compilation);\n this._handleRenderStartup(compiler, compilation);\n },\n );\n }\n\n private _collectRuntimeChunks(compilation: Compilation) {\n compilation.hooks.beforeChunkAssets.tap('AsyncEntryStartupPlugin', () => {\n for (const chunk of compilation.chunks) {\n if (chunk.hasRuntime() && chunk.id !== null) {\n this._runtimeChunks.set(chunk.id, chunk);\n for (const dependentChunk of compilation.chunkGraph.getChunkEntryDependentChunksIterable(\n chunk,\n )) {\n if (dependentChunk.id !== null) {\n this._runtimeChunks.set(dependentChunk.id, dependentChunk);\n }\n }\n }\n }\n });\n }\n\n private _handleRenderStartup(compiler: Compiler, compilation: Compilation) {\n compiler.webpack.javascript.JavascriptModulesPlugin.getCompilationHooks(\n compilation,\n ).renderStartup.tap(\n 'AsyncEntryStartupPlugin',\n (\n source: Source,\n renderContext: Module,\n upperContext: StartupRenderContext,\n ) => {\n const isSingleRuntime = compiler.options?.optimization?.runtimeChunk;\n if (upperContext?.chunk.id && isSingleRuntime) {\n if (upperContext?.chunk.hasRuntime()) {\n this._runtimeChunks.set(upperContext.chunk.id, upperContext.chunk);\n return source;\n }\n }\n\n if (\n this._options.excludeChunk &&\n this._options.excludeChunk(upperContext.chunk)\n ) {\n return source;\n }\n\n const runtime = this._getChunkRuntime(upperContext);\n\n let remotes = '';\n let shared = '';\n\n for (const runtimeItem of runtime) {\n if (!runtimeItem) {\n continue;\n }\n const requirements =\n compilation.chunkGraph.getTreeRuntimeRequirements(runtimeItem);\n const hasRemoteModules =\n compilation.chunkGraph.getChunkModulesIterableBySourceType(\n upperContext.chunk,\n 'remote',\n );\n const consumeShares =\n compilation.chunkGraph.getChunkModulesIterableBySourceType(\n upperContext.chunk,\n 'consume-shared',\n );\n const entryOptions = upperContext.chunk.getEntryOptions();\n const chunksToRef = entryOptions?.dependOn\n ? [...entryOptions.dependOn, upperContext.chunk.id]\n : [upperContext.chunk.id];\n\n remotes = this._getRemotes(\n requirements,\n Boolean(hasRemoteModules),\n chunksToRef,\n remotes,\n );\n shared = this._getShared(\n requirements,\n Boolean(consumeShares),\n chunksToRef,\n shared,\n );\n }\n\n if (!remotes && !shared) {\n return source;\n }\n\n const initialEntryModules = this._getInitialEntryModules(\n compilation,\n upperContext,\n );\n return this._getTemplateString(\n compiler,\n initialEntryModules,\n shared,\n remotes,\n source,\n );\n },\n );\n }\n\n private _getChunkRuntime(upperContext: StartupRenderContext) {\n const runtime = new Set<Chunk>();\n const chunkRuntime = upperContext.chunk.runtime;\n if (chunkRuntime) {\n const runtimeItems =\n chunkRuntime instanceof SortableSet ? chunkRuntime : [chunkRuntime];\n for (const runtimeItem of runtimeItems) {\n const chunk = this._runtimeChunks.get(runtimeItem);\n if (chunk) {\n runtime.add(chunk);\n }\n }\n }\n if (runtime.size === 0) {\n runtime.add(upperContext.chunk);\n }\n return runtime;\n }\n private _getRemotes(\n requirements: ReadonlySet<string>,\n hasRemoteModules: boolean,\n chunksToRef: (Chunk.ChunkId | null)[],\n remotes: string,\n ): string {\n if (\n !requirements.has(RuntimeGlobals.currentRemoteGetScope) &&\n !hasRemoteModules &&\n !requirements.has('__webpack_require__.vmok')\n ) {\n return remotes;\n }\n\n const remotesParts = remotes.startsWith(\n 'if(__webpack_require__.f && __webpack_require__.f.remotes) {',\n )\n ? [remotes]\n : [\n remotes,\n 'if(__webpack_require__.f && __webpack_require__.f.remotes) {',\n ];\n\n for (const chunkId of chunksToRef) {\n if (chunkId !== null) {\n remotesParts.push(\n ` __webpack_require__.f.remotes(${JSON.stringify(\n chunkId,\n )}, promiseTrack);`,\n );\n }\n }\n\n remotesParts.push('}');\n return remotesParts.join('');\n }\n\n private _getShared(\n requirements: ReadonlySet<string>,\n consumeShares: boolean,\n chunksToRef: (Chunk.ChunkId | null)[],\n shared: string,\n ): string {\n if (\n !requirements.has(RuntimeGlobals.shareScopeMap) &&\n !consumeShares &&\n !requirements.has(RuntimeGlobals.initializeSharing)\n ) {\n return shared;\n }\n\n const sharedParts = shared.startsWith(\n 'if(__webpack_require__.f && __webpack_require__.f.consumes) {',\n )\n ? [shared]\n : [\n shared,\n 'if(__webpack_require__.f && __webpack_require__.f.consumes) {',\n ];\n\n for (const chunkId of chunksToRef) {\n if (chunkId !== null) {\n sharedParts.push(\n ` __webpack_require__.f.consumes(${JSON.stringify(\n chunkId,\n )}, promiseTrack);`,\n );\n }\n }\n\n sharedParts.push('}');\n return sharedParts.join('');\n }\n\n private _getInitialEntryModules(\n compilation: Compilation,\n upperContext: { chunk: Chunk },\n ): string[] {\n const entryModules = compilation.chunkGraph.getChunkEntryModulesIterable(\n upperContext.chunk,\n );\n const initialEntryModules = [];\n\n for (const entryModule of entryModules) {\n const entryModuleID = compilation.chunkGraph.getModuleId(entryModule);\n if (entryModuleID) {\n let shouldInclude = false;\n\n if (typeof this._options.eager === 'function') {\n shouldInclude = this._options.eager(entryModule);\n } else if (\n this._options.eager &&\n this._options.eager.test(entryModule.identifier())\n ) {\n shouldInclude = true;\n }\n\n if (shouldInclude) {\n initialEntryModules.push(\n `__webpack_require__(${JSON.stringify(entryModuleID)});`,\n );\n }\n }\n }\n return initialEntryModules;\n }\n\n private _getTemplateString(\n compiler: Compiler,\n initialEntryModules: string[],\n shared: string,\n remotes: string,\n source: Source,\n ) {\n if (\n compiler.options?.experiments?.topLevelAwait &&\n compiler.options?.experiments?.outputModule\n ) {\n return Template.asString([\n 'var promiseTrack = [];',\n Template.asString(initialEntryModules),\n shared,\n remotes,\n 'await Promise.all(promiseTrack)',\n Template.indent(source.source()),\n ]);\n }\n return Template.asString([\n 'var promiseTrack = [];',\n Template.asString(initialEntryModules),\n shared,\n remotes,\n 'var __webpack_exports__ = Promise.all(promiseTrack).then(function() {',\n Template.indent(source.source()),\n Template.indent('return __webpack_exports__'),\n '});',\n ]);\n }\n}\n\nexport default AsyncEntryStartupPlugin;\n"],"names":["AsyncEntryStartupPlugin","apply","compiler","hooks","thisCompilation","tap","compilation","_collectRuntimeChunks","_handleRenderStartup","beforeChunkAssets","chunk","chunks","hasRuntime","id","_runtimeChunks","set","dependentChunk","chunkGraph","getChunkEntryDependentChunksIterable","webpack","javascript","JavascriptModulesPlugin","getCompilationHooks","renderStartup","source","renderContext","upperContext","isSingleRuntime","options","optimization","runtimeChunk","_options","excludeChunk","runtime","_getChunkRuntime","remotes","shared","runtimeItem","requirements","getTreeRuntimeRequirements","hasRemoteModules","getChunkModulesIterableBySourceType","consumeShares","entryOptions","getEntryOptions","chunksToRef","dependOn","_getRemotes","Boolean","_getShared","initialEntryModules","_getInitialEntryModules","_getTemplateString","Set","chunkRuntime","runtimeItems","SortableSet","get","add","size","has","RuntimeGlobals","currentRemoteGetScope","remotesParts","startsWith","chunkId","push","JSON","stringify","join","shareScopeMap","initializeSharing","sharedParts","entryModules","getChunkEntryModulesIterable","entryModule","entryModuleID","getModuleId","shouldInclude","eager","test","identifier","experiments","topLevelAwait","outputModule","Template","asString","indent","constructor","Map"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Compiler from 'webpack/lib/Compiler';
|
|
2
|
+
/**
|
|
3
|
+
* @typedef {import("webpack").Compiler} Compiler
|
|
4
|
+
* @typedef {import("webpack").Compilation} Compilation
|
|
5
|
+
* @typedef {import("webpack").Chunk} Chunk
|
|
6
|
+
* @typedef {import("webpack").Module} Module
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* This class is used to hoist container references in the code.
|
|
10
|
+
* @constructor
|
|
11
|
+
*/
|
|
12
|
+
export declare class HoistContainerReferences {
|
|
13
|
+
/**
|
|
14
|
+
* @function apply
|
|
15
|
+
* @param {Compiler} compiler The webpack compiler object
|
|
16
|
+
*/
|
|
17
|
+
apply(compiler: Compiler): void;
|
|
18
|
+
}
|
|
19
|
+
export default HoistContainerReferences;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
HoistContainerReferences: function() {
|
|
13
|
+
return HoistContainerReferences;
|
|
14
|
+
},
|
|
15
|
+
default: function() {
|
|
16
|
+
return _default;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
let HoistContainerReferences = class HoistContainerReferences {
|
|
20
|
+
/**
|
|
21
|
+
* @function apply
|
|
22
|
+
* @param {Compiler} compiler The webpack compiler object
|
|
23
|
+
*/ apply(compiler) {
|
|
24
|
+
// Hook into the compilation process
|
|
25
|
+
compiler.hooks.thisCompilation.tap('HoistContainerReferences', (compilation)=>{
|
|
26
|
+
// After chunks are optimized, perform the hoisting
|
|
27
|
+
compilation.hooks.afterOptimizeChunks.tap('HoistContainerReferences', (chunks, chunkGroups)=>{
|
|
28
|
+
// Create a map to store chunks by their id or name
|
|
29
|
+
/** @type {Map<(string|number), Chunk>} */ const chunkSet = new Map();
|
|
30
|
+
// Create a set to store external module requests
|
|
31
|
+
/** @type {Set<Module>} */ const externalRequests = new Set();
|
|
32
|
+
// Populate the chunkSet with chunks
|
|
33
|
+
for (const chunk of chunks){
|
|
34
|
+
const ident = chunk.id || chunk.name;
|
|
35
|
+
if (ident) {
|
|
36
|
+
chunkSet.set(ident, chunk);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Iterate over chunks again to handle remote modules
|
|
40
|
+
for (const chunk of chunks){
|
|
41
|
+
// Get iterable of remote modules for the chunk
|
|
42
|
+
const remoteModules = compilation.chunkGraph.getChunkModulesIterableBySourceType(chunk, 'remote');
|
|
43
|
+
if (!remoteModules) continue;
|
|
44
|
+
// Iterate over remote modules
|
|
45
|
+
for (const remoteModule of remoteModules){
|
|
46
|
+
// Iterate over dependencies of the remote module
|
|
47
|
+
for (const dep of remoteModule.dependencies){
|
|
48
|
+
// Get the module associated with the dependency
|
|
49
|
+
const mod = compilation.moduleGraph.getModule(dep);
|
|
50
|
+
// If the module exists and the chunk has a runtime, add the module to externalRequests
|
|
51
|
+
if (mod !== null && chunk.runtime) {
|
|
52
|
+
externalRequests.add(mod);
|
|
53
|
+
// Get the runtime chunk(s) associated with the chunk
|
|
54
|
+
const runtimeChunk = typeof chunk.runtime === 'string' || typeof chunk.runtime === 'number' ? [
|
|
55
|
+
chunk.runtime
|
|
56
|
+
] : [
|
|
57
|
+
...chunk.runtime
|
|
58
|
+
];
|
|
59
|
+
// Iterate over runtime chunks
|
|
60
|
+
for (const runtimeChunkId of runtimeChunk){
|
|
61
|
+
// Get the runtime chunk from the chunkSet
|
|
62
|
+
const runtimeChunk = chunkSet.get(runtimeChunkId);
|
|
63
|
+
// If the runtime chunk exists, connect it with the module in the chunk graph
|
|
64
|
+
if (runtimeChunk) {
|
|
65
|
+
compilation.chunkGraph.connectChunkAndModule(runtimeChunk, mod);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const _default = HoistContainerReferences;
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=HoistContainerReferencesPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/container/HoistContainerReferencesPlugin.ts"],"sourcesContent":["import Compiler from 'webpack/lib/Compiler';\nimport Module from 'webpack/lib/Module';\nimport Chunk from 'webpack/lib/Chunk';\nimport Compilation from 'webpack/lib/Compilation';\nimport ChunkGroup from 'webpack/lib/ChunkGroup';\n\n/**\n * @typedef {import(\"webpack\").Compiler} Compiler\n * @typedef {import(\"webpack\").Compilation} Compilation\n * @typedef {import(\"webpack\").Chunk} Chunk\n * @typedef {import(\"webpack\").Module} Module\n */\n\n/**\n * This class is used to hoist container references in the code.\n * @constructor\n */\nexport class HoistContainerReferences {\n /**\n * @function apply\n * @param {Compiler} compiler The webpack compiler object\n */\n apply(compiler: Compiler): void {\n // Hook into the compilation process\n compiler.hooks.thisCompilation.tap(\n 'HoistContainerReferences',\n (compilation: Compilation) => {\n // After chunks are optimized, perform the hoisting\n compilation.hooks.afterOptimizeChunks.tap(\n 'HoistContainerReferences',\n (chunks: Iterable<Chunk>, chunkGroups: ChunkGroup[]) => {\n // Create a map to store chunks by their id or name\n /** @type {Map<(string|number), Chunk>} */\n const chunkSet = new Map<string | number, Chunk>();\n // Create a set to store external module requests\n /** @type {Set<Module>} */\n const externalRequests = new Set<Module>();\n // Populate the chunkSet with chunks\n for (const chunk of chunks) {\n const ident = chunk.id || chunk.name;\n if (ident) {\n chunkSet.set(ident, chunk);\n }\n }\n // Iterate over chunks again to handle remote modules\n for (const chunk of chunks) {\n // Get iterable of remote modules for the chunk\n const remoteModules =\n compilation.chunkGraph.getChunkModulesIterableBySourceType(\n chunk,\n 'remote',\n );\n if (!remoteModules) continue;\n // Iterate over remote modules\n for (const remoteModule of remoteModules) {\n // Iterate over dependencies of the remote module\n for (const dep of remoteModule.dependencies) {\n // Get the module associated with the dependency\n const mod = compilation.moduleGraph.getModule(dep);\n // If the module exists and the chunk has a runtime, add the module to externalRequests\n if (mod !== null && chunk.runtime) {\n externalRequests.add(mod);\n // Get the runtime chunk(s) associated with the chunk\n const runtimeChunk =\n typeof chunk.runtime === 'string' ||\n typeof chunk.runtime === 'number'\n ? [chunk.runtime]\n : [...chunk.runtime];\n // Iterate over runtime chunks\n for (const runtimeChunkId of runtimeChunk) {\n // Get the runtime chunk from the chunkSet\n const runtimeChunk = chunkSet.get(runtimeChunkId);\n // If the runtime chunk exists, connect it with the module in the chunk graph\n if (runtimeChunk) {\n compilation.chunkGraph.connectChunkAndModule(\n runtimeChunk,\n mod,\n );\n }\n }\n }\n }\n }\n }\n },\n );\n },\n );\n }\n}\nexport default HoistContainerReferences;\n"],"names":["HoistContainerReferences","apply","compiler","hooks","thisCompilation","tap","compilation","afterOptimizeChunks","chunks","chunkGroups","chunkSet","Map","externalRequests","Set","chunk","ident","id","name","set","remoteModules","chunkGraph","getChunkModulesIterableBySourceType","remoteModule","dep","dependencies","mod","moduleGraph","getModule","runtime","add","runtimeChunk","runtimeChunkId","get","connectChunkAndModule"],"mappings":";;;;;;;;;;;IAiBaA,wBAAwB;eAAxBA;;IAyEb,OAAwC;eAAxC;;;AAzEO,IAAA,AAAMA,2BAAN,MAAMA;IACX;;;GAGC,GACDC,MAAMC,QAAkB,EAAQ;QAC9B,oCAAoC;QACpCA,SAASC,KAAK,CAACC,eAAe,CAACC,GAAG,CAChC,4BACA,CAACC;YACC,mDAAmD;YACnDA,YAAYH,KAAK,CAACI,mBAAmB,CAACF,GAAG,CACvC,4BACA,CAACG,QAAyBC;gBACxB,mDAAmD;gBACnD,wCAAwC,GACxC,MAAMC,WAAW,IAAIC;gBACrB,iDAAiD;gBACjD,wBAAwB,GACxB,MAAMC,mBAAmB,IAAIC;gBAC7B,oCAAoC;gBACpC,KAAK,MAAMC,SAASN,OAAQ;oBAC1B,MAAMO,QAAQD,MAAME,EAAE,IAAIF,MAAMG,IAAI;oBACpC,IAAIF,OAAO;wBACTL,SAASQ,GAAG,CAACH,OAAOD;oBACtB;gBACF;gBACA,qDAAqD;gBACrD,KAAK,MAAMA,SAASN,OAAQ;oBAC1B,+CAA+C;oBAC/C,MAAMW,gBACJb,YAAYc,UAAU,CAACC,mCAAmC,CACxDP,OACA;oBAEJ,IAAI,CAACK,eAAe;oBACpB,8BAA8B;oBAC9B,KAAK,MAAMG,gBAAgBH,cAAe;wBACxC,iDAAiD;wBACjD,KAAK,MAAMI,OAAOD,aAAaE,YAAY,CAAE;4BAC3C,gDAAgD;4BAChD,MAAMC,MAAMnB,YAAYoB,WAAW,CAACC,SAAS,CAACJ;4BAC9C,uFAAuF;4BACvF,IAAIE,QAAQ,QAAQX,MAAMc,OAAO,EAAE;gCACjChB,iBAAiBiB,GAAG,CAACJ;gCACrB,qDAAqD;gCACrD,MAAMK,eACJ,OAAOhB,MAAMc,OAAO,KAAK,YACzB,OAAOd,MAAMc,OAAO,KAAK,WACrB;oCAACd,MAAMc,OAAO;iCAAC,GACf;uCAAId,MAAMc,OAAO;iCAAC;gCACxB,8BAA8B;gCAC9B,KAAK,MAAMG,kBAAkBD,aAAc;oCACzC,0CAA0C;oCAC1C,MAAMA,eAAepB,SAASsB,GAAG,CAACD;oCAClC,6EAA6E;oCAC7E,IAAID,cAAc;wCAChBxB,YAAYc,UAAU,CAACa,qBAAqB,CAC1CH,cACAL;oCAEJ;gCACF;4BACF;wBACF;oBACF;gBACF;YACF;QAEJ;IAEJ;AACF;MACA,WAAezB"}
|
|
@@ -23,14 +23,13 @@ let RemoteRuntimeModule = class RemoteRuntimeModule extends _RuntimeModule.defau
|
|
|
23
23
|
/**
|
|
24
24
|
* @returns {string | null} runtime code
|
|
25
25
|
*/ generate() {
|
|
26
|
-
var _this_chunk
|
|
26
|
+
var _this_chunk;
|
|
27
27
|
const { compilation, chunkGraph } = this;
|
|
28
28
|
const { runtimeTemplate, moduleGraph } = compilation;
|
|
29
29
|
const chunkToRemotesMapping = {};
|
|
30
30
|
const idToExternalAndNameMapping = {};
|
|
31
31
|
const allChunks = [
|
|
32
|
-
...Array.from(((_this_chunk = this.chunk) == null ? void 0 : _this_chunk.
|
|
33
|
-
...Array.from(((_this_chunk1 = this.chunk) == null ? void 0 : _this_chunk1.getAllInitialChunks()) || [])
|
|
32
|
+
...Array.from(((_this_chunk = this.chunk) == null ? void 0 : _this_chunk.getAllReferencedChunks()) || [])
|
|
34
33
|
];
|
|
35
34
|
for (const chunk of allChunks){
|
|
36
35
|
const modules = chunkGraph == null ? void 0 : chunkGraph.getChunkModulesIterableBySourceType(chunk, 'remote');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/container/RemoteRuntimeModule.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy\n*/\nimport RuntimeGlobals from 'webpack/lib/RuntimeGlobals';\nimport type Compilation from 'webpack/lib/Compilation';\nimport RemoteModule from './RemoteModule';\nimport RuntimeModule from 'webpack/lib/RuntimeModule';\nimport Template from 'webpack/lib/Template';\n\nclass RemoteRuntimeModule extends RuntimeModule {\n constructor() {\n super('remotes loading');\n }\n\n /**\n * @returns {string | null} runtime code\n */\n override generate(): string | null {\n const { compilation, chunkGraph } = this;\n const { runtimeTemplate, moduleGraph } = compilation as Compilation;\n const chunkToRemotesMapping: Record<string, any> = {};\n const idToExternalAndNameMapping: Record<string | number, any> = {};\n const allChunks = [\n ...Array.from(this.chunk?.
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/container/RemoteRuntimeModule.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy\n*/\nimport RuntimeGlobals from 'webpack/lib/RuntimeGlobals';\nimport type Compilation from 'webpack/lib/Compilation';\nimport RemoteModule from './RemoteModule';\nimport RuntimeModule from 'webpack/lib/RuntimeModule';\nimport Template from 'webpack/lib/Template';\n\nclass RemoteRuntimeModule extends RuntimeModule {\n constructor() {\n super('remotes loading');\n }\n\n /**\n * @returns {string | null} runtime code\n */\n override generate(): string | null {\n const { compilation, chunkGraph } = this;\n const { runtimeTemplate, moduleGraph } = compilation as Compilation;\n const chunkToRemotesMapping: Record<string, any> = {};\n const idToExternalAndNameMapping: Record<string | number, any> = {};\n const allChunks = [\n ...Array.from(this.chunk?.getAllReferencedChunks() || []),\n ];\n\n for (const chunk of allChunks) {\n const modules = chunkGraph?.getChunkModulesIterableBySourceType(\n chunk,\n 'remote',\n );\n if (!modules) {\n continue;\n }\n // @ts-ignore\n const remotes = (chunkToRemotesMapping[chunk.id] = []);\n for (const m of modules) {\n const module: RemoteModule = m as RemoteModule;\n const name = module.internalRequest;\n const id = chunkGraph ? chunkGraph.getModuleId(module) : undefined;\n const { shareScope } = module;\n const dep = module.dependencies[0];\n const externalModule = moduleGraph.getModule(dep);\n const externalModuleId =\n chunkGraph && externalModule\n ? chunkGraph.getModuleId(externalModule)\n : undefined;\n if (id !== undefined) {\n //@ts-ignore\n remotes.push(id);\n idToExternalAndNameMapping[id] = [shareScope, name, externalModuleId];\n }\n }\n }\n return Template.asString([\n `var chunkMapping = ${JSON.stringify(\n chunkToRemotesMapping,\n null,\n '\\t',\n )};`,\n `var idToExternalAndNameMapping = ${JSON.stringify(\n idToExternalAndNameMapping,\n null,\n '\\t',\n )};`,\n `${\n RuntimeGlobals.ensureChunkHandlers\n }.remotes = ${runtimeTemplate.basicFunction('chunkId, promises', [\n `if(${RuntimeGlobals.hasOwnProperty}(chunkMapping, chunkId)) {`,\n Template.indent([\n `chunkMapping[chunkId].forEach(${runtimeTemplate.basicFunction('id', [\n `var getScope = ${RuntimeGlobals.currentRemoteGetScope};`,\n 'if(!getScope) getScope = [];',\n 'var data = idToExternalAndNameMapping[id];',\n 'if(getScope.indexOf(data) >= 0) return;',\n 'getScope.push(data);',\n `if(data.p) return promises.push(data.p);`,\n `var onError = ${runtimeTemplate.basicFunction('error', [\n 'if(!error) error = new Error(\"Container missing\");',\n 'if(typeof error.message === \"string\")',\n Template.indent(\n `error.message += '\\\\nwhile loading \"' + data[1] + '\" from ' + data[2];`,\n ),\n `${\n RuntimeGlobals.moduleFactories\n }[id] = ${runtimeTemplate.basicFunction('', ['throw error;'])}`,\n 'data.p = 0;',\n ])};`,\n `var handleFunction = ${runtimeTemplate.basicFunction(\n 'fn, arg1, arg2, d, next, first',\n [\n 'try {',\n Template.indent([\n 'var promise = fn(arg1, arg2);',\n 'if(promise && promise.then) {',\n Template.indent([\n `var p = promise.then(${runtimeTemplate.returningFunction(\n 'next(result, d)',\n 'result',\n )}, onError);`,\n `if(first) promises.push(data.p = p); else return p;`,\n ]),\n '} else {',\n Template.indent(['return next(promise, d, first);']),\n '}',\n ]),\n '} catch(error) {',\n Template.indent(['onError(error);']),\n '}',\n ],\n )}`,\n `var onExternal = ${runtimeTemplate.returningFunction(\n `external ? handleFunction(${RuntimeGlobals.initializeSharing}, data[0], 0, external, onInitialized, first) : onError()`,\n 'external, _, first',\n )};`,\n `var onInitialized = ${runtimeTemplate.returningFunction(\n `handleFunction(external.get, data[1], getScope, 0, onFactory, first)`,\n '_, external, first',\n )};`,\n `var onFactory = ${runtimeTemplate.basicFunction('factory', [\n 'data.p = 1;',\n `${\n RuntimeGlobals.moduleFactories\n }[id] = ${runtimeTemplate.basicFunction('module', [\n 'module.exports = factory();',\n ])}`,\n ])};`,\n `handleFunction(${RuntimeGlobals.require}, data[2], 0, 0, onExternal, 1);`,\n ])});`,\n ]),\n '}',\n ])}`,\n ]);\n }\n}\n\nexport default RemoteRuntimeModule;\n"],"names":["RemoteRuntimeModule","RuntimeModule","generate","compilation","chunkGraph","runtimeTemplate","moduleGraph","chunkToRemotesMapping","idToExternalAndNameMapping","allChunks","Array","from","chunk","getAllReferencedChunks","modules","getChunkModulesIterableBySourceType","remotes","id","m","module","name","internalRequest","getModuleId","undefined","shareScope","dep","dependencies","externalModule","getModule","externalModuleId","push","Template","asString","JSON","stringify","RuntimeGlobals","ensureChunkHandlers","basicFunction","hasOwnProperty","indent","currentRemoteGetScope","moduleFactories","returningFunction","initializeSharing","require","constructor"],"mappings":"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"}
|
|
@@ -65,7 +65,7 @@ let ConsumeSharedRuntimeModule = class ConsumeSharedRuntimeModule extends _Runti
|
|
|
65
65
|
/**
|
|
66
66
|
* @returns {string | null} runtime code
|
|
67
67
|
*/ generate() {
|
|
68
|
-
var _this_chunk, _this_chunk1
|
|
68
|
+
var _this_chunk, _this_chunk1;
|
|
69
69
|
const compilation = this.compilation;
|
|
70
70
|
const chunkGraph = this.chunkGraph;
|
|
71
71
|
const { runtimeTemplate, codeGenerationResults } = compilation;
|
|
@@ -86,8 +86,7 @@ let ConsumeSharedRuntimeModule = class ConsumeSharedRuntimeModule extends _Runti
|
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
const allChunks = [
|
|
89
|
-
...((_this_chunk = this.chunk) == null ? void 0 : _this_chunk.
|
|
90
|
-
...((_this_chunk1 = this.chunk) == null ? void 0 : _this_chunk1.getAllInitialChunks()) || []
|
|
89
|
+
...((_this_chunk = this.chunk) == null ? void 0 : _this_chunk.getAllReferencedChunks()) || []
|
|
91
90
|
];
|
|
92
91
|
for (const chunk of allChunks){
|
|
93
92
|
const modules = chunkGraph.getChunkModulesIterableBySourceType(chunk, 'consume-shared');
|
|
@@ -96,7 +95,7 @@ let ConsumeSharedRuntimeModule = class ConsumeSharedRuntimeModule extends _Runti
|
|
|
96
95
|
addModules(modules, chunk, chunkToModuleMapping[chunk.id.toString()] = []);
|
|
97
96
|
}
|
|
98
97
|
for (const chunk of [
|
|
99
|
-
...((
|
|
98
|
+
...((_this_chunk1 = this.chunk) == null ? void 0 : _this_chunk1.getAllInitialChunks()) || []
|
|
100
99
|
]){
|
|
101
100
|
const modules = chunkGraph.getChunkModulesIterableBySourceType(chunk, 'consume-shared');
|
|
102
101
|
if (!modules) continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/ConsumeSharedRuntimeModule.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy\n*/\n\nimport * as RuntimeGlobals from 'webpack/lib/RuntimeGlobals';\nimport Template from 'webpack/lib/Template';\nimport {\n parseVersionRuntimeCode,\n versionLtRuntimeCode,\n rangeToStringRuntimeCode,\n satisfyRuntimeCode,\n} from 'webpack/lib/util/semver';\nimport RuntimeModule from 'webpack/lib/RuntimeModule';\nimport Module from 'webpack/lib/Module';\nimport ConsumeSharedModule from './ConsumeSharedModule';\nimport type ChunkGraph from 'webpack/lib/ChunkGraph';\nimport type Compilation from 'webpack/lib/Compilation';\nimport type Chunk from 'webpack/lib/Chunk';\nimport { Source } from 'webpack-sources';\n\nclass ConsumeSharedRuntimeModule extends RuntimeModule {\n private _runtimeRequirements: ReadonlySet<string>;\n\n /**\n * @param {ReadonlySet<string>} runtimeRequirements runtime requirements\n */\n constructor(runtimeRequirements: ReadonlySet<string>) {\n super('consumes', RuntimeModule.STAGE_ATTACH);\n this._runtimeRequirements = runtimeRequirements;\n }\n\n /**\n * @returns {string | null} runtime code\n */\n override generate(): string | null {\n const compilation: Compilation = this.compilation!;\n const chunkGraph: ChunkGraph = this.chunkGraph!;\n const { runtimeTemplate, codeGenerationResults } = compilation;\n const chunkToModuleMapping: Record<string, any> = {};\n const moduleIdToSourceMapping: Map<string | number, Source> = new Map();\n const initialConsumes: (string | number)[] = [];\n /**\n *\n * @param {Iterable<Module>} modules modules\n * @param {Chunk} chunk the chunk\n * @param {(string | number)[]} list list of ids\n */\n const addModules = (\n modules: Iterable<Module>,\n chunk: Chunk,\n list: (string | number)[],\n ) => {\n for (const m of modules) {\n const module: ConsumeSharedModule = m as ConsumeSharedModule;\n const id = chunkGraph.getModuleId(module);\n list.push(id);\n moduleIdToSourceMapping.set(\n id,\n codeGenerationResults.getSource(\n module,\n chunk.runtime,\n 'consume-shared',\n ),\n );\n }\n };\n const allChunks = [\n ...(this.chunk?.getAllAsyncChunks() || []),\n ...(this.chunk?.getAllInitialChunks() || []),\n ];\n for (const chunk of allChunks) {\n const modules = chunkGraph.getChunkModulesIterableBySourceType(\n chunk,\n 'consume-shared',\n );\n if (!modules) continue;\n if (!chunk.id) continue;\n\n addModules(\n modules,\n chunk,\n (chunkToModuleMapping[chunk.id.toString()] = []),\n );\n }\n for (const chunk of [...(this.chunk?.getAllInitialChunks() || [])]) {\n const modules = chunkGraph.getChunkModulesIterableBySourceType(\n chunk,\n 'consume-shared',\n );\n if (!modules) continue;\n addModules(modules, chunk, initialConsumes);\n }\n\n if (moduleIdToSourceMapping.size === 0) return null;\n\n return Template.asString([\n parseVersionRuntimeCode(runtimeTemplate),\n versionLtRuntimeCode(runtimeTemplate),\n rangeToStringRuntimeCode(runtimeTemplate),\n satisfyRuntimeCode(runtimeTemplate),\n `var ensureExistence = ${runtimeTemplate.basicFunction('scopeName, key', [\n `var scope = ${RuntimeGlobals.shareScopeMap}[scopeName];`,\n `if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) throw new Error(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);`,\n 'return scope;',\n ])};`,\n `var findVersion = ${runtimeTemplate.basicFunction('scope, key', [\n 'var versions = scope[key];',\n `var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(\n 'a, b',\n ['return !a || versionLt(a, b) ? b : a;'],\n )}, 0);`,\n 'return key && versions[key]',\n ])};`,\n `var findSingletonVersionKey = ${runtimeTemplate.basicFunction(\n 'scope, key',\n [\n 'var versions = scope[key];',\n `return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(\n 'a, b',\n ['return !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;'],\n )}, 0);`,\n ],\n )};`,\n `var getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(\n 'scope, key, version, requiredVersion',\n [\n `return \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"`,\n ],\n )};`,\n `var getSingleton = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'var version = findSingletonVersionKey(scope, key);',\n 'return get(scope[key][version]);',\n ],\n )};`,\n `var getSingletonVersion = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'var version = findSingletonVersionKey(scope, key);',\n 'if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));',\n 'return get(scope[key][version]);',\n ],\n )};`,\n `var getStrictSingletonVersion = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'var version = findSingletonVersionKey(scope, key);',\n 'if (!satisfy(requiredVersion, version)) ' +\n 'throw new Error(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));',\n 'return get(scope[key][version]);',\n ],\n )};`,\n `var findValidVersion = ${runtimeTemplate.basicFunction(\n 'scope, key, requiredVersion',\n [\n 'var versions = scope[key];',\n `var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(\n 'a, b',\n [\n 'if (!satisfy(requiredVersion, b)) return a;',\n 'return !a || versionLt(a, b) ? b : a;',\n ],\n )}, 0);`,\n 'return key && versions[key]',\n ],\n )};`,\n `var getInvalidVersionMessage = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'var versions = scope[key];',\n 'return \"No satisfying version (\" + rangeToString(requiredVersion) + \") of shared module \" + key + \" found in shared scope \" + scopeName + \".\\\\n\" +',\n `\\t\"Available versions: \" + Object.keys(versions).map(${runtimeTemplate.basicFunction(\n 'key',\n ['return key + \" from \" + versions[key].from;'],\n )}).join(\", \");`,\n ],\n )};`,\n `var getValidVersion = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'var entry = findValidVersion(scope, key, requiredVersion);',\n 'if(entry) return get(entry);',\n 'throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));',\n ],\n )};`,\n `var warn = ${\n compilation.outputOptions.ignoreBrowserWarnings\n ? runtimeTemplate.basicFunction('', '')\n : runtimeTemplate.basicFunction('msg', [\n 'if (typeof console !== \"undefined\" && console.warn) console.warn(msg);',\n ])\n };`,\n `var warnInvalidVersion = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));',\n ],\n )};`,\n `var get = ${runtimeTemplate.basicFunction('entry', [\n 'entry.loaded = 1;',\n 'return entry.get()',\n ])};`,\n `var init = ${runtimeTemplate.returningFunction(\n Template.asString([\n 'function(scopeName, a, b, c) {',\n Template.indent([\n `var promise = ${RuntimeGlobals.initializeSharing}(scopeName);`,\n `if (promise && promise.then) return promise.then(fn.bind(fn, scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], a, b, c));`,\n `return fn(scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], a, b, c);`,\n ]),\n '}',\n ]),\n 'fn',\n )};`,\n '',\n `var load = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key',\n [\n 'ensureExistence(scopeName, key);',\n 'return get(findVersion(scope, key));',\n ],\n )});`,\n `var loadFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, fallback',\n [\n `return scope && ${RuntimeGlobals.hasOwnProperty}(scope, key) ? get(findVersion(scope, key)) : fallback();`,\n ],\n )});`,\n `var loadVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version',\n [\n 'ensureExistence(scopeName, key);',\n 'return get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));',\n ],\n )});`,\n `var loadSingleton = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key',\n [\n 'ensureExistence(scopeName, key);',\n 'return getSingleton(scope, scopeName, key);',\n ],\n )});`,\n `var loadSingletonVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version',\n [\n 'ensureExistence(scopeName, key);',\n 'return getSingletonVersion(scope, scopeName, key, version);',\n ],\n )});`,\n `var loadStrictVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version',\n [\n 'ensureExistence(scopeName, key);',\n 'return getValidVersion(scope, scopeName, key, version);',\n ],\n )});`,\n `var loadStrictSingletonVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version',\n [\n 'ensureExistence(scopeName, key);',\n 'return getStrictSingletonVersion(scope, scopeName, key, version);',\n ],\n )});`,\n `var loadVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version, fallback',\n [\n `if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,\n 'return get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));',\n ],\n )});`,\n `var loadSingletonFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, fallback',\n [\n `if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,\n 'return getSingleton(scope, scopeName, key);',\n ],\n )});`,\n `var loadSingletonVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version, fallback',\n [\n `if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,\n 'return getSingletonVersion(scope, scopeName, key, version);',\n ],\n )});`,\n `var loadStrictVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version, fallback',\n [\n `var entry = scope && ${RuntimeGlobals.hasOwnProperty}(scope, key) && findValidVersion(scope, key, version);`,\n `return entry ? get(entry) : fallback();`,\n ],\n )});`,\n `var loadStrictSingletonVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version, fallback',\n [\n `if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,\n 'return getStrictSingletonVersion(scope, scopeName, key, version);',\n ],\n )});`,\n 'var installedModules = {};',\n 'var moduleToHandlerMapping = {',\n Template.indent(\n Array.from(\n moduleIdToSourceMapping,\n ([key, source]) => `${JSON.stringify(key)}: ${source.source()}`,\n ).join(',\\n'),\n ),\n '};',\n\n initialConsumes.length > 0\n ? Template.asString([\n `var initialConsumes = ${JSON.stringify(initialConsumes)};`,\n `initialConsumes.forEach(${runtimeTemplate.basicFunction('id', [\n `${\n RuntimeGlobals.moduleFactories\n }[id] = ${runtimeTemplate.basicFunction('module', [\n '// Handle case when module is used sync',\n 'installedModules[id] = 0;',\n `delete ${RuntimeGlobals.moduleCache}[id];`,\n 'var factory = moduleToHandlerMapping[id]();',\n 'if(typeof factory !== \"function\") throw new Error(\"Shared module is not available for eager consumption: \" + id);',\n `module.exports = factory();`,\n ])}`,\n ])});`,\n ])\n : '// no consumes in initial chunks',\n this._runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)\n ? Template.asString([\n `var chunkMapping = ${JSON.stringify(\n chunkToModuleMapping,\n null,\n '\\t',\n )};`,\n `${\n RuntimeGlobals.ensureChunkHandlers\n }.consumes = ${runtimeTemplate.basicFunction('chunkId, promises', [\n `if(${RuntimeGlobals.hasOwnProperty}(chunkMapping, chunkId)) {`,\n Template.indent([\n `chunkMapping[chunkId].forEach(${runtimeTemplate.basicFunction(\n 'id',\n [\n `if(${RuntimeGlobals.hasOwnProperty}(installedModules, id)) return promises.push(installedModules[id]);`,\n `var onFactory = ${runtimeTemplate.basicFunction(\n 'factory',\n [\n 'installedModules[id] = 0;',\n `${\n RuntimeGlobals.moduleFactories\n }[id] = ${runtimeTemplate.basicFunction('module', [\n `delete ${RuntimeGlobals.moduleCache}[id];`,\n 'module.exports = factory();',\n ])}`,\n ],\n )};`,\n `var onError = ${runtimeTemplate.basicFunction('error', [\n 'delete installedModules[id];',\n `${\n RuntimeGlobals.moduleFactories\n }[id] = ${runtimeTemplate.basicFunction('module', [\n `delete ${RuntimeGlobals.moduleCache}[id];`,\n 'throw error;',\n ])}`,\n ])};`,\n 'try {',\n Template.indent([\n 'var promise = moduleToHandlerMapping[id]();',\n 'if(promise.then) {',\n Template.indent(\n \"promises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\",\n ),\n '} else onFactory(promise);',\n ]),\n '} catch(e) { onError(e); }',\n ],\n )});`,\n ]),\n '}',\n ])}`,\n ])\n : '// no chunk loading of consumes',\n ]);\n }\n}\n\nexport default ConsumeSharedRuntimeModule;\n"],"names":["ConsumeSharedRuntimeModule","RuntimeModule","generate","compilation","chunkGraph","runtimeTemplate","codeGenerationResults","chunkToModuleMapping","moduleIdToSourceMapping","Map","initialConsumes","addModules","modules","chunk","list","m","module","id","getModuleId","push","set","getSource","runtime","allChunks","getAllAsyncChunks","getAllInitialChunks","getChunkModulesIterableBySourceType","toString","size","Template","asString","parseVersionRuntimeCode","versionLtRuntimeCode","rangeToStringRuntimeCode","satisfyRuntimeCode","basicFunction","RuntimeGlobals","shareScopeMap","hasOwnProperty","outputOptions","ignoreBrowserWarnings","returningFunction","indent","initializeSharing","Array","from","key","source","JSON","stringify","join","length","moduleFactories","moduleCache","_runtimeRequirements","has","ensureChunkHandlers","constructor","runtimeRequirements","STAGE_ATTACH"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/ConsumeSharedRuntimeModule.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy\n*/\n\nimport * as RuntimeGlobals from 'webpack/lib/RuntimeGlobals';\nimport Template from 'webpack/lib/Template';\nimport {\n parseVersionRuntimeCode,\n versionLtRuntimeCode,\n rangeToStringRuntimeCode,\n satisfyRuntimeCode,\n} from 'webpack/lib/util/semver';\nimport RuntimeModule from 'webpack/lib/RuntimeModule';\nimport Module from 'webpack/lib/Module';\nimport ConsumeSharedModule from './ConsumeSharedModule';\nimport type ChunkGraph from 'webpack/lib/ChunkGraph';\nimport type Compilation from 'webpack/lib/Compilation';\nimport type Chunk from 'webpack/lib/Chunk';\nimport { Source } from 'webpack-sources';\n\nclass ConsumeSharedRuntimeModule extends RuntimeModule {\n private _runtimeRequirements: ReadonlySet<string>;\n\n /**\n * @param {ReadonlySet<string>} runtimeRequirements runtime requirements\n */\n constructor(runtimeRequirements: ReadonlySet<string>) {\n super('consumes', RuntimeModule.STAGE_ATTACH);\n this._runtimeRequirements = runtimeRequirements;\n }\n\n /**\n * @returns {string | null} runtime code\n */\n override generate(): string | null {\n const compilation: Compilation = this.compilation!;\n const chunkGraph: ChunkGraph = this.chunkGraph!;\n const { runtimeTemplate, codeGenerationResults } = compilation;\n const chunkToModuleMapping: Record<string, any> = {};\n const moduleIdToSourceMapping: Map<string | number, Source> = new Map();\n const initialConsumes: (string | number)[] = [];\n /**\n *\n * @param {Iterable<Module>} modules modules\n * @param {Chunk} chunk the chunk\n * @param {(string | number)[]} list list of ids\n */\n const addModules = (\n modules: Iterable<Module>,\n chunk: Chunk,\n list: (string | number)[],\n ) => {\n for (const m of modules) {\n const module: ConsumeSharedModule = m as ConsumeSharedModule;\n const id = chunkGraph.getModuleId(module);\n list.push(id);\n moduleIdToSourceMapping.set(\n id,\n codeGenerationResults.getSource(\n module,\n chunk.runtime,\n 'consume-shared',\n ),\n );\n }\n };\n const allChunks = [...(this.chunk?.getAllReferencedChunks() || [])];\n for (const chunk of allChunks) {\n const modules = chunkGraph.getChunkModulesIterableBySourceType(\n chunk,\n 'consume-shared',\n );\n if (!modules) continue;\n if (!chunk.id) continue;\n\n addModules(\n modules,\n chunk,\n (chunkToModuleMapping[chunk.id.toString()] = []),\n );\n }\n for (const chunk of [...(this.chunk?.getAllInitialChunks() || [])]) {\n const modules = chunkGraph.getChunkModulesIterableBySourceType(\n chunk,\n 'consume-shared',\n );\n if (!modules) continue;\n addModules(modules, chunk, initialConsumes);\n }\n\n if (moduleIdToSourceMapping.size === 0) return null;\n\n return Template.asString([\n parseVersionRuntimeCode(runtimeTemplate),\n versionLtRuntimeCode(runtimeTemplate),\n rangeToStringRuntimeCode(runtimeTemplate),\n satisfyRuntimeCode(runtimeTemplate),\n `var ensureExistence = ${runtimeTemplate.basicFunction('scopeName, key', [\n `var scope = ${RuntimeGlobals.shareScopeMap}[scopeName];`,\n `if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) throw new Error(\"Shared module \" + key + \" doesn't exist in shared scope \" + scopeName);`,\n 'return scope;',\n ])};`,\n `var findVersion = ${runtimeTemplate.basicFunction('scope, key', [\n 'var versions = scope[key];',\n `var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(\n 'a, b',\n ['return !a || versionLt(a, b) ? b : a;'],\n )}, 0);`,\n 'return key && versions[key]',\n ])};`,\n `var findSingletonVersionKey = ${runtimeTemplate.basicFunction(\n 'scope, key',\n [\n 'var versions = scope[key];',\n `return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(\n 'a, b',\n ['return !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;'],\n )}, 0);`,\n ],\n )};`,\n `var getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(\n 'scope, key, version, requiredVersion',\n [\n `return \"Unsatisfied version \" + version + \" from \" + (version && scope[key][version].from) + \" of shared singleton module \" + key + \" (required \" + rangeToString(requiredVersion) + \")\"`,\n ],\n )};`,\n `var getSingleton = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'var version = findSingletonVersionKey(scope, key);',\n 'return get(scope[key][version]);',\n ],\n )};`,\n `var getSingletonVersion = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'var version = findSingletonVersionKey(scope, key);',\n 'if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));',\n 'return get(scope[key][version]);',\n ],\n )};`,\n `var getStrictSingletonVersion = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'var version = findSingletonVersionKey(scope, key);',\n 'if (!satisfy(requiredVersion, version)) ' +\n 'throw new Error(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));',\n 'return get(scope[key][version]);',\n ],\n )};`,\n `var findValidVersion = ${runtimeTemplate.basicFunction(\n 'scope, key, requiredVersion',\n [\n 'var versions = scope[key];',\n `var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(\n 'a, b',\n [\n 'if (!satisfy(requiredVersion, b)) return a;',\n 'return !a || versionLt(a, b) ? b : a;',\n ],\n )}, 0);`,\n 'return key && versions[key]',\n ],\n )};`,\n `var getInvalidVersionMessage = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'var versions = scope[key];',\n 'return \"No satisfying version (\" + rangeToString(requiredVersion) + \") of shared module \" + key + \" found in shared scope \" + scopeName + \".\\\\n\" +',\n `\\t\"Available versions: \" + Object.keys(versions).map(${runtimeTemplate.basicFunction(\n 'key',\n ['return key + \" from \" + versions[key].from;'],\n )}).join(\", \");`,\n ],\n )};`,\n `var getValidVersion = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'var entry = findValidVersion(scope, key, requiredVersion);',\n 'if(entry) return get(entry);',\n 'throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));',\n ],\n )};`,\n `var warn = ${\n compilation.outputOptions.ignoreBrowserWarnings\n ? runtimeTemplate.basicFunction('', '')\n : runtimeTemplate.basicFunction('msg', [\n 'if (typeof console !== \"undefined\" && console.warn) console.warn(msg);',\n ])\n };`,\n `var warnInvalidVersion = ${runtimeTemplate.basicFunction(\n 'scope, scopeName, key, requiredVersion',\n [\n 'warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));',\n ],\n )};`,\n `var get = ${runtimeTemplate.basicFunction('entry', [\n 'entry.loaded = 1;',\n 'return entry.get()',\n ])};`,\n `var init = ${runtimeTemplate.returningFunction(\n Template.asString([\n 'function(scopeName, a, b, c) {',\n Template.indent([\n `var promise = ${RuntimeGlobals.initializeSharing}(scopeName);`,\n `if (promise && promise.then) return promise.then(fn.bind(fn, scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], a, b, c));`,\n `return fn(scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], a, b, c);`,\n ]),\n '}',\n ]),\n 'fn',\n )};`,\n '',\n `var load = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key',\n [\n 'ensureExistence(scopeName, key);',\n 'return get(findVersion(scope, key));',\n ],\n )});`,\n `var loadFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, fallback',\n [\n `return scope && ${RuntimeGlobals.hasOwnProperty}(scope, key) ? get(findVersion(scope, key)) : fallback();`,\n ],\n )});`,\n `var loadVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version',\n [\n 'ensureExistence(scopeName, key);',\n 'return get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));',\n ],\n )});`,\n `var loadSingleton = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key',\n [\n 'ensureExistence(scopeName, key);',\n 'return getSingleton(scope, scopeName, key);',\n ],\n )});`,\n `var loadSingletonVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version',\n [\n 'ensureExistence(scopeName, key);',\n 'return getSingletonVersion(scope, scopeName, key, version);',\n ],\n )});`,\n `var loadStrictVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version',\n [\n 'ensureExistence(scopeName, key);',\n 'return getValidVersion(scope, scopeName, key, version);',\n ],\n )});`,\n `var loadStrictSingletonVersionCheck = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version',\n [\n 'ensureExistence(scopeName, key);',\n 'return getStrictSingletonVersion(scope, scopeName, key, version);',\n ],\n )});`,\n `var loadVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version, fallback',\n [\n `if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,\n 'return get(findValidVersion(scope, key, version) || warnInvalidVersion(scope, scopeName, key, version) || findVersion(scope, key));',\n ],\n )});`,\n `var loadSingletonFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, fallback',\n [\n `if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,\n 'return getSingleton(scope, scopeName, key);',\n ],\n )});`,\n `var loadSingletonVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version, fallback',\n [\n `if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,\n 'return getSingletonVersion(scope, scopeName, key, version);',\n ],\n )});`,\n `var loadStrictVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version, fallback',\n [\n `var entry = scope && ${RuntimeGlobals.hasOwnProperty}(scope, key) && findValidVersion(scope, key, version);`,\n `return entry ? get(entry) : fallback();`,\n ],\n )});`,\n `var loadStrictSingletonVersionCheckFallback = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(\n 'scopeName, scope, key, version, fallback',\n [\n `if(!scope || !${RuntimeGlobals.hasOwnProperty}(scope, key)) return fallback();`,\n 'return getStrictSingletonVersion(scope, scopeName, key, version);',\n ],\n )});`,\n 'var installedModules = {};',\n 'var moduleToHandlerMapping = {',\n Template.indent(\n Array.from(\n moduleIdToSourceMapping,\n ([key, source]) => `${JSON.stringify(key)}: ${source.source()}`,\n ).join(',\\n'),\n ),\n '};',\n\n initialConsumes.length > 0\n ? Template.asString([\n `var initialConsumes = ${JSON.stringify(initialConsumes)};`,\n `initialConsumes.forEach(${runtimeTemplate.basicFunction('id', [\n `${\n RuntimeGlobals.moduleFactories\n }[id] = ${runtimeTemplate.basicFunction('module', [\n '// Handle case when module is used sync',\n 'installedModules[id] = 0;',\n `delete ${RuntimeGlobals.moduleCache}[id];`,\n 'var factory = moduleToHandlerMapping[id]();',\n 'if(typeof factory !== \"function\") throw new Error(\"Shared module is not available for eager consumption: \" + id);',\n `module.exports = factory();`,\n ])}`,\n ])});`,\n ])\n : '// no consumes in initial chunks',\n this._runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)\n ? Template.asString([\n `var chunkMapping = ${JSON.stringify(\n chunkToModuleMapping,\n null,\n '\\t',\n )};`,\n `${\n RuntimeGlobals.ensureChunkHandlers\n }.consumes = ${runtimeTemplate.basicFunction('chunkId, promises', [\n `if(${RuntimeGlobals.hasOwnProperty}(chunkMapping, chunkId)) {`,\n Template.indent([\n `chunkMapping[chunkId].forEach(${runtimeTemplate.basicFunction(\n 'id',\n [\n `if(${RuntimeGlobals.hasOwnProperty}(installedModules, id)) return promises.push(installedModules[id]);`,\n `var onFactory = ${runtimeTemplate.basicFunction(\n 'factory',\n [\n 'installedModules[id] = 0;',\n `${\n RuntimeGlobals.moduleFactories\n }[id] = ${runtimeTemplate.basicFunction('module', [\n `delete ${RuntimeGlobals.moduleCache}[id];`,\n 'module.exports = factory();',\n ])}`,\n ],\n )};`,\n `var onError = ${runtimeTemplate.basicFunction('error', [\n 'delete installedModules[id];',\n `${\n RuntimeGlobals.moduleFactories\n }[id] = ${runtimeTemplate.basicFunction('module', [\n `delete ${RuntimeGlobals.moduleCache}[id];`,\n 'throw error;',\n ])}`,\n ])};`,\n 'try {',\n Template.indent([\n 'var promise = moduleToHandlerMapping[id]();',\n 'if(promise.then) {',\n Template.indent(\n \"promises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));\",\n ),\n '} else onFactory(promise);',\n ]),\n '} catch(e) { onError(e); }',\n ],\n )});`,\n ]),\n '}',\n ])}`,\n ])\n : '// no chunk loading of consumes',\n ]);\n }\n}\n\nexport default ConsumeSharedRuntimeModule;\n"],"names":["ConsumeSharedRuntimeModule","RuntimeModule","generate","compilation","chunkGraph","runtimeTemplate","codeGenerationResults","chunkToModuleMapping","moduleIdToSourceMapping","Map","initialConsumes","addModules","modules","chunk","list","m","module","id","getModuleId","push","set","getSource","runtime","allChunks","getAllReferencedChunks","getChunkModulesIterableBySourceType","toString","getAllInitialChunks","size","Template","asString","parseVersionRuntimeCode","versionLtRuntimeCode","rangeToStringRuntimeCode","satisfyRuntimeCode","basicFunction","RuntimeGlobals","shareScopeMap","hasOwnProperty","outputOptions","ignoreBrowserWarnings","returningFunction","indent","initializeSharing","Array","from","key","source","JSON","stringify","join","length","moduleFactories","moduleCache","_runtimeRequirements","has","ensureChunkHandlers","constructor","runtimeRequirements","STAGE_ATTACH"],"mappings":"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"}
|