You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					48 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					48 lines
				
				2.1 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 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 type { FarmOptions, PoolExitResult, PromiseWithCustomMessage } from './types';
							 | 
						||
| 
								 | 
							
								export { default as messageParent } from './workers/messageParent';
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * The Jest farm (publicly called "Worker") is a class that allows you to queue
							 | 
						||
| 
								 | 
							
								 * methods across multiple child processes, in order to parallelize work. This
							 | 
						||
| 
								 | 
							
								 * is done by providing an absolute path to a module that will be loaded on each
							 | 
						||
| 
								 | 
							
								 * of the child processes, and bridged to the main process.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Bridged methods are specified by using the "exposedMethods" property of the
							 | 
						||
| 
								 | 
							
								 * "options" object. This is an array of strings, where each of them corresponds
							 | 
						||
| 
								 | 
							
								 * to the exported name in the loaded module.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * You can also control the amount of workers by using the "numWorkers" property
							 | 
						||
| 
								 | 
							
								 * of the "options" object, and the settings passed to fork the process through
							 | 
						||
| 
								 | 
							
								 * the "forkOptions" property. The amount of workers defaults to the amount of
							 | 
						||
| 
								 | 
							
								 * CPUS minus one.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Queueing calls can be done in two ways:
							 | 
						||
| 
								 | 
							
								 *   - Standard method: calls will be redirected to the first available worker,
							 | 
						||
| 
								 | 
							
								 *     so they will get executed as soon as they can.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *   - Sticky method: if a "computeWorkerKey" method is provided within the
							 | 
						||
| 
								 | 
							
								 *     config, the resulting string of this method will be used as a key.
							 | 
						||
| 
								 | 
							
								 *     Every time this key is returned, it is guaranteed that your job will be
							 | 
						||
| 
								 | 
							
								 *     processed by the same worker. This is specially useful if your workers
							 | 
						||
| 
								 | 
							
								 *     are caching results.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export default class JestWorker {
							 | 
						||
| 
								 | 
							
								    private _ending;
							 | 
						||
| 
								 | 
							
								    private _farm;
							 | 
						||
| 
								 | 
							
								    private _options;
							 | 
						||
| 
								 | 
							
								    private _workerPool;
							 | 
						||
| 
								 | 
							
								    constructor(workerPath: string, options?: FarmOptions);
							 | 
						||
| 
								 | 
							
								    private _bindExposedWorkerMethods;
							 | 
						||
| 
								 | 
							
								    private _callFunctionWithArgs;
							 | 
						||
| 
								 | 
							
								    getStderr(): NodeJS.ReadableStream;
							 | 
						||
| 
								 | 
							
								    getStdout(): NodeJS.ReadableStream;
							 | 
						||
| 
								 | 
							
								    end(): Promise<PoolExitResult>;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export type { PromiseWithCustomMessage };
							 |