summaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/dependencies/ModuleDependency.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/dependencies/ModuleDependency.js')
-rw-r--r--node_modules/webpack/lib/dependencies/ModuleDependency.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/node_modules/webpack/lib/dependencies/ModuleDependency.js b/node_modules/webpack/lib/dependencies/ModuleDependency.js
new file mode 100644
index 00000000..f6efcb96
--- /dev/null
+++ b/node_modules/webpack/lib/dependencies/ModuleDependency.js
@@ -0,0 +1,99 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+
+"use strict";
+
+const Dependency = require("../Dependency");
+const DependencyTemplate = require("../DependencyTemplate");
+const memoize = require("../util/memoize");
+
+/** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
+/** @typedef {import("../Module")} Module */
+/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
+/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
+
+const getRawModule = memoize(() => require("../RawModule"));
+
+class ModuleDependency extends Dependency {
+ /**
+ * @param {string} request request path which needs resolving
+ */
+ constructor(request) {
+ super();
+ this.request = request;
+ this.userRequest = request;
+ this.range = undefined;
+ // assertions must be serialized by subclasses that use it
+ /** @type {Record<string, any> | undefined} */
+ this.assertions = undefined;
+ this._context = undefined;
+ }
+
+ /**
+ * @returns {string | undefined} a request context
+ */
+ getContext() {
+ return this._context;
+ }
+
+ /**
+ * @returns {string | null} an identifier to merge equal requests
+ */
+ getResourceIdentifier() {
+ let str = `context${this._context || ""}|module${this.request}`;
+ if (this.assertions !== undefined) {
+ str += JSON.stringify(this.assertions);
+ }
+ return str;
+ }
+
+ /**
+ * @returns {boolean | TRANSITIVE} true, when changes to the referenced module could affect the referencing module; TRANSITIVE, when changes to the referenced module could affect referencing modules of the referencing module
+ */
+ couldAffectReferencingModule() {
+ return true;
+ }
+
+ /**
+ * @param {string} context context directory
+ * @returns {Module | null} a module
+ */
+ createIgnoredModule(context) {
+ const RawModule = getRawModule();
+ return new RawModule(
+ "/* (ignored) */",
+ `ignored|${context}|${this.request}`,
+ `${this.request} (ignored)`
+ );
+ }
+
+ /**
+ * @param {ObjectSerializerContext} context context
+ */
+ serialize(context) {
+ const { write } = context;
+ write(this.request);
+ write(this.userRequest);
+ write(this._context);
+ write(this.range);
+ super.serialize(context);
+ }
+
+ /**
+ * @param {ObjectDeserializerContext} context context
+ */
+ deserialize(context) {
+ const { read } = context;
+ this.request = read();
+ this.userRequest = read();
+ this._context = read();
+ this.range = read();
+ super.deserialize(context);
+ }
+}
+
+ModuleDependency.Template = DependencyTemplate;
+
+module.exports = ModuleDependency;