@rspack/core 0.0.21 → 0.0.23

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 (260) hide show
  1. package/LICENSE +2 -1
  2. package/dist/ErrorHelpers.d.ts +8 -0
  3. package/dist/ErrorHelpers.d.ts.map +1 -0
  4. package/dist/ErrorHelpers.js +54 -0
  5. package/dist/ErrorHelpers.js.map +1 -0
  6. package/dist/ResolverFactory.d.ts +1 -1
  7. package/dist/ResolverFactory.d.ts.map +1 -1
  8. package/dist/ResolverFactory.js +9 -4
  9. package/dist/ResolverFactory.js.map +1 -1
  10. package/dist/a.js +30 -0
  11. package/dist/b.js +28 -0
  12. package/dist/bundle.js +1 -0
  13. package/dist/compilation.d.ts +91 -8
  14. package/dist/compilation.d.ts.map +1 -1
  15. package/dist/compilation.js +268 -8
  16. package/dist/compilation.js.map +1 -1
  17. package/dist/compiler.d.ts +26 -13
  18. package/dist/compiler.d.ts.map +1 -1
  19. package/dist/compiler.js +106 -97
  20. package/dist/compiler.js.map +1 -1
  21. package/dist/config/adapter-rule-use.d.ts +75 -0
  22. package/dist/config/adapter-rule-use.d.ts.map +1 -0
  23. package/dist/config/adapter-rule-use.js +463 -0
  24. package/dist/config/adapter-rule-use.js.map +1 -0
  25. package/dist/config/adapter.d.ts +5 -0
  26. package/dist/config/adapter.d.ts.map +1 -0
  27. package/dist/config/adapter.js +235 -0
  28. package/dist/config/adapter.js.map +1 -0
  29. package/dist/config/browserslistTargetHandler.d.ts.map +1 -1
  30. package/dist/config/browserslistTargetHandler.js +9 -4
  31. package/dist/config/browserslistTargetHandler.js.map +1 -1
  32. package/dist/config/builtins.d.ts +40 -10
  33. package/dist/config/builtins.d.ts.map +1 -1
  34. package/dist/config/builtins.js +109 -41
  35. package/dist/config/builtins.js.map +1 -1
  36. package/dist/config/cache.d.ts.map +1 -1
  37. package/dist/config/cache.js +1 -0
  38. package/dist/config/cache.js.map +1 -1
  39. package/dist/config/defaults.d.ts +12 -3
  40. package/dist/config/defaults.d.ts.map +1 -1
  41. package/dist/config/defaults.js +281 -113
  42. package/dist/config/defaults.js.map +1 -1
  43. package/dist/config/devServer.d.ts +2 -30
  44. package/dist/config/devServer.d.ts.map +1 -1
  45. package/dist/config/entry.d.ts +2 -1
  46. package/dist/config/entry.d.ts.map +1 -1
  47. package/dist/config/entry.js +24 -10
  48. package/dist/config/entry.js.map +1 -1
  49. package/dist/config/experiments.d.ts.map +1 -1
  50. package/dist/config/experiments.js +3 -2
  51. package/dist/config/experiments.js.map +1 -1
  52. package/dist/config/index.d.ts +3 -71
  53. package/dist/config/index.d.ts.map +1 -1
  54. package/dist/config/index.js +17 -75
  55. package/dist/config/index.js.map +1 -1
  56. package/dist/config/mode.d.ts +2 -2
  57. package/dist/config/mode.d.ts.map +1 -1
  58. package/dist/config/module.d.ts +19 -22
  59. package/dist/config/module.d.ts.map +1 -1
  60. package/dist/config/module.js +104 -61
  61. package/dist/config/module.js.map +1 -1
  62. package/dist/config/normalization.d.ts +12 -0
  63. package/dist/config/normalization.d.ts.map +1 -0
  64. package/dist/config/normalization.js +181 -0
  65. package/dist/config/normalization.js.map +1 -0
  66. package/dist/config/optimization.d.ts +25 -0
  67. package/dist/config/optimization.d.ts.map +1 -1
  68. package/dist/config/optimization.js +45 -4
  69. package/dist/config/optimization.js.map +1 -1
  70. package/dist/config/plugin.d.ts +1 -1
  71. package/dist/config/plugin.d.ts.map +1 -1
  72. package/dist/config/resolve.d.ts +7 -3
  73. package/dist/config/resolve.d.ts.map +1 -1
  74. package/dist/config/resolve.js +16 -2
  75. package/dist/config/resolve.js.map +1 -1
  76. package/dist/config/snapshot.d.ts +0 -2
  77. package/dist/config/snapshot.d.ts.map +1 -1
  78. package/dist/config/snapshot.js +1 -6
  79. package/dist/config/snapshot.js.map +1 -1
  80. package/dist/config/splitChunks.d.ts +112 -0
  81. package/dist/config/splitChunks.d.ts.map +1 -0
  82. package/dist/config/splitChunks.js +41 -0
  83. package/dist/config/splitChunks.js.map +1 -0
  84. package/dist/config/stats.d.ts +3 -0
  85. package/dist/config/stats.d.ts.map +1 -1
  86. package/dist/config/stats.js +1 -0
  87. package/dist/config/stats.js.map +1 -1
  88. package/dist/config/target.d.ts +138 -6
  89. package/dist/config/target.d.ts.map +1 -1
  90. package/dist/config/target.js +314 -15
  91. package/dist/config/target.js.map +1 -1
  92. package/dist/config/types.d.ts +311 -0
  93. package/dist/config/types.d.ts.map +1 -0
  94. package/dist/config/types.js +12 -0
  95. package/dist/config/types.js.map +1 -0
  96. package/dist/config/watch.d.ts +3 -7
  97. package/dist/config/watch.d.ts.map +1 -1
  98. package/dist/config/watch.js +0 -13
  99. package/dist/config/watch.js.map +1 -1
  100. package/dist/dd.js +1 -0
  101. package/dist/e1.js +11 -0
  102. package/dist/e1~runtime.js +56 -0
  103. package/dist/e2.js +11 -0
  104. package/dist/e2~runtime.js +56 -0
  105. package/dist/error/ConcurrentCompilationError.d.ts +15 -0
  106. package/dist/error/ConcurrentCompilationError.d.ts.map +1 -0
  107. package/dist/error/ConcurrentCompilationError.js +21 -0
  108. package/dist/error/ConcurrentCompilationError.js.map +1 -0
  109. package/dist/fileSystem.d.ts +8 -0
  110. package/dist/fileSystem.d.ts.map +1 -0
  111. package/dist/fileSystem.js +14 -0
  112. package/dist/fileSystem.js.map +1 -0
  113. package/dist/index.d.ts +1 -0
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +1 -0
  116. package/dist/index.js.map +1 -1
  117. package/dist/logging/Logger.d.ts +22 -6
  118. package/dist/logging/Logger.d.ts.map +1 -1
  119. package/dist/logging/Logger.js +9 -10
  120. package/dist/logging/Logger.js.map +1 -1
  121. package/dist/logging/createConsoleLogger.d.ts +9 -0
  122. package/dist/logging/createConsoleLogger.d.ts.map +1 -1
  123. package/dist/logging/createConsoleLogger.js +9 -4
  124. package/dist/logging/createConsoleLogger.js.map +1 -1
  125. package/dist/logging/runtime.d.ts +9 -0
  126. package/dist/logging/runtime.d.ts.map +1 -1
  127. package/dist/logging/runtime.js +17 -6
  128. package/dist/logging/runtime.js.map +1 -1
  129. package/dist/logging/truncateArgs.d.ts +9 -0
  130. package/dist/logging/truncateArgs.d.ts.map +1 -1
  131. package/dist/logging/truncateArgs.js +15 -5
  132. package/dist/logging/truncateArgs.js.map +1 -1
  133. package/dist/main.js +28 -0
  134. package/dist/multiCompiler.d.ts +95 -0
  135. package/dist/multiCompiler.d.ts.map +1 -0
  136. package/dist/multiCompiler.js +455 -0
  137. package/dist/multiCompiler.js.map +1 -0
  138. package/dist/multiStats.d.ts +27 -0
  139. package/dist/multiStats.d.ts.map +1 -0
  140. package/dist/multiStats.js +133 -0
  141. package/dist/multiStats.js.map +1 -0
  142. package/dist/multiWatching.d.ts +36 -0
  143. package/dist/multiWatching.d.ts.map +1 -0
  144. package/dist/multiWatching.js +62 -0
  145. package/dist/multiWatching.js.map +1 -0
  146. package/dist/node/NodeEnvironmentPlugin.d.ts +8 -24
  147. package/dist/node/NodeEnvironmentPlugin.d.ts.map +1 -1
  148. package/dist/node/NodeEnvironmentPlugin.js +26 -29
  149. package/dist/node/NodeEnvironmentPlugin.js.map +1 -1
  150. package/dist/node/NodeTargetPlugin.d.ts +9 -0
  151. package/dist/node/NodeTargetPlugin.d.ts.map +1 -1
  152. package/dist/node/NodeTargetPlugin.js +13 -1
  153. package/dist/node/NodeTargetPlugin.js.map +1 -1
  154. package/dist/node/NodeWatchFileSystem.d.ts +19 -0
  155. package/dist/node/NodeWatchFileSystem.d.ts.map +1 -0
  156. package/dist/node/NodeWatchFileSystem.js +148 -0
  157. package/dist/node/NodeWatchFileSystem.js.map +1 -0
  158. package/dist/node/nodeConsole.d.ts +10 -1
  159. package/dist/node/nodeConsole.d.ts.map +1 -1
  160. package/dist/node/nodeConsole.js +42 -25
  161. package/dist/node/nodeConsole.js.map +1 -1
  162. package/dist/rspack.d.ts +7 -3
  163. package/dist/rspack.d.ts.map +1 -1
  164. package/dist/rspack.js +36 -6
  165. package/dist/rspack.js.map +1 -1
  166. package/dist/rspackOptionsApply.d.ts.map +1 -1
  167. package/dist/rspackOptionsApply.js +32 -8
  168. package/dist/rspackOptionsApply.js.map +1 -1
  169. package/dist/runtime.js +56 -0
  170. package/dist/runtime~e1.js +56 -0
  171. package/dist/runtime~e2.js +56 -0
  172. package/dist/stats.d.ts +18 -12
  173. package/dist/stats.d.ts.map +1 -1
  174. package/dist/stats.js +56 -51
  175. package/dist/stats.js.map +1 -1
  176. package/dist/util/ArrayQueue.d.ts +54 -0
  177. package/dist/util/ArrayQueue.d.ts.map +1 -0
  178. package/dist/util/ArrayQueue.js +109 -0
  179. package/dist/util/ArrayQueue.js.map +1 -0
  180. package/dist/util/cleverMerge.d.ts.map +1 -1
  181. package/dist/util/cleverMerge.js +9 -4
  182. package/dist/util/cleverMerge.js.map +1 -1
  183. package/dist/util/createHash.d.ts +9 -0
  184. package/dist/util/createHash.d.ts.map +1 -1
  185. package/dist/util/createHash.js +9 -4
  186. package/dist/util/createHash.js.map +1 -1
  187. package/dist/util/createSource.d.ts.map +1 -1
  188. package/dist/util/createSource.js +19 -4
  189. package/dist/util/createSource.js.map +1 -1
  190. package/dist/util/fake.d.ts +30 -0
  191. package/dist/util/fake.d.ts.map +1 -0
  192. package/dist/util/fake.js +72 -0
  193. package/dist/util/fake.js.map +1 -0
  194. package/dist/util/fs.d.ts +24 -0
  195. package/dist/util/fs.d.ts.map +1 -0
  196. package/dist/util/fs.js +3 -0
  197. package/dist/util/fs.js.map +1 -0
  198. package/dist/util/hash/BatchedHash.d.ts +2 -2
  199. package/dist/util/hash/BatchedHash.d.ts.map +1 -1
  200. package/dist/util/hash/BatchedHash.js +9 -4
  201. package/dist/util/hash/BatchedHash.js.map +1 -1
  202. package/dist/util/hash/md4.d.ts +1 -1
  203. package/dist/util/hash/md4.js +9 -4
  204. package/dist/util/hash/md4.js.map +1 -1
  205. package/dist/util/hash/wasm-hash.d.ts.map +1 -1
  206. package/dist/util/hash/wasm-hash.js +9 -4
  207. package/dist/util/hash/wasm-hash.js.map +1 -1
  208. package/dist/util/hash/xxhash64.d.ts +1 -1
  209. package/dist/util/hash/xxhash64.js +9 -4
  210. package/dist/util/hash/xxhash64.js.map +1 -1
  211. package/dist/util/identifier.d.ts +8 -8
  212. package/dist/util/identifier.d.ts.map +1 -1
  213. package/dist/util/index.d.ts +2 -0
  214. package/dist/util/index.d.ts.map +1 -1
  215. package/dist/util/index.js +10 -1
  216. package/dist/util/index.js.map +1 -1
  217. package/dist/util/memoize.d.ts.map +1 -1
  218. package/dist/util/memoize.js +3 -0
  219. package/dist/util/memoize.js.map +1 -1
  220. package/dist/watching.d.ts +32 -0
  221. package/dist/watching.d.ts.map +1 -0
  222. package/dist/watching.js +278 -0
  223. package/dist/watching.js.map +1 -0
  224. package/package.json +20 -13
  225. package/dist/utils/createHash.d.ts +0 -7
  226. package/dist/utils/createHash.d.ts.map +0 -1
  227. package/dist/utils/createHash.js +0 -166
  228. package/dist/utils/createHash.js.map +0 -1
  229. package/dist/utils/createSource.d.ts +0 -6
  230. package/dist/utils/createSource.d.ts.map +0 -1
  231. package/dist/utils/createSource.js +0 -48
  232. package/dist/utils/createSource.js.map +0 -1
  233. package/dist/utils/hash/BatchedHash.d.ts +0 -16
  234. package/dist/utils/hash/BatchedHash.d.ts.map +0 -1
  235. package/dist/utils/hash/BatchedHash.js +0 -61
  236. package/dist/utils/hash/BatchedHash.js.map +0 -1
  237. package/dist/utils/hash/index.d.ts +0 -19
  238. package/dist/utils/hash/index.d.ts.map +0 -1
  239. package/dist/utils/hash/index.js +0 -28
  240. package/dist/utils/hash/index.js.map +0 -1
  241. package/dist/utils/hash/md4.d.ts +0 -3
  242. package/dist/utils/hash/md4.d.ts.map +0 -1
  243. package/dist/utils/hash/md4.js +0 -13
  244. package/dist/utils/hash/md4.js.map +0 -1
  245. package/dist/utils/hash/wasm-hash.d.ts +0 -7
  246. package/dist/utils/hash/wasm-hash.d.ts.map +0 -1
  247. package/dist/utils/hash/wasm-hash.js +0 -162
  248. package/dist/utils/hash/wasm-hash.js.map +0 -1
  249. package/dist/utils/hash/xxhash64.d.ts +0 -3
  250. package/dist/utils/hash/xxhash64.d.ts.map +0 -1
  251. package/dist/utils/hash/xxhash64.js +0 -13
  252. package/dist/utils/hash/xxhash64.js.map +0 -1
  253. package/dist/utils/index.d.ts +0 -6
  254. package/dist/utils/index.d.ts.map +0 -1
  255. package/dist/utils/index.js +0 -18
  256. package/dist/utils/index.js.map +0 -1
  257. package/dist/utils/memoize.d.ts +0 -2
  258. package/dist/utils/memoize.d.ts.map +0 -1
  259. package/dist/utils/memoize.js +0 -22
  260. package/dist/utils/memoize.js.map +0 -1
