Socket
Socket
Sign inDemoInstall

@loaders.gl/worker-utils

Package Overview
Dependencies
Maintainers
7
Versions
198
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@loaders.gl/worker-utils - npm Package Compare versions

Comparing version 3.0.0-beta.2 to 3.0.0-beta.3

dist/es5/lib/env-utils/version.js

53

dist/es5/index.js

@@ -38,44 +38,50 @@ "use strict";

});
Object.defineProperty(exports, "processOnWorker", {
Object.defineProperty(exports, "WorkerFarm", {
enumerable: true,
get: function get() {
return _processOnWorker.processOnWorker;
return _workerFarm.default;
}
});
Object.defineProperty(exports, "createWorker", {
Object.defineProperty(exports, "WorkerPool", {
enumerable: true,
get: function get() {
return _createWorker.createWorker;
return _workerPool.default;
}
});
Object.defineProperty(exports, "getWorkerObjectURL", {
Object.defineProperty(exports, "WorkerBody", {
enumerable: true,
get: function get() {
return _workerObjectUtils.getWorkerObjectURL;
return _workerBody.default;
}
});
Object.defineProperty(exports, "validateWorkerVersion", {
Object.defineProperty(exports, "processOnWorker", {
enumerable: true,
get: function get() {
return _workerObjectUtils.validateWorkerVersion;
return _processOnWorker.processOnWorker;
}
});
Object.defineProperty(exports, "WorkerFarm", {
Object.defineProperty(exports, "createWorker", {
enumerable: true,
get: function get() {
return _workerFarm.default;
return _createWorker.createWorker;
}
});
Object.defineProperty(exports, "WorkerPool", {
Object.defineProperty(exports, "getWorkerURL", {
enumerable: true,
get: function get() {
return _workerPool.default;
return _getWorkerUrl.getWorkerURL;
}
});
Object.defineProperty(exports, "WorkerBody", {
Object.defineProperty(exports, "validateWorkerVersion", {
enumerable: true,
get: function get() {
return _workerBody.default;
return _validateWorkerVersion.validateWorkerVersion;
}
});
Object.defineProperty(exports, "getTransferList", {
enumerable: true,
get: function get() {
return _getTransferList.getTransferList;
}
});
Object.defineProperty(exports, "getLibraryUrl", {

@@ -107,2 +113,4 @@ enumerable: true,

var _version = require("./lib/env-utils/version");
var _assert = require("./lib/env-utils/assert");

@@ -116,2 +124,8 @@

var _workerFarm = _interopRequireDefault(require("./lib/worker-farm/worker-farm"));
var _workerPool = _interopRequireDefault(require("./lib/worker-farm/worker-pool"));
var _workerBody = _interopRequireDefault(require("./lib/worker-farm/worker-body"));
var _processOnWorker = require("./lib/worker-api/process-on-worker");

@@ -121,10 +135,8 @@

var _workerObjectUtils = require("./lib/worker-api/worker-object-utils");
var _getWorkerUrl = require("./lib/worker-api/get-worker-url");
var _workerFarm = _interopRequireDefault(require("./lib/worker-farm/worker-farm"));
var _validateWorkerVersion = require("./lib/worker-api/validate-worker-version");
var _workerPool = _interopRequireDefault(require("./lib/worker-farm/worker-pool"));
var _getTransferList = require("./lib/worker-utils/get-transfer-list");
var _workerBody = _interopRequireDefault(require("./lib/worker-farm/worker-body"));
var _libraryUtils = require("./lib/library-utils/library-utils");

@@ -136,3 +148,2 @@

var VERSION = typeof "3.0.0-beta.2" !== 'undefined' ? "3.0.0-beta.2" : 'latest';
var NullWorker = {

@@ -142,3 +153,3 @@ id: 'null',

module: 'worker-utils',
version: VERSION,
version: _version.VERSION,
options: {

@@ -145,0 +156,0 @@ null: {}

@@ -23,2 +23,4 @@ "use strict";

var _version = require("../env-utils/version");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

@@ -29,3 +31,3 @@

var LATEST = 'beta';
var VERSION = typeof "3.0.0-beta.2" !== 'undefined' ? "3.0.0-beta.2" : LATEST;
var VERSION = typeof "3.0.0-beta.3" !== 'undefined' ? "3.0.0-beta.3" : LATEST;
var loadLibraryPromises = {};

@@ -32,0 +34,0 @@

@@ -30,3 +30,3 @@ "use strict";

var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(type, payload) {
var result, resultIterator, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, batch;
var result, resultIterator, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, batch, message;

@@ -161,3 +161,3 @@ return _regenerator.default.wrap(function _callee$(_context) {

case 55:
_context.next = 60;
_context.next = 61;
break;

@@ -168,8 +168,9 @@

_context.t2 = _context["catch"](0);
message = _context.t2 instanceof Error ? _context.t2.message : '';
_workerBody.default.postMessage('error', {
error: _context.t2.message
error: message
});
case 60:
case 61:
case "end":

@@ -176,0 +177,0 @@ return _context.stop();

@@ -8,2 +8,3 @@ "use strict";

});
exports.canProcessWithWorker = canProcessWithWorker;
exports.processOnWorker = processOnWorker;

@@ -17,4 +18,14 @@

var _workerObjectUtils = require("./worker-object-utils");
var _removeNontransferableOptions = require("../worker-utils/remove-nontransferable-options");
var _getWorkerUrl = require("./get-worker-url");
function canProcessWithWorker(worker, options) {
if (!_workerFarm.default.isSupported()) {
return false;
}
return worker.worker && (options === null || options === void 0 ? void 0 : options.worker);
}
function processOnWorker(_x, _x2) {

@@ -27,2 +38,3 @@ return _processOnWorker.apply(this, arguments);

var options,
processOnMainThread,
name,

@@ -41,4 +53,5 @@ url,

options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};
name = (0, _workerObjectUtils.getWorkerObjectName)(worker);
url = (0, _workerObjectUtils.getWorkerObjectURL)(worker, options);
processOnMainThread = _args.length > 3 ? _args[3] : undefined;
name = (0, _getWorkerUrl.getWorkerName)(worker);
url = (0, _getWorkerUrl.getWorkerURL)(worker, options);
workerFarm = _workerFarm.default.getWorkerFarm(options);

@@ -49,22 +62,8 @@ workerPool = workerFarm.getWorkerPool({

});
_context.next = 7;
return workerPool.startJob(worker.name, function (job_, type, payload) {
switch (type) {
case 'done':
job.done(payload);
break;
_context.next = 8;
return workerPool.startJob(worker.name, onMessage.bind(null, processOnMainThread));
case 'error':
job.error(payload.error);
break;
default:
job.error(type);
break;
}
});
case 7:
case 8:
job = _context.sent;
transferableOptions = (0, _workerObjectUtils.removeNontransferableOptions)(options);
transferableOptions = (0, _removeNontransferableOptions.removeNontransferableOptions)(options);
job.postMessage('process', {

@@ -74,10 +73,10 @@ input: data,

});
_context.next = 12;
_context.next = 13;
return job.result;
case 12:
case 13:
result = _context.sent;
return _context.abrupt("return", result.result);
case 14:
case 15:
case "end":

@@ -91,2 +90,38 @@ return _context.stop();

}
function onMessage(_x3, _x4, _x5, _x6) {
return _onMessage.apply(this, arguments);
}
function _onMessage() {
_onMessage = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(processOnMainThread, job, type, payload) {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.t0 = type;
_context2.next = _context2.t0 === 'done' ? 3 : _context2.t0 === 'error' ? 5 : 7;
break;
case 3:
job.done(payload);
return _context2.abrupt("break", 9);
case 5:
job.error(payload.error);
return _context2.abrupt("break", 9);
case 7:
job.error(type);
return _context2.abrupt("break", 9);
case 9:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return _onMessage.apply(this, arguments);
}
//# sourceMappingURL=process-on-worker.js.map

@@ -14,3 +14,3 @@ "use strict";

var _getTransferList = require("../worker-farm/get-transfer-list");
var _getTransferList = require("../worker-utils/get-transfer-list");

@@ -17,0 +17,0 @@ var onMessageWrapperMap = new Map();

@@ -18,5 +18,5 @@ "use strict";

var _buildWorkerUrl = require("./build-worker-url");
var _getLoadableWorkerUrl = require("../worker-utils/get-loadable-worker-url");
var _getTransferList = require("./get-transfer-list");
var _getTransferList = require("../worker-utils/get-transfer-list");

@@ -92,3 +92,3 @@ var NOOP = function NOOP() {};

this._loadableURL = (0, _buildWorkerUrl.buildWorkerURL)({
this._loadableURL = (0, _getLoadableWorkerUrl.getLoadableWorkerURL)({
source: this.source,

@@ -95,0 +95,0 @@ url: this.url

@@ -0,1 +1,2 @@

import { VERSION } from './lib/env-utils/version';
export { assert } from './lib/env-utils/assert';

@@ -5,12 +6,13 @@ export { isBrowser, isWorker } from './lib/env-utils/globals';

export { default as WorkerThread } from './lib/worker-farm/worker-thread';
export { processOnWorker } from './lib/worker-api/process-on-worker';
export { createWorker } from './lib/worker-api/create-worker';
export { getWorkerObjectURL, validateWorkerVersion } from './lib/worker-api/worker-object-utils';
export { default as WorkerFarm } from './lib/worker-farm/worker-farm';
export { default as WorkerPool } from './lib/worker-farm/worker-pool';
export { default as WorkerBody } from './lib/worker-farm/worker-body';
export { processOnWorker } from './lib/worker-api/process-on-worker';
export { createWorker } from './lib/worker-api/create-worker';
export { getWorkerURL } from './lib/worker-api/get-worker-url';
export { validateWorkerVersion } from './lib/worker-api/validate-worker-version';
export { getTransferList } from './lib/worker-utils/get-transfer-list';
export { getLibraryUrl, loadLibrary } from './lib/library-utils/library-utils';
export { default as AsyncQueue } from './lib/async-queue/async-queue';
export { default as ChildProcessProxy } from './lib/process-utils/child-process-proxy';
const VERSION = typeof "3.0.0-beta.2" !== 'undefined' ? "3.0.0-beta.2" : 'latest';
export const NullWorker = {

@@ -17,0 +19,0 @@ id: 'null',

import { global, isBrowser, isWorker } from '../env-utils/globals';
import * as node from '../node/require-utils.node';
import { assert } from '../env-utils/assert';
import { VERSION as __VERSION__ } from '../env-utils/version';
const LATEST = 'beta';
const VERSION = typeof "3.0.0-beta.2" !== 'undefined' ? "3.0.0-beta.2" : LATEST;
const VERSION = typeof "3.0.0-beta.3" !== 'undefined' ? "3.0.0-beta.3" : LATEST;
const loadLibraryPromises = {};

@@ -7,0 +8,0 @@ export async function loadLibrary(libraryUrl, moduleName = null, options = {}) {

@@ -53,4 +53,5 @@ import AsyncQueue from '../async-queue/async-queue';

} catch (error) {
const message = error instanceof Error ? error.message : '';
WorkerBody.postMessage('error', {
error: error.message
error: message
});

@@ -57,0 +58,0 @@ }

import WorkerFarm from '../worker-farm/worker-farm';
import { getWorkerObjectURL, getWorkerObjectName, removeNontransferableOptions } from './worker-object-utils';
export async function processOnWorker(worker, data, options = {}) {
const name = getWorkerObjectName(worker);
const url = getWorkerObjectURL(worker, options);
import { removeNontransferableOptions } from '../worker-utils/remove-nontransferable-options';
import { getWorkerURL, getWorkerName } from './get-worker-url';
export function canProcessWithWorker(worker, options) {
if (!WorkerFarm.isSupported()) {
return false;
}
return worker.worker && (options === null || options === void 0 ? void 0 : options.worker);
}
export async function processOnWorker(worker, data, options = {}, processOnMainThread) {
const name = getWorkerName(worker);
const url = getWorkerURL(worker, options);
const workerFarm = WorkerFarm.getWorkerFarm(options);

@@ -11,17 +19,3 @@ const workerPool = workerFarm.getWorkerPool({

});
const job = await workerPool.startJob(worker.name, (job_, type, payload) => {
switch (type) {
case 'done':
job.done(payload);
break;
case 'error':
job.error(payload.error);
break;
default:
job.error(type);
break;
}
});
const job = await workerPool.startJob(worker.name, onMessage.bind(null, processOnMainThread));
const transferableOptions = removeNontransferableOptions(options);

@@ -35,2 +29,18 @@ job.postMessage('process', {

}
async function onMessage(processOnMainThread, job, type, payload) {
switch (type) {
case 'done':
job.done(payload);
break;
case 'error':
job.error(payload.error);
break;
default:
job.error(type);
break;
}
}
//# sourceMappingURL=process-on-worker.js.map

@@ -1,2 +0,2 @@

import { getTransferList } from '../worker-farm/get-transfer-list';
import { getTransferList } from '../worker-utils/get-transfer-list';
const onMessageWrapperMap = new Map();

@@ -3,0 +3,0 @@ export default class WorkerBody {

import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import { assert } from '../env-utils/assert';
import { buildWorkerURL } from './build-worker-url';
import { getTransferList } from './get-transfer-list';
import { getLoadableWorkerURL } from '../worker-utils/get-loadable-worker-url';
import { getTransferList } from '../worker-utils/get-transfer-list';

@@ -78,3 +78,3 @@ const NOOP = () => {};

_createBrowserWorker() {
this._loadableURL = buildWorkerURL({
this._loadableURL = getLoadableWorkerURL({
source: this.source,

@@ -81,0 +81,0 @@ url: this.url

@@ -285,4 +285,5 @@ /******/ (function(modules) { // webpackBootstrap

return;
}
} // eslint-disable-next-line complexity
_worker_farm_worker_body__WEBPACK_IMPORTED_MODULE_1__["default"].onmessage = async (type, payload) => {

@@ -331,4 +332,5 @@ try {

} catch (error) {
const message = error instanceof Error ? error.message : '';
_worker_farm_worker_body__WEBPACK_IMPORTED_MODULE_1__["default"].postMessage('error', {
error: error.message
error: message
});

@@ -341,73 +343,2 @@ }

/***/ "./src/lib/worker-farm/get-transfer-list.ts":
/*!**************************************************!*\
!*** ./src/lib/worker-farm/get-transfer-list.ts ***!
\**************************************************/
/*! exports provided: getTransferList */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTransferList", function() { return getTransferList; });
// NOTE - there is a copy of this function is both in core and loader-utils
// core does not need all the utils in loader-utils, just this one.
/**
* Returns an array of Transferrable objects that can be used with postMessage
* https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage
* @param object data to be sent via postMessage
* @param recursive - not for application use
* @param transfers - not for application use
* @returns a transfer list that can be passed to postMessage
*/
function getTransferList(object, recursive = true, transfers) {
// Make sure that items in the transfer list is unique
const transfersSet = transfers || new Set();
if (!object) {// ignore
} else if (isTransferable(object)) {
transfersSet.add(object);
} else if (isTransferable(object.buffer)) {
// Typed array
transfersSet.add(object.buffer);
} else if (ArrayBuffer.isView(object)) {// object is a TypeArray viewing into a SharedArrayBuffer (not transferable)
// Do not iterate through the content in this case
} else if (recursive && typeof object === 'object') {
for (const key in object) {
// Avoid perf hit - only go one level deep
getTransferList(object[key], recursive, transfersSet);
}
} // If transfers is defined, is internal recursive call
// Otherwise it's called by the user
return transfers === undefined ? Array.from(transfersSet) : [];
} // https://developer.mozilla.org/en-US/docs/Web/API/Transferable
function isTransferable(object) {
if (!object) {
return false;
}
if (object instanceof ArrayBuffer) {
return true;
}
if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {
return true;
}
if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {
return true;
}
if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {
return true;
}
return false;
}
/***/ }),
/***/ "./src/lib/worker-farm/worker-body.ts":

@@ -423,4 +354,3 @@ /*!********************************************!*\

/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return WorkerBody; });
/* harmony import */ var _worker_farm_get_transfer_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../worker-farm/get-transfer-list */ "./src/lib/worker-farm/get-transfer-list.ts");
/* eslint-disable no-restricted-globals */
/* harmony import */ var _worker_utils_get_transfer_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../worker-utils/get-transfer-list */ "./src/lib/worker-utils/get-transfer-list.ts");

@@ -437,2 +367,3 @@ const onMessageWrapperMap = new Map();

static set onmessage(onMessage) {
// eslint-disable-next-line no-restricted-globals
self.onmessage = message => {

@@ -468,4 +399,5 @@ if (!isKnownMessage(message)) {

};
}
} // eslint-disable-next-line no-restricted-globals
self.addEventListener('message', onMessageWrapper);

@@ -476,3 +408,4 @@ }

const onMessageWrapper = onMessageWrapperMap.get(onMessage);
onMessageWrapperMap.delete(onMessage);
onMessageWrapperMap.delete(onMessage); // eslint-disable-next-line no-restricted-globals
self.removeEventListener('message', onMessageWrapper);

@@ -494,3 +427,4 @@ }

};
const transferList = Object(_worker_farm_get_transfer_list__WEBPACK_IMPORTED_MODULE_0__["getTransferList"])(payload); // @ts-ignore self is WorkerGlobalScope
const transferList = Object(_worker_utils_get_transfer_list__WEBPACK_IMPORTED_MODULE_0__["getTransferList"])(payload); // eslint-disable-next-line no-restricted-globals
// @ts-ignore

@@ -513,2 +447,73 @@ self.postMessage(data, transferList);

/***/ "./src/lib/worker-utils/get-transfer-list.ts":
/*!***************************************************!*\
!*** ./src/lib/worker-utils/get-transfer-list.ts ***!
\***************************************************/
/*! exports provided: getTransferList */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTransferList", function() { return getTransferList; });
// NOTE - there is a copy of this function is both in core and loader-utils
// core does not need all the utils in loader-utils, just this one.
/**
* Returns an array of Transferrable objects that can be used with postMessage
* https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage
* @param object data to be sent via postMessage
* @param recursive - not for application use
* @param transfers - not for application use
* @returns a transfer list that can be passed to postMessage
*/
function getTransferList(object, recursive = true, transfers) {
// Make sure that items in the transfer list is unique
const transfersSet = transfers || new Set();
if (!object) {// ignore
} else if (isTransferable(object)) {
transfersSet.add(object);
} else if (isTransferable(object.buffer)) {
// Typed array
transfersSet.add(object.buffer);
} else if (ArrayBuffer.isView(object)) {// object is a TypeArray viewing into a SharedArrayBuffer (not transferable)
// Do not iterate through the content in this case
} else if (recursive && typeof object === 'object') {
for (const key in object) {
// Avoid perf hit - only go one level deep
getTransferList(object[key], recursive, transfersSet);
}
} // If transfers is defined, is internal recursive call
// Otherwise it's called by the user
return transfers === undefined ? Array.from(transfersSet) : [];
} // https://developer.mozilla.org/en-US/docs/Web/API/Transferable
function isTransferable(object) {
if (!object) {
return false;
}
if (object instanceof ArrayBuffer) {
return true;
}
if (typeof MessagePort !== 'undefined' && object instanceof MessagePort) {
return true;
}
if (typeof ImageBitmap !== 'undefined' && object instanceof ImageBitmap) {
return true;
}
if (typeof OffscreenCanvas !== 'undefined' && object instanceof OffscreenCanvas) {
return true;
}
return false;
}
/***/ }),
/***/ "./src/workers/null-worker.ts":

@@ -515,0 +520,0 @@ /*!************************************!*\

{
"name": "@loaders.gl/worker-utils",
"version": "3.0.0-beta.2",
"version": "3.0.0-beta.3",
"description": "Utilities for running tasks on worker threads",

@@ -44,3 +44,3 @@ "license": "MIT",

},
"gitHead": "c9417c6232ad2109a9c269ecf83afbf7ebc46cf8"
"gitHead": "59a9b2843ffc095c818dcd2894ed64b6e8fd52ae"
}
import type {WorkerObject} from './types';
import {VERSION} from './lib/env-utils/version';
// TYPES
export type {WorkerObject} from './types';
export type {
WorkerObject,
WorkerOptions,
// Protocol
WorkerMessage,
WorkerMessageType,
WorkerMessageData,
WorkerMessagePayload
} from './lib/worker-protocol/protocol';
} from './types';

@@ -19,7 +23,3 @@ // GENERAL UTILS

// WORKER UTILS - EXPORTS
export {processOnWorker} from './lib/worker-api/process-on-worker';
export {createWorker} from './lib/worker-api/create-worker';
export {getWorkerObjectURL, validateWorkerVersion} from './lib/worker-api/worker-object-utils';
// WORKER FARMS
export {default as WorkerFarm} from './lib/worker-farm/worker-farm';

@@ -29,2 +29,10 @@ export {default as WorkerPool} from './lib/worker-farm/worker-pool';

export {processOnWorker} from './lib/worker-api/process-on-worker';
export {createWorker} from './lib/worker-api/create-worker';
// WORKER UTILS - EXPORTS
export {getWorkerURL} from './lib/worker-api/get-worker-url';
export {validateWorkerVersion} from './lib/worker-api/validate-worker-version';
export {getTransferList} from './lib/worker-utils/get-transfer-list';
// LIBRARY UTILS

@@ -41,6 +49,2 @@ export {getLibraryUrl, loadLibrary} from './lib/library-utils/library-utils';

// __VERSION__ is injected by babel-plugin-version-inline
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
/** A null worker to test that worker processing is functional */

@@ -47,0 +51,0 @@ export const NullWorker: WorkerObject = {

import {global, isBrowser, isWorker} from '../env-utils/globals';
import * as node from '../node/require-utils.node';
import {assert} from '../env-utils/assert';
import {VERSION as __VERSION__} from '../env-utils/version';
// TODO - unpkg.com doesn't seem to have a `latest` specifier for alpha releases...
const LATEST = 'beta';
// __VERSION__ is injected by babel-plugin-version-inline
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : LATEST;

@@ -11,0 +9,0 @@

@@ -1,2 +0,2 @@

import type {WorkerMessageType, WorkerMessagePayload} from '../worker-protocol/protocol';
import type {WorkerMessageType, WorkerMessagePayload} from '../../types';
import AsyncQueue from '../async-queue/async-queue';

@@ -19,2 +19,3 @@ import WorkerBody from '../worker-farm/worker-body';

// eslint-disable-next-line complexity
WorkerBody.onmessage = async (type: WorkerMessageType, payload: WorkerMessagePayload) => {

@@ -55,5 +56,6 @@ try {

} catch (error) {
WorkerBody.postMessage('error', {error: error.message});
const message = error instanceof Error ? error.message : '';
WorkerBody.postMessage('error', {error: message});
}
};
}

@@ -1,9 +0,27 @@

import type {WorkerObject} from '../../types';
import type {
WorkerObject,
WorkerOptions,
WorkerMessageType,
WorkerMessagePayload
} from '../../types';
import type WorkerJob from '../worker-farm/worker-job';
import WorkerFarm from '../worker-farm/worker-farm';
import {
getWorkerObjectURL,
getWorkerObjectName,
removeNontransferableOptions
} from './worker-object-utils';
import {removeNontransferableOptions} from '../worker-utils/remove-nontransferable-options';
import {getWorkerURL, getWorkerName} from './get-worker-url';
/**
* Determines if we can parse with worker
* @param loader
* @param data
* @param options
*/
export function canProcessWithWorker(worker: WorkerObject, options?: WorkerOptions) {
if (!WorkerFarm.isSupported()) {
return false;
}
return worker.worker && options?.worker;
}
/**
* This function expects that the worker thread sends certain messages,

@@ -16,6 +34,7 @@ * Creating such a worker can be automated if the worker is wrapper by a call to

data: any,
options: object = {}
options: WorkerOptions = {},
processOnMainThread?: Function
): Promise<any> {
const name = getWorkerObjectName(worker);
const url = getWorkerObjectURL(worker, options);
const name = getWorkerName(worker);
const url = getWorkerURL(worker, options);

@@ -25,23 +44,3 @@ const workerFarm = WorkerFarm.getWorkerFarm(options);

const job = await workerPool.startJob(
worker.name,
/**
* Job completes when we receive the result
* @param {WorkerJob} job_
* @param {WorkerMessageData} message
*/
(job_, type, payload) => {
switch (type) {
case 'done':
job.done(payload);
break;
case 'error':
job.error(payload.error);
break;
default:
job.error(type);
break;
}
}
);
const job = await workerPool.startJob(worker.name, onMessage.bind(null, processOnMainThread));

@@ -55,1 +54,25 @@ // Kick off the processing in the worker

}
/**
* Job completes when we receive the result
* @param job
* @param message
*/
async function onMessage(
processOnMainThread,
job: WorkerJob,
type: WorkerMessageType,
payload: WorkerMessagePayload
) {
switch (type) {
case 'done':
job.done(payload);
break;
case 'error':
job.error(payload.error);
break;
default:
job.error(type);
break;
}
}

@@ -1,8 +0,3 @@

/* eslint-disable no-restricted-globals */
import type {
WorkerMessageData,
WorkerMessageType,
WorkerMessagePayload
} from '../worker-protocol/protocol';
import {getTransferList} from '../worker-farm/get-transfer-list';
import type {WorkerMessageData, WorkerMessageType, WorkerMessagePayload} from '../../types';
import {getTransferList} from '../worker-utils/get-transfer-list';

@@ -19,2 +14,3 @@ const onMessageWrapperMap = new Map();

static set onmessage(onMessage: (type: WorkerMessageType, payload: WorkerMessagePayload) => any) {
// eslint-disable-next-line no-restricted-globals
self.onmessage = (message) => {

@@ -48,2 +44,3 @@ if (!isKnownMessage(message)) {

// eslint-disable-next-line no-restricted-globals
self.addEventListener('message', onMessageWrapper);

@@ -57,2 +54,3 @@ }

onMessageWrapperMap.delete(onMessage);
// eslint-disable-next-line no-restricted-globals
self.removeEventListener('message', onMessageWrapper);

@@ -70,3 +68,4 @@ }

const transferList = getTransferList(payload);
// @ts-ignore self is WorkerGlobalScope
// eslint-disable-next-line no-restricted-globals
// @ts-ignore
self.postMessage(data, transferList);

@@ -73,0 +72,0 @@ }

@@ -1,2 +0,2 @@

import type {WorkerMessageType, WorkerMessagePayload} from '../worker-protocol/protocol';
import type {WorkerMessageType, WorkerMessagePayload} from '../../types';
import WorkerThread from './worker-thread';

@@ -3,0 +3,0 @@ import {assert} from '../env-utils/assert';

@@ -1,2 +0,2 @@

import type {WorkerMessageType, WorkerMessagePayload} from '../worker-protocol/protocol';
import type {WorkerMessageType, WorkerMessagePayload} from '../../types';
import {isMobile} from '../env-utils/globals';

@@ -3,0 +3,0 @@ import WorkerThread from './worker-thread';

import {assert} from '../env-utils/assert';
import {buildWorkerURL} from './build-worker-url';
import {getTransferList} from './get-transfer-list';
import {getLoadableWorkerURL} from '../worker-utils/get-loadable-worker-url';
import {getTransferList} from '../worker-utils/get-transfer-list';

@@ -97,3 +97,3 @@ const NOOP = () => {};

_createBrowserWorker() {
this._loadableURL = buildWorkerURL({source: this.source, url: this.url});
this._loadableURL = getLoadableWorkerURL({source: this.source, url: this.url});
const worker = new Worker(this._loadableURL, {name: this.name});

@@ -100,0 +100,0 @@

/**
* A worker description
* Worker Options
*/
export type WorkerOptions = {
// Worker farm options
CDN?: string;
worker?: boolean;
maxConcurrency?: number;
maxMobileConcurrency?: number;
reuseWorkers?: boolean;
_workerType?: string;
[key: string]: any;
};
/**
* A worker description object
*/
export type WorkerObject = {
id: string;
name: string;
id: string;
module: string;
version: string;
worker?: string;
worker?: string | boolean;
options: object;

@@ -19,1 +33,46 @@ deprecatedOptions?: object;

};
/*
PROTOCOL
Main thread worker
=> process-batches-start
=> process-batches-input-batch
<= process-batches-output-batch
... // repeat
=> process-batches-input-done
<= process-batches-result
// or
<= process-batches-error
*/
export type WorkerMessageType =
| 'process'
| 'done'
| 'error'
| 'process-in-batches'
| 'input-batch'
| 'input-done'
| 'output-batch';
export type WorkerMessagePayload = {
id?: number;
options?: object;
input?: any; // Transferable;
result?: any; // Transferable
error?: string;
};
export type WorkerMessageData = {
source: 'loaders.gl';
type: WorkerMessageType;
payload: WorkerMessagePayload;
};
export type WorkerMessage = {
type: string;
data: WorkerMessageData;
};

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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