@rsdoctor/utils 1.1.10 → 1.2.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/build/envinfo.js +107 -95
- package/dist/cjs/build/file/cache.js +65 -56
- package/dist/cjs/build/file/index.js +78 -41
- package/dist/cjs/build/file/sharding.js +90 -78
- package/dist/cjs/build/index.js +49 -47
- package/dist/cjs/build/json.js +91 -98
- package/dist/cjs/build/process.js +47 -42
- package/dist/cjs/build/server.js +110 -87
- package/dist/cjs/common/alerts.js +46 -44
- package/dist/cjs/common/algorithm.js +63 -54
- package/dist/cjs/common/bundle.js +52 -46
- package/dist/cjs/common/crypto.js +47 -46
- package/dist/cjs/common/data/index.js +381 -455
- package/dist/cjs/common/file.js +44 -0
- package/dist/cjs/common/global-config.js +72 -64
- package/dist/cjs/common/graph/assets.js +274 -308
- package/dist/cjs/common/graph/chunk.js +66 -63
- package/dist/cjs/common/graph/dependency.js +42 -32
- package/dist/cjs/common/graph/entrypoints.js +33 -25
- package/dist/cjs/common/graph/index.js +93 -27
- package/dist/cjs/common/graph/modules.js +113 -98
- package/dist/cjs/common/index.js +101 -83
- package/dist/cjs/common/loader.js +277 -273
- package/dist/cjs/common/lodash.js +73 -62
- package/dist/cjs/common/manifest.js +57 -59
- package/dist/cjs/common/package.js +79 -80
- package/dist/cjs/common/plugin.js +78 -73
- package/dist/cjs/common/resolver.js +79 -69
- package/dist/cjs/common/rspack.js +43 -34
- package/dist/cjs/common/summary.js +39 -31
- package/dist/cjs/common/time.js +73 -78
- package/dist/cjs/common/url.js +44 -36
- package/dist/cjs/error/error.js +183 -220
- package/dist/cjs/error/index.js +70 -28
- package/dist/cjs/error/transform.js +150 -143
- package/dist/cjs/error/utils.js +54 -58
- package/dist/cjs/index.js +37 -38
- package/dist/cjs/logger.js +99 -73
- package/dist/cjs/rule-utils/document/document.js +83 -82
- package/dist/cjs/rule-utils/document/index.js +75 -23
- package/dist/cjs/rule-utils/document/server.js +42 -35
- package/dist/cjs/rule-utils/document/types.js +17 -15
- package/dist/cjs/rule-utils/index.js +66 -21
- package/dist/cjs/rule-utils/parser/asserts.js +129 -147
- package/dist/cjs/rule-utils/parser/index.js +84 -25
- package/dist/cjs/rule-utils/parser/parser.js +50 -85
- package/dist/cjs/rule-utils/parser/types.js +38 -30
- package/dist/cjs/rule-utils/parser/utils.js +141 -168
- package/dist/esm/build/envinfo.mjs +57 -0
- package/dist/esm/build/file/cache.mjs +23 -0
- package/dist/esm/build/file/index.mjs +4 -0
- package/dist/esm/build/file/sharding.mjs +50 -0
- package/dist/esm/build/index.mjs +6 -0
- package/dist/esm/build/json.mjs +66 -0
- package/dist/esm/build/process.mjs +17 -0
- package/dist/esm/build/server.mjs +96 -0
- package/dist/esm/common/alerts.mjs +17 -0
- package/dist/esm/common/algorithm.mjs +32 -0
- package/dist/esm/common/bundle.mjs +22 -0
- package/dist/esm/common/crypto.mjs +17 -0
- package/dist/esm/common/data/index.mjs +354 -0
- package/dist/esm/common/file.mjs +7 -0
- package/dist/esm/common/global-config.mjs +32 -0
- package/dist/esm/common/graph/assets.mjs +238 -0
- package/dist/esm/common/graph/chunk.mjs +32 -0
- package/dist/esm/common/graph/dependency.mjs +10 -0
- package/dist/esm/common/graph/entrypoints.mjs +4 -0
- package/dist/esm/common/graph/index.mjs +5 -0
- package/dist/esm/common/graph/modules.mjs +78 -0
- package/dist/esm/common/index.mjs +19 -0
- package/dist/esm/common/loader.mjs +247 -0
- package/dist/esm/common/lodash.mjs +32 -0
- package/dist/esm/common/manifest.mjs +30 -0
- package/dist/esm/common/package.mjs +56 -0
- package/dist/esm/common/plugin.mjs +48 -0
- package/dist/esm/common/resolver.mjs +46 -0
- package/dist/esm/common/rspack.mjs +9 -0
- package/dist/esm/common/summary.mjs +8 -0
- package/dist/esm/common/time.mjs +43 -0
- package/dist/esm/common/url.mjs +14 -0
- package/dist/esm/error/error.mjs +154 -0
- package/dist/esm/error/index.mjs +3 -0
- package/dist/esm/error/transform.mjs +138 -0
- package/dist/esm/error/utils.mjs +22 -0
- package/dist/esm/index.mjs +3 -0
- package/dist/esm/logger.mjs +50 -0
- package/dist/esm/rule-utils/document/document.mjs +58 -0
- package/dist/esm/rule-utils/document/index.mjs +3 -0
- package/dist/esm/rule-utils/document/server.mjs +12 -0
- package/dist/esm/rule-utils/index.mjs +2 -0
- package/dist/esm/rule-utils/parser/asserts.mjs +104 -0
- package/dist/esm/rule-utils/parser/index.mjs +4 -0
- package/dist/esm/rule-utils/parser/parser.mjs +23 -0
- package/dist/esm/rule-utils/parser/types.mjs +7 -0
- package/dist/esm/rule-utils/parser/utils.mjs +109 -0
- package/dist/type/common/file.d.ts +3 -0
- package/dist/type/common/file.d.ts.map +1 -0
- package/dist/type/common/graph/modules.d.ts +1 -1
- package/dist/type/common/graph/modules.d.ts.map +1 -1
- package/dist/type/common/index.d.ts +1 -0
- package/dist/type/common/index.d.ts.map +1 -1
- package/dist/type/logger.d.ts +3 -1
- package/dist/type/logger.d.ts.map +1 -1
- package/package.json +13 -12
- package/dist/esm/build/envinfo.js +0 -75
- package/dist/esm/build/file/cache.js +0 -30
- package/dist/esm/build/file/index.js +0 -7
- package/dist/esm/build/file/sharding.js +0 -50
- package/dist/esm/build/index.js +0 -12
- package/dist/esm/build/json.js +0 -85
- package/dist/esm/build/process.js +0 -24
- package/dist/esm/build/server.js +0 -96
- package/dist/esm/common/alerts.js +0 -25
- package/dist/esm/common/algorithm.js +0 -39
- package/dist/esm/common/bundle.js +0 -30
- package/dist/esm/common/crypto.js +0 -28
- package/dist/esm/common/data/index.js +0 -428
- package/dist/esm/common/global-config.js +0 -38
- package/dist/esm/common/graph/assets.js +0 -310
- package/dist/esm/common/graph/chunk.js +0 -49
- package/dist/esm/common/graph/dependency.js +0 -14
- package/dist/esm/common/graph/entrypoints.js +0 -6
- package/dist/esm/common/graph/index.js +0 -5
- package/dist/esm/common/graph/modules.js +0 -90
- package/dist/esm/common/index.js +0 -36
- package/dist/esm/common/loader.js +0 -279
- package/dist/esm/common/lodash.js +0 -49
- package/dist/esm/common/manifest.js +0 -46
- package/dist/esm/common/package.js +0 -71
- package/dist/esm/common/plugin.js +0 -59
- package/dist/esm/common/resolver.js +0 -54
- package/dist/esm/common/rspack.js +0 -12
- package/dist/esm/common/summary.js +0 -10
- package/dist/esm/common/time.js +0 -64
- package/dist/esm/common/url.js +0 -20
- package/dist/esm/error/error.js +0 -202
- package/dist/esm/error/index.js +0 -5
- package/dist/esm/error/transform.js +0 -141
- package/dist/esm/error/utils.js +0 -40
- package/dist/esm/index.js +0 -6
- package/dist/esm/logger.js +0 -44
- package/dist/esm/rule-utils/document/document.js +0 -67
- package/dist/esm/rule-utils/document/index.js +0 -3
- package/dist/esm/rule-utils/document/server.js +0 -17
- package/dist/esm/rule-utils/index.js +0 -2
- package/dist/esm/rule-utils/parser/asserts.js +0 -132
- package/dist/esm/rule-utils/parser/index.js +0 -4
- package/dist/esm/rule-utils/parser/parser.js +0 -58
- package/dist/esm/rule-utils/parser/types.js +0 -9
- package/dist/esm/rule-utils/parser/utils.js +0 -164
- /package/dist/esm/rule-utils/document/{types.js → types.mjs} +0 -0
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
import { mergeIntervals } from "./algorithm";
|
|
2
|
-
function findLoaderTotalTiming(loaders) {
|
|
3
|
-
let start = Infinity;
|
|
4
|
-
let end = -Infinity;
|
|
5
|
-
for (let i = 0; i < loaders.length; i++) {
|
|
6
|
-
const loader = loaders[i];
|
|
7
|
-
if (loader.startAt <= start) {
|
|
8
|
-
start = loader.startAt;
|
|
9
|
-
}
|
|
10
|
-
if (loader.endAt >= end) {
|
|
11
|
-
end = loader.endAt;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
start,
|
|
16
|
-
end
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
function getLoadersCosts(filter, loaders) {
|
|
20
|
-
const match = {};
|
|
21
|
-
const others = {};
|
|
22
|
-
loaders.forEach((e) => {
|
|
23
|
-
if (filter(e)) {
|
|
24
|
-
if (!match[e.pid])
|
|
25
|
-
match[e.pid] = [];
|
|
26
|
-
match[e.pid].push([e.startAt, e.endAt]);
|
|
27
|
-
} else {
|
|
28
|
-
if (!others[e.pid])
|
|
29
|
-
others[e.pid] = [];
|
|
30
|
-
others[e.pid].push([e.startAt, e.endAt]);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
let costs = 0;
|
|
34
|
-
const pids = Object.keys(match);
|
|
35
|
-
for (let i = 0; i < pids.length; i++) {
|
|
36
|
-
const pid = pids[i];
|
|
37
|
-
const _match = mergeIntervals(match[pid]);
|
|
38
|
-
const _others = mergeIntervals(others[pid] || []).filter(
|
|
39
|
-
([s, e]) => _match.some((el) => s >= el[0] && e <= el[1])
|
|
40
|
-
);
|
|
41
|
-
const matchSum = _match.length ? _match.reduce((t, c) => t += c[1] - c[0], 0) : 0;
|
|
42
|
-
const othersSum = _others.length ? _others.reduce((t, c) => t += c[1] - c[0], 0) : 0;
|
|
43
|
-
costs += matchSum - othersSum;
|
|
44
|
-
}
|
|
45
|
-
return costs;
|
|
46
|
-
}
|
|
47
|
-
function getLoaderCosts(loader, loaders) {
|
|
48
|
-
const blocked = loaders.filter((e) => {
|
|
49
|
-
if (e.loader.includes("builtin")) {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
if (e !== loader && e.pid === loader.pid) {
|
|
53
|
-
if (e.startAt >= loader.startAt) {
|
|
54
|
-
if (e.endAt <= loader.endAt)
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return false;
|
|
59
|
-
});
|
|
60
|
-
let costs = loader.endAt - loader.startAt;
|
|
61
|
-
if (blocked.length) {
|
|
62
|
-
const intervals = blocked.map((e) => [
|
|
63
|
-
Math.max(e.startAt, loader.startAt),
|
|
64
|
-
Math.min(e.endAt, loader.endAt)
|
|
65
|
-
]);
|
|
66
|
-
mergeIntervals(intervals).forEach((e) => {
|
|
67
|
-
const sub = e[1] - e[0];
|
|
68
|
-
costs -= sub;
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
return costs;
|
|
72
|
-
}
|
|
73
|
-
function getLoaderNames(loaders) {
|
|
74
|
-
const names = /* @__PURE__ */ new Set();
|
|
75
|
-
loaders.forEach(
|
|
76
|
-
(e) => e.loaders.forEach((l) => names.add(getLoadrName(l.loader)))
|
|
77
|
-
);
|
|
78
|
-
return [...names];
|
|
79
|
-
}
|
|
80
|
-
function getLoadersTransformData(loaders) {
|
|
81
|
-
const res = [];
|
|
82
|
-
for (let i = 0; i < loaders.length; i++) {
|
|
83
|
-
const item = loaders[i];
|
|
84
|
-
for (let j = 0; j < item.loaders.length; j++) {
|
|
85
|
-
const loader = item.loaders[j];
|
|
86
|
-
res.push(loader);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return res;
|
|
90
|
-
}
|
|
91
|
-
function getLoaderChartData(loaders) {
|
|
92
|
-
const res = [];
|
|
93
|
-
const list = getLoadersTransformData(loaders);
|
|
94
|
-
loaders.forEach((item) => {
|
|
95
|
-
item.loaders.forEach((el) => {
|
|
96
|
-
res.push({
|
|
97
|
-
layer: item.resource.layer,
|
|
98
|
-
loader: getLoadrName(el.loader),
|
|
99
|
-
isPitch: el.isPitch,
|
|
100
|
-
startAt: el.startAt,
|
|
101
|
-
endAt: el.endAt,
|
|
102
|
-
pid: el.pid,
|
|
103
|
-
sync: el.sync,
|
|
104
|
-
resource: item.resource.path,
|
|
105
|
-
costs: getLoaderCosts(el, list)
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
return res;
|
|
110
|
-
}
|
|
111
|
-
function getLoaderFileTree(loaders) {
|
|
112
|
-
const list = getLoadersTransformData(loaders);
|
|
113
|
-
return loaders.map((data) => {
|
|
114
|
-
const { loaders: arr, resource } = data;
|
|
115
|
-
return {
|
|
116
|
-
path: resource.path,
|
|
117
|
-
layer: resource.layer,
|
|
118
|
-
loaders: arr.map((l) => {
|
|
119
|
-
return {
|
|
120
|
-
key: l.path,
|
|
121
|
-
loader: getLoadrName(l.loader),
|
|
122
|
-
path: l.path,
|
|
123
|
-
errors: l.errors,
|
|
124
|
-
costs: getLoaderCosts(l, list)
|
|
125
|
-
};
|
|
126
|
-
})
|
|
127
|
-
};
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
function getLoaderFileDetails(path, loaders) {
|
|
131
|
-
const data = loaders.find((e) => e.resource.path === path);
|
|
132
|
-
if (!data) {
|
|
133
|
-
throw new Error(`"${path}" not match any loader data`);
|
|
134
|
-
}
|
|
135
|
-
const list = getLoadersTransformData(loaders);
|
|
136
|
-
return {
|
|
137
|
-
...data,
|
|
138
|
-
loaders: data.loaders.map((el) => {
|
|
139
|
-
return {
|
|
140
|
-
...el,
|
|
141
|
-
loader: getLoadrName(el.loader),
|
|
142
|
-
costs: getLoaderCosts(el, list)
|
|
143
|
-
};
|
|
144
|
-
})
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
function getLoaderFolderStatistics(folder, loaders) {
|
|
148
|
-
const datas = loaders.filter((data) => {
|
|
149
|
-
const { path } = data.resource;
|
|
150
|
-
return path.startsWith(folder);
|
|
151
|
-
});
|
|
152
|
-
const filteredLoaders = [];
|
|
153
|
-
const uniqueLoaders = /* @__PURE__ */ new Map();
|
|
154
|
-
datas.forEach((data) => {
|
|
155
|
-
data.loaders.forEach((fl) => {
|
|
156
|
-
const uniqueLoader = uniqueLoaders.get(fl.loader);
|
|
157
|
-
if (uniqueLoader) {
|
|
158
|
-
uniqueLoaders.set(fl.loader, {
|
|
159
|
-
files: uniqueLoader.files + 1,
|
|
160
|
-
path: fl.path
|
|
161
|
-
});
|
|
162
|
-
} else {
|
|
163
|
-
uniqueLoaders.set(fl.loader, { files: 1, path: fl.path });
|
|
164
|
-
}
|
|
165
|
-
return filteredLoaders.push({
|
|
166
|
-
loader: fl.loader,
|
|
167
|
-
startAt: fl.startAt,
|
|
168
|
-
endAt: fl.endAt,
|
|
169
|
-
pid: fl.pid
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
const loaderCosts = Array.from(uniqueLoaders).map((uniqueLoader) => {
|
|
174
|
-
const filter = (l) => l.loader === uniqueLoader[0];
|
|
175
|
-
const costs = getLoadersCosts(filter, filteredLoaders);
|
|
176
|
-
return {
|
|
177
|
-
loader: uniqueLoader[0],
|
|
178
|
-
files: uniqueLoader[1].files,
|
|
179
|
-
path: uniqueLoader[1].path,
|
|
180
|
-
costs
|
|
181
|
-
};
|
|
182
|
-
});
|
|
183
|
-
return loaderCosts;
|
|
184
|
-
}
|
|
185
|
-
function collectResourceDirectories(loaders, root) {
|
|
186
|
-
const directories = /* @__PURE__ */ new Set();
|
|
187
|
-
loaders.forEach((item) => {
|
|
188
|
-
if (item.resource.path.startsWith(root)) {
|
|
189
|
-
const pathParts = item.resource.path.split(root).slice(1).join("/").split("/");
|
|
190
|
-
if (pathParts.length >= 2) {
|
|
191
|
-
const twoLevelDir = pathParts.slice(0, 2).join("/");
|
|
192
|
-
directories.add(`${root}/${twoLevelDir}`);
|
|
193
|
-
}
|
|
194
|
-
} else {
|
|
195
|
-
const pathParts = item.resource.path.split("/");
|
|
196
|
-
const twoLevelDir = pathParts.slice(0, pathParts.length - 1).join("/");
|
|
197
|
-
directories.add(twoLevelDir);
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
return Array.from(directories);
|
|
201
|
-
}
|
|
202
|
-
function getDirectoriesLoaders(loaders, root) {
|
|
203
|
-
const rootPath = root || process.cwd();
|
|
204
|
-
const directories = collectResourceDirectories(loaders, rootPath);
|
|
205
|
-
return directories.map((directory) => {
|
|
206
|
-
const stats = getLoaderFolderStatistics(directory, loaders);
|
|
207
|
-
return {
|
|
208
|
-
directory,
|
|
209
|
-
stats
|
|
210
|
-
};
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
function getLoaderFileFirstInput(file, loaders) {
|
|
214
|
-
for (let i = 0; i < loaders.length; i++) {
|
|
215
|
-
const item = loaders[i];
|
|
216
|
-
if (item.resource.path === file) {
|
|
217
|
-
const nonPitchLoaders = item.loaders.filter((e) => !e.isPitch);
|
|
218
|
-
if (!nonPitchLoaders.length)
|
|
219
|
-
return "";
|
|
220
|
-
return nonPitchLoaders[0].input || "";
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
return "";
|
|
224
|
-
}
|
|
225
|
-
function getLoaderFileInputAndOutput(file, loader, loaderIndex, loaders) {
|
|
226
|
-
for (let i = 0; i < loaders.length; i++) {
|
|
227
|
-
const item = loaders[i];
|
|
228
|
-
if (item.resource.path === file) {
|
|
229
|
-
for (let j = 0; j < item.loaders.length; j++) {
|
|
230
|
-
const l = item.loaders[j];
|
|
231
|
-
if (l.loader === loader && l.loaderIndex === loaderIndex) {
|
|
232
|
-
return {
|
|
233
|
-
input: l.input || "",
|
|
234
|
-
output: l.result || ""
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
return {
|
|
238
|
-
input: "",
|
|
239
|
-
output: ""
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
return {
|
|
245
|
-
input: "",
|
|
246
|
-
output: ""
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
const LoaderInternalPropertyName = "__l__";
|
|
250
|
-
const isVue = (compiler) => {
|
|
251
|
-
const rules = "module" in compiler.options && compiler.options.module.rules || [];
|
|
252
|
-
const hasVueRule = rules.some((rule) => {
|
|
253
|
-
if (rule && typeof rule === "object" && rule.test instanceof RegExp && rule.test?.test(".vue")) {
|
|
254
|
-
return true;
|
|
255
|
-
}
|
|
256
|
-
return false;
|
|
257
|
-
});
|
|
258
|
-
return hasVueRule;
|
|
259
|
-
};
|
|
260
|
-
const getLoadrName = (loader) => {
|
|
261
|
-
const regResults = loader.includes("node_modules") ? loader.split("node_modules") : null;
|
|
262
|
-
return regResults ? regResults[regResults.length - 1] : loader;
|
|
263
|
-
};
|
|
264
|
-
export {
|
|
265
|
-
LoaderInternalPropertyName,
|
|
266
|
-
findLoaderTotalTiming,
|
|
267
|
-
getDirectoriesLoaders,
|
|
268
|
-
getLoaderChartData,
|
|
269
|
-
getLoaderCosts,
|
|
270
|
-
getLoaderFileDetails,
|
|
271
|
-
getLoaderFileFirstInput,
|
|
272
|
-
getLoaderFileInputAndOutput,
|
|
273
|
-
getLoaderFileTree,
|
|
274
|
-
getLoaderFolderStatistics,
|
|
275
|
-
getLoaderNames,
|
|
276
|
-
getLoadersCosts,
|
|
277
|
-
getLoadersTransformData,
|
|
278
|
-
isVue
|
|
279
|
-
};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
function isUndefined(value) {
|
|
2
|
-
return typeof value === "undefined";
|
|
3
|
-
}
|
|
4
|
-
function isNumber(value) {
|
|
5
|
-
return typeof value === "number" && !Number.isNaN(value);
|
|
6
|
-
}
|
|
7
|
-
function isObject(value) {
|
|
8
|
-
return typeof value === "object" && value !== null;
|
|
9
|
-
}
|
|
10
|
-
function isEmpty(value) {
|
|
11
|
-
return value == null || // Check for null or undefined
|
|
12
|
-
Array.isArray(value) && value.length === 0 || // Check for empty array
|
|
13
|
-
typeof value === "object" && Object.keys(value).length === 0;
|
|
14
|
-
}
|
|
15
|
-
function last(array) {
|
|
16
|
-
return array[array.length - 1];
|
|
17
|
-
}
|
|
18
|
-
function compact(array) {
|
|
19
|
-
return array.filter((item) => item != null || !item);
|
|
20
|
-
}
|
|
21
|
-
function isNil(value) {
|
|
22
|
-
return value === null || value === void 0;
|
|
23
|
-
}
|
|
24
|
-
const isPlainObject = (obj) => {
|
|
25
|
-
return obj !== null && typeof obj === "object" && Object.getPrototypeOf(obj) === Object.prototype;
|
|
26
|
-
};
|
|
27
|
-
const isString = (v) => typeof v === "string" || !!v && typeof v === "object" && !Array.isArray(v) && {}.toString.call(v) === "[object String]";
|
|
28
|
-
function pick(obj, keys) {
|
|
29
|
-
const result = {};
|
|
30
|
-
for (let i = 0; i < keys.length; i++) {
|
|
31
|
-
const key = keys[i];
|
|
32
|
-
if (Object.hasOwn(obj, key)) {
|
|
33
|
-
result[key] = obj[key];
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return result;
|
|
37
|
-
}
|
|
38
|
-
export {
|
|
39
|
-
compact,
|
|
40
|
-
isEmpty,
|
|
41
|
-
isNil,
|
|
42
|
-
isNumber,
|
|
43
|
-
isObject,
|
|
44
|
-
isPlainObject,
|
|
45
|
-
isString,
|
|
46
|
-
isUndefined,
|
|
47
|
-
last,
|
|
48
|
-
pick
|
|
49
|
-
};
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { decompressText } from "./algorithm";
|
|
2
|
-
import { isRemoteUrl } from "./url";
|
|
3
|
-
function isShardingData(data) {
|
|
4
|
-
if (Array.isArray(data) && data.length > 0) {
|
|
5
|
-
if (data.every((e) => isRemoteUrl(e))) {
|
|
6
|
-
return true;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
async function fetchShardingData(shardingFiles, fetchImplement) {
|
|
12
|
-
const res = await Promise.all(
|
|
13
|
-
shardingFiles.map((url) => fetchImplement(url))
|
|
14
|
-
);
|
|
15
|
-
const strings = res.length === 0 ? [] : res.reduce((t, e) => t + e);
|
|
16
|
-
return typeof strings === "object" ? strings : JSON.parse(decompressText(strings));
|
|
17
|
-
}
|
|
18
|
-
async function fetchShardingFiles(data, fetchImplement, filterKeys) {
|
|
19
|
-
const datas = await Promise.all(
|
|
20
|
-
Object.keys(data).map(async (_key) => {
|
|
21
|
-
const key = _key;
|
|
22
|
-
const val = data[key];
|
|
23
|
-
if (filterKeys?.length && filterKeys.indexOf(key) < 0) {
|
|
24
|
-
return {
|
|
25
|
-
[key]: []
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
if (isShardingData(val)) {
|
|
29
|
-
return {
|
|
30
|
-
[key]: await fetchShardingData(val, fetchImplement)
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
[key]: val
|
|
35
|
-
};
|
|
36
|
-
})
|
|
37
|
-
);
|
|
38
|
-
return datas.reduce(
|
|
39
|
-
(t, c) => Object.assign(t, c)
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
export {
|
|
43
|
-
fetchShardingData,
|
|
44
|
-
fetchShardingFiles,
|
|
45
|
-
isShardingData
|
|
46
|
-
};
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { compact, isEmpty, last } from "./lodash";
|
|
2
|
-
const PACKAGE_PREFIX = /(?:node_modules|~)(?:\/\.pnpm)?/;
|
|
3
|
-
const PACKAGE_SLUG = /[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*/;
|
|
4
|
-
const VERSION = /@[\w|\-|_|.]+/;
|
|
5
|
-
const VERSION_NUMBER = "@([\\d.]+)";
|
|
6
|
-
const MODULE_PATH_PACKAGES = new RegExp(
|
|
7
|
-
[
|
|
8
|
-
// match dependency directory (eg: `node_modules/`, `node_modules/.pnpm/`)
|
|
9
|
-
`(?:${PACKAGE_PREFIX.source}/)`,
|
|
10
|
-
// match package name
|
|
11
|
-
"(?:",
|
|
12
|
-
// match `@organization/` or `@organization+`(pnpm)
|
|
13
|
-
`(?:@${PACKAGE_SLUG.source}[/|+])?`,
|
|
14
|
-
// match github.com+organization+
|
|
15
|
-
`(?:${PACKAGE_SLUG.source}\\+)*`,
|
|
16
|
-
// match package name
|
|
17
|
-
`(?:${PACKAGE_SLUG.source})`,
|
|
18
|
-
// match version
|
|
19
|
-
`(?:${VERSION.source})?`,
|
|
20
|
-
")",
|
|
21
|
-
// Match pnpm peer dependencies (eg: package-a@version_package-b@version)
|
|
22
|
-
"(?:_",
|
|
23
|
-
`(?:@${PACKAGE_SLUG.source}[/|+])?`,
|
|
24
|
-
`(?:${PACKAGE_SLUG.source})`,
|
|
25
|
-
`(?:@${PACKAGE_SLUG.source})?`,
|
|
26
|
-
")*",
|
|
27
|
-
"/"
|
|
28
|
-
].join(""),
|
|
29
|
-
"g"
|
|
30
|
-
);
|
|
31
|
-
const PACKAGE_PATH_NAME = /(?:(?:node_modules|~)(?:\/\.pnpm)?\/)(?:((?:@[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*[/|+])?(?:(?:[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*\+)*)(?:[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*))(?:@[\w|\-|_|.]+)?)(?:_((?:@[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*[/|+])?(?:[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*))(?:@[a-zA-Z0-9]+(?:[-|_|.]+[a-zA-Z0-9]+)*))*\//gm;
|
|
32
|
-
const uniqLast = (data) => {
|
|
33
|
-
const res = [];
|
|
34
|
-
data.forEach((item, index) => {
|
|
35
|
-
if (!data.slice(index + 1).includes(item)) {
|
|
36
|
-
res.push(item);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
return res;
|
|
40
|
-
};
|
|
41
|
-
const getPackageMetaFromModulePath = (modulePath) => {
|
|
42
|
-
const paths = modulePath.match(MODULE_PATH_PACKAGES);
|
|
43
|
-
if (!paths) {
|
|
44
|
-
return { name: "", version: "" };
|
|
45
|
-
}
|
|
46
|
-
const names = uniqLast(
|
|
47
|
-
paths.flatMap((packagePath) => {
|
|
48
|
-
const found = packagePath.matchAll(PACKAGE_PATH_NAME);
|
|
49
|
-
if (!found) {
|
|
50
|
-
return [];
|
|
51
|
-
}
|
|
52
|
-
const paksArray = compact([...found].flat());
|
|
53
|
-
return paksArray.slice(1).filter(Boolean).map((name2) => name2.replace(/\+/g, "/"));
|
|
54
|
-
})
|
|
55
|
-
);
|
|
56
|
-
if (isEmpty(names)) {
|
|
57
|
-
return { name: "", version: "" };
|
|
58
|
-
}
|
|
59
|
-
const name = last(names);
|
|
60
|
-
const pattern = new RegExp(`(.*)(${last(paths)}).*`);
|
|
61
|
-
const path = modulePath.replace(pattern, "$1$2").replace(/\/$/, "");
|
|
62
|
-
return {
|
|
63
|
-
name,
|
|
64
|
-
version: path && name ? path.match(new RegExp(`${name}${VERSION_NUMBER}`))?.flat().slice(1)?.[0] || "" : ""
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
export {
|
|
68
|
-
MODULE_PATH_PACKAGES,
|
|
69
|
-
PACKAGE_PATH_NAME,
|
|
70
|
-
getPackageMetaFromModulePath
|
|
71
|
-
};
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
function getPluginHooks(plugin) {
|
|
2
|
-
return Object.keys(plugin);
|
|
3
|
-
}
|
|
4
|
-
function getPluginTapNames(plugin) {
|
|
5
|
-
const hooks = getPluginHooks(plugin);
|
|
6
|
-
const tapNames = /* @__PURE__ */ new Set();
|
|
7
|
-
hooks.forEach((hook) => {
|
|
8
|
-
plugin[hook].forEach((data) => {
|
|
9
|
-
tapNames.add(data.tapName);
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
return [...tapNames];
|
|
13
|
-
}
|
|
14
|
-
function getPluginSummary(plugin) {
|
|
15
|
-
return {
|
|
16
|
-
hooks: getPluginHooks(plugin),
|
|
17
|
-
tapNames: getPluginTapNames(plugin)
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
function getPluginData(plugin, selectedHooks = [], selectedTapNames = []) {
|
|
21
|
-
const hooks = getPluginHooks(plugin).filter((hook) => {
|
|
22
|
-
if (selectedHooks.length && selectedHooks.indexOf(hook) === -1) {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
return true;
|
|
26
|
-
});
|
|
27
|
-
if (!hooks.length)
|
|
28
|
-
return [];
|
|
29
|
-
const tapNames = getPluginTapNames(plugin);
|
|
30
|
-
return tapNames.reduce((total, tapName) => {
|
|
31
|
-
if (selectedTapNames.length && selectedTapNames.indexOf(tapName) === -1) {
|
|
32
|
-
return total;
|
|
33
|
-
}
|
|
34
|
-
hooks.forEach((hook) => {
|
|
35
|
-
const hookData = plugin[hook].filter((e) => e.tapName === tapName);
|
|
36
|
-
if (hookData.length === 0)
|
|
37
|
-
return;
|
|
38
|
-
total.push({
|
|
39
|
-
tapName,
|
|
40
|
-
hook,
|
|
41
|
-
data: hookData.map((e) => {
|
|
42
|
-
return {
|
|
43
|
-
startAt: e.startAt,
|
|
44
|
-
endAt: e.endAt,
|
|
45
|
-
costs: e.costs,
|
|
46
|
-
type: e.type
|
|
47
|
-
};
|
|
48
|
-
})
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
return total;
|
|
52
|
-
}, []);
|
|
53
|
-
}
|
|
54
|
-
export {
|
|
55
|
-
getPluginData,
|
|
56
|
-
getPluginHooks,
|
|
57
|
-
getPluginSummary,
|
|
58
|
-
getPluginTapNames
|
|
59
|
-
};
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { mergeIntervals } from "./algorithm";
|
|
2
|
-
function isResolveSuccessData(data) {
|
|
3
|
-
return Boolean(data.result);
|
|
4
|
-
}
|
|
5
|
-
function isResolveFailData(data) {
|
|
6
|
-
return Boolean(data.error);
|
|
7
|
-
}
|
|
8
|
-
function getResolverCosts(resolver, resolvers) {
|
|
9
|
-
const blocked = resolvers.filter(
|
|
10
|
-
(e) => e !== resolver && e.pid === resolver.pid && e.startAt >= resolver.startAt && e.endAt <= resolver.endAt
|
|
11
|
-
);
|
|
12
|
-
let costs = resolver.endAt - resolver.startAt;
|
|
13
|
-
if (blocked.length) {
|
|
14
|
-
const intervals = blocked.map((e) => [
|
|
15
|
-
Math.max(e.startAt, resolver.startAt),
|
|
16
|
-
Math.min(e.endAt, resolver.endAt)
|
|
17
|
-
]);
|
|
18
|
-
mergeIntervals(intervals).forEach((e) => {
|
|
19
|
-
const sub = e[1] - e[0];
|
|
20
|
-
costs -= sub;
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
return costs;
|
|
24
|
-
}
|
|
25
|
-
function getResolverFileTree(resolver) {
|
|
26
|
-
return resolver.map((e) => ({ issuerPath: e.issuerPath }));
|
|
27
|
-
}
|
|
28
|
-
function getResolverFileDetails(filepath, resolvers, modules, moduleCodeMap) {
|
|
29
|
-
const module = modules.find((item) => item.path === filepath);
|
|
30
|
-
const matchResolvers = resolvers.filter((e) => e.issuerPath === filepath);
|
|
31
|
-
const before = module && moduleCodeMap && moduleCodeMap[module.id] ? moduleCodeMap[module.id].source : "";
|
|
32
|
-
const after = matchResolvers.reduce((t, c) => {
|
|
33
|
-
if (c.request && isResolveSuccessData(c)) {
|
|
34
|
-
return t.replace(new RegExp(`["']${c.request}["']`), `"${c.result}"`);
|
|
35
|
-
}
|
|
36
|
-
return t;
|
|
37
|
-
}, before);
|
|
38
|
-
return {
|
|
39
|
-
filepath,
|
|
40
|
-
before,
|
|
41
|
-
after,
|
|
42
|
-
resolvers: matchResolvers.map((e) => ({
|
|
43
|
-
...e,
|
|
44
|
-
costs: getResolverCosts(e, resolvers)
|
|
45
|
-
}))
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
export {
|
|
49
|
-
getResolverCosts,
|
|
50
|
-
getResolverFileDetails,
|
|
51
|
-
getResolverFileTree,
|
|
52
|
-
isResolveFailData,
|
|
53
|
-
isResolveSuccessData
|
|
54
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
const RspackLoaderInternalPropertyName = "__l__";
|
|
2
|
-
var RspackSummaryCostsDataName = /* @__PURE__ */ ((RspackSummaryCostsDataName2) => {
|
|
3
|
-
RspackSummaryCostsDataName2["Bootstrap"] = "bootstrap->rspack:beforeCompile";
|
|
4
|
-
RspackSummaryCostsDataName2["Compile"] = "rspack:beforeCompile->afterCompile";
|
|
5
|
-
RspackSummaryCostsDataName2["Done"] = "rspack:afterCompile->done";
|
|
6
|
-
RspackSummaryCostsDataName2["Minify"] = "rspack:minify(rspack:optimizeChunkAssets)";
|
|
7
|
-
return RspackSummaryCostsDataName2;
|
|
8
|
-
})(RspackSummaryCostsDataName || {});
|
|
9
|
-
export {
|
|
10
|
-
RspackLoaderInternalPropertyName,
|
|
11
|
-
RspackSummaryCostsDataName
|
|
12
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
var SummaryCostsDataName = /* @__PURE__ */ ((SummaryCostsDataName2) => {
|
|
2
|
-
SummaryCostsDataName2["Bootstrap"] = "bootstrap->beforeCompile";
|
|
3
|
-
SummaryCostsDataName2["Compile"] = "beforeCompile->afterCompile";
|
|
4
|
-
SummaryCostsDataName2["Done"] = "afterCompile->done";
|
|
5
|
-
SummaryCostsDataName2["Minify"] = "minify(processAssets)";
|
|
6
|
-
return SummaryCostsDataName2;
|
|
7
|
-
})(SummaryCostsDataName || {});
|
|
8
|
-
export {
|
|
9
|
-
SummaryCostsDataName
|
|
10
|
-
};
|
package/dist/esm/common/time.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { hrtime } from "process";
|
|
2
|
-
function toFixedDigits(num, digits = 2) {
|
|
3
|
-
if (digits === 0) {
|
|
4
|
-
return Math.floor(num);
|
|
5
|
-
}
|
|
6
|
-
return +num.toFixed(digits);
|
|
7
|
-
}
|
|
8
|
-
function getUnit(num, type) {
|
|
9
|
-
let unit;
|
|
10
|
-
if (type === "m") {
|
|
11
|
-
unit = num > 1 ? "mins" : "min";
|
|
12
|
-
} else {
|
|
13
|
-
unit = num > 1 ? "hours" : "hour";
|
|
14
|
-
}
|
|
15
|
-
return unit;
|
|
16
|
-
}
|
|
17
|
-
function formatCosts(costs) {
|
|
18
|
-
costs = Number(costs);
|
|
19
|
-
if (costs >= 1e3) {
|
|
20
|
-
const sec = costs / 1e3;
|
|
21
|
-
if (sec >= 60) {
|
|
22
|
-
let mins = sec / 60;
|
|
23
|
-
if (mins >= 60) {
|
|
24
|
-
const hours = toFixedDigits(mins / 60, 0);
|
|
25
|
-
const restMins = toFixedDigits(mins % 60, 1);
|
|
26
|
-
const hUnit = getUnit(hours, "h");
|
|
27
|
-
if (restMins > 0) {
|
|
28
|
-
return `${hours}${hUnit} ${restMins}${getUnit(restMins, "m")}`;
|
|
29
|
-
}
|
|
30
|
-
return `${hours}${hUnit}`;
|
|
31
|
-
}
|
|
32
|
-
mins = toFixedDigits(mins, 0);
|
|
33
|
-
const mUnit = getUnit(mins, "m");
|
|
34
|
-
const restSec = toFixedDigits(sec % 60, 0);
|
|
35
|
-
if (restSec > 0) {
|
|
36
|
-
return `${mins}${mUnit} ${restSec}s`;
|
|
37
|
-
}
|
|
38
|
-
return `${mins}${mUnit}`;
|
|
39
|
-
}
|
|
40
|
-
return `${toFixedDigits(sec, 1)}s`;
|
|
41
|
-
}
|
|
42
|
-
if (costs >= 10) {
|
|
43
|
-
return `${+toFixedDigits(costs, 0)}ms`;
|
|
44
|
-
}
|
|
45
|
-
if (costs >= 1) {
|
|
46
|
-
return `${+toFixedDigits(costs, 1)}ms`;
|
|
47
|
-
}
|
|
48
|
-
let r = +toFixedDigits(costs, 2);
|
|
49
|
-
if (r === 0) {
|
|
50
|
-
r = +toFixedDigits(costs, 3);
|
|
51
|
-
}
|
|
52
|
-
return `${r}ms`;
|
|
53
|
-
}
|
|
54
|
-
function getCurrentTimestamp(start, startHRTime) {
|
|
55
|
-
const endHRTime = hrtime(startHRTime);
|
|
56
|
-
const end = start + endHRTime[0] * 1e3 + (process.env.VITEST ? Math.round(endHRTime[1] / 1e6) : endHRTime[1] / 1e6);
|
|
57
|
-
return end;
|
|
58
|
-
}
|
|
59
|
-
export {
|
|
60
|
-
formatCosts,
|
|
61
|
-
getCurrentTimestamp,
|
|
62
|
-
getUnit,
|
|
63
|
-
toFixedDigits
|
|
64
|
-
};
|
package/dist/esm/common/url.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { isAbsolute } from "path";
|
|
2
|
-
function isUrl(uri) {
|
|
3
|
-
return /^https?:\/\//.test(uri);
|
|
4
|
-
}
|
|
5
|
-
function isFilePath(uri) {
|
|
6
|
-
return isAbsolute(uri);
|
|
7
|
-
}
|
|
8
|
-
function isRemoteUrl(uri) {
|
|
9
|
-
if (typeof uri === "string") {
|
|
10
|
-
if (isUrl(uri) || isFilePath(uri)) {
|
|
11
|
-
return true;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
export {
|
|
17
|
-
isFilePath,
|
|
18
|
-
isRemoteUrl,
|
|
19
|
-
isUrl
|
|
20
|
-
};
|