summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/sharing/resolveMatchedConfigs.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2024-08-30 17:21:18 +0800
committerlittleblack111 <littleblack11111@gmail.com>2024-08-30 17:21:18 +0800
commitefbc2ffe6a1ee5ec38a4396305561d6515d0943e (patch)
tree2b4c94f18f2c792dfda813050755d5c0273fae22 /node_modules/webpack/lib/sharing/resolveMatchedConfigs.js
parent43acceb75957c880a5ba5a31aae221394a36d5f6 (diff)
node fixes, updates
Diffstat (limited to 'node_modules/webpack/lib/sharing/resolveMatchedConfigs.js')
-rw-r--r--node_modules/webpack/lib/sharing/resolveMatchedConfigs.js92
1 files changed, 92 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/sharing/resolveMatchedConfigs.js b/node_modules/webpack/lib/sharing/resolveMatchedConfigs.js
new file mode 100644
index 00000000..a54a76ab
--- /dev/null
+++ b/node_modules/webpack/lib/sharing/resolveMatchedConfigs.js
@@ -0,0 +1,92 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+const ModuleNotFoundError = require("../ModuleNotFoundError");
+const LazySet = require("../util/LazySet");
+
+/** @typedef {import("../Compilation")} Compilation */
+/** @typedef {import("../ResolverFactory").ResolveOptionsWithDependencyType} ResolveOptionsWithDependencyType */
+
+/**
+ * @template T
+ * @typedef {object} MatchedConfigs
+ * @property {Map<string, T>} resolved
+ * @property {Map<string, T>} unresolved
+ * @property {Map<string, T>} prefixed
+ */
+
+/** @type {ResolveOptionsWithDependencyType} */
+const RESOLVE_OPTIONS = { dependencyType: "esm" };
+
+/**
+ * @template T
+ * @param {Compilation} compilation the compilation
+ * @param {[string, T][]} configs to be processed configs
+ * @returns {Promise<MatchedConfigs<T>>} resolved matchers
+ */
+module.exports.resolveMatchedConfigs = (compilation, configs) => {
+ /** @type {Map<string, T>} */
+ const resolved = new Map();
+ /** @type {Map<string, T>} */
+ const unresolved = new Map();
+ /** @type {Map<string, T>} */
+ const prefixed = new Map();
+ const resolveContext = {
+ /** @type {LazySet<string>} */
+ fileDependencies: new LazySet(),
+ /** @type {LazySet<string>} */
+ contextDependencies: new LazySet(),
+ /** @type {LazySet<string>} */
+ missingDependencies: new LazySet()
+ };
+ const resolver = compilation.resolverFactory.get("normal", RESOLVE_OPTIONS);
+ const context = compilation.compiler.context;
+
+ return Promise.all(
+ // eslint-disable-next-line array-callback-return
+ configs.map(([request, config]) => {
+ if (/^\.\.?(\/|$)/.test(request)) {
+ // relative request
+ return new Promise(resolve => {
+ resolver.resolve(
+ {},
+ context,
+ request,
+ resolveContext,
+ (err, result) => {
+ if (err || result === false) {
+ err = err || new Error(`Can't resolve ${request}`);
+ compilation.errors.push(
+ new ModuleNotFoundError(null, err, {
+ name: `shared module ${request}`
+ })
+ );
+ return resolve(null);
+ }
+ resolved.set(/** @type {string} */ (result), config);
+ resolve(null);
+ }
+ );
+ });
+ } else if (/^(\/|[A-Za-z]:\\|\\\\)/.test(request)) {
+ // absolute path
+ resolved.set(request, config);
+ } else if (request.endsWith("/")) {
+ // module request prefix
+ prefixed.set(request, config);
+ } else {
+ // module request
+ unresolved.set(request, config);
+ }
+ })
+ ).then(() => {
+ compilation.contextDependencies.addAll(resolveContext.contextDependencies);
+ compilation.fileDependencies.addAll(resolveContext.fileDependencies);
+ compilation.missingDependencies.addAll(resolveContext.missingDependencies);
+ return { resolved, unresolved, prefixed };
+ });
+};