@module-federation/enhanced 0.0.3 → 0.0.4-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/package.json +1 -1
- package/src/index.js +10 -6
- package/src/index.js.map +1 -1
- package/src/lib/container/ContainerEntryDependency.js +7 -3
- package/src/lib/container/ContainerEntryDependency.js.map +1 -1
- package/src/lib/container/ContainerEntryModule.js +51 -9
- package/src/lib/container/ContainerEntryModule.js.map +1 -1
- package/src/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/src/lib/container/ContainerEntryModuleFactory.js.map +1 -1
- package/src/lib/container/ContainerExposedDependency.js +7 -3
- package/src/lib/container/ContainerExposedDependency.js.map +1 -1
- package/src/lib/container/ContainerPlugin.js +9 -5
- package/src/lib/container/ContainerPlugin.js.map +1 -1
- package/src/lib/container/ContainerReferencePlugin.js +53 -11
- package/src/lib/container/ContainerReferencePlugin.js.map +1 -1
- package/src/lib/container/FallbackDependency.js +7 -3
- package/src/lib/container/FallbackDependency.js.map +1 -1
- package/src/lib/container/FallbackItemDependency.js +7 -3
- package/src/lib/container/FallbackItemDependency.js.map +1 -1
- package/src/lib/container/FallbackModule.js +10 -6
- package/src/lib/container/FallbackModule.js.map +1 -1
- package/src/lib/container/FallbackModuleFactory.js +7 -3
- package/src/lib/container/FallbackModuleFactory.js.map +1 -1
- package/src/lib/container/ModuleFederationPlugin.js +10 -6
- package/src/lib/container/ModuleFederationPlugin.js.map +1 -1
- package/src/lib/container/RemoteModule.js +10 -6
- package/src/lib/container/RemoteModule.js.map +1 -1
- package/src/lib/container/RemoteRuntimeModule.js +8 -4
- package/src/lib/container/RemoteRuntimeModule.js.map +1 -1
- package/src/lib/container/RemoteToExternalDependency.d.js +6 -2
- package/src/lib/container/RemoteToExternalDependency.d.js.map +1 -1
- package/src/lib/container/RemoteToExternalDependency.js +7 -3
- package/src/lib/container/RemoteToExternalDependency.js.map +1 -1
- package/src/lib/sharing/ConsumeSharedFallbackDependency.js +7 -3
- package/src/lib/sharing/ConsumeSharedFallbackDependency.js.map +1 -1
- package/src/lib/sharing/ConsumeSharedModule.js +49 -7
- package/src/lib/sharing/ConsumeSharedModule.js.map +1 -1
- package/src/lib/sharing/ConsumeSharedPlugin.js +69 -14
- package/src/lib/sharing/ConsumeSharedPlugin.js.map +1 -1
- package/src/lib/sharing/ConsumeSharedRuntimeModule.js +47 -5
- package/src/lib/sharing/ConsumeSharedRuntimeModule.js.map +1 -1
- package/src/lib/sharing/ProvideForSharedDependency.js +7 -3
- package/src/lib/sharing/ProvideForSharedDependency.js.map +1 -1
- package/src/lib/sharing/ProvideSharedDependency.js +7 -3
- package/src/lib/sharing/ProvideSharedDependency.js.map +1 -1
- package/src/lib/sharing/ProvideSharedModule.js +49 -7
- package/src/lib/sharing/ProvideSharedModule.js.map +1 -1
- package/src/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/src/lib/sharing/ProvideSharedModuleFactory.js.map +1 -1
- package/src/lib/sharing/ProvideSharedPlugin.js +25 -8
- package/src/lib/sharing/ProvideSharedPlugin.js.map +1 -1
- package/src/lib/sharing/SharePlugin.js +7 -3
- package/src/lib/sharing/SharePlugin.js.map +1 -1
- package/src/lib/sharing/ShareRuntimeModule.js +47 -5
- package/src/lib/sharing/ShareRuntimeModule.js.map +1 -1
- package/src/lib/sharing/resolveMatchedConfigs.js +7 -3
- package/src/lib/sharing/resolveMatchedConfigs.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/ProvideSharedModuleFactory.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra and Zackary Jackson @ScriptedAlchemy\n*/\n//@ts-ignore\nimport ModuleFactory from 'webpack/lib/ModuleFactory';\nimport ProvideSharedModule from './ProvideSharedModule';\nimport type {\n ModuleFactoryCreateData,\n ModuleFactoryResult,\n} from 'webpack/lib/ModuleFactory';\nimport ProvideSharedDependency from './ProvideSharedDependency';\n\nclass ProvideSharedModuleFactory extends ModuleFactory {\n /**\n * @param {ModuleFactoryCreateData} data data object\n * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback\n * @returns {void}\n */\n override create(\n data: ModuleFactoryCreateData,\n callback: (error: Error | null, result?: ModuleFactoryResult) => void,\n ): void {\n const dep: ProvideSharedDependency = data\n .dependencies[0] as ProvideSharedDependency;\n callback(null, {\n module: new ProvideSharedModule(\n dep.shareScope,\n dep.name,\n dep.version,\n dep.request,\n dep.eager,\n ),\n });\n }\n}\n\nexport default ProvideSharedModuleFactory;\n"],"names":["ProvideSharedModuleFactory","ModuleFactory","create","data","callback","dep","dependencies","module","ProvideSharedModule","shareScope","name","version","request","eager"],"mappings":"AAAA;;;AAGA,GACA,YAAY;;;;;+BAiCZ;;;eAAA
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/ProvideSharedModuleFactory.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra and Zackary Jackson @ScriptedAlchemy\n*/\n//@ts-ignore\nimport ModuleFactory from 'webpack/lib/ModuleFactory';\nimport ProvideSharedModule from './ProvideSharedModule';\nimport type {\n ModuleFactoryCreateData,\n ModuleFactoryResult,\n} from 'webpack/lib/ModuleFactory';\nimport ProvideSharedDependency from './ProvideSharedDependency';\n\nclass ProvideSharedModuleFactory extends ModuleFactory {\n /**\n * @param {ModuleFactoryCreateData} data data object\n * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback\n * @returns {void}\n */\n override create(\n data: ModuleFactoryCreateData,\n callback: (error: Error | null, result?: ModuleFactoryResult) => void,\n ): void {\n const dep: ProvideSharedDependency = data\n .dependencies[0] as ProvideSharedDependency;\n callback(null, {\n module: new ProvideSharedModule(\n dep.shareScope,\n dep.name,\n dep.version,\n dep.request,\n dep.eager,\n ),\n });\n }\n}\n\nexport default ProvideSharedModuleFactory;\n"],"names":["ProvideSharedModuleFactory","ModuleFactory","create","data","callback","dep","dependencies","module","ProvideSharedModule","shareScope","name","version","request","eager"],"mappings":"AAAA;;;AAGA,GACA,YAAY;;;;;+BAiCZ;;;eAAA;;;sEAhC0B;4EACM;;;;;;AAOhC,IAAA,AAAMA,6BAAN,MAAMA,mCAAmCC,sBAAa;IACpD;;;;GAIC,GACD,AAASC,OACPC,IAA6B,EAC7BC,QAAqE,EAC/D;QACN,MAAMC,MAA+BF,KAClCG,YAAY,CAAC,EAAE;QAClBF,SAAS,MAAM;YACbG,QAAQ,IAAIC,4BAAmB,CAC7BH,IAAII,UAAU,EACdJ,IAAIK,IAAI,EACRL,IAAIM,OAAO,EACXN,IAAIO,OAAO,EACXP,IAAIQ,KAAK;QAEb;IACF;AACF;MAEA,WAAeb"}
|
|
@@ -11,14 +11,31 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
return _default;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
|
-
const _extends = require("@swc/helpers/_/_extends");
|
|
15
|
-
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
16
14
|
const _options = require("../container/options");
|
|
17
|
-
const _createschemavalidation = /*#__PURE__*/ _interop_require_default
|
|
18
|
-
const _WebpackError = /*#__PURE__*/ _interop_require_default
|
|
19
|
-
const _ProvideForSharedDependency = /*#__PURE__*/ _interop_require_default
|
|
20
|
-
const _ProvideSharedDependency = /*#__PURE__*/ _interop_require_default
|
|
21
|
-
const _ProvideSharedModuleFactory = /*#__PURE__*/ _interop_require_default
|
|
15
|
+
const _createschemavalidation = /*#__PURE__*/ _interop_require_default(require("webpack/lib/util/create-schema-validation"));
|
|
16
|
+
const _WebpackError = /*#__PURE__*/ _interop_require_default(require("webpack/lib/WebpackError"));
|
|
17
|
+
const _ProvideForSharedDependency = /*#__PURE__*/ _interop_require_default(require("./ProvideForSharedDependency"));
|
|
18
|
+
const _ProvideSharedDependency = /*#__PURE__*/ _interop_require_default(require("./ProvideSharedDependency"));
|
|
19
|
+
const _ProvideSharedModuleFactory = /*#__PURE__*/ _interop_require_default(require("./ProvideSharedModuleFactory"));
|
|
20
|
+
function _extends() {
|
|
21
|
+
_extends = Object.assign || function(target) {
|
|
22
|
+
for(var i = 1; i < arguments.length; i++){
|
|
23
|
+
var source = arguments[i];
|
|
24
|
+
for(var key in source){
|
|
25
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
26
|
+
target[key] = source[key];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return target;
|
|
31
|
+
};
|
|
32
|
+
return _extends.apply(this, arguments);
|
|
33
|
+
}
|
|
34
|
+
function _interop_require_default(obj) {
|
|
35
|
+
return obj && obj.__esModule ? obj : {
|
|
36
|
+
default: obj
|
|
37
|
+
};
|
|
38
|
+
}
|
|
22
39
|
const validate = (0, _createschemavalidation.default)(//eslint-disable-next-line
|
|
23
40
|
require('webpack/schemas/plugins/sharing/ProvideSharedPlugin.check.js'), ()=>require('webpack/schemas/plugins/sharing/ProvideSharedPlugin.json'), {
|
|
24
41
|
name: 'Provide Shared Plugin',
|
|
@@ -105,7 +122,7 @@ require('webpack/schemas/plugins/sharing/ProvideSharedPlugin.check.js'), ()=>req
|
|
|
105
122
|
for (const [prefix, config] of prefixMatchProvides){
|
|
106
123
|
if (request.startsWith(prefix) && resource) {
|
|
107
124
|
const remainder = request.slice(prefix.length);
|
|
108
|
-
provideSharedModule(resource, _extends
|
|
125
|
+
provideSharedModule(resource, _extends({}, config, {
|
|
109
126
|
shareKey: config.shareKey + remainder
|
|
110
127
|
}), resource, resourceResolveData);
|
|
111
128
|
resolveData.cacheable = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/ProvideSharedPlugin.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra and Zackary Jackson @ScriptedAlchemy\n*/\n\n'use strict';\n\nimport { parseOptions } from '../container/options';\nimport createSchemaValidation from 'webpack/lib/util/create-schema-validation';\nimport WebpackError from 'webpack/lib/WebpackError';\nimport ProvideForSharedDependency from './ProvideForSharedDependency';\nimport ProvideSharedDependency from './ProvideSharedDependency';\nimport ProvideSharedModuleFactory from './ProvideSharedModuleFactory';\nimport type Compiler from 'webpack/lib/Compiler';\nimport type Compilation from 'webpack/lib/Compilation';\nimport type { ProvideSharedPluginOptions } from '../../declarations/plugins/sharing/ProvideSharedPlugin';\n\nexport type ProvideOptions = {\n shareKey: string;\n shareScope: string;\n version: string | undefined | false;\n eager: boolean;\n};\nexport type ResolvedProvideMap = Map<\n string,\n {\n config: ProvideOptions;\n version: string | undefined | false;\n }\n>;\n\nconst validate = createSchemaValidation(\n //eslint-disable-next-line\n require('webpack/schemas/plugins/sharing/ProvideSharedPlugin.check.js'),\n () => require('webpack/schemas/plugins/sharing/ProvideSharedPlugin.json'),\n {\n name: 'Provide Shared Plugin',\n baseDataPath: 'options',\n },\n);\n\n/**\n * @typedef {Object} ProvideOptions\n * @property {string} shareKey\n * @property {string} shareScope\n * @property {string | undefined | false} version\n * @property {boolean} eager\n */\n\n/** @typedef {Map<string, { config: ProvideOptions, version: string | undefined | false }>} ResolvedProvideMap */\n\nclass ProvideSharedPlugin {\n private _provides: [string, ProvideOptions][];\n\n /**\n * @param {ProvideSharedPluginOptions} options options\n */\n constructor(options: ProvideSharedPluginOptions) {\n validate(options);\n //@ts-ignore\n this._provides = parseOptions(\n options.provides,\n (item) => {\n if (Array.isArray(item))\n throw new Error('Unexpected array of provides');\n /** @type {ProvideOptions} */\n const result = {\n shareKey: item,\n version: undefined,\n shareScope: options.shareScope || 'default',\n eager: false,\n };\n return result;\n },\n (item) => ({\n shareKey: item.shareKey,\n version: item.version,\n shareScope: item.shareScope || options.shareScope || 'default',\n eager: !!item.eager,\n }),\n );\n this._provides.sort(([a], [b]) => {\n if (a < b) return -1;\n if (b < a) return 1;\n return 0;\n });\n }\n\n /**\n * Apply the plugin\n * @param {Compiler} compiler the compiler instance\n * @returns {void}\n */\n apply(compiler: Compiler): void {\n const compilationData: WeakMap<Compilation, ResolvedProvideMap> =\n new WeakMap();\n\n compiler.hooks.compilation.tap(\n 'ProvideSharedPlugin',\n (compilation: Compilation, { normalModuleFactory }) => {\n const resolvedProvideMap: ResolvedProvideMap = new Map();\n const matchProvides: Map<string, ProvideOptions> = new Map();\n const prefixMatchProvides: Map<string, ProvideOptions> = new Map();\n for (const [request, config] of this._provides) {\n if (/^(\\/|[A-Za-z]:\\\\|\\\\\\\\|\\.\\.?(\\/|$))/.test(request)) {\n // relative request\n resolvedProvideMap.set(request, {\n config,\n version: config.version,\n });\n } else if (/^(\\/|[A-Za-z]:\\\\|\\\\\\\\)/.test(request)) {\n // absolute path\n resolvedProvideMap.set(request, {\n config,\n version: config.version,\n });\n } else if (request.endsWith('/')) {\n // module request prefix\n prefixMatchProvides.set(request, config);\n } else {\n // module request\n matchProvides.set(request, config);\n }\n }\n compilationData.set(compilation, resolvedProvideMap);\n const provideSharedModule = (\n key: string,\n config: ProvideOptions,\n resource: string,\n resourceResolveData: any,\n ) => {\n let version = config.version;\n if (version === undefined) {\n let details = '';\n if (!resourceResolveData) {\n details = `No resolve data provided from resolver.`;\n } else {\n const descriptionFileData =\n resourceResolveData.descriptionFileData;\n if (!descriptionFileData) {\n details =\n 'No description file (usually package.json) found. Add description file with name and version, or manually specify version in shared config.';\n } else if (!descriptionFileData.version) {\n details = `No version in description file (usually package.json). Add version to description file ${resourceResolveData.descriptionFilePath}, or manually specify version in shared config.`;\n } else {\n version = descriptionFileData.version;\n }\n }\n if (!version) {\n const error = new WebpackError(\n `No version specified and unable to automatically determine one. ${details}`,\n );\n error.file = `shared module ${key} -> ${resource}`;\n compilation.warnings.push(error);\n }\n }\n resolvedProvideMap.set(resource, {\n config,\n version,\n });\n };\n normalModuleFactory.hooks.module.tap(\n 'ProvideSharedPlugin',\n (module, { resource, resourceResolveData }, resolveData) => {\n if (resource && resolvedProvideMap.has(resource)) {\n return module;\n }\n const { request } = resolveData;\n {\n const config = matchProvides.get(request);\n if (config !== undefined && resource) {\n provideSharedModule(\n request,\n config,\n resource,\n resourceResolveData,\n );\n resolveData.cacheable = false;\n }\n }\n for (const [prefix, config] of prefixMatchProvides) {\n if (request.startsWith(prefix) && resource) {\n const remainder = request.slice(prefix.length);\n provideSharedModule(\n resource,\n {\n ...config,\n shareKey: config.shareKey + remainder,\n },\n resource,\n resourceResolveData,\n );\n resolveData.cacheable = false;\n }\n }\n return module;\n },\n );\n },\n );\n compiler.hooks.finishMake.tapPromise(\n 'ProvideSharedPlugin',\n async (compilation: Compilation) => {\n const resolvedProvideMap = compilationData.get(compilation);\n if (!resolvedProvideMap) return;\n await Promise.all(\n Array.from(\n resolvedProvideMap,\n ([resource, { config, version }]) =>\n new Promise<void>((resolve, reject) => {\n compilation.addInclude(\n compiler.context,\n //@ts-ignore\n new ProvideSharedDependency(\n config.shareScope,\n config.shareKey,\n version || false,\n resource,\n config.eager,\n ),\n {\n name: undefined,\n },\n (err: WebpackError | null | undefined) => {\n if (err) return reject(err);\n resolve();\n },\n );\n }),\n ),\n );\n },\n );\n\n compiler.hooks.compilation.tap(\n 'ProvideSharedPlugin',\n (compilation: Compilation, { normalModuleFactory }) => {\n compilation.dependencyFactories.set(\n ProvideForSharedDependency,\n normalModuleFactory,\n );\n\n compilation.dependencyFactories.set(\n //@ts-ignore\n ProvideSharedDependency,\n new ProvideSharedModuleFactory(),\n );\n },\n );\n }\n}\nexport default ProvideSharedPlugin;\n"],"names":["validate","createSchemaValidation","require","name","baseDataPath","ProvideSharedPlugin","apply","compiler","compilationData","WeakMap","hooks","compilation","tap","normalModuleFactory","resolvedProvideMap","Map","matchProvides","prefixMatchProvides","request","config","_provides","test","set","version","endsWith","provideSharedModule","key","resource","resourceResolveData","undefined","details","descriptionFileData","descriptionFilePath","error","WebpackError","file","warnings","push","module","resolveData","has","get","cacheable","prefix","startsWith","remainder","slice","length","shareKey","finishMake","tapPromise","Promise","all","Array","from","resolve","reject","addInclude","context","ProvideSharedDependency","shareScope","eager","err","dependencyFactories","ProvideForSharedDependency","ProvideSharedModuleFactory","constructor","options","parseOptions","provides","item","isArray","Error","result","sort","a","b"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/ProvideSharedPlugin.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra and Zackary Jackson @ScriptedAlchemy\n*/\n\n'use strict';\n\nimport { parseOptions } from '../container/options';\nimport createSchemaValidation from 'webpack/lib/util/create-schema-validation';\nimport WebpackError from 'webpack/lib/WebpackError';\nimport ProvideForSharedDependency from './ProvideForSharedDependency';\nimport ProvideSharedDependency from './ProvideSharedDependency';\nimport ProvideSharedModuleFactory from './ProvideSharedModuleFactory';\nimport type Compiler from 'webpack/lib/Compiler';\nimport type Compilation from 'webpack/lib/Compilation';\nimport type { ProvideSharedPluginOptions } from '../../declarations/plugins/sharing/ProvideSharedPlugin';\n\nexport type ProvideOptions = {\n shareKey: string;\n shareScope: string;\n version: string | undefined | false;\n eager: boolean;\n};\nexport type ResolvedProvideMap = Map<\n string,\n {\n config: ProvideOptions;\n version: string | undefined | false;\n }\n>;\n\nconst validate = createSchemaValidation(\n //eslint-disable-next-line\n require('webpack/schemas/plugins/sharing/ProvideSharedPlugin.check.js'),\n () => require('webpack/schemas/plugins/sharing/ProvideSharedPlugin.json'),\n {\n name: 'Provide Shared Plugin',\n baseDataPath: 'options',\n },\n);\n\n/**\n * @typedef {Object} ProvideOptions\n * @property {string} shareKey\n * @property {string} shareScope\n * @property {string | undefined | false} version\n * @property {boolean} eager\n */\n\n/** @typedef {Map<string, { config: ProvideOptions, version: string | undefined | false }>} ResolvedProvideMap */\n\nclass ProvideSharedPlugin {\n private _provides: [string, ProvideOptions][];\n\n /**\n * @param {ProvideSharedPluginOptions} options options\n */\n constructor(options: ProvideSharedPluginOptions) {\n validate(options);\n //@ts-ignore\n this._provides = parseOptions(\n options.provides,\n (item) => {\n if (Array.isArray(item))\n throw new Error('Unexpected array of provides');\n /** @type {ProvideOptions} */\n const result = {\n shareKey: item,\n version: undefined,\n shareScope: options.shareScope || 'default',\n eager: false,\n };\n return result;\n },\n (item) => ({\n shareKey: item.shareKey,\n version: item.version,\n shareScope: item.shareScope || options.shareScope || 'default',\n eager: !!item.eager,\n }),\n );\n this._provides.sort(([a], [b]) => {\n if (a < b) return -1;\n if (b < a) return 1;\n return 0;\n });\n }\n\n /**\n * Apply the plugin\n * @param {Compiler} compiler the compiler instance\n * @returns {void}\n */\n apply(compiler: Compiler): void {\n const compilationData: WeakMap<Compilation, ResolvedProvideMap> =\n new WeakMap();\n\n compiler.hooks.compilation.tap(\n 'ProvideSharedPlugin',\n (compilation: Compilation, { normalModuleFactory }) => {\n const resolvedProvideMap: ResolvedProvideMap = new Map();\n const matchProvides: Map<string, ProvideOptions> = new Map();\n const prefixMatchProvides: Map<string, ProvideOptions> = new Map();\n for (const [request, config] of this._provides) {\n if (/^(\\/|[A-Za-z]:\\\\|\\\\\\\\|\\.\\.?(\\/|$))/.test(request)) {\n // relative request\n resolvedProvideMap.set(request, {\n config,\n version: config.version,\n });\n } else if (/^(\\/|[A-Za-z]:\\\\|\\\\\\\\)/.test(request)) {\n // absolute path\n resolvedProvideMap.set(request, {\n config,\n version: config.version,\n });\n } else if (request.endsWith('/')) {\n // module request prefix\n prefixMatchProvides.set(request, config);\n } else {\n // module request\n matchProvides.set(request, config);\n }\n }\n compilationData.set(compilation, resolvedProvideMap);\n const provideSharedModule = (\n key: string,\n config: ProvideOptions,\n resource: string,\n resourceResolveData: any,\n ) => {\n let version = config.version;\n if (version === undefined) {\n let details = '';\n if (!resourceResolveData) {\n details = `No resolve data provided from resolver.`;\n } else {\n const descriptionFileData =\n resourceResolveData.descriptionFileData;\n if (!descriptionFileData) {\n details =\n 'No description file (usually package.json) found. Add description file with name and version, or manually specify version in shared config.';\n } else if (!descriptionFileData.version) {\n details = `No version in description file (usually package.json). Add version to description file ${resourceResolveData.descriptionFilePath}, or manually specify version in shared config.`;\n } else {\n version = descriptionFileData.version;\n }\n }\n if (!version) {\n const error = new WebpackError(\n `No version specified and unable to automatically determine one. ${details}`,\n );\n error.file = `shared module ${key} -> ${resource}`;\n compilation.warnings.push(error);\n }\n }\n resolvedProvideMap.set(resource, {\n config,\n version,\n });\n };\n normalModuleFactory.hooks.module.tap(\n 'ProvideSharedPlugin',\n (module, { resource, resourceResolveData }, resolveData) => {\n if (resource && resolvedProvideMap.has(resource)) {\n return module;\n }\n const { request } = resolveData;\n {\n const config = matchProvides.get(request);\n if (config !== undefined && resource) {\n provideSharedModule(\n request,\n config,\n resource,\n resourceResolveData,\n );\n resolveData.cacheable = false;\n }\n }\n for (const [prefix, config] of prefixMatchProvides) {\n if (request.startsWith(prefix) && resource) {\n const remainder = request.slice(prefix.length);\n provideSharedModule(\n resource,\n {\n ...config,\n shareKey: config.shareKey + remainder,\n },\n resource,\n resourceResolveData,\n );\n resolveData.cacheable = false;\n }\n }\n return module;\n },\n );\n },\n );\n compiler.hooks.finishMake.tapPromise(\n 'ProvideSharedPlugin',\n async (compilation: Compilation) => {\n const resolvedProvideMap = compilationData.get(compilation);\n if (!resolvedProvideMap) return;\n await Promise.all(\n Array.from(\n resolvedProvideMap,\n ([resource, { config, version }]) =>\n new Promise<void>((resolve, reject) => {\n compilation.addInclude(\n compiler.context,\n //@ts-ignore\n new ProvideSharedDependency(\n config.shareScope,\n config.shareKey,\n version || false,\n resource,\n config.eager,\n ),\n {\n name: undefined,\n },\n (err: WebpackError | null | undefined) => {\n if (err) return reject(err);\n resolve();\n },\n );\n }),\n ),\n );\n },\n );\n\n compiler.hooks.compilation.tap(\n 'ProvideSharedPlugin',\n (compilation: Compilation, { normalModuleFactory }) => {\n compilation.dependencyFactories.set(\n ProvideForSharedDependency,\n normalModuleFactory,\n );\n\n compilation.dependencyFactories.set(\n //@ts-ignore\n ProvideSharedDependency,\n new ProvideSharedModuleFactory(),\n );\n },\n );\n }\n}\nexport default ProvideSharedPlugin;\n"],"names":["validate","createSchemaValidation","require","name","baseDataPath","ProvideSharedPlugin","apply","compiler","compilationData","WeakMap","hooks","compilation","tap","normalModuleFactory","resolvedProvideMap","Map","matchProvides","prefixMatchProvides","request","config","_provides","test","set","version","endsWith","provideSharedModule","key","resource","resourceResolveData","undefined","details","descriptionFileData","descriptionFilePath","error","WebpackError","file","warnings","push","module","resolveData","has","get","cacheable","prefix","startsWith","remainder","slice","length","shareKey","finishMake","tapPromise","Promise","all","Array","from","resolve","reject","addInclude","context","ProvideSharedDependency","shareScope","eager","err","dependencyFactories","ProvideForSharedDependency","ProvideSharedModuleFactory","constructor","options","parseOptions","provides","item","isArray","Error","result","sort","a","b"],"mappings":"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"}
|
|
@@ -11,11 +11,15 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
return _default;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
|
-
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
15
14
|
const _options = require("../container/options");
|
|
16
|
-
const _ConsumeSharedPlugin = /*#__PURE__*/ _interop_require_default
|
|
17
|
-
const _ProvideSharedPlugin = /*#__PURE__*/ _interop_require_default
|
|
15
|
+
const _ConsumeSharedPlugin = /*#__PURE__*/ _interop_require_default(require("./ConsumeSharedPlugin"));
|
|
16
|
+
const _ProvideSharedPlugin = /*#__PURE__*/ _interop_require_default(require("./ProvideSharedPlugin"));
|
|
18
17
|
const _utils = require("./utils");
|
|
18
|
+
function _interop_require_default(obj) {
|
|
19
|
+
return obj && obj.__esModule ? obj : {
|
|
20
|
+
default: obj
|
|
21
|
+
};
|
|
22
|
+
}
|
|
19
23
|
let SharePlugin = class SharePlugin {
|
|
20
24
|
/**
|
|
21
25
|
* Apply the plugin
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/SharePlugin.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra and Zackary Jackson @ScriptedAlchemy\n*/\n\n'use strict';\n\nimport { parseOptions } from '../container/options';\nimport ConsumeSharedPlugin from './ConsumeSharedPlugin';\nimport ProvideSharedPlugin from './ProvideSharedPlugin';\nimport { isRequiredVersion } from './utils';\nimport type {\n SharePluginOptions,\n SharedConfig,\n} from '../../declarations/plugins/sharing/SharePlugin';\nimport type { ConsumesConfig } from '../../declarations/plugins/sharing/ConsumeSharedPlugin';\nimport type Compiler from 'webpack/lib/Compiler';\nimport type { ProvidesConfig } from '../../declarations/plugins/sharing/ProvideSharedPlugin';\n\nclass SharePlugin {\n private _shareScope: string;\n private _consumes: Record<string, ConsumesConfig>[];\n private _provides: Record<string, ProvidesConfig>[];\n\n constructor(options: SharePluginOptions) {\n const sharedOptions: [string, SharedConfig][] = parseOptions(\n options.shared,\n (item, key) => {\n if (typeof item !== 'string')\n throw new Error('Unexpected array in shared');\n const config: SharedConfig =\n item === key || !isRequiredVersion(item)\n ? {\n import: item,\n }\n : {\n import: key,\n requiredVersion: item,\n };\n return config;\n },\n (item) => item,\n );\n const consumes: Record<string, ConsumesConfig>[] = sharedOptions.map(\n ([key, options]) => ({\n [key]: {\n import: options.import,\n shareKey: options.shareKey || key,\n shareScope: options.shareScope,\n requiredVersion: options.requiredVersion,\n strictVersion: options.strictVersion,\n singleton: options.singleton,\n packageName: options.packageName,\n eager: options.eager,\n },\n }),\n );\n const provides: Record<string, ProvidesConfig>[] = sharedOptions\n .filter(([, options]) => options.import !== false)\n .map(([key, options]) => ({\n [options.import || key]: {\n shareKey: options.shareKey || key,\n shareScope: options.shareScope,\n version: options.version,\n eager: options.eager,\n },\n }));\n //@ts-ignore\n this._shareScope = options.shareScope;\n this._consumes = consumes;\n this._provides = provides;\n }\n\n /**\n * Apply the plugin\n * @param {Compiler} compiler the compiler instance\n * @returns {void}\n */\n apply(compiler: Compiler) {\n new ConsumeSharedPlugin({\n shareScope: this._shareScope,\n consumes: this._consumes,\n }).apply(compiler);\n new ProvideSharedPlugin({\n shareScope: this._shareScope,\n provides: this._provides,\n }).apply(compiler);\n }\n}\n\nexport default SharePlugin;\n"],"names":["SharePlugin","apply","compiler","ConsumeSharedPlugin","shareScope","_shareScope","consumes","_consumes","ProvideSharedPlugin","provides","_provides","constructor","options","sharedOptions","parseOptions","shared","item","key","Error","config","isRequiredVersion","import","requiredVersion","map","shareKey","strictVersion","singleton","packageName","eager","filter","version"],"mappings":"AAAA;;;AAGA,GAEA;;;;+BAqFA;;;eAAA
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/SharePlugin.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra and Zackary Jackson @ScriptedAlchemy\n*/\n\n'use strict';\n\nimport { parseOptions } from '../container/options';\nimport ConsumeSharedPlugin from './ConsumeSharedPlugin';\nimport ProvideSharedPlugin from './ProvideSharedPlugin';\nimport { isRequiredVersion } from './utils';\nimport type {\n SharePluginOptions,\n SharedConfig,\n} from '../../declarations/plugins/sharing/SharePlugin';\nimport type { ConsumesConfig } from '../../declarations/plugins/sharing/ConsumeSharedPlugin';\nimport type Compiler from 'webpack/lib/Compiler';\nimport type { ProvidesConfig } from '../../declarations/plugins/sharing/ProvideSharedPlugin';\n\nclass SharePlugin {\n private _shareScope: string;\n private _consumes: Record<string, ConsumesConfig>[];\n private _provides: Record<string, ProvidesConfig>[];\n\n constructor(options: SharePluginOptions) {\n const sharedOptions: [string, SharedConfig][] = parseOptions(\n options.shared,\n (item, key) => {\n if (typeof item !== 'string')\n throw new Error('Unexpected array in shared');\n const config: SharedConfig =\n item === key || !isRequiredVersion(item)\n ? {\n import: item,\n }\n : {\n import: key,\n requiredVersion: item,\n };\n return config;\n },\n (item) => item,\n );\n const consumes: Record<string, ConsumesConfig>[] = sharedOptions.map(\n ([key, options]) => ({\n [key]: {\n import: options.import,\n shareKey: options.shareKey || key,\n shareScope: options.shareScope,\n requiredVersion: options.requiredVersion,\n strictVersion: options.strictVersion,\n singleton: options.singleton,\n packageName: options.packageName,\n eager: options.eager,\n },\n }),\n );\n const provides: Record<string, ProvidesConfig>[] = sharedOptions\n .filter(([, options]) => options.import !== false)\n .map(([key, options]) => ({\n [options.import || key]: {\n shareKey: options.shareKey || key,\n shareScope: options.shareScope,\n version: options.version,\n eager: options.eager,\n },\n }));\n //@ts-ignore\n this._shareScope = options.shareScope;\n this._consumes = consumes;\n this._provides = provides;\n }\n\n /**\n * Apply the plugin\n * @param {Compiler} compiler the compiler instance\n * @returns {void}\n */\n apply(compiler: Compiler) {\n new ConsumeSharedPlugin({\n shareScope: this._shareScope,\n consumes: this._consumes,\n }).apply(compiler);\n new ProvideSharedPlugin({\n shareScope: this._shareScope,\n provides: this._provides,\n }).apply(compiler);\n }\n}\n\nexport default SharePlugin;\n"],"names":["SharePlugin","apply","compiler","ConsumeSharedPlugin","shareScope","_shareScope","consumes","_consumes","ProvideSharedPlugin","provides","_provides","constructor","options","sharedOptions","parseOptions","shared","item","key","Error","config","isRequiredVersion","import","requiredVersion","map","shareKey","strictVersion","singleton","packageName","eager","filter","version"],"mappings":"AAAA;;;AAGA,GAEA;;;;+BAqFA;;;eAAA;;;yBAnF6B;4EACG;4EACA;uBACE;;;;;;AASlC,IAAA,AAAMA,cAAN,MAAMA;IAsDJ;;;;GAIC,GACDC,MAAMC,QAAkB,EAAE;QACxB,IAAIC,4BAAmB,CAAC;YACtBC,YAAY,IAAI,CAACC,WAAW;YAC5BC,UAAU,IAAI,CAACC,SAAS;QAC1B,GAAGN,KAAK,CAACC;QACT,IAAIM,4BAAmB,CAAC;YACtBJ,YAAY,IAAI,CAACC,WAAW;YAC5BI,UAAU,IAAI,CAACC,SAAS;QAC1B,GAAGT,KAAK,CAACC;IACX;IA/DAS,YAAYC,OAA2B,CAAE;QACvC,MAAMC,gBAA0CC,IAAAA,qBAAY,EAC1DF,QAAQG,MAAM,EACd,CAACC,MAAMC;YACL,IAAI,OAAOD,SAAS,UAClB,MAAM,IAAIE,MAAM;YAClB,MAAMC,SACJH,SAASC,OAAO,CAACG,IAAAA,wBAAiB,EAACJ,QAC/B;gBACEK,QAAQL;YACV,IACA;gBACEK,QAAQJ;gBACRK,iBAAiBN;YACnB;YACN,OAAOG;QACT,GACA,CAACH,OAASA;QAEZ,MAAMV,WAA6CO,cAAcU,GAAG,CAClE,CAAC,CAACN,KAAKL,QAAQ,GAAM,CAAA;gBACnB,CAACK,IAAI,EAAE;oBACLI,QAAQT,QAAQS,MAAM;oBACtBG,UAAUZ,QAAQY,QAAQ,IAAIP;oBAC9Bb,YAAYQ,QAAQR,UAAU;oBAC9BkB,iBAAiBV,QAAQU,eAAe;oBACxCG,eAAeb,QAAQa,aAAa;oBACpCC,WAAWd,QAAQc,SAAS;oBAC5BC,aAAaf,QAAQe,WAAW;oBAChCC,OAAOhB,QAAQgB,KAAK;gBACtB;YACF,CAAA;QAEF,MAAMnB,WAA6CI,cAChDgB,MAAM,CAAC,CAAC,GAAGjB,QAAQ,GAAKA,QAAQS,MAAM,KAAK,OAC3CE,GAAG,CAAC,CAAC,CAACN,KAAKL,QAAQ,GAAM,CAAA;gBACxB,CAACA,QAAQS,MAAM,IAAIJ,IAAI,EAAE;oBACvBO,UAAUZ,QAAQY,QAAQ,IAAIP;oBAC9Bb,YAAYQ,QAAQR,UAAU;oBAC9B0B,SAASlB,QAAQkB,OAAO;oBACxBF,OAAOhB,QAAQgB,KAAK;gBACtB;YACF,CAAA;QACF,YAAY;QACZ,IAAI,CAACvB,WAAW,GAAGO,QAAQR,UAAU;QACrC,IAAI,CAACG,SAAS,GAAGD;QACjB,IAAI,CAACI,SAAS,GAAGD;IACnB;AAiBF;MAEA,WAAeT"}
|
|
@@ -11,12 +11,54 @@ Object.defineProperty(exports, "default", {
|
|
|
11
11
|
return _default;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const _RuntimeModule = /*#__PURE__*/ _interop_require_default._(require("webpack/lib/RuntimeModule"));
|
|
18
|
-
const _Template = /*#__PURE__*/ _interop_require_default._(require("webpack/lib/Template"));
|
|
14
|
+
const _RuntimeGlobals = /*#__PURE__*/ _interop_require_wildcard(require("webpack/lib/RuntimeGlobals"));
|
|
15
|
+
const _RuntimeModule = /*#__PURE__*/ _interop_require_default(require("webpack/lib/RuntimeModule"));
|
|
16
|
+
const _Template = /*#__PURE__*/ _interop_require_default(require("webpack/lib/Template"));
|
|
19
17
|
const _comparators = require("webpack/lib/util/comparators");
|
|
18
|
+
function _interop_require_default(obj) {
|
|
19
|
+
return obj && obj.__esModule ? obj : {
|
|
20
|
+
default: obj
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
24
|
+
if (typeof WeakMap !== "function") return null;
|
|
25
|
+
var cacheBabelInterop = new WeakMap();
|
|
26
|
+
var cacheNodeInterop = new WeakMap();
|
|
27
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
28
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
29
|
+
})(nodeInterop);
|
|
30
|
+
}
|
|
31
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
32
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
33
|
+
return obj;
|
|
34
|
+
}
|
|
35
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
36
|
+
return {
|
|
37
|
+
default: obj
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
41
|
+
if (cache && cache.has(obj)) {
|
|
42
|
+
return cache.get(obj);
|
|
43
|
+
}
|
|
44
|
+
var newObj = {};
|
|
45
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
46
|
+
for(var key in obj){
|
|
47
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
48
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
49
|
+
if (desc && (desc.get || desc.set)) {
|
|
50
|
+
Object.defineProperty(newObj, key, desc);
|
|
51
|
+
} else {
|
|
52
|
+
newObj[key] = obj[key];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
newObj.default = obj;
|
|
57
|
+
if (cache) {
|
|
58
|
+
cache.set(obj, newObj);
|
|
59
|
+
}
|
|
60
|
+
return newObj;
|
|
61
|
+
}
|
|
20
62
|
let ShareRuntimeModule = class ShareRuntimeModule extends _RuntimeModule.default {
|
|
21
63
|
/**
|
|
22
64
|
* @returns {string | null} runtime code
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/ShareRuntimeModule.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy\n*/\n\n'use strict';\n\nimport * as RuntimeGlobals from 'webpack/lib/RuntimeGlobals';\nimport RuntimeModule from 'webpack/lib/RuntimeModule';\nimport Template from 'webpack/lib/Template';\nimport Compilation from 'webpack/lib/Compilation';\nimport ChunkGraph from 'webpack/lib/ChunkGraph';\nimport {\n compareModulesByIdentifier,\n compareStrings,\n} from 'webpack/lib/util/comparators';\n\nclass ShareRuntimeModule extends RuntimeModule {\n constructor() {\n super('sharing');\n }\n\n /**\n * @returns {string | null} runtime code\n */\n override generate(): string | null {\n const compilation: Compilation | undefined = this.compilation;\n if (!compilation) {\n throw new Error('Compilation is undefined');\n }\n const {\n runtimeTemplate,\n codeGenerationResults,\n outputOptions: { uniqueName, ignoreBrowserWarnings },\n } = compilation;\n const chunkGraph: ChunkGraph | undefined = this.chunkGraph;\n if (!chunkGraph) {\n throw new Error('ChunkGraph is undefined');\n }\n const initCodePerScope: Map<string, Map<number, Set<string>>> = new Map();\n for (const chunk of this.chunk?.getAllReferencedChunks() || []) {\n if (!chunk) {\n continue;\n }\n const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(\n chunk,\n 'share-init',\n compareModulesByIdentifier,\n );\n if (!modules) continue;\n for (const m of modules) {\n const data = codeGenerationResults.getData(\n m,\n chunk.runtime,\n 'share-init',\n );\n if (!data) continue;\n for (const item of data) {\n const { shareScope, initStage, init } = item;\n let stages = initCodePerScope.get(shareScope);\n if (stages === undefined) {\n initCodePerScope.set(shareScope, (stages = new Map()));\n }\n let list = stages.get(initStage || 0);\n if (list === undefined) {\n stages.set(initStage || 0, (list = new Set()));\n }\n list.add(init);\n }\n }\n }\n return Template.asString([\n `${RuntimeGlobals.shareScopeMap} = {};`,\n 'var initPromises = {};',\n 'var initTokens = {};',\n `${RuntimeGlobals.initializeSharing} = ${runtimeTemplate.basicFunction(\n 'name, initScope',\n [\n 'if(!initScope) initScope = [];',\n '// handling circular init calls',\n 'var initToken = initTokens[name];',\n 'if(!initToken) initToken = initTokens[name] = {};',\n 'if(initScope.indexOf(initToken) >= 0) return;',\n 'initScope.push(initToken);',\n '// only runs once',\n 'if(initPromises[name]) return initPromises[name];',\n '// creates a new share scope if needed',\n `if(!${RuntimeGlobals.hasOwnProperty}(${RuntimeGlobals.shareScopeMap}, name)) ${RuntimeGlobals.shareScopeMap}[name] = {};`,\n '// runs all init snippets from all modules reachable',\n `var scope = ${RuntimeGlobals.shareScopeMap}[name];`,\n `var warn = ${\n ignoreBrowserWarnings\n ? runtimeTemplate.basicFunction('', '')\n : runtimeTemplate.basicFunction('msg', [\n 'if (typeof console !== \"undefined\" && console.warn) console.warn(msg);',\n ])\n };`,\n `var uniqueName = ${JSON.stringify(uniqueName || undefined)};`,\n `var register = ${runtimeTemplate.basicFunction(\n 'name, version, factory, eager',\n [\n 'var versions = scope[name] = scope[name] || {};',\n 'var activeVersion = versions[version];',\n 'if(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };',\n ],\n )};`,\n `var initExternal = ${runtimeTemplate.basicFunction('id', [\n `var handleError = ${runtimeTemplate.expressionFunction(\n 'warn(\"Initialization of sharing external failed: \" + err)',\n 'err',\n )};`,\n 'try {',\n Template.indent([\n `var module = ${RuntimeGlobals.require}(id);`,\n 'if(!module) return;',\n `var initFn = ${runtimeTemplate.returningFunction(\n `module && module.init && module.init(${RuntimeGlobals.shareScopeMap}[name], initScope)`,\n 'module',\n )}`,\n 'if(module.then) return promises.push(module.then(initFn, handleError));',\n 'var initResult = initFn(module);',\n \"if(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\",\n ]),\n '} catch(err) { handleError(err); }',\n ])}`,\n 'var promises = [];',\n 'switch(name) {',\n ...Array.from(initCodePerScope)\n .sort(([a], [b]) => compareStrings(a, b))\n .map(([name, stages]) =>\n Template.indent([\n `case ${JSON.stringify(name)}: {`,\n Template.indent(\n Array.from(stages)\n .sort(([a], [b]) => a - b)\n .map(([, initCode]) =>\n Template.asString(Array.from(initCode)),\n ),\n ),\n '}',\n 'break;',\n ]),\n ),\n '}',\n 'if(!promises.length) return initPromises[name] = 1;',\n `return initPromises[name] = Promise.all(promises).then(${runtimeTemplate.returningFunction(\n 'initPromises[name] = 1',\n )});`,\n ],\n )};`,\n ]);\n }\n}\n\nexport default ShareRuntimeModule;\n"],"names":["ShareRuntimeModule","RuntimeModule","generate","compilation","Error","runtimeTemplate","codeGenerationResults","outputOptions","uniqueName","ignoreBrowserWarnings","chunkGraph","initCodePerScope","Map","chunk","getAllReferencedChunks","modules","getOrderedChunkModulesIterableBySourceType","compareModulesByIdentifier","m","data","getData","runtime","item","shareScope","initStage","init","stages","get","undefined","set","list","Set","add","Template","asString","RuntimeGlobals","shareScopeMap","initializeSharing","basicFunction","hasOwnProperty","JSON","stringify","expressionFunction","indent","require","returningFunction","Array","from","sort","a","b","compareStrings","map","name","initCode","constructor"],"mappings":"AAAA;;;AAGA,GAEA;;;;+BAqJA;;;eAAA
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/ShareRuntimeModule.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy\n*/\n\n'use strict';\n\nimport * as RuntimeGlobals from 'webpack/lib/RuntimeGlobals';\nimport RuntimeModule from 'webpack/lib/RuntimeModule';\nimport Template from 'webpack/lib/Template';\nimport Compilation from 'webpack/lib/Compilation';\nimport ChunkGraph from 'webpack/lib/ChunkGraph';\nimport {\n compareModulesByIdentifier,\n compareStrings,\n} from 'webpack/lib/util/comparators';\n\nclass ShareRuntimeModule extends RuntimeModule {\n constructor() {\n super('sharing');\n }\n\n /**\n * @returns {string | null} runtime code\n */\n override generate(): string | null {\n const compilation: Compilation | undefined = this.compilation;\n if (!compilation) {\n throw new Error('Compilation is undefined');\n }\n const {\n runtimeTemplate,\n codeGenerationResults,\n outputOptions: { uniqueName, ignoreBrowserWarnings },\n } = compilation;\n const chunkGraph: ChunkGraph | undefined = this.chunkGraph;\n if (!chunkGraph) {\n throw new Error('ChunkGraph is undefined');\n }\n const initCodePerScope: Map<string, Map<number, Set<string>>> = new Map();\n for (const chunk of this.chunk?.getAllReferencedChunks() || []) {\n if (!chunk) {\n continue;\n }\n const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(\n chunk,\n 'share-init',\n compareModulesByIdentifier,\n );\n if (!modules) continue;\n for (const m of modules) {\n const data = codeGenerationResults.getData(\n m,\n chunk.runtime,\n 'share-init',\n );\n if (!data) continue;\n for (const item of data) {\n const { shareScope, initStage, init } = item;\n let stages = initCodePerScope.get(shareScope);\n if (stages === undefined) {\n initCodePerScope.set(shareScope, (stages = new Map()));\n }\n let list = stages.get(initStage || 0);\n if (list === undefined) {\n stages.set(initStage || 0, (list = new Set()));\n }\n list.add(init);\n }\n }\n }\n return Template.asString([\n `${RuntimeGlobals.shareScopeMap} = {};`,\n 'var initPromises = {};',\n 'var initTokens = {};',\n `${RuntimeGlobals.initializeSharing} = ${runtimeTemplate.basicFunction(\n 'name, initScope',\n [\n 'if(!initScope) initScope = [];',\n '// handling circular init calls',\n 'var initToken = initTokens[name];',\n 'if(!initToken) initToken = initTokens[name] = {};',\n 'if(initScope.indexOf(initToken) >= 0) return;',\n 'initScope.push(initToken);',\n '// only runs once',\n 'if(initPromises[name]) return initPromises[name];',\n '// creates a new share scope if needed',\n `if(!${RuntimeGlobals.hasOwnProperty}(${RuntimeGlobals.shareScopeMap}, name)) ${RuntimeGlobals.shareScopeMap}[name] = {};`,\n '// runs all init snippets from all modules reachable',\n `var scope = ${RuntimeGlobals.shareScopeMap}[name];`,\n `var warn = ${\n ignoreBrowserWarnings\n ? runtimeTemplate.basicFunction('', '')\n : runtimeTemplate.basicFunction('msg', [\n 'if (typeof console !== \"undefined\" && console.warn) console.warn(msg);',\n ])\n };`,\n `var uniqueName = ${JSON.stringify(uniqueName || undefined)};`,\n `var register = ${runtimeTemplate.basicFunction(\n 'name, version, factory, eager',\n [\n 'var versions = scope[name] = scope[name] || {};',\n 'var activeVersion = versions[version];',\n 'if(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };',\n ],\n )};`,\n `var initExternal = ${runtimeTemplate.basicFunction('id', [\n `var handleError = ${runtimeTemplate.expressionFunction(\n 'warn(\"Initialization of sharing external failed: \" + err)',\n 'err',\n )};`,\n 'try {',\n Template.indent([\n `var module = ${RuntimeGlobals.require}(id);`,\n 'if(!module) return;',\n `var initFn = ${runtimeTemplate.returningFunction(\n `module && module.init && module.init(${RuntimeGlobals.shareScopeMap}[name], initScope)`,\n 'module',\n )}`,\n 'if(module.then) return promises.push(module.then(initFn, handleError));',\n 'var initResult = initFn(module);',\n \"if(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\",\n ]),\n '} catch(err) { handleError(err); }',\n ])}`,\n 'var promises = [];',\n 'switch(name) {',\n ...Array.from(initCodePerScope)\n .sort(([a], [b]) => compareStrings(a, b))\n .map(([name, stages]) =>\n Template.indent([\n `case ${JSON.stringify(name)}: {`,\n Template.indent(\n Array.from(stages)\n .sort(([a], [b]) => a - b)\n .map(([, initCode]) =>\n Template.asString(Array.from(initCode)),\n ),\n ),\n '}',\n 'break;',\n ]),\n ),\n '}',\n 'if(!promises.length) return initPromises[name] = 1;',\n `return initPromises[name] = Promise.all(promises).then(${runtimeTemplate.returningFunction(\n 'initPromises[name] = 1',\n )});`,\n ],\n )};`,\n ]);\n }\n}\n\nexport default ShareRuntimeModule;\n"],"names":["ShareRuntimeModule","RuntimeModule","generate","compilation","Error","runtimeTemplate","codeGenerationResults","outputOptions","uniqueName","ignoreBrowserWarnings","chunkGraph","initCodePerScope","Map","chunk","getAllReferencedChunks","modules","getOrderedChunkModulesIterableBySourceType","compareModulesByIdentifier","m","data","getData","runtime","item","shareScope","initStage","init","stages","get","undefined","set","list","Set","add","Template","asString","RuntimeGlobals","shareScopeMap","initializeSharing","basicFunction","hasOwnProperty","JSON","stringify","expressionFunction","indent","require","returningFunction","Array","from","sort","a","b","compareStrings","map","name","initCode","constructor"],"mappings":"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"}
|
|
@@ -11,9 +11,13 @@ Object.defineProperty(exports, "resolveMatchedConfigs", {
|
|
|
11
11
|
return resolveMatchedConfigs;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
14
|
+
const _ModuleNotFoundError = /*#__PURE__*/ _interop_require_default(require("webpack/lib/ModuleNotFoundError"));
|
|
15
|
+
const _LazySet = /*#__PURE__*/ _interop_require_default(require("webpack/lib/util/LazySet"));
|
|
16
|
+
function _interop_require_default(obj) {
|
|
17
|
+
return obj && obj.__esModule ? obj : {
|
|
18
|
+
default: obj
|
|
19
|
+
};
|
|
20
|
+
}
|
|
17
21
|
const RESOLVE_OPTIONS = {
|
|
18
22
|
dependencyType: 'esm'
|
|
19
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/resolveMatchedConfigs.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy\n*/\nimport type Compilation from 'webpack/lib/Compilation';\nimport type { ResolveOptionsWithDependencyType } from 'webpack/lib/ResolverFactory';\nimport ModuleNotFoundError from 'webpack/lib/ModuleNotFoundError';\nimport LazySet from 'webpack/lib/util/LazySet';\n\ninterface MatchedConfigs<T> {\n resolved: Map<string, T>;\n unresolved: Map<string, T>;\n prefixed: Map<string, T>;\n}\n\nconst RESOLVE_OPTIONS: ResolveOptionsWithDependencyType = {\n dependencyType: 'esm',\n};\n\nexport async function resolveMatchedConfigs<T>(\n compilation: Compilation,\n configs: [string, T][],\n): Promise<MatchedConfigs<T>> {\n const resolved = new Map<string, T>();\n const unresolved = new Map<string, T>();\n const prefixed = new Map<string, T>();\n const resolveContext = {\n fileDependencies: new LazySet<string>(),\n contextDependencies: new LazySet<string>(),\n missingDependencies: new LazySet<string>(),\n };\n const resolver = compilation.resolverFactory.get('normal', RESOLVE_OPTIONS);\n const context = compilation.compiler.context;\n\n await Promise.all(\n //@ts-ignore\n configs.map(([request, config]) => {\n if (/^\\.\\.?(\\/|$)/.test(request)) {\n // relative request\n return new Promise<void>((resolve) => {\n resolver.resolve(\n {},\n context,\n request,\n resolveContext,\n (err, result) => {\n if (err || result === false) {\n err = err || new Error(`Can't resolve ${request}`);\n compilation.errors.push(\n new ModuleNotFoundError(null, err, {\n name: `shared module ${request}`,\n }),\n );\n return resolve();\n }\n resolved.set(result as string, config);\n resolve();\n },\n );\n });\n } else if (/^(\\/|[A-Za-z]:\\\\|\\\\\\\\)/.test(request)) {\n // absolute path\n resolved.set(request, config);\n } else if (request.endsWith('/')) {\n // module request prefix\n prefixed.set(request, config);\n } else {\n // module request\n unresolved.set(request, config);\n }\n }),\n );\n compilation.contextDependencies.addAll(resolveContext.contextDependencies);\n compilation.fileDependencies.addAll(resolveContext.fileDependencies);\n compilation.missingDependencies.addAll(resolveContext.missingDependencies);\n return { resolved, unresolved, prefixed };\n}\n"],"names":["resolveMatchedConfigs","RESOLVE_OPTIONS","dependencyType","compilation","configs","resolved","Map","unresolved","prefixed","resolveContext","fileDependencies","LazySet","contextDependencies","missingDependencies","resolver","resolverFactory","get","context","compiler","Promise","all","map","request","config","test","resolve","err","result","Error","errors","push","ModuleNotFoundError","name","set","endsWith","addAll"],"mappings":"AAAA;;;AAGA;;;;+BAgBsBA;;;eAAAA
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/enhanced/src/lib/sharing/resolveMatchedConfigs.ts"],"sourcesContent":["/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy\n*/\nimport type Compilation from 'webpack/lib/Compilation';\nimport type { ResolveOptionsWithDependencyType } from 'webpack/lib/ResolverFactory';\nimport ModuleNotFoundError from 'webpack/lib/ModuleNotFoundError';\nimport LazySet from 'webpack/lib/util/LazySet';\n\ninterface MatchedConfigs<T> {\n resolved: Map<string, T>;\n unresolved: Map<string, T>;\n prefixed: Map<string, T>;\n}\n\nconst RESOLVE_OPTIONS: ResolveOptionsWithDependencyType = {\n dependencyType: 'esm',\n};\n\nexport async function resolveMatchedConfigs<T>(\n compilation: Compilation,\n configs: [string, T][],\n): Promise<MatchedConfigs<T>> {\n const resolved = new Map<string, T>();\n const unresolved = new Map<string, T>();\n const prefixed = new Map<string, T>();\n const resolveContext = {\n fileDependencies: new LazySet<string>(),\n contextDependencies: new LazySet<string>(),\n missingDependencies: new LazySet<string>(),\n };\n const resolver = compilation.resolverFactory.get('normal', RESOLVE_OPTIONS);\n const context = compilation.compiler.context;\n\n await Promise.all(\n //@ts-ignore\n configs.map(([request, config]) => {\n if (/^\\.\\.?(\\/|$)/.test(request)) {\n // relative request\n return new Promise<void>((resolve) => {\n resolver.resolve(\n {},\n context,\n request,\n resolveContext,\n (err, result) => {\n if (err || result === false) {\n err = err || new Error(`Can't resolve ${request}`);\n compilation.errors.push(\n new ModuleNotFoundError(null, err, {\n name: `shared module ${request}`,\n }),\n );\n return resolve();\n }\n resolved.set(result as string, config);\n resolve();\n },\n );\n });\n } else if (/^(\\/|[A-Za-z]:\\\\|\\\\\\\\)/.test(request)) {\n // absolute path\n resolved.set(request, config);\n } else if (request.endsWith('/')) {\n // module request prefix\n prefixed.set(request, config);\n } else {\n // module request\n unresolved.set(request, config);\n }\n }),\n );\n compilation.contextDependencies.addAll(resolveContext.contextDependencies);\n compilation.fileDependencies.addAll(resolveContext.fileDependencies);\n compilation.missingDependencies.addAll(resolveContext.missingDependencies);\n return { resolved, unresolved, prefixed };\n}\n"],"names":["resolveMatchedConfigs","RESOLVE_OPTIONS","dependencyType","compilation","configs","resolved","Map","unresolved","prefixed","resolveContext","fileDependencies","LazySet","contextDependencies","missingDependencies","resolver","resolverFactory","get","context","compiler","Promise","all","map","request","config","test","resolve","err","result","Error","errors","push","ModuleNotFoundError","name","set","endsWith","addAll"],"mappings":"AAAA;;;AAGA;;;;+BAgBsBA;;;eAAAA;;;4EAbU;gEACZ;;;;;;AAQpB,MAAMC,kBAAoD;IACxDC,gBAAgB;AAClB;AAEO,eAAeF,sBACpBG,WAAwB,EACxBC,OAAsB;IAEtB,MAAMC,WAAW,IAAIC;IACrB,MAAMC,aAAa,IAAID;IACvB,MAAME,WAAW,IAAIF;IACrB,MAAMG,iBAAiB;QACrBC,kBAAkB,IAAIC,gBAAO;QAC7BC,qBAAqB,IAAID,gBAAO;QAChCE,qBAAqB,IAAIF,gBAAO;IAClC;IACA,MAAMG,WAAWX,YAAYY,eAAe,CAACC,GAAG,CAAC,UAAUf;IAC3D,MAAMgB,UAAUd,YAAYe,QAAQ,CAACD,OAAO;IAE5C,MAAME,QAAQC,GAAG,CACf,YAAY;IACZhB,QAAQiB,GAAG,CAAC,CAAC,CAACC,SAASC,OAAO;QAC5B,IAAI,eAAeC,IAAI,CAACF,UAAU;YAChC,mBAAmB;YACnB,OAAO,IAAIH,QAAc,CAACM;gBACxBX,SAASW,OAAO,CACd,CAAC,GACDR,SACAK,SACAb,gBACA,CAACiB,KAAKC;oBACJ,IAAID,OAAOC,WAAW,OAAO;wBAC3BD,MAAMA,OAAO,IAAIE,MAAM,CAAC,cAAc,EAAEN,QAAQ,CAAC;wBACjDnB,YAAY0B,MAAM,CAACC,IAAI,CACrB,IAAIC,4BAAmB,CAAC,MAAML,KAAK;4BACjCM,MAAM,CAAC,cAAc,EAAEV,QAAQ,CAAC;wBAClC;wBAEF,OAAOG;oBACT;oBACApB,SAAS4B,GAAG,CAACN,QAAkBJ;oBAC/BE;gBACF;YAEJ;QACF,OAAO,IAAI,yBAAyBD,IAAI,CAACF,UAAU;YACjD,gBAAgB;YAChBjB,SAAS4B,GAAG,CAACX,SAASC;QACxB,OAAO,IAAID,QAAQY,QAAQ,CAAC,MAAM;YAChC,wBAAwB;YACxB1B,SAASyB,GAAG,CAACX,SAASC;QACxB,OAAO;YACL,iBAAiB;YACjBhB,WAAW0B,GAAG,CAACX,SAASC;QAC1B;IACF;IAEFpB,YAAYS,mBAAmB,CAACuB,MAAM,CAAC1B,eAAeG,mBAAmB;IACzET,YAAYO,gBAAgB,CAACyB,MAAM,CAAC1B,eAAeC,gBAAgB;IACnEP,YAAYU,mBAAmB,CAACsB,MAAM,CAAC1B,eAAeI,mBAAmB;IACzE,OAAO;QAAER;QAAUE;QAAYC;IAAS;AAC1C"}
|