forked from webpack-contrib/extract-text-webpack-plugin
-
Notifications
You must be signed in to change notification settings - Fork 1
/
helpers.js
69 lines (60 loc) · 1.63 KB
/
helpers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import NormalModule from 'webpack/lib/NormalModule';
export function isInitialOrHasNoParents(chunk) {
return chunk.isInitial() || chunk.parents.length === 0;
}
export function isInvalidOrder(a, b) {
const bBeforeA = a.getPrevModules().indexOf(b) >= 0;
const aBeforeB = b.getPrevModules().indexOf(a) >= 0;
return aBeforeB && bBeforeA;
}
export function getOrder(a, b) {
const aOrder = a.getOrder();
const bOrder = b.getOrder();
if (aOrder < bOrder) return -1;
if (aOrder > bOrder) return 1;
const aIndex = a.getOriginalModule().index2;
const bIndex = b.getOriginalModule().index2;
if (aIndex < bIndex) return -1;
if (aIndex > bIndex) return 1;
const bBeforeA = a.getPrevModules().indexOf(b) >= 0;
const aBeforeB = b.getPrevModules().indexOf(a) >= 0;
if (aBeforeB && !bBeforeA) return -1;
if (!aBeforeB && bBeforeA) return 1;
const ai = a.identifier();
const bi = b.identifier();
if (ai < bi) return -1;
if (ai > bi) return 1;
return 0;
}
export function cloneModule(module) {
return new NormalModule(
module.request,
module.userRequest,
module.rawRequest,
module.loaders,
module.resource,
module.parser,
);
}
export function getLoaderObject(loader) {
if (isString(loader)) {
return { loader };
}
return loader;
}
export function mergeOptions(a, b) {
if (!b) return a;
Object.keys(b).forEach((key) => {
a[key] = b[key];
});
return a;
}
export function isString(a) {
return typeof a === 'string';
}
export function isFunction(a) {
return typeof a === 'function';
}
export function isType(type, obj) {
return Object.prototype.toString.call(obj) === `[object ${type}]`;
}