mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-11-03 07:54:40 +08:00
Without @types/node, every program loaded scriptc-node-fallback.d.ts whole: the console and process globals and 47 Node modules, about 8,100 lines, parsed, bound and checked in every cold build whether or not the program imported them. - The fallback file keeps the globals and the modules they name (console, readline, readline/promises, perf_hooks, tty). Every other module, under both spellings, has its own file in ambient/node-fallback/, which references the files of the modules its declarations name. - A module's file joins the program when one of the program's files names the module in a string literal: imports, requires, import types and JSDoc types all name modules that way. The entry is read before the first program; the program-root discovery passes add modules that other files name. Files are read as tsgo reads them, and the TypeScript libraries and scriptc's own declarations are skipped. - The checks that recognized the fallback file by its path recognize every fallback file.
42 lines
1.6 KiB
TypeScript
42 lines
1.6 KiB
TypeScript
/* node:async_hooks — declared surface without lowering: async-hook
|
|
* instrumentation is guarded behind env flags in harness code; a reached
|
|
* use fences at its site. */
|
|
declare module "async_hooks" {
|
|
/* AsyncLocalStorage: fiber-carried context snapshots — run/getStore/
|
|
* exit/enterWith/disable lower onto the runtime's active-slot machinery
|
|
* (als.* libCalls); values cross as dyn values. bind and snapshot bind
|
|
* functions to the active context; the options carry the store's
|
|
* default value and name. */
|
|
export interface AsyncLocalStorageOptions {
|
|
defaultValue?: any;
|
|
name?: string | undefined;
|
|
}
|
|
export class AsyncLocalStorage<T = any> {
|
|
constructor(options?: AsyncLocalStorageOptions);
|
|
static bind<Func extends (...args: any[]) => any>(fn: Func): Func;
|
|
static snapshot(): <R, TArgs extends any[]>(fn: (...args: TArgs) => R, ...args: TArgs) => R;
|
|
readonly name: string;
|
|
run<R>(store: T, callback: (...args: any[]) => R, ...args: any[]): R;
|
|
exit<R>(callback: (...args: any[]) => R, ...args: any[]): R;
|
|
getStore(): T | undefined;
|
|
enterWith(store: T): void;
|
|
disable(): void;
|
|
}
|
|
export interface AsyncHook {
|
|
enable(): AsyncHook;
|
|
disable(): AsyncHook;
|
|
}
|
|
export function createHook(callbacks: {
|
|
init?: (asyncId: number, type: string, triggerAsyncId: number, resource: unknown) => void;
|
|
before?: (asyncId: number) => void;
|
|
after?: (asyncId: number) => void;
|
|
destroy?: (asyncId: number) => void;
|
|
}): AsyncHook;
|
|
export function executionAsyncId(): number;
|
|
export function triggerAsyncId(): number;
|
|
}
|
|
|
|
declare module "node:async_hooks" {
|
|
export * from "async_hooks";
|
|
}
|