| /* |
| MIT License http://www.opensource.org/licenses/mit-license.php |
| Author Tobias Koppers @sokra |
| */ |
| "use strict"; |
| |
| const util = require("util"); |
| const compareLocations = require("./compareLocations"); |
| const DependencyReference = require("./dependencies/DependencyReference"); |
| |
| /** @typedef {import("./Module")} Module */ |
| /** @typedef {import("webpack-sources").Source} Source */ |
| /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */ |
| |
| /** |
| * @typedef {Object} DependencyTemplate |
| * @property {function(Dependency, Source, RuntimeTemplate, Map<Function, DependencyTemplate>): void} apply |
| */ |
| |
| /** @typedef {Object} SourcePosition |
| * @property {number} line |
| * @property {number=} column |
| */ |
| |
| /** @typedef {Object} RealDependencyLocation |
| * @property {SourcePosition} start |
| * @property {SourcePosition=} end |
| * @property {number=} index |
| */ |
| |
| /** @typedef {Object} SynteticDependencyLocation |
| * @property {string} name |
| * @property {number=} index |
| */ |
| |
| /** @typedef {SynteticDependencyLocation|RealDependencyLocation} DependencyLocation */ |
| |
| class Dependency { |
| constructor() { |
| /** @type {Module|null} */ |
| this.module = null; |
| // TODO remove in webpack 5 |
| /** @type {boolean} */ |
| this.weak = false; |
| /** @type {boolean} */ |
| this.optional = false; |
| /** @type {DependencyLocation} */ |
| this.loc = undefined; |
| } |
| |
| getResourceIdentifier() { |
| return null; |
| } |
| |
| // Returns the referenced module and export |
| getReference() { |
| if (!this.module) return null; |
| return new DependencyReference(this.module, true, this.weak); |
| } |
| |
| // Returns the exported names |
| getExports() { |
| return null; |
| } |
| |
| getWarnings() { |
| return null; |
| } |
| |
| getErrors() { |
| return null; |
| } |
| |
| updateHash(hash) { |
| hash.update((this.module && this.module.id) + ""); |
| } |
| |
| disconnect() { |
| this.module = null; |
| } |
| } |
| |
| // TODO remove in webpack 5 |
| Dependency.compare = util.deprecate( |
| (a, b) => compareLocations(a.loc, b.loc), |
| "Dependency.compare is deprecated and will be removed in the next major version" |
| ); |
| |
| module.exports = Dependency; |