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/dependencies/ImportPhase.js | 91 +++++++++++++++++++++++++++++++++++----------
1 files changed, 71 insertions(+), 20 deletions(-)
diff --git a/node_modules/webpack/lib/dependencies/ImportPhase.js b/node_modules/webpack/lib/dependencies/ImportPhase.js
index 69dd0b7..e52bf77 100644
--- a/node_modules/webpack/lib/dependencies/ImportPhase.js
+++ b/node_modules/webpack/lib/dependencies/ImportPhase.js
@@ -25,27 +25,47 @@
Source: 0b10
});
+/** @typedef {"defer" | "source" | "evaluation"} ImportPhaseName */
+
/**
+ * Defines the import phase utils type used by this module.
* @typedef {object} ImportPhaseUtils
- * @property {(phase: ImportPhaseType) => boolean} isDefer true if phase is defer
- * @property {(phase: ImportPhaseType) => boolean} isSource true if phase is source
+ * @property {(phase: ImportPhaseType | undefined) => boolean} isEvaluation true if phase is evaluation
+ * @property {(phase: ImportPhaseType | undefined) => boolean} isDefer true if phase is defer
+ * @property {(phase: ImportPhaseType | undefined) => boolean} isSource true if phase is source
+ * @property {(phase: ImportPhaseType) => ImportPhaseName} stringify return stringified name of phase
*/
/** @type {ImportPhaseUtils} */
const ImportPhaseUtils = {
+ isEvaluation(phase) {
+ return phase === ImportPhase.Evaluation;
+ },
isDefer(phase) {
return phase === ImportPhase.Defer;
},
isSource(phase) {
return phase === ImportPhase.Source;
+ },
+ stringify(phase) {
+ switch (phase) {
+ case ImportPhase.Defer:
+ return "defer";
+ case ImportPhase.Source:
+ return "source";
+ default:
+ return "evaluation";
+ }
}
};
/**
+ * Defines the get comment options type used by this module.
* @typedef {() => Record<string, EXPECTED_ANY> | null} GetCommentOptions
*/
/**
+ * Defines the get import phase callback.
* @callback GetImportPhase
* @param {JavascriptParser} parser parser
* @param {ExportNamedDeclaration | ExportAllDeclaration | ImportDeclaration | ImportExpression} node node
@@ -54,17 +74,23 @@
*/
/**
- * @param {boolean=} enableImportPhase enable import phase detection
+ * Creates an import phase resolver.
+ * @param {boolean=} enableDeferPhase enable defer phase detection
+ * @param {boolean=} enableSourcePhase enable source phase detection
* @returns {GetImportPhase} evaluates the import phase for ast node
*/
-function createGetImportPhase(enableImportPhase) {
+function createGetImportPhase(enableDeferPhase, enableSourcePhase) {
return (parser, node, getCommentOptions) => {
- if (!enableImportPhase) return ImportPhase.Evaluation;
+ if (!enableDeferPhase && !enableSourcePhase) return ImportPhase.Evaluation;
- // We now only support `defer import`
+ // We now only support `defer import` and `source import` syntax
const phaseBySyntax =
- "phase" in node && node.phase === "defer"
- ? ImportPhase.Defer
+ "phase" in node
+ ? node.phase === "defer" && enableDeferPhase
+ ? ImportPhase.Defer
+ : node.phase === "source" && enableSourcePhase
+ ? ImportPhase.Source
+ : ImportPhase.Evaluation
: ImportPhase.Evaluation;
if (!node.range) {
@@ -95,19 +121,44 @@
const options = getCommentOptions();
- if (!options || !options.webpackDefer) return phaseBySyntax;
+ if (!options) {
+ return phaseBySyntax;
+ }
- const { webpackDefer } = options;
- if (typeof webpackDefer === "boolean") {
- return webpackDefer ? ImportPhase.Defer : phaseBySyntax;
- } else if (node.loc) {
- const CommentCompilationWarning = getCommentCompilationWarning();
- parser.state.module.addWarning(
- new CommentCompilationWarning(
- "webpackDefer magic comment expected a boolean value.",
- node.loc
- )
- );
+ if (!options.webpackDefer && !options.webpackSource) {
+ return phaseBySyntax;
+ }
+
+ const { webpackDefer, webpackSource } = options;
+
+ if (enableDeferPhase && typeof options.webpackDefer !== "undefined") {
+ if (typeof webpackDefer === "boolean") {
+ return webpackDefer ? ImportPhase.Defer : phaseBySyntax;
+ } else if (node.loc) {
+ const CommentCompilationWarning = getCommentCompilationWarning();
+
+ parser.state.module.addWarning(
+ new CommentCompilationWarning(
+ "webpackDefer magic comment expected a boolean value.",
+ node.loc
+ )
+ );
+ }
+ }
+
+ if (enableSourcePhase && typeof options.webpackSource !== "undefined") {
+ if (typeof webpackSource === "boolean") {
+ return webpackSource ? ImportPhase.Source : phaseBySyntax;
+ } else if (node.loc) {
+ const CommentCompilationWarning = getCommentCompilationWarning();
+
+ parser.state.module.addWarning(
+ new CommentCompilationWarning(
+ "webpackSource magic comment expected a boolean value.",
+ node.loc
+ )
+ );
+ }
}
return phaseBySyntax;
--
Gitblit v1.9.3