@rspack/core 0.0.21 → 0.0.22

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 (219) hide show
  1. package/LICENSE +1 -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/compilation.d.ts +75 -5
  11. package/dist/compilation.d.ts.map +1 -1
  12. package/dist/compilation.js +256 -8
  13. package/dist/compilation.js.map +1 -1
  14. package/dist/compiler.d.ts +24 -11
  15. package/dist/compiler.d.ts.map +1 -1
  16. package/dist/compiler.js +97 -95
  17. package/dist/compiler.js.map +1 -1
  18. package/dist/config/browserslistTargetHandler.d.ts.map +1 -1
  19. package/dist/config/browserslistTargetHandler.js +9 -4
  20. package/dist/config/browserslistTargetHandler.js.map +1 -1
  21. package/dist/config/builtins.d.ts +14 -1
  22. package/dist/config/builtins.d.ts.map +1 -1
  23. package/dist/config/builtins.js +24 -3
  24. package/dist/config/builtins.js.map +1 -1
  25. package/dist/config/cache.d.ts.map +1 -1
  26. package/dist/config/cache.js +1 -0
  27. package/dist/config/cache.js.map +1 -1
  28. package/dist/config/defaults.d.ts.map +1 -1
  29. package/dist/config/defaults.js +4 -1
  30. package/dist/config/defaults.js.map +1 -1
  31. package/dist/config/devServer.d.ts +2 -30
  32. package/dist/config/devServer.d.ts.map +1 -1
  33. package/dist/config/entry.d.ts +2 -1
  34. package/dist/config/entry.d.ts.map +1 -1
  35. package/dist/config/entry.js +24 -10
  36. package/dist/config/entry.js.map +1 -1
  37. package/dist/config/experiments.d.ts.map +1 -1
  38. package/dist/config/experiments.js +3 -2
  39. package/dist/config/experiments.js.map +1 -1
  40. package/dist/config/index.d.ts +15 -5
  41. package/dist/config/index.d.ts.map +1 -1
  42. package/dist/config/index.js +18 -16
  43. package/dist/config/index.js.map +1 -1
  44. package/dist/config/mode.d.ts +2 -2
  45. package/dist/config/mode.d.ts.map +1 -1
  46. package/dist/config/module.d.ts +16 -17
  47. package/dist/config/module.d.ts.map +1 -1
  48. package/dist/config/module.js +82 -25
  49. package/dist/config/module.js.map +1 -1
  50. package/dist/config/optimization.d.ts +23 -0
  51. package/dist/config/optimization.d.ts.map +1 -1
  52. package/dist/config/optimization.js +30 -4
  53. package/dist/config/optimization.js.map +1 -1
  54. package/dist/config/plugin.d.ts +1 -1
  55. package/dist/config/plugin.d.ts.map +1 -1
  56. package/dist/config/resolve.d.ts +7 -3
  57. package/dist/config/resolve.d.ts.map +1 -1
  58. package/dist/config/resolve.js +16 -2
  59. package/dist/config/resolve.js.map +1 -1
  60. package/dist/config/splitChunks.d.ts +112 -0
  61. package/dist/config/splitChunks.d.ts.map +1 -0
  62. package/dist/config/splitChunks.js +41 -0
  63. package/dist/config/splitChunks.js.map +1 -0
  64. package/dist/config/stats.d.ts +3 -0
  65. package/dist/config/stats.d.ts.map +1 -1
  66. package/dist/config/stats.js +1 -0
  67. package/dist/config/stats.js.map +1 -1
  68. package/dist/config/watch.d.ts +3 -7
  69. package/dist/config/watch.d.ts.map +1 -1
  70. package/dist/config/watch.js +0 -13
  71. package/dist/config/watch.js.map +1 -1
  72. package/dist/error/ConcurrentCompilationError.d.ts +15 -0
  73. package/dist/error/ConcurrentCompilationError.d.ts.map +1 -0
  74. package/dist/error/ConcurrentCompilationError.js +21 -0
  75. package/dist/error/ConcurrentCompilationError.js.map +1 -0
  76. package/dist/index.d.ts +1 -0
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +1 -0
  79. package/dist/index.js.map +1 -1
  80. package/dist/logging/Logger.d.ts +22 -6
  81. package/dist/logging/Logger.d.ts.map +1 -1
  82. package/dist/logging/Logger.js +9 -10
  83. package/dist/logging/Logger.js.map +1 -1
  84. package/dist/logging/createConsoleLogger.d.ts +9 -0
  85. package/dist/logging/createConsoleLogger.d.ts.map +1 -1
  86. package/dist/logging/createConsoleLogger.js +9 -4
  87. package/dist/logging/createConsoleLogger.js.map +1 -1
  88. package/dist/logging/runtime.d.ts +9 -0
  89. package/dist/logging/runtime.d.ts.map +1 -1
  90. package/dist/logging/runtime.js +17 -6
  91. package/dist/logging/runtime.js.map +1 -1
  92. package/dist/logging/truncateArgs.d.ts +9 -0
  93. package/dist/logging/truncateArgs.d.ts.map +1 -1
  94. package/dist/logging/truncateArgs.js +15 -5
  95. package/dist/logging/truncateArgs.js.map +1 -1
  96. package/dist/multiCompiler.d.ts +103 -0
  97. package/dist/multiCompiler.d.ts.map +1 -0
  98. package/dist/multiCompiler.js +454 -0
  99. package/dist/multiCompiler.js.map +1 -0
  100. package/dist/multiStats.d.ts +27 -0
  101. package/dist/multiStats.d.ts.map +1 -0
  102. package/dist/multiStats.js +133 -0
  103. package/dist/multiStats.js.map +1 -0
  104. package/dist/multiWatching.d.ts +36 -0
  105. package/dist/multiWatching.d.ts.map +1 -0
  106. package/dist/multiWatching.js +62 -0
  107. package/dist/multiWatching.js.map +1 -0
  108. package/dist/node/NodeEnvironmentPlugin.d.ts +8 -24
  109. package/dist/node/NodeEnvironmentPlugin.d.ts.map +1 -1
  110. package/dist/node/NodeEnvironmentPlugin.js +26 -29
  111. package/dist/node/NodeEnvironmentPlugin.js.map +1 -1
  112. package/dist/node/NodeTargetPlugin.d.ts +9 -0
  113. package/dist/node/NodeTargetPlugin.d.ts.map +1 -1
  114. package/dist/node/NodeTargetPlugin.js +9 -0
  115. package/dist/node/NodeTargetPlugin.js.map +1 -1
  116. package/dist/node/NodeWatchFileSystem.d.ts +19 -0
  117. package/dist/node/NodeWatchFileSystem.d.ts.map +1 -0
  118. package/dist/node/NodeWatchFileSystem.js +148 -0
  119. package/dist/node/NodeWatchFileSystem.js.map +1 -0
  120. package/dist/node/nodeConsole.d.ts +10 -1
  121. package/dist/node/nodeConsole.d.ts.map +1 -1
  122. package/dist/node/nodeConsole.js +42 -25
  123. package/dist/node/nodeConsole.js.map +1 -1
  124. package/dist/rspack.d.ts +5 -1
  125. package/dist/rspack.d.ts.map +1 -1
  126. package/dist/rspack.js +32 -2
  127. package/dist/rspack.js.map +1 -1
  128. package/dist/rspackOptionsApply.d.ts.map +1 -1
  129. package/dist/rspackOptionsApply.js +7 -0
  130. package/dist/rspackOptionsApply.js.map +1 -1
  131. package/dist/stats.d.ts +16 -10
  132. package/dist/stats.d.ts.map +1 -1
  133. package/dist/stats.js +58 -51
  134. package/dist/stats.js.map +1 -1
  135. package/dist/util/ArrayQueue.d.ts +54 -0
  136. package/dist/util/ArrayQueue.d.ts.map +1 -0
  137. package/dist/util/ArrayQueue.js +109 -0
  138. package/dist/util/ArrayQueue.js.map +1 -0
  139. package/dist/util/cleverMerge.d.ts.map +1 -1
  140. package/dist/util/cleverMerge.js +9 -4
  141. package/dist/util/cleverMerge.js.map +1 -1
  142. package/dist/util/createHash.d.ts +9 -0
  143. package/dist/util/createHash.d.ts.map +1 -1
  144. package/dist/util/createHash.js +9 -4
  145. package/dist/util/createHash.js.map +1 -1
  146. package/dist/util/createSource.d.ts.map +1 -1
  147. package/dist/util/createSource.js +19 -4
  148. package/dist/util/createSource.js.map +1 -1
  149. package/dist/util/fake.d.ts +29 -0
  150. package/dist/util/fake.d.ts.map +1 -0
  151. package/dist/util/fake.js +69 -0
  152. package/dist/util/fake.js.map +1 -0
  153. package/dist/util/fs.d.ts +24 -0
  154. package/dist/util/fs.d.ts.map +1 -0
  155. package/dist/util/fs.js +3 -0
  156. package/dist/util/fs.js.map +1 -0
  157. package/dist/util/hash/BatchedHash.d.ts +2 -2
  158. package/dist/util/hash/BatchedHash.d.ts.map +1 -1
  159. package/dist/util/hash/BatchedHash.js +9 -4
  160. package/dist/util/hash/BatchedHash.js.map +1 -1
  161. package/dist/util/hash/md4.d.ts +1 -1
  162. package/dist/util/hash/md4.js +9 -4
  163. package/dist/util/hash/md4.js.map +1 -1
  164. package/dist/util/hash/wasm-hash.d.ts.map +1 -1
  165. package/dist/util/hash/wasm-hash.js +9 -4
  166. package/dist/util/hash/wasm-hash.js.map +1 -1
  167. package/dist/util/hash/xxhash64.d.ts +1 -1
  168. package/dist/util/hash/xxhash64.js +9 -4
  169. package/dist/util/hash/xxhash64.js.map +1 -1
  170. package/dist/util/identifier.d.ts +8 -8
  171. package/dist/util/identifier.d.ts.map +1 -1
  172. package/dist/util/index.d.ts +2 -0
  173. package/dist/util/index.d.ts.map +1 -1
  174. package/dist/util/index.js +10 -1
  175. package/dist/util/index.js.map +1 -1
  176. package/dist/util/memoize.d.ts.map +1 -1
  177. package/dist/util/memoize.js +3 -0
  178. package/dist/util/memoize.js.map +1 -1
  179. package/dist/watching.d.ts +32 -0
  180. package/dist/watching.d.ts.map +1 -0
  181. package/dist/watching.js +282 -0
  182. package/dist/watching.js.map +1 -0
  183. package/package.json +16 -12
  184. package/dist/utils/createHash.d.ts +0 -7
  185. package/dist/utils/createHash.d.ts.map +0 -1
  186. package/dist/utils/createHash.js +0 -166
  187. package/dist/utils/createHash.js.map +0 -1
  188. package/dist/utils/createSource.d.ts +0 -6
  189. package/dist/utils/createSource.d.ts.map +0 -1
  190. package/dist/utils/createSource.js +0 -48
  191. package/dist/utils/createSource.js.map +0 -1
  192. package/dist/utils/hash/BatchedHash.d.ts +0 -16
  193. package/dist/utils/hash/BatchedHash.d.ts.map +0 -1
  194. package/dist/utils/hash/BatchedHash.js +0 -61
  195. package/dist/utils/hash/BatchedHash.js.map +0 -1
  196. package/dist/utils/hash/index.d.ts +0 -19
  197. package/dist/utils/hash/index.d.ts.map +0 -1
  198. package/dist/utils/hash/index.js +0 -28
  199. package/dist/utils/hash/index.js.map +0 -1
  200. package/dist/utils/hash/md4.d.ts +0 -3
  201. package/dist/utils/hash/md4.d.ts.map +0 -1
  202. package/dist/utils/hash/md4.js +0 -13
  203. package/dist/utils/hash/md4.js.map +0 -1
  204. package/dist/utils/hash/wasm-hash.d.ts +0 -7
  205. package/dist/utils/hash/wasm-hash.d.ts.map +0 -1
  206. package/dist/utils/hash/wasm-hash.js +0 -162
  207. package/dist/utils/hash/wasm-hash.js.map +0 -1
  208. package/dist/utils/hash/xxhash64.d.ts +0 -3
  209. package/dist/utils/hash/xxhash64.d.ts.map +0 -1
  210. package/dist/utils/hash/xxhash64.js +0 -13
  211. package/dist/utils/hash/xxhash64.js.map +0 -1
  212. package/dist/utils/index.d.ts +0 -6
  213. package/dist/utils/index.d.ts.map +0 -1
  214. package/dist/utils/index.js +0 -18
  215. package/dist/utils/index.js.map +0 -1
  216. package/dist/utils/memoize.d.ts +0 -2
  217. package/dist/utils/memoize.d.ts.map +0 -1
  218. package/dist/utils/memoize.js +0 -22
  219. package/dist/utils/memoize.js.map +0 -1
