@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.
Files changed (151) hide show
  1. package/dist/cjs/build/envinfo.js +107 -95
  2. package/dist/cjs/build/file/cache.js +65 -56
  3. package/dist/cjs/build/file/index.js +78 -41
  4. package/dist/cjs/build/file/sharding.js +90 -78
  5. package/dist/cjs/build/index.js +49 -47
  6. package/dist/cjs/build/json.js +91 -98
  7. package/dist/cjs/build/process.js +47 -42
  8. package/dist/cjs/build/server.js +110 -87
  9. package/dist/cjs/common/alerts.js +46 -44
  10. package/dist/cjs/common/algorithm.js +63 -54
  11. package/dist/cjs/common/bundle.js +52 -46
  12. package/dist/cjs/common/crypto.js +47 -46
  13. package/dist/cjs/common/data/index.js +381 -455
  14. package/dist/cjs/common/file.js +44 -0
  15. package/dist/cjs/common/global-config.js +72 -64
  16. package/dist/cjs/common/graph/assets.js +274 -308
  17. package/dist/cjs/common/graph/chunk.js +66 -63
  18. package/dist/cjs/common/graph/dependency.js +42 -32
  19. package/dist/cjs/common/graph/entrypoints.js +33 -25
  20. package/dist/cjs/common/graph/index.js +93 -27
  21. package/dist/cjs/common/graph/modules.js +113 -98
  22. package/dist/cjs/common/index.js +101 -83
  23. package/dist/cjs/common/loader.js +277 -273
  24. package/dist/cjs/common/lodash.js +73 -62
  25. package/dist/cjs/common/manifest.js +57 -59
  26. package/dist/cjs/common/package.js +79 -80
  27. package/dist/cjs/common/plugin.js +78 -73
  28. package/dist/cjs/common/resolver.js +79 -69
  29. package/dist/cjs/common/rspack.js +43 -34
  30. package/dist/cjs/common/summary.js +39 -31
  31. package/dist/cjs/common/time.js +73 -78
  32. package/dist/cjs/common/url.js +44 -36
  33. package/dist/cjs/error/error.js +183 -220
  34. package/dist/cjs/error/index.js +70 -28
  35. package/dist/cjs/error/transform.js +150 -143
  36. package/dist/cjs/error/utils.js +54 -58
  37. package/dist/cjs/index.js +37 -38
  38. package/dist/cjs/logger.js +99 -73
  39. package/dist/cjs/rule-utils/document/document.js +83 -82
  40. package/dist/cjs/rule-utils/document/index.js +75 -23
  41. package/dist/cjs/rule-utils/document/server.js +42 -35
  42. package/dist/cjs/rule-utils/document/types.js +17 -15
  43. package/dist/cjs/rule-utils/index.js +66 -21
  44. package/dist/cjs/rule-utils/parser/asserts.js +129 -147
  45. package/dist/cjs/rule-utils/parser/index.js +84 -25
  46. package/dist/cjs/rule-utils/parser/parser.js +50 -85
  47. package/dist/cjs/rule-utils/parser/types.js +38 -30
  48. package/dist/cjs/rule-utils/parser/utils.js +141 -168
  49. package/dist/esm/build/envinfo.mjs +57 -0
  50. package/dist/esm/build/file/cache.mjs +23 -0
  51. package/dist/esm/build/file/index.mjs +4 -0
  52. package/dist/esm/build/file/sharding.mjs +50 -0
  53. package/dist/esm/build/index.mjs +6 -0
  54. package/dist/esm/build/json.mjs +66 -0
  55. package/dist/esm/build/process.mjs +17 -0
  56. package/dist/esm/build/server.mjs +96 -0
  57. package/dist/esm/common/alerts.mjs +17 -0
  58. package/dist/esm/common/algorithm.mjs +32 -0
  59. package/dist/esm/common/bundle.mjs +22 -0
  60. package/dist/esm/common/crypto.mjs +17 -0
  61. package/dist/esm/common/data/index.mjs +354 -0
  62. package/dist/esm/common/file.mjs +7 -0
  63. package/dist/esm/common/global-config.mjs +32 -0
  64. package/dist/esm/common/graph/assets.mjs +238 -0
  65. package/dist/esm/common/graph/chunk.mjs +32 -0
  66. package/dist/esm/common/graph/dependency.mjs +10 -0
  67. package/dist/esm/common/graph/entrypoints.mjs +4 -0
  68. package/dist/esm/common/graph/index.mjs +5 -0
  69. package/dist/esm/common/graph/modules.mjs +78 -0
  70. package/dist/esm/common/index.mjs +19 -0
  71. package/dist/esm/common/loader.mjs +247 -0
  72. package/dist/esm/common/lodash.mjs +32 -0
  73. package/dist/esm/common/manifest.mjs +30 -0
  74. package/dist/esm/common/package.mjs +56 -0
  75. package/dist/esm/common/plugin.mjs +48 -0
  76. package/dist/esm/common/resolver.mjs +46 -0
  77. package/dist/esm/common/rspack.mjs +9 -0
  78. package/dist/esm/common/summary.mjs +8 -0
  79. package/dist/esm/common/time.mjs +43 -0
  80. package/dist/esm/common/url.mjs +14 -0
  81. package/dist/esm/error/error.mjs +154 -0
  82. package/dist/esm/error/index.mjs +3 -0
  83. package/dist/esm/error/transform.mjs +138 -0
  84. package/dist/esm/error/utils.mjs +22 -0
  85. package/dist/esm/index.mjs +3 -0
  86. package/dist/esm/logger.mjs +50 -0
  87. package/dist/esm/rule-utils/document/document.mjs +58 -0
  88. package/dist/esm/rule-utils/document/index.mjs +3 -0
  89. package/dist/esm/rule-utils/document/server.mjs +12 -0
  90. package/dist/esm/rule-utils/index.mjs +2 -0
  91. package/dist/esm/rule-utils/parser/asserts.mjs +104 -0
  92. package/dist/esm/rule-utils/parser/index.mjs +4 -0
  93. package/dist/esm/rule-utils/parser/parser.mjs +23 -0
  94. package/dist/esm/rule-utils/parser/types.mjs +7 -0
  95. package/dist/esm/rule-utils/parser/utils.mjs +109 -0
  96. package/dist/type/common/file.d.ts +3 -0
  97. package/dist/type/common/file.d.ts.map +1 -0
  98. package/dist/type/common/graph/modules.d.ts +1 -1
  99. package/dist/type/common/graph/modules.d.ts.map +1 -1
  100. package/dist/type/common/index.d.ts +1 -0
  101. package/dist/type/common/index.d.ts.map +1 -1
  102. package/dist/type/logger.d.ts +3 -1
  103. package/dist/type/logger.d.ts.map +1 -1
  104. package/package.json +13 -12
  105. package/dist/esm/build/envinfo.js +0 -75
  106. package/dist/esm/build/file/cache.js +0 -30
  107. package/dist/esm/build/file/index.js +0 -7
  108. package/dist/esm/build/file/sharding.js +0 -50
  109. package/dist/esm/build/index.js +0 -12
  110. package/dist/esm/build/json.js +0 -85
  111. package/dist/esm/build/process.js +0 -24
  112. package/dist/esm/build/server.js +0 -96
  113. package/dist/esm/common/alerts.js +0 -25
  114. package/dist/esm/common/algorithm.js +0 -39
  115. package/dist/esm/common/bundle.js +0 -30
  116. package/dist/esm/common/crypto.js +0 -28
  117. package/dist/esm/common/data/index.js +0 -428
  118. package/dist/esm/common/global-config.js +0 -38
  119. package/dist/esm/common/graph/assets.js +0 -310
  120. package/dist/esm/common/graph/chunk.js +0 -49
  121. package/dist/esm/common/graph/dependency.js +0 -14
  122. package/dist/esm/common/graph/entrypoints.js +0 -6
  123. package/dist/esm/common/graph/index.js +0 -5
  124. package/dist/esm/common/graph/modules.js +0 -90
  125. package/dist/esm/common/index.js +0 -36
  126. package/dist/esm/common/loader.js +0 -279
  127. package/dist/esm/common/lodash.js +0 -49
  128. package/dist/esm/common/manifest.js +0 -46
  129. package/dist/esm/common/package.js +0 -71
  130. package/dist/esm/common/plugin.js +0 -59
  131. package/dist/esm/common/resolver.js +0 -54
  132. package/dist/esm/common/rspack.js +0 -12
  133. package/dist/esm/common/summary.js +0 -10
  134. package/dist/esm/common/time.js +0 -64
  135. package/dist/esm/common/url.js +0 -20
  136. package/dist/esm/error/error.js +0 -202
  137. package/dist/esm/error/index.js +0 -5
  138. package/dist/esm/error/transform.js +0 -141
  139. package/dist/esm/error/utils.js +0 -40
  140. package/dist/esm/index.js +0 -6
  141. package/dist/esm/logger.js +0 -44
  142. package/dist/esm/rule-utils/document/document.js +0 -67
  143. package/dist/esm/rule-utils/document/index.js +0 -3
  144. package/dist/esm/rule-utils/document/server.js +0 -17
  145. package/dist/esm/rule-utils/index.js +0 -2
  146. package/dist/esm/rule-utils/parser/asserts.js +0 -132
  147. package/dist/esm/rule-utils/parser/index.js +0 -4
  148. package/dist/esm/rule-utils/parser/parser.js +0 -58
  149. package/dist/esm/rule-utils/parser/types.js +0 -9
  150. package/dist/esm/rule-utils/parser/utils.js +0 -164
  151. /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
- };
@@ -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
- };
@@ -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
- };