UNPKG

@xylabs/threads

Version:

Web workers & worker threads as simple as a function call

1 lines 22.4 kB
{"version":3,"sources":["../../../../../node_modules/.store/tiny-worker-npm-2.3.0-38c7100e1d/package/lib/index.js","../../../src/master/implementation.node.ts","../../../src/master/index-node.ts","../../../src/master/register.ts"],"sourcesContent":["\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar path = require(\"path\"),\n fork = require(\"child_process\").fork,\n worker = path.join(__dirname, \"worker.js\"),\n events = /^(error|message)$/,\n defaultPorts = { inspect: 9229, debug: 5858 };\nvar range = { min: 1, max: 300 };\n\nvar Worker = function () {\n\tfunction Worker(arg) {\n\t\tvar _this = this;\n\n\t\tvar args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\t\tvar options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { cwd: process.cwd() };\n\n\t\t_classCallCheck(this, Worker);\n\n\t\tvar isfn = typeof arg === \"function\",\n\t\t input = isfn ? arg.toString() : arg;\n\n\t\tif (!options.cwd) {\n\t\t\toptions.cwd = process.cwd();\n\t\t}\n\n\t\t//get all debug related parameters\n\t\tvar debugVars = process.execArgv.filter(function (execArg) {\n\t\t\treturn (/(debug|inspect)/.test(execArg)\n\t\t\t);\n\t\t});\n\t\tif (debugVars.length > 0 && !options.noDebugRedirection) {\n\t\t\tif (!options.execArgv) {\n\t\t\t\t//if no execArgs are given copy all arguments\n\t\t\t\tdebugVars = Array.from(process.execArgv);\n\t\t\t\toptions.execArgv = [];\n\t\t\t}\n\n\t\t\tvar inspectIndex = debugVars.findIndex(function (debugArg) {\n\t\t\t\t//get index of inspect parameter\n\t\t\t\treturn (/^--inspect(-brk)?(=\\d+)?$/.test(debugArg)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tvar debugIndex = debugVars.findIndex(function (debugArg) {\n\t\t\t\t//get index of debug parameter\n\t\t\t\treturn (/^--debug(-brk)?(=\\d+)?$/.test(debugArg)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tvar portIndex = inspectIndex >= 0 ? inspectIndex : debugIndex; //get index of port, inspect has higher priority\n\n\t\t\tif (portIndex >= 0) {\n\t\t\t\tvar match = /^--(debug|inspect)(?:-brk)?(?:=(\\d+))?$/.exec(debugVars[portIndex]); //get port\n\t\t\t\tvar port = defaultPorts[match[1]];\n\t\t\t\tif (match[2]) {\n\t\t\t\t\tport = parseInt(match[2]);\n\t\t\t\t}\n\t\t\t\tdebugVars[portIndex] = \"--\" + match[1] + \"=\" + (port + range.min + Math.floor(Math.random() * (range.max - range.min))); //new parameter\n\n\t\t\t\tif (debugIndex >= 0 && debugIndex !== portIndex) {\n\t\t\t\t\t//remove \"-brk\" from debug if there\n\t\t\t\t\tmatch = /^(--debug)(?:-brk)?(.*)/.exec(debugVars[debugIndex]);\n\t\t\t\t\tdebugVars[debugIndex] = match[1] + (match[2] ? match[2] : \"\");\n\t\t\t\t}\n\t\t\t}\n\t\t\toptions.execArgv = options.execArgv.concat(debugVars);\n\t\t}\n\n\t\tdelete options.noDebugRedirection;\n\n\t\tthis.child = fork(worker, args, options);\n\t\tthis.onerror = undefined;\n\t\tthis.onmessage = undefined;\n\n\t\tthis.child.on(\"error\", function (e) {\n\t\t\tif (_this.onerror) {\n\t\t\t\t_this.onerror.call(_this, e);\n\t\t\t}\n\t\t});\n\n\t\tthis.child.on(\"message\", function (msg) {\n\t\t\tvar message = JSON.parse(msg);\n\t\t\tvar error = void 0;\n\n\t\t\tif (!message.error && _this.onmessage) {\n\t\t\t\t_this.onmessage.call(_this, message);\n\t\t\t}\n\n\t\t\tif (message.error && _this.onerror) {\n\t\t\t\terror = new Error(message.error);\n\t\t\t\terror.stack = message.stack;\n\n\t\t\t\t_this.onerror.call(_this, error);\n\t\t\t}\n\t\t});\n\n\t\tthis.child.send({ input: input, isfn: isfn, cwd: options.cwd, esm: options.esm });\n\t}\n\n\t_createClass(Worker, [{\n\t\tkey: \"addEventListener\",\n\t\tvalue: function addEventListener(event, fn) {\n\t\t\tif (events.test(event)) {\n\t\t\t\tthis[\"on\" + event] = fn;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"postMessage\",\n\t\tvalue: function postMessage(msg) {\n\t\t\tthis.child.send(JSON.stringify({ data: msg }, null, 0));\n\t\t}\n\t}, {\n\t\tkey: \"terminate\",\n\t\tvalue: function terminate() {\n\t\t\tthis.child.kill(\"SIGINT\");\n\t\t}\n\t}], [{\n\t\tkey: \"setRange\",\n\t\tvalue: function setRange(min, max) {\n\t\t\tif (min >= max) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\trange.min = min;\n\t\t\trange.max = max;\n\n\t\t\treturn true;\n\t\t}\n\t}]);\n\n\treturn Worker;\n}();\n\nmodule.exports = Worker;\n","/* eslint-disable @typescript-eslint/no-require-imports */\n\n/* eslint-disable unicorn/prefer-add-event-listener */\n/* eslint-disable unicorn/prefer-event-target */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable unicorn/text-encoding-identifier-case */\n\nimport { EventEmitter } from 'node:events'\nimport { cpus } from 'node:os'\nimport path from 'node:path'\nimport { cwd } from 'node:process'\nimport { Worker as NativeWorker } from 'node:worker_threads'\n\nimport type {\n ImplementationExport, ThreadsWorkerOptions, WorkerImplementation,\n// eslint-disable-next-line import-x/no-internal-modules\n} from '../types/master.ts'\n\ndeclare const __non_webpack_require__: typeof require\n\ntype WorkerEventName = 'error' | 'message'\n\nexport const defaultPoolSize = cpus().length\n\nfunction resolveScriptPath(scriptPath: string, baseURL?: string | undefined) {\n const makeAbsolute = (filePath: string) => {\n return path.isAbsolute(filePath) ? filePath : path.join(baseURL ?? cwd(), filePath)\n }\n\n const absolutePath = makeAbsolute(scriptPath)\n return absolutePath\n}\n\nfunction initWorkerThreadsWorker(): ImplementationExport {\n let allWorkers: Array<NativeWorker> = []\n\n class Worker extends NativeWorker {\n private mappedEventListeners: WeakMap<EventListener, EventListener>\n\n constructor(scriptPath: string, options?: ThreadsWorkerOptions & { fromSource: boolean }) {\n const resolvedScriptPath = options && options.fromSource ? null : resolveScriptPath(scriptPath, (options ?? {})._baseURL)\n if (resolvedScriptPath) {\n super(resolvedScriptPath, options)\n } else {\n // `options.fromSource` is true\n const sourceCode = scriptPath\n super(sourceCode, { ...options, eval: true })\n }\n\n this.mappedEventListeners = new WeakMap()\n allWorkers.push(this)\n }\n\n addEventListener(eventName: string, rawListener: EventListener) {\n const listener = (message: any) => {\n rawListener({ data: message } as any)\n }\n this.mappedEventListeners.set(rawListener, listener)\n this.on(eventName, listener)\n }\n\n removeEventListener(eventName: string, rawListener: EventListener) {\n const listener = this.mappedEventListeners.get(rawListener) || rawListener\n this.off(eventName, listener)\n }\n }\n\n const terminateWorkersAndMaster = () => {\n // we should terminate all workers and then gracefully shutdown self process\n Promise.all(allWorkers.map(worker => worker.terminate())).then(\n () => process.exit(0),\n () => process.exit(1),\n )\n allWorkers = []\n }\n\n // Take care to not leave orphaned processes behind. See #147.\n process.on('SIGINT', () => terminateWorkersAndMaster())\n process.on('SIGTERM', () => terminateWorkersAndMaster())\n\n class BlobWorker extends Worker {\n constructor(blob: Uint8Array, options?: ThreadsWorkerOptions) {\n super(Buffer.from(blob).toString('utf-8'), { ...options, fromSource: true })\n }\n\n static fromText(source: string, options?: ThreadsWorkerOptions): WorkerImplementation {\n return new Worker(source, { ...options, fromSource: true }) as any\n }\n }\n\n return {\n blob: BlobWorker as any,\n default: Worker as any,\n }\n}\n\nfunction initTinyWorker(): ImplementationExport {\n const TinyWorker = require('tiny-worker')\n\n let allWorkers: Array<typeof TinyWorker> = []\n\n class Worker extends TinyWorker {\n private emitter: EventEmitter\n\n constructor(scriptPath: string, options?: ThreadsWorkerOptions & { fromSource?: boolean }) {\n // Need to apply a work-around for Windows or it will choke upon the absolute path\n // (`Error [ERR_INVALID_PROTOCOL]: Protocol 'c:' not supported`)\n const resolvedScriptPath\n = options && options.fromSource\n ? null\n : process.platform === 'win32'\n ? `file:///${resolveScriptPath(scriptPath).replaceAll('\\\\', '/')}`\n : resolveScriptPath(scriptPath)\n\n if (resolvedScriptPath) {\n super(resolvedScriptPath, [], { esm: true })\n } else {\n // `options.fromSource` is true\n const sourceCode = scriptPath\n super(new Function(sourceCode), [], { esm: true })\n }\n\n allWorkers.push(this)\n\n this.emitter = new EventEmitter()\n this.onerror = (error: Error) => this.emitter.emit('error', error)\n this.onmessage = (message: MessageEvent) => this.emitter.emit('message', message)\n }\n\n addEventListener(eventName: WorkerEventName, listener: EventListener) {\n this.emitter.addListener(eventName, listener)\n }\n\n removeEventListener(eventName: WorkerEventName, listener: EventListener) {\n this.emitter.removeListener(eventName, listener)\n }\n\n terminate() {\n allWorkers = allWorkers.filter(worker => worker !== this)\n return super.terminate()\n }\n }\n\n const terminateWorkersAndMaster = () => {\n // we should terminate all workers and then gracefully shutdown self process\n Promise.all(allWorkers.map(worker => worker.terminate())).then(\n () => process.exit(0),\n () => process.exit(1),\n )\n allWorkers = []\n }\n\n // Take care to not leave orphaned processes behind\n // See <https://github.com/avoidwork/tiny-worker#faq>\n process.on('SIGINT', () => terminateWorkersAndMaster())\n process.on('SIGTERM', () => terminateWorkersAndMaster())\n\n class BlobWorker extends Worker {\n constructor(blob: Uint8Array, options?: ThreadsWorkerOptions) {\n super(Buffer.from(blob).toString('utf-8'), { ...options, fromSource: true })\n }\n\n static fromText(source: string, options?: ThreadsWorkerOptions): WorkerImplementation {\n return new Worker(source, { ...options, fromSource: true }) as any\n }\n }\n\n return {\n blob: BlobWorker as any,\n default: Worker as any,\n }\n}\n\nlet implementation: ImplementationExport\nlet isTinyWorker: boolean\n\nfunction selectWorkerImplementation(): ImplementationExport {\n try {\n isTinyWorker = false\n return initWorkerThreadsWorker()\n } catch (ex) {\n console.error(ex)\n // tslint:disable-next-line no-console\n console.debug('Node worker_threads not available. Trying to fall back to tiny-worker polyfill...')\n isTinyWorker = true\n return initTinyWorker()\n }\n}\n\nexport function getWorkerImplementation(): ImplementationExport {\n if (!implementation) {\n implementation = selectWorkerImplementation()\n }\n return implementation\n}\n\nexport function isWorkerRuntime() {\n if (isTinyWorker) {\n return globalThis !== undefined && self['postMessage'] ? true : false\n } else {\n // Webpack hack\n const isMainThread\n = typeof __non_webpack_require__ === 'function'\n ? __non_webpack_require__('worker_threads').isMainThread\n : eval('require')('worker_threads').isMainThread\n return !isMainThread\n }\n}\n","/* eslint-disable import-x/no-internal-modules */\nimport type { BlobWorker as BlobWorkerClass, Worker as WorkerType } from '../types/master.ts'\nimport * as NodeImplementation from './implementation.node.ts'\n\nexport type { FunctionThread, ModuleThread } from '../types/master.ts'\nexport { Pool } from './pool-browser.ts'\nexport { spawn } from './spawn.ts'\nexport { Thread } from './thread.ts'\n\nexport type BlobWorker = typeof BlobWorkerClass\nexport type Worker = WorkerType\n\n/** Separate class to spawn workers from source code blobs or strings. */\nexport const BlobWorker = NodeImplementation.getWorkerImplementation().blob\n\n/** Worker implementation. Either web worker or a node.js Worker class. */\nexport const Worker = NodeImplementation.getWorkerImplementation().default\n\nexport { isWorkerRuntime } from './implementation.node.ts'\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Worker as WorkerImplementation } from './index-node.ts'\n\ndeclare const window: any\n\nif (typeof globalThis !== 'undefined') {\n ;(globalThis as any).Worker = WorkerImplementation\n} else if (window !== undefined) {\n ;(window as any).Worker = WorkerImplementation\n}\n"],"mappings":"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","names":["_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","Constructor","protoProps","staticProps","prototype","_classCallCheck","instance","TypeError","path","require","fork","worker","join","__dirname","events","defaultPorts","inspect","debug","range","min","max","Worker","arg","_this","args","arguments","undefined","options","cwd","process","isfn","input","toString","debugVars","execArgv","filter","execArg","test","noDebugRedirection","Array","from","inspectIndex","findIndex","debugArg","debugIndex","portIndex","match","exec","port","parseInt","Math","floor","random","concat","child","onerror","onmessage","on","e","call","msg","message","JSON","parse","error","Error","stack","send","esm","value","addEventListener","event","fn","postMessage","stringify","data","terminate","kill","setRange","module","exports","EventEmitter","cpus","path","cwd","Worker","NativeWorker","defaultPoolSize","cpus","length","resolveScriptPath","scriptPath","baseURL","makeAbsolute","filePath","path","isAbsolute","join","cwd","absolutePath","initWorkerThreadsWorker","allWorkers","Worker","NativeWorker","mappedEventListeners","options","resolvedScriptPath","fromSource","_baseURL","sourceCode","eval","WeakMap","push","addEventListener","eventName","rawListener","listener","message","data","set","on","removeEventListener","get","off","terminateWorkersAndMaster","Promise","all","map","worker","terminate","then","process","exit","BlobWorker","blob","Buffer","from","toString","fromText","source","default","initTinyWorker","TinyWorker","require","emitter","platform","replaceAll","esm","Function","EventEmitter","onerror","error","emit","onmessage","addListener","removeListener","filter","implementation","isTinyWorker","selectWorkerImplementation","ex","console","debug","getWorkerImplementation","isWorkerRuntime","globalThis","undefined","self","isMainThread","__non_webpack_require__","BlobWorker","getWorkerImplementation","blob","Worker","default","globalThis","Worker","WorkerImplementation","window","undefined"]}