feat: refactoring project
This commit is contained in:
221
node_modules/webpack/lib/sharing/ConsumeSharedPlugin.js
generated
vendored
221
node_modules/webpack/lib/sharing/ConsumeSharedPlugin.js
generated
vendored
@@ -27,7 +27,9 @@ const {
|
||||
/** @typedef {import("../../declarations/plugins/sharing/ConsumeSharedPlugin").ConsumesConfig} ConsumesConfig */
|
||||
/** @typedef {import("../Compiler")} Compiler */
|
||||
/** @typedef {import("../ResolverFactory").ResolveOptionsWithDependencyType} ResolveOptionsWithDependencyType */
|
||||
/** @typedef {import("../util/semver").SemVerRange} SemVerRange */
|
||||
/** @typedef {import("./ConsumeSharedModule").ConsumeOptions} ConsumeOptions */
|
||||
/** @typedef {import("./utils").DescriptionFile} DescriptionFile */
|
||||
|
||||
const validate = createSchemaValidation(
|
||||
require("../../schemas/plugins/sharing/ConsumeSharedPlugin.check.js"),
|
||||
@@ -57,7 +59,7 @@ class ConsumeSharedPlugin {
|
||||
(item, key) => {
|
||||
if (Array.isArray(item)) throw new Error("Unexpected array in options");
|
||||
/** @type {ConsumeOptions} */
|
||||
let result =
|
||||
const result =
|
||||
item === key || !isRequiredVersion(item)
|
||||
? // item is a request/key
|
||||
{
|
||||
@@ -97,8 +99,8 @@ class ConsumeSharedPlugin {
|
||||
? item.strictVersion
|
||||
: item.import !== false && !item.singleton,
|
||||
packageName: item.packageName,
|
||||
singleton: !!item.singleton,
|
||||
eager: !!item.eager
|
||||
singleton: Boolean(item.singleton),
|
||||
eager: Boolean(item.eager)
|
||||
})
|
||||
);
|
||||
}
|
||||
@@ -157,110 +159,127 @@ class ConsumeSharedPlugin {
|
||||
config.import &&
|
||||
/^(\.\.?(\/|$)|\/|[A-Za-z]:|\\\\)/.test(config.import);
|
||||
return Promise.all([
|
||||
new Promise(resolve => {
|
||||
if (!config.import) return resolve();
|
||||
const resolveContext = {
|
||||
/** @type {LazySet<string>} */
|
||||
fileDependencies: new LazySet(),
|
||||
/** @type {LazySet<string>} */
|
||||
contextDependencies: new LazySet(),
|
||||
/** @type {LazySet<string>} */
|
||||
missingDependencies: new LazySet()
|
||||
};
|
||||
resolver.resolve(
|
||||
{},
|
||||
directFallback ? compiler.context : context,
|
||||
config.import,
|
||||
resolveContext,
|
||||
(err, result) => {
|
||||
compilation.contextDependencies.addAll(
|
||||
resolveContext.contextDependencies
|
||||
);
|
||||
compilation.fileDependencies.addAll(
|
||||
resolveContext.fileDependencies
|
||||
);
|
||||
compilation.missingDependencies.addAll(
|
||||
resolveContext.missingDependencies
|
||||
);
|
||||
if (err) {
|
||||
compilation.errors.push(
|
||||
new ModuleNotFoundError(null, err, {
|
||||
name: `resolving fallback for shared module ${request}`
|
||||
})
|
||||
new Promise(
|
||||
/**
|
||||
* @param {(value?: string) => void} resolve resolve
|
||||
*/
|
||||
resolve => {
|
||||
if (!config.import) {
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
const resolveContext = {
|
||||
/** @type {LazySet<string>} */
|
||||
fileDependencies: new LazySet(),
|
||||
/** @type {LazySet<string>} */
|
||||
contextDependencies: new LazySet(),
|
||||
/** @type {LazySet<string>} */
|
||||
missingDependencies: new LazySet()
|
||||
};
|
||||
resolver.resolve(
|
||||
{},
|
||||
directFallback ? compiler.context : context,
|
||||
config.import,
|
||||
resolveContext,
|
||||
(err, result) => {
|
||||
compilation.contextDependencies.addAll(
|
||||
resolveContext.contextDependencies
|
||||
);
|
||||
return resolve();
|
||||
compilation.fileDependencies.addAll(
|
||||
resolveContext.fileDependencies
|
||||
);
|
||||
compilation.missingDependencies.addAll(
|
||||
resolveContext.missingDependencies
|
||||
);
|
||||
if (err) {
|
||||
compilation.errors.push(
|
||||
new ModuleNotFoundError(null, err, {
|
||||
name: `resolving fallback for shared module ${request}`
|
||||
})
|
||||
);
|
||||
return resolve();
|
||||
}
|
||||
resolve(/** @type {string} */ (result));
|
||||
}
|
||||
resolve(result);
|
||||
}
|
||||
);
|
||||
}),
|
||||
new Promise(resolve => {
|
||||
if (config.requiredVersion !== undefined)
|
||||
return resolve(config.requiredVersion);
|
||||
let packageName = config.packageName;
|
||||
if (packageName === undefined) {
|
||||
if (/^(\/|[A-Za-z]:|\\\\)/.test(request)) {
|
||||
// For relative or absolute requests we don't automatically use a packageName.
|
||||
// If wished one can specify one with the packageName option.
|
||||
return resolve();
|
||||
}
|
||||
const match = /^((?:@[^\\/]+[\\/])?[^\\/]+)/.exec(request);
|
||||
if (!match) {
|
||||
requiredVersionWarning(
|
||||
"Unable to extract the package name from request."
|
||||
);
|
||||
return resolve();
|
||||
}
|
||||
packageName = match[0];
|
||||
);
|
||||
}
|
||||
),
|
||||
new Promise(
|
||||
/**
|
||||
* @param {(value?: SemVerRange) => void} resolve resolve
|
||||
*/
|
||||
resolve => {
|
||||
if (config.requiredVersion !== undefined) {
|
||||
resolve(/** @type {SemVerRange} */ (config.requiredVersion));
|
||||
return;
|
||||
}
|
||||
let packageName = config.packageName;
|
||||
if (packageName === undefined) {
|
||||
if (/^(\/|[A-Za-z]:|\\\\)/.test(request)) {
|
||||
// For relative or absolute requests we don't automatically use a packageName.
|
||||
// If wished one can specify one with the packageName option.
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
const match = /^((?:@[^\\/]+[\\/])?[^\\/]+)/.exec(request);
|
||||
if (!match) {
|
||||
requiredVersionWarning(
|
||||
"Unable to extract the package name from request."
|
||||
);
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
packageName = match[0];
|
||||
}
|
||||
|
||||
getDescriptionFile(
|
||||
compilation.inputFileSystem,
|
||||
context,
|
||||
["package.json"],
|
||||
(err, result) => {
|
||||
if (err) {
|
||||
requiredVersionWarning(
|
||||
`Unable to read description file: ${err}`
|
||||
);
|
||||
return resolve();
|
||||
getDescriptionFile(
|
||||
compilation.inputFileSystem,
|
||||
context,
|
||||
["package.json"],
|
||||
(err, result) => {
|
||||
if (err) {
|
||||
requiredVersionWarning(
|
||||
`Unable to read description file: ${err}`
|
||||
);
|
||||
return resolve();
|
||||
}
|
||||
const { data, path: descriptionPath } =
|
||||
/** @type {DescriptionFile} */ (result);
|
||||
if (!data) {
|
||||
requiredVersionWarning(
|
||||
`Unable to find description file in ${context}.`
|
||||
);
|
||||
return resolve();
|
||||
}
|
||||
if (data.name === packageName) {
|
||||
// Package self-referencing
|
||||
return resolve();
|
||||
}
|
||||
const requiredVersion =
|
||||
getRequiredVersionFromDescriptionFile(data, packageName);
|
||||
if (typeof requiredVersion !== "string") {
|
||||
requiredVersionWarning(
|
||||
`Unable to find required version for "${packageName}" in description file (${descriptionPath}). It need to be in dependencies, devDependencies or peerDependencies.`
|
||||
);
|
||||
return resolve();
|
||||
}
|
||||
resolve(parseRange(requiredVersion));
|
||||
}
|
||||
const { data, path: descriptionPath } = result;
|
||||
if (!data) {
|
||||
requiredVersionWarning(
|
||||
`Unable to find description file in ${context}.`
|
||||
);
|
||||
return resolve();
|
||||
}
|
||||
if (data.name === packageName) {
|
||||
// Package self-referencing
|
||||
return resolve();
|
||||
}
|
||||
const requiredVersion = getRequiredVersionFromDescriptionFile(
|
||||
data,
|
||||
packageName
|
||||
);
|
||||
if (typeof requiredVersion !== "string") {
|
||||
requiredVersionWarning(
|
||||
`Unable to find required version for "${packageName}" in description file (${descriptionPath}). It need to be in dependencies, devDependencies or peerDependencies.`
|
||||
);
|
||||
return resolve();
|
||||
}
|
||||
resolve(parseRange(requiredVersion));
|
||||
}
|
||||
);
|
||||
})
|
||||
]).then(([importResolved, requiredVersion]) => {
|
||||
return new ConsumeSharedModule(
|
||||
directFallback ? compiler.context : context,
|
||||
{
|
||||
...config,
|
||||
importResolved,
|
||||
import: importResolved ? config.import : undefined,
|
||||
requiredVersion
|
||||
);
|
||||
}
|
||||
);
|
||||
});
|
||||
)
|
||||
]).then(
|
||||
([importResolved, requiredVersion]) =>
|
||||
new ConsumeSharedModule(
|
||||
directFallback ? compiler.context : context,
|
||||
{
|
||||
...config,
|
||||
importResolved,
|
||||
import: importResolved ? config.import : undefined,
|
||||
requiredVersion
|
||||
}
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
normalModuleFactory.hooks.factorize.tapPromise(
|
||||
|
||||
Reference in New Issue
Block a user