UNPKG

stagehand

Version:

A type-safe library for communicating between JS processes, workers, or other message-passing boundaries.

28 lines (27 loc) 1 kB
declare const DEHYDRATED: unique symbol; declare const HANDLE: unique symbol; export type Hydrated<T extends Dehydrated<any>> = T extends Dehydrated<infer U> ? U : never; export type Dehydrated<T> = { [DEHYDRATED]: T; }; declare const HANDLE_KEY = "--stagehand-function-handle"; export type Handle = typeof HANDLE; export interface DehydratedHandle { [HANDLE_KEY]: Handle; } export default class FunctionHandleRegistry { private hydrateRemoteFunction; private nextFunctionHandle; private handlesByFunction; private functionsByHandle; constructor(hydrateRemoteFunction: (handle: Handle) => (...params: unknown[]) => unknown); dehydrate<T>(root: T): Dehydrated<T>; rehydrate<T extends Dehydrated<any>>(root: T): Hydrated<T>; lookupFunction(handle: Handle): Function | undefined; lookupHandle(f: Function): Handle | undefined; releaseFunction(f: Function): void; reset(): void; private lookupOrGenerateHandle; private generateHAndle; } export {};