Comparing version
@@ -22,1 +22,4 @@ export interface Config<T = {}, U = {}> { | ||
} | ||
export interface SetupConfig { | ||
maxWorkers?: number; | ||
} |
import { Config } from './interfaces'; | ||
export declare function job<T>(handler: <T>(data?: any) => void, config?: Config): Promise<T>; | ||
export declare const stop: any; | ||
export declare const start: any; | ||
export declare const stop: () => Promise<void>; | ||
export declare const start: () => Promise<void>; |
@@ -1,2 +0,2 @@ | ||
import { Task, WorkerWrapper } from './interfaces'; | ||
import { Task, WorkerWrapper, SetupConfig } from './interfaces'; | ||
declare class WorkerPool { | ||
@@ -7,3 +7,2 @@ private maxWorkers; | ||
private state; | ||
constructor(maxWorkers: number); | ||
resurrect(deadWorker: WorkerWrapper): void; | ||
@@ -13,3 +12,3 @@ tick(): void; | ||
free(worker: any): void; | ||
setup(): Promise<void>; | ||
setup(config?: SetupConfig): Promise<void>; | ||
teardown(): Promise<void>; | ||
@@ -16,0 +15,0 @@ } |
@@ -10,2 +10,3 @@ "use strict"; | ||
const os_1 = __importDefault(require("os")); | ||
const path_1 = __importDefault(require("path")); | ||
const WORKER_STATE_READY = 'ready'; | ||
@@ -17,5 +18,6 @@ const WORKER_STATE_SPAWNING = 'spawning'; | ||
const WORKER_POOL_STATE_OFF = 'off'; | ||
const AVAILABLE_CPUS = os_1.default.cpus().length; | ||
class WorkerPool { | ||
constructor(maxWorkers) { | ||
this.maxWorkers = maxWorkers; | ||
constructor() { | ||
this.maxWorkers = AVAILABLE_CPUS; | ||
this.taskQueue = []; | ||
@@ -27,3 +29,3 @@ this.workers = []; | ||
// self healing procedure | ||
const worker = new worker_threads_1.Worker(`${__dirname}/worker.js`); | ||
const worker = new worker_threads_1.Worker(path_1.default.resolve(__dirname, './worker.js')); | ||
deadWorker.status = WORKER_STATE_SPAWNING; | ||
@@ -139,3 +141,6 @@ deadWorker.worker = worker; | ||
} | ||
setup() { | ||
setup(config = { maxWorkers: AVAILABLE_CPUS }) { | ||
this.maxWorkers = config.maxWorkers > 0 ? config.maxWorkers : AVAILABLE_CPUS; | ||
if (this.maxWorkers > 10) | ||
console.warn(`Worker pool has more than 10 workers.\nYou should also increase the Max Listeners of Node.js (https://nodejs.org/docs/latest/api/events.html#events_emitter_setmaxlisteners_n)\nOtherwise, limit them with start({maxWorkers: 10})`); | ||
return new Promise((resolve, reject) => { | ||
@@ -196,2 +201,2 @@ let counterSuccess = 0; | ||
} | ||
exports.default = new WorkerPool(parseInt(process.env.MAX_WORKERS) || os_1.default.cpus().length); | ||
exports.default = new WorkerPool(); |
{ | ||
"name": "microjob", | ||
"version": "0.4.2", | ||
"version": "0.5.0", | ||
"description": "A tiny wrapper for Node.js worker_threads lib", | ||
@@ -5,0 +5,0 @@ "main": "dist/job.js", |
@@ -10,6 +10,2 @@ # Microjob | ||
 | ||
[When my multithreaded program works like a charm - thecodinglove](https://thecodinglove.com/when-my-multithreaded-program-works-like-a-charm) | ||
## Introduction | ||
@@ -16,0 +12,0 @@ |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
17199
2.56%12
20%288
2.49%1
-50%86
-4.44%