stagehand
Version:
A type-safe library for communicating between JS processes, workers, or other message-passing boundaries.
28 lines (27 loc) • 1 kB
TypeScript
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 {};