WXL
3 天以前 9bce51f651aad297ef9eb6df832bfdaf1de05d84
node_modules/webpack/lib/config/defaults.js
@@ -8,6 +8,11 @@
const fs = require("fs");
const path = require("path");
const {
   CSS_TYPE,
   JAVASCRIPT_TYPE,
   UNKNOWN_TYPE
} = require("../ModuleSourceTypeConstants");
const {
   ASSET_MODULE_TYPE,
   ASSET_MODULE_TYPE_BYTES,
   ASSET_MODULE_TYPE_INLINE,
@@ -34,6 +39,7 @@
/** @typedef {import("../../declarations/WebpackOptions").CacheOptionsNormalized} CacheOptionsNormalized */
/** @typedef {import("../../declarations/WebpackOptions").Context} Context */
/** @typedef {import("../../declarations/WebpackOptions").DevTool} Devtool */
/** @typedef {import("../../declarations/WebpackOptions").CssGeneratorOptions} CssGeneratorOptions */
/** @typedef {import("../../declarations/WebpackOptions").EntryDescription} EntryDescription */
/** @typedef {import("../../declarations/WebpackOptions").EntryNormalized} Entry */
@@ -52,6 +58,10 @@
/** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
/** @typedef {import("../../declarations/WebpackOptions").Loader} Loader */
/** @typedef {import("../../declarations/WebpackOptions").Mode} Mode */
/** @typedef {import("../../declarations/WebpackOptions").HashFunction} HashFunction */
/** @typedef {import("../../declarations/WebpackOptions").HashSalt} HashSalt */
/** @typedef {import("../../declarations/WebpackOptions").HashDigest} HashDigest */
/** @typedef {import("../../declarations/WebpackOptions").HashDigestLength} HashDigestLength */
/** @typedef {import("../../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptions */
/** @typedef {import("../../declarations/WebpackOptions").Node} WebpackNode */
/** @typedef {import("../../declarations/WebpackOptions").OptimizationNormalized} Optimization */
@@ -64,15 +74,19 @@
/** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
/** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
/** @typedef {import("../Module")} Module */
/** @typedef {import("../javascript/EnableChunkLoadingPlugin").ChunkLoadingTypes} ChunkLoadingTypes */
/** @typedef {import("../wasm/EnableWasmLoadingPlugin").WasmLoadingTypes} WasmLoadingTypes */
/** @typedef {import("./target").PlatformTargetProperties} PlatformTargetProperties */
/** @typedef {import("./target").TargetProperties} TargetProperties */
/**
 * Defines the recursive non nullable type used by this module.
 * @template T
 * @typedef {{ [P in keyof T]-?: T[P] extends object ? RecursiveNonNullable<NonNullable<T[P]>> : NonNullable<T[P]> }} RecursiveNonNullable
 */
/**
 * Defines the shared type used by this module.
 * @typedef {Output & {
 * uniqueName: NonNullable<Output["uniqueName"]>,
 * filename: NonNullable<Output["filename"]>,
@@ -82,14 +96,14 @@
 * hotUpdateChunkFilename: NonNullable<Output["hotUpdateChunkFilename"]>,
 * hotUpdateGlobal: NonNullable<Output["hotUpdateGlobal"]>,
 * assetModuleFilename: NonNullable<Output["assetModuleFilename"]>,
 * webassemblyModuleFilename: NonNullable<Output["webassemblyModuleFilename"]>
 * webassemblyModuleFilename: NonNullable<Output["webassemblyModuleFilename"]>,
 * sourceMapFilename: NonNullable<Output["sourceMapFilename"]>,
 * hotUpdateMainFilename: NonNullable<Output["hotUpdateMainFilename"]>,
 * devtoolNamespace: NonNullable<Output["devtoolNamespace"]>,
 * publicPath: NonNullable<Output["publicPath"]>
 * workerPublicPath: NonNullable<Output["workerPublicPath"]>
 * workerWasmLoading: NonNullable<Output["workerWasmLoading"]>
 * workerChunkLoading: NonNullable<Output["workerChunkLoading"]>
 * publicPath: NonNullable<Output["publicPath"]>,
 * workerPublicPath: NonNullable<Output["workerPublicPath"]>,
 * workerWasmLoading: NonNullable<Output["workerWasmLoading"]>,
 * workerChunkLoading: NonNullable<Output["workerChunkLoading"]>,
 * chunkFormat: NonNullable<Output["chunkFormat"]>,
 * module: NonNullable<Output["module"]>,
 * asyncChunks: NonNullable<Output["asyncChunks"]>,
@@ -117,6 +131,7 @@
 */
/**
 * Defines the shared type used by this module.
 * @typedef {SnapshotOptions & {
 * managedPaths: NonNullable<SnapshotOptions["managedPaths"]>,
 * unmanagedPaths: NonNullable<SnapshotOptions["unmanagedPaths"]>,
@@ -129,6 +144,7 @@
 */
/**
 * Defines the shared type used by this module.
 * @typedef {Optimization & {
 * runtimeChunk: NonNullable<Optimization["runtimeChunk"]>,
 * splitChunks: NonNullable<Optimization["splitChunks"]>,
@@ -157,6 +173,7 @@
 */
/**
 * Defines the shared type used by this module.
 * @typedef {ExternalsPresets & {
 * web: NonNullable<ExternalsPresets["web"]>,
 * node: NonNullable<ExternalsPresets["node"]>,
@@ -169,6 +186,7 @@
 */
/**
 * Defines the shared type used by this module.
 * @typedef {InfrastructureLogging & {
 * stream: NonNullable<InfrastructureLogging["stream"]>,
 * level: NonNullable<InfrastructureLogging["level"]>,
@@ -179,34 +197,17 @@
 */
/**
 * @typedef {WebpackOptionsNormalized
 * & { context: NonNullable<WebpackOptionsNormalized["context"]> }
 * & { infrastructureLogging: InfrastructureLoggingNormalizedWithDefaults }
 * } WebpackOptionsNormalizedWithBaseDefaults
 * Defines the webpack options normalized with base defaults type used by this module.
 * @typedef {WebpackOptionsNormalized & { context: NonNullable<WebpackOptionsNormalized["context"]> } & { infrastructureLogging: InfrastructureLoggingNormalizedWithDefaults }} WebpackOptionsNormalizedWithBaseDefaults
 */
/**
 * @typedef {WebpackOptionsNormalizedWithBaseDefaults
 * & { target: NonNullable<WebpackOptionsNormalized["target"]> }
 * & { output: OutputNormalizedWithDefaults }
 * & { optimization: OptimizationNormalizedWithDefaults }
 * & { devtool: NonNullable<WebpackOptionsNormalized["devtool"]> }
 * & { stats: NonNullable<WebpackOptionsNormalized["stats"]>  }
 * & { node: NonNullable<WebpackOptionsNormalized["node"]> }
 * & { profile: NonNullable<WebpackOptionsNormalized["profile"]> }
 * & { parallelism: NonNullable<WebpackOptionsNormalized["parallelism"]> }
 * & { snapshot: SnapshotNormalizedWithDefaults }
 * & { externalsPresets: ExternalsPresetsNormalizedWithDefaults }
 * & { externalsType: NonNullable<WebpackOptionsNormalized["externalsType"]> }
 * & { watch: NonNullable<WebpackOptionsNormalized["watch"]> }
 * & { performance: NonNullable<WebpackOptionsNormalized["performance"]> }
 * & { recordsInputPath: NonNullable<WebpackOptionsNormalized["recordsInputPath"]> }
 * & { recordsOutputPath: NonNullable<WebpackOptionsNormalized["recordsOutputPath"]>
 * & { dotenv: NonNullable<WebpackOptionsNormalized["dotenv"]> }
 * }} WebpackOptionsNormalizedWithDefaults
 * Defines the webpack options normalized with defaults type used by this module.
 * @typedef {WebpackOptionsNormalizedWithBaseDefaults & { target: NonNullable<WebpackOptionsNormalized["target"]> } & { output: OutputNormalizedWithDefaults } & { optimization: OptimizationNormalizedWithDefaults } & { devtool: NonNullable<WebpackOptionsNormalized["devtool"]> } & { stats: NonNullable<WebpackOptionsNormalized["stats"]> } & { node: NonNullable<WebpackOptionsNormalized["node"]> } & { profile: NonNullable<WebpackOptionsNormalized["profile"]> } & { parallelism: NonNullable<WebpackOptionsNormalized["parallelism"]> } & { snapshot: SnapshotNormalizedWithDefaults } & { externalsPresets: ExternalsPresetsNormalizedWithDefaults } & { externalsType: NonNullable<WebpackOptionsNormalized["externalsType"]> } & { watch: NonNullable<WebpackOptionsNormalized["watch"]> } & { performance: NonNullable<WebpackOptionsNormalized["performance"]> } & { recordsInputPath: NonNullable<WebpackOptionsNormalized["recordsInputPath"]> } & { recordsOutputPath: NonNullable<WebpackOptionsNormalized["recordsOutputPath"]> } & { dotenv: NonNullable<WebpackOptionsNormalized["dotenv"]> }} WebpackOptionsNormalizedWithDefaults
 */
/**
 * Defines the resolved options type used by this module.
 * @typedef {object} ResolvedOptions
 * @property {PlatformTargetProperties | false} platform - platform target properties
 */
@@ -219,7 +220,7 @@
};
/**
 * Sets a constant default value when undefined
 * Processes the provided obj.
 * @template T
 * @template {keyof T} P
 * @param {T} obj an object
@@ -234,7 +235,7 @@
};
/**
 * Sets a dynamic default value when undefined, by calling the factory function
 * Processes the provided obj.
 * @template T
 * @template {keyof T} P
 * @param {T} obj an object
@@ -290,6 +291,7 @@
};
/**
 * Apply webpack options base defaults.
 * @param {WebpackOptionsNormalized} options options to be modified
 * @returns {void}
 */
