You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/* 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 RawModule = require("../RawModule");
/** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */ /** @typedef {import("../Module")} Module */ /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
class ModuleDependency extends Dependency { /** * @param {string} request request path which needs resolving */ constructor(request) { super(); this.request = request; this.userRequest = request; this.range = undefined; // TODO move it to subclasses and rename
// assertions must be serialized by subclasses that use it
/** @type {ImportAttributes | 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) { 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;
|