@@ -1,11 +1,16 @@
1
1
  "use strict";
2
- /*
3
- MIT License http://www.opensource.org/licenses/mit-license.php
4
- Author Tobias Koppers @sokra
5
- */
2
+ /**
3
+ * The following code is modified based on
4
+ * https://github.com/webpack/webpack/blob/4b4ca3b/lib/logging/truncateArgs.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
+ */
6
11
  Object.defineProperty(exports, "__esModule", { value: true });
7
12
  exports.truncateArgs = void 0;
8
- const arraySum = array => {
13
+ const arraySum = (array) => {
9
14
  let sum = 0;
10
15
  for (const item of array)
11
16
  sum += item;
@@ -16,7 +21,9 @@ const arraySum = array => {
16
21
  * @param {number} maxLength maximum length of args including spaces between
17
22
  * @returns {string[]} truncated args
18
23
  */
24
+ // @ts-expect-error
19
25
  const truncateArgs = (args, maxLength) => {
26
+ // @ts-expect-error
20
27
  const lengths = args.map(a => `${a}`.length);
21
28
  const availableLength = maxLength - lengths.length + 1;
22
29
  if (availableLength > 0 && args.length === 1) {
@@ -31,6 +38,7 @@ const truncateArgs = (args, maxLength) => {
31
38
  }
32
39
  }
33
40
  // Check if there is space for at least 4 chars per arg
41
+ // @ts-expect-error
34
42
  if (availableLength < arraySum(lengths.map(i => Math.min(i, 6)))) {
35
43
  // remove args
36
44
  if (args.length > 1)
@@ -44,6 +52,7 @@ const truncateArgs = (args, maxLength) => {
44
52
  // Try to remove chars from the longest items until it fits
45
53
  while (currentLength > availableLength) {
46
54
  const maxLength = Math.max(...lengths);
55
+ // @ts-expect-error
47
56
  const shorterItems = lengths.filter(l => l !== maxLength);
48
57
  const nextToMaxLength = shorterItems.length > 0 ? Math.max(...shorterItems) : 0;
49
58
  const maxReduce = maxLength - nextToMaxLength;
@@ -60,6 +69,7 @@ const truncateArgs = (args, maxLength) => {
60
69
  }
61
70
  }
62
71
  // Return args reduced to length in lengths
72
+ // @ts-expect-error
63
73
  return args.map((a, i) => {
64
74
  const str = `${a}`;
65
75
  const length = lengths[i];
@@ -1 +1 @@
1
- {"version":3,"file":"truncateArgs.js","sourceRoot":"","sources":["../../src/logging/truncateArgs.ts"],"names":[],"mappings":";AAAA;;;EAGE;;;AAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE;IACxB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,GAAG,IAAI,IAAI,CAAC;IACtC,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvD,IAAI,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7C,IAAI,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;YACtC,OAAO,IAAI,CAAC;SACZ;aAAM,IAAI,eAAe,GAAG,CAAC,EAAE;YAC/B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC;SACrD;aAAM;YACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;SACzC;KACD;IAED,uDAAuD;IACvD,IAAI,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QACjE,cAAc;QACd,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAClB,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC;KACV;IAED,IAAI,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEtC,mCAAmC;IACnC,IAAI,aAAa,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IAElD,2DAA2D;IAC3D,OAAO,aAAa,GAAG,eAAe,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAC1D,MAAM,eAAe,GACpB,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;QAC9C,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACpD,IAAI,OAAO,GAAG,aAAa,GAAG,eAAe,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;gBACnE,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;gBACrB,aAAa,IAAI,MAAM,CAAC;gBACxB,OAAO,IAAI,MAAM,CAAC;gBAClB,QAAQ,EAAE,CAAC;aACX;SACD;KACD;IAED,2CAA2C;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;YAC1B,OAAO,GAAG,CAAC;SACX;aAAM,IAAI,MAAM,GAAG,CAAC,EAAE;YACtB,OAAO,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACtC;aAAM,IAAI,MAAM,GAAG,CAAC,EAAE;YACtB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;SAC1B;aAAM;YACN,OAAO,EAAE,CAAC;SACV;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEO,oCAAY"}
1
+ {"version":3,"file":"truncateArgs.js","sourceRoot":"","sources":["../../src/logging/truncateArgs.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,MAAM,QAAQ,GAAG,CAAC,KAAU,EAAE,EAAE;IAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,GAAG,IAAI,IAAI,CAAC;IACtC,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AAEF;;;;GAIG;AACH,mBAAmB;AACnB,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;IACxC,mBAAmB;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvD,IAAI,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7C,IAAI,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;YACtC,OAAO,IAAI,CAAC;SACZ;aAAM,IAAI,eAAe,GAAG,CAAC,EAAE;YAC/B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC;SACrD;aAAM;YACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;SACzC;KACD;IAED,uDAAuD;IACvD,mBAAmB;IACnB,IAAI,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QACjE,cAAc;QACd,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAClB,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC;KACV;IAED,IAAI,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEtC,mCAAmC;IACnC,IAAI,aAAa,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IAElD,2DAA2D;IAC3D,OAAO,aAAa,GAAG,eAAe,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACvC,mBAAmB;QACnB,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAC1D,MAAM,eAAe,GACpB,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;QAC9C,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACpD,IAAI,OAAO,GAAG,aAAa,GAAG,eAAe,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;gBACnE,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;gBACrB,aAAa,IAAI,MAAM,CAAC;gBACxB,OAAO,IAAI,MAAM,CAAC;gBAClB,QAAQ,EAAE,CAAC;aACX;SACD;KACD;IAED,2CAA2C;IAC3C,mBAAmB;IACnB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;YAC1B,OAAO,GAAG,CAAC;SACX;aAAM,IAAI,MAAM,GAAG,CAAC,EAAE;YACtB,OAAO,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACtC;aAAM,IAAI,MAAM,GAAG,CAAC,EAAE;YACtB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;SAC1B;aAAM;YACN,OAAO,EAAE,CAAC;SACV;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEO,oCAAY"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * The following code is modified based on
3
+ * https://github.com/webpack/webpack/blob/4b4ca3b/lib/MultiCompiler.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 { Compilation, Compiler, RspackOptions, RspackOptionsNormalized, Stats } from ".";
11
+ import ResolverFactory from "./ResolverFactory";
12
+ import { WatchFileSystem } from "./util/fs";
13
+ import Watching from "./watching";
14
+ import { AsyncSeriesHook, Callback, MultiHook, SyncHook } from "tapable";
15
+ import MultiStats from "./multiStats";
16
+ import MultiWatching from "./multiWatching";
17
+ import { WatchOptions } from "./config/watch";
18
+ import { IFs } from "memfs";
19
+ declare type Any = any;
20
+ export interface Node<T> {
21
+ compiler: Compiler;
22
+ children: Node<T>[];
23
+ parents: Node<T>[];
24
+ setupResult?: T;
25
+ result?: Stats;
26
+ state: "pending" | "blocked" | "queued" | "starting" | "running" | "running-outdated" | "done";
27
+ }
28
+ export declare type MultiCompilerOptions = {
29
+ /**
30
+ * how many Compilers are allows to run at the same time in parallel
31
+ */
32
+ parallelism?: number;
33
+ } & RspackOptions[];
34
+ export declare class MultiCompiler {
35
+ #private;
36
+ context: string;
37
+ compilers: Compiler[];
38
+ compilation: Compilation;
39
+ dependencies: WeakMap<Compiler, string[]>;
40
+ hooks: {
41
+ done: SyncHook<MultiStats>;
42
+ invalid: MultiHook<SyncHook<[string | null, number]>>;
43
+ run: MultiHook<AsyncSeriesHook<[Compiler]>>;
44
+ watchClose: SyncHook<Any>;
45
+ watchRun: MultiHook<Any>;
46
+ infrastructureLog: MultiHook<Any>;
47
+ };
48
+ name: string;
49
+ infrastructureLogger: Any;
50
+ _options: {
51
+ parallelism?: number;
52
+ };
53
+ root: Compiler;
54
+ resolverFactory: ResolverFactory;
55
+ running: boolean;
56
+ watching: Watching;
57
+ watchMode: boolean;
58
+ constructor(compilers: Compiler[] | Record<string, Compiler>, options?: MultiCompilerOptions);
59
+ get options(): RspackOptionsNormalized[] & {
60
+ parallelism?: number | undefined;
61
+ };
62
+ get outputPath(): string;
63
+ get inputFileSystem(): void;
64
+ get outputFileSystem(): IFs;
65
+ get watchFileSystem(): WatchFileSystem;
66
+ get intermediateFileSystem(): any;
67
+ /**
68
+ * @param {InputFileSystem} value the new input file system
69
+ */
70
+ set inputFileSystem(value: void);
71
+ /**
72
+ * @param {OutputFileSystem} value the new output file system
73
+ */
74
+ set outputFileSystem(value: IFs);
75
+ set watchFileSystem(value: WatchFileSystem);
76
+ /**
77
+ * @param {IntermediateFileSystem} value the new intermediate file system
78
+ */
79
+ set intermediateFileSystem(value: any);
80
+ getInfrastructureLogger(name: string): import("./logging/Logger").Logger;
81
+ /**
82
+ * @param {Compiler} compiler the child compiler
83
+ * @param {string[]} dependencies its dependencies
84
+ * @returns {void}
85
+ */
86
+ setDependencies(compiler: Compiler, dependencies: string[]): void;
87
+ /**
88
+ * @param {Callback<MultiStats>} callback signals when the validation is complete
89
+ * @returns {boolean} true if the dependencies are valid
90
+ */
91
+ validateDependencies(callback: Callback<Error, MultiStats>): boolean;
92
+ /**
93
+ * @param {WatchOptions|WatchOptions[]} watchOptions the watcher's options
94
+ * @param {Callback<MultiStats>} handler signals when the call finishes
95
+ * @returns {MultiWatching} a compiler watcher
96
+ */
97
+ watch(watchOptions: WatchOptions, handler: Callback<Error, MultiStats>): MultiWatching;
98
+ run(callback: Callback<Error, MultiStats>): void;
99
+ purgeInputFileSystem(): void;
100
+ close(callback: Callback<Error, void>): void;
101
+ }
102
+ export {};
103
+ //# sourceMappingURL=multiCompiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiCompiler.d.ts","sourceRoot":"","sources":["../src/multiCompiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,454 @@
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
+ const compilerToNode = new Map();
306
+ for (const node of nodes)
307
+ compilerToNode.set(node.compiler.name, node);
308
+ for (const node of nodes) {
309
+ const dependencies = this.dependencies.get(node.compiler);
310
+ if (!dependencies)
311
+ continue;
312
+ for (const dep of dependencies) {
313
+ const parent = compilerToNode.get(dep);
314
+ node.parents.push(parent);
315
+ parent.children.push(node);
316
+ }
317
+ }
318
+ const queue = new ArrayQueue_1.default();
319
+ for (const node of nodes) {
320
+ if (node.parents.length === 0) {
321
+ node.state = "queued";
322
+ queue.enqueue(node);
323
+ }
324
+ }
325
+ let errored = false;
326
+ let running = 0;
327
+ const parallelism = this._options.parallelism;
328
+ /**
329
+ * @param {Node} node node
330
+ * @param {Error=} err error
331
+ * @param {Stats=} stats result
332
+ * @returns {void}
333
+ */
334
+ const nodeDone = (node, err, stats) => {
335
+ if (errored)
336
+ return;
337
+ if (err) {
338
+ errored = true;
339
+ return neo_async_1.default.each(nodes, (node, callback) => {
340
+ if (node.compiler.watching) {
341
+ node.compiler.watching.close(callback);
342
+ }
343
+ else {
344
+ callback();
345
+ }
346
+ }, () => callback(err));
347
+ }
348
+ node.result = stats;
349
+ running--;
350
+ if (node.state === "running") {
351
+ node.state = "done";
352
+ for (const child of node.children) {
353
+ if (child.state === "blocked")
354
+ queue.enqueue(child);
355
+ }
356
+ }
357
+ else if (node.state === "running-outdated") {
358
+ node.state = "blocked";
359
+ queue.enqueue(node);
360
+ }
361
+ processQueue();
362
+ };
363
+ /**
364
+ * @param {Node} node node
365
+ * @returns {void}
366
+ */
367
+ const nodeInvalidFromParent = (node) => {
368
+ if (node.state === "done") {
369
+ node.state = "blocked";
370
+ }
371
+ else if (node.state === "running") {
372
+ node.state = "running-outdated";
373
+ }
374
+ for (const child of node.children) {
375
+ nodeInvalidFromParent(child);
376
+ }
377
+ };
378
+ /**
379
+ * @param {Node} node node
380
+ * @returns {void}
381
+ */
382
+ const nodeInvalid = (node) => {
383
+ if (node.state === "done") {
384
+ node.state = "pending";
385
+ }
386
+ else if (node.state === "running") {
387
+ node.state = "running-outdated";
388
+ }
389
+ for (const child of node.children) {
390
+ nodeInvalidFromParent(child);
391
+ }
392
+ };
393
+ /**
394
+ * @param {Node} node node
395
+ * @returns {void}
396
+ */
397
+ // @ts-expect-error
398
+ const nodeChange = node => {
399
+ nodeInvalid(node);
400
+ if (node.state === "pending") {
401
+ node.state = "blocked";
402
+ }
403
+ if (node.state === "blocked") {
404
+ queue.enqueue(node);
405
+ processQueue();
406
+ }
407
+ };
408
+ const setupResults = [];
409
+ nodes.forEach((node, i) => {
410
+ setupResults.push((node.setupResult = setup(node.compiler, i,
411
+ // @ts-expect-error
412
+ nodeDone.bind(null, node), () => node.state !== "starting" && node.state !== "running", () => nodeChange(node), () => nodeInvalid(node))));
413
+ });
414
+ let processing = true;
415
+ const processQueue = () => {
416
+ if (processing)
417
+ return;
418
+ processing = true;
419
+ process.nextTick(processQueueWorker);
420
+ };
421
+ const processQueueWorker = () => {
422
+ while (running < parallelism && queue.length > 0 && !errored) {
423
+ const node = queue.dequeue();
424
+ if (node.state === "queued" ||
425
+ (node.state === "blocked" &&
426
+ node.parents.every(p => p.state === "done"))) {
427
+ running++;
428
+ node.state = "starting";
429
+ // @ts-expect-error
430
+ run(node.compiler, node.setupResult, nodeDone.bind(null, node));
431
+ node.state = "running";
432
+ }
433
+ }
434
+ processing = false;
435
+ if (!errored &&
436
+ running === 0 &&
437
+ nodes.every(node => node.state === "done")) {
438
+ const stats = [];
439
+ for (const node of nodes) {
440
+ const result = node.result;
441
+ if (result) {
442
+ node.result = undefined;
443
+ stats.push(result);
444
+ }
445
+ }
446
+ if (stats.length > 0) {
447
+ callback(null, new multiStats_1.default(stats));
448
+ }
449
+ }
450
+ };
451
+ processQueueWorker();
452
+ return setupResults;
453
+ };
454
+ //# sourceMappingURL=multiCompiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiCompiler.js","sourceRoot":"","sources":["../src/multiCompiler.ts"],"names":[],"mappings":"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"}