summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/CodeGenerationResults.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-10-31 15:37:35 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-10-31 15:37:35 +0800
commitd5f14083061f2ce6a42313188443a42e30796320 (patch)
treecc6a9889e08b29595a76a33b9e7b4ef84866468b /node_modules/webpack/lib/CodeGenerationResults.js
parentb1a6ea021f29f182b62f9f81024a3d8ac8621b7f (diff)
added make browserlist(autoprefixer) work fixed
Diffstat (limited to 'node_modules/webpack/lib/CodeGenerationResults.js')
-rw-r--r--node_modules/webpack/lib/CodeGenerationResults.js155
1 files changed, 155 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/CodeGenerationResults.js b/node_modules/webpack/lib/CodeGenerationResults.js
new file mode 100644
index 00000000..decbd667
--- /dev/null
+++ b/node_modules/webpack/lib/CodeGenerationResults.js
@@ -0,0 +1,155 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+const { getOrInsert } = require("./util/MapHelpers");
+const { first } = require("./util/SetHelpers");
+const createHash = require("./util/createHash");
+const { runtimeToString, RuntimeSpecMap } = require("./util/runtime");
+
+/** @typedef {import("webpack-sources").Source} Source */
+/** @typedef {import("./Module")} Module */
+/** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
+/** @typedef {typeof import("./util/Hash")} Hash */
+/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
+
+class CodeGenerationResults {
+ /**
+ * @param {string | Hash} hashFunction the hash function to use
+ */
+ constructor(hashFunction = "md4") {
+ /** @type {Map<Module, RuntimeSpecMap<CodeGenerationResult>>} */
+ this.map = new Map();
+ this._hashFunction = hashFunction;
+ }
+
+ /**
+ * @param {Module} module the module
+ * @param {RuntimeSpec} runtime runtime(s)
+ * @returns {CodeGenerationResult} the CodeGenerationResult
+ */
+ get(module, runtime) {
+ const entry = this.map.get(module);
+ if (entry === undefined) {
+ throw new Error(
+ `No code generation entry for ${module.identifier()} (existing entries: ${Array.from(
+ this.map.keys(),
+ m => m.identifier()
+ ).join(", ")})`
+ );
+ }
+ if (runtime === undefined) {
+ if (entry.size > 1) {
+ const results = new Set(entry.values());
+ if (results.size !== 1) {
+ throw new Error(
+ `No unique code generation entry for unspecified runtime for ${module.identifier()} (existing runtimes: ${Array.from(
+ entry.keys(),
+ r => runtimeToString(r)
+ ).join(", ")}).
+Caller might not support runtime-dependent code generation (opt-out via optimization.usedExports: "global").`
+ );
+ }
+ return first(results);
+ }
+ return entry.values().next().value;
+ }
+ const result = entry.get(runtime);
+ if (result === undefined) {
+ throw new Error(
+ `No code generation entry for runtime ${runtimeToString(
+ runtime
+ )} for ${module.identifier()} (existing runtimes: ${Array.from(
+ entry.keys(),
+ r => runtimeToString(r)
+ ).join(", ")})`
+ );
+ }
+ return result;
+ }
+
+ /**
+ * @param {Module} module the module
+ * @param {RuntimeSpec} runtime runtime(s)
+ * @returns {boolean} true, when we have data for this
+ */
+ has(module, runtime) {
+ const entry = this.map.get(module);
+ if (entry === undefined) {
+ return false;
+ }
+ if (runtime !== undefined) {
+ return entry.has(runtime);
+ } else if (entry.size > 1) {
+ const results = new Set(entry.values());
+ return results.size === 1;
+ } else {
+ return entry.size === 1;
+ }
+ }
+
+ /**
+ * @param {Module} module the module
+ * @param {RuntimeSpec} runtime runtime(s)
+ * @param {string} sourceType the source type
+ * @returns {Source} a source
+ */
+ getSource(module, runtime, sourceType) {
+ return this.get(module, runtime).sources.get(sourceType);
+ }
+
+ /**
+ * @param {Module} module the module
+ * @param {RuntimeSpec} runtime runtime(s)
+ * @returns {ReadonlySet<string>} runtime requirements
+ */
+ getRuntimeRequirements(module, runtime) {
+ return this.get(module, runtime).runtimeRequirements;
+ }
+
+ /**
+ * @param {Module} module the module
+ * @param {RuntimeSpec} runtime runtime(s)
+ * @param {string} key data key
+ * @returns {any} data generated by code generation
+ */
+ getData(module, runtime, key) {
+ const data = this.get(module, runtime).data;
+ return data === undefined ? undefined : data.get(key);
+ }
+
+ /**
+ * @param {Module} module the module
+ * @param {RuntimeSpec} runtime runtime(s)
+ * @returns {any} hash of the code generation
+ */
+ getHash(module, runtime) {
+ const info = this.get(module, runtime);
+ if (info.hash !== undefined) return info.hash;
+ const hash = createHash(this._hashFunction);
+ for (const [type, source] of info.sources) {
+ hash.update(type);
+ source.updateHash(hash);
+ }
+ if (info.runtimeRequirements) {
+ for (const rr of info.runtimeRequirements) hash.update(rr);
+ }
+ return (info.hash = /** @type {string} */ (hash.digest("hex")));
+ }
+
+ /**
+ * @param {Module} module the module
+ * @param {RuntimeSpec} runtime runtime(s)
+ * @param {CodeGenerationResult} result result from module
+ * @returns {void}
+ */
+ add(module, runtime, result) {
+ const map = getOrInsert(this.map, module, () => new RuntimeSpecMap());
+ map.set(runtime, result);
+ }
+}
+
+module.exports = CodeGenerationResults;