@@ -0,0 +1,455 @@
1
+ "use strict";
2
+ /**
3
+ * The following code is modified based on
4
+ * https://github.com/webpack/webpack/blob/4b4ca3b/lib/MultiCompiler.js
5
+ *
6
+ * MIT Licensed
7
+ * Author Tobias Koppers @sokra
8
+ * Copyright (c) JS Foundation and other contributors
9
+ * https://github.com/webpack/webpack/blob/main/LICENSE
10
+ */
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ var _MultiCompiler_instances, _MultiCompiler_runGraph;
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.MultiCompiler = void 0;
22
+ const tapable_1 = require("tapable");
23
+ const multiStats_1 = __importDefault(require("./multiStats"));
24
+ const neo_async_1 = __importDefault(require("neo-async"));
25
+ const ArrayQueue_1 = __importDefault(require("./util/ArrayQueue"));
26
+ const ConcurrentCompilationError_1 = __importDefault(require("./error/ConcurrentCompilationError"));
27
+ const multiWatching_1 = __importDefault(require("./multiWatching"));
28
+ class MultiCompiler {
29
+ constructor(compilers, options) {
30
+ _MultiCompiler_instances.add(this);
31
+ if (!Array.isArray(compilers)) {
32
+ compilers = Object.keys(compilers).map(name => {
33
+ // @ts-expect-error
34
+ compilers[name].name = name;
35
+ // @ts-expect-error
36
+ return compilers[name];
37
+ });
38
+ }
39
+ this.hooks = {
40
+ /** @type {SyncHook<[MultiStats]>} */
41
+ done: new tapable_1.SyncHook(["stats"]),
42
+ /** @type {MultiHook<SyncHook<[string | null, number]>>} */
43
+ invalid: new tapable_1.MultiHook(compilers.map(c => c.hooks.invalid)),
44
+ /** @type {MultiHook<AsyncSeriesHook<[Compiler]>>} */
45
+ run: new tapable_1.MultiHook(compilers.map(c => c.hooks.run)),
46
+ /** @type {SyncHook<[]>} */
47
+ watchClose: new tapable_1.SyncHook([]),
48
+ /** @type {MultiHook<AsyncSeriesHook<[Compiler]>>} */
49
+ watchRun: new tapable_1.MultiHook(compilers.map(c => c.hooks.watchRun)),
50
+ /** @type {MultiHook<SyncBailHook<[string, string, any[]], true>>} */
51
+ infrastructureLog: new tapable_1.MultiHook(compilers.map(c => c.hooks.infrastructureLog))
52
+ };
53
+ this.compilers = compilers;
54
+ this._options = {
55
+ parallelism: (options === null || options === void 0 ? void 0 : options.parallelism) || Infinity
56
+ };
57
+ this.dependencies = new WeakMap();
58
+ this.running = false;
59
+ const compilerStats = this.compilers.map(() => null);
60
+ let doneCompilers = 0;
61
+ for (let index = 0; index < this.compilers.length; index++) {
62
+ const compiler = this.compilers[index];
63
+ const compilerIndex = index;
64
+ let compilerDone = false;
65
+ compiler.hooks.done.tap("MultiCompiler", stats => {
66
+ if (!compilerDone) {
67
+ compilerDone = true;
68
+ doneCompilers++;
69
+ }
70
+ compilerStats[compilerIndex] = stats;
71
+ if (doneCompilers === this.compilers.length) {
72
+ this.hooks.done.call(new multiStats_1.default(compilerStats));
73
+ }
74
+ });
75
+ compiler.hooks.invalid.tap("MultiCompiler", () => {
76
+ if (compilerDone) {
77
+ compilerDone = false;
78
+ doneCompilers--;
79
+ }
80
+ });
81
+ }
82
+ }
83
+ get options() {
84
+ return Object.assign(this.compilers.map(c => c.options), this._options);
85
+ }
86
+ get outputPath() {
87
+ let commonPath = this.compilers[0].outputPath;
88
+ for (const compiler of this.compilers) {
89
+ while (compiler.outputPath.indexOf(commonPath) !== 0 &&
90
+ /[/\\]/.test(commonPath)) {
91
+ commonPath = commonPath.replace(/[/\\][^/\\]*$/, "");
92
+ }
93
+ }
94
+ if (!commonPath && this.compilers[0].outputPath[0] === "/")
95
+ return "/";
96
+ return commonPath;
97
+ }
98
+ get inputFileSystem() {
99
+ throw new Error("Cannot read inputFileSystem of a MultiCompiler");
100
+ }
101
+ get outputFileSystem() {
102
+ throw new Error("Cannot read outputFileSystem of a MultiCompiler");
103
+ }
104
+ get watchFileSystem() {
105
+ throw new Error("Cannot read watchFileSystem of a MultiCompiler");
106
+ }
107
+ get intermediateFileSystem() {
108
+ throw new Error("Cannot read outputFileSystem of a MultiCompiler");
109
+ }
110
+ /**
111
+ * @param {InputFileSystem} value the new input file system
112
+ */
113
+ set inputFileSystem(value) {
114
+ for (const compiler of this.compilers) {
115
+ compiler.inputFileSystem = value;
116
+ }
117
+ }
118
+ /**
119
+ * @param {OutputFileSystem} value the new output file system
120
+ */
121
+ set outputFileSystem(value) {
122
+ for (const compiler of this.compilers) {
123
+ compiler.outputFileSystem = value;
124
+ }
125
+ }
126
+ set watchFileSystem(value) {
127
+ for (const compiler of this.compilers) {
128
+ compiler.watchFileSystem = value;
129
+ }
130
+ }
131
+ /**
132
+ * @param {IntermediateFileSystem} value the new intermediate file system
133
+ */
134
+ set intermediateFileSystem(value) {
135
+ for (const compiler of this.compilers) {
136
+ compiler.intermediateFileSystem = value;
137
+ }
138
+ }
139
+ getInfrastructureLogger(name) {
140
+ return this.compilers[0].getInfrastructureLogger(name);
141
+ }
142
+ /**
143
+ * @param {Compiler} compiler the child compiler
144
+ * @param {string[]} dependencies its dependencies
145
+ * @returns {void}
146
+ */
147
+ setDependencies(compiler, dependencies) {
148
+ this.dependencies.set(compiler, dependencies);
149
+ }
150
+ /**
151
+ * @param {Callback<MultiStats>} callback signals when the validation is complete
152
+ * @returns {boolean} true if the dependencies are valid
153
+ */
154
+ validateDependencies(callback) {
155
+ const edges = new Set();
156
+ const missing = [];
157
+ // @ts-expect-error
158
+ const targetFound = compiler => {
159
+ for (const edge of edges) {
160
+ if (edge.target === compiler) {
161
+ return true;
162
+ }
163
+ }
164
+ return false;
165
+ };
166
+ // @ts-expect-error
167
+ const sortEdges = (e1, e2) => {
168
+ return (e1.source.name.localeCompare(e2.source.name) ||
169
+ e1.target.name.localeCompare(e2.target.name));
170
+ };
171
+ for (const source of this.compilers) {
172
+ const dependencies = this.dependencies.get(source);
173
+ if (dependencies) {
174
+ for (const dep of dependencies) {
175
+ const target = this.compilers.find(c => c.name === dep);
176
+ if (!target) {
177
+ missing.push(dep);
178
+ }
179
+ else {
180
+ edges.add({
181
+ source,
182
+ target
183
+ });
184
+ }
185
+ }
186
+ }
187
+ }
188
+ /** @type {string[]} */
189
+ const errors = missing.map(m => `Compiler dependency \`${m}\` not found.`);
190
+ const stack = this.compilers.filter(c => !targetFound(c));
191
+ while (stack.length > 0) {
192
+ const current = stack.pop();
193
+ for (const edge of edges) {
194
+ if (edge.source === current) {
195
+ edges.delete(edge);
196
+ const target = edge.target;
197
+ if (!targetFound(target)) {
198
+ stack.push(target);
199
+ }
200
+ }
201
+ }
202
+ }
203
+ if (edges.size > 0) {
204
+ /** @type {string[]} */
205
+ const lines = Array.from(edges)
206
+ .sort(sortEdges)
207
+ .map(edge => `${edge.source.name} -> ${edge.target.name}`);
208
+ lines.unshift("Circular dependency found in compiler dependencies.");
209
+ errors.unshift(lines.join("\n"));
210
+ }
211
+ if (errors.length > 0) {
212
+ const message = errors.join("\n");
213
+ callback(new Error(message));
214
+ return false;
215
+ }
216
+ return true;
217
+ }
218
+ /**
219
+ * @param {WatchOptions|WatchOptions[]} watchOptions the watcher's options
220
+ * @param {Callback<MultiStats>} handler signals when the call finishes
221
+ * @returns {MultiWatching} a compiler watcher
222
+ */
223
+ watch(watchOptions, handler) {
224
+ if (this.running) {
225
+ return handler(new ConcurrentCompilationError_1.default());
226
+ }
227
+ this.running = true;
228
+ if (this.validateDependencies(handler)) {
229
+ const watchings = __classPrivateFieldGet(this, _MultiCompiler_instances, "m", _MultiCompiler_runGraph).call(this,
230
+ // @ts-expect-error
231
+ (compiler, idx, done, isBlocked, setChanged, setInvalid) => {
232
+ const watching = compiler.watch(
233
+ // @ts-expect-error
234
+ Array.isArray(watchOptions) ? watchOptions[idx] : watchOptions,
235
+ // @ts-expect-error
236
+ done);
237
+ if (watching) {
238
+ watching.onInvalid = setInvalid;
239
+ watching.onChange = setChanged;
240
+ watching.isBlocked = isBlocked;
241
+ }
242
+ return watching;
243
+ }, (compiler, watching, _done) => {
244
+ if (compiler.watching !== watching)
245
+ return;
246
+ if (!watching.running)
247
+ watching.invalidate();
248
+ }, handler);
249
+ // @ts-expect-error
250
+ return new multiWatching_1.default(watchings, this);
251
+ }
252
+ return new multiWatching_1.default([], this);
253
+ }
254
+ run(callback) {
255
+ if (this.running) {
256
+ return callback(new ConcurrentCompilationError_1.default());
257
+ }
258
+ this.running = true;
259
+ if (this.validateDependencies(callback)) {
260
+ __classPrivateFieldGet(this, _MultiCompiler_instances, "m", _MultiCompiler_runGraph).call(this, () => { }, (compiler, _, callback) => compiler.run(callback), (err, stats) => {
261
+ this.running = false;
262
+ if (callback !== undefined) {
263
+ return callback(err, stats);
264
+ }
265
+ });
266
+ }
267
+ }
268
+ purgeInputFileSystem() {
269
+ for (const compiler of this.compilers) {
270
+ if (compiler.inputFileSystem && compiler.inputFileSystem.purge) {
271
+ compiler.inputFileSystem.purge();
272
+ }
273
+ }
274
+ }
275
+ close(callback) {
276
+ neo_async_1.default.each(this.compilers, (compiler, cb) => {
277
+ compiler.close(cb);
278
+ },
279
+ // @ts-expect-error
280
+ callback);
281
+ }
282
+ }
283
+ exports.MultiCompiler = MultiCompiler;
284
+ _MultiCompiler_instances = new WeakSet(), _MultiCompiler_runGraph = function _MultiCompiler_runGraph(setup, run, callback) {
285
+ /** @typedef {{ compiler: Compiler, setupResult: SetupResult, result: Stats, state: "pending" | "blocked" | "queued" | "starting" | "running" | "running-outdated" | "done", children: Node[], parents: Node[] }} Node */
286
+ // State transitions for nodes:
287
+ // -> blocked (initial)
288
+ // blocked -> starting [running++] (when all parents done)
289
+ // queued -> starting [running++] (when processing the queue)
290
+ // starting -> running (when run has been called)
291
+ // running -> done [running--] (when compilation is done)
292
+ // done -> pending (when invalidated from file change)
293
+ // pending -> blocked [add to queue] (when invalidated from aggregated changes)
294
+ // done -> blocked [add to queue] (when invalidated, from parent invalidation)
295
+ // running -> running-outdated (when invalidated, either from change or parent invalidation)
296
+ // running-outdated -> blocked [running--] (when compilation is done)
297
+ const nodes = this.compilers.map(compiler => ({
298
+ compiler,
299
+ setupResult: undefined,
300
+ result: undefined,
301
+ state: "blocked",
302
+ children: [],
303
+ parents: []
304
+ }));
305
+ // only useful for MultiCompiler options.name and options.dependencies
306
+ const compilerToNode = new Map();
307
+ for (const node of nodes)
308
+ compilerToNode.set(node.compiler.name, node);
309
+ for (const node of nodes) {
310
+ const dependencies = this.dependencies.get(node.compiler);
311
+ if (!dependencies)
312
+ continue;
313
+ for (const dep of dependencies) {
314
+ const parent = compilerToNode.get(dep);
315
+ node.parents.push(parent);
316
+ parent.children.push(node);
317
+ }
318
+ }
319
+ const queue = new ArrayQueue_1.default();
320
+ for (const node of nodes) {
321
+ if (node.parents.length === 0) {
322
+ node.state = "queued";
323
+ queue.enqueue(node);
324
+ }
325
+ }
326
+ let errored = false;
327
+ let running = 0;
328
+ const parallelism = this._options.parallelism;
329
+ /**
330
+ * @param {Node} node node
331
+ * @param {Error=} err error
332
+ * @param {Stats=} stats result
333
+ * @returns {void}
334
+ */
335
+ const nodeDone = (node, err, stats) => {
336
+ if (errored)
337
+ return;
338
+ if (err) {
339
+ errored = true;
340
+ return neo_async_1.default.each(nodes, (node, callback) => {
341
+ if (node.compiler.watching) {
342
+ node.compiler.watching.close(callback);
343
+ }
344
+ else {
345
+ callback();
346
+ }
347
+ }, () => callback(err));
348
+ }
349
+ node.result = stats;
350
+ running--;
351
+ if (node.state === "running") {
352
+ node.state = "done";
353
+ for (const child of node.children) {
354
+ if (child.state === "blocked")
355
+ queue.enqueue(child);
356
+ }
357
+ }
358
+ else if (node.state === "running-outdated") {
359
+ node.state = "blocked";
360
+ queue.enqueue(node);
361
+ }
362
+ processQueue();
363
+ };
364
+ /**
365
+ * @param {Node} node node
366
+ * @returns {void}
367
+ */
368
+ const nodeInvalidFromParent = (node) => {
369
+ if (node.state === "done") {
370
+ node.state = "blocked";
371
+ }
372
+ else if (node.state === "running") {
373
+ node.state = "running-outdated";
374
+ }
375
+ for (const child of node.children) {
376
+ nodeInvalidFromParent(child);
377
+ }
378
+ };
379
+ /**
380
+ * @param {Node} node node
381
+ * @returns {void}
382
+ */
383
+ const nodeInvalid = (node) => {
384
+ if (node.state === "done") {
385
+ node.state = "pending";
386
+ }
387
+ else if (node.state === "running") {
388
+ node.state = "running-outdated";
389
+ }
390
+ for (const child of node.children) {
391
+ nodeInvalidFromParent(child);
392
+ }
393
+ };
394
+ /**
395
+ * @param {Node} node node
396
+ * @returns {void}
397
+ */
398
+ // @ts-expect-error
399
+ const nodeChange = node => {
400
+ nodeInvalid(node);
401
+ if (node.state === "pending") {
402
+ node.state = "blocked";
403
+ }
404
+ if (node.state === "blocked") {
405
+ queue.enqueue(node);
406
+ processQueue();
407
+ }
408
+ };
409
+ const setupResults = [];
410
+ nodes.forEach((node, i) => {
411
+ setupResults.push((node.setupResult = setup(node.compiler, i,
412
+ // @ts-expect-error
413
+ nodeDone.bind(null, node), () => node.state !== "starting" && node.state !== "running", () => nodeChange(node), () => nodeInvalid(node))));
414
+ });
415
+ let processing = true;
416
+ const processQueue = () => {
417
+ if (processing)
418
+ return;
419
+ processing = true;
420
+ process.nextTick(processQueueWorker);
421
+ };
422
+ const processQueueWorker = () => {
423
+ while (running < parallelism && queue.length > 0 && !errored) {
424
+ const node = queue.dequeue();
425
+ if (node.state === "queued" ||
426
+ (node.state === "blocked" &&
427
+ node.parents.every(p => p.state === "done"))) {
428
+ running++;
429
+ node.state = "starting";
430
+ // @ts-expect-error
431
+ run(node.compiler, node.setupResult, nodeDone.bind(null, node));
432
+ node.state = "running";
433
+ }
434
+ }
435
+ processing = false;
436
+ if (!errored &&
437
+ running === 0 &&
438
+ nodes.every(node => node.state === "done")) {
439
+ const stats = [];
440
+ for (const node of nodes) {
441
+ const result = node.result;
442
+ if (result) {
443
+ node.result = undefined;
444
+ stats.push(result);
445
+ }
446
+ }
447
+ if (stats.length > 0) {
448
+ callback(null, new multiStats_1.default(stats));
449
+ }
450
+ }
451
+ };
452
+ processQueueWorker();
453
+ return setupResults;
454
+ };
455
+ //# sourceMappingURL=multiCompiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiCompiler.js","sourceRoot":"","sources":["../src/multiCompiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The following code is modified based on
3
+ * https://github.com/webpack/webpack/blob/4b4ca3b/lib/MultiStats.js
4
+ *
5
+ * MIT Licensed
6
+ * Author Tobias Koppers @sokra
7
+ * Copyright (c) JS Foundation and other contributors
8
+ * https://github.com/webpack/webpack/blob/main/LICENSE
9
+ */
10
+ import { Stats } from "./stats";
11
+ export default class MultiStats {
12
+ #private;
13
+ stats: Stats[];
14
+ constructor(stats: Stats[]);
15
+ get hash(): string;
16
+ hasErrors(): boolean;
17
+ hasWarnings(): boolean;
18
+ toJson(options?: any): Partial<Omit<import("@rspack/binding").JsStatsCompilation, "entrypoints"> & {
19
+ entrypoints: Record<string, import("@rspack/binding").JsStatsEntrypoint>;
20
+ filteredModules?: number | undefined;
21
+ publicPath?: string | undefined;
22
+ children?: Partial<Omit<import("@rspack/binding").JsStatsCompilation, "entrypoints"> & any>[] | undefined;
23
+ name?: string | undefined;
24
+ }>;
25
+ toString(options: any): string;
26
+ }
27
+ //# sourceMappingURL=multiStats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiStats.d.ts","sourceRoot":"","sources":["../src/multiStats.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,KAAK,EAAoB,MAAM,SAAS,CAAC;AAIlD,MAAM,CAAC,OAAO,OAAO,UAAU;;IAC9B,KAAK,EAAE,KAAK,EAAE,CAAC;gBAEH,KAAK,EAAE,KAAK,EAAE;IAI1B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,OAAO;IAwCtB,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG;;;;;;;IA2DpB,QAAQ,CAAC,OAAO,EAAE,GAAG;CAmBrB"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ /**
3
+ * The following code is modified based on
4
+ * https://github.com/webpack/webpack/blob/4b4ca3b/lib/MultiStats.js
5
+ *
6
+ * MIT Licensed
7
+ * Author Tobias Koppers @sokra
8
+ * Copyright (c) JS Foundation and other contributors
9
+ * https://github.com/webpack/webpack/blob/main/LICENSE
10
+ */
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ var _MultiStats_instances, _MultiStats_createChildOptions;
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ const util_1 = require("./util");
22
+ const identifier_1 = __importDefault(require("./util/identifier"));
23
+ class MultiStats {
24
+ constructor(stats) {
25
+ _MultiStats_instances.add(this);
26
+ this.stats = stats;
27
+ }
28
+ get hash() {
29
+ return this.stats.map(stat => stat.hash).join("");
30
+ }
31
+ hasErrors() {
32
+ return this.stats.some(stat => stat.hasErrors());
33
+ }
34
+ hasWarnings() {
35
+ return this.stats.some(stat => stat.hasWarnings());
36
+ }
37
+ toJson(options) {
38
+ options = __classPrivateFieldGet(this, _MultiStats_instances, "m", _MultiStats_createChildOptions).call(this, options, { forToString: false });
39
+ const obj = {};
40
+ obj.children = this.stats.map((stat, idx) => {
41
+ const obj = stat.toJson(options.children[idx]);
42
+ const compilationName = stat.compilation.name;
43
+ const name = compilationName &&
44
+ identifier_1.default.makePathsRelative(options.context, compilationName, stat.compilation.compiler.root);
45
+ obj.name = name;
46
+ return obj;
47
+ });
48
+ if (options.hash) {
49
+ obj.hash = obj.children.map(j => j.hash).join("");
50
+ }
51
+ const mapError = (j, obj) => {
52
+ return {
53
+ ...obj,
54
+ compilerPath: obj.compilerPath
55
+ ? `${j.name}.${obj.compilerPath}`
56
+ : j.name
57
+ };
58
+ };
59
+ if (options.errors) {
60
+ obj.errors = [];
61
+ for (const j of obj.children) {
62
+ for (const i of j.errors || []) {
63
+ obj.errors.push(mapError(j, i));
64
+ }
65
+ }
66
+ }
67
+ if (options.warnings) {
68
+ obj.warnings = [];
69
+ for (const j of obj.children) {
70
+ for (const i of j.warnings || []) {
71
+ obj.warnings.push(mapError(j, i));
72
+ }
73
+ }
74
+ }
75
+ if (options.errorsCount) {
76
+ obj.errorsCount = 0;
77
+ for (const j of obj.children) {
78
+ obj.errorsCount += j.errorsCount || 0;
79
+ }
80
+ }
81
+ if (options.warningsCount) {
82
+ obj.warningsCount = 0;
83
+ for (const j of obj.children) {
84
+ obj.warningsCount += j.warningsCount || 0;
85
+ }
86
+ }
87
+ return obj;
88
+ }
89
+ toString(options) {
90
+ options = __classPrivateFieldGet(this, _MultiStats_instances, "m", _MultiStats_createChildOptions).call(this, options, { forToString: true });
91
+ const results = this.stats.map((stat, idx) => {
92
+ const str = stat.toString(options.children[idx]);
93
+ const compilationName = stat.compilation.name;
94
+ const name = compilationName &&
95
+ identifier_1.default
96
+ .makePathsRelative(options.context, compilationName, stat.compilation.compiler.root)
97
+ .replace(/\|/g, " ");
98
+ if (!str)
99
+ return str;
100
+ return name ? `${name}:\n${(0, util_1.indent)(str, " ")}` : str;
101
+ });
102
+ return results.filter(Boolean).join("\n\n");
103
+ }
104
+ }
105
+ exports.default = MultiStats;
106
+ _MultiStats_instances = new WeakSet(), _MultiStats_createChildOptions = function _MultiStats_createChildOptions(options, context) {
107
+ if (!options) {
108
+ options = {};
109
+ }
110
+ const { children: childrenOptions = undefined, ...baseOptions } = typeof options === "string" ? { preset: options } : options;
111
+ const children = this.stats.map((stat, idx) => {
112
+ const childOptions = Array.isArray(childrenOptions)
113
+ ? childrenOptions[idx]
114
+ : childrenOptions;
115
+ return stat.compilation.createStatsOptions({
116
+ ...baseOptions,
117
+ ...(typeof childOptions === "string"
118
+ ? { preset: childOptions }
119
+ : childOptions && typeof childOptions === "object"
120
+ ? childOptions
121
+ : undefined)
122
+ }, context);
123
+ });
124
+ return {
125
+ hash: children.every(o => o.hash),
126
+ errorsCount: children.every(o => o.errorsCount),
127
+ warningsCount: children.every(o => o.warningsCount),
128
+ errors: children.every(o => o.errors),
129
+ warnings: children.every(o => o.warnings),
130
+ children
131
+ };
132
+ };
133
+ //# sourceMappingURL=multiStats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiStats.js","sourceRoot":"","sources":["../src/multiStats.ts"],"names":[],"mappings":"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"}