Skip to content

Commit efd6815

Browse files
anonrigruyadorno
authored andcommitted
lib: fix internalBinding typings
PR-URL: #49742 Reviewed-By: Chemi Atlow <[email protected]> Reviewed-By: Geoffrey Booth <[email protected]> Reviewed-By: Zeyu "Alex" Yang <[email protected]> Reviewed-By: Moshe Atlow <[email protected]>
1 parent 3db9b40 commit efd6815

20 files changed

+88
-61
lines changed

lib/internal/bootstrap/realm.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -174,9 +174,9 @@ const experimentalModuleList = new SafeSet();
174174
};
175175
}
176176

177-
// Set up internalBinding() in the closure.
178177
/**
179-
* @type {InternalBinding}
178+
* Set up internalBinding() in the closure.
179+
* @type {import('typings/globals').internalBinding}
180180
*/
181181
let internalBinding;
182182
{

tsconfig.json

+1-17
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,14 @@
22
"include": ["lib", "doc"],
33
"exclude": ["src", "tools", "out"],
44
"files": [
5-
"./typings/internalBinding/async_wrap.d.ts",
6-
"./typings/internalBinding/blob.d.ts",
7-
"./typings/internalBinding/config.d.ts",
8-
"./typings/internalBinding/constants.d.ts",
9-
"./typings/internalBinding/fs.d.ts",
10-
"./typings/internalBinding/http_parser.d.ts",
11-
"./typings/internalBinding/messaging.d.ts",
12-
"./typings/internalBinding/options.d.ts",
13-
"./typings/internalBinding/os.d.ts",
14-
"./typings/internalBinding/serdes.d.ts",
15-
"./typings/internalBinding/symbols.d.ts",
16-
"./typings/internalBinding/timers.d.ts",
17-
"./typings/internalBinding/types.d.ts",
18-
"./typings/internalBinding/url.d.ts",
19-
"./typings/internalBinding/util.d.ts",
20-
"./typings/internalBinding/worker.d.ts",
215
"./typings/globals.d.ts",
226
"./typings/primordials.d.ts"
237
],
248
"compilerOptions": {
259
"allowJs": true,
2610
"checkJs": false,
2711
"noEmit": true,
28-
"lib": ["ESNext"],
12+
"lib": ["ESNext", "DOM"],
2913
"target": "ESNext",
3014
"module": "CommonJS",
3115
"baseUrl": ".",

typings/globals.d.ts

+48
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
import {AsyncWrapBinding} from "./internalBinding/async_wrap";
2+
import {BlobBinding} from "./internalBinding/blob";
3+
import {ConfigBinding} from "./internalBinding/config";
4+
import {ConstantsBinding} from "./internalBinding/constants";
5+
import {HttpParserBinding} from "./internalBinding/http_parser";
6+
import {FsBinding} from "./internalBinding/fs";
7+
import {MessagingBinding} from "./internalBinding/messaging";
8+
import {OptionsBinding} from "./internalBinding/options";
9+
import {OSBinding} from "./internalBinding/os";
10+
import {SerdesBinding} from "./internalBinding/serdes";
11+
import {SymbolsBinding} from "./internalBinding/symbols";
12+
import {TimersBinding} from "./internalBinding/timers";
13+
import {TypesBinding} from "./internalBinding/types";
14+
import {URLBinding} from "./internalBinding/url";
15+
import {UtilBinding} from "./internalBinding/util";
16+
import {WorkerBinding} from "./internalBinding/worker";
17+
118
declare type TypedArray =
219
| Uint8Array
320
| Uint8ClampedArray
@@ -10,3 +27,34 @@ declare type TypedArray =
1027
| Float64Array
1128
| BigUint64Array
1229
| BigInt64Array;
30+
31+
interface InternalBindingMap {
32+
async_wrap: AsyncWrapBinding;
33+
blob: BlobBinding;
34+
config: ConfigBinding;
35+
constants: ConstantsBinding;
36+
fs: FsBinding;
37+
http_parser: HttpParserBinding;
38+
messaging: MessagingBinding;
39+
options: OptionsBinding;
40+
os: OSBinding;
41+
serdes: SerdesBinding;
42+
symbols: SymbolsBinding;
43+
timers: TimersBinding;
44+
types: TypesBinding;
45+
url: URLBinding;
46+
util: UtilBinding;
47+
worker: WorkerBinding;
48+
}
49+
50+
type InternalBindingKeys = keyof InternalBindingMap;
51+
52+
declare function internalBinding<T extends InternalBindingKeys>(binding: T): InternalBindingMap[T]
53+
54+
declare global {
55+
namespace NodeJS {
56+
interface Global {
57+
internalBinding<T extends InternalBindingKeys>(binding: T): InternalBindingMap[T]
58+
}
59+
}
60+
}

typings/internalBinding/async_wrap.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ declare namespace InternalAsyncWrapBinding {
7272
}
7373
}
7474

75-
declare function InternalBinding(binding: 'async_wrap'): {
75+
export interface AsyncWrapBinding {
7676
setupHooks(): {
7777
init: (
7878
asyncId: number,
@@ -129,4 +129,4 @@ declare function InternalBinding(binding: 'async_wrap'): {
129129
kDefaultTriggerAsyncId: 3;
130130
};
131131
Providers: InternalAsyncWrapBinding.Providers;
132-
};
132+
}

typings/internalBinding/blob.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ declare namespace InternalBlobBinding {
1010
}
1111
}
1212

13-
declare function InternalBinding(binding: 'blob'): {
13+
export interface BlobBinding {
1414
createBlob(sources: Array<Uint8Array | InternalBlobBinding.BlobHandle>, length: number): InternalBlobBinding.BlobHandle;
1515
FixedSizeBlobCopyJob: typeof InternalBlobBinding.FixedSizeBlobCopyJob;
1616
getDataObject(id: string): [handle: InternalBlobBinding.BlobHandle | undefined, length: number, type: string] | undefined;
1717
storeDataObject(id: string, handle: InternalBlobBinding.BlobHandle, size: number, type: string): void;
1818
revokeDataObject(id: string): void;
19-
};
19+
}

typings/internalBinding/config.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
declare function InternalBinding(binding: 'config'): {
1+
export interface ConfigBinding {
22
isDebugBuild: boolean;
33
hasOpenSSL: boolean;
44
fipsMode: boolean;
@@ -9,4 +9,4 @@ declare function InternalBinding(binding: 'config'): {
99
noBrowserGlobals: boolean;
1010
bits: number;
1111
hasDtrace: boolean;
12-
};
12+
}

typings/internalBinding/constants.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
declare function InternalBinding(binding: 'constants'): {
1+
export interface ConstantsBinding {
22
os: {
33
UV_UDP_REUSEADDR: 4;
44
dlopen: {
@@ -382,4 +382,4 @@ declare function InternalBinding(binding: 'constants'): {
382382
TRACE_EVENT_PHASE_LEAVE_CONTEXT: 41;
383383
TRACE_EVENT_PHASE_LINK_IDS: 61;
384384
};
385-
};
385+
}

typings/internalBinding/fs.d.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ declare namespace InternalFSBinding {
109109

110110
function internalModuleReadJSON(path: string): [] | [string, boolean];
111111
function internalModuleStat(path: string): number;
112-
112+
113113
function lchown(path: string, uid: number, gid: number, req: FSReqCallback): void;
114114
function lchown(path: string, uid: number, gid: number, req: undefined, ctx: FSSyncContext): void;
115115
function lchown(path: string, uid: number, gid: number, usePromises: typeof kUsePromises): Promise<void>;
@@ -198,7 +198,7 @@ declare namespace InternalFSBinding {
198198
function symlink(target: StringOrBuffer, path: StringOrBuffer, type: number, req: FSReqCallback): void;
199199
function symlink(target: StringOrBuffer, path: StringOrBuffer, type: number, req: undefined, ctx: FSSyncContext): void;
200200
function symlink(target: StringOrBuffer, path: StringOrBuffer, type: number, usePromises: typeof kUsePromises): Promise<void>;
201-
201+
202202
function unlink(path: string, req: FSReqCallback): void;
203203
function unlink(path: string, req: undefined, ctx: FSSyncContext): void;
204204
function unlink(path: string, usePromises: typeof kUsePromises): Promise<void>;
@@ -220,7 +220,7 @@ declare namespace InternalFSBinding {
220220
function writeString(fd: number, value: string, pos: unknown, encoding: unknown, usePromises: typeof kUsePromises): Promise<number>;
221221
}
222222

223-
declare function InternalBinding(binding: 'fs'): {
223+
export interface FsBinding {
224224
FSReqCallback: typeof InternalFSBinding.FSReqCallback;
225225

226226
FileHandle: typeof InternalFSBinding.FileHandle;
@@ -269,4 +269,4 @@ declare function InternalBinding(binding: 'fs'): {
269269
writeBuffer: typeof InternalFSBinding.writeBuffer;
270270
writeBuffers: typeof InternalFSBinding.writeBuffers;
271271
writeString: typeof InternalFSBinding.writeString;
272-
};
272+
}

typings/internalBinding/http_parser.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ declare namespace InternalHttpParserBinding {
3939
}
4040
}
4141

42-
declare function InternalBinding(binding: 'http_parser'): {
42+
export interface HttpParserBinding {
4343
methods: string[];
4444
HTTPParser: typeof InternalHttpParserBinding.HTTPParser;
45-
};
45+
}

typings/internalBinding/messaging.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ declare namespace InternalMessagingBinding {
1717
}
1818

1919

20-
declare function InternalBinding(binding: 'messaging'): {
20+
export interface MessagingBinding {
2121
DOMException: typeof import('internal/per_context/domexception').DOMException;
2222
MessageChannel: typeof InternalMessagingBinding.MessageChannel;
2323
MessagePort: typeof InternalMessagingBinding.MessagePort;
@@ -29,4 +29,4 @@ declare function InternalBinding(binding: 'messaging'): {
2929
moveMessagePortToContext(port: typeof InternalMessagingBinding.MessagePort, context: any): typeof InternalMessagingBinding.MessagePort;
3030
setDeserializerCreateObjectFunction(func: (deserializeInfo: string) => any): void;
3131
broadcastChannel(name: string): typeof InternalMessagingBinding.MessagePort;
32-
};
32+
}

typings/internalBinding/options.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
declare function InternalBinding(binding: 'options'): {
1+
export interface OptionsBinding {
22
getOptions(): {
33
options: Map<
44
string,
@@ -32,4 +32,4 @@ declare function InternalBinding(binding: 'options'): {
3232
kHostPort: 6;
3333
kStringList: 7;
3434
};
35-
};
35+
}

typings/internalBinding/os.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ declare namespace InternalOSBinding {
22
type OSContext = {};
33
}
44

5-
declare function InternalBinding(binding: 'os'): {
5+
export interface OSBinding {
66
getHostname(ctx: InternalOSBinding.OSContext): string | undefined;
77
getLoadAvg(array: Float64Array): void;
88
getUptime(): number;
@@ -22,4 +22,4 @@ declare function InternalBinding(binding: 'os'): {
2222
getPriority(pid: number, ctx: InternalOSBinding.OSContext): number | undefined;
2323
getOSInformation(ctx: InternalOSBinding.OSContext): [sysname: string, version: string, release: string];
2424
isBigEndian: boolean;
25-
};
25+
}

typings/internalBinding/serdes.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ declare namespace InternalSerdesBinding {
3030
}
3131
}
3232

33-
declare function InternalBinding(binding: 'serdes'): {
33+
export interface SerdesBinding {
3434
Serializer: typeof InternalSerdesBinding.Serializer;
3535
Deserializer: typeof InternalSerdesBinding.Deserializer;
36-
};
36+
}

typings/internalBinding/symbols.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const owner_symbol: unique symbol;
1010
export const onpskexchange_symbol: unique symbol;
1111
export const trigger_async_id_symbol: unique symbol;
1212

13-
declare function InternalBinding(binding: 'symbols'): {
13+
export interface SymbolsBinding {
1414
async_id_symbol: typeof async_id_symbol;
1515
handle_onclose_symbol: typeof handle_onclose_symbol;
1616
no_message_symbol: typeof no_message_symbol;
@@ -22,4 +22,4 @@ declare function InternalBinding(binding: 'symbols'): {
2222
owner_symbol: typeof owner_symbol;
2323
onpskexchange_symbol: typeof onpskexchange_symbol;
2424
trigger_async_id_symbol: typeof trigger_async_id_symbol;
25-
};
25+
}

typings/internalBinding/timers.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
declare function InternalBinding(binding: 'timers'): {
1+
export interface TimersBinding {
22
getLibuvNow(): number;
33
setupTimers(immediateCallback: () => void, timersCallback: (now: number) => void): void;
44
scheduleTimer(msecs: number): void;
55
toggleTimerRef(value: boolean): void;
66
toggleImmediateRef(value: boolean): void;
77
immediateInfo: Uint32Array;
8-
};
8+
}

typings/internalBinding/types.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
declare function InternalBinding(binding: 'types'): {
1+
export interface TypesBinding {
22
isAsyncFunction(value: unknown): value is (...args: unknown[]) => Promise<unknown>;
33
isGeneratorFunction(value: unknown): value is GeneratorFunction;
44
isAnyArrayBuffer(value: unknown): value is (ArrayBuffer | SharedArrayBuffer);
@@ -23,4 +23,4 @@ declare function InternalBinding(binding: 'types'): {
2323
isNumberObject: (value: unknown) => value is Number;
2424
isBooleanObject: (value: unknown) => value is Boolean,
2525
isBigIntObject: (value: unknown) => value is BigInt;
26-
};
26+
}

typings/internalBinding/url.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { urlUpdateActions } from 'internal/url'
22

3-
declare function InternalBinding(binding: 'url'): {
3+
export interface URLBinding {
44
urlComponents: Uint32Array;
55

66
domainToASCII(input: string): string;
@@ -9,4 +9,4 @@ declare function InternalBinding(binding: 'url'): {
99
format(input: string, fragment?: boolean, unicode?: boolean, search?: boolean, auth?: boolean): string;
1010
parse(input: string, base?: string): string | false;
1111
update(input: string, actionType: typeof urlUpdateActions, value: string): string | false;
12-
};
12+
}

typings/internalBinding/util.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ declare namespace InternalUtilBinding {
77
}
88
}
99

10-
declare function InternalBinding(binding: 'util'): {
10+
export interface UtilBinding {
1111
// PER_ISOLATE_PRIVATE_SYMBOL_PROPERTIES, defined in src/env_properties.h
1212
arrow_message_private_symbol: 1;
1313
contextify_context_private_symbol: 2;
@@ -44,4 +44,4 @@ declare function InternalBinding(binding: 'util'): {
4444
WeakReference: typeof InternalUtilBinding.WeakReference;
4545
guessHandleType(fd: number): 'TCP' | 'TTY' | 'UDP' | 'FILE' | 'PIPE' | 'UNKNOWN';
4646
toUSVString(str: string, start: number): string;
47-
};
47+
}

typings/internalBinding/worker.d.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { InternalMessagingBinding } from './messaging';
2+
13
declare namespace InternalWorkerBinding {
24
class Worker {
35
constructor(
@@ -18,7 +20,7 @@ declare namespace InternalWorkerBinding {
1820
}
1921
}
2022

21-
declare function InternalBinding(binding: 'worker'): {
23+
export interface WorkerBinding {
2224
Worker: typeof InternalWorkerBinding.Worker;
2325
getEnvMessagePort(): InternalMessagingBinding.MessagePort;
2426
threadId: number;
@@ -30,4 +32,4 @@ declare function InternalBinding(binding: 'worker'): {
3032
kCodeRangeSizeMb: number;
3133
kStackSizeMb: number;
3234
kTotalResourceLimitCount: number;
33-
};
35+
}

typings/primordials.d.ts

+1-8
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,6 @@ declare namespace primordials {
203203
export const DatePrototypeToTimeString: UncurryThis<typeof Date.prototype.toTimeString>
204204
export const DatePrototypeToISOString: UncurryThis<typeof Date.prototype.toISOString>
205205
export const DatePrototypeToUTCString: UncurryThis<typeof Date.prototype.toUTCString>
206-
export const DatePrototypeToGMTString: UncurryThis<typeof Date.prototype.toGMTString>
207206
export const DatePrototypeGetDate: UncurryThis<typeof Date.prototype.getDate>
208207
export const DatePrototypeSetDate: UncurryThis<typeof Date.prototype.setDate>
209208
export const DatePrototypeGetDay: UncurryThis<typeof Date.prototype.getDay>
@@ -238,17 +237,15 @@ declare namespace primordials {
238237
export const DatePrototypeGetUTCSeconds: UncurryThis<typeof Date.prototype.getUTCSeconds>
239238
export const DatePrototypeSetUTCSeconds: UncurryThis<typeof Date.prototype.setUTCSeconds>
240239
export const DatePrototypeValueOf: UncurryThis<typeof Date.prototype.valueOf>
241-
export const DatePrototypeGetYear: UncurryThis<typeof Date.prototype.getYear>
242-
export const DatePrototypeSetYear: UncurryThis<typeof Date.prototype.setYear>
243240
export const DatePrototypeToJSON: UncurryThis<typeof Date.prototype.toJSON>
244241
export const DatePrototypeToLocaleString: UncurryThis<typeof Date.prototype.toLocaleString>
245242
export const DatePrototypeToLocaleDateString: UncurryThis<typeof Date.prototype.toLocaleDateString>
246243
export const DatePrototypeToLocaleTimeString: UncurryThis<typeof Date.prototype.toLocaleTimeString>
247244
export const DatePrototypeSymbolToPrimitive: UncurryMethod<typeof Date.prototype, typeof Symbol.toPrimitive>;
248245
export import Error = globalThis.Error;
249246
export const ErrorPrototype: typeof Error.prototype
247+
// @ts-ignore
250248
export const ErrorCaptureStackTrace: typeof Error.captureStackTrace
251-
export const ErrorStackTraceLimit: typeof Error.stackTraceLimit
252249
export const ErrorPrototypeToString: UncurryThis<typeof Error.prototype.toString>
253250
export import EvalError = globalThis.EvalError;
254251
export const EvalErrorPrototype: typeof EvalError.prototype
@@ -332,11 +329,7 @@ declare namespace primordials {
332329
export const ObjectEntries: typeof Object.entries
333330
export const ObjectFromEntries: typeof Object.fromEntries
334331
export const ObjectValues: typeof Object.values
335-
export const ObjectPrototype__defineGetter__: UncurryThis<typeof Object.prototype.__defineGetter__>
336-
export const ObjectPrototype__defineSetter__: UncurryThis<typeof Object.prototype.__defineSetter__>
337332
export const ObjectPrototypeHasOwnProperty: UncurryThis<typeof Object.prototype.hasOwnProperty>
338-
export const ObjectPrototype__lookupGetter__: UncurryThis<typeof Object.prototype.__lookupGetter__>
339-
export const ObjectPrototype__lookupSetter__: UncurryThis<typeof Object.prototype.__lookupSetter__>
340333
export const ObjectPrototypeIsPrototypeOf: UncurryThis<typeof Object.prototype.isPrototypeOf>
341334
export const ObjectPrototypePropertyIsEnumerable: UncurryThis<typeof Object.prototype.propertyIsEnumerable>
342335
export const ObjectPrototypeToString: UncurryThis<typeof Object.prototype.toString>

0 commit comments

Comments
 (0)