Skip to content

Commit

Permalink
typings: define types for worker and messaging bindings
Browse files Browse the repository at this point in the history
PR-URL: #40143
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
targos committed Sep 26, 2021
1 parent 2b02d2f commit 0eb3420
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 0 deletions.
2 changes: 2 additions & 0 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
],
Expand Down
32 changes: 32 additions & 0 deletions typings/internalBinding/messaging.d.ts
Original file line number Diff line number Diff line change
@@ -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;
};
32 changes: 32 additions & 0 deletions typings/internalBinding/worker.d.ts
Original file line number Diff line number Diff line change
@@ -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;
};

0 comments on commit 0eb3420

Please sign in to comment.