UNPKG

880 BJavaScriptView Raw
1class FileDep {
2 constructor() {
3 this._depMap = {};
4 this._depedMap = {};
5 }
6
7 update(source, deps = []) {
8 this.cleanupDeps(source, deps);
9 this._depMap[source] = deps;
10 deps.forEach(dep => {
11 if (this._depedMap[dep] == null) {
12 this._depedMap[dep] = [];
13 }
14 if (!this._depedMap[dep].includes(source)) {
15 this._depedMap[dep].push(source);
16 }
17 });
18 }
19
20 cleanupDeps(source, newDeps = []) {
21 const oldDeps = this._depMap[source] || [];
22 oldDeps.forEach(oldDep => {
23 if (!newDeps.includes(oldDep)) {
24 const depeds = this._depedMap[oldDep] || [];
25 this._depedMap[oldDep] = depeds.filter(deped => deped !== source);
26 }
27 });
28 }
29
30 getDeps(source) {
31 return this._depMap[source] || [];
32 }
33
34 getSources(dep) {
35 return this._depedMap[dep] || [];
36 }
37}
38
39exports = module.exports = FileDep;