Launch Week Day 3: Introducing Organization Notifications in Socket.Learn More
Socket
Book a DemoSign in
Socket

@xylabs/threads

Package Overview
Dependencies
Maintainers
5
Versions
395
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@xylabs/threads

Web workers & worker threads as simple as a function call

latest
Source
npmnpm
Version
5.0.100
Version published
Weekly downloads
5.2K
380.39%
Maintainers
5
Weekly downloads
 
Created
Source

@xylabs/threads

npm license

Web workers & worker threads as simple as a function call

Install

Using npm:

npm install {{name}}

Using yarn:

yarn add {{name}}

Using pnpm:

pnpm add {{name}}

Using bun:

bun add {{name}}

License

See the LICENSE file for license rights and limitations (LGPL-3.0-only).

Reference

packages

threads

### .temp-typedoc

  ### index-browser

    ### functions

      ### <a id="Transfer"></a>Transfer

@xylabs/threads

Call Signature

function Transfer(transferable): TransferDescriptor;

Mark a transferable object as such, so it will no be serialized and deserialized on messaging with the main thread, but to transfer ownership of it to the receiving thread.

Only works with array buffers, message ports and few more special types of objects, but it's much faster than serializing and deserializing them.

Note: The transferable object cannot be accessed by this thread again unless the receiving thread transfers it back again!

Parameters

transferable

Transferable

Array buffer, message port or similar.

Returns

TransferDescriptor

See

https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast

Call Signature

function Transfer<T>(payload, transferables): TransferDescriptor;

Mark transferable objects within an arbitrary object or array as being a transferable object. They will then not be serialized and deserialized on messaging with the main thread, but ownership of them will be tranferred to the receiving thread.

Only array buffers, message ports and few more special types of objects can be transferred, but it's much faster than serializing and deserializing them.

Note: The transferable object cannot be accessed by this thread again unless the receiving thread transfers it back again!

Type Parameters

T

T

Parameters

payload

T

transferables

Transferable[]

Returns

TransferDescriptor

See

https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast

      ### <a id="isWorkerRuntime"></a>isWorkerRuntime

@xylabs/threads

function isWorkerRuntime(): boolean;

Check whether the current code is running inside a web worker context.

Returns

boolean

True if running in a worker, false otherwise.

      ### <a id="registerSerializer"></a>registerSerializer

@xylabs/threads

function registerSerializer(serializer): void;

Register a custom serializer to extend the default serialization behavior for worker messages.

Parameters

serializer

SerializerImplementation<JsonSerializable>

The serializer implementation to register.

Returns

void

      ### <a id="spawn"></a>spawn

@xylabs/threads

function spawn<Exposed>(worker, options?): Promise<ExposedAs<Exposed>>;

Spawn a new thread. Takes a fresh worker instance, wraps it in a thin abstraction layer to provide the transparent API and verifies that the worker has initialized successfully.

Type Parameters

Exposed

Exposed extends WorkerFunction | WorkerModule<any> = ArbitraryWorkerInterface

Parameters

worker

Worker

Instance of Worker. Either a web worker or worker_threads worker.

options?

timeout?

number

Init message timeout. Default: 10000 or set by environment variable.

Returns

Promise<ExposedAs<Exposed>>

    ### interfaces

      ### <a id="Pool"></a>Pool

@xylabs/threads

Thread pool managing a set of worker threads. Use it to queue tasks that are run on those threads with limited concurrency.

Type Parameters

ThreadType

ThreadType extends Thread

Methods

completed()

completed(allowResolvingImmediately?): Promise<any>;

Returns a promise that resolves once the task queue is emptied. Promise will be rejected if any task fails.

Parameters

allowResolvingImmediately?

boolean

Set to true to resolve immediately if task queue is currently empty.

Returns

Promise<any>

settled()

settled(allowResolvingImmediately?): Promise<Error[]>;

Returns a promise that resolves once the task queue is emptied. Failing tasks will not cause the promise to be rejected.

Parameters

allowResolvingImmediately?

boolean

Set to true to resolve immediately if task queue is currently empty.

