From 9bce51f651aad297ef9eb6df832bfdaf1de05d84 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 22 四月 2026 14:27:54 +0800
Subject: [PATCH] 青岛推送

---
 node_modules/webpack/lib/sharing/ConsumeSharedPlugin.js |   79 +++++++++++++++++++++++----------------
 1 files changed, 47 insertions(+), 32 deletions(-)

diff --git a/node_modules/webpack/lib/sharing/ConsumeSharedPlugin.js b/node_modules/webpack/lib/sharing/ConsumeSharedPlugin.js
index 0a51d6d..d809b39 100644
--- a/node_modules/webpack/lib/sharing/ConsumeSharedPlugin.js
+++ b/node_modules/webpack/lib/sharing/ConsumeSharedPlugin.js
@@ -10,7 +10,6 @@
 const WebpackError = require("../WebpackError");
 const { parseOptions } = require("../container/options");
 const LazySet = require("../util/LazySet");
-const createSchemaValidation = require("../util/create-schema-validation");
 const { parseRange } = require("../util/semver");
 const ConsumeSharedFallbackDependency = require("./ConsumeSharedFallbackDependency");
 const ConsumeSharedModule = require("./ConsumeSharedModule");
@@ -26,19 +25,11 @@
 /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
 /** @typedef {import("../../declarations/plugins/sharing/ConsumeSharedPlugin").ConsumeSharedPluginOptions} ConsumeSharedPluginOptions */
 /** @typedef {import("../Compiler")} Compiler */
+/** @typedef {import("../Compilation").FileSystemDependencies} FileSystemDependencies */
 /** @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"),
-	() => require("../../schemas/plugins/sharing/ConsumeSharedPlugin.json"),
-	{
-		name: "Consume Shared Plugin",
-		baseDataPath: "options"
-	}
-);
 
 /** @type {ResolveOptionsWithDependencyType} */
 const RESOLVE_OPTIONS = { dependencyType: "esm" };
