@unpackjs/core 1.5.4 → 1.6.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 (238) hide show
  1. package/bin/openChrome.applescript +94 -0
  2. package/compiled/chokidar/index.d.ts +327 -0
  3. package/compiled/chokidar/index.js +1773 -0
  4. package/compiled/chokidar/license +21 -0
  5. package/compiled/chokidar/package.json +1 -0
  6. package/compiled/commander/index.d.ts +971 -0
  7. package/compiled/commander/index.js +2190 -0
  8. package/compiled/commander/license +22 -0
  9. package/compiled/commander/package.json +1 -0
  10. package/compiled/css-loader/api.js +85 -0
  11. package/compiled/css-loader/getUrl.js +26 -0
  12. package/compiled/css-loader/index.d.ts +1 -0
  13. package/compiled/css-loader/index.js +8004 -0
  14. package/compiled/css-loader/license +20 -0
  15. package/compiled/css-loader/noSourceMaps.js +5 -0
  16. package/compiled/css-loader/package.json +1 -0
  17. package/compiled/css-loader/sourceMaps.js +16 -0
  18. package/compiled/fast-glob/index.d.ts +237 -0
  19. package/compiled/fast-glob/index.js +5726 -0
  20. package/compiled/fast-glob/license +21 -0
  21. package/compiled/fast-glob/package.json +1 -0
  22. package/compiled/less-loader/index.d.ts +1 -0
  23. package/compiled/less-loader/index.js +340 -0
  24. package/compiled/less-loader/license +20 -0
  25. package/compiled/less-loader/package.json +1 -0
  26. package/compiled/line-diff/index.d.ts +1 -0
  27. package/compiled/line-diff/index.js +160 -0
  28. package/compiled/line-diff/license +21 -0
  29. package/compiled/line-diff/package.json +1 -0
  30. package/compiled/log-update/index.d.ts +1 -0
  31. package/compiled/log-update/index.js +1970 -0
  32. package/compiled/log-update/package.json +1 -0
  33. package/compiled/portfinder/index.d.ts +64 -0
  34. package/compiled/portfinder/index.js +3401 -0
  35. package/compiled/portfinder/license +22 -0
  36. package/compiled/portfinder/package.json +1 -0
  37. package/compiled/postcss-loader/index.d.ts +1 -0
  38. package/compiled/postcss-loader/index.js +94945 -0
  39. package/compiled/postcss-loader/license +20 -0
  40. package/compiled/postcss-loader/package.json +1 -0
  41. package/compiled/sass-loader/index.d.ts +961 -0
  42. package/compiled/sass-loader/index.js +5610 -0
  43. package/compiled/sass-loader/index1.js +65 -0
  44. package/compiled/sass-loader/license +20 -0
  45. package/compiled/sass-loader/package.json +1 -0
  46. package/compiled/sass-loader/sass.node.js +12 -0
  47. package/compiled/semver/index.d.ts +1 -0
  48. package/compiled/semver/index.js +1940 -0
  49. package/compiled/semver/license +15 -0
  50. package/compiled/semver/package.json +1 -0
  51. package/compiled/style-loader/index.d.ts +1 -0
  52. package/compiled/style-loader/index.js +370 -0
  53. package/compiled/style-loader/license +20 -0
  54. package/compiled/style-loader/package.json +1 -0
  55. package/compiled/style-loader/runtime/injectStylesIntoLinkTag.js +29 -0
  56. package/compiled/style-loader/runtime/injectStylesIntoStyleTag.js +84 -0
  57. package/compiled/style-loader/runtime/insertBySelector.js +34 -0
  58. package/compiled/style-loader/runtime/insertStyleElement.js +10 -0
  59. package/compiled/style-loader/runtime/isEqualLocals.js +28 -0
  60. package/compiled/style-loader/runtime/isOldIE.js +17 -0
  61. package/compiled/style-loader/runtime/setAttributesWithAttributes.js +13 -0
  62. package/compiled/style-loader/runtime/setAttributesWithAttributesAndNonce.js +9 -0
  63. package/compiled/style-loader/runtime/setAttributesWithoutAttributes.js +10 -0
  64. package/compiled/style-loader/runtime/singletonStyleDomAPI.js +86 -0
  65. package/compiled/style-loader/runtime/styleDomAPI.js +61 -0
  66. package/compiled/style-loader/runtime/styleTagTransform.js +14 -0
  67. package/compiled/webpack-bundle-analyzer/index.d.ts +1 -0
  68. package/compiled/webpack-bundle-analyzer/index.js +13276 -0
  69. package/compiled/webpack-bundle-analyzer/license +20 -0
  70. package/compiled/webpack-bundle-analyzer/package.json +1 -0
  71. package/compiled/webpack-bundle-analyzer/public/viewer.js +16 -0
  72. package/compiled/webpack-bundle-analyzer/public/viewer.js.LICENSE.txt +10 -0
  73. package/compiled/webpack-merge/index.d.ts +31 -0
  74. package/compiled/webpack-merge/index.js +1200 -0
  75. package/compiled/webpack-merge/license +20 -0
  76. package/compiled/webpack-merge/package.json +1 -0
  77. package/dist/bundleRequire.cjs +200 -0
  78. package/dist/bundleRequire.d.ts +5 -0
  79. package/dist/bundleRequire.d.ts.map +1 -0
  80. package/dist/bundleRequire.js +173 -0
  81. package/dist/bundler-config/chunkSplit.cjs +151 -0
  82. package/dist/bundler-config/chunkSplit.d.ts +6 -0
  83. package/dist/bundler-config/chunkSplit.d.ts.map +1 -0
  84. package/dist/bundler-config/chunkSplit.js +127 -0
  85. package/dist/bundler-config/css.cjs +167 -0
  86. package/dist/bundler-config/css.d.ts +6 -0
  87. package/dist/bundler-config/css.d.ts.map +1 -0
  88. package/dist/bundler-config/css.js +158 -0
  89. package/dist/bundler-config/experimentCss.cjs +166 -0
  90. package/dist/bundler-config/experimentCss.d.ts +6 -0
  91. package/dist/bundler-config/experimentCss.d.ts.map +1 -0
  92. package/dist/bundler-config/experimentCss.js +157 -0
  93. package/dist/bundler-config/helper.cjs +83 -0
  94. package/dist/bundler-config/helper.d.ts +8 -0
  95. package/dist/bundler-config/helper.d.ts.map +1 -0
  96. package/dist/bundler-config/helper.js +58 -0
  97. package/dist/bundler-config/index.cjs +204 -0
  98. package/dist/bundler-config/index.d.ts +3 -0
  99. package/dist/bundler-config/index.d.ts.map +1 -0
  100. package/dist/bundler-config/index.js +180 -0
  101. package/dist/colors.cjs +60 -0
  102. package/dist/colors.d.ts +6 -0
  103. package/dist/colors.d.ts.map +1 -0
  104. package/dist/colors.js +40 -0
  105. package/dist/{config/index.cjs → config.cjs} +21 -47
  106. package/dist/{config/index.d.ts → config.d.ts} +4 -3
  107. package/dist/config.d.ts.map +1 -0
  108. package/dist/{config/index.js → config.js} +18 -52
  109. package/dist/constants.cjs +86 -0
  110. package/dist/constants.d.ts +25 -0
  111. package/dist/constants.d.ts.map +1 -0
  112. package/dist/constants.js +61 -0
  113. package/dist/createUnpack.cjs +102 -0
  114. package/dist/createUnpack.d.ts +7 -0
  115. package/dist/createUnpack.d.ts.map +1 -0
  116. package/dist/createUnpack.js +78 -0
  117. package/dist/index.cjs +26 -48
  118. package/dist/index.d.ts +7 -7
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +8 -52
  121. package/dist/lightningcss/cache.cjs +36 -0
  122. package/dist/lightningcss/cache.d.ts +2 -0
  123. package/dist/lightningcss/cache.d.ts.map +1 -0
  124. package/dist/lightningcss/cache.js +22 -0
  125. package/dist/lightningcss/index.cjs +21 -0
  126. package/dist/lightningcss/index.d.ts +2 -0
  127. package/dist/lightningcss/index.d.ts.map +1 -0
  128. package/dist/lightningcss/index.js +10 -0
  129. package/dist/lightningcss/loader.cjs +56 -0
  130. package/dist/lightningcss/loader.d.ts +5 -0
  131. package/dist/lightningcss/loader.d.ts.map +1 -0
  132. package/dist/lightningcss/loader.js +36 -0
  133. package/dist/lightningcss/minimizer.cjs +114 -0
  134. package/dist/lightningcss/minimizer.d.ts +11 -0
  135. package/dist/lightningcss/minimizer.d.ts.map +1 -0
  136. package/dist/lightningcss/minimizer.js +90 -0
  137. package/dist/logger.cjs +103 -0
  138. package/dist/logger.d.ts +3 -0
  139. package/dist/logger.d.ts.map +1 -0
  140. package/dist/logger.js +79 -0
  141. package/dist/openBrowser.cjs +85 -0
  142. package/dist/openBrowser.d.ts +2 -0
  143. package/dist/openBrowser.d.ts.map +1 -0
  144. package/dist/openBrowser.js +61 -0
  145. package/dist/plugin-progress/rspack.cjs +74 -0
  146. package/dist/plugin-progress/rspack.d.ts +9 -0
  147. package/dist/plugin-progress/rspack.d.ts.map +1 -0
  148. package/dist/plugin-progress/rspack.js +50 -0
  149. package/dist/plugin-progress/webpack.cjs +84 -0
  150. package/dist/plugin-progress/webpack.d.ts +9 -0
  151. package/dist/plugin-progress/webpack.d.ts.map +1 -0
  152. package/dist/plugin-progress/webpack.js +60 -0
  153. package/dist/plugin.cjs +33 -0
  154. package/dist/plugin.d.ts +3 -0
  155. package/dist/plugin.d.ts.map +1 -0
  156. package/dist/plugin.js +19 -0
  157. package/dist/progressBar.cjs +70 -0
  158. package/dist/progressBar.d.ts +14 -0
  159. package/dist/progressBar.d.ts.map +1 -0
  160. package/dist/progressBar.js +46 -0
  161. package/dist/reporter.cjs +133 -0
  162. package/dist/reporter.d.ts +9 -0
  163. package/dist/reporter.d.ts.map +1 -0
  164. package/dist/reporter.js +109 -0
  165. package/dist/run/build.cjs +77 -0
  166. package/dist/run/build.d.ts +3 -0
  167. package/dist/run/build.d.ts.map +1 -0
  168. package/dist/run/build.js +53 -0
  169. package/dist/run/dev.cjs +107 -0
  170. package/dist/run/dev.d.ts +3 -0
  171. package/dist/run/dev.d.ts.map +1 -0
  172. package/dist/run/dev.js +83 -0
  173. package/dist/run/index.cjs +23 -0
  174. package/dist/run/index.d.ts +3 -0
  175. package/dist/run/index.d.ts.map +1 -0
  176. package/dist/run/index.js +11 -0
  177. package/dist/thread-loader/WorkerError.cjs +41 -0
  178. package/dist/thread-loader/WorkerError.js +31 -0
  179. package/dist/thread-loader/WorkerPool.cjs +407 -0
  180. package/dist/thread-loader/WorkerPool.js +387 -0
  181. package/dist/thread-loader/index.cjs +100 -0
  182. package/dist/thread-loader/index.js +85 -0
  183. package/dist/thread-loader/readBuffer.cjs +55 -0
  184. package/dist/thread-loader/readBuffer.js +45 -0
  185. package/dist/thread-loader/serializer.cjs +46 -0
  186. package/dist/thread-loader/serializer.js +31 -0
  187. package/dist/thread-loader/utils.cjs +84 -0
  188. package/dist/thread-loader/utils.js +60 -0
  189. package/dist/thread-loader/worker.cjs +377 -0
  190. package/dist/thread-loader/worker.js +382 -0
  191. package/dist/thread-loader/workerPools.cjs +57 -0
  192. package/dist/thread-loader/workerPools.js +33 -0
  193. package/dist/typed-css-modules/index.cjs +21 -0
  194. package/dist/typed-css-modules/index.d.ts +2 -0
  195. package/dist/typed-css-modules/index.d.ts.map +1 -0
  196. package/dist/typed-css-modules/index.js +10 -0
  197. package/dist/typed-css-modules/loader.cjs +195 -0
  198. package/dist/typed-css-modules/loader.d.ts +10 -0
  199. package/dist/typed-css-modules/loader.d.ts.map +1 -0
  200. package/dist/typed-css-modules/loader.js +170 -0
  201. package/dist/typed-css-modules/plugin.cjs +96 -0
  202. package/dist/typed-css-modules/plugin.d.ts +16 -0
  203. package/dist/typed-css-modules/plugin.d.ts.map +1 -0
  204. package/dist/typed-css-modules/plugin.js +72 -0
  205. package/dist/typed-css-modules/utils.cjs +45 -0
  206. package/dist/typed-css-modules/utils.d.ts +6 -0
  207. package/dist/typed-css-modules/utils.d.ts.map +1 -0
  208. package/dist/typed-css-modules/utils.js +31 -0
  209. package/dist/types/chunkSplit.cjs +15 -0
  210. package/dist/types/chunkSplit.d.ts +35 -0
  211. package/dist/types/chunkSplit.d.ts.map +1 -0
  212. package/dist/types/chunkSplit.js +9 -0
  213. package/dist/types/config.cjs +15 -0
  214. package/dist/types/config.d.ts +176 -0
  215. package/dist/types/config.d.ts.map +1 -0
  216. package/dist/types/config.js +9 -0
  217. package/dist/types/index.cjs +29 -0
  218. package/dist/types/index.d.ts +16 -0
  219. package/dist/types/index.d.ts.map +1 -0
  220. package/dist/types/index.js +14 -0
  221. package/dist/types/lightningcss.cjs +15 -0
  222. package/dist/types/lightningcss.d.ts +11 -0
  223. package/dist/types/lightningcss.d.ts.map +1 -0
  224. package/dist/types/lightningcss.js +9 -0
  225. package/dist/types/logger.cjs +35 -0
  226. package/dist/types/logger.d.ts +16 -0
  227. package/dist/types/logger.d.ts.map +1 -0
  228. package/dist/types/logger.js +21 -0
  229. package/dist/types/plugin.cjs +15 -0
  230. package/dist/types/plugin.d.ts +18 -0
  231. package/dist/types/plugin.d.ts.map +1 -0
  232. package/dist/types/plugin.js +9 -0
  233. package/dist/utils.cjs +286 -0
  234. package/dist/utils.d.ts +43 -0
  235. package/dist/utils.d.ts.map +1 -0
  236. package/dist/utils.js +235 -0
  237. package/package.json +95 -6
  238. package/dist/config/index.d.ts.map +0 -1