Returns

Promise<Error[]>

events()

events(): Observable<PoolEvent<ThreadType>>;

Returns an observable that yields pool events.

Returns

Observable<PoolEvent<ThreadType>>

queue()

queue<Return>(task): QueuedTask<ThreadType, Return>;

Queue a task and return a promise that resolves once the task has been dequeued, started and finished.

Type Parameters

Return

Return

Parameters

task

TaskRunFunction<ThreadType, Return>

An async function that takes a thread instance and invokes it.

Returns

QueuedTask<ThreadType, Return>

terminate()

terminate(force?): Promise<void>;

Terminate all pool threads.

Parameters

force?

boolean

Set to true to kill the thread even if it cannot be stopped gracefully.

Returns

Promise<void>

      ### <a id="QueuedTask"></a>QueuedTask

@xylabs/threads

Task that has been pool.queued()-ed.

Type Parameters

ThreadType

ThreadType extends Thread

Return

Return

Properties

then

then: <TResult1, TResult2>(onfulfilled?, onrejected?) => Promise<TResult1 | TResult2>;

QueuedTask is thenable, so you can await it. Resolves when the task has successfully been executed. Rejects if the task fails.

Attaches callbacks for the resolution and/or rejection of the Promise.

Type Parameters

TResult1

TResult1 = Return

TResult2

TResult2 = never

Parameters

onfulfilled?

((value) => TResult1 | PromiseLike<TResult1>) | null

The callback to execute when the Promise is resolved.

onrejected?

((reason) => TResult2 | PromiseLike<TResult2>) | null

The callback to execute when the Promise is rejected.

Returns

Promise<TResult1 | TResult2>

A Promise for the completion of which ever callback is executed.

Methods

cancel()

cancel(): void;

Queued tasks can be cancelled until the pool starts running them on a worker thread.

Returns

void

      ### <a id="Serializer"></a>Serializer

@xylabs/threads

A serializer that can convert between a message format and an input type.

Type Parameters

Msg

Msg = JsonSerializable

Input

Input = any

Methods

deserialize()

deserialize(message): Input;

Parameters

message

Msg

Returns

Input

serialize()

serialize(input): Msg;

Parameters

input

Input

Returns

Msg

      ### <a id="SerializerImplementation"></a>SerializerImplementation

@xylabs/threads

A serializer implementation that receives a fallback (default) serializer for chaining.

Type Parameters

Msg

Msg = JsonSerializable

Input

Input = any

Methods

deserialize()

deserialize(message, defaultDeserialize): Input;

Parameters

message

Msg

defaultDeserialize

(msg) => Input

Returns

Input

serialize()

serialize(input, defaultSerialize): Msg;

Parameters

input

Input

defaultSerialize

(inp) => Msg

Returns

Msg

      ### <a id="TransferDescriptor"></a>TransferDescriptor

@xylabs/threads

Descriptor wrapping a value with its associated transferable objects for zero-copy messaging.

Type Parameters

T

T = any

Properties

[$transferable]

[$transferable]: true;

send

send: T;

transferables

transferables: Transferable[];
    ### namespaces

      ### Pool

        ### type-aliases

          ### <a id="Event"></a>Event

@xylabs/threads

type Event<ThreadType> = PoolEvent<ThreadType>;

Type Parameters

ThreadType

ThreadType extends Thread = any

          ### <a id="EventType"></a>EventType

@xylabs/threads

type EventType = PoolEventType;
    ### type-aliases

      ### <a id="BlobWorker"></a>BlobWorker

@xylabs/threads

type BlobWorker = typeof BlobWorkerClass;

Separate class to spawn workers from source code blobs or strings.

      ### <a id="ExposedAs"></a>ExposedAs

@xylabs/threads

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

Maps a worker's exposed API type to its corresponding thread type (FunctionThread or ModuleThread).

Type Parameters

Exposed

Exposed extends WorkerFunction | WorkerModule<any>

      ### <a id="FunctionThread"></a>FunctionThread

@xylabs/threads

type FunctionThread<Args, ReturnType> = ProxyableFunction<Args, ReturnType> & PrivateThreadProps;

