From af452b811997eb2bed8b58f6b1036a79a43a4ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sat, 2 Aug 2025 07:43:00 +0200 Subject: [PATCH] typings: improve internal binding types - Add typings for `async_context_frame`, `icu`, and `sea` bindings - Add a few missing exports on other bindings - Add a few missing primordials PR-URL: https://github.com/nodejs/node/pull/59176 Reviewed-By: Zeyu "Alex" Yang Reviewed-By: Yagiz Nizipli --- typings/globals.d.ts | 7 +++++++ .../internalBinding/async_context_frame.d.ts | 4 ++++ typings/internalBinding/constants.d.ts | 3 +++ typings/internalBinding/http_parser.d.ts | 13 ++++++++++++- typings/internalBinding/icu.d.ts | 18 ++++++++++++++++++ typings/internalBinding/sea.d.ts | 5 +++++ typings/internalBinding/symbols.d.ts | 2 ++ typings/internalBinding/util.d.ts | 18 ++++++++++++++++++ typings/primordials.d.ts | 3 +++ 9 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 typings/internalBinding/async_context_frame.d.ts create mode 100644 typings/internalBinding/icu.d.ts create mode 100644 typings/internalBinding/sea.d.ts diff --git a/typings/globals.d.ts b/typings/globals.d.ts index 7b53a869b9c..2ac9699b1f8 100644 --- a/typings/globals.d.ts +++ b/typings/globals.d.ts @@ -1,3 +1,4 @@ +import { AsyncContextFrameBinding } from './internalBinding/async_context_frame'; import { AsyncWrapBinding } from './internalBinding/async_wrap'; import { BlobBinding } from './internalBinding/blob'; import { ConfigBinding } from './internalBinding/config'; @@ -7,11 +8,13 @@ import { HttpParserBinding } from './internalBinding/http_parser'; import { InspectorBinding } from './internalBinding/inspector'; import { FsBinding } from './internalBinding/fs'; import { FsDirBinding } from './internalBinding/fs_dir'; +import { ICUBinding } from './internalBinding/icu'; import { LocksBinding } from './internalBinding/locks'; import { MessagingBinding } from './internalBinding/messaging'; import { OptionsBinding } from './internalBinding/options'; import { OSBinding } from './internalBinding/os'; import { ProcessBinding } from './internalBinding/process'; +import { SeaBinding } from './internalBinding/sea'; import { SerdesBinding } from './internalBinding/serdes'; import { SymbolsBinding } from './internalBinding/symbols'; import { TimersBinding } from './internalBinding/timers'; @@ -25,6 +28,7 @@ import { ModulesBinding } from './internalBinding/modules'; import { ZlibBinding } from './internalBinding/zlib'; interface InternalBindingMap { + async_context_frame: AsyncContextFrameBinding; async_wrap: AsyncWrapBinding; blob: BlobBinding; config: ConfigBinding; @@ -33,6 +37,7 @@ interface InternalBindingMap { fs: FsBinding; fs_dir: FsDirBinding; http_parser: HttpParserBinding; + icu: ICUBinding; inspector: InspectorBinding; locks: LocksBinding; messaging: MessagingBinding; @@ -40,6 +45,7 @@ interface InternalBindingMap { options: OptionsBinding; os: OSBinding; process: ProcessBinding; + sea: SeaBinding; serdes: SerdesBinding; symbols: SymbolsBinding; timers: TimersBinding; @@ -65,6 +71,7 @@ declare global { | Int8Array | Int16Array | Int32Array + | Float16Array | Float32Array | Float64Array | BigUint64Array diff --git a/typings/internalBinding/async_context_frame.d.ts b/typings/internalBinding/async_context_frame.d.ts new file mode 100644 index 00000000000..e7387b57653 --- /dev/null +++ b/typings/internalBinding/async_context_frame.d.ts @@ -0,0 +1,4 @@ +export interface AsyncContextFrameBinding { + getContinuationPreservedEmbedderData(): unknown, + setContinuationPreservedEmbedderData(frame: unknown): void, +} diff --git a/typings/internalBinding/constants.d.ts b/typings/internalBinding/constants.d.ts index 75d2dcc65e8..3c29df44c13 100644 --- a/typings/internalBinding/constants.d.ts +++ b/typings/internalBinding/constants.d.ts @@ -287,6 +287,9 @@ export interface ConstantsBinding { BROTLI_ENCODE: 9; ZSTD_COMPRESS: 10; ZSTD_DECOMPRESS: 11; + ZSTD_e_continue: 0; + ZSTD_e_flush: 1; + ZSTD_e_end: 2; Z_MIN_WINDOWBITS: 8; Z_MAX_WINDOWBITS: 15; Z_DEFAULT_WINDOWBITS: 15; diff --git a/typings/internalBinding/http_parser.d.ts b/typings/internalBinding/http_parser.d.ts index 5ab5651b637..124bdd5af2f 100644 --- a/typings/internalBinding/http_parser.d.ts +++ b/typings/internalBinding/http_parser.d.ts @@ -2,6 +2,15 @@ declare namespace InternalHttpParserBinding { type Buffer = Uint8Array; type Stream = object; + class ConnectionsList { + constructor(); + + all(): HTTPParser[]; + idle(): HTTPParser[]; + active(): HTTPParser[]; + expired(): HTTPParser[]; + } + class HTTPParser { static REQUEST: 1; static RESPONSE: 2; @@ -40,6 +49,8 @@ declare namespace InternalHttpParserBinding { } export interface HttpParserBinding { - methods: string[]; + ConnectionsList: typeof InternalHttpParserBinding.ConnectionsList; HTTPParser: typeof InternalHttpParserBinding.HTTPParser; + allMethods: string[]; + methods: string[]; } diff --git a/typings/internalBinding/icu.d.ts b/typings/internalBinding/icu.d.ts new file mode 100644 index 00000000000..7a688a5f082 --- /dev/null +++ b/typings/internalBinding/icu.d.ts @@ -0,0 +1,18 @@ +export interface ICUBinding { + Converter: object; + decode( + converter: object, + input: ArrayBufferView | ArrayBuffer | SharedArrayBuffer, + flags: number, + fromEncoding: string, + ): string; + getConverter(label: string, flags: number): object | undefined; + getStringWidth(value: string, ambiguousAsFullWidth?: boolean, expandEmojiSequence?: boolean): number; + hasConverter(label: string): boolean; + icuErrName(status: number): string; + transcode( + input: ArrayBufferView | ArrayBuffer | SharedArrayBuffer, + fromEncoding: string, + toEncoding: string, + ): Buffer | number; +} diff --git a/typings/internalBinding/sea.d.ts b/typings/internalBinding/sea.d.ts new file mode 100644 index 00000000000..15f4430d87d --- /dev/null +++ b/typings/internalBinding/sea.d.ts @@ -0,0 +1,5 @@ +export interface SeaBinding { + getAsset(key: string): ArrayBuffer | undefined; + isExperimentalSeaWarningNeeded(): boolean; + isSea(): boolean; +} diff --git a/typings/internalBinding/symbols.d.ts b/typings/internalBinding/symbols.d.ts index 96310970d5c..8f754b283c0 100644 --- a/typings/internalBinding/symbols.d.ts +++ b/typings/internalBinding/symbols.d.ts @@ -1,5 +1,6 @@ export const async_id_symbol: unique symbol; export const handle_onclose_symbol: unique symbol; +export const imported_cjs_symbol: unique symbol; export const no_message_symbol: unique symbol; export const messaging_deserialize_symbol: unique symbol; export const messaging_transfer_symbol: unique symbol; @@ -13,6 +14,7 @@ export const trigger_async_id_symbol: unique symbol; export interface SymbolsBinding { async_id_symbol: typeof async_id_symbol; handle_onclose_symbol: typeof handle_onclose_symbol; + imported_cjs_symbol: typeof imported_cjs_symbol; no_message_symbol: typeof no_message_symbol; messaging_deserialize_symbol: typeof messaging_deserialize_symbol; messaging_transfer_symbol: typeof messaging_transfer_symbol; diff --git a/typings/internalBinding/util.d.ts b/typings/internalBinding/util.d.ts index 2cd52dc7b8f..2a68699283d 100644 --- a/typings/internalBinding/util.d.ts +++ b/typings/internalBinding/util.d.ts @@ -46,4 +46,22 @@ export interface UtilBinding { parseEnv(content: string): Record; styleText(format: Array | string, text: string): string; isInsideNodeModules(frameLimit: number, defaultValue: unknown): boolean; + + constants: { + kPending: 0; + kFulfilled: 1; + kRejected: 2; + kExiting: 0; + kExitCode: 1; + kHasExitCode: 2; + ALL_PROPERTIES: 0; + ONLY_WRITABLE: 1; + ONLY_ENUMERABLE: 2; + ONLY_CONFIGURABLE: 4; + SKIP_STRINGS: 8; + SKIP_SYMBOLS: 16; + kDisallowCloneAndTransfer: 0; + kTransferable: 1; + kCloneable: 2; + }; } diff --git a/typings/primordials.d.ts b/typings/primordials.d.ts index cba2cd0aead..ed77d4112e2 100644 --- a/typings/primordials.d.ts +++ b/typings/primordials.d.ts @@ -280,6 +280,7 @@ declare namespace primordials { export const FunctionPrototypeApply: UncurryThis export const FunctionPrototypeBind: UncurryThis export const FunctionPrototypeCall: UncurryThis + export const FunctionPrototypeSymbolHasInstance: UncurryMethod export const FunctionPrototypeToString: UncurryThis export import Int16Array = globalThis.Int16Array; export const Int16ArrayPrototype: typeof Int16Array.prototype @@ -371,6 +372,8 @@ declare namespace primordials { export const RegExpPrototypeGetSource: UncurryGetter; export const RegExpPrototypeGetSticky: UncurryGetter; export const RegExpPrototypeGetUnicode: UncurryGetter; + export const RegExpPrototypeSymbolReplace: UncurryMethod + export const RegExpPrototypeSymbolSplit: UncurryMethod export import Set = globalThis.Set; export const SetLength: typeof Set.length export const SetName: typeof Set.name