UNPKG

2.02 kBJavaScriptView Raw
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5"use strict";
6
7const util = require("util");
8const compareLocations = require("./compareLocations");
9const DependencyReference = require("./dependencies/DependencyReference");
10
11/** @typedef {import("./Module")} Module */
12/** @typedef {import("webpack-sources").Source} Source */
13/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
14
15/**
16 * @typedef {Object} DependencyTemplate
17 * @property {function(Dependency, Source, RuntimeTemplate, Map<Function, DependencyTemplate>): void} apply
18 */
19
20/** @typedef {Object} SourcePosition
21 * @property {number} line
22 * @property {number=} column
23 */
24
25/** @typedef {Object} RealDependencyLocation
26 * @property {SourcePosition} start
27 * @property {SourcePosition=} end
28 * @property {number=} index
29 */
30
31/** @typedef {Object} SynteticDependencyLocation
32 * @property {string} name
33 * @property {number=} index
34 */
35
36/** @typedef {SynteticDependencyLocation|RealDependencyLocation} DependencyLocation */
37
38class Dependency {
39 constructor() {
40 /** @type {Module|null} */
41 this.module = null;
42 // TODO remove in webpack 5
43 /** @type {boolean} */
44 this.weak = false;
45 /** @type {boolean} */
46 this.optional = false;
47 /** @type {DependencyLocation} */
48 this.loc = undefined;
49 }
50
51 getResourceIdentifier() {
52 return null;
53 }
54
55 // Returns the referenced module and export
56 getReference() {
57 if (!this.module) return null;
58 return new DependencyReference(this.module, true, this.weak);
59 }
60
61 // Returns the exported names
62 getExports() {
63 return null;
64 }
65
66 getWarnings() {
67 return null;
68 }
69
70 getErrors() {
71 return null;
72 }
73
74 updateHash(hash) {
75 hash.update((this.module && this.module.id) + "");
76 }
77
78 disconnect() {
79 this.module = null;
80 }
81}
82
83// TODO remove in webpack 5
84Dependency.compare = util.deprecate(
85 (a, b) => compareLocations(a.loc, b.loc),
86 "Dependency.compare is deprecated and will be removed in the next major version"
87);
88
89module.exports = Dependency;