@@ -299,6 +301,7 @@
};
/**
 * Apply webpack options defaults.
 * @param {WebpackOptionsNormalized} options options to be modified
 * @param {number=} compilerIndex index of compiler
 * @returns {ResolvedOptions} Resolved options after apply defaults
@@ -334,7 +337,28 @@
      }
   }
   F(options, "devtool", () => (development ? "eval" : false));
   F(
      options,
      "devtool",
      () =>
         /** @type {Devtool} */ (
            development
               ? [
                     options.experiments.css
                        ? {
                              type: "css",
                              use: "source-map"
                           }
                        : undefined,
                     {
                        type: "javascript",
                        use: "eval"
                     }
                  ].filter(Boolean)
               : false
         )
   );
   D(options, "watch", false);
   D(options, "profile", false);
   D(options, "parallelism", 100);
@@ -350,6 +374,8 @@
   const futureDefaults =
      /** @type {NonNullable<ExperimentsNormalized["futureDefaults"]>} */
      (options.experiments.futureDefaults);
   F(options, "validate", () => !(futureDefaults === true && production));
   F(options, "cache", () =>
      development ? { type: /** @type {"memory"} */ ("memory") } : false
@@ -390,6 +416,12 @@
   applyModuleDefaults(options.module, {
      cache,
      hashSalt: /** @type {NonNullable<Output["hashSalt"]>} */ (
         options.output.hashSalt
      ),
      hashFunction: /** @type {NonNullable<Output["hashFunction"]>} */ (
         options.output.hashFunction
      ),
      syncWebAssembly:
         /** @type {NonNullable<ExperimentsNormalized["syncWebAssembly"]>} */
         (options.experiments.syncWebAssembly),
@@ -402,11 +434,17 @@
      deferImport:
         /** @type {NonNullable<ExperimentsNormalized["deferImport"]>} */
         (options.experiments.deferImport),
      sourceImport:
         /** @type {NonNullable<ExperimentsNormalized["sourceImport"]>} */
         (options.experiments.sourceImport),
      futureDefaults,
      isNode: targetProperties && targetProperties.node === true,
      uniqueName: /** @type {string} */ (options.output.uniqueName),
      targetProperties,
      mode: options.mode
      mode: options.mode,
      outputModule:
         /** @type {NonNullable<WebpackOptionsNormalized["output"]["module"]>} */
         (options.output.module)
   });
   applyExternalsPresetsDefaults(options.externalsPresets, {
@@ -504,6 +542,7 @@
};
/**
 * Apply experiments defaults.
 * @param {ExperimentsNormalized} experiments options
 * @param {object} options options
 * @param {boolean} options.production is production
@@ -525,6 +564,7 @@
   D(experiments, "buildHttp", undefined);
   D(experiments, "cacheUnaffected", experiments.futureDefaults);
   D(experiments, "deferImport", false);
   D(experiments, "sourceImport", false);
   F(experiments, "css", () => (experiments.futureDefaults ? true : undefined));
   if (typeof experiments.buildHttp === "object") {
@@ -534,6 +574,7 @@
};
/**
 * Apply cache defaults.
 * @param {CacheOptionsNormalized} cache options
 * @param {object} options options
 * @param {string} options.name name
@@ -616,6 +657,7 @@
};
/**
 * Apply snapshot defaults.
 * @param {SnapshotOptions} snapshot options
 * @param {object} options options
 * @param {boolean} options.production is production
@@ -693,16 +735,19 @@
};
/**
 * Apply javascript parser options defaults.
 * @param {JavascriptParserOptions} parserOptions parser options
 * @param {object} options options
 * @param {boolean} options.futureDefaults is future defaults enabled
 * @param {boolean} options.deferImport is defer import enabled
 * @param {boolean} options.sourceImport is import source enabled
 * @param {boolean} options.isNode is node target platform
 * @param {boolean} options.outputModule is output.module enabled
 * @returns {void}
 */
const applyJavascriptParserOptionsDefaults = (
   parserOptions,
   { futureDefaults, deferImport, isNode }
   { futureDefaults, deferImport, sourceImport, isNode, outputModule }
) => {
   D(parserOptions, "unknownContextRequest", ".");
   D(parserOptions, "unknownContextRegExp", false);
@@ -716,7 +761,7 @@
   D(parserOptions, "wrappedContextRecursive", true);
   D(parserOptions, "wrappedContextCritical", false);
   D(parserOptions, "strictThisContextOnImports", false);
   D(parserOptions, "importMeta", true);
   D(parserOptions, "importMeta", outputModule ? "preserve-unknown" : true);
   D(parserOptions, "dynamicImportMode", "lazy");
   D(parserOptions, "dynamicImportPrefetch", false);
   D(parserOptions, "dynamicImportPreload", false);
@@ -724,10 +769,12 @@
   D(parserOptions, "createRequire", isNode);
   D(parserOptions, "dynamicUrl", true);
   D(parserOptions, "deferImport", deferImport);
   D(parserOptions, "sourceImport", sourceImport);
   if (futureDefaults) D(parserOptions, "exportsPresence", "error");
};
/**
 * Apply json generator options defaults.
 * @param {JsonGeneratorOptions} generatorOptions generator options
 * @returns {void}
 */
@@ -736,6 +783,7 @@
};
/**
 * Apply css generator options defaults.
 * @param {CssGeneratorOptions} generatorOptions generator options
 * @param {object} options options
 * @param {TargetProperties | false} options.targetProperties target properties
@@ -754,6 +802,7 @@
};
/**
 * Apply module defaults.
 * @param {ModuleOptions} module options
 * @param {object} options options
 * @param {boolean} options.cache is caching enabled
@@ -764,13 +813,19 @@
 * @param {string} options.uniqueName the unique name
 * @param {boolean} options.isNode is node target platform
 * @param {boolean} options.deferImport is defer import enabled
 * @param {boolean} options.sourceImport is import source enabled
 * @param {TargetProperties | false} options.targetProperties target properties
 * @param {Mode | undefined} options.mode mode
 * @param {HashSalt} options.hashSalt hash salt
 * @param {HashFunction} options.hashFunction hash function
 * @param {boolean} options.outputModule is output.module enabled
 * @returns {void}
 */
const applyModuleDefaults = (
   module,
   {
      hashSalt,
      hashFunction,
      cache,
      syncWebAssembly,
      asyncWebAssembly,
@@ -780,7 +835,9 @@
      uniqueName,
      targetProperties,
      mode,
      deferImport
      deferImport,
      sourceImport,
      outputModule
   }
) => {
   if (cache) {
@@ -788,6 +845,7 @@
         module,
         "unsafeCache",
         /**
          * Handles the callback logic for this hook.
          * @param {Module} module module
          * @returns {boolean} true, if we want to cache the module
          */
@@ -839,7 +897,9 @@
      {
         futureDefaults,
         deferImport,
         isNode
         sourceImport,
         isNode,
         outputModule
      }
   );
@@ -871,6 +931,51 @@
         true
      );
      for (const type of [
         CSS_MODULE_TYPE_AUTO,
         CSS_MODULE_TYPE_MODULE,
         CSS_MODULE_TYPE_GLOBAL
      ]) {
         F(module.parser, type, () => ({}));
         D(
            /** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
            (module.parser[type]),
            "animation",
            true
         );
         D(
            /** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
            (module.parser[type]),
            "container",
            true
         );
         D(
            /** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
            (module.parser[type]),
            "customIdents",
            true
         );
         D(
            /** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
            (module.parser[type]),
            "dashedIdents",
            true
         );
         D(
            /** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
            (module.parser[type]),
            "function",
            true
         );
         D(
            /** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
            (module.parser[type]),
            "grid",
            true
         );
      }
      F(module.generator, CSS_MODULE_TYPE, () => ({}));
      applyCssGeneratorOptionsDefaults(
@@ -880,49 +985,65 @@
      );
      const localIdentName =
         uniqueName.length > 0 ? "[uniqueName]-[id]-[local]" : "[id]-[local]";
         mode === "development"
            ? uniqueName.length > 0
               ? "[uniqueName]-[id]-[local]"
               : "[id]-[local]"
            : "[fullhash]";
      const localIdentHashSalt = hashSalt;
      const localIdentHashDigest = "base64url";
      const localIdentHashDigestLength = 6;
      const exportsConvention = "as-is";
      F(module.generator, CSS_MODULE_TYPE_AUTO, () => ({}));
      D(
         /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]>} */
         (module.generator[CSS_MODULE_TYPE_AUTO]),
         "localIdentName",
         localIdentName
      );
      D(
         /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]>} */
         (module.generator[CSS_MODULE_TYPE_AUTO]),
         "exportsConvention",
         "as-is"
      );
      for (const type of [
         CSS_MODULE_TYPE_AUTO,
         CSS_MODULE_TYPE_MODULE,
         CSS_MODULE_TYPE_GLOBAL
      ]) {
         F(module.generator, type, () => ({}));
      F(module.generator, CSS_MODULE_TYPE_MODULE, () => ({}));
      D(
         /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]>} */
         (module.generator[CSS_MODULE_TYPE_MODULE]),
         "localIdentName",
         localIdentName
      );
      D(
         /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]>} */
         (module.generator[CSS_MODULE_TYPE_MODULE]),
         "exportsConvention",
         "as-is"
      );
         D(
            /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
            (module.generator[type]),
            "localIdentName",
            localIdentName
         );
      F(module.generator, CSS_MODULE_TYPE_GLOBAL, () => ({}));
      D(
         /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
         (module.generator[CSS_MODULE_TYPE_GLOBAL]),
         "localIdentName",
         localIdentName
      );
      D(
         /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
         (module.generator[CSS_MODULE_TYPE_GLOBAL]),
         "exportsConvention",
         "as-is"
      );
         D(
            /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
            (module.generator[type]),
            "localIdentHashSalt",
            localIdentHashSalt
         );
         D(
            /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]>} */
            (module.generator[type]),
            "localIdentHashFunction",
            hashFunction
         );
         D(
            /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]>} */
            (module.generator[type]),
            "localIdentHashDigest",
            localIdentHashDigest
         );
         D(
            /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]>} */
            (module.generator[type]),
            "localIdentHashDigestLength",
            localIdentHashDigestLength
         );
         D(
            /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
            (module.generator[type]),
            "exportsConvention",
            exportsConvention
         );
      }
   }
   A(module, "defaultRules", () => {
@@ -1114,6 +1235,7 @@
};
/**
 * Apply output defaults.
 * @param {Output} output options
 * @param {object} options options
 * @param {string} options.context context
@@ -1140,6 +1262,7 @@
   }
) => {
   /**
    * Returns a readable library name.
    * @param {Library=} library the library option
    * @returns {string} a readable library name
    */
@@ -1191,11 +1314,13 @@
   const environment = /** @type {Environment} */ (output.environment);
   /**
    * Returns true, when v is truthy or undefined.
    * @param {boolean | undefined} v value
    * @returns {boolean} true, when v is truthy or undefined
    */
   const optimistic = (v) => v || v === undefined;
   /**
    * Conditionally optimistic.
    * @param {boolean | undefined} v value
    * @param {boolean | undefined} c condition
    * @returns {boolean | undefined} true, when v is truthy or undefined, or c is truthy
@@ -1217,6 +1342,12 @@
      environment,
      "const",
      () => tp && optimistic(/** @type {boolean | undefined} */ (tp.const))
   );
   F(
      environment,
      "methodShorthand",
      () =>
         tp && optimistic(/** @type {boolean | undefined} */ (tp.methodShorthand))
   );
   F(
      environment,
@@ -1331,7 +1462,7 @@
      }
      return "[id].css";
   });
   D(output, "assetModuleFilename", "[hash][ext][query]");
   D(output, "assetModuleFilename", "[hash][ext][query][fragment]");
   D(output, "webassemblyModuleFilename", "[hash].module.wasm");
   D(output, "compareBeforeEmit", true);
   D(output, "charset", !futureDefaults);
