@loaders.gl/worker-utils 3.2.6 → 3.2.9

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.
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.VERSION = void 0;
7
7
  var DEFAULT_VERSION = 'latest';
8
- var VERSION = typeof "3.2.6" !== 'undefined' ? "3.2.6" : DEFAULT_VERSION;
8
+ var VERSION = typeof "3.2.9" !== 'undefined' ? "3.2.9" : DEFAULT_VERSION;
9
9
  exports.VERSION = VERSION;
10
10
 
11
- if (typeof "3.2.6" === 'undefined') {
11
+ if (typeof "3.2.9" === '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 = 'latest';
30
- var VERSION = typeof "3.2.6" !== 'undefined' ? "3.2.6" : LATEST;
30
+ var VERSION = typeof "3.2.9" !== 'undefined' ? "3.2.9" : 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 = 'latest';
14
- var VERSION = typeof "3.2.6" !== 'undefined' ? "3.2.6" : NPM_TAG;
14
+ var VERSION = typeof "3.2.9" !== 'undefined' ? "3.2.9" : NPM_TAG;
15
15
 
16
16
  function getWorkerName(worker) {
17
17
  var warning = worker.version !== VERSION ? " (worker-utils@".concat(VERSION, ")") : '';
@@ -7,8 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
-
12
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
11
 
14
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -155,7 +153,7 @@ var WorkerThread = function () {
155
153
  }], [{
156
154
  key: "isSupported",
157
155
  value: function isSupported() {
158
- return typeof Worker !== 'undefined' && _globals.isBrowser || (0, _typeof2.default)(_worker_threads.Worker) !== undefined;
156
+ return typeof Worker !== 'undefined' && _globals.isBrowser || typeof _worker_threads.Worker !== 'undefined' && !_globals.isBrowser;
159
157
  }
160
158
  }]);
161
159
  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","undefined"],"mappings":"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","sourcesContent":["import {Worker as NodeWorker} from '../node/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
+ {"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":"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","sourcesContent":["import {Worker as NodeWorker} from '../node/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 (\n (typeof Worker !== 'undefined' && isBrowser) ||\n (typeof NodeWorker !== 'undefined' && !isBrowser)\n );\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 = 'latest';
2
- export const VERSION = typeof "3.2.6" !== 'undefined' ? "3.2.6" : DEFAULT_VERSION;
2
+ export const VERSION = typeof "3.2.9" !== 'undefined' ? "3.2.9" : DEFAULT_VERSION;
3
3
 
4
- if (typeof "3.2.6" === 'undefined') {
4
+ if (typeof "3.2.9" === '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 = 'latest';
6
- const VERSION = typeof "3.2.6" !== 'undefined' ? "3.2.6" : LATEST;
6
+ const VERSION = typeof "3.2.9" !== 'undefined' ? "3.2.9" : 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 = 'latest';
4
- const VERSION = typeof "3.2.6" !== 'undefined' ? "3.2.6" : NPM_TAG;
4
+ const VERSION = typeof "3.2.9" !== 'undefined' ? "3.2.9" : 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);
@@ -9,7 +9,7 @@ const NOOP = () => {};
9
9
 
10
10
  export default class WorkerThread {
11
11
  static isSupported() {
12
- return typeof Worker !== 'undefined' && isBrowser || typeof NodeWorker !== undefined;
12
+ return typeof Worker !== 'undefined' && isBrowser || typeof NodeWorker !== 'undefined' && !isBrowser;
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","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 '../node/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
+ {"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":"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","sourcesContent":["import {Worker as NodeWorker} from '../node/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 (\n (typeof Worker !== 'undefined' && isBrowser) ||\n (typeof NodeWorker !== 'undefined' && !isBrowser)\n );\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":"worker-thread.d.ts","sourceRoot":"","sources":["../../../src/lib/worker-farm/worker-thread.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAQ5D,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"}
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,wBAAwB,CAAC;AAQ5D,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;gBAOjB,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,7 +24,8 @@ 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) || typeof worker_threads_1.Worker !== undefined;
27
+ return ((typeof Worker !== 'undefined' && globals_1.isBrowser) ||
28
+ (typeof worker_threads_1.Worker !== 'undefined' && !globals_1.isBrowser));
28
29
  }
29
30
  /**
30
31
  * Terminate this worker thread
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/worker-utils",
3
- "version": "3.2.6",
3
+ "version": "3.2.9",
4
4
  "description": "Utilities for running tasks on worker threads",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -49,5 +49,5 @@
49
49
  "dependencies": {
50
50
  "@babel/runtime": "^7.3.1"
51
51
  },
52
- "gitHead": "4c7303904d6d4ea57082cf3c7a66e780b008edb9"
52
+ "gitHead": "9369776dfbe8535bf9c3b4fd4786476107418117"
53
53
  }
@@ -28,7 +28,10 @@ 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) || typeof NodeWorker !== undefined;
31
+ return (
32
+ (typeof Worker !== 'undefined' && isBrowser) ||
33
+ (typeof NodeWorker !== 'undefined' && !isBrowser)
34
+ );
32
35
  }
33
36
 
34
37
  constructor(props: WorkerThreadProps) {