Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

workerpool

Package Overview
Dependencies
Maintainers
2
Versions
63
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

workerpool - npm Package Compare versions

Comparing version 6.1.2 to 6.1.3

4

dist/worker.js

@@ -7,4 +7,4 @@ /**

*
* @version 6.1.2
* @date 2021-03-09
* @version 6.1.3
* @date 2021-04-01
*

@@ -11,0 +11,0 @@ * @license

@@ -7,4 +7,4 @@ /**

*
* @version 6.1.2
* @date 2021-03-09
* @version 6.1.3
* @date 2021-04-01
*

@@ -992,2 +992,6 @@ * @license

this.worker.on('message', function (response) {
if (me.terminated) {
return;
}
if (typeof response === 'string' && response === 'ready') {

@@ -1183,2 +1187,7 @@ me.worker.ready = true;

me.terminated = true;
if (me.worker != null) {
me.worker.removeAllListeners('message');
}
me.worker = null;

@@ -1185,0 +1194,0 @@ me.terminating = false;

/*! For license information please see workerpool.min.js.LICENSE.txt */
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define("workerpool",[],r):"object"==typeof exports?exports.workerpool=r():e.workerpool=r()}("undefined"!=typeof self?self:this,(function(){return function(){var __webpack_modules__={345:function(e,r,t){var o=t(219),n=t(751),i=t(828),s=new(t(833));function u(e,r){"string"==typeof e?this.script=e||null:(this.script=null,r=e),this.workers=[],this.tasks=[],r=r||{},this.forkArgs=r.forkArgs||[],this.forkOpts=r.forkOpts||{},this.debugPortStart=r.debugPortStart||43210,this.nodeWorker=r.nodeWorker,this.workerType=r.workerType||r.nodeWorker||"auto",this.maxQueueSize=r.maxQueueSize||1/0,r&&"maxWorkers"in r?(function(e){if(!c(e)||!a(e)||e<1)throw new TypeError("Option maxWorkers must be an integer number >= 1")}(r.maxWorkers),this.maxWorkers=r.maxWorkers):this.maxWorkers=Math.max((i.cpus||4)-1,1),r&&"minWorkers"in r&&("max"===r.minWorkers?this.minWorkers=this.maxWorkers:(function(e){if(!c(e)||!a(e)||e<0)throw new TypeError("Option minWorkers must be an integer number >= 0")}(r.minWorkers),this.minWorkers=r.minWorkers,this.maxWorkers=Math.max(this.minWorkers,this.maxWorkers)),this._ensureMinWorkers()),this._boundNext=this._next.bind(this),"thread"===this.workerType&&n.ensureWorkerThreads()}function c(e){return"number"==typeof e}function a(e){return Math.round(e)==e}u.prototype.exec=function(e,r,t){if(r&&!Array.isArray(r))throw new TypeError('Array expected as argument "params"');if("string"==typeof e){var n=o.defer();if(this.tasks.length>=this.maxQueueSize)throw new Error("Max queue size of "+this.maxQueueSize+" reached");var i=this.tasks,s={method:e,params:r,resolver:n,timeout:null,options:t};i.push(s);var u=n.promise.timeout;return n.promise.timeout=function(e){return-1!==i.indexOf(s)?(s.timeout=e,n.promise):u.call(n.promise,e)},this._next(),n.promise}if("function"==typeof e)return this.exec("run",[String(e),r]);throw new TypeError('Function or string expected as argument "method"')},u.prototype.proxy=function(){if(arguments.length>0)throw new Error("No arguments expected");var e=this;return this.exec("methods").then((function(r){var t={};return r.forEach((function(r){t[r]=function(){return e.exec(r,Array.prototype.slice.call(arguments))}})),t}))},u.prototype._next=function(){if(this.tasks.length>0){var e=this._getWorker();if(e){var r=this,t=this.tasks.shift();if(t.resolver.promise.pending){var o=e.exec(t.method,t.params,t.resolver,t.options).then(r._boundNext).catch((function(){if(e.terminated)return r._removeWorker(e)})).then((function(){r._next()}));"number"==typeof t.timeout&&o.timeout(t.timeout)}else r._next()}}},u.prototype._getWorker=function(){for(var e=this.workers,r=0;r<e.length;r++){var t=e[r];if(!1===t.busy())return t}return e.length<this.maxWorkers?(t=this._createWorkerHandler(),e.push(t),t):null},u.prototype._removeWorker=function(e){return s.releasePort(e.debugPort),this._removeWorkerFromList(e),this._ensureMinWorkers(),new o((function(r,t){e.terminate(!1,(function(o){o?t(o):r(e)}))}))},u.prototype._removeWorkerFromList=function(e){var r=this.workers.indexOf(e);-1!==r&&this.workers.splice(r,1)},u.prototype.terminate=function(e,r){this.tasks.forEach((function(e){e.resolver.reject(new Error("Pool terminated"))})),this.tasks.length=0;var t=function(e){this._removeWorkerFromList(e)}.bind(this),n=[];return this.workers.slice().forEach((function(o){var i=o.terminateAndNotify(e,r).then(t);n.push(i)})),o.all(n)},u.prototype.stats=function(){var e=this.workers.length,r=this.workers.filter((function(e){return e.busy()})).length;return{totalWorkers:e,busyWorkers:r,idleWorkers:e-r,pendingTasks:this.tasks.length,activeTasks:r}},u.prototype._ensureMinWorkers=function(){if(this.minWorkers)for(var e=this.workers.length;e<this.minWorkers;e++)this.workers.push(this._createWorkerHandler())},u.prototype._createWorkerHandler=function(){return new n(this.script,{forkArgs:this.forkArgs,forkOpts:this.forkOpts,debugPort:s.nextAvailableStartingAt(this.debugPortStart),workerType:this.workerType})},e.exports=u},219:function(e){"use strict";function r(e,i){var s=this;if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if("function"!=typeof e)throw new SyntaxError("Function parameter handler(resolve, reject) missing");var u=[],c=[];this.resolved=!1,this.rejected=!1,this.pending=!0;var a=function(e,r){u.push(e),c.push(r)};this.then=function(e,o){return new r((function(r,n){var i=e?t(e,r,n):r,s=o?t(o,r,n):n;a(i,s)}),s)};var f=function(e){return s.resolved=!0,s.rejected=!1,s.pending=!1,u.forEach((function(r){r(e)})),a=function(r,t){r(e)},f=p=function(){},s},p=function(e){return s.resolved=!1,s.rejected=!0,s.pending=!1,c.forEach((function(r){r(e)})),a=function(r,t){t(e)},f=p=function(){},s};this.cancel=function(){return i?i.cancel():p(new o),s},this.timeout=function(e){if(i)i.timeout(e);else{var r=setTimeout((function(){p(new n("Promise timed out after "+e+" ms"))}),e);s.always((function(){clearTimeout(r)}))}return s},e((function(e){f(e)}),(function(e){p(e)}))}function t(e,r,t){return function(o){try{var n=e(o);n&&"function"==typeof n.then&&"function"==typeof n.catch?n.then(r,t):r(n)}catch(e){t(e)}}}function o(e){this.message=e||"promise cancelled",this.stack=(new Error).stack}function n(e){this.message=e||"timeout exceeded",this.stack=(new Error).stack}r.prototype.catch=function(e){return this.then(null,e)},r.prototype.always=function(e){return this.then(e,e)},r.all=function(e){return new r((function(r,t){var o=e.length,n=[];o?e.forEach((function(e,i){e.then((function(e){n[i]=e,0==--o&&r(n)}),(function(e){o=0,t(e)}))})):r(n)}))},r.defer=function(){var e={};return e.promise=new r((function(r,t){e.resolve=r,e.reject=t})),e},o.prototype=new Error,o.prototype.constructor=Error,o.prototype.name="CancellationError",r.CancellationError=o,n.prototype=new Error,n.prototype.constructor=Error,n.prototype.name="TimeoutError",r.TimeoutError=n,e.exports=r},751:function(e,r,t){"use strict";function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,o=new Array(r);t<r;t++)o[t]=e[t];return o}function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var i=t(219),s=t(828),u=t(397),c="__workerpool-terminate__";function a(){var e=p();if(!e)throw new Error("WorkerPool: workerType = 'thread' is not supported, Node >= 11.7.0 required");return e}function f(){if("function"!=typeof Worker&&("object"!==("undefined"==typeof Worker?"undefined":n(Worker))||"function"!=typeof Worker.prototype.constructor))throw new Error("WorkerPool: Web Workers not supported")}function p(){try{return u("worker_threads")}catch(e){if("object"===n(e)&&null!==e&&"MODULE_NOT_FOUND"===e.code)return null;throw e}}function d(e,r){var t=new r(e);return t.isBrowserWorker=!0,t.on=function(e,r){this.addEventListener(e,(function(e){r(e.data)}))},t.send=function(e){this.postMessage(e)},t}function l(e,r){var t=new r.Worker(e,{stdout:!1,stderr:!1});return t.isWorkerThread=!0,t.send=function(e){this.postMessage(e)},t.kill=function(){return this.terminate(),!0},t.disconnect=function(){this.terminate()},t}function h(e,r,t){var o=t.fork(e,r.forkArgs,r.forkOpts);return o.isChildProcess=!0,o}function k(e){e=e||{};var r=process.execArgv.join(" "),t=-1!==r.indexOf("--inspect"),o=-1!==r.indexOf("--debug-brk"),n=[];return t&&(n.push("--inspect="+e.debugPort),o&&n.push("--debug-brk")),process.execArgv.forEach((function(e){e.indexOf("--max-old-space-size")>-1&&n.push(e)})),Object.assign({},e,{forkArgs:e.forkArgs,forkOpts:Object.assign({},e.forkOpts,{execArgv:(e.forkOpts&&e.forkOpts.execArgv||[]).concat(n)})})}function w(e,r){var n=this,i=r||{};function c(e){for(var r in n.terminated=!0,n.processing)void 0!==n.processing[r]&&n.processing[r].resolver.reject(e);n.processing=Object.create(null)}this.script=e||function(){if("browser"===s.platform){if("undefined"==typeof Blob)throw new Error("Blob not supported by the browser");if(!window.URL||"function"!=typeof window.URL.createObjectURL)throw new Error("URL.createObjectURL not supported by the browser");var e=new Blob([t(670)],{type:"text/javascript"});return window.URL.createObjectURL(e)}return __dirname+"/worker.js"}(),this.worker=function(e,r){if("web"===r.workerType)return f(),d(e,Worker);if("thread"===r.workerType)return l(e,t=a());if("process"!==r.workerType&&r.workerType){if("browser"===s.platform)return f(),d(e,Worker);var t=p();return t?l(e,t):h(e,k(r),u("child_process"))}return h(e,k(r),u("child_process"))}(this.script,i),this.debugPort=i.debugPort,e||(this.worker.ready=!0),this.requestQueue=[],this.worker.on("message",(function(e){if("string"==typeof e&&"ready"===e)n.worker.ready=!0,function(){var e,r=function(e,r){var t;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,u=!0,c=!1;return{s:function(){t=e[Symbol.iterator]()},n:function(){var e=t.next();return u=e.done,e},e:function(e){c=!0,s=e},f:function(){try{u||null==t.return||t.return()}finally{if(c)throw s}}}}(n.requestQueue.splice(0));try{for(r.s();!(e=r.n()).done;){var t=e.value;n.worker.send(t)}}catch(e){r.e(e)}finally{r.f()}}();else{var r=e.id,t=n.processing[r];void 0!==t&&(e.isEvent?t.options&&"function"==typeof t.options.on&&t.options.on(e.payload):(delete n.processing[r],!0===n.terminating&&n.terminate(),e.error?t.resolver.reject(function(e){for(var r=new Error(""),t=Object.keys(e),o=0;o<t.length;o++)r[t[o]]=e[t[o]];return r}(e.error)):t.resolver.resolve(e.result)))}}));var w=this.worker;this.worker.on("error",c),this.worker.on("exit",(function(e,r){var t="Workerpool Worker terminated Unexpectedly\n";t+=" exitCode: `"+e+"`\n",t+=" signalCode: `"+r+"`\n",t+=" workerpool.script: `"+n.script+"`\n",t+=" spawnArgs: `"+w.spawnargs+"`\n",t+=" spawnfile: `"+w.spawnfile+"`\n",t+=" stdout: `"+w.stdout+"`\n",t+=" stderr: `"+w.stderr+"`\n",c(new Error(t))})),this.processing=Object.create(null),this.terminating=!1,this.terminated=!1,this.terminationHandler=null,this.lastId=0}w.prototype.methods=function(){return this.exec("methods")},w.prototype.exec=function(e,r,t,o){t||(t=i.defer());var n=++this.lastId;this.processing[n]={id:n,resolver:t,options:o};var s={id:n,method:e,params:r};this.terminated?t.reject(new Error("Worker is terminated")):this.worker.ready?this.worker.send(s):this.requestQueue.push(s);var u=this;return t.promise.catch((function(e){if(e instanceof i.CancellationError||e instanceof i.TimeoutError)return delete u.processing[n],u.terminateAndNotify(!0).then((function(){throw e}),(function(e){throw e}));throw e}))},w.prototype.busy=function(){return Object.keys(this.processing).length>0},w.prototype.terminate=function(e,r){var t=this;if(e){for(var o in this.processing)void 0!==this.processing[o]&&this.processing[o].resolver.reject(new Error("Worker terminated"));this.processing=Object.create(null)}if("function"==typeof r&&(this.terminationHandler=r),this.busy())this.terminating=!0;else{var n=function(e){if(t.terminated=!0,t.worker=null,t.terminating=!1,t.terminationHandler)t.terminationHandler(e,t);else if(e)throw e};if(this.worker){if("function"==typeof this.worker.kill){if(this.worker.killed)return void n(new Error("worker already killed!"));if(this.worker.isChildProcess){var i=setTimeout((function(){t.worker.kill()}),1e3);this.worker.once("exit",(function(){clearTimeout(i),t.worker.killed=!0,n()})),this.worker.ready?this.worker.send(c):this.worker.requestQueue.push(c)}else this.worker.kill(),this.worker.killed=!0,n();return}if("function"!=typeof this.worker.terminate)throw new Error("Failed to terminate worker");this.worker.terminate(),this.worker.killed=!0}n()}},w.prototype.terminateAndNotify=function(e,r){var t=i.defer();return r&&(t.promise.timeout=r),this.terminate(e,(function(e,r){e?t.reject(e):t.resolve(r)})),t.promise},e.exports=w,e.exports._tryRequireWorkerThreads=p,e.exports._setupProcessWorker=h,e.exports._setupBrowserWorker=d,e.exports._setupWorkerThreadWorker=l,e.exports.ensureWorkerThreads=a},833:function(e){"use strict";function r(){this.ports=Object.create(null),this.length=0}e.exports=r,r.prototype.nextAvailableStartingAt=function(e){for(;!0===this.ports[e];)e++;if(e>=65535)throw new Error("WorkerPool debug port limit reached: "+e+">= 65535");return this.ports[e]=!0,this.length++,e},r.prototype.releasePort=function(e){delete this.ports[e],this.length--}},828:function(e,r,t){var o=t(397),n=function(e){return void 0!==e&&null!=e.versions&&null!=e.versions.node};e.exports.isNode=n,e.exports.platform="undefined"!=typeof process&&n(process)?"node":"browser";var i=function(e){try{return o("worker_threads")}catch(e){return null}}();e.exports.isMainThread="node"===e.exports.platform?(!i||i.isMainThread)&&!process.connected:"undefined"!=typeof Window,e.exports.cpus="browser"===e.exports.platform?self.navigator.hardwareConcurrency:o("os").cpus().length},670:function(e){e.exports='!function(){var __webpack_exports__={};!function(){var exports=__webpack_exports__,__webpack_unused_export__;function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var requireFoolWebpack=eval("typeof require !== \'undefined\' ? require : function (module) { throw new Error(\'Module \\" + module + \\" not found.\') }"),TERMINATE_METHOD_ID="__workerpool-terminate__",worker={exit:function(){}},WorkerThreads,parentPort;if("undefined"!=typeof self&&"function"==typeof postMessage&&"function"==typeof addEventListener)worker.on=function(e,r){addEventListener(e,function(e){r(e.data)})},worker.send=function(e){postMessage(e)};else{if("undefined"==typeof process)throw new Error("Script must be executed as a worker");try{WorkerThreads=requireFoolWebpack("worker_threads")}catch(error){if("object"!==_typeof(error)||null===error||"MODULE_NOT_FOUND"!==error.code)throw error}WorkerThreads&&null!==WorkerThreads.parentPort?(parentPort=WorkerThreads.parentPort,worker.send=parentPort.postMessage.bind(parentPort),worker.on=parentPort.on.bind(parentPort)):(worker.on=process.on.bind(process),worker.send=process.send.bind(process),worker.on("disconnect",function(){process.exit(1)}),worker.exit=process.exit.bind(process))}function convertError(o){return Object.getOwnPropertyNames(o).reduce(function(e,r){return Object.defineProperty(e,r,{value:o[r],enumerable:!0})},{})}function isPromise(e){return e&&"function"==typeof e.then&&"function"==typeof e.catch}worker.methods={},worker.methods.run=function(e,r){e=new Function("return ("+e+").apply(null, arguments);");return e.apply(e,r)},worker.methods.methods=function(){return Object.keys(worker.methods)};var currentRequestId=null;worker.on("message",function(r){if(r===TERMINATE_METHOD_ID)return worker.exit(0);try{var e=worker.methods[r.method];if(!e)throw new Error(\'Unknown method "\'+r.method+\'"\');currentRequestId=r.id;e=e.apply(e,r.params);isPromise(e)?e.then(function(e){worker.send({id:r.id,result:e,error:null}),currentRequestId=null}).catch(function(e){worker.send({id:r.id,result:null,error:convertError(e)}),currentRequestId=null}):(worker.send({id:r.id,result:e,error:null}),currentRequestId=null)}catch(e){worker.send({id:r.id,result:null,error:convertError(e)})}}),worker.register=function(e){if(e)for(var r in e)e.hasOwnProperty(r)&&(worker.methods[r]=e[r]);worker.send("ready")},worker.emit=function(e){currentRequestId&&worker.send({id:currentRequestId,isEvent:!0,payload:e})},__webpack_unused_export__=worker.register,__webpack_unused_export__=worker.emit}()}();'},397:function(module){var requireFoolWebpack=eval("typeof require !== 'undefined' ? require : function (module) { throw new Error('Module \" + module + \" not found.') }");module.exports=requireFoolWebpack},744:function(__unused_webpack_module,exports){function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var requireFoolWebpack=eval("typeof require !== 'undefined' ? require : function (module) { throw new Error('Module \" + module + \" not found.') }"),TERMINATE_METHOD_ID="__workerpool-terminate__",worker={exit:function(){}};if("undefined"!=typeof self&&"function"==typeof postMessage&&"function"==typeof addEventListener)worker.on=function(e,r){addEventListener(e,(function(e){r(e.data)}))},worker.send=function(e){postMessage(e)};else{if("undefined"==typeof process)throw new Error("Script must be executed as a worker");var WorkerThreads;try{WorkerThreads=requireFoolWebpack("worker_threads")}catch(e){if("object"!==_typeof(e)||null===e||"MODULE_NOT_FOUND"!==e.code)throw e}if(WorkerThreads&&null!==WorkerThreads.parentPort){var parentPort=WorkerThreads.parentPort;worker.send=parentPort.postMessage.bind(parentPort),worker.on=parentPort.on.bind(parentPort)}else worker.on=process.on.bind(process),worker.send=process.send.bind(process),worker.on("disconnect",(function(){process.exit(1)})),worker.exit=process.exit.bind(process)}function convertError(e){return Object.getOwnPropertyNames(e).reduce((function(r,t){return Object.defineProperty(r,t,{value:e[t],enumerable:!0})}),{})}function isPromise(e){return e&&"function"==typeof e.then&&"function"==typeof e.catch}worker.methods={},worker.methods.run=function(e,r){var t=new Function("return ("+e+").apply(null, arguments);");return t.apply(t,r)},worker.methods.methods=function(){return Object.keys(worker.methods)};var currentRequestId=null;worker.on("message",(function(e){if(e===TERMINATE_METHOD_ID)return worker.exit(0);try{var r=worker.methods[e.method];if(!r)throw new Error('Unknown method "'+e.method+'"');currentRequestId=e.id;var t=r.apply(r,e.params);isPromise(t)?t.then((function(r){worker.send({id:e.id,result:r,error:null}),currentRequestId=null})).catch((function(r){worker.send({id:e.id,result:null,error:convertError(r)}),currentRequestId=null})):(worker.send({id:e.id,result:t,error:null}),currentRequestId=null)}catch(r){worker.send({id:e.id,result:null,error:convertError(r)})}})),worker.register=function(e){if(e)for(var r in e)e.hasOwnProperty(r)&&(worker.methods[r]=e[r]);worker.send("ready")},worker.emit=function(e){currentRequestId&&worker.send({id:currentRequestId,isEvent:!0,payload:e})},exports.add=worker.register,exports.emit=worker.emit}},__webpack_module_cache__={};function __webpack_require__(e){if(__webpack_module_cache__[e])return __webpack_module_cache__[e].exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}var __webpack_exports__={};return function(){var e=__webpack_exports__,r=__webpack_require__(828);e.pool=function(e,r){return new(__webpack_require__(345))(e,r)},e.worker=function(e){__webpack_require__(744).add(e)},e.workerEmit=function(e){__webpack_require__(744).emit(e)},e.Promise=__webpack_require__(219),e.platform=r.platform,e.isMainThread=r.isMainThread,e.cpus=r.cpus}(),__webpack_exports__}()}));
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define("workerpool",[],r):"object"==typeof exports?exports.workerpool=r():e.workerpool=r()}("undefined"!=typeof self?self:this,(function(){return function(){var __webpack_modules__={345:function(e,r,t){var o=t(219),n=t(751),i=t(828),s=new(t(833));function u(e,r){"string"==typeof e?this.script=e||null:(this.script=null,r=e),this.workers=[],this.tasks=[],r=r||{},this.forkArgs=r.forkArgs||[],this.forkOpts=r.forkOpts||{},this.debugPortStart=r.debugPortStart||43210,this.nodeWorker=r.nodeWorker,this.workerType=r.workerType||r.nodeWorker||"auto",this.maxQueueSize=r.maxQueueSize||1/0,r&&"maxWorkers"in r?(function(e){if(!c(e)||!a(e)||e<1)throw new TypeError("Option maxWorkers must be an integer number >= 1")}(r.maxWorkers),this.maxWorkers=r.maxWorkers):this.maxWorkers=Math.max((i.cpus||4)-1,1),r&&"minWorkers"in r&&("max"===r.minWorkers?this.minWorkers=this.maxWorkers:(function(e){if(!c(e)||!a(e)||e<0)throw new TypeError("Option minWorkers must be an integer number >= 0")}(r.minWorkers),this.minWorkers=r.minWorkers,this.maxWorkers=Math.max(this.minWorkers,this.maxWorkers)),this._ensureMinWorkers()),this._boundNext=this._next.bind(this),"thread"===this.workerType&&n.ensureWorkerThreads()}function c(e){return"number"==typeof e}function a(e){return Math.round(e)==e}u.prototype.exec=function(e,r,t){if(r&&!Array.isArray(r))throw new TypeError('Array expected as argument "params"');if("string"==typeof e){var n=o.defer();if(this.tasks.length>=this.maxQueueSize)throw new Error("Max queue size of "+this.maxQueueSize+" reached");var i=this.tasks,s={method:e,params:r,resolver:n,timeout:null,options:t};i.push(s);var u=n.promise.timeout;return n.promise.timeout=function(e){return-1!==i.indexOf(s)?(s.timeout=e,n.promise):u.call(n.promise,e)},this._next(),n.promise}if("function"==typeof e)return this.exec("run",[String(e),r]);throw new TypeError('Function or string expected as argument "method"')},u.prototype.proxy=function(){if(arguments.length>0)throw new Error("No arguments expected");var e=this;return this.exec("methods").then((function(r){var t={};return r.forEach((function(r){t[r]=function(){return e.exec(r,Array.prototype.slice.call(arguments))}})),t}))},u.prototype._next=function(){if(this.tasks.length>0){var e=this._getWorker();if(e){var r=this,t=this.tasks.shift();if(t.resolver.promise.pending){var o=e.exec(t.method,t.params,t.resolver,t.options).then(r._boundNext).catch((function(){if(e.terminated)return r._removeWorker(e)})).then((function(){r._next()}));"number"==typeof t.timeout&&o.timeout(t.timeout)}else r._next()}}},u.prototype._getWorker=function(){for(var e=this.workers,r=0;r<e.length;r++){var t=e[r];if(!1===t.busy())return t}return e.length<this.maxWorkers?(t=this._createWorkerHandler(),e.push(t),t):null},u.prototype._removeWorker=function(e){return s.releasePort(e.debugPort),this._removeWorkerFromList(e),this._ensureMinWorkers(),new o((function(r,t){e.terminate(!1,(function(o){o?t(o):r(e)}))}))},u.prototype._removeWorkerFromList=function(e){var r=this.workers.indexOf(e);-1!==r&&this.workers.splice(r,1)},u.prototype.terminate=function(e,r){this.tasks.forEach((function(e){e.resolver.reject(new Error("Pool terminated"))})),this.tasks.length=0;var t=function(e){this._removeWorkerFromList(e)}.bind(this),n=[];return this.workers.slice().forEach((function(o){var i=o.terminateAndNotify(e,r).then(t);n.push(i)})),o.all(n)},u.prototype.stats=function(){var e=this.workers.length,r=this.workers.filter((function(e){return e.busy()})).length;return{totalWorkers:e,busyWorkers:r,idleWorkers:e-r,pendingTasks:this.tasks.length,activeTasks:r}},u.prototype._ensureMinWorkers=function(){if(this.minWorkers)for(var e=this.workers.length;e<this.minWorkers;e++)this.workers.push(this._createWorkerHandler())},u.prototype._createWorkerHandler=function(){return new n(this.script,{forkArgs:this.forkArgs,forkOpts:this.forkOpts,debugPort:s.nextAvailableStartingAt(this.debugPortStart),workerType:this.workerType})},e.exports=u},219:function(e){"use strict";function r(e,i){var s=this;if(!(this instanceof r))throw new SyntaxError("Constructor must be called with the new operator");if("function"!=typeof e)throw new SyntaxError("Function parameter handler(resolve, reject) missing");var u=[],c=[];this.resolved=!1,this.rejected=!1,this.pending=!0;var a=function(e,r){u.push(e),c.push(r)};this.then=function(e,o){return new r((function(r,n){var i=e?t(e,r,n):r,s=o?t(o,r,n):n;a(i,s)}),s)};var f=function(e){return s.resolved=!0,s.rejected=!1,s.pending=!1,u.forEach((function(r){r(e)})),a=function(r,t){r(e)},f=p=function(){},s},p=function(e){return s.resolved=!1,s.rejected=!0,s.pending=!1,c.forEach((function(r){r(e)})),a=function(r,t){t(e)},f=p=function(){},s};this.cancel=function(){return i?i.cancel():p(new o),s},this.timeout=function(e){if(i)i.timeout(e);else{var r=setTimeout((function(){p(new n("Promise timed out after "+e+" ms"))}),e);s.always((function(){clearTimeout(r)}))}return s},e((function(e){f(e)}),(function(e){p(e)}))}function t(e,r,t){return function(o){try{var n=e(o);n&&"function"==typeof n.then&&"function"==typeof n.catch?n.then(r,t):r(n)}catch(e){t(e)}}}function o(e){this.message=e||"promise cancelled",this.stack=(new Error).stack}function n(e){this.message=e||"timeout exceeded",this.stack=(new Error).stack}r.prototype.catch=function(e){return this.then(null,e)},r.prototype.always=function(e){return this.then(e,e)},r.all=function(e){return new r((function(r,t){var o=e.length,n=[];o?e.forEach((function(e,i){e.then((function(e){n[i]=e,0==--o&&r(n)}),(function(e){o=0,t(e)}))})):r(n)}))},r.defer=function(){var e={};return e.promise=new r((function(r,t){e.resolve=r,e.reject=t})),e},o.prototype=new Error,o.prototype.constructor=Error,o.prototype.name="CancellationError",r.CancellationError=o,n.prototype=new Error,n.prototype.constructor=Error,n.prototype.name="TimeoutError",r.TimeoutError=n,e.exports=r},751:function(e,r,t){"use strict";function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,o=new Array(r);t<r;t++)o[t]=e[t];return o}function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var i=t(219),s=t(828),u=t(397),c="__workerpool-terminate__";function a(){var e=p();if(!e)throw new Error("WorkerPool: workerType = 'thread' is not supported, Node >= 11.7.0 required");return e}function f(){if("function"!=typeof Worker&&("object"!==("undefined"==typeof Worker?"undefined":n(Worker))||"function"!=typeof Worker.prototype.constructor))throw new Error("WorkerPool: Web Workers not supported")}function p(){try{return u("worker_threads")}catch(e){if("object"===n(e)&&null!==e&&"MODULE_NOT_FOUND"===e.code)return null;throw e}}function d(e,r){var t=new r(e);return t.isBrowserWorker=!0,t.on=function(e,r){this.addEventListener(e,(function(e){r(e.data)}))},t.send=function(e){this.postMessage(e)},t}function l(e,r){var t=new r.Worker(e,{stdout:!1,stderr:!1});return t.isWorkerThread=!0,t.send=function(e){this.postMessage(e)},t.kill=function(){return this.terminate(),!0},t.disconnect=function(){this.terminate()},t}function h(e,r,t){var o=t.fork(e,r.forkArgs,r.forkOpts);return o.isChildProcess=!0,o}function k(e){e=e||{};var r=process.execArgv.join(" "),t=-1!==r.indexOf("--inspect"),o=-1!==r.indexOf("--debug-brk"),n=[];return t&&(n.push("--inspect="+e.debugPort),o&&n.push("--debug-brk")),process.execArgv.forEach((function(e){e.indexOf("--max-old-space-size")>-1&&n.push(e)})),Object.assign({},e,{forkArgs:e.forkArgs,forkOpts:Object.assign({},e.forkOpts,{execArgv:(e.forkOpts&&e.forkOpts.execArgv||[]).concat(n)})})}function w(e,r){var n=this,i=r||{};function c(e){for(var r in n.terminated=!0,n.processing)void 0!==n.processing[r]&&n.processing[r].resolver.reject(e);n.processing=Object.create(null)}this.script=e||function(){if("browser"===s.platform){if("undefined"==typeof Blob)throw new Error("Blob not supported by the browser");if(!window.URL||"function"!=typeof window.URL.createObjectURL)throw new Error("URL.createObjectURL not supported by the browser");var e=new Blob([t(670)],{type:"text/javascript"});return window.URL.createObjectURL(e)}return __dirname+"/worker.js"}(),this.worker=function(e,r){if("web"===r.workerType)return f(),d(e,Worker);if("thread"===r.workerType)return l(e,t=a());if("process"!==r.workerType&&r.workerType){if("browser"===s.platform)return f(),d(e,Worker);var t=p();return t?l(e,t):h(e,k(r),u("child_process"))}return h(e,k(r),u("child_process"))}(this.script,i),this.debugPort=i.debugPort,e||(this.worker.ready=!0),this.requestQueue=[],this.worker.on("message",(function(e){if(!n.terminated)if("string"==typeof e&&"ready"===e)n.worker.ready=!0,function(){var e,r=function(e,r){var t;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,u=!0,c=!1;return{s:function(){t=e[Symbol.iterator]()},n:function(){var e=t.next();return u=e.done,e},e:function(e){c=!0,s=e},f:function(){try{u||null==t.return||t.return()}finally{if(c)throw s}}}}(n.requestQueue.splice(0));try{for(r.s();!(e=r.n()).done;){var t=e.value;n.worker.send(t)}}catch(e){r.e(e)}finally{r.f()}}();else{var r=e.id,t=n.processing[r];void 0!==t&&(e.isEvent?t.options&&"function"==typeof t.options.on&&t.options.on(e.payload):(delete n.processing[r],!0===n.terminating&&n.terminate(),e.error?t.resolver.reject(function(e){for(var r=new Error(""),t=Object.keys(e),o=0;o<t.length;o++)r[t[o]]=e[t[o]];return r}(e.error)):t.resolver.resolve(e.result)))}}));var w=this.worker;this.worker.on("error",c),this.worker.on("exit",(function(e,r){var t="Workerpool Worker terminated Unexpectedly\n";t+=" exitCode: `"+e+"`\n",t+=" signalCode: `"+r+"`\n",t+=" workerpool.script: `"+n.script+"`\n",t+=" spawnArgs: `"+w.spawnargs+"`\n",t+=" spawnfile: `"+w.spawnfile+"`\n",t+=" stdout: `"+w.stdout+"`\n",t+=" stderr: `"+w.stderr+"`\n",c(new Error(t))})),this.processing=Object.create(null),this.terminating=!1,this.terminated=!1,this.terminationHandler=null,this.lastId=0}w.prototype.methods=function(){return this.exec("methods")},w.prototype.exec=function(e,r,t,o){t||(t=i.defer());var n=++this.lastId;this.processing[n]={id:n,resolver:t,options:o};var s={id:n,method:e,params:r};this.terminated?t.reject(new Error("Worker is terminated")):this.worker.ready?this.worker.send(s):this.requestQueue.push(s);var u=this;return t.promise.catch((function(e){if(e instanceof i.CancellationError||e instanceof i.TimeoutError)return delete u.processing[n],u.terminateAndNotify(!0).then((function(){throw e}),(function(e){throw e}));throw e}))},w.prototype.busy=function(){return Object.keys(this.processing).length>0},w.prototype.terminate=function(e,r){var t=this;if(e){for(var o in this.processing)void 0!==this.processing[o]&&this.processing[o].resolver.reject(new Error("Worker terminated"));this.processing=Object.create(null)}if("function"==typeof r&&(this.terminationHandler=r),this.busy())this.terminating=!0;else{var n=function(e){if(t.terminated=!0,null!=t.worker&&t.worker.removeAllListeners("message"),t.worker=null,t.terminating=!1,t.terminationHandler)t.terminationHandler(e,t);else if(e)throw e};if(this.worker){if("function"==typeof this.worker.kill){if(this.worker.killed)return void n(new Error("worker already killed!"));if(this.worker.isChildProcess){var i=setTimeout((function(){t.worker.kill()}),1e3);this.worker.once("exit",(function(){clearTimeout(i),t.worker.killed=!0,n()})),this.worker.ready?this.worker.send(c):this.worker.requestQueue.push(c)}else this.worker.kill(),this.worker.killed=!0,n();return}if("function"!=typeof this.worker.terminate)throw new Error("Failed to terminate worker");this.worker.terminate(),this.worker.killed=!0}n()}},w.prototype.terminateAndNotify=function(e,r){var t=i.defer();return r&&(t.promise.timeout=r),this.terminate(e,(function(e,r){e?t.reject(e):t.resolve(r)})),t.promise},e.exports=w,e.exports._tryRequireWorkerThreads=p,e.exports._setupProcessWorker=h,e.exports._setupBrowserWorker=d,e.exports._setupWorkerThreadWorker=l,e.exports.ensureWorkerThreads=a},833:function(e){"use strict";function r(){this.ports=Object.create(null),this.length=0}e.exports=r,r.prototype.nextAvailableStartingAt=function(e){for(;!0===this.ports[e];)e++;if(e>=65535)throw new Error("WorkerPool debug port limit reached: "+e+">= 65535");return this.ports[e]=!0,this.length++,e},r.prototype.releasePort=function(e){delete this.ports[e],this.length--}},828:function(e,r,t){var o=t(397),n=function(e){return void 0!==e&&null!=e.versions&&null!=e.versions.node};e.exports.isNode=n,e.exports.platform="undefined"!=typeof process&&n(process)?"node":"browser";var i=function(e){try{return o("worker_threads")}catch(e){return null}}();e.exports.isMainThread="node"===e.exports.platform?(!i||i.isMainThread)&&!process.connected:"undefined"!=typeof Window,e.exports.cpus="browser"===e.exports.platform?self.navigator.hardwareConcurrency:o("os").cpus().length},670:function(e){e.exports='!function(){var __webpack_exports__={};!function(){var exports=__webpack_exports__,__webpack_unused_export__;function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var requireFoolWebpack=eval("typeof require !== \'undefined\' ? require : function (module) { throw new Error(\'Module \\" + module + \\" not found.\') }"),TERMINATE_METHOD_ID="__workerpool-terminate__",worker={exit:function(){}},WorkerThreads,parentPort;if("undefined"!=typeof self&&"function"==typeof postMessage&&"function"==typeof addEventListener)worker.on=function(e,r){addEventListener(e,function(e){r(e.data)})},worker.send=function(e){postMessage(e)};else{if("undefined"==typeof process)throw new Error("Script must be executed as a worker");try{WorkerThreads=requireFoolWebpack("worker_threads")}catch(error){if("object"!==_typeof(error)||null===error||"MODULE_NOT_FOUND"!==error.code)throw error}WorkerThreads&&null!==WorkerThreads.parentPort?(parentPort=WorkerThreads.parentPort,worker.send=parentPort.postMessage.bind(parentPort),worker.on=parentPort.on.bind(parentPort)):(worker.on=process.on.bind(process),worker.send=process.send.bind(process),worker.on("disconnect",function(){process.exit(1)}),worker.exit=process.exit.bind(process))}function convertError(o){return Object.getOwnPropertyNames(o).reduce(function(e,r){return Object.defineProperty(e,r,{value:o[r],enumerable:!0})},{})}function isPromise(e){return e&&"function"==typeof e.then&&"function"==typeof e.catch}worker.methods={},worker.methods.run=function(e,r){e=new Function("return ("+e+").apply(null, arguments);");return e.apply(e,r)},worker.methods.methods=function(){return Object.keys(worker.methods)};var currentRequestId=null;worker.on("message",function(r){if(r===TERMINATE_METHOD_ID)return worker.exit(0);try{var e=worker.methods[r.method];if(!e)throw new Error(\'Unknown method "\'+r.method+\'"\');currentRequestId=r.id;e=e.apply(e,r.params);isPromise(e)?e.then(function(e){worker.send({id:r.id,result:e,error:null}),currentRequestId=null}).catch(function(e){worker.send({id:r.id,result:null,error:convertError(e)}),currentRequestId=null}):(worker.send({id:r.id,result:e,error:null}),currentRequestId=null)}catch(e){worker.send({id:r.id,result:null,error:convertError(e)})}}),worker.register=function(e){if(e)for(var r in e)e.hasOwnProperty(r)&&(worker.methods[r]=e[r]);worker.send("ready")},worker.emit=function(e){currentRequestId&&worker.send({id:currentRequestId,isEvent:!0,payload:e})},__webpack_unused_export__=worker.register,__webpack_unused_export__=worker.emit}()}();'},397:function(module){var requireFoolWebpack=eval("typeof require !== 'undefined' ? require : function (module) { throw new Error('Module \" + module + \" not found.') }");module.exports=requireFoolWebpack},744:function(__unused_webpack_module,exports){function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var requireFoolWebpack=eval("typeof require !== 'undefined' ? require : function (module) { throw new Error('Module \" + module + \" not found.') }"),TERMINATE_METHOD_ID="__workerpool-terminate__",worker={exit:function(){}};if("undefined"!=typeof self&&"function"==typeof postMessage&&"function"==typeof addEventListener)worker.on=function(e,r){addEventListener(e,(function(e){r(e.data)}))},worker.send=function(e){postMessage(e)};else{if("undefined"==typeof process)throw new Error("Script must be executed as a worker");var WorkerThreads;try{WorkerThreads=requireFoolWebpack("worker_threads")}catch(e){if("object"!==_typeof(e)||null===e||"MODULE_NOT_FOUND"!==e.code)throw e}if(WorkerThreads&&null!==WorkerThreads.parentPort){var parentPort=WorkerThreads.parentPort;worker.send=parentPort.postMessage.bind(parentPort),worker.on=parentPort.on.bind(parentPort)}else worker.on=process.on.bind(process),worker.send=process.send.bind(process),worker.on("disconnect",(function(){process.exit(1)})),worker.exit=process.exit.bind(process)}function convertError(e){return Object.getOwnPropertyNames(e).reduce((function(r,t){return Object.defineProperty(r,t,{value:e[t],enumerable:!0})}),{})}function isPromise(e){return e&&"function"==typeof e.then&&"function"==typeof e.catch}worker.methods={},worker.methods.run=function(e,r){var t=new Function("return ("+e+").apply(null, arguments);");return t.apply(t,r)},worker.methods.methods=function(){return Object.keys(worker.methods)};var currentRequestId=null;worker.on("message",(function(e){if(e===TERMINATE_METHOD_ID)return worker.exit(0);try{var r=worker.methods[e.method];if(!r)throw new Error('Unknown method "'+e.method+'"');currentRequestId=e.id;var t=r.apply(r,e.params);isPromise(t)?t.then((function(r){worker.send({id:e.id,result:r,error:null}),currentRequestId=null})).catch((function(r){worker.send({id:e.id,result:null,error:convertError(r)}),currentRequestId=null})):(worker.send({id:e.id,result:t,error:null}),currentRequestId=null)}catch(r){worker.send({id:e.id,result:null,error:convertError(r)})}})),worker.register=function(e){if(e)for(var r in e)e.hasOwnProperty(r)&&(worker.methods[r]=e[r]);worker.send("ready")},worker.emit=function(e){currentRequestId&&worker.send({id:currentRequestId,isEvent:!0,payload:e})},exports.add=worker.register,exports.emit=worker.emit}},__webpack_module_cache__={};function __webpack_require__(e){if(__webpack_module_cache__[e])return __webpack_module_cache__[e].exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}var __webpack_exports__={};return function(){var e=__webpack_exports__,r=__webpack_require__(828);e.pool=function(e,r){return new(__webpack_require__(345))(e,r)},e.worker=function(e){__webpack_require__(744).add(e)},e.workerEmit=function(e){__webpack_require__(744).emit(e)},e.Promise=__webpack_require__(219),e.platform=r.platform,e.isMainThread=r.isMainThread,e.cpus=r.cpus}(),__webpack_exports__}()}));
//# sourceMappingURL=workerpool.min.js.map

@@ -7,4 +7,4 @@ /**

*
* @version 6.1.2
* @date 2021-03-09
* @version 6.1.3
* @date 2021-04-01
*

@@ -11,0 +11,0 @@ * @license

@@ -5,2 +5,8 @@ # workerpool history

## 2021-04-01, version 6.1.3
- Fix #147: disregard messages from terminated workers.
Thanks @hhprogram and @Madgvox.
## 2021-03-09, version 6.1.2

@@ -7,0 +13,0 @@

{
"name": "workerpool",
"license": "Apache-2.0",
"version": "6.1.2",
"version": "6.1.3",
"description": "Offload tasks to a pool of workers on node.js and in the browser",

@@ -6,0 +6,0 @@ "homepage": "https://github.com/josdejong/workerpool",

@@ -219,2 +219,5 @@ 'use strict';

this.worker.on('message', function (response) {
if (me.terminated) {
return;
}
if (typeof response === 'string' && response === 'ready') {

@@ -404,2 +407,5 @@ me.worker.ready = true;

me.terminated = true;
if (me.worker != null) {
me.worker.removeAllListeners('message');
}
me.worker = null;

@@ -406,0 +412,0 @@ me.terminating = false;

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc