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.3 to 3.0.0-beta.4

6

dist/es5/index.js

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

});
Object.defineProperty(exports, "canProcessOnWorker", {
enumerable: true,
get: function get() {
return _processOnWorker.canProcessOnWorker;
}
});
Object.defineProperty(exports, "createWorker", {

@@ -64,0 +70,0 @@ enumerable: true,

6

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

@@ -7,8 +7,8 @@ "use strict";

exports.VERSION = void 0;
var VERSION = typeof "3.0.0-beta.3" !== 'undefined' ? "3.0.0-beta.3" : 'latest';
var VERSION = typeof "3.0.0-beta.4" !== 'undefined' ? "3.0.0-beta.4" : 'latest';
exports.VERSION = VERSION;
if (typeof "3.0.0-beta.3" === 'undefined') {
console.error('loaders.gl: The __VERSION__ variable is not injected using babel-plugin-version-inline. Latest unstable workers would be fetched from the CDN.');
if (typeof "3.0.0-beta.4" === 'undefined') {
console.error('loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.');
}
//# sourceMappingURL=version.js.map

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

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

@@ -33,0 +33,0 @@

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

var requestId = 0;
var inputBatches;

@@ -29,2 +30,6 @@ var options;

var context = {
process: processOnMainThread
};
_workerBody.default.onmessage = function () {

@@ -53,3 +58,3 @@ var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(type, payload) {

_context.next = 8;
return process(payload.input, payload.options || {});
return process(payload.input, payload.options || {}, context);

@@ -76,3 +81,3 @@ case 8:

options = payload.options || {};
resultIterator = processInBatches(inputBatches, options);
resultIterator = processInBatches(inputBatches, options, context === null || context === void 0 ? void 0 : context.processInBatches);
_iteratorNormalCompletion = true;

@@ -189,2 +194,41 @@ _didIteratorError = false;

}
function processOnMainThread(arrayBuffer) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return new Promise(function (resolve, reject) {
var id = requestId++;
var onMessage = function onMessage(type, payload) {
if (payload.id !== id) {
return;
}
switch (type) {
case 'done':
_workerBody.default.removeEventListener(onMessage);
resolve(payload.result);
break;
case 'error':
_workerBody.default.removeEventListener(onMessage);
reject(payload.error);
break;
default:
}
};
_workerBody.default.addEventListener(onMessage);
var payload = {
id: id,
input: arrayBuffer,
options: options
};
_workerBody.default.postMessage('process', payload);
});
}
//# sourceMappingURL=create-worker.js.map

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

var NPM_TAG = 'beta';
var VERSION = typeof "3.0.0-beta.3" !== 'undefined' ? "3.0.0-beta.3" : NPM_TAG;
var VERSION = typeof "3.0.0-beta.4" !== 'undefined' ? "3.0.0-beta.4" : NPM_TAG;

@@ -17,0 +17,0 @@ function getWorkerName(worker) {

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

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

@@ -22,3 +22,3 @@

function canProcessWithWorker(worker, options) {
function canProcessOnWorker(worker, options) {
if (!_workerFarm.default.isSupported()) {

@@ -38,3 +38,3 @@ return false;

var options,
processOnMainThread,
context,
name,

@@ -44,2 +44,3 @@ url,

workerPool,
jobName,
job,

@@ -54,3 +55,3 @@ transferableOptions,

options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};
processOnMainThread = _args.length > 3 ? _args[3] : undefined;
context = _args.length > 3 && _args[3] !== undefined ? _args[3] : {};
name = (0, _getWorkerUrl.getWorkerName)(worker);

@@ -63,6 +64,7 @@ url = (0, _getWorkerUrl.getWorkerURL)(worker, options);

});
_context.next = 8;
return workerPool.startJob(worker.name, onMessage.bind(null, processOnMainThread));
jobName = options.jobName || worker.name;
_context.next = 9;
return workerPool.startJob(jobName, onMessage.bind(null, context));
case 8:
case 9:
job = _context.sent;

@@ -74,10 +76,10 @@ transferableOptions = (0, _removeNontransferableOptions.removeNontransferableOptions)(options);

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

@@ -97,3 +99,4 @@ return _context.stop();

function _onMessage() {
_onMessage = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(processOnMainThread, job, type, payload) {
_onMessage = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(context, job, type, payload) {
var id, input, options, result, message;
return _regenerator.default.wrap(function _callee2$(_context2) {

@@ -104,3 +107,3 @@ while (1) {

_context2.t0 = type;
_context2.next = _context2.t0 === 'done' ? 3 : _context2.t0 === 'error' ? 5 : 7;
_context2.next = _context2.t0 === 'done' ? 3 : _context2.t0 === 'error' ? 5 : _context2.t0 === 'process' ? 7 : 23;
break;

@@ -110,13 +113,52 @@

job.done(payload);
return _context2.abrupt("break", 9);
return _context2.abrupt("break", 24);
case 5:
job.error(payload.error);
return _context2.abrupt("break", 9);
return _context2.abrupt("break", 24);
case 7:
job.error(type);
return _context2.abrupt("break", 9);
id = payload.id, input = payload.input, options = payload.options;
_context2.prev = 8;
case 9:
if (context.process) {
_context2.next = 12;
break;
}
job.postMessage('error', {
id: id,
error: 'Worker not set up to process on main thread'
});
return _context2.abrupt("return");
case 12:
_context2.next = 14;
return context.process(input, options);
case 14:
result = _context2.sent;
job.postMessage('done', {
id: id,
result: result
});
_context2.next = 22;
break;
case 18:
_context2.prev = 18;
_context2.t1 = _context2["catch"](8);
message = _context2.t1 instanceof Error ? _context2.t1.message : 'unknown error';
job.postMessage('error', {
id: id,
error: message
});
case 22:
return _context2.abrupt("break", 24);
case 23:
console.warn("process-on-worker: unknown message ".concat(type));
case 24:
case "end":

@@ -126,3 +168,3 @@ return _context2.stop();

}
}, _callee2);
}, _callee2, null, [[8, 18]]);
}));

@@ -129,0 +171,0 @@ return _onMessage.apply(this, arguments);

@@ -9,3 +9,3 @@ import { VERSION } from './lib/env-utils/version';

export { default as WorkerBody } from './lib/worker-farm/worker-body';
export { processOnWorker } from './lib/worker-api/process-on-worker';
export { processOnWorker, canProcessOnWorker } from './lib/worker-api/process-on-worker';
export { createWorker } from './lib/worker-api/create-worker';

@@ -12,0 +12,0 @@ export { getWorkerURL } from './lib/worker-api/get-worker-url';

@@ -1,6 +0,6 @@

export const VERSION = typeof "3.0.0-beta.3" !== 'undefined' ? "3.0.0-beta.3" : 'latest';
export const VERSION = typeof "3.0.0-beta.4" !== 'undefined' ? "3.0.0-beta.4" : 'latest';
if (typeof "3.0.0-beta.3" === 'undefined') {
console.error('loaders.gl: The __VERSION__ variable is not injected using babel-plugin-version-inline. Latest unstable workers would be fetched from the CDN.');
if (typeof "3.0.0-beta.4" === 'undefined') {
console.error('loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.');
}
//# sourceMappingURL=version.js.map

@@ -6,3 +6,3 @@ import { global, isBrowser, isWorker } from '../env-utils/globals';

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

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

import AsyncQueue from '../async-queue/async-queue';
import WorkerBody from '../worker-farm/worker-body';
let requestId = 0;
let inputBatches;

@@ -10,2 +11,6 @@ let options;

const context = {
process: processOnMainThread
};
WorkerBody.onmessage = async (type, payload) => {

@@ -19,3 +24,3 @@ try {

const result = await process(payload.input, payload.options || {});
const result = await process(payload.input, payload.options || {}, context);
WorkerBody.postMessage('done', {

@@ -33,3 +38,3 @@ result

options = payload.options || {};
const resultIterator = processInBatches(inputBatches, options);
const resultIterator = processInBatches(inputBatches, options, context === null || context === void 0 ? void 0 : context.processInBatches);

@@ -63,2 +68,36 @@ for await (const batch of resultIterator) {

}
function processOnMainThread(arrayBuffer, options = {}) {
return new Promise((resolve, reject) => {
const id = requestId++;
const onMessage = (type, payload) => {
if (payload.id !== id) {
return;
}
switch (type) {
case 'done':
WorkerBody.removeEventListener(onMessage);
resolve(payload.result);
break;
case 'error':
WorkerBody.removeEventListener(onMessage);
reject(payload.error);
break;
default:
}
};
WorkerBody.addEventListener(onMessage);
const payload = {
id,
input: arrayBuffer,
options
};
WorkerBody.postMessage('process', payload);
});
}
//# sourceMappingURL=create-worker.js.map
import { assert } from '../env-utils/assert';
import { VERSION as __VERSION__ } from '../env-utils/version';
const NPM_TAG = 'beta';
const VERSION = typeof "3.0.0-beta.3" !== 'undefined' ? "3.0.0-beta.3" : NPM_TAG;
const VERSION = typeof "3.0.0-beta.4" !== 'undefined' ? "3.0.0-beta.4" : NPM_TAG;
export function getWorkerName(worker) {

@@ -6,0 +6,0 @@ const warning = worker.version !== VERSION ? " (worker-utils@".concat(VERSION, ")") : '';

import WorkerFarm from '../worker-farm/worker-farm';
import { removeNontransferableOptions } from '../worker-utils/remove-nontransferable-options';
import { getWorkerURL, getWorkerName } from './get-worker-url';
export function canProcessWithWorker(worker, options) {
export function canProcessOnWorker(worker, options) {
if (!WorkerFarm.isSupported()) {

@@ -11,3 +11,3 @@ return false;

}
export async function processOnWorker(worker, data, options = {}, processOnMainThread) {
export async function processOnWorker(worker, data, options = {}, context = {}) {
const name = getWorkerName(worker);

@@ -20,3 +20,4 @@ const url = getWorkerURL(worker, options);

});
const job = await workerPool.startJob(worker.name, onMessage.bind(null, processOnMainThread));
const jobName = options.jobName || worker.name;
const job = await workerPool.startJob(jobName, onMessage.bind(null, context));
const transferableOptions = removeNontransferableOptions(options);

@@ -31,3 +32,3 @@ job.postMessage('process', {

async function onMessage(processOnMainThread, job, type, payload) {
async function onMessage(context, job, type, payload) {
switch (type) {

@@ -42,7 +43,37 @@ case 'done':

case 'process':
const {
id,
input,
options
} = payload;
try {
if (!context.process) {
job.postMessage('error', {
id,
error: 'Worker not set up to process on main thread'
});
return;
}
const result = await context.process(input, options);
job.postMessage('done', {
id,
result
});
} catch (error) {
const message = error instanceof Error ? error.message : 'unknown error';
job.postMessage('error', {
id,
error: message
});
}
break;
default:
job.error(type);
break;
console.warn("process-on-worker: unknown message ".concat(type));
}
}
//# sourceMappingURL=process-on-worker.js.map

@@ -91,3 +91,3 @@ /******/ (function(modules) { // webpackBootstrap

/*!**************************************************************************************************!*\
!*** /home/daniil/actionengine/loaders.gl/node_modules/@babel/runtime/helpers/defineProperty.js ***!
!*** /home/user/apps/loaders.gl_duplicate/node_modules/@babel/runtime/helpers/defineProperty.js ***!
\**************************************************************************************************/

@@ -275,3 +275,7 @@ /*! no static exports found */

// import {validateWorkerVersion} from './validate-worker-version';
/** Counter for jobs */
let requestId = 0;
let inputBatches;

@@ -287,4 +291,7 @@ let options;

return;
} // eslint-disable-next-line complexity
}
const context = {
process: processOnMainThread
}; // eslint-disable-next-line complexity

@@ -299,3 +306,3 @@ _worker_farm_worker_body__WEBPACK_IMPORTED_MODULE_1__["default"].onmessage = async (type, payload) => {

const result = await process(payload.input, payload.options || {});
const result = await process(payload.input, payload.options || {}, context);
_worker_farm_worker_body__WEBPACK_IMPORTED_MODULE_1__["default"].postMessage('done', {

@@ -313,3 +320,3 @@ result

options = payload.options || {};
const resultIterator = processInBatches(inputBatches, options);
const resultIterator = processInBatches(inputBatches, options, context === null || context === void 0 ? void 0 : context.processInBatches);

@@ -344,2 +351,41 @@ for await (const batch of resultIterator) {

function processOnMainThread(arrayBuffer, options = {}) {
return new Promise((resolve, reject) => {
const id = requestId++;
/**
*/
const onMessage = (type, payload) => {
if (payload.id !== id) {
// not ours
return;
}
switch (type) {
case 'done':
_worker_farm_worker_body__WEBPACK_IMPORTED_MODULE_1__["default"].removeEventListener(onMessage);
resolve(payload.result);
break;
case 'error':
_worker_farm_worker_body__WEBPACK_IMPORTED_MODULE_1__["default"].removeEventListener(onMessage);
reject(payload.error);
break;
default: // ignore
}
};
_worker_farm_worker_body__WEBPACK_IMPORTED_MODULE_1__["default"].addEventListener(onMessage); // Ask the main thread to decode data
const payload = {
id,
input: arrayBuffer,
options
};
_worker_farm_worker_body__WEBPACK_IMPORTED_MODULE_1__["default"].postMessage('process', payload);
});
}
/***/ }),

@@ -346,0 +392,0 @@

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

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

},
"gitHead": "59a9b2843ffc095c818dcd2894ed64b6e8fd52ae"
"gitHead": "527b9c69f1293552ac21228503e9d72da6fbf809"
}

@@ -28,3 +28,3 @@ import type {WorkerObject} from './types';

export {processOnWorker} from './lib/worker-api/process-on-worker';
export {processOnWorker, canProcessOnWorker} from './lib/worker-api/process-on-worker';
export {createWorker} from './lib/worker-api/create-worker';

@@ -31,0 +31,0 @@

@@ -6,5 +6,6 @@ // Version constant cannot be imported, it needs to correspond to the build version of **this** module.

if (typeof __VERSION__ === 'undefined') {
// eslint-disable-next-line
console.error(
'loaders.gl: The __VERSION__ variable is not injected using babel-plugin-version-inline. Latest unstable workers would be fetched from the CDN.'
'loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.'
);
}

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

/* global importScripts */
import {global, isBrowser, isWorker} from '../env-utils/globals';

@@ -2,0 +3,0 @@ import * as node from '../node/require-utils.node';

@@ -1,9 +0,18 @@

import type {WorkerMessageType, WorkerMessagePayload} from '../../types';
import type {
WorkerMessageType,
WorkerMessagePayload,
WorkerContext,
Process,
ProcessInBatches
} from '../../types';
import AsyncQueue from '../async-queue/async-queue';
import WorkerBody from '../worker-farm/worker-body';
// import {validateWorkerVersion} from './validate-worker-version';
/** Counter for jobs */
let requestId = 0;
let inputBatches;
let options;
export type ProcessFunction = (data: any, options: {[key: string]: any}) => Promise<any>;
export type ProcessOnMainThread = (data: any, options?: {[key: string]: any}, context?) => any;

@@ -13,3 +22,3 @@ /**

*/
export function createWorker(process: ProcessFunction, processInBatches?: Function): void {
export function createWorker(process: Process, processInBatches?: ProcessInBatches): void {
// Check that we are actually in a worker thread

@@ -20,2 +29,6 @@ if (typeof self === 'undefined') {

const context: WorkerContext = {
process: processOnMainThread
};
// eslint-disable-next-line complexity

@@ -29,3 +42,3 @@ WorkerBody.onmessage = async (type: WorkerMessageType, payload: WorkerMessagePayload) => {

}
const result = await process(payload.input, payload.options || {});
const result = await process(payload.input, payload.options || {}, context);
WorkerBody.postMessage('done', {result});

@@ -40,3 +53,3 @@ break;

options = payload.options || {};
const resultIterator = processInBatches(inputBatches, options);
const resultIterator = processInBatches(inputBatches, options, context?.processInBatches);
for await (const batch of resultIterator) {

@@ -64,1 +77,37 @@ WorkerBody.postMessage('output-batch', {result: batch});

}
function processOnMainThread(arrayBuffer, options = {}) {
return new Promise((resolve, reject) => {
const id = requestId++;
/**
*/
const onMessage = (type, payload) => {
if (payload.id !== id) {
// not ours
return;
}
switch (type) {
case 'done':
WorkerBody.removeEventListener(onMessage);
resolve(payload.result);
break;
case 'error':
WorkerBody.removeEventListener(onMessage);
reject(payload.error);
break;
default:
// ignore
}
};
WorkerBody.addEventListener(onMessage);
// Ask the main thread to decode data
const payload = {id, input: arrayBuffer, options};
WorkerBody.postMessage('process', payload);
});
}
import type {
WorkerObject,
WorkerOptions,
WorkerContext,
WorkerMessageType,

@@ -12,2 +13,7 @@ WorkerMessagePayload

type ProcessOnWorkerOptions = WorkerOptions & {
jobName?: string;
[key: string]: any;
};
/**

@@ -19,3 +25,3 @@ * Determines if we can parse with worker

*/
export function canProcessWithWorker(worker: WorkerObject, options?: WorkerOptions) {
export function canProcessOnWorker(worker: WorkerObject, options?: WorkerOptions) {
if (!WorkerFarm.isSupported()) {

@@ -36,4 +42,4 @@ return false;

data: any,
options: WorkerOptions = {},
processOnMainThread?: Function
options: ProcessOnWorkerOptions = {},
context: WorkerContext = {}
): Promise<any> {

@@ -46,3 +52,4 @@ const name = getWorkerName(worker);

const job = await workerPool.startJob(worker.name, onMessage.bind(null, processOnMainThread));
const jobName = options.jobName || worker.name;
const job = await workerPool.startJob(jobName, onMessage.bind(null, context));

@@ -63,3 +70,3 @@ // Kick off the processing in the worker

async function onMessage(
processOnMainThread,
context: WorkerContext,
job: WorkerJob,

@@ -71,11 +78,31 @@ type: WorkerMessageType,

case 'done':
// Worker is done
job.done(payload);
break;
case 'error':
// Worker encountered an error
job.error(payload.error);
break;
case 'process':
// Worker is asking for us (main thread) to process something
const {id, input, options} = payload;
try {
if (!context.process) {
job.postMessage('error', {id, error: 'Worker not set up to process on main thread'});
return;
}
const result = await context.process(input, options);
job.postMessage('done', {id, result});
} catch (error) {
const message = error instanceof Error ? error.message : 'unknown error';
job.postMessage('error', {id, error: message});
}
break;
default:
job.error(type);
break;
// eslint-disable-next-line
console.warn(`process-on-worker: unknown message ${type}`);
}
}

@@ -12,5 +12,18 @@ /**

_workerType?: string;
[key: string]: any;
[key: string]: any; // TODO
};
export type WorkerContext = {
process?: Process;
processInBatches?;
};
export type Process = (data: any, options?: {[key: string]: any}, context?: WorkerContext) => any;
export type ProcessInBatches = (
iterator: AsyncIterable<any> | Iterable<any>,
options?: {[key: string]: any},
context?: WorkerContext
) => AsyncIterable<any>;
/**

@@ -28,7 +41,4 @@ * A worker description object

process?: (data: any, options?: object) => Promise<any>;
processInBatches?: (
iterator: AsyncIterator<any> | Iterator<any>,
options: object
) => Promise<AsyncIterator<any>>;
process?: Process;
processInBatches?: ProcessInBatches;
};

@@ -64,3 +74,3 @@

id?: number;
options?: object;
options?: {[key: string]: any};
input?: any; // Transferable;

@@ -67,0 +77,0 @@ result?: any; // Transferable

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