@loaders.gl/worker-utils 3.2.0-alpha.1 → 3.2.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es5/lib/env-utils/version.js +2 -2
- package/dist/es5/lib/library-utils/library-utils.js +1 -1
- package/dist/es5/lib/worker-api/get-worker-url.js +1 -1
- package/dist/es5/lib/worker-api/process-on-worker.js +17 -10
- package/dist/es5/lib/worker-api/process-on-worker.js.map +1 -1
- package/dist/es5/lib/worker-farm/worker-thread.js +3 -1
- package/dist/es5/lib/worker-farm/worker-thread.js.map +1 -1
- package/dist/esm/lib/env-utils/version.js +2 -2
- package/dist/esm/lib/library-utils/library-utils.js +1 -1
- package/dist/esm/lib/worker-api/get-worker-url.js +1 -1
- package/dist/esm/lib/worker-api/process-on-worker.js +12 -4
- package/dist/esm/lib/worker-api/process-on-worker.js.map +1 -1
- package/dist/esm/lib/worker-farm/worker-thread.js +1 -1
- package/dist/esm/lib/worker-farm/worker-thread.js.map +1 -1
- package/dist/lib/worker-api/process-on-worker.d.ts.map +1 -1
- package/dist/lib/worker-api/process-on-worker.js +6 -2
- package/dist/lib/worker-farm/worker-thread.d.ts.map +1 -1
- package/dist/lib/worker-farm/worker-thread.js +1 -2
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/lib/worker-api/process-on-worker.ts +6 -2
- package/src/lib/worker-farm/worker-thread.ts +1 -2
- package/src/types.ts +2 -1
|
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.VERSION = void 0;
|
|
7
7
|
var DEFAULT_VERSION = 'beta';
|
|
8
|
-
var VERSION = typeof "3.2.0-alpha.
|
|
8
|
+
var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : DEFAULT_VERSION;
|
|
9
9
|
exports.VERSION = VERSION;
|
|
10
10
|
|
|
11
|
-
if (typeof "3.2.0-alpha.
|
|
11
|
+
if (typeof "3.2.0-alpha.4" === 'undefined') {
|
|
12
12
|
console.error('loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.');
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=version.js.map
|
|
@@ -27,7 +27,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
27
27
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
28
28
|
|
|
29
29
|
var LATEST = 'beta';
|
|
30
|
-
var VERSION = typeof "3.2.0-alpha.
|
|
30
|
+
var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : LATEST;
|
|
31
31
|
var loadLibraryPromises = {};
|
|
32
32
|
|
|
33
33
|
function loadLibrary(_x) {
|
|
@@ -11,7 +11,7 @@ var _assert = require("../env-utils/assert");
|
|
|
11
11
|
var _version = require("../env-utils/version");
|
|
12
12
|
|
|
13
13
|
var NPM_TAG = 'beta';
|
|
14
|
-
var VERSION = typeof "3.2.0-alpha.
|
|
14
|
+
var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : NPM_TAG;
|
|
15
15
|
|
|
16
16
|
function getWorkerName(worker) {
|
|
17
17
|
var warning = worker.version !== VERSION ? " (worker-utils@".concat(VERSION, ")") : '';
|
|
@@ -35,8 +35,9 @@ function _processOnWorker() {
|
|
|
35
35
|
var options,
|
|
36
36
|
context,
|
|
37
37
|
name,
|
|
38
|
-
url,
|
|
39
38
|
workerFarm,
|
|
39
|
+
source,
|
|
40
|
+
workerPoolProps,
|
|
40
41
|
workerPool,
|
|
41
42
|
jobName,
|
|
42
43
|
job,
|
|
@@ -50,31 +51,37 @@ function _processOnWorker() {
|
|
|
50
51
|
options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};
|
|
51
52
|
context = _args.length > 3 && _args[3] !== undefined ? _args[3] : {};
|
|
52
53
|
name = (0, _getWorkerUrl.getWorkerName)(worker);
|
|
53
|
-
url = (0, _getWorkerUrl.getWorkerURL)(worker, options);
|
|
54
54
|
workerFarm = _workerFarm.default.getWorkerFarm(options);
|
|
55
|
-
|
|
55
|
+
source = options.source;
|
|
56
|
+
workerPoolProps = {
|
|
56
57
|
name: name,
|
|
57
|
-
|
|
58
|
-
}
|
|
58
|
+
source: source
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
if (!source) {
|
|
62
|
+
workerPoolProps.url = (0, _getWorkerUrl.getWorkerURL)(worker, options);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
workerPool = workerFarm.getWorkerPool(workerPoolProps);
|
|
59
66
|
jobName = options.jobName || worker.name;
|
|
60
|
-
_context.next =
|
|
67
|
+
_context.next = 11;
|
|
61
68
|
return workerPool.startJob(jobName, onMessage.bind(null, context));
|
|
62
69
|
|
|
63
|
-
case
|
|
70
|
+
case 11:
|
|
64
71
|
job = _context.sent;
|
|
65
72
|
transferableOptions = (0, _removeNontransferableOptions.removeNontransferableOptions)(options);
|
|
66
73
|
job.postMessage('process', {
|
|
67
74
|
input: data,
|
|
68
75
|
options: transferableOptions
|
|
69
76
|
});
|
|
70
|
-
_context.next =
|
|
77
|
+
_context.next = 16;
|
|
71
78
|
return job.result;
|
|
72
79
|
|
|
73
|
-
case
|
|
80
|
+
case 16:
|
|
74
81
|
result = _context.sent;
|
|
75
82
|
return _context.abrupt("return", result.result);
|
|
76
83
|
|
|
77
|
-
case
|
|
84
|
+
case 18:
|
|
78
85
|
case "end":
|
|
79
86
|
return _context.stop();
|
|
80
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/worker-api/process-on-worker.ts"],"names":["canProcessOnWorker","worker","options","WorkerFarm","isSupported","processOnWorker","data","context","name","
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/worker-api/process-on-worker.ts"],"names":["canProcessOnWorker","worker","options","WorkerFarm","isSupported","processOnWorker","data","context","name","workerFarm","getWorkerFarm","source","workerPoolProps","url","workerPool","getWorkerPool","jobName","startJob","onMessage","bind","job","transferableOptions","postMessage","input","result","type","payload","done","error","Error","id","process","message","console","warn"],"mappings":"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","sourcesContent":["import type {\n WorkerObject,\n WorkerOptions,\n WorkerContext,\n WorkerMessageType,\n WorkerMessagePayload\n} from '../../types';\nimport type WorkerJob from '../worker-farm/worker-job';\nimport WorkerFarm from '../worker-farm/worker-farm';\nimport {removeNontransferableOptions} from '../worker-utils/remove-nontransferable-options';\nimport {getWorkerURL, getWorkerName} from './get-worker-url';\n\ntype ProcessOnWorkerOptions = WorkerOptions & {\n jobName?: string;\n [key: string]: any;\n};\n\n/**\n * Determines if we can parse with worker\n * @param loader\n * @param data\n * @param options\n */\nexport function canProcessOnWorker(worker: WorkerObject, options?: WorkerOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n return worker.worker && options?.worker;\n}\n\n/**\n * This function expects that the worker thread sends certain messages,\n * Creating such a worker can be automated if the worker is wrapper by a call to\n * createWorker in @loaders.gl/worker-utils.\n */\nexport async function processOnWorker(\n worker: WorkerObject,\n data: any,\n options: ProcessOnWorkerOptions = {},\n context: WorkerContext = {}\n): Promise<any> {\n const name = getWorkerName(worker);\n\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const {source} = options;\n const workerPoolProps: {name: string; source?: string; url?: string} = {name, source};\n if (!source) {\n workerPoolProps.url = getWorkerURL(worker, options);\n }\n const workerPool = workerFarm.getWorkerPool(workerPoolProps);\n\n const jobName = options.jobName || worker.name;\n const job = await workerPool.startJob(\n jobName,\n // eslint-disable-next-line\n onMessage.bind(null, context)\n );\n\n // Kick off the processing in the worker\n const transferableOptions = removeNontransferableOptions(options);\n job.postMessage('process', {input: data, options: transferableOptions});\n\n const result = await job.result;\n return result.result;\n}\n\n/**\n * Job completes when we receive the result\n * @param job\n * @param message\n */\nasync function onMessage(\n context: WorkerContext,\n job: WorkerJob,\n type: WorkerMessageType,\n payload: WorkerMessagePayload\n) {\n switch (type) {\n case 'done':\n // Worker is done\n job.done(payload);\n break;\n\n case 'error':\n // Worker encountered an error\n job.error(new Error(payload.error));\n break;\n\n case 'process':\n // Worker is asking for us (main thread) to process something\n const {id, input, options} = payload;\n try {\n if (!context.process) {\n job.postMessage('error', {id, error: 'Worker not set up to process on main thread'});\n return;\n }\n const result = await context.process(input, options);\n job.postMessage('done', {id, result});\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {id, error: message});\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.warn(`process-on-worker: unknown message ${type}`);\n }\n}\n"],"file":"process-on-worker.js"}
|
|
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
|
+
|
|
10
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
13
|
|
|
12
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -153,7 +155,7 @@ var WorkerThread = function () {
|
|
|
153
155
|
}], [{
|
|
154
156
|
key: "isSupported",
|
|
155
157
|
value: function isSupported() {
|
|
156
|
-
return typeof Worker !== 'undefined' && _globals.isBrowser;
|
|
158
|
+
return typeof Worker !== 'undefined' && _globals.isBrowser || (0, _typeof2.default)(_worker_threads.Worker) !== undefined;
|
|
157
159
|
}
|
|
158
160
|
}]);
|
|
159
161
|
return WorkerThread;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/worker-farm/worker-thread.ts"],"names":["NOOP","WorkerThread","props","name","source","url","onMessage","onError","error","console","log","worker","isBrowser","_createBrowserWorker","_createNodeWorker","terminate","terminated","Boolean","data","transferList","postMessage","event","message","lineno","colno","Error","_loadableURL","Worker","onmessage","onerror","_getErrorFromErrorEvent","onmessageerror","absolute","includes","startsWith","NodeWorker","eval","on","code"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/worker-farm/worker-thread.ts"],"names":["NOOP","WorkerThread","props","name","source","url","onMessage","onError","error","console","log","worker","isBrowser","_createBrowserWorker","_createNodeWorker","terminate","terminated","Boolean","data","transferList","postMessage","event","message","lineno","colno","Error","_loadableURL","Worker","onmessage","onerror","_getErrorFromErrorEvent","onmessageerror","absolute","includes","startsWith","NodeWorker","eval","on","code","undefined"],"mappings":"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","sourcesContent":["import {Worker as NodeWorker} from 'worker_threads';\nimport {isBrowser} from '../env-utils/globals';\nimport {assert} from '../env-utils/assert';\nimport {getLoadableWorkerURL} from '../worker-utils/get-loadable-worker-url';\nimport {getTransferList} from '../worker-utils/get-transfer-list';\n\nconst NOOP = () => {};\n\nexport type WorkerThreadProps = {\n name: string;\n source?: string;\n url?: string;\n};\n\n/**\n * Represents one worker thread\n */\nexport default class WorkerThread {\n readonly name: string;\n readonly source: string | undefined;\n readonly url: string | undefined;\n terminated: boolean = false;\n worker: Worker | NodeWorker;\n onMessage: (message: any) => void;\n onError: (error: Error) => void;\n\n private _loadableURL: string = '';\n\n /** Checks if workers are supported on this platform */\n static isSupported(): boolean {\n return (typeof Worker !== 'undefined' && isBrowser) || typeof NodeWorker !== undefined;\n }\n\n constructor(props: WorkerThreadProps) {\n const {name, source, url} = props;\n assert(source || url); // Either source or url must be defined\n this.name = name;\n this.source = source;\n this.url = url;\n this.onMessage = NOOP;\n this.onError = (error) => console.log(error); // eslint-disable-line\n\n this.worker = isBrowser ? this._createBrowserWorker() : this._createNodeWorker();\n }\n\n /**\n * Terminate this worker thread\n * @note Can free up significant memory\n */\n destroy(): void {\n this.onMessage = NOOP;\n this.onError = NOOP;\n this.worker.terminate(); // eslint-disable-line @typescript-eslint/no-floating-promises\n this.terminated = true;\n }\n\n get isRunning() {\n return Boolean(this.onMessage);\n }\n\n /**\n * Send a message to this worker thread\n * @param data any data structure, ideally consisting mostly of transferrable objects\n * @param transferList If not supplied, calculated automatically by traversing data\n */\n postMessage(data: any, transferList?: any[]): void {\n transferList = transferList || getTransferList(data);\n // @ts-ignore\n this.worker.postMessage(data, transferList);\n }\n\n // PRIVATE\n\n /**\n * Generate a standard Error from an ErrorEvent\n * @param event\n */\n _getErrorFromErrorEvent(event: ErrorEvent): Error {\n // Note Error object does not have the expected fields if loading failed completely\n // https://developer.mozilla.org/en-US/docs/Web/API/Worker#Event_handlers\n // https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n let message = 'Failed to load ';\n message += `worker ${this.name} from ${this.url}. `;\n if (event.message) {\n message += `${event.message} in `;\n }\n // const hasFilename = event.filename && !event.filename.startsWith('blob:');\n // message += hasFilename ? event.filename : this.source.slice(0, 100);\n if (event.lineno) {\n message += `:${event.lineno}:${event.colno}`;\n }\n return new Error(message);\n }\n\n /**\n * Creates a worker thread on the browser\n */\n _createBrowserWorker(): Worker {\n this._loadableURL = getLoadableWorkerURL({source: this.source, url: this.url});\n const worker = new Worker(this._loadableURL, {name: this.name});\n\n worker.onmessage = (event) => {\n if (!event.data) {\n this.onError(new Error('No data received'));\n } else {\n this.onMessage(event.data);\n }\n };\n // This callback represents an uncaught exception in the worker thread\n worker.onerror = (error: ErrorEvent): void => {\n this.onError(this._getErrorFromErrorEvent(error));\n this.terminated = true;\n };\n // TODO - not clear when this would be called, for now just log in case it happens\n worker.onmessageerror = (event) => console.error(event); // eslint-disable-line\n\n return worker;\n }\n\n /**\n * Creates a worker thread in node.js\n * @todo https://nodejs.org/api/async_hooks.html#async-resource-worker-pool\n */\n _createNodeWorker(): NodeWorker {\n let worker: NodeWorker;\n if (this.url) {\n // Make sure relative URLs start with './'\n const absolute = this.url.includes(':/') || this.url.startsWith('/');\n const url = absolute ? this.url : `./${this.url}`;\n // console.log('Starting work from', url);\n worker = new NodeWorker(url, {eval: false});\n } else if (this.source) {\n worker = new NodeWorker(this.source, {eval: true});\n } else {\n throw new Error('no worker');\n }\n worker.on('message', (data) => {\n // console.error('message', data);\n this.onMessage(data);\n });\n worker.on('error', (error) => {\n // console.error('error', error);\n this.onError(error);\n });\n worker.on('exit', (code) => {\n // console.error('exit', code);\n });\n return worker;\n }\n}\n"],"file":"worker-thread.js"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const DEFAULT_VERSION = 'beta';
|
|
2
|
-
export const VERSION = typeof "3.2.0-alpha.
|
|
2
|
+
export const VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : DEFAULT_VERSION;
|
|
3
3
|
|
|
4
|
-
if (typeof "3.2.0-alpha.
|
|
4
|
+
if (typeof "3.2.0-alpha.4" === 'undefined') {
|
|
5
5
|
console.error('loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.');
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
|
@@ -3,7 +3,7 @@ import * as node from '../node/require-utils.node';
|
|
|
3
3
|
import { assert } from '../env-utils/assert';
|
|
4
4
|
import { VERSION as __VERSION__ } from '../env-utils/version';
|
|
5
5
|
const LATEST = 'beta';
|
|
6
|
-
const VERSION = typeof "3.2.0-alpha.
|
|
6
|
+
const VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : LATEST;
|
|
7
7
|
const loadLibraryPromises = {};
|
|
8
8
|
export async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
|
|
9
9
|
if (moduleName) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { assert } from '../env-utils/assert';
|
|
2
2
|
import { VERSION as __VERSION__ } from '../env-utils/version';
|
|
3
3
|
const NPM_TAG = 'beta';
|
|
4
|
-
const VERSION = typeof "3.2.0-alpha.
|
|
4
|
+
const VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : NPM_TAG;
|
|
5
5
|
export function getWorkerName(worker) {
|
|
6
6
|
const warning = worker.version !== VERSION ? " (worker-utils@".concat(VERSION, ")") : '';
|
|
7
7
|
return "".concat(worker.name, "@").concat(worker.version).concat(warning);
|
|
@@ -10,12 +10,20 @@ export function canProcessOnWorker(worker, options) {
|
|
|
10
10
|
}
|
|
11
11
|
export async function processOnWorker(worker, data, options = {}, context = {}) {
|
|
12
12
|
const name = getWorkerName(worker);
|
|
13
|
-
const url = getWorkerURL(worker, options);
|
|
14
13
|
const workerFarm = WorkerFarm.getWorkerFarm(options);
|
|
15
|
-
const
|
|
14
|
+
const {
|
|
15
|
+
source
|
|
16
|
+
} = options;
|
|
17
|
+
const workerPoolProps = {
|
|
16
18
|
name,
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
+
source
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
if (!source) {
|
|
23
|
+
workerPoolProps.url = getWorkerURL(worker, options);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const workerPool = workerFarm.getWorkerPool(workerPoolProps);
|
|
19
27
|
const jobName = options.jobName || worker.name;
|
|
20
28
|
const job = await workerPool.startJob(jobName, onMessage.bind(null, context));
|
|
21
29
|
const transferableOptions = removeNontransferableOptions(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/worker-api/process-on-worker.ts"],"names":["WorkerFarm","removeNontransferableOptions","getWorkerURL","getWorkerName","canProcessOnWorker","worker","options","isSupported","processOnWorker","data","context","name","
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/worker-api/process-on-worker.ts"],"names":["WorkerFarm","removeNontransferableOptions","getWorkerURL","getWorkerName","canProcessOnWorker","worker","options","isSupported","processOnWorker","data","context","name","workerFarm","getWorkerFarm","source","workerPoolProps","url","workerPool","getWorkerPool","jobName","job","startJob","onMessage","bind","transferableOptions","postMessage","input","result","type","payload","done","error","Error","id","process","message","console","warn"],"mappings":"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","sourcesContent":["import type {\n WorkerObject,\n WorkerOptions,\n WorkerContext,\n WorkerMessageType,\n WorkerMessagePayload\n} from '../../types';\nimport type WorkerJob from '../worker-farm/worker-job';\nimport WorkerFarm from '../worker-farm/worker-farm';\nimport {removeNontransferableOptions} from '../worker-utils/remove-nontransferable-options';\nimport {getWorkerURL, getWorkerName} from './get-worker-url';\n\ntype ProcessOnWorkerOptions = WorkerOptions & {\n jobName?: string;\n [key: string]: any;\n};\n\n/**\n * Determines if we can parse with worker\n * @param loader\n * @param data\n * @param options\n */\nexport function canProcessOnWorker(worker: WorkerObject, options?: WorkerOptions) {\n if (!WorkerFarm.isSupported()) {\n return false;\n }\n\n return worker.worker && options?.worker;\n}\n\n/**\n * This function expects that the worker thread sends certain messages,\n * Creating such a worker can be automated if the worker is wrapper by a call to\n * createWorker in @loaders.gl/worker-utils.\n */\nexport async function processOnWorker(\n worker: WorkerObject,\n data: any,\n options: ProcessOnWorkerOptions = {},\n context: WorkerContext = {}\n): Promise<any> {\n const name = getWorkerName(worker);\n\n const workerFarm = WorkerFarm.getWorkerFarm(options);\n const {source} = options;\n const workerPoolProps: {name: string; source?: string; url?: string} = {name, source};\n if (!source) {\n workerPoolProps.url = getWorkerURL(worker, options);\n }\n const workerPool = workerFarm.getWorkerPool(workerPoolProps);\n\n const jobName = options.jobName || worker.name;\n const job = await workerPool.startJob(\n jobName,\n // eslint-disable-next-line\n onMessage.bind(null, context)\n );\n\n // Kick off the processing in the worker\n const transferableOptions = removeNontransferableOptions(options);\n job.postMessage('process', {input: data, options: transferableOptions});\n\n const result = await job.result;\n return result.result;\n}\n\n/**\n * Job completes when we receive the result\n * @param job\n * @param message\n */\nasync function onMessage(\n context: WorkerContext,\n job: WorkerJob,\n type: WorkerMessageType,\n payload: WorkerMessagePayload\n) {\n switch (type) {\n case 'done':\n // Worker is done\n job.done(payload);\n break;\n\n case 'error':\n // Worker encountered an error\n job.error(new Error(payload.error));\n break;\n\n case 'process':\n // Worker is asking for us (main thread) to process something\n const {id, input, options} = payload;\n try {\n if (!context.process) {\n job.postMessage('error', {id, error: 'Worker not set up to process on main thread'});\n return;\n }\n const result = await context.process(input, options);\n job.postMessage('done', {id, result});\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown error';\n job.postMessage('error', {id, error: message});\n }\n break;\n\n default:\n // eslint-disable-next-line\n console.warn(`process-on-worker: unknown message ${type}`);\n }\n}\n"],"file":"process-on-worker.js"}
|
|
@@ -9,7 +9,7 @@ const NOOP = () => {};
|
|
|
9
9
|
|
|
10
10
|
export default class WorkerThread {
|
|
11
11
|
static isSupported() {
|
|
12
|
-
return typeof Worker !== 'undefined' && isBrowser;
|
|
12
|
+
return typeof Worker !== 'undefined' && isBrowser || typeof NodeWorker !== undefined;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
constructor(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/worker-farm/worker-thread.ts"],"names":["Worker","NodeWorker","isBrowser","assert","getLoadableWorkerURL","getTransferList","NOOP","WorkerThread","isSupported","constructor","props","name","source","url","onMessage","onError","error","console","log","worker","_createBrowserWorker","_createNodeWorker","destroy","terminate","terminated","isRunning","Boolean","postMessage","data","transferList","_getErrorFromErrorEvent","event","message","lineno","colno","Error","_loadableURL","onmessage","onerror","onmessageerror","absolute","includes","startsWith","eval","on","code"],"mappings":";AAAA,SAAQA,MAAM,IAAIC,UAAlB,QAAmC,gBAAnC;AACA,SAAQC,SAAR,QAAwB,sBAAxB;AACA,SAAQC,MAAR,QAAqB,qBAArB;AACA,SAAQC,oBAAR,QAAmC,yCAAnC;AACA,SAAQC,eAAR,QAA8B,mCAA9B;;AAEA,MAAMC,IAAI,GAAG,MAAM,CAAE,CAArB;;AAWA,eAAe,MAAMC,YAAN,CAAmB;AAYd,SAAXC,WAAW,GAAY;AAC5B,
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/worker-farm/worker-thread.ts"],"names":["Worker","NodeWorker","isBrowser","assert","getLoadableWorkerURL","getTransferList","NOOP","WorkerThread","isSupported","undefined","constructor","props","name","source","url","onMessage","onError","error","console","log","worker","_createBrowserWorker","_createNodeWorker","destroy","terminate","terminated","isRunning","Boolean","postMessage","data","transferList","_getErrorFromErrorEvent","event","message","lineno","colno","Error","_loadableURL","onmessage","onerror","onmessageerror","absolute","includes","startsWith","eval","on","code"],"mappings":"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","sourcesContent":["import {Worker as NodeWorker} from 'worker_threads';\nimport {isBrowser} from '../env-utils/globals';\nimport {assert} from '../env-utils/assert';\nimport {getLoadableWorkerURL} from '../worker-utils/get-loadable-worker-url';\nimport {getTransferList} from '../worker-utils/get-transfer-list';\n\nconst NOOP = () => {};\n\nexport type WorkerThreadProps = {\n name: string;\n source?: string;\n url?: string;\n};\n\n/**\n * Represents one worker thread\n */\nexport default class WorkerThread {\n readonly name: string;\n readonly source: string | undefined;\n readonly url: string | undefined;\n terminated: boolean = false;\n worker: Worker | NodeWorker;\n onMessage: (message: any) => void;\n onError: (error: Error) => void;\n\n private _loadableURL: string = '';\n\n /** Checks if workers are supported on this platform */\n static isSupported(): boolean {\n return (typeof Worker !== 'undefined' && isBrowser) || typeof NodeWorker !== undefined;\n }\n\n constructor(props: WorkerThreadProps) {\n const {name, source, url} = props;\n assert(source || url); // Either source or url must be defined\n this.name = name;\n this.source = source;\n this.url = url;\n this.onMessage = NOOP;\n this.onError = (error) => console.log(error); // eslint-disable-line\n\n this.worker = isBrowser ? this._createBrowserWorker() : this._createNodeWorker();\n }\n\n /**\n * Terminate this worker thread\n * @note Can free up significant memory\n */\n destroy(): void {\n this.onMessage = NOOP;\n this.onError = NOOP;\n this.worker.terminate(); // eslint-disable-line @typescript-eslint/no-floating-promises\n this.terminated = true;\n }\n\n get isRunning() {\n return Boolean(this.onMessage);\n }\n\n /**\n * Send a message to this worker thread\n * @param data any data structure, ideally consisting mostly of transferrable objects\n * @param transferList If not supplied, calculated automatically by traversing data\n */\n postMessage(data: any, transferList?: any[]): void {\n transferList = transferList || getTransferList(data);\n // @ts-ignore\n this.worker.postMessage(data, transferList);\n }\n\n // PRIVATE\n\n /**\n * Generate a standard Error from an ErrorEvent\n * @param event\n */\n _getErrorFromErrorEvent(event: ErrorEvent): Error {\n // Note Error object does not have the expected fields if loading failed completely\n // https://developer.mozilla.org/en-US/docs/Web/API/Worker#Event_handlers\n // https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent\n let message = 'Failed to load ';\n message += `worker ${this.name} from ${this.url}. `;\n if (event.message) {\n message += `${event.message} in `;\n }\n // const hasFilename = event.filename && !event.filename.startsWith('blob:');\n // message += hasFilename ? event.filename : this.source.slice(0, 100);\n if (event.lineno) {\n message += `:${event.lineno}:${event.colno}`;\n }\n return new Error(message);\n }\n\n /**\n * Creates a worker thread on the browser\n */\n _createBrowserWorker(): Worker {\n this._loadableURL = getLoadableWorkerURL({source: this.source, url: this.url});\n const worker = new Worker(this._loadableURL, {name: this.name});\n\n worker.onmessage = (event) => {\n if (!event.data) {\n this.onError(new Error('No data received'));\n } else {\n this.onMessage(event.data);\n }\n };\n // This callback represents an uncaught exception in the worker thread\n worker.onerror = (error: ErrorEvent): void => {\n this.onError(this._getErrorFromErrorEvent(error));\n this.terminated = true;\n };\n // TODO - not clear when this would be called, for now just log in case it happens\n worker.onmessageerror = (event) => console.error(event); // eslint-disable-line\n\n return worker;\n }\n\n /**\n * Creates a worker thread in node.js\n * @todo https://nodejs.org/api/async_hooks.html#async-resource-worker-pool\n */\n _createNodeWorker(): NodeWorker {\n let worker: NodeWorker;\n if (this.url) {\n // Make sure relative URLs start with './'\n const absolute = this.url.includes(':/') || this.url.startsWith('/');\n const url = absolute ? this.url : `./${this.url}`;\n // console.log('Starting work from', url);\n worker = new NodeWorker(url, {eval: false});\n } else if (this.source) {\n worker = new NodeWorker(this.source, {eval: true});\n } else {\n throw new Error('no worker');\n }\n worker.on('message', (data) => {\n // console.error('message', data);\n this.onMessage(data);\n });\n worker.on('error', (error) => {\n // console.error('error', error);\n this.onError(error);\n });\n worker.on('exit', (code) => {\n // console.error('exit', code);\n });\n return worker;\n }\n}\n"],"file":"worker-thread.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-on-worker.d.ts","sourceRoot":"","sources":["../../../src/lib/worker-api/process-on-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EAGd,MAAM,aAAa,CAAC;AAMrB,aAAK,sBAAsB,GAAG,aAAa,GAAG;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,aAAa,4BAM/E;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,sBAA2B,EACpC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"process-on-worker.d.ts","sourceRoot":"","sources":["../../../src/lib/worker-api/process-on-worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EAGd,MAAM,aAAa,CAAC;AAMrB,aAAK,sBAAsB,GAAG,aAAa,GAAG;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,aAAa,4BAM/E;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,GAAG,EACT,OAAO,GAAE,sBAA2B,EACpC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,GAAG,CAAC,CAwBd"}
|
|
@@ -27,9 +27,13 @@ exports.canProcessOnWorker = canProcessOnWorker;
|
|
|
27
27
|
*/
|
|
28
28
|
async function processOnWorker(worker, data, options = {}, context = {}) {
|
|
29
29
|
const name = (0, get_worker_url_1.getWorkerName)(worker);
|
|
30
|
-
const url = (0, get_worker_url_1.getWorkerURL)(worker, options);
|
|
31
30
|
const workerFarm = worker_farm_1.default.getWorkerFarm(options);
|
|
32
|
-
const
|
|
31
|
+
const { source } = options;
|
|
32
|
+
const workerPoolProps = { name, source };
|
|
33
|
+
if (!source) {
|
|
34
|
+
workerPoolProps.url = (0, get_worker_url_1.getWorkerURL)(worker, options);
|
|
35
|
+
}
|
|
36
|
+
const workerPool = workerFarm.getWorkerPool(workerPoolProps);
|
|
33
37
|
const jobName = options.jobName || worker.name;
|
|
34
38
|
const job = await workerPool.startJob(jobName,
|
|
35
39
|
// eslint-disable-next-line
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-thread.d.ts","sourceRoot":"","sources":["../../../src/lib/worker-farm/worker-thread.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAQpD,oBAAY,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,OAAO,CAAS;IAC5B,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5B,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEhC,OAAO,CAAC,YAAY,CAAc;IAElC,uDAAuD;IACvD,MAAM,CAAC,WAAW,IAAI,OAAO;
|
|
1
|
+
{"version":3,"file":"worker-thread.d.ts","sourceRoot":"","sources":["../../../src/lib/worker-farm/worker-thread.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAQpD,oBAAY,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,OAAO,CAAS;IAC5B,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5B,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEhC,OAAO,CAAC,YAAY,CAAc;IAElC,uDAAuD;IACvD,MAAM,CAAC,WAAW,IAAI,OAAO;gBAIjB,KAAK,EAAE,iBAAiB;IAYpC;;;OAGG;IACH,OAAO,IAAI,IAAI;IAOf,IAAI,SAAS,YAEZ;IAED;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI;IAQlD;;;OAGG;IACH,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK;IAiBjD;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAsB9B;;;OAGG;IACH,iBAAiB,IAAI,UAAU;CA0BhC"}
|
|
@@ -24,8 +24,7 @@ class WorkerThread {
|
|
|
24
24
|
}
|
|
25
25
|
/** Checks if workers are supported on this platform */
|
|
26
26
|
static isSupported() {
|
|
27
|
-
return typeof Worker !== 'undefined' && globals_1.isBrowser;
|
|
28
|
-
// || typeof NodeWorker !== undefined;
|
|
27
|
+
return (typeof Worker !== 'undefined' && globals_1.isBrowser) || typeof worker_threads_1.Worker !== undefined;
|
|
29
28
|
}
|
|
30
29
|
/**
|
|
31
30
|
* Terminate this worker thread
|
package/dist/types.d.ts
CHANGED
|
@@ -30,7 +30,9 @@ export declare type WorkerObject = {
|
|
|
30
30
|
module: string;
|
|
31
31
|
version: string;
|
|
32
32
|
worker?: string | boolean;
|
|
33
|
-
options:
|
|
33
|
+
options: {
|
|
34
|
+
[key: string]: any;
|
|
35
|
+
};
|
|
34
36
|
deprecatedOptions?: object;
|
|
35
37
|
process?: Process;
|
|
36
38
|
processInBatches?: ProcessInBatches;
|
|
@@ -41,6 +43,9 @@ export declare type WorkerMessagePayload = {
|
|
|
41
43
|
options?: {
|
|
42
44
|
[key: string]: any;
|
|
43
45
|
};
|
|
46
|
+
context?: {
|
|
47
|
+
[key: string]: any;
|
|
48
|
+
};
|
|
44
49
|
input?: any;
|
|
45
50
|
result?: any;
|
|
46
51
|
error?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,aAAa,GAAG;IAE1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,oBAAY,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,GAAG,CAAC;AAElG,oBAAY,gBAAgB,GAAG,CAC7B,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,EAC5C,OAAO,CAAC,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,EAC9B,OAAO,CAAC,EAAE,aAAa,KACpB,aAAa,CAAC,GAAG,CAAC,CAAC;AAExB;;GAEG;AACH,oBAAY,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,aAAa,GAAG;IAE1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,oBAAY,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,GAAG,CAAC;AAElG,oBAAY,gBAAgB,GAAG,CAC7B,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,EAC5C,OAAO,CAAC,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,EAC9B,OAAO,CAAC,EAAE,aAAa,KACpB,aAAa,CAAC,GAAG,CAAC,CAAC;AAExB;;GAEG;AACH,oBAAY,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,OAAO,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAmBF,oBAAY,iBAAiB,GACzB,SAAS,GACT,MAAM,GACN,OAAO,GACP,oBAAoB,GACpB,aAAa,GACb,YAAY,GACZ,cAAc,CAAC;AAEnB,oBAAY,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAC/B,OAAO,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/worker-utils",
|
|
3
|
-
"version": "3.2.0-alpha.
|
|
3
|
+
"version": "3.2.0-alpha.4",
|
|
4
4
|
"description": "Utilities for running tasks on worker threads",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@babel/runtime": "^7.3.1"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "f030d39d5cdedb137e43e757a9da10dd637857fd"
|
|
50
50
|
}
|
|
@@ -41,10 +41,14 @@ export async function processOnWorker(
|
|
|
41
41
|
context: WorkerContext = {}
|
|
42
42
|
): Promise<any> {
|
|
43
43
|
const name = getWorkerName(worker);
|
|
44
|
-
const url = getWorkerURL(worker, options);
|
|
45
44
|
|
|
46
45
|
const workerFarm = WorkerFarm.getWorkerFarm(options);
|
|
47
|
-
const
|
|
46
|
+
const {source} = options;
|
|
47
|
+
const workerPoolProps: {name: string; source?: string; url?: string} = {name, source};
|
|
48
|
+
if (!source) {
|
|
49
|
+
workerPoolProps.url = getWorkerURL(worker, options);
|
|
50
|
+
}
|
|
51
|
+
const workerPool = workerFarm.getWorkerPool(workerPoolProps);
|
|
48
52
|
|
|
49
53
|
const jobName = options.jobName || worker.name;
|
|
50
54
|
const job = await workerPool.startJob(
|
|
@@ -28,8 +28,7 @@ export default class WorkerThread {
|
|
|
28
28
|
|
|
29
29
|
/** Checks if workers are supported on this platform */
|
|
30
30
|
static isSupported(): boolean {
|
|
31
|
-
return typeof Worker !== 'undefined' && isBrowser;
|
|
32
|
-
// || typeof NodeWorker !== undefined;
|
|
31
|
+
return (typeof Worker !== 'undefined' && isBrowser) || typeof NodeWorker !== undefined;
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
constructor(props: WorkerThreadProps) {
|
package/src/types.ts
CHANGED
|
@@ -35,7 +35,7 @@ export type WorkerObject = {
|
|
|
35
35
|
module: string;
|
|
36
36
|
version: string;
|
|
37
37
|
worker?: string | boolean;
|
|
38
|
-
options:
|
|
38
|
+
options: {[key: string]: any};
|
|
39
39
|
deprecatedOptions?: object;
|
|
40
40
|
|
|
41
41
|
process?: Process;
|
|
@@ -71,6 +71,7 @@ export type WorkerMessageType =
|
|
|
71
71
|
export type WorkerMessagePayload = {
|
|
72
72
|
id?: number;
|
|
73
73
|
options?: {[key: string]: any};
|
|
74
|
+
context?: {[key: string]: any};
|
|
74
75
|
input?: any; // Transferable;
|
|
75
76
|
result?: any; // Transferable
|
|
76
77
|
error?: string;
|