utils.js
2.04 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.deepUniq = deepUniq;
exports.getStyles = exports.getScripts = void 0;
function _react() {
const data = _interopRequireDefault(require("react"));
_react = function _react() {
return data;
};
return data;
}
function _utils() {
const data = require("@umijs/utils");
_utils = function _utils() {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const EXP_URL = /^(http:|https:)?\/\//;
function deepUniq(collection) {
return _utils().lodash.uniqWith(collection, _utils().lodash.isEqual);
}
/**
* 格式化 script => object
* @param option Array<string | IScript>
*/
const getScripts = option => {
if (Array.isArray(option) && option.length > 0) {
const scripts = option.filter(script => !_utils().lodash.isEmpty(script)).map(aScript => {
if (typeof aScript === 'string') {
return EXP_URL.test(aScript) ? {
src: aScript
} : {
content: aScript
};
} // [{ content: '', async: true, crossOrigin: true }]
return aScript;
});
return deepUniq(scripts);
}
return [];
};
/**
* 格式化 styles => [linkObject, styleObject]
* @param option Array<string | ILink>
*/
exports.getScripts = getScripts;
const getStyles = option => {
const linkArr = [];
const styleObj = [];
if (Array.isArray(option) && option.length > 0) {
option.forEach(style => {
if (typeof style === 'string') {
if (EXP_URL.test(style)) {
// is <link />
linkArr.push({
charset: 'utf-8',
rel: 'stylesheet',
type: 'text/css',
href: style
});
} else {
styleObj.push({
content: style
});
}
}
if (typeof style === 'object') {
// is style object
styleObj.push(style);
}
});
}
return [deepUniq(linkArr), deepUniq(styleObj)];
};
exports.getStyles = getStyles;