index.d.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. */
  7. /// <reference types="node" />
  8. import type { FarmOptions, PoolExitResult, PromiseWithCustomMessage, TaskQueue } from './types';
  9. export { default as PriorityQueue } from './PriorityQueue';
  10. export { default as FifoQueue } from './FifoQueue';
  11. export { default as messageParent } from './workers/messageParent';
  12. /**
  13. * The Jest farm (publicly called "Worker") is a class that allows you to queue
  14. * methods across multiple child processes, in order to parallelize work. This
  15. * is done by providing an absolute path to a module that will be loaded on each
  16. * of the child processes, and bridged to the main process.
  17. *
  18. * Bridged methods are specified by using the "exposedMethods" property of the
  19. * "options" object. This is an array of strings, where each of them corresponds
  20. * to the exported name in the loaded module.
  21. *
  22. * You can also control the amount of workers by using the "numWorkers" property
  23. * of the "options" object, and the settings passed to fork the process through
  24. * the "forkOptions" property. The amount of workers defaults to the amount of
  25. * CPUS minus one.
  26. *
  27. * Queueing calls can be done in two ways:
  28. * - Standard method: calls will be redirected to the first available worker,
  29. * so they will get executed as soon as they can.
  30. *
  31. * - Sticky method: if a "computeWorkerKey" method is provided within the
  32. * config, the resulting string of this method will be used as a key.
  33. * Every time this key is returned, it is guaranteed that your job will be
  34. * processed by the same worker. This is specially useful if your workers
  35. * are caching results.
  36. */
  37. export declare class Worker {
  38. private _ending;
  39. private _farm;
  40. private _options;
  41. private _workerPool;
  42. constructor(workerPath: string, options?: FarmOptions);
  43. private _bindExposedWorkerMethods;
  44. private _callFunctionWithArgs;
  45. getStderr(): NodeJS.ReadableStream;
  46. getStdout(): NodeJS.ReadableStream;
  47. end(): Promise<PoolExitResult>;
  48. }
  49. export type { PromiseWithCustomMessage, TaskQueue };