import type { MessagePort, TransferListItem } from 'node:worker_threads'; import type { TsRunner } from './constants.ts'; export type AnyFn = (...args: T) => R; export type Syncify = (...args: Parameters) => Awaited>; export type ValueOf = T[keyof T]; export interface MainToWorkerMessage { id: number; args: T; } export interface MainToWorkerCommandMessage { id: number; cmd: string; } export interface WorkerData { sharedBufferView: Int32Array; workerPort: MessagePort; pnpLoaderPath: string | undefined; } export interface DataMessage { result?: T; error?: unknown; properties?: unknown; } export interface StdioChunk { type: 'stderr' | 'stdout'; chunk: Uint8Array | string; encoding: BufferEncoding; } export interface WorkerToMainMessage extends DataMessage { id: number; stdio: StdioChunk[]; } export interface GlobalShim { moduleName: string; globalName?: string; named?: string | null; conditional?: boolean; } export interface PackageJson { type?: 'commonjs' | 'module'; } export interface SynckitOptions { execArgv?: string[]; globalShims?: GlobalShim[] | boolean; timeout?: number; transferList?: TransferListItem[]; tsRunner?: TsRunner; }