aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jest-worker/build/base
diff options
context:
space:
mode:
authorJoel Kronqvist <work.joelkronqvist@pm.me>2022-03-11 20:46:06 +0200
committerJoel Kronqvist <work.joelkronqvist@pm.me>2022-03-11 20:46:06 +0200
commit080c5819d87b933816d724a83f3bf4f1686770a7 (patch)
tree4a2ccc68b27edf7d4cbc586c932cc7542b655e19 /node_modules/jest-worker/build/base
parent5ac7049a9d30733165cc212dee308163c2a14644 (diff)
parentd003b82235a9329f912522a2f70aa950dfce4998 (diff)
downloadLYLLRuoka-080c5819d87b933816d724a83f3bf4f1686770a7.tar.gz
LYLLRuoka-080c5819d87b933816d724a83f3bf4f1686770a7.zip
Merge branch 'master' of https://github.com/JoelHMikael/FoodJS
Updating remote changes
Diffstat (limited to 'node_modules/jest-worker/build/base')
-rw-r--r--node_modules/jest-worker/build/base/BaseWorkerPool.d.ts21
-rw-r--r--node_modules/jest-worker/build/base/BaseWorkerPool.js201
2 files changed, 222 insertions, 0 deletions
diff --git a/node_modules/jest-worker/build/base/BaseWorkerPool.d.ts b/node_modules/jest-worker/build/base/BaseWorkerPool.d.ts
new file mode 100644
index 0000000..311309e
--- /dev/null
+++ b/node_modules/jest-worker/build/base/BaseWorkerPool.d.ts
@@ -0,0 +1,21 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+/// <reference types="node" />
+import { PoolExitResult, WorkerInterface, WorkerOptions, WorkerPoolOptions } from '../types';
+export default class BaseWorkerPool {
+ private readonly _stderr;
+ private readonly _stdout;
+ protected readonly _options: WorkerPoolOptions;
+ private readonly _workers;
+ constructor(workerPath: string, options: WorkerPoolOptions);
+ getStderr(): NodeJS.ReadableStream;
+ getStdout(): NodeJS.ReadableStream;
+ getWorkers(): Array<WorkerInterface>;
+ getWorkerById(workerId: number): WorkerInterface;
+ createWorker(_workerOptions: WorkerOptions): WorkerInterface;
+ end(): Promise<PoolExitResult>;
+}
diff --git a/node_modules/jest-worker/build/base/BaseWorkerPool.js b/node_modules/jest-worker/build/base/BaseWorkerPool.js
new file mode 100644
index 0000000..491deb8
--- /dev/null
+++ b/node_modules/jest-worker/build/base/BaseWorkerPool.js
@@ -0,0 +1,201 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = void 0;
+
+function path() {
+ const data = _interopRequireWildcard(require('path'));
+
+ path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _mergeStream() {
+ const data = _interopRequireDefault(require('merge-stream'));
+
+ _mergeStream = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _types = require('../types');
+
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {default: obj};
+}
+
+function _getRequireWildcardCache(nodeInterop) {
+ if (typeof WeakMap !== 'function') return null;
+ var cacheBabelInterop = new WeakMap();
+ var cacheNodeInterop = new WeakMap();
+ return (_getRequireWildcardCache = function (nodeInterop) {
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+ })(nodeInterop);
+}
+
+function _interopRequireWildcard(obj, nodeInterop) {
+ if (!nodeInterop && obj && obj.__esModule) {
+ return obj;
+ }
+ if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {
+ return {default: obj};
+ }
+ var cache = _getRequireWildcardCache(nodeInterop);
+ if (cache && cache.has(obj)) {
+ return cache.get(obj);
+ }
+ var newObj = {};
+ var hasPropertyDescriptor =
+ Object.defineProperty && Object.getOwnPropertyDescriptor;
+ for (var key in obj) {
+ if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = hasPropertyDescriptor
+ ? Object.getOwnPropertyDescriptor(obj, key)
+ : null;
+ if (desc && (desc.get || desc.set)) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ newObj.default = obj;
+ if (cache) {
+ cache.set(obj, newObj);
+ }
+ return newObj;
+}
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+}
+
+// How long to wait for the child process to terminate
+// after CHILD_MESSAGE_END before sending force exiting.
+const FORCE_EXIT_DELAY = 500;
+/* istanbul ignore next */
+
+const emptyMethod = () => {};
+
+class BaseWorkerPool {
+ constructor(workerPath, options) {
+ _defineProperty(this, '_stderr', void 0);
+
+ _defineProperty(this, '_stdout', void 0);
+
+ _defineProperty(this, '_options', void 0);
+
+ _defineProperty(this, '_workers', void 0);
+
+ this._options = options;
+ this._workers = new Array(options.numWorkers);
+
+ if (!path().isAbsolute(workerPath)) {
+ workerPath = require.resolve(workerPath);
+ }
+
+ const stdout = (0, _mergeStream().default)();
+ const stderr = (0, _mergeStream().default)();
+ const {forkOptions, maxRetries, resourceLimits, setupArgs} = options;
+
+ for (let i = 0; i < options.numWorkers; i++) {
+ const workerOptions = {
+ forkOptions,
+ maxRetries,
+ resourceLimits,
+ setupArgs,
+ workerId: i,
+ workerPath
+ };
+ const worker = this.createWorker(workerOptions);
+ const workerStdout = worker.getStdout();
+ const workerStderr = worker.getStderr();
+
+ if (workerStdout) {
+ stdout.add(workerStdout);
+ }
+
+ if (workerStderr) {
+ stderr.add(workerStderr);
+ }
+
+ this._workers[i] = worker;
+ }
+
+ this._stdout = stdout;
+ this._stderr = stderr;
+ }
+
+ getStderr() {
+ return this._stderr;
+ }
+
+ getStdout() {
+ return this._stdout;
+ }
+
+ getWorkers() {
+ return this._workers;
+ }
+
+ getWorkerById(workerId) {
+ return this._workers[workerId];
+ }
+
+ createWorker(_workerOptions) {
+ throw Error('Missing method createWorker in WorkerPool');
+ }
+
+ async end() {
+ // We do not cache the request object here. If so, it would only be only
+ // processed by one of the workers, and we want them all to close.
+ const workerExitPromises = this._workers.map(async worker => {
+ worker.send(
+ [_types.CHILD_MESSAGE_END, false],
+ emptyMethod,
+ emptyMethod,
+ emptyMethod
+ ); // Schedule a force exit in case worker fails to exit gracefully so
+ // await worker.waitForExit() never takes longer than FORCE_EXIT_DELAY
+
+ let forceExited = false;
+ const forceExitTimeout = setTimeout(() => {
+ worker.forceExit();
+ forceExited = true;
+ }, FORCE_EXIT_DELAY);
+ await worker.waitForExit(); // Worker ideally exited gracefully, don't send force exit then
+
+ clearTimeout(forceExitTimeout);
+ return forceExited;
+ });
+
+ const workerExits = await Promise.all(workerExitPromises);
+ return workerExits.reduce(
+ (result, forceExited) => ({
+ forceExited: result.forceExited || forceExited
+ }),
+ {
+ forceExited: false
+ }
+ );
+ }
+}
+
+exports.default = BaseWorkerPool;