foxts
Version:
Opinionated collection of common TypeScript utils by @SukkaW
40 lines (38 loc) • 1.44 kB
TypeScript
interface NodeOSLike {
cpus(): unknown[];
availableParallelism?: () => number;
}
interface NavigatorLike {
hardwareConcurrency?: number;
}
/**
* Returns the number of available parallelism for the current platform.
*
* Usage:
*
* ```js
* // with a passed in Node.js os module
* import * as os from 'node:os';
* import availableParallelism from 'foxts/available-parallelism';
*
* availableParallelism(os); // number
*
* // In a browser environment, it can read navigator object
* import availableParallelism from 'foxts/available-parallelism';
* availableParallelism(navigator); // number
*
* // You can dynamic import of the Node.js os module
* import availableParallelism from 'foxts/available-parallelism';
* await availableParallelism(import('node:os')); // number
*
* // If you don't pass any arguments, it will automatically detect the environment
* import availableParallelism from 'foxts/available-parallelism';
* await availableParallelism(); // number
* ```
*/
declare function availableParallelism(platform: NodeOSLike | NavigatorLike): number;
declare function availableParallelism(asyncNodeOS?: Promise<NodeOSLike>): Promise<number>;
declare function isNodeOSLike(platform: unknown): platform is NodeOSLike;
declare function isNavigatorLike(platform: unknown): platform is NavigatorLike;
export { availableParallelism, isNavigatorLike, isNodeOSLike };
export type { NavigatorLike, NodeOSLike };