@@ -0,0 +1,23 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var run_exports = {};
16
+ module.exports = __toCommonJS(run_exports);
17
+ __reExport(run_exports, require("./build.cjs"), module.exports);
18
+ __reExport(run_exports, require("./dev.cjs"), module.exports);
19
+ // Annotate the CommonJS export names for ESM import in node:
20
+ 0 && (module.exports = {
21
+ ...require("./build.cjs"),
22
+ ...require("./dev.cjs")
23
+ });
@@ -0,0 +1,3 @@
1
+ export * from './build';
2
+ export * from './dev';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/run/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { createRequire } from 'node:module';
2
+ var require = createRequire(import.meta['url']);
3
+
4
+ import path from "path";
5
+ import { fileURLToPath } from "url";
6
+ var getFilename = () => fileURLToPath(import.meta.url);
7
+ var getDirname = () => path.dirname(getFilename());
8
+ var __dirname = /* @__PURE__ */ getDirname();
9
+ var __filename = /* @__PURE__ */ getFilename();
10
+ export * from "./build.js";
11
+ export * from "./dev.js";
@@ -0,0 +1,41 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var WorkerError_exports = {};
19
+ __export(WorkerError_exports, {
20
+ default: () => WorkerError_default
21
+ });
22
+ module.exports = __toCommonJS(WorkerError_exports);
23
+ const stack = (err, worker, workerId) => {
24
+ const originError = (err.stack || "").split("\n").filter((line) => line.trim().startsWith("at"));
25
+ const workerError = worker.split("\n").filter((line) => line.trim().startsWith("at"));
26
+ const diff = workerError.slice(0, workerError.length - originError.length).join("\n");
27
+ originError.unshift(diff);
28
+ originError.unshift(err.message);
29
+ originError.unshift(`Thread Loader (Worker ${workerId})`);
30
+ return originError.join("\n");
31
+ };
32
+ class WorkerError extends Error {
33
+ constructor(err, workerId) {
34
+ super(err);
35
+ this.name = err.name;
36
+ this.message = err.message;
37
+ Error.captureStackTrace(this, this.constructor);
38
+ this.stack = stack(err, this.stack, workerId);
39
+ }
40
+ }
41
+ var WorkerError_default = WorkerError;
@@ -0,0 +1,31 @@
1
+ import { createRequire } from 'node:module';
2
+ var require = createRequire(import.meta['url']);
3
+
4
+ import path from "path";
5
+ import { fileURLToPath } from "url";
6
+ var getFilename = () => fileURLToPath(import.meta.url);
7
+ var getDirname = () => path.dirname(getFilename());
8
+ var __dirname = /* @__PURE__ */ getDirname();
9
+ var __filename = /* @__PURE__ */ getFilename();
10
+ const stack = (err, worker, workerId) => {
11
+ const originError = (err.stack || "").split("\n").filter((line) => line.trim().startsWith("at"));
12
+ const workerError = worker.split("\n").filter((line) => line.trim().startsWith("at"));
13
+ const diff = workerError.slice(0, workerError.length - originError.length).join("\n");
14
+ originError.unshift(diff);
15
+ originError.unshift(err.message);
16
+ originError.unshift(`Thread Loader (Worker ${workerId})`);
17
+ return originError.join("\n");
18
+ };
19
+ class WorkerError extends Error {
20
+ constructor(err, workerId) {
21
+ super(err);
22
+ this.name = err.name;
23
+ this.message = err.message;
24
+ Error.captureStackTrace(this, this.constructor);
25
+ this.stack = stack(err, this.stack, workerId);
26
+ }
27
+ }
28
+ var WorkerError_default = WorkerError;
29
+ export {
30
+ WorkerError_default as default
31
+ };
@@ -0,0 +1,407 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var WorkerPool_exports = {};
29
+ __export(WorkerPool_exports, {
30
+ default: () => WorkerPool
31
+ });
32
+ module.exports = __toCommonJS(WorkerPool_exports);
33
+ var import_node_child_process = __toESM(require("node:child_process"));
34
+ var import_WorkerError = __toESM(require("./WorkerError.cjs"));
35
+ var import_readBuffer = __toESM(require("./readBuffer.cjs"));
36
+ var import_serializer = require("./serializer.cjs");
37
+ const asyncMapSeries = require("neo-async/mapSeries.js");
38
+ const asyncQueue = require("neo-async/queue.js");
39
+ const workerPath = require.resolve("./worker");
40
+ let workerId = 0;
41
+ class PoolWorker {
42
+ constructor(options, onJobDone) {
43
+ this.disposed = false;
44
+ this.nextJobId = 0;
45
+ this.jobs = /* @__PURE__ */ Object.create(null);
46
+ this.activeJobs = 0;
47
+ this.onJobDone = onJobDone;
48
+ this.id = workerId;
49
+ workerId += 1;
50
+ const sanitizedNodeArgs = (options.nodeArgs || []).filter((opt) => !!opt);
51
+ this.worker = import_node_child_process.default.spawn(
52
+ process.execPath,
53
+ [].concat(sanitizedNodeArgs).concat(workerPath, options.parallelJobs),
54
+ {
55
+ detached: true,
56
+ stdio: ["ignore", "pipe", "pipe", "pipe", "pipe"]
57
+ }
58
+ );
59
+ this.worker.unref();
60
+ if (!this.worker.stdio) {
61
+ throw new Error(
62
+ `Failed to create the worker pool with workerId: ${workerId} and ${""}configuration: ${JSON.stringify(
63
+ options
64
+ )}. Please verify if you hit the OS open files limit.`
65
+ );
66
+ }
67
+ const [, , , readPipe, writePipe] = this.worker.stdio;
68
+ this.readPipe = readPipe;
69
+ this.writePipe = writePipe;
70
+ this.listenStdOutAndErrFromWorker(this.worker.stdout, this.worker.stderr);
71
+ this.readNextMessage();
72
+ }
73
+ listenStdOutAndErrFromWorker(workerStdout, workerStderr) {
74
+ if (workerStdout) {
75
+ workerStdout.on("data", this.writeToStdout);
76
+ }
77
+ if (workerStderr) {
78
+ workerStderr.on("data", this.writeToStderr);
79
+ }
80
+ }
81
+ ignoreStdOutAndErrFromWorker(workerStdout, workerStderr) {
82
+ if (workerStdout) {
83
+ workerStdout.removeListener("data", this.writeToStdout);
84
+ }
85
+ if (workerStderr) {
86
+ workerStderr.removeListener("data", this.writeToStderr);
87
+ }
88
+ }
89
+ writeToStdout(data) {
90
+ if (!this.disposed) {
91
+ process.stdout.write(data);
92
+ }
93
+ }
94
+ writeToStderr(data) {
95
+ if (!this.disposed) {
96
+ process.stderr.write(data);
97
+ }
98
+ }
99
+ run(data, callback) {
100
+ const jobId = this.nextJobId;
101
+ this.nextJobId += 1;
102
+ this.jobs[jobId] = { data, callback };
103
+ this.activeJobs += 1;
104
+ this.writeJson({
105
+ type: "job",
106
+ id: jobId,
107
+ data
108
+ });
109
+ }
110
+ warmup(requires) {
111
+ this.writeJson({
112
+ type: "warmup",
113
+ requires
114
+ });
115
+ }
116
+ writeJson(data) {
117
+ const lengthBuffer = Buffer.alloc(4);
118
+ const messageBuffer = Buffer.from(JSON.stringify(data, import_serializer.replacer), "utf-8");
119
+ lengthBuffer.writeInt32BE(messageBuffer.length, 0);
120
+ this.writePipe.write(lengthBuffer);
121
+ this.writePipe.write(messageBuffer);
122
+ }
123
+ writeEnd() {
124
+ const lengthBuffer = Buffer.alloc(4);
125
+ lengthBuffer.writeInt32BE(0, 0);
126
+ this.writePipe.write(lengthBuffer);
127
+ }
128
+ readNextMessage() {
129
+ this.state = "read length";
130
+ this.readBuffer(4, (lengthReadError, lengthBuffer) => {
131
+ if (lengthReadError) {
132
+ console.error(`Failed to communicate with worker (read length) ${lengthReadError}`);
133
+ return;
134
+ }
135
+ this.state = "length read";
136
+ const length = lengthBuffer.readInt32BE(0);
137
+ this.state = "read message";
138
+ this.readBuffer(length, (messageError, messageBuffer) => {
139
+ if (messageError) {
140
+ console.error(`Failed to communicate with worker (read message) ${messageError}`);
141
+ return;
142
+ }
143
+ this.state = "message read";
144
+ const messageString = messageBuffer.toString("utf-8");
145
+ const message = JSON.parse(messageString, import_serializer.reviver);
146
+ this.state = "process message";
147
+ this.onWorkerMessage(message, (err) => {
148
+ if (err) {
149
+ console.error(`Failed to communicate with worker (process message) ${err}`);
150
+ return;
151
+ }
152
+ this.state = "soon next";
153
+ setImmediate(() => this.readNextMessage());
154
+ });
155
+ });
156
+ });
157
+ }
158
+ onWorkerMessage(message, finalCallback) {
159
+ const { type, id } = message;
160
+ switch (type) {
161
+ case "job": {
162
+ const { data, error, result } = message;
163
+ asyncMapSeries(
164
+ data,
165
+ (length, callback) => this.readBuffer(length, callback),
166
+ (eachErr, buffers) => {
167
+ const { callback: jobCallback } = this.jobs[id];
168
+ const callback = (err, arg) => {
169
+ if (jobCallback) {
170
+ delete this.jobs[id];
171
+ this.activeJobs -= 1;
172
+ this.onJobDone();
173
+ if (err) {
174
+ jobCallback(err instanceof Error ? err : new Error(err), arg);
175
+ } else {
176
+ jobCallback(null, arg);
177
+ }
178
+ }
179
+ finalCallback();
180
+ };
181
+ if (eachErr) {
182
+ callback(eachErr);
183
+ return;
184
+ }
185
+ let bufferPosition = 0;
186
+ if (result.result) {
187
+ result.result = result.result.map((r) => {
188
+ if (r.buffer) {
189
+ const buffer = buffers[bufferPosition];
190
+ bufferPosition += 1;
191
+ if (r.string) {
192
+ return buffer.toString("utf-8");
193
+ }
194
+ return buffer;
195
+ }
196
+ return r.data;
197
+ });
198
+ }
199
+ if (error) {
200
+ callback(this.fromErrorObj(error), result);
201
+ return;
202
+ }
203
+ callback(null, result);
204
+ }
205
+ );
206
+ break;
207
+ }
208
+ case "loadModule": {
209
+ const { request, questionId } = message;
210
+ const { data } = this.jobs[id];
211
+ data.loadModule(request, (error, source, sourceMap) => {
212
+ this.writeJson({
213
+ type: "result",
214
+ id: questionId,
215
+ error: error ? {
216
+ message: error.message,
217
+ details: error.details,
218
+ missing: error.missing
219
+ } : null,
220
+ result: [
221
+ source,
222
+ sourceMap
223
+ // TODO: Serialize module?
224
+ // module,
225
+ ]
226
+ });
227
+ });
228
+ finalCallback();
229
+ break;
230
+ }
231
+ case "resolve": {
232
+ const { context, request, options, questionId } = message;
233
+ const { data } = this.jobs[id];
234
+ if (options) {
235
+ data.getResolve(options)(context, request, (error, result) => {
236
+ this.writeJson({
237
+ type: "result",
238
+ id: questionId,
239
+ error: error ? {
240
+ message: error.message,
241
+ details: error.details,
242
+ missing: error.missing
243
+ } : null,
244
+ result
245
+ });
246
+ });
247
+ } else {
248
+ data.resolve(context, request, (error, result) => {
249
+ this.writeJson({
250
+ type: "result",
251
+ id: questionId,
252
+ error: error ? {
253
+ message: error.message,
254
+ details: error.details,
255
+ missing: error.missing
256
+ } : null,
257
+ result
258
+ });
259
+ });
260
+ }
261
+ finalCallback();
262
+ break;
263
+ }
264
+ case "emitWarning": {
265
+ const { data } = message;
266
+ const { data: jobData } = this.jobs[id];
267
+ jobData.emitWarning(this.fromErrorObj(data));
268
+ finalCallback();
269
+ break;
270
+ }
271
+ case "emitError": {
272
+ const { data } = message;
273
+ const { data: jobData } = this.jobs[id];
274
+ jobData.emitError(this.fromErrorObj(data));
275
+ finalCallback();
276
+ break;
277
+ }
278
+ case "getLogger": {
279
+ const { data } = message;
280
+ const { data: jobData } = this.jobs[id];
281
+ if (!Object.hasOwnProperty.call(jobData.loggers, data.name)) {
282
+ jobData.loggers[data.name] = jobData.getLogger(data.name);
283
+ }
284
+ finalCallback();
285
+ break;
286
+ }
287
+ case "logger": {
288
+ const { data } = message;
289
+ const { data: jobData } = this.jobs[id];
290
+ jobData.loggers[data.name][data.severity](data.message);
291
+ finalCallback();
292
+ break;
293
+ }
294
+ default: {
295
+ console.error(`Unexpected worker message ${type} in WorkerPool.`);
296
+ finalCallback();
297
+ break;
298
+ }
299
+ }
300
+ }
301
+ fromErrorObj(arg) {
302
+ let obj;
303
+ if (typeof arg === "string") {
304
+ obj = { message: arg };
305
+ } else {
306
+ obj = arg;
307
+ }
308
+ return new import_WorkerError.default(obj, this.id);
309
+ }
310
+ readBuffer(length, callback) {
311
+ (0, import_readBuffer.default)(this.readPipe, length, callback);
312
+ }
313
+ dispose() {
314
+ if (!this.disposed) {
315
+ this.disposed = true;
316
+ this.ignoreStdOutAndErrFromWorker(this.worker.stdout, this.worker.stderr);
317
+ this.writeEnd();
318
+ }
319
+ }
320
+ }
321
+ class WorkerPool {
322
+ constructor(options) {
323
+ this.options = options || {};
324
+ this.numberOfWorkers = options.numberOfWorkers;
325
+ this.poolTimeout = options.poolTimeout;
326
+ this.workerNodeArgs = options.workerNodeArgs;
327
+ this.workerParallelJobs = options.workerParallelJobs;
328
+ this.workers = /* @__PURE__ */ new Set();
329
+ this.activeJobs = 0;
330
+ this.timeout = null;
331
+ this.poolQueue = asyncQueue(this.distributeJob.bind(this), options.poolParallelJobs);
332
+ this.terminated = false;
333
+ this.setupLifeCycle();
334
+ }
335
+ isAbleToRun() {
336
+ return !this.terminated;
337
+ }
338
+ terminate() {
339
+ if (this.terminated) {
340
+ return;
341
+ }
342
+ this.terminated = true;
343
+ this.poolQueue.kill();
344
+ this.disposeWorkers(true);
345
+ }
346
+ setupLifeCycle() {
347
+ process.on("exit", () => {
348
+ this.terminate();
349
+ });
350
+ }
351
+ run(data, callback) {
352
+ if (this.timeout) {
353
+ clearTimeout(this.timeout);
354
+ this.timeout = null;
355
+ }
356
+ this.activeJobs += 1;
357
+ this.poolQueue.push(data, callback);
358
+ }
359
+ distributeJob(data, callback) {
360
+ let bestWorker;
361
+ for (const worker of this.workers) {
362
+ if (!bestWorker || worker.activeJobs < bestWorker.activeJobs) {
363
+ bestWorker = worker;
364
+ }
365
+ }
366
+ if (bestWorker && (bestWorker.activeJobs === 0 || this.workers.size >= this.numberOfWorkers)) {
367
+ bestWorker.run(data, callback);
368
+ return;
369
+ }
370
+ const newWorker = this.createWorker();
371
+ newWorker.run(data, callback);
372
+ }
373
+ createWorker() {
374
+ const newWorker = new PoolWorker(
375
+ {
376
+ nodeArgs: this.workerNodeArgs,
377
+ parallelJobs: this.workerParallelJobs
378
+ },
379
+ () => this.onJobDone()
380
+ );
381
+ this.workers.add(newWorker);
382
+ return newWorker;
383
+ }
384
+ warmup(requires) {
385
+ while (this.workers.size < this.numberOfWorkers) {
386
+ this.createWorker().warmup(requires);
387
+ }
388
+ }
389
+ onJobDone() {
390
+ this.activeJobs -= 1;
391
+ if (this.activeJobs === 0 && Number.isFinite(this.poolTimeout)) {
392
+ this.timeout = setTimeout(() => this.disposeWorkers(), this.poolTimeout);
393
+ }
394
+ }
395
+ disposeWorkers(fromTerminate) {
396
+ if (!this.options.poolRespawn && !fromTerminate) {
397
+ this.terminate();
398
+ return;
399
+ }
400
+ if (this.activeJobs === 0 || fromTerminate) {
401
+ for (const worker of this.workers) {
402
+ worker.dispose();
403
+ }
404
+ this.workers.clear();
405
+ }
406
+ }
407
+ }