@@ -1360,9 +1491,7 @@
            throw new Error(
               "For the selected environment is no default ESM chunk format available:\n" +
                  "ESM exports can be chosen when 'import()' is available.\n" +
                  `JSONP Array push can be chosen when 'document' is available.\n${
                     helpMessage
                  }`
                  `JSONP Array push can be chosen when 'document' is available.\n${helpMessage}`
            );
         } else {
            if (tp.document) return "array-push";
@@ -1377,9 +1506,7 @@
                        : ""
                  }\n` +
                  "JSONP Array push ('array-push') can be chosen when 'document' or 'importScripts' is available.\n" +
                  `CommonJs exports ('commonjs') can be chosen when 'require' or node builtins are available.\n${
                     helpMessage
                  }`
                  `CommonJs exports ('commonjs') can be chosen when 'require' or node builtins are available.\n${helpMessage}`
            );
         }
      }
@@ -1411,7 +1538,7 @@
            output.module &&
            environment.dynamicImport
         ) {
            return "universal";
            return "import";
         }
      }
      return false;
@@ -1437,7 +1564,7 @@
            output.module &&
            environment.dynamicImportInWorker
         ) {
            return "universal";
            return "import";
         }
      }
      return false;
@@ -1505,18 +1632,19 @@
         "policyName",
         () =>
            /** @type {NonNullable<Output["uniqueName"]>} */
            (output.uniqueName).replace(/[^a-zA-Z0-9\-#=_/@.%]+/g, "_") || "webpack"
            (output.uniqueName).replace(/[^a-z0-9\-#=_/@.%]+/gi, "_") || "webpack"
      );
      D(trustedTypes, "onPolicyCreationFailure", "stop");
   }
   /**
    * Processes the provided fn.
    * @param {(entryDescription: EntryDescription) => void} fn iterator
    * @returns {void}
    */
   const forEachEntry = (fn) => {
      for (const name of Object.keys(entry)) {
         fn(/** @type {{[k: string] : EntryDescription}} */ (entry)[name]);
         fn(/** @type {{ [k: string]: EntryDescription }} */ (entry)[name]);
      }
   };
   A(output, "enabledLibraryTypes", () => {
@@ -1534,6 +1662,7 @@
   });
   A(output, "enabledChunkLoadingTypes", () => {
      /** @type {ChunkLoadingTypes} */
      const enabledChunkLoadingTypes = new Set();
      if (output.chunkLoading) {
         enabledChunkLoadingTypes.add(output.chunkLoading);
@@ -1550,6 +1679,7 @@
   });
   A(output, "enabledWasmLoadingTypes", () => {
      /** @type {WasmLoadingTypes} */
      const enabledWasmLoadingTypes = new Set();
      if (output.wasmLoading) {
         enabledWasmLoadingTypes.add(output.wasmLoading);
@@ -1567,6 +1697,7 @@
};
/**
 * Apply externals presets defaults.
 * @param {ExternalsPresets} externalsPresets options
 * @param {object} options options
 * @param {TargetProperties | false} options.targetProperties target properties
@@ -1579,6 +1710,7 @@
   { targetProperties, buildHttp, outputModule }
) => {
   /**
    * Checks whether this object is universal.
    * @param {keyof TargetProperties} key a key
    * @returns {boolean} true when target is universal, otherwise false
    */
@@ -1646,6 +1778,7 @@
};
/**
 * Apply loader defaults.
 * @param {Loader} loader options
 * @param {object} options options
 * @param {TargetProperties | false} options.targetProperties target properties
@@ -1670,6 +1803,7 @@
};
/**
 * Apply node defaults.
 * @param {WebpackNode} node options
 * @param {object} options options
 * @param {TargetProperties | false} options.targetProperties target properties
@@ -1715,6 +1849,7 @@
};
/**
 * Apply performance defaults.
 * @param {Performance} performance options
 * @param {object} options options
 * @param {boolean} options.production is production
@@ -1728,6 +1863,7 @@
};
/**
 * Apply optimization defaults.
 * @param {Optimization} optimization options
 * @param {object} options options
 * @param {boolean} options.production is production
@@ -1792,7 +1928,9 @@
   const { splitChunks } = optimization;
   if (splitChunks) {
      A(splitChunks, "defaultSizeTypes", () =>
         css ? ["javascript", "css", "unknown"] : ["javascript", "unknown"]
         css
            ? [JAVASCRIPT_TYPE, CSS_TYPE, UNKNOWN_TYPE]
            : [JAVASCRIPT_TYPE, UNKNOWN_TYPE]
      );
      D(splitChunks, "hidePathInfo", production);
      D(splitChunks, "chunks", "async");
@@ -1823,6 +1961,7 @@
};
/**
 * Gets resolve defaults.
 * @param {object} options options
 * @param {boolean} options.cache is cache enable
 * @param {string} options.context build context
@@ -1872,6 +2011,20 @@
      extensions: [...jsExtensions]
   });
   /** @type {() => ResolveOptions} */
   const workerDeps = () => {
      const options = esmDeps();
      const conditionNames = options.conditionNames
         ? ["worker", ...options.conditionNames]
         : options.conditionNames;
      return {
         ...options,
         conditionNames,
         preferRelative: true
      };
   };
   /** @type {ResolveOptions} */
   const resolveOptions = {
      cache,
@@ -1891,10 +2044,7 @@
         url: {
            preferRelative: true
         },
         worker: {
            ...esmDeps(),
            preferRelative: true
         },
         worker: workerDeps(),
         commonjs: cjsDeps(),
         amd: cjsDeps(),
         // for backward-compat: loadModule
@@ -1907,6 +2057,7 @@
   };
   if (css) {
      /** @type {string[]} */
      const styleConditions = [];
      styleConditions.push("webpack");
@@ -1941,6 +2092,7 @@
};
/**
 * Gets resolve loader defaults.
 * @param {object} options options
 * @param {boolean} options.cache is cache enable
 * @returns {ResolveOptions} resolve options
@@ -1960,6 +2112,7 @@
};
/**
 * Apply infrastructure logging defaults.
 * @param {InfrastructureLogging} infrastructureLogging options
 * @returns {void}
 */