A thread wrapping a single exposed function.

Type Parameters

Args

Args extends any[] = any[]

ReturnType

ReturnType = any

      ### <a id="JsonSerializable"></a>JsonSerializable

@xylabs/threads

type JsonSerializable = 
  | JsonSerializablePrimitive
  | JsonSerializablePrimitive[]
  | JsonSerializableObject
  | JsonSerializableObject[];

A JSON-compatible value that can be serialized for worker message passing.

      ### <a id="ModuleThread"></a>ModuleThread

@xylabs/threads

type ModuleThread<Methods> = ModuleProxy<Methods> & PrivateThreadProps;

A thread wrapping an exposed module of functions.

Type Parameters

Methods

Methods extends ModuleMethods = any

      ### <a id="Thread"></a>Thread

@xylabs/threads

type Thread = ThreadType;

Re-exported Thread type from the master types module.

      ### <a id="Worker"></a>Worker

@xylabs/threads

type Worker = WorkerType;

Worker implementation. Either web worker or a node.js Worker class.

    ### variables

      ### <a id="BlobWorker"></a>BlobWorker

@xylabs/threads

BlobWorker: typeof BlobWorker;

Separate class to spawn workers from source code blobs or strings.

      ### <a id="DefaultSerializer"></a>DefaultSerializer

@xylabs/threads

const DefaultSerializer: Serializer<JsonSerializable>;

Default serializer that handles Error instances and passes other values through.

      ### <a id="Pool"></a>Pool

@xylabs/threads

Pool: <ThreadType>(spawnWorker, optionsOrSize?) => WorkerPool<ThreadType> & object;

Thread pool constructor. Creates a new pool and spawns its worker threads.

Type Declaration

EventType

EventType: typeof PoolEventType;
      ### <a id="Thread"></a>Thread

@xylabs/threads

Thread: object;

Thread utility functions. Use them to manage or inspect a spawn()-ed thread.

Type Declaration

errors()

errors<ThreadT>(thread): Observable<Error>;

Return an observable that can be used to subscribe to all errors happening in the thread.

Type Parameters

ThreadT

ThreadT extends Thread

Parameters

thread

ThreadT

Returns

Observable<Error>

events()

events<ThreadT>(thread): Observable<WorkerEvent>;

Return an observable that can be used to subscribe to internal events happening in the thread. Useful for debugging.

Type Parameters

ThreadT

ThreadT extends Thread

Parameters

thread

ThreadT

Returns

Observable<WorkerEvent>

terminate()

terminate<ThreadT>(thread): Promise<void>;

Terminate a thread. Remember to terminate every thread when you are done using it.

Type Parameters

ThreadT

ThreadT extends Thread

Parameters

thread

ThreadT

Returns

Promise<void>

      ### <a id="Worker"></a>Worker

@xylabs/threads

Worker: typeof WorkerImplementation;

Worker implementation. Either web worker or a node.js Worker class.

  ### index-node

    ### functions

      ### <a id="isWorkerRuntime"></a>isWorkerRuntime

@xylabs/threads

function isWorkerRuntime(): boolean;

Check whether the current code is running inside a Node.js worker thread.

Returns

boolean

True if running in a worker thread (not the main thread), false otherwise.

    ### type-aliases

      ### <a id="BlobWorker"></a>BlobWorker

@xylabs/threads

type BlobWorker = typeof BlobWorkerClass;

Separate class to spawn workers from source code blobs or strings.

      ### <a id="Worker"></a>Worker

@xylabs/threads

type Worker = WorkerType;

Worker implementation. Either web worker or a node.js Worker class.

    ### variables

      ### <a id="BlobWorker"></a>BlobWorker

@xylabs/threads

BlobWorker: typeof BlobWorker;

Separate class to spawn workers from source code blobs or strings.

      ### <a id="Worker"></a>Worker

@xylabs/threads

Worker: typeof WorkerImplementation;

Worker implementation. Either web worker or a node.js Worker class.

Keywords

thread

FAQs

Package last updated on 22 Apr 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts