@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
@@ -0,0 +1,238 @@
1
+ import { Client, Constants } from "@rsdoctor/types";
2
+ import { getChunksByAsset } from "./chunk.mjs";
3
+ import { getModulesByAsset } from "./modules.mjs";
4
+ const EXT = 'js|css|html';
5
+ const hashPattern = /[a-z|A-Z|0-9]{4,32}/;
6
+ const hashSeparatorPattern = /[-|.]/;
7
+ const fileExtensionPattern = /(?:\.[a-z|A-Z|0-9]{2,}){1,}/;
8
+ const filenamePattern = new RegExp(`(.*)${hashSeparatorPattern.source}${hashPattern.source}(${fileExtensionPattern.source})$`);
9
+ function formatAssetName(assetName, fileConfig) {
10
+ var _splitFilesList_;
11
+ const splitFilesList = null == fileConfig ? void 0 : fileConfig.split('.');
12
+ let outputFileTailName = '';
13
+ let unHashedFileName = assetName;
14
+ if ((null == splitFilesList ? void 0 : splitFilesList.length) && splitFilesList.length >= 3 && (null == (_splitFilesList_ = splitFilesList[splitFilesList.length - 2]) ? void 0 : _splitFilesList_.indexOf('[')) < 0 && EXT.indexOf(splitFilesList[splitFilesList.length - 1]) > -1) {
15
+ outputFileTailName = splitFilesList[splitFilesList.length - 2];
16
+ const _regPattern = /(.*)(\.[a-f0-9]{4,32})([^.]*.[^.]+){2,}/g;
17
+ unHashedFileName = assetName.replace(_regPattern, '$1');
18
+ return `${unHashedFileName}.${outputFileTailName}.${assetName.substring(assetName.lastIndexOf('.') + 1)}`;
19
+ }
20
+ return assetName.replace(filenamePattern, '$1$2');
21
+ }
22
+ function isAssetMatchExtension(asset, ext) {
23
+ return asset.path.slice(-ext.length) === ext || extname(asset.path) === ext;
24
+ }
25
+ function isAssetMatchExtensions(asset, exts) {
26
+ if (!exts.length) return false;
27
+ return exts.some((ext)=>isAssetMatchExtension(asset, ext));
28
+ }
29
+ function filterAssetsByExtensions(assets, exts) {
30
+ if ('string' == typeof exts) return assets.filter((e)=>isAssetMatchExtension(e, exts));
31
+ if (Array.isArray(exts)) return assets.filter((e)=>isAssetMatchExtensions(e, exts));
32
+ return [];
33
+ }
34
+ function filterAssets(assets, filterOrExtensions) {
35
+ if (filterOrExtensions) assets = 'function' == typeof filterOrExtensions ? assets.filter(filterOrExtensions) : filterAssetsByExtensions(assets, filterOrExtensions);
36
+ return assets;
37
+ }
38
+ function getAssetsSizeInfo(assets, chunks, options = {}) {
39
+ const { withFileContent = true, filterOrExtensions } = options;
40
+ assets = assets.filter((e)=>!isAssetMatchExtensions(e, Constants.MapExtensions));
41
+ if (filterOrExtensions) assets = filterAssets(assets, filterOrExtensions);
42
+ if (assets.length) return {
43
+ count: assets.length,
44
+ size: assets.reduce((t, c)=>t + c.size, 0),
45
+ files: assets.map((e)=>({
46
+ path: e.path,
47
+ size: e.size,
48
+ gzipSize: e.gzipSize,
49
+ initial: isInitialAsset(e, chunks),
50
+ content: withFileContent ? e.content : void 0
51
+ }))
52
+ };
53
+ return {
54
+ count: 0,
55
+ size: 0,
56
+ files: []
57
+ };
58
+ }
59
+ function isInitialAsset(asset, chunks) {
60
+ const cks = getChunksByAsset(asset, chunks);
61
+ return cks.some((e)=>Boolean(e.initial));
62
+ }
63
+ function getInitialAssetsSizeInfo(assets, chunks, options = {}) {
64
+ if (options.filterOrExtensions) assets = filterAssets(assets, options.filterOrExtensions);
65
+ return getAssetsSizeInfo(assets, chunks, {
66
+ ...options,
67
+ filterOrExtensions: (asset)=>isInitialAsset(asset, chunks)
68
+ });
69
+ }
70
+ function getAssetsDiffResult(baseline, current) {
71
+ return {
72
+ all: {
73
+ total: diffAssetsByExtensions(baseline, current)
74
+ },
75
+ js: {
76
+ total: diffAssetsByExtensions(baseline, current, Constants.JSExtension),
77
+ initial: diffAssetsByExtensions(baseline, current, Constants.JSExtension, true)
78
+ },
79
+ css: {
80
+ total: diffAssetsByExtensions(baseline, current, Constants.CSSExtension),
81
+ initial: diffAssetsByExtensions(baseline, current, Constants.CSSExtension, true)
82
+ },
83
+ imgs: {
84
+ total: diffAssetsByExtensions(baseline, current, Constants.ImgExtensions)
85
+ },
86
+ html: {
87
+ total: diffAssetsByExtensions(baseline, current, Constants.HtmlExtension)
88
+ },
89
+ media: {
90
+ total: diffAssetsByExtensions(baseline, current, Constants.MediaExtensions)
91
+ },
92
+ fonts: {
93
+ total: diffAssetsByExtensions(baseline, current, Constants.FontExtensions)
94
+ },
95
+ others: {
96
+ total: diffAssetsByExtensions(baseline, current, (asset)=>!isAssetMatchExtensions(asset, [
97
+ Constants.JSExtension,
98
+ Constants.CSSExtension,
99
+ Constants.HtmlExtension
100
+ ].concat(Constants.ImgExtensions, Constants.MediaExtensions, Constants.FontExtensions, Constants.MapExtensions)))
101
+ }
102
+ };
103
+ }
104
+ function diffSize(bSize, cSize) {
105
+ const isEqual = bSize === cSize;
106
+ const percent = isEqual ? 0 : 0 === bSize ? 100 : Math.abs(cSize - bSize) / bSize * 100;
107
+ const state = isEqual ? Client.RsdoctorClientDiffState.Equal : bSize > cSize ? Client.RsdoctorClientDiffState.Down : Client.RsdoctorClientDiffState.Up;
108
+ return {
109
+ percent,
110
+ state
111
+ };
112
+ }
113
+ function diffAssetsByExtensions(baseline, current, filterOrExtensions, isInitial = false) {
114
+ const { size: bSize, count: bCount } = isInitial ? getInitialAssetsSizeInfo(baseline.assets, baseline.chunks, {
115
+ filterOrExtensions
116
+ }) : getAssetsSizeInfo(baseline.assets, baseline.chunks, {
117
+ filterOrExtensions
118
+ });
119
+ let cSize;
120
+ let cCount;
121
+ if (baseline === current) {
122
+ cSize = bSize;
123
+ cCount = bCount;
124
+ } else {
125
+ const { size, count } = isInitial ? getInitialAssetsSizeInfo(current.assets, current.chunks, {
126
+ filterOrExtensions
127
+ }) : getAssetsSizeInfo(current.assets, current.chunks, {
128
+ filterOrExtensions
129
+ });
130
+ cSize = size;
131
+ cCount = count;
132
+ }
133
+ const { percent, state } = diffSize(bSize, cSize);
134
+ return {
135
+ size: {
136
+ baseline: bSize,
137
+ current: cSize
138
+ },
139
+ count: {
140
+ baseline: bCount,
141
+ current: cCount
142
+ },
143
+ percent,
144
+ state
145
+ };
146
+ }
147
+ function getAssetsSummary(assets, chunks, options = {}) {
148
+ const jsOpt = {
149
+ ...options,
150
+ filterOrExtensions: Constants.JSExtension
151
+ };
152
+ const cssOpt = {
153
+ ...options,
154
+ filterOrExtensions: Constants.CSSExtension
155
+ };
156
+ const imgOpt = {
157
+ ...options,
158
+ filterOrExtensions: Constants.ImgExtensions
159
+ };
160
+ const htmlOpt = {
161
+ ...options,
162
+ filterOrExtensions: Constants.HtmlExtension
163
+ };
164
+ const mediaOpt = {
165
+ ...options,
166
+ filterOrExtensions: Constants.MediaExtensions
167
+ };
168
+ const fontOpt = {
169
+ ...options,
170
+ filterOrExtensions: Constants.FontExtensions
171
+ };
172
+ const otherOpt = {
173
+ ...options,
174
+ filterOrExtensions: (asset)=>!isAssetMatchExtensions(asset, [
175
+ Constants.JSExtension,
176
+ Constants.CSSExtension,
177
+ Constants.HtmlExtension
178
+ ].concat(Constants.ImgExtensions, Constants.MediaExtensions, Constants.FontExtensions, Constants.MapExtensions))
179
+ };
180
+ return {
181
+ all: {
182
+ total: getAssetsSizeInfo(assets, chunks, options)
183
+ },
184
+ js: {
185
+ total: getAssetsSizeInfo(assets, chunks, jsOpt),
186
+ initial: getInitialAssetsSizeInfo(assets, chunks, jsOpt)
187
+ },
188
+ css: {
189
+ total: getAssetsSizeInfo(assets, chunks, cssOpt),
190
+ initial: getInitialAssetsSizeInfo(assets, chunks, cssOpt)
191
+ },
192
+ imgs: {
193
+ total: getAssetsSizeInfo(assets, chunks, imgOpt)
194
+ },
195
+ html: {
196
+ total: getAssetsSizeInfo(assets, chunks, htmlOpt)
197
+ },
198
+ media: {
199
+ total: getAssetsSizeInfo(assets, chunks, mediaOpt)
200
+ },
201
+ fonts: {
202
+ total: getAssetsSizeInfo(assets, chunks, fontOpt)
203
+ },
204
+ others: {
205
+ total: getAssetsSizeInfo(assets, chunks, otherOpt)
206
+ }
207
+ };
208
+ }
209
+ function getAssetDetails(assetPath, assets, chunks, modules) {
210
+ const asset = assets.find((e)=>e.path === assetPath);
211
+ return {
212
+ asset,
213
+ chunks: getChunksByAsset(asset, chunks),
214
+ modules: getModulesByAsset(asset, chunks, modules)
215
+ };
216
+ }
217
+ function getAllBundleData(assets, chunks, modules, filtersModules) {
218
+ const result = [];
219
+ try {
220
+ for(let i = 0; i < assets.length; i++){
221
+ const asset = assets[i];
222
+ result.push({
223
+ asset,
224
+ modules: getModulesByAsset(asset, chunks, modules, filtersModules)
225
+ });
226
+ }
227
+ return result;
228
+ } catch (error) {
229
+ console.error(error);
230
+ return [];
231
+ }
232
+ }
233
+ function extname(filename) {
234
+ const baseName = filename.split('?')[0];
235
+ const matches = baseName.match(/\.([0-9a-z]+)(?:[\?#]|$)/i);
236
+ return matches ? `.${matches[1]}` : '';
237
+ }
238
+ export { diffAssetsByExtensions, diffSize, extname, filterAssets, filterAssetsByExtensions, formatAssetName, getAllBundleData, getAssetDetails, getAssetsDiffResult, getAssetsSizeInfo, getAssetsSummary, getInitialAssetsSizeInfo, isAssetMatchExtension, isAssetMatchExtensions, isInitialAsset };
@@ -0,0 +1,32 @@
1
+ function getChunkIdsByAsset(asset) {
2
+ if (asset.chunks) return asset.chunks;
3
+ return [];
4
+ }
5
+ function getChunksByModule(module, chunks) {
6
+ if (module.chunks.length) return getChunksByChunkIds(module.chunks, chunks);
7
+ return [];
8
+ }
9
+ function getChunkByChunkId(chunkId, chunks) {
10
+ return chunks.find((e)=>e.id === chunkId);
11
+ }
12
+ function getChunksByChunkIds(chunkIds, chunks, filters) {
13
+ if (!chunkIds.length) return [];
14
+ const result = chunkIds.map((id)=>chunks.find((e)=>e.id === id)).filter(Boolean).map((chunk)=>{
15
+ if (filters && filters.length > 0) {
16
+ const filtered = {};
17
+ for (const key of filters)if (void 0 !== chunk[key]) filtered[key] = chunk[key];
18
+ return filtered;
19
+ }
20
+ return chunk;
21
+ });
22
+ return result;
23
+ }
24
+ function getChunksByAsset(asset, chunks, filters) {
25
+ return getChunksByChunkIds(getChunkIdsByAsset(asset), chunks, filters);
26
+ }
27
+ function getChunksByModuleId(id, modules, chunks) {
28
+ const mod = modules.find((e)=>e.id === id);
29
+ if (!mod) return [];
30
+ return getChunksByModule(mod, chunks);
31
+ }
32
+ export { getChunkByChunkId, getChunkIdsByAsset, getChunksByAsset, getChunksByChunkIds, getChunksByModule, getChunksByModuleId };
@@ -0,0 +1,10 @@
1
+ function getDependencyByPackageData(dep, dependencies) {
2
+ return dependencies.find((item)=>item.id === dep.dependencyId);
3
+ }
4
+ function getDependenciesByModule(module, dependencies) {
5
+ return module.dependencies.map((id)=>dependencies.find((dep)=>dep.id === id)).filter(Boolean);
6
+ }
7
+ function getDependencyByResolvedRequest(resolvedRequest, dependencies) {
8
+ return dependencies.find((e)=>e.resolvedRequest === resolvedRequest);
9
+ }
10
+ export { getDependenciesByModule, getDependencyByPackageData, getDependencyByResolvedRequest };
@@ -0,0 +1,4 @@
1
+ function getEntryPoints(entrypoints) {
2
+ return entrypoints;
3
+ }
4
+ export { getEntryPoints };
@@ -0,0 +1,5 @@
1
+ export * from "./assets.mjs";
2
+ export * from "./chunk.mjs";
3
+ export * from "./modules.mjs";
4
+ export * from "./dependency.mjs";
5
+ export * from "./entrypoints.mjs";
@@ -0,0 +1,78 @@
1
+ import { getChunkIdsByAsset, getChunksByChunkIds } from "./chunk.mjs";
2
+ import { getDependenciesByModule, getDependencyByPackageData } from "./dependency.mjs";
3
+ import { logger } from "../../logger.mjs";
4
+ import { isJsExt, isStyleExt } from "../file.mjs";
5
+ function getModulesByAsset(asset, chunks, modules, filterModules) {
6
+ const ids = getChunkIdsByAsset(asset);
7
+ const cks = getChunksByChunkIds(ids, chunks);
8
+ const res = getModulesByChunks(asset.path, cks, modules, filterModules);
9
+ return res;
10
+ }
11
+ function getModuleIdsByChunk(chunk) {
12
+ const { modules = [] } = chunk;
13
+ return modules;
14
+ }
15
+ function getModuleIdsByModulesIds(moduleIds, modules) {
16
+ return moduleIds.map((id)=>modules.find((m)=>m.id === id)).filter(Boolean);
17
+ }
18
+ function getModulesByChunk(chunk, modules, filterModules) {
19
+ const ids = getModuleIdsByChunk(chunk);
20
+ return ids.map((id)=>{
21
+ const module = modules.find((e)=>e.id === id);
22
+ if (filterModules && filterModules.length > 0) {
23
+ if (!module) return null;
24
+ const filtered = {};
25
+ for (const key of filterModules)if (void 0 !== module[key]) filtered[key] = module[key];
26
+ return filtered;
27
+ }
28
+ return module;
29
+ }).filter(Boolean);
30
+ }
31
+ function getTypeChecker(assetPath) {
32
+ if (isStyleExt(assetPath)) return isStyleExt;
33
+ if (isJsExt(assetPath)) return isJsExt;
34
+ return ()=>true;
35
+ }
36
+ function getModulesByChunks(assetPath, chunks, modules, filterModules) {
37
+ const res = [];
38
+ const typeChecker = getTypeChecker(assetPath);
39
+ try {
40
+ chunks.forEach((chunk)=>{
41
+ getModulesByChunk(chunk, modules, filterModules).forEach((md)=>{
42
+ const name = md.path || '';
43
+ if (!typeChecker(name)) return;
44
+ if (!res.filter((_m)=>_m.id === md.id).length) res.push(md);
45
+ });
46
+ });
47
+ } catch (error) {
48
+ logger.debug(error);
49
+ }
50
+ return res;
51
+ }
52
+ function getModuleByDependency(dep, modules) {
53
+ return modules.find((item)=>item.id === dep.module);
54
+ }
55
+ function filterModulesAndDependenciesByPackageDeps(deps, dependencies, modules) {
56
+ const _dependencies = [];
57
+ const _modules = [];
58
+ for(let i = 0; i < deps.length; i++){
59
+ const dep = getDependencyByPackageData(deps[i], dependencies);
60
+ if (dep) {
61
+ _dependencies.push(dep);
62
+ const module = getModuleByDependency(dep, modules);
63
+ if (module) _modules.push(module);
64
+ }
65
+ }
66
+ return {
67
+ dependencies: _dependencies,
68
+ modules: _modules
69
+ };
70
+ }
71
+ function getModuleDetails(moduleId, modules, dependencies) {
72
+ const module = modules.find((e)=>e.id === moduleId);
73
+ return {
74
+ module,
75
+ dependencies: getDependenciesByModule(module, dependencies)
76
+ };
77
+ }
78
+ export { filterModulesAndDependenciesByPackageDeps, getModuleByDependency, getModuleDetails, getModuleIdsByChunk, getModuleIdsByModulesIds, getModulesByAsset, getModulesByChunk, getModulesByChunks };
@@ -0,0 +1,19 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE__summary_mjs_54f58833__ from "./summary.mjs";
2
+ import * as __WEBPACK_EXTERNAL_MODULE__crypto_mjs_252a9c2c__ from "./crypto.mjs";
3
+ import * as __WEBPACK_EXTERNAL_MODULE__manifest_mjs_2d750078__ from "./manifest.mjs";
4
+ import * as __WEBPACK_EXTERNAL_MODULE__loader_mjs_ab87ced3__ from "./loader.mjs";
5
+ import * as __WEBPACK_EXTERNAL_MODULE__time_mjs_7d968bf1__ from "./time.mjs";
6
+ import * as __WEBPACK_EXTERNAL_MODULE__algorithm_mjs_ed543360__ from "./algorithm.mjs";
7
+ import * as __WEBPACK_EXTERNAL_MODULE__resolver_mjs_24d6f61e__ from "./resolver.mjs";
8
+ import * as __WEBPACK_EXTERNAL_MODULE__graph_index_mjs_4e5a8d12__ from "./graph/index.mjs";
9
+ import * as __WEBPACK_EXTERNAL_MODULE__bundle_mjs_804f0b3a__ from "./bundle.mjs";
10
+ import * as __WEBPACK_EXTERNAL_MODULE__url_mjs_0b48a1db__ from "./url.mjs";
11
+ import * as __WEBPACK_EXTERNAL_MODULE__plugin_mjs_ee4957f9__ from "./plugin.mjs";
12
+ import * as __WEBPACK_EXTERNAL_MODULE__data_index_mjs_870691a9__ from "./data/index.mjs";
13
+ import * as __WEBPACK_EXTERNAL_MODULE__alerts_mjs_af8e297e__ from "./alerts.mjs";
14
+ import * as __WEBPACK_EXTERNAL_MODULE__rspack_mjs_fb7d03b6__ from "./rspack.mjs";
15
+ import * as __WEBPACK_EXTERNAL_MODULE__package_mjs_f12bd493__ from "./package.mjs";
16
+ import * as __WEBPACK_EXTERNAL_MODULE__lodash_mjs_5081b560__ from "./lodash.mjs";
17
+ import * as __WEBPACK_EXTERNAL_MODULE__global_config_mjs_ce875cc9__ from "./global-config.mjs";
18
+ import * as __WEBPACK_EXTERNAL_MODULE__file_mjs_bb53e012__ from "./file.mjs";
19
+ export { __WEBPACK_EXTERNAL_MODULE__alerts_mjs_af8e297e__ as Alerts, __WEBPACK_EXTERNAL_MODULE__algorithm_mjs_ed543360__ as Algorithm, __WEBPACK_EXTERNAL_MODULE__bundle_mjs_804f0b3a__ as Bundle, __WEBPACK_EXTERNAL_MODULE__crypto_mjs_252a9c2c__ as Crypto, __WEBPACK_EXTERNAL_MODULE__data_index_mjs_870691a9__ as Data, __WEBPACK_EXTERNAL_MODULE__file_mjs_bb53e012__ as File, __WEBPACK_EXTERNAL_MODULE__global_config_mjs_ce875cc9__ as GlobalConfig, __WEBPACK_EXTERNAL_MODULE__graph_index_mjs_4e5a8d12__ as Graph, __WEBPACK_EXTERNAL_MODULE__loader_mjs_ab87ced3__ as Loader, __WEBPACK_EXTERNAL_MODULE__lodash_mjs_5081b560__ as Lodash, __WEBPACK_EXTERNAL_MODULE__manifest_mjs_2d750078__ as Manifest, __WEBPACK_EXTERNAL_MODULE__package_mjs_f12bd493__ as Package, __WEBPACK_EXTERNAL_MODULE__plugin_mjs_ee4957f9__ as Plugin, __WEBPACK_EXTERNAL_MODULE__resolver_mjs_24d6f61e__ as Resolver, __WEBPACK_EXTERNAL_MODULE__rspack_mjs_fb7d03b6__ as Rspack, __WEBPACK_EXTERNAL_MODULE__summary_mjs_54f58833__ as Summary, __WEBPACK_EXTERNAL_MODULE__time_mjs_7d968bf1__ as Time, __WEBPACK_EXTERNAL_MODULE__url_mjs_0b48a1db__ as Url };
@@ -0,0 +1,247 @@
1
+ import { mergeIntervals } from "./algorithm.mjs";
2
+ function findLoaderTotalTiming(loaders) {
3
+ let start = 1 / 0;
4
+ let end = -1 / 0;
5
+ for(let i = 0; i < loaders.length; i++){
6
+ const loader = loaders[i];
7
+ if (loader.startAt <= start) start = loader.startAt;
8
+ if (loader.endAt >= end) end = loader.endAt;
9
+ }
10
+ return {
11
+ start,
12
+ end
13
+ };
14
+ }
15
+ function getLoadersCosts(filter, loaders) {
16
+ const match = {};
17
+ const others = {};
18
+ loaders.forEach((e)=>{
19
+ if (filter(e)) {
20
+ if (!match[e.pid]) match[e.pid] = [];
21
+ match[e.pid].push([
22
+ e.startAt,
23
+ e.endAt
24
+ ]);
25
+ } else {
26
+ if (!others[e.pid]) others[e.pid] = [];
27
+ others[e.pid].push([
28
+ e.startAt,
29
+ e.endAt
30
+ ]);
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(([s, e])=>_match.some((el)=>s >= el[0] && e <= el[1]));
39
+ const matchSum = _match.length ? _match.reduce((t, c)=>t += c[1] - c[0], 0) : 0;
40
+ const othersSum = _others.length ? _others.reduce((t, c)=>t += c[1] - c[0], 0) : 0;
41
+ costs += matchSum - othersSum;
42
+ }
43
+ return costs;
44
+ }
45
+ function getLoaderCosts(loader, loaders) {
46
+ const blocked = loaders.filter((e)=>{
47
+ if (e.loader.includes('builtin')) return false;
48
+ if (e !== loader && e.pid === loader.pid) {
49
+ if (e.startAt >= loader.startAt) {
50
+ if (e.endAt <= loader.endAt) return true;
51
+ }
52
+ }
53
+ return false;
54
+ });
55
+ let costs = loader.endAt - loader.startAt;
56
+ if (blocked.length) {
57
+ const intervals = blocked.map((e)=>[
58
+ Math.max(e.startAt, loader.startAt),
59
+ Math.min(e.endAt, loader.endAt)
60
+ ]);
61
+ mergeIntervals(intervals).forEach((e)=>{
62
+ const sub = e[1] - e[0];
63
+ costs -= sub;
64
+ });
65
+ }
66
+ return costs;
67
+ }
68
+ function getLoaderNames(loaders) {
69
+ const names = new Set();
70
+ loaders.forEach((e)=>e.loaders.forEach((l)=>names.add(getLoadrName(l.loader))));
71
+ return [
72
+ ...names
73
+ ];
74
+ }
75
+ function getLoadersTransformData(loaders) {
76
+ const res = [];
77
+ for(let i = 0; i < loaders.length; i++){
78
+ const item = loaders[i];
79
+ for(let j = 0; j < item.loaders.length; j++){
80
+ const loader = item.loaders[j];
81
+ res.push(loader);
82
+ }
83
+ }
84
+ return res;
85
+ }
86
+ function getLoaderChartData(loaders) {
87
+ const res = [];
88
+ const list = getLoadersTransformData(loaders);
89
+ loaders.forEach((item)=>{
90
+ item.loaders.forEach((el)=>{
91
+ res.push({
92
+ layer: item.resource.layer,
93
+ loader: getLoadrName(el.loader),
94
+ isPitch: el.isPitch,
95
+ startAt: el.startAt,
96
+ endAt: el.endAt,
97
+ pid: el.pid,
98
+ sync: el.sync,
99
+ resource: item.resource.path,
100
+ costs: getLoaderCosts(el, list)
101
+ });
102
+ });
103
+ });
104
+ return res;
105
+ }
106
+ function getLoaderFileTree(loaders) {
107
+ const list = getLoadersTransformData(loaders);
108
+ return loaders.map((data)=>{
109
+ const { loaders: arr, resource } = data;
110
+ return {
111
+ path: resource.path,
112
+ layer: resource.layer,
113
+ loaders: arr.map((l)=>({
114
+ key: l.path,
115
+ loader: getLoadrName(l.loader),
116
+ path: l.path,
117
+ errors: l.errors,
118
+ costs: getLoaderCosts(l, list)
119
+ }))
120
+ };
121
+ });
122
+ }
123
+ function getLoaderFileDetails(path, loaders) {
124
+ const data = loaders.find((e)=>e.resource.path === path);
125
+ if (!data) throw new Error(`"${path}" not match any loader data`);
126
+ const list = getLoadersTransformData(loaders);
127
+ return {
128
+ ...data,
129
+ loaders: data.loaders.map((el)=>({
130
+ ...el,
131
+ loader: getLoadrName(el.loader),
132
+ costs: getLoaderCosts(el, list)
133
+ }))
134
+ };
135
+ }
136
+ function getLoaderFolderStatistics(folder, loaders) {
137
+ const datas = loaders.filter((data)=>{
138
+ const { path } = data.resource;
139
+ return path.startsWith(folder);
140
+ });
141
+ const filteredLoaders = [];
142
+ const uniqueLoaders = new Map();
143
+ datas.forEach((data)=>{
144
+ data.loaders.forEach((fl)=>{
145
+ const uniqueLoader = uniqueLoaders.get(fl.loader);
146
+ if (uniqueLoader) uniqueLoaders.set(fl.loader, {
147
+ files: uniqueLoader.files + 1,
148
+ path: fl.path
149
+ });
150
+ else uniqueLoaders.set(fl.loader, {
151
+ files: 1,
152
+ path: fl.path
153
+ });
154
+ return filteredLoaders.push({
155
+ loader: fl.loader,
156
+ startAt: fl.startAt,
157
+ endAt: fl.endAt,
158
+ pid: fl.pid
159
+ });
160
+ });
161
+ });
162
+ const loaderCosts = Array.from(uniqueLoaders).map((uniqueLoader)=>{
163
+ const filter = (l)=>l.loader === uniqueLoader[0];
164
+ const costs = getLoadersCosts(filter, filteredLoaders);
165
+ return {
166
+ loader: uniqueLoader[0],
167
+ files: uniqueLoader[1].files,
168
+ path: uniqueLoader[1].path,
169
+ costs
170
+ };
171
+ });
172
+ return loaderCosts;
173
+ }
174
+ function collectResourceDirectories(loaders, root) {
175
+ const directories = new Set();
176
+ loaders.forEach((item)=>{
177
+ if (item.resource.path.startsWith(root)) {
178
+ const pathParts = item.resource.path.split(root).slice(1).join('/').split('/');
179
+ if (pathParts.length >= 2) {
180
+ const twoLevelDir = pathParts.slice(0, 2).join('/');
181
+ directories.add(`${root}/${twoLevelDir}`);
182
+ }
183
+ } else {
184
+ const pathParts = item.resource.path.split('/');
185
+ const twoLevelDir = pathParts.slice(0, pathParts.length - 1).join('/');
186
+ directories.add(twoLevelDir);
187
+ }
188
+ });
189
+ return Array.from(directories);
190
+ }
191
+ function getDirectoriesLoaders(loaders, root) {
192
+ const rootPath = root || process.cwd();
193
+ const directories = collectResourceDirectories(loaders, rootPath);
194
+ return directories.map((directory)=>{
195
+ const stats = getLoaderFolderStatistics(directory, loaders);
196
+ return {
197
+ directory,
198
+ stats
199
+ };
200
+ });
201
+ }
202
+ function getLoaderFileFirstInput(file, loaders) {
203
+ for(let i = 0; i < loaders.length; i++){
204
+ const item = loaders[i];
205
+ if (item.resource.path === file) {
206
+ const nonPitchLoaders = item.loaders.filter((e)=>!e.isPitch);
207
+ if (!nonPitchLoaders.length) return '';
208
+ return nonPitchLoaders[0].input || '';
209
+ }
210
+ }
211
+ return '';
212
+ }
213
+ function getLoaderFileInputAndOutput(file, loader, loaderIndex, loaders) {
214
+ for(let i = 0; i < loaders.length; i++){
215
+ const item = loaders[i];
216
+ if (item.resource.path === file) for(let j = 0; j < item.loaders.length; j++){
217
+ const l = item.loaders[j];
218
+ if (l.loader === loader && l.loaderIndex === loaderIndex) return {
219
+ input: l.input || '',
220
+ output: l.result || ''
221
+ };
222
+ return {
223
+ input: '',
224
+ output: ''
225
+ };
226
+ }
227
+ }
228
+ return {
229
+ input: '',
230
+ output: ''
231
+ };
232
+ }
233
+ const LoaderInternalPropertyName = '__l__';
234
+ const isVue = (compiler)=>{
235
+ const rules = 'module' in compiler.options && compiler.options.module.rules || [];
236
+ const hasVueRule = rules.some((rule)=>{
237
+ var _rule_test;
238
+ if (rule && 'object' == typeof rule && rule.test instanceof RegExp && (null == (_rule_test = rule.test) ? void 0 : _rule_test.test('.vue'))) return true;
239
+ return false;
240
+ });
241
+ return hasVueRule;
242
+ };
243
+ const getLoadrName = (loader)=>{
244
+ const regResults = loader.includes('node_modules') ? loader.split('node_modules') : null;
245
+ return regResults ? regResults[regResults.length - 1] : loader;
246
+ };
247
+ export { LoaderInternalPropertyName, findLoaderTotalTiming, getDirectoriesLoaders, getLoaderChartData, getLoaderCosts, getLoaderFileDetails, getLoaderFileFirstInput, getLoaderFileInputAndOutput, getLoaderFileTree, getLoaderFolderStatistics, getLoaderNames, getLoadersCosts, getLoadersTransformData, isVue };
@@ -0,0 +1,32 @@
1
+ function isUndefined(value) {
2
+ return void 0 === value;
3
+ }
4
+ function isNumber(value) {
5
+ return 'number' == typeof value && !Number.isNaN(value);
6
+ }
7
+ function isObject(value) {
8
+ return 'object' == typeof value && null !== value;
9
+ }
10
+ function isEmpty(value) {
11
+ return null == value || Array.isArray(value) && 0 === value.length || 'object' == typeof value && 0 === Object.keys(value).length;
12
+ }
13
+ function last(array) {
14
+ return array[array.length - 1];
15
+ }
16
+ function compact(array) {
17
+ return array.filter((item)=>null != item || !item);
18
+ }
19
+ function isNil(value) {
20
+ return null == value;
21
+ }
22
+ const isPlainObject = (obj)=>null !== obj && 'object' == typeof obj && Object.getPrototypeOf(obj) === Object.prototype;
23
+ const isString = (v)=>'string' == typeof v || !!v && 'object' == typeof v && !Array.isArray(v) && '[object String]' === ({}).toString.call(v);
24
+ function pick(obj, keys) {
25
+ const result = {};
26
+ for(let i = 0; i < keys.length; i++){
27
+ const key = keys[i];
28
+ if (Object.hasOwn(obj, key)) result[key] = obj[key];
29
+ }
30
+ return result;
31
+ }
32
+ export { compact, isEmpty, isNil, isNumber, isObject, isPlainObject, isString, isUndefined, last, pick };