Socket
Socket
Sign inDemoInstall

@xylabs/threads

Package Overview
Dependencies
Maintainers
0
Versions
77
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@xylabs/threads - npm Package Compare versions

Comparing version 3.6.7 to 3.6.8

6

dist/esm/master/implementation.browser.js

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

}
if (typeof url === 'string' &&
isAbsoluteURL(url) &&
(options?.CORSWorkaround ?? true)) {
if (typeof url === 'string'
&& isAbsoluteURL(url)
&& (options?.CORSWorkaround ?? true)) {
url = createSourceBlobURL(`importScripts(${JSON.stringify(url)});`);

@@ -37,0 +37,0 @@ }

@@ -59,4 +59,4 @@ "use strict";

};
return typeof __non_webpack_require__ === 'function' ?
__non_webpack_require__.resolve(makeRelative(scriptPath))
return typeof __non_webpack_require__ === 'function'
? __non_webpack_require__.resolve(makeRelative(scriptPath))
: eval('require').resolve(makeRelative(rebaseScriptPath(scriptPath, /[/\\]worker_threads[/\\]/)));

@@ -100,3 +100,3 @@ }

const terminateWorkersAndMaster = () => {
Promise.all(allWorkers.map((worker) => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
Promise.all(allWorkers.map(worker => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
allWorkers = [];

@@ -125,4 +125,6 @@ };

constructor(scriptPath, options) {
const resolvedScriptPath = options && options.fromSource ? null
: process.platform === 'win32' ? `file:///${resolveScriptPath(scriptPath).replaceAll('\\', '/')}`
const resolvedScriptPath = options && options.fromSource
? null
: process.platform === 'win32'
? `file:///${resolveScriptPath(scriptPath).replaceAll('\\', '/')}`
: resolveScriptPath(scriptPath);

@@ -154,3 +156,3 @@ if (!resolvedScriptPath) {

terminate() {
allWorkers = allWorkers.filter((worker) => worker !== this);
allWorkers = allWorkers.filter(worker => worker !== this);
return super.terminate();

@@ -160,3 +162,3 @@ }

const terminateWorkersAndMaster = () => {
Promise.all(allWorkers.map((worker) => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
Promise.all(allWorkers.map(worker => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
allWorkers = [];

@@ -203,4 +205,4 @@ };

else {
const isMainThread = typeof __non_webpack_require__ === 'function' ?
__non_webpack_require__('worker_threads').isMainThread
const isMainThread = typeof __non_webpack_require__ === 'function'
? __non_webpack_require__('worker_threads').isMainThread
: eval('require')('worker_threads').isMainThread;

@@ -207,0 +209,0 @@ return !isMainThread;

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

function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
return new Promise(resolve => setTimeout(resolve, ms));
}

@@ -55,3 +55,3 @@ function flatMap(array, mapper) {

this.eventObservable = (0, observable_fns_1.multicast)(observable_fns_1.Observable.from(this.eventSubject));
Promise.all(this.workers.map((worker) => worker.init)).then(() => this.eventSubject.next({
Promise.all(this.workers.map(worker => worker.init)).then(() => this.eventSubject.next({
size: this.workers.length,

@@ -67,3 +67,3 @@ type: pool_types_1.PoolEventType.initialized,

const { concurrency = 1 } = this.options;
return this.workers.find((worker) => worker.runningTasks.length < concurrency);
return this.workers.find(worker => worker.runningTasks.length < concurrency);
}

@@ -101,3 +101,3 @@ async runPoolTask(worker, task) {

const removeTaskFromWorkersRunningTasks = () => {
worker.runningTasks = worker.runningTasks.filter((someRunPromise) => someRunPromise !== runPromise);
worker.runningTasks = worker.runningTasks.filter(someRunPromise => someRunPromise !== runPromise);
};

@@ -149,3 +149,3 @@ await delay(0);

async settled(allowResolvingImmediately = false) {
const getCurrentlyRunningTasks = () => flatMap(this.workers, (worker) => worker.runningTasks);
const getCurrentlyRunningTasks = () => flatMap(this.workers, worker => worker.runningTasks);
const taskFailures = [];

@@ -221,3 +221,3 @@ const failureSubscription = this.eventObservable.subscribe((event) => {

return;
this.taskQueue = this.taskQueue.filter((someTask) => someTask !== task);
this.taskQueue = this.taskQueue.filter(someTask => someTask !== task);
this.eventSubject.next({

@@ -233,5 +233,5 @@ taskID: task.id,

if (this.taskQueue.length >= maxQueuedJobs) {
throw new Error('Maximum number of pool tasks queued. Refusing to queue another one.\n' +
'This usually happens for one of two reasons: We are either at peak ' +
"workload right now or some tasks just won't finish, thus blocking the pool.");
throw new Error('Maximum number of pool tasks queued. Refusing to queue another one.\n'
+ 'This usually happens for one of two reasons: We are either at peak '
+ "workload right now or some tasks just won't finish, thus blocking the pool.");
}

@@ -238,0 +238,0 @@ this.debug(`Queueing task #${task.id}...`);

@@ -19,4 +19,4 @@ "use strict";

const isUncaughtErrorMessage = (data) => data && data.type === 'uncaughtError';
const initMessageTimeout = typeof process !== 'undefined' && process.env !== undefined && process.env.THREADS_WORKER_INIT_TIMEOUT ?
Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT, 10)
const initMessageTimeout = typeof process !== 'undefined' && process.env !== undefined && process.env.THREADS_WORKER_INIT_TIMEOUT
? Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT, 10)
: 10_000;

@@ -89,4 +89,4 @@ async function withTimeout(promise, timeoutInMs, errorMessage) {

const workerErrors = workerEvents
.filter((event) => event.type === master_1.WorkerEventType.internalError)
.map((errorEvent) => errorEvent.error);
.filter(event => event.type === master_1.WorkerEventType.internalError)
.map(errorEvent => errorEvent.error);
return Object.assign(raw, {

@@ -93,0 +93,0 @@ [symbols_1.$errors]: workerErrors,

@@ -118,4 +118,4 @@ "use strict";

static from(thing) {
return isThenable(thing) ?
new ObservablePromise((observer) => {
return isThenable(thing)
? new ObservablePromise((observer) => {
const onFulfilled = (value) => {

@@ -122,0 +122,0 @@ observer.next(value);

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

const unsubscribe = () => {
this[$observers] = this[$observers].filter((someObserver) => someObserver !== observer);
this[$observers] = this[$observers].filter(someObserver => someObserver !== observer);
};

@@ -15,0 +15,0 @@ return unsubscribe;

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

if (isObservable(syncResult)) {
const subscription = syncResult.subscribe((value) => postJobResultMessage(jobUID, false, (0, common_1.serialize)(value)), (error) => {
const subscription = syncResult.subscribe(value => postJobResultMessage(jobUID, false, (0, common_1.serialize)(value)), (error) => {
postJobErrorMessage(jobUID, (0, common_1.serialize)(error));

@@ -140,3 +140,3 @@ activeSubscriptions.delete(jobUID);

});
const methodNames = Object.keys(exposed).filter((key) => typeof exposed[key] === 'function');
const methodNames = Object.keys(exposed).filter(key => typeof exposed[key] === 'function');
postModuleInitMessage(methodNames);

@@ -143,0 +143,0 @@ }

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

}
if (typeof url === 'string' &&
isAbsoluteURL(url) &&
(options?.CORSWorkaround ?? true)) {
if (typeof url === 'string'
&& isAbsoluteURL(url)
&& (options?.CORSWorkaround ?? true)) {
url = createSourceBlobURL(`importScripts(${JSON.stringify(url)});`);

@@ -37,0 +37,0 @@ }

@@ -59,4 +59,4 @@ "use strict";

};
return typeof __non_webpack_require__ === 'function' ?
__non_webpack_require__.resolve(makeRelative(scriptPath))
return typeof __non_webpack_require__ === 'function'
? __non_webpack_require__.resolve(makeRelative(scriptPath))
: eval('require').resolve(makeRelative(rebaseScriptPath(scriptPath, /[/\\]worker_threads[/\\]/)));

@@ -100,3 +100,3 @@ }

const terminateWorkersAndMaster = () => {
Promise.all(allWorkers.map((worker) => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
Promise.all(allWorkers.map(worker => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
allWorkers = [];

@@ -125,4 +125,6 @@ };

constructor(scriptPath, options) {
const resolvedScriptPath = options && options.fromSource ? null
: process.platform === 'win32' ? `file:///${resolveScriptPath(scriptPath).replaceAll('\\', '/')}`
const resolvedScriptPath = options && options.fromSource
? null
: process.platform === 'win32'
? `file:///${resolveScriptPath(scriptPath).replaceAll('\\', '/')}`
: resolveScriptPath(scriptPath);

@@ -154,3 +156,3 @@ if (!resolvedScriptPath) {

terminate() {
allWorkers = allWorkers.filter((worker) => worker !== this);
allWorkers = allWorkers.filter(worker => worker !== this);
return super.terminate();

@@ -160,3 +162,3 @@ }

const terminateWorkersAndMaster = () => {
Promise.all(allWorkers.map((worker) => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
Promise.all(allWorkers.map(worker => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
allWorkers = [];

@@ -203,4 +205,4 @@ };

else {
const isMainThread = typeof __non_webpack_require__ === 'function' ?
__non_webpack_require__('worker_threads').isMainThread
const isMainThread = typeof __non_webpack_require__ === 'function'
? __non_webpack_require__('worker_threads').isMainThread
: eval('require')('worker_threads').isMainThread;

@@ -207,0 +209,0 @@ return !isMainThread;

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

function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
return new Promise(resolve => setTimeout(resolve, ms));
}

@@ -55,3 +55,3 @@ function flatMap(array, mapper) {

this.eventObservable = (0, observable_fns_1.multicast)(observable_fns_1.Observable.from(this.eventSubject));
Promise.all(this.workers.map((worker) => worker.init)).then(() => this.eventSubject.next({
Promise.all(this.workers.map(worker => worker.init)).then(() => this.eventSubject.next({
size: this.workers.length,

@@ -67,3 +67,3 @@ type: pool_types_1.PoolEventType.initialized,

const { concurrency = 1 } = this.options;
return this.workers.find((worker) => worker.runningTasks.length < concurrency);
return this.workers.find(worker => worker.runningTasks.length < concurrency);
}

@@ -101,3 +101,3 @@ async runPoolTask(worker, task) {

const removeTaskFromWorkersRunningTasks = () => {
worker.runningTasks = worker.runningTasks.filter((someRunPromise) => someRunPromise !== runPromise);
worker.runningTasks = worker.runningTasks.filter(someRunPromise => someRunPromise !== runPromise);
};

@@ -149,3 +149,3 @@ await delay(0);

async settled(allowResolvingImmediately = false) {
const getCurrentlyRunningTasks = () => flatMap(this.workers, (worker) => worker.runningTasks);
const getCurrentlyRunningTasks = () => flatMap(this.workers, worker => worker.runningTasks);
const taskFailures = [];

@@ -221,3 +221,3 @@ const failureSubscription = this.eventObservable.subscribe((event) => {

return;
this.taskQueue = this.taskQueue.filter((someTask) => someTask !== task);
this.taskQueue = this.taskQueue.filter(someTask => someTask !== task);
this.eventSubject.next({

@@ -233,5 +233,5 @@ taskID: task.id,

if (this.taskQueue.length >= maxQueuedJobs) {
throw new Error('Maximum number of pool tasks queued. Refusing to queue another one.\n' +
'This usually happens for one of two reasons: We are either at peak ' +
"workload right now or some tasks just won't finish, thus blocking the pool.");
throw new Error('Maximum number of pool tasks queued. Refusing to queue another one.\n'
+ 'This usually happens for one of two reasons: We are either at peak '
+ "workload right now or some tasks just won't finish, thus blocking the pool.");
}

@@ -238,0 +238,0 @@ this.debug(`Queueing task #${task.id}...`);

@@ -19,4 +19,4 @@ "use strict";

const isUncaughtErrorMessage = (data) => data && data.type === 'uncaughtError';
const initMessageTimeout = typeof process !== 'undefined' && process.env !== undefined && process.env.THREADS_WORKER_INIT_TIMEOUT ?
Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT, 10)
const initMessageTimeout = typeof process !== 'undefined' && process.env !== undefined && process.env.THREADS_WORKER_INIT_TIMEOUT
? Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT, 10)
: 10_000;

@@ -89,4 +89,4 @@ async function withTimeout(promise, timeoutInMs, errorMessage) {

const workerErrors = workerEvents
.filter((event) => event.type === master_1.WorkerEventType.internalError)
.map((errorEvent) => errorEvent.error);
.filter(event => event.type === master_1.WorkerEventType.internalError)
.map(errorEvent => errorEvent.error);
return Object.assign(raw, {

@@ -93,0 +93,0 @@ [symbols_1.$errors]: workerErrors,

@@ -118,4 +118,4 @@ "use strict";

static from(thing) {
return isThenable(thing) ?
new ObservablePromise((observer) => {
return isThenable(thing)
? new ObservablePromise((observer) => {
const onFulfilled = (value) => {

@@ -122,0 +122,0 @@ observer.next(value);

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

const unsubscribe = () => {
this[$observers] = this[$observers].filter((someObserver) => someObserver !== observer);
this[$observers] = this[$observers].filter(someObserver => someObserver !== observer);
};

@@ -15,0 +15,0 @@ return unsubscribe;

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

if (isObservable(syncResult)) {
const subscription = syncResult.subscribe((value) => postJobResultMessage(jobUID, false, (0, common_1.serialize)(value)), (error) => {
const subscription = syncResult.subscribe(value => postJobResultMessage(jobUID, false, (0, common_1.serialize)(value)), (error) => {
postJobErrorMessage(jobUID, (0, common_1.serialize)(error));

@@ -140,3 +140,3 @@ activeSubscriptions.delete(jobUID);

});
const methodNames = Object.keys(exposed).filter((key) => typeof exposed[key] === 'function');
const methodNames = Object.keys(exposed).filter(key => typeof exposed[key] === 'function');
postModuleInitMessage(methodNames);

@@ -143,0 +143,0 @@ }

{
"name": "@xylabs/threads",
"version": "3.6.7",
"version": "3.6.8",
"description": "Web workers & worker threads as simple as a function call",

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

"package-compile": "yarn build",
"clean": "rimraf dist/ dist-esm/",
"clean": "rimraf ./dist ./dist-esm",
"dev": "npm run clean && tsc -p tsconfig.json --watch",

@@ -109,3 +109,3 @@ "build": "npm run clean && npm run build:cjs && npm run build:es",

"raw-loader": "^4.0.2",
"rimraf": "^4.4.1",
"rimraf": "^5.0.10",
"rollup": "^4.19.2",

@@ -112,0 +112,0 @@ "threads-plugin": "^1.4.0",

@@ -40,6 +40,6 @@ /* eslint-disable import/no-internal-modules */

if (
typeof url === 'string' &&
isAbsoluteURL(url) && // Create source code blob loading JS file via `importScripts()`
typeof url === 'string'
&& isAbsoluteURL(url) // Create source code blob loading JS file via `importScripts()`
// to circumvent worker CORS restrictions
(options?.CORSWorkaround ?? true)
&& (options?.CORSWorkaround ?? true)
) {

@@ -46,0 +46,0 @@ url = createSourceBlobURL(`importScripts(${JSON.stringify(url)});`)

@@ -0,7 +1,7 @@

/* eslint-disable @typescript-eslint/no-require-imports */
/* eslint-disable import/no-internal-modules */
/* eslint-disable unicorn/no-process-exit */
/* eslint-disable sonarjs/no-identical-functions */
/* eslint-disable unicorn/prefer-logical-operator-over-ternary */
/* eslint-disable unicorn/prefer-regexp-test */
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable unicorn/prefer-add-event-listener */

@@ -89,4 +89,4 @@ /* eslint-disable unicorn/prefer-event-target */

return typeof __non_webpack_require__ === 'function' ?
__non_webpack_require__.resolve(makeRelative(scriptPath))
return typeof __non_webpack_require__ === 'function'
? __non_webpack_require__.resolve(makeRelative(scriptPath))
: eval('require').resolve(makeRelative(rebaseScriptPath(scriptPath, /[/\\]worker_threads[/\\]/)))

@@ -97,4 +97,4 @@ }

// Webpack hack
const NativeWorker =
typeof __non_webpack_require__ === 'function' ? __non_webpack_require__('worker_threads').Worker : eval('require')('worker_threads').Worker
const NativeWorker
= typeof __non_webpack_require__ === 'function' ? __non_webpack_require__('worker_threads').Worker : eval('require')('worker_threads').Worker

@@ -142,3 +142,3 @@ let allWorkers: Array<typeof NativeWorker> = []

// we should terminate all workers and then gracefully shutdown self process
Promise.all(allWorkers.map((worker) => worker.terminate())).then(
Promise.all(allWorkers.map(worker => worker.terminate())).then(
() => process.exit(0),

@@ -181,6 +181,8 @@ () => process.exit(1),

// (`Error [ERR_INVALID_PROTOCOL]: Protocol 'c:' not supported`)
const resolvedScriptPath =
options && options.fromSource ? null
: process.platform === 'win32' ? `file:///${resolveScriptPath(scriptPath).replaceAll('\\', '/')}`
: resolveScriptPath(scriptPath)
const resolvedScriptPath
= options && options.fromSource
? null
: process.platform === 'win32'
? `file:///${resolveScriptPath(scriptPath).replaceAll('\\', '/')}`
: resolveScriptPath(scriptPath)

@@ -216,3 +218,3 @@ if (!resolvedScriptPath) {

terminate() {
allWorkers = allWorkers.filter((worker) => worker !== this)
allWorkers = allWorkers.filter(worker => worker !== this)
return super.terminate()

@@ -224,3 +226,3 @@ }

// we should terminate all workers and then gracefully shutdown self process
Promise.all(allWorkers.map((worker) => worker.terminate())).then(
Promise.all(allWorkers.map(worker => worker.terminate())).then(
() => process.exit(0),

@@ -280,8 +282,8 @@ () => process.exit(1),

// Webpack hack
const isMainThread =
typeof __non_webpack_require__ === 'function' ?
__non_webpack_require__('worker_threads').isMainThread
: eval('require')('worker_threads').isMainThread
const isMainThread
= typeof __non_webpack_require__ === 'function'
? __non_webpack_require__('worker_threads').isMainThread
: eval('require')('worker_threads').isMainThread
return !isMainThread
}
}
/* eslint-disable import/no-internal-modules */
/* eslint-disable sonarjs/no-all-duplicated-branches */
/* eslint-disable @typescript-eslint/no-explicit-any */

@@ -4,0 +3,0 @@ /*

@@ -22,37 +22,37 @@ /* eslint-disable @typescript-eslint/no-explicit-any */

| {
type: PoolEventType.initialized
size: number
}
type: PoolEventType.initialized
size: number
}
| {
type: PoolEventType.taskQueued
taskID: number
}
type: PoolEventType.taskQueued
taskID: number
}
| {
type: PoolEventType.taskQueueDrained
}
type: PoolEventType.taskQueueDrained
}
| {
type: PoolEventType.taskStart
taskID: number
workerID: number
}
type: PoolEventType.taskStart
taskID: number
workerID: number
}
| {
type: PoolEventType.taskCompleted
returnValue: any
taskID: number
workerID: number
}
type: PoolEventType.taskCompleted
returnValue: any
taskID: number
workerID: number
}
| {
type: PoolEventType.taskFailed
error: Error
taskID: number
workerID: number
}
type: PoolEventType.taskFailed
error: Error
taskID: number
workerID: number
}
| {
type: PoolEventType.taskCanceled
taskID: number
}
type: PoolEventType.taskCanceled
taskID: number
}
| {
type: PoolEventType.terminated
remainingQueue: Array<QueuedTask<ThreadType, any>>
}
type: PoolEventType.terminated
remainingQueue: Array<QueuedTask<ThreadType, any>>
}

@@ -59,0 +59,0 @@ export interface WorkerDescriptor<ThreadType extends Thread> {

@@ -34,3 +34,3 @@ /* eslint-disable import/export */

function delay(ms: number) {
return new Promise((resolve) => setTimeout(resolve, ms))
return new Promise(resolve => setTimeout(resolve, ms))
}

@@ -137,3 +137,3 @@

Promise.all(this.workers.map((worker) => worker.init)).then(
Promise.all(this.workers.map(worker => worker.init)).then(
() =>

@@ -154,3 +154,3 @@ this.eventSubject.next({

const { concurrency = 1 } = this.options
return this.workers.find((worker) => worker.runningTasks.length < concurrency)
return this.workers.find(worker => worker.runningTasks.length < concurrency)
}

@@ -192,3 +192,3 @@

const removeTaskFromWorkersRunningTasks = () => {
worker.runningTasks = worker.runningTasks.filter((someRunPromise) => someRunPromise !== runPromise)
worker.runningTasks = worker.runningTasks.filter(someRunPromise => someRunPromise !== runPromise)
}

@@ -247,3 +247,3 @@

async settled(allowResolvingImmediately: boolean = false): Promise<Error[]> {
const getCurrentlyRunningTasks = () => flatMap(this.workers, (worker) => worker.runningTasks)
const getCurrentlyRunningTasks = () => flatMap(this.workers, worker => worker.runningTasks)

@@ -335,3 +335,3 @@ const taskFailures: Error[] = []

if (!this.taskQueue.includes(task)) return
this.taskQueue = this.taskQueue.filter((someTask) => someTask !== task)
this.taskQueue = this.taskQueue.filter(someTask => someTask !== task)
this.eventSubject.next({

@@ -349,5 +349,5 @@ taskID: task.id,

throw new Error(
'Maximum number of pool tasks queued. Refusing to queue another one.\n' +
'This usually happens for one of two reasons: We are either at peak ' +
"workload right now or some tasks just won't finish, thus blocking the pool.",
'Maximum number of pool tasks queued. Refusing to queue another one.\n'
+ 'This usually happens for one of two reasons: We are either at peak '
+ "workload right now or some tasks just won't finish, thus blocking the pool.",
)

@@ -378,3 +378,3 @@ }

this.eventSubject.complete()
await Promise.all(this.workers.map(async (worker) => Thread.terminate(await worker.init)))
await Promise.all(this.workers.map(async worker => Thread.terminate(await worker.init)))
}

@@ -381,0 +381,0 @@ }

@@ -31,5 +31,5 @@ /* eslint-disable import/no-internal-modules */

Exposed extends ArbitraryWorkerInterface ? ArbitraryThreadType
: Exposed extends WorkerFunction ? FunctionThread<Parameters<Exposed>, StripAsync<ReturnType<Exposed>>>
: Exposed extends WorkerModule<any> ? ModuleThread<Exposed>
: never
: Exposed extends WorkerFunction ? FunctionThread<Parameters<Exposed>, StripAsync<ReturnType<Exposed>>>
: Exposed extends WorkerModule<any> ? ModuleThread<Exposed>
: never

@@ -43,6 +43,6 @@ const debugMessages = DebugLogger('threads:master:messages')

const initMessageTimeout =
typeof process !== 'undefined' && process.env !== undefined && process.env.THREADS_WORKER_INIT_TIMEOUT ?
Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT, 10)
: 10_000
const initMessageTimeout
= typeof process !== 'undefined' && process.env !== undefined && process.env.THREADS_WORKER_INIT_TIMEOUT
? Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT, 10)
: 10_000

@@ -127,4 +127,4 @@ async function withTimeout<T>(promise: Promise<T>, timeoutInMs: number, errorMessage: string): Promise<T> {

const workerErrors = workerEvents
.filter((event) => event.type === WorkerEventType.internalError)
.map((errorEvent) => (errorEvent as WorkerInternalErrorEvent).error)
.filter(event => event.type === WorkerEventType.internalError)
.map(errorEvent => (errorEvent as WorkerInternalErrorEvent).error)

@@ -131,0 +131,0 @@ return Object.assign(raw as any, {

@@ -169,15 +169,15 @@ /* eslint-disable unicorn/no-thenable */

static from<T>(thing: Observable<T> | ObservableLike<T> | ArrayLike<T> | Thenable<T>): ObservablePromise<T> {
return isThenable(thing) ?
new ObservablePromise((observer) => {
const onFulfilled = (value: T) => {
observer.next(value)
observer.complete()
}
const onRejected = (error: any) => {
observer.error(error)
}
thing.then(onFulfilled, onRejected)
})
return isThenable(thing)
? new ObservablePromise((observer) => {
const onFulfilled = (value: T) => {
observer.next(value)
observer.complete()
}
const onRejected = (error: any) => {
observer.error(error)
}
thing.then(onFulfilled, onRejected)
})
: (super.from(thing) as ObservablePromise<T>)
}
}

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

/* eslint-disable sonarjs/prefer-immediate-return */
/* eslint-disable @typescript-eslint/no-explicit-any */

@@ -23,3 +22,3 @@ import { Observable, ObservableLike, SubscriptionObserver } from 'observable-fns'

const unsubscribe = () => {
this[$observers] = this[$observers].filter((someObserver) => someObserver !== observer)
this[$observers] = this[$observers].filter(someObserver => someObserver !== observer)
}

@@ -26,0 +25,0 @@ return unsubscribe

/* eslint-disable @typescript-eslint/no-explicit-any */
export type SettlementResult<T> =
| {
status: 'fulfilled'
value: T
}
status: 'fulfilled'
value: T
}
| {
reason: any
status: 'rejected'
}
reason: any
status: 'rejected'
}

@@ -12,0 +12,0 @@ // Based on <https://github.com/es-shims/Promise.allSettled/blob/master/implementation.js>

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

/* eslint-disable sonarjs/prefer-single-boolean-return */
/* eslint-disable @typescript-eslint/no-explicit-any */

@@ -3,0 +2,0 @@ import { $transferable } from './symbols'

@@ -23,4 +23,4 @@ /* eslint-disable @typescript-eslint/no-explicit-any */

Type extends Promise<infer PromiseBaseType> ? PromiseBaseType
: Type extends ObservableLike<infer ObservableBaseType> ? ObservableBaseType
: Type
: Type extends ObservableLike<infer ObservableBaseType> ? ObservableBaseType
: Type

@@ -36,3 +36,3 @@ export type StripTransfer<Type> = Type extends TransferDescriptor<infer BaseType> ? BaseType : Type

Args extends [] ? () => ObservablePromise<StripTransfer<StripAsync<ReturnType>>>
: (...args: ProxyableArgs<Args>) => ObservablePromise<StripTransfer<StripAsync<ReturnType>>>
: (...args: ProxyableArgs<Args>) => ObservablePromise<StripTransfer<StripAsync<ReturnType>>>

@@ -60,2 +60,3 @@ export type ModuleProxy<Methods extends ModuleMethods> = {

// tslint:disable-next-line no-empty-interface
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
interface AnyModuleThread extends PrivateThreadProps {

@@ -62,0 +63,0 @@ // Not specifying an index signature here as that would make `ModuleThread` incompatible

/* eslint-disable import/no-internal-modules */
/* eslint-disable sonarjs/prefer-immediate-return */
/* eslint-disable @typescript-eslint/no-explicit-any */

@@ -4,0 +3,0 @@ /// <reference lib="dom" />

@@ -134,3 +134,3 @@ /* eslint-disable import/no-internal-modules */

const subscription = syncResult.subscribe(
(value) => postJobResultMessage(jobUID, false, serialize(value)),
value => postJobResultMessage(jobUID, false, serialize(value)),
(error) => {

@@ -186,3 +186,3 @@ postJobErrorMessage(jobUID, serialize(error) as any)

const methodNames = Object.keys(exposed).filter((key) => typeof exposed[key] === 'function')
const methodNames = Object.keys(exposed).filter(key => typeof exposed[key] === 'function')
postModuleInitMessage(methodNames)

@@ -189,0 +189,0 @@ } else {

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

/* eslint-disable sonarjs/no-use-of-empty-return-value */
/* eslint-disable @typescript-eslint/no-explicit-any */

@@ -12,6 +11,6 @@

const results = await Promise.all([
pool.queue((hello) => hello('World')),
pool.queue((hello) => hello('World')),
pool.queue((hello) => hello('World')),
pool.queue((hello) => hello('World')),
pool.queue(hello => hello('World')),
pool.queue(hello => hello('World')),
pool.queue(hello => hello('World')),
pool.queue(hello => hello('World')),
])

@@ -18,0 +17,0 @@ await pool.terminate()

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

/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable @typescript-eslint/no-require-imports */
// NOTE:

@@ -3,0 +3,0 @@ // We are gonna test the bundles previously built by the AVA tests (see webpack.test.ts)

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

/* eslint-disable @typescript-eslint/no-unused-expressions */
/* eslint-disable @typescript-eslint/no-require-imports */
/* eslint-disable require-await */
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/no-var-requires */
import path from 'node:path'

@@ -13,7 +15,9 @@

const stringifyWebpackError = (error: any) =>
error ?
typeof error.stack === 'string' ? error.stack
: typeof error.message === 'string' ? error.message
: error
: ''
error
? typeof error.stack === 'string'
? error.stack
: typeof error.message === 'string'
? error.message
: error
: ''

@@ -23,3 +27,5 @@ async function runWebpack(config: any) {

Webpack(config).run((error, stats) => {
error ? reject(error) : resolve(stats)
if (stats) {
error ? reject(error) : resolve(stats)
}
})

@@ -26,0 +32,0 @@ })

@@ -31,4 +31,4 @@ /* eslint-disable @typescript-eslint/no-explicit-any */

serialize(data, fallback) {
return data instanceof Foo ?
{
return data instanceof Foo
? {
__type: '$$foo',

@@ -35,0 +35,0 @@ val: data.getValue(),

/* eslint-disable import/no-internal-modules */
/* eslint-disable sonarjs/no-duplicate-string */
/* eslint-disable @typescript-eslint/no-explicit-any */

@@ -9,3 +8,3 @@ import test from 'ava'

const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))
const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms))

@@ -47,5 +46,5 @@ test('can create an observable promise', async (t) => {

const promise1 = async.then((value) => t.is(value, 123), t.fail)
const promise1 = async.then(value => t.is(value, 123), t.fail)
await delay(10)
const promise2 = async.then((value) => t.is(value, 123), t.fail)
const promise2 = async.then(value => t.is(value, 123), t.fail)

@@ -109,3 +108,3 @@ await Promise.all([promise1, promise2])

async.subscribe(
(value) => capturedValues.push(value),
value => capturedValues.push(value),
() => {},

@@ -137,4 +136,4 @@ () => capturedCompletions++,

async.subscribe(
(value) => capturedValues.push(value),
(error) => capturedErrorMessages.push(error.message),
value => capturedValues.push(value),
error => capturedErrorMessages.push(error.message),
() => capturedCompletions++,

@@ -168,4 +167,4 @@ )

async.subscribe(
(value) => capturedValues.push(value),
(error) => capturedErrorMessages.push(error.message),
value => capturedValues.push(value),
error => capturedErrorMessages.push(error.message),
() => capturedCompletions++,

@@ -172,0 +171,0 @@ )

@@ -20,3 +20,3 @@ /* eslint-disable import/no-internal-modules */

const subscription1 = subject.subscribe(
(value) => values1.push(value),
value => values1.push(value),
undefined,

@@ -26,3 +26,3 @@ () => (completed1 = true),

subject.subscribe(
(value) => values2.push(value),
value => values2.push(value),
undefined,

@@ -32,3 +32,3 @@ () => (completed2 = true),

observable.subscribe(
(value) => values3.push(value),
value => values3.push(value),
undefined,

@@ -65,3 +65,3 @@ () => (completed3 = true),

() => {},
(error) => (error1 = error),
error => (error1 = error),
() => (completed1 = true),

@@ -71,3 +71,3 @@ )

() => {},
(error) => (error2 = error),
error => (error2 = error),
() => (completed2 = true),

@@ -77,3 +77,3 @@ )

() => {},
(error) => (error3 = error),
error => (error3 = error),
() => (completed3 = true),

@@ -80,0 +80,0 @@ )

/* eslint-disable import/no-internal-modules */
/* eslint-disable @typescript-eslint/no-floating-promises */
/* eslint-disable require-await */

@@ -25,3 +25,3 @@ /* eslint-disable @typescript-eslint/no-explicit-any */

const pool = Pool(spawnHelloWorld, 3)
pool.events().subscribe((event) => events.push(event))
pool.events().subscribe(event => events.push(event))

@@ -33,3 +33,3 @@ // Just to make sure all worker threads are initialized before starting to queue

.events()
.filter((event) => event.type === PoolEventType.initialized)
.filter(event => event.type === PoolEventType.initialized)
.subscribe(resolve, reject)

@@ -117,3 +117,2 @@ })

test.serial('pool.settled() does not reject on task failure', async (t) => {
// eslint-disable-next-line sonarjs/no-unused-collection
const returned: any[] = []

@@ -136,3 +135,3 @@

t.is(errors.length, 2)
t.deepEqual(errors.map((error) => error.message).sort(), ['Test error one', 'Test error two'])
t.deepEqual(errors.map(error => error.message).sort(), ['Test error one', 'Test error two'])
})

@@ -153,3 +152,3 @@

pool.events().subscribe((event) => events.push(event))
pool.events().subscribe(event => events.push(event))

@@ -173,3 +172,3 @@ let executionCount = 0

const cancellationEvents = events.filter((event) => event.type === 'taskCanceled')
const cancellationEvents = events.filter(event => event.type === 'taskCanceled')
t.deepEqual(cancellationEvents, [

@@ -176,0 +175,0 @@ {

/* eslint-disable import/no-internal-modules */
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable @typescript-eslint/no-explicit-any */

@@ -31,3 +31,3 @@ import test from 'ava'

const observable = countToFive()
observable.subscribe((value) => encounteredValues.push(value))
observable.subscribe(value => encounteredValues.push(value))
await observable

@@ -56,2 +56,3 @@

test('thread transfer errors are handled', async (t) => {
// eslint-disable-next-line @typescript-eslint/no-require-imports
const builtin = require('node:module').builtinModules

@@ -58,0 +59,0 @@ if (builtin.includes('worker_threads')) {

@@ -9,3 +9,3 @@ import test from 'ava'

const minmax = await spawn(new Worker('./workers/minmax'))
minmax.values().subscribe((values) => captured.push(values))
minmax.values().subscribe(values => captured.push(values))

@@ -12,0 +12,0 @@ await minmax.push(2)

@@ -28,3 +28,3 @@ /* eslint-disable import/no-internal-modules */

} else if (Array.isArray(obj)) {
return (obj as any[]).map((element) => replaceArrayBufferWithPlaceholder(element, arrayBuffer)) as any
return (obj as any[]).map(element => replaceArrayBufferWithPlaceholder(element, arrayBuffer)) as any
} else if (obj && typeof obj === 'object') {

@@ -48,3 +48,3 @@ const result: In = Object.create(Object.getPrototypeOf(obj))

worker.postMessage = spyOn(worker.postMessage.bind(worker), (postMessage) => (...args) => {
worker.postMessage = spyOn(worker.postMessage.bind(worker), postMessage => (...args) => {
postMessageCalls.push(replaceArrayBufferWithPlaceholder(args, testData))

@@ -51,0 +51,0 @@ return postMessage(...args)

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