@@ -46,16 +37,41 @@
 
 class ConsumeSharedPlugin {
 	/**
+	 * Creates an instance of ConsumeSharedPlugin.
 	 * @param {ConsumeSharedPluginOptions} options options
 	 */
 	constructor(options) {
-		if (typeof options !== "string") {
-			validate(options);
+		this.options = options;
+	}
+
+	/**
+	 * Applies the plugin by registering its hooks on the compiler.
+	 * @param {Compiler} compiler the compiler instance
+	 * @returns {void}
+	 */
+	apply(compiler) {
+		// TODO webpack 6 remove string support
+		if (typeof this.options !== "string") {
+			compiler.hooks.validate.tap(PLUGIN_NAME, () => {
+				compiler.validate(
+					() =>
+						require("../../schemas/plugins/sharing/ConsumeSharedPlugin.json"),
+					this.options,
+					{
+						name: "Consume Shared Plugin",
+						baseDataPath: "options"
+					},
+					(options) =>
+						require("../../schemas/plugins/sharing/ConsumeSharedPlugin.check")(
+							options
+						)
+				);
+			});
 		}
 
 		/** @type {[string, ConsumeOptions][]} */
-		this._consumes = parseOptions(
-			options.consumes,
+		const consumes = parseOptions(
+			this.options.consumes,
 			(item, key) => {
 				if (Array.isArray(item)) throw new Error("Unexpected array in options");
 				/** @type {ConsumeOptions} */
@@ -64,7 +80,7 @@
 						? // item is a request/key
 							{
 								import: key,
-								shareScope: options.shareScope || "default",
+								shareScope: this.options.shareScope || "default",
 								shareKey: key,
 								requiredVersion: undefined,
 								packageName: undefined,
@@ -76,7 +92,7 @@
 							// item is a version
 							{
 								import: key,
-								shareScope: options.shareScope || "default",
+								shareScope: this.options.shareScope || "default",
 								shareKey: key,
 								requiredVersion: parseRange(item),
 								strictVersion: true,
@@ -88,7 +104,7 @@
 			},
 			(item, key) => ({
 				import: item.import === false ? undefined : item.import || key,
-				shareScope: item.shareScope || options.shareScope || "default",
+				shareScope: item.shareScope || this.options.shareScope || "default",
 				shareKey: item.shareKey || key,
 				requiredVersion:
 					typeof item.requiredVersion === "string"
@@ -103,14 +119,7 @@
 				eager: Boolean(item.eager)
 			})
 		);
-	}
 
-	/**
-	 * Apply the plugin
-	 * @param {Compiler} compiler the compiler instance
-	 * @returns {void}
-	 */
-	apply(compiler) {
 		compiler.hooks.thisCompilation.tap(
 			PLUGIN_NAME,
 			(compilation, { normalModuleFactory }) => {
@@ -119,13 +128,15 @@
 					normalModuleFactory
 				);
 
-				/** @type {Map<string, ConsumeOptions>} */
+				/** @typedef {Map<string, ConsumeOptions>} Consumes */
+
+				/** @type {Consumes} */
 				let unresolvedConsumes;
-				/** @type {Map<string, ConsumeOptions>} */
+				/** @type {Consumes} */
 				let resolvedConsumes;
-				/** @type {Map<string, ConsumeOptions>} */
+				/** @type {Consumes} */
 				let prefixedConsumes;
-				const promise = resolveMatchedConfigs(compilation, this._consumes).then(
+				const promise = resolveMatchedConfigs(compilation, consumes).then(
 					({ resolved, unresolved, prefixed }) => {
 						resolvedConsumes = resolved;
 						unresolvedConsumes = unresolved;
@@ -139,6 +150,7 @@
 				);
 
 				/**
+				 * Creates a consume shared module.
 				 * @param {string} context issuer directory
 				 * @param {string} request request
 				 * @param {ConsumeOptions} config options
@@ -146,6 +158,7 @@
 				 */
 				const createConsumeSharedModule = (context, request, config) => {
 					/**
+					 * Required version warning.
 					 * @param {string} details details
 					 */
 					const requiredVersionWarning = (details) => {
@@ -157,10 +170,11 @@
 					};
 					const directFallback =
 						config.import &&
-						/^(\.\.?(\/|$)|\/|[A-Za-z]:|\\\\)/.test(config.import);
+						/^(?:\.\.?(?:\/|$)|\/|[A-Z]:|\\\\)/i.test(config.import);
 					return Promise.all([
 						new Promise(
 							/**
+							 * Handles the callback logic for this hook.
 							 * @param {(value?: string) => void} resolve resolve
 							 */
 							(resolve) => {
@@ -168,7 +182,7 @@
 									resolve();
 									return;
 								}
-								/** @typedef {ResolveContext} */
+								/** @type {ResolveContext & { fileDependencies: FileSystemDependencies, contextDependencies: FileSystemDependencies, missingDependencies: FileSystemDependencies }} */
 								const resolveContext = {
 									fileDependencies: new LazySet(),
 									contextDependencies: new LazySet(),
@@ -204,6 +218,7 @@
 						),
 						new Promise(
 							/**
+							 * Handles the name callback for this hook.
 							 * @param {(value?: SemVerRange) => void} resolve resolve
 							 */
 							(resolve) => {
@@ -213,13 +228,13 @@
 								}
 								let packageName = config.packageName;
 								if (packageName === undefined) {
-									if (/^(\/|[A-Za-z]:|\\\\)/.test(request)) {
+									if (/^(?:\/|[A-Z]:|\\\\)/i.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);
+									const match = /^(?:@[^\\/]+[\\/])?[^\\/]+/.exec(request);
 									if (!match) {
 										requiredVersionWarning(
 											"Unable to extract the package name from request."

--
Gitblit v1.9.3