Skip to content

Commit e49ef49

Browse files
committed
lib: use bindingsmap for mapping types
1 parent 152d00a commit e49ef49

File tree

18 files changed

+64
-39
lines changed

18 files changed

+64
-39
lines changed

lib/internal/bootstrap/loaders.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,19 @@ const schemelessBlockList = new SafeSet([
160160
};
161161
}
162162

163+
/**
164+
* @typedef {import('../../../typings/bindings').InternalBindingMap} InternalBindingMap
165+
*/
163166
// Set up internalBinding() in the closure.
164167
// Do not use `internalBinding` variable name due to the breakage of TypeScript autocompletion.
165-
let _internalBinding;
168+
/**
169+
* @type {<T extends keyof InternalBindingMap>(binding: T) => InternalBindingMap[T]}
170+
*/
171+
let internalBinding;
166172
{
167173
const bindingObj = { __proto__: null };
168174
// eslint-disable-next-line no-global-assign
169-
_internalBinding = function internalBinding(module) {
175+
internalBinding = function internalBinding(module) {
170176
let mod = bindingObj[module];
171177
if (typeof mod !== 'object') {
172178
mod = bindingObj[module] = getInternalBinding(module);
@@ -181,7 +187,7 @@ const {
181187
builtinIds,
182188
compileFunction,
183189
setInternalLoaders,
184-
} = _internalBinding('builtins');
190+
} = internalBinding('builtins');
185191

186192
const getOwn = (target, property, receiver) => {
187193
return ObjectPrototypeHasOwnProperty(target, property) ?
@@ -279,7 +285,7 @@ class BuiltinModule {
279285

280286
getESMFacade() {
281287
if (this.module) return this.module;
282-
const { ModuleWrap } = _internalBinding('module_wrap');
288+
const { ModuleWrap } = internalBinding('module_wrap');
283289
// TODO(aduh95): move this to C++, alongside the initialization of the class.
284290
ObjectSetPrototypeOf(ModuleWrap.prototype, null);
285291
const url = `node:${this.id}`;
@@ -329,7 +335,7 @@ class BuiltinModule {
329335
const fn = compileFunction(id);
330336
// Arguments must match the parameters specified in
331337
// BuiltinLoader::LookupAndCompile().
332-
fn(this.exports, requireFn, this, process, _internalBinding, primordials);
338+
fn(this.exports, requireFn, this, process, internalBinding, primordials);
333339

334340
this.loaded = true;
335341
} finally {
@@ -346,7 +352,7 @@ class BuiltinModule {
346352
// Think of this as module.exports in this file even though it is not
347353
// written in CommonJS style.
348354
const loaderExports = {
349-
internalBinding: _internalBinding,
355+
internalBinding,
350356
BuiltinModule,
351357
require: requireBuiltin,
352358
};
@@ -373,4 +379,4 @@ function requireWithFallbackInDeps(request) {
373379
}
374380

375381
// Store the internal loaders in C++.
376-
setInternalLoaders(_internalBinding, requireBuiltin);
382+
setInternalLoaders(internalBinding, requireBuiltin);

tsconfig.json

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,7 @@
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/util.d.ts",
19-
"./typings/internalBinding/worker.d.ts",
5+
"./typings/bindings.d.ts",
206
"./typings/globals.d.ts",
217
"./typings/primordials.d.ts"
228
],

typings/bindings.d.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import type { AsyncWrapBinding } from './internalBinding/async_wrap';
2+
import type { BlobBinding } from "./internalBinding/blob";
3+
import type { ConfigBinding } from "./internalBinding/config";
4+
import type { ConstantsBinding } from "./internalBinding/constants";
5+
import type { FSBinding } from "./internalBinding/fs";
6+
import type { HttpParserBinding } from "./internalBinding/http_parser";
7+
import type { MessagingBinding } from "./internalBinding/messaging";
8+
import type { OptionsBinding } from "./internalBinding/options";
9+
import type { OSBinding } from "./internalBinding/os";
10+
import type { SerdesBinding } from "./internalBinding/serdes";
11+
import type { SymbolsBinding } from "./internalBinding/symbols";
12+
import type { TimersBinding } from "./internalBinding/timers";
13+
import type { TypesBinding } from "./internalBinding/types";
14+
import type { UtilBindings } from "./internalBinding/util";
15+
import type { WorkerBinding } from "./internalBinding/worker";
16+
17+
export type InternalBindingMap = {
18+
async_wrap: AsyncWrapBinding;
19+
blob: BlobBinding;
20+
config: ConfigBinding;
21+
constants: ConstantsBinding;
22+
fs: FSBinding;
23+
http_parser: HttpParserBinding
24+
messaging: MessagingBinding;
25+
options: OptionsBinding;
26+
os: OSBinding;
27+
serdes: SerdesBinding;
28+
symbols: SymbolsBinding;
29+
timers: TimersBinding;
30+
types: TypesBinding;
31+
util: UtilBindings;
32+
worker: WorkerBinding;
33+
}

typings/internalBinding/async_wrap.d.ts

Lines changed: 2 additions & 2 deletions
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 type 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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ declare namespace InternalBlobBinding {
1010
}
1111
}
1212

13-
declare function internalBinding(binding: 'blob'): {
13+
export type 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;

typings/internalBinding/config.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
declare function internalBinding(binding: 'config'): {
1+
export type ConfigBinding = {
22
isDebugBuild: boolean;
33
hasOpenSSL: boolean;
44
fipsMode: boolean;

typings/internalBinding/constants.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
declare function internalBinding(binding: 'constants'): {
1+
export type ConstantsBinding = {
22
os: {
33
UV_UDP_REUSEADDR: 4;
44
dlopen: {

typings/internalBinding/fs.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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 type FSBinding = {
224224
FSReqCallback: typeof InternalFSBinding.FSReqCallback;
225225

226226
FileHandle: typeof InternalFSBinding.FileHandle;

typings/internalBinding/http_parser.d.ts

Lines changed: 1 addition & 1 deletion
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 type HttpParserBinding = {
4343
methods: string[];
4444
HTTPParser: typeof InternalHttpParserBinding.HTTPParser;
4545
};

typings/internalBinding/messaging.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { DOMException } from '../../lib/internal/per_context/domexception';
1+
import type { DOMException } from 'internal/per_context/domexception';
22

33
declare namespace InternalMessagingBinding {
44
class MessageChannel {
@@ -19,7 +19,7 @@ declare namespace InternalMessagingBinding {
1919
}
2020

2121

22-
declare function internalBinding(binding: 'messaging'): {
22+
export type MessagingBinding = {
2323
DOMException: typeof DOMException;
2424
MessageChannel: typeof InternalMessagingBinding.MessageChannel;
2525
MessagePort: typeof InternalMessagingBinding.MessagePort;

0 commit comments

Comments
 (0)