diff --git a/tsconfig.json b/tsconfig.json index df191a36f7cb13..d1d6469f494f97 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,9 +4,11 @@ "files": [ "./typings/internalBinding/fs.d.ts", "./typings/internalBinding/http_parser.d.ts", + "./typings/internalBinding/messaging.d.ts", "./typings/internalBinding/options.d.ts", "./typings/internalBinding/serdes.d.ts", "./typings/internalBinding/util.d.ts", + "./typings/internalBinding/worker.d.ts", "./typings/internalBinding.d.ts", "./typings/primordials.d.ts" ], diff --git a/typings/internalBinding.d.ts b/typings/internalBinding.d.ts index 598322d581ceac..ffb6423e3e5d87 100644 --- a/typings/internalBinding.d.ts +++ b/typings/internalBinding.d.ts @@ -439,3 +439,6 @@ declare function InternalBinding(binding: 'config'): { bits: number, hasDtrace: boolean } +declare function InternalBinding(binding: 'symbols'): { + [name: string]: symbol; +} diff --git a/typings/internalBinding/messaging.d.ts b/typings/internalBinding/messaging.d.ts new file mode 100644 index 00000000000000..ca5be84848408d --- /dev/null +++ b/typings/internalBinding/messaging.d.ts @@ -0,0 +1,32 @@ +declare namespace InternalMessagingBinding { + class MessageChannel { + port1: MessagePort; + port2: MessagePort; + } + + class MessagePort { + private constructor(); + postMessage(message: any, transfer?: any[] | null): void; + start(): void; + close(): void; + ref(): void; + unref(): void; + } + + class JSTransferable {} +} + + +declare function InternalBinding(binding: 'messaging'): { + DOMException: typeof import('internal/per_context/domexception').DOMException; + MessageChannel: typeof InternalMessagingBinding.MessageChannel; + MessagePort: typeof InternalMessagingBinding.MessagePort; + JSTransferable: typeof InternalMessagingBinding.JSTransferable; + stopMessagePort(port: typeof InternalMessagingBinding.MessagePort): void; + checkMessagePort(port: unknown): boolean; + drainMessagePort(port: typeof InternalMessagingBinding.MessagePort): void; + receiveMessageOnPort(port: typeof InternalMessagingBinding.MessagePort): any; + moveMessagePortToContext(port: typeof InternalMessagingBinding.MessagePort, context: any): typeof InternalMessagingBinding.MessagePort; + setDeserializerCreateObjectFunction(func: (deserializeInfo: string) => any): void; + broadcastChannel(name: string): typeof InternalMessagingBinding.MessagePort; +}; diff --git a/typings/internalBinding/worker.d.ts b/typings/internalBinding/worker.d.ts new file mode 100644 index 00000000000000..2fc7f9272d9f64 --- /dev/null +++ b/typings/internalBinding/worker.d.ts @@ -0,0 +1,32 @@ +declare namespace InternalWorkerBinding { + class Worker { + constructor( + url: string | URL | null, + env: object | null | undefined, + execArgv: string[] | null | undefined, + resourceLimits: Float64Array, + trackUnmanagedFds: boolean); + startThread(): void; + stopThread(): void; + ref(): void; + unref(): void; + getResourceLimits(): Float64Array; + takeHeapSnapshot(): object; + loopIdleTime(): number; + loopStartTime(): number; + } +} + +declare function InternalBinding(binding: 'worker'): { + Worker: typeof InternalWorkerBinding.Worker; + getEnvMessagePort(): InternalMessagingBinding.MessagePort; + threadId: number; + isMainThread: boolean; + ownsProcessState: boolean; + resourceLimits?: Float64Array; + kMaxYoungGenerationSizeMb: number; + kMaxOldGenerationSizeMb: number; + kCodeRangeSizeMb: number; + kStackSizeMb: number; + kTotalResourceLimitCount: number; +};