nanolith
Version:
Multi-threading in no time with seamless TypeScript support.
49 lines (48 loc) • 2.02 kB
TypeScript
import type { ParentThreadMessageType, WorkerMessageType } from '../constants/messages.js';
import type { MessengerRawData } from './messenger.js';
import type { ExitCode } from './workers.js';
export type RemoveListenerFunction = () => void;
export type ParentThreadBaseMessageBody<Type extends ParentThreadMessageType = ParentThreadMessageType> = {
type: Type;
};
export type ParentThreadSendMessageBody<Data = any> = {
data: Data;
} & ParentThreadBaseMessageBody<ParentThreadMessageType.Message>;
export type ParentThreadCallMessageBody = {
key: string;
name: string;
params: any[];
} & ParentThreadBaseMessageBody<ParentThreadMessageType.Call>;
export type ParentThreadMessengerTransferBody = {
data: MessengerRawData;
} & ParentThreadBaseMessageBody<ParentThreadMessageType.MessengerTransfer>;
export type WorkerBaseMessageBody<Type extends WorkerMessageType = WorkerMessageType> = {
type: Type;
};
export type WorkerSendMessageBody<Data = any> = {
data: Data;
} & WorkerBaseMessageBody<WorkerMessageType.Message>;
export type WorkerTaskReturnMessageBody = {
data: any;
} & WorkerBaseMessageBody<WorkerMessageType.TaskReturn>;
export type WorkerTaskErrorMessageBody = {
data: Error;
} & WorkerBaseMessageBody<WorkerMessageType.TaskError>;
export type WorkerCallReturnMessageBody = {
key: string;
data: any;
} & WorkerBaseMessageBody<WorkerMessageType.CallReturn>;
export type WorkerCallErrorMessageBody = {
key: string;
data: Error;
} & WorkerBaseMessageBody<WorkerMessageType.CallError>;
export type WorkerMessengerTransferSuccessBody = {
data: string;
} & WorkerBaseMessageBody<WorkerMessageType.MessengerTransferSuccess>;
export type WorkerExceptionMessageBody = {
data: Error;
} & WorkerBaseMessageBody<WorkerMessageType.WorkerException>;
export type WorkerInitializedMessageBody = WorkerBaseMessageBody<WorkerMessageType.Initialized>;
export type WorkerExitMessageBody = {
code: ExitCode;
} & WorkerBaseMessageBody<WorkerMessageType.Exit>;