@ayonli/jsext
Version:
A JavaScript extension package for building strong and modern applications.
41 lines (40 loc) • 1.44 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
import type { ChildProcess } from "node:child_process";
import { Channel } from "../chan.ts";
import { AsyncTask } from "../async.ts";
import { BunWorker, NodeWorker, CallResponse } from "./types.ts";
type RemoteTask = {
module: string;
fn: string;
error?: unknown;
result?: {
value: any;
};
promise?: AsyncTask<any>;
channel?: Channel<IteratorResult<any>>;
generate?: () => void;
};
export declare const remoteTasks: Map<number, RemoteTask>;
export declare const getMaxParallelism: Promise<number>;
export declare function isCallResponse(msg: any): msg is CallResponse;
export declare function createWorker(options: {
parallel: {
workerEntry: string | undefined;
};
adapter?: "worker_threads" | "child_process";
}): Promise<{
worker: Worker | BunWorker | NodeWorker | ChildProcess;
workerId: number;
kind: "web_worker" | "bun_worker" | "node_worker" | "node_process";
}>;
export declare function acquireWorker(taskId: number, parallel: {
maxWorkers: number | undefined;
workerEntry: string | undefined;
}): Promise<Worker | NodeWorker | BunWorker>;
export declare function wrapArgs<A extends any[]>(args: A, getWorker: Promise<Worker | BunWorker | NodeWorker | ChildProcess>): {
args: A;
transferable: ArrayBuffer[];
};
export declare function unwrapReturnValue(value: any): any;
export {};