UNPKG

@xylabs/threads

Version:

Web workers & worker threads as simple as a function call

73 lines (61 loc) 1.43 kB
/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/member-ordering */ export interface SerializedError { __error_marker: '$$error' message: string name: string stack?: string } ///////////////////////////// // Messages sent by master: export enum MasterMessageType { cancel = 'cancel', run = 'run', } export type MasterJobCancelMessage = { type: MasterMessageType.cancel uid: number } export type MasterJobRunMessage = { type: MasterMessageType.run uid: number method?: string args: any[] } //////////////////////////// // Messages sent by worker: export enum WorkerMessageType { error = 'error', init = 'init', result = 'result', running = 'running', uncaughtError = 'uncaughtError', } export type WorkerUncaughtErrorMessage = { type: WorkerMessageType.uncaughtError error: { message: string name: string stack?: string } } export type WorkerInitMessage = { type: WorkerMessageType.init exposed: { type: 'function' } | { type: 'module'; methods: string[] } } export type WorkerJobErrorMessage = { type: WorkerMessageType.error uid: number error: SerializedError } export type WorkerJobResultMessage = { type: WorkerMessageType.result uid: number complete?: true payload?: any } export type WorkerJobStartMessage = { type: WorkerMessageType.running uid: number resultType: 'observable' | 'promise' }