Skip to content

Commit e84fc15

Browse files
authored
perf(ext/node): convert errors.ts, util.mjs, and foundation layer to lazy-loaded scripts (#33830)
Converts 10 more ext/node polyfill files from ESM to IIFE-wrapped lazy-loaded scripts, completing the entire foundation layer: **Leaf files (only ext:core deps):** - `_util/os.ts` - `internal/primordials.mjs` - `internal_binding/constants.ts` - `internal_binding/_libuv_winerror.ts` - `internal_binding/uv.ts` **Core utilities (deps now all satisfied):** - `_utils.ts` - `internal/util/inspect.mjs` - `internal/errors.ts` (113 consumers) - `internal/errors/error_source.ts` - `internal/util.mjs` (46 consumers) Updates ~140 consumer files. Breaks circular dep between `errors.ts` and `_utils.ts` via deferred loading. After this + the previous PR, **18 files** are converted to `lazy_loaded_js`. With `errors.ts` and `util.mjs` done, the vast majority of remaining ext/node files can now follow since their core dependencies are all lazy-loadable.
1 parent 49bc36d commit e84fc15

144 files changed

Lines changed: 1410 additions & 809 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ext/node/lib.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -429,10 +429,7 @@ deno_core::extension!(deno_node,
429429
"_process/streams.mjs",
430430
"_readline.mjs",
431431
"_util/_util_callbackify.js",
432-
"_util/os.ts",
433-
"_utils.ts",
434432
"_zlib_binding.mjs",
435-
"internal_binding/_libuv_winerror.ts",
436433
"internal_binding/_listen.ts",
437434
"internal_binding/_node.ts",
438435
"internal_binding/_timingSafeEqual.ts",
@@ -441,7 +438,6 @@ deno_core::extension!(deno_node,
441438
"internal_binding/async_wrap.ts",
442439
"internal_binding/buffer.ts",
443440
"internal_binding/cares_wrap.ts",
444-
"internal_binding/constants.ts",
445441
"internal_binding/crypto.ts",
446442
"internal_binding/handle_wrap.ts",
447443
"internal_binding/http2.ts",
@@ -458,7 +454,6 @@ deno_core::extension!(deno_node,
458454
"internal_binding/tty_wrap.ts",
459455
"internal_binding/udp_wrap.ts",
460456
"internal_binding/util.ts",
461-
"internal_binding/uv.ts",
462457
"internal/assert/assertion_error.js",
463458
"internal/assert/calltracker.js",
464459
"internal/assert/myers_diff.js",
@@ -492,8 +487,6 @@ deno_core::extension!(deno_node,
492487
"internal/dns/promises.ts",
493488
"internal/dns/utils.ts",
494489
"internal/dtrace.ts",
495-
"internal/errors.ts",
496-
"internal/errors/error_source.ts",
497490
"internal/event_target.mjs",
498491
"internal/events/abort_listener.mjs",
499492
"internal/fs/stat_utils.ts",
@@ -511,7 +504,6 @@ deno_core::extension!(deno_node,
511504
"internal/mime.ts",
512505
"internal/net.ts",
513506
"internal/options.ts",
514-
"internal/primordials.mjs",
515507
"internal/priority_queue.ts",
516508
"internal/process/per_thread.mjs",
517509
"internal/process/report.ts",
@@ -543,11 +535,9 @@ deno_core::extension!(deno_node,
543535
"internal/timers.mjs",
544536
"internal/tty.js",
545537
"internal/url.ts",
546-
"internal/util.mjs",
547538
"internal/util/colors.ts",
548539
"internal/util/comparisons.ts",
549540
"internal/util/debuglog.ts",
550-
"internal/util/inspect.mjs",
551541
"internal/util/parse_args/parse_args.js",
552542
"internal/util/parse_args/utils.js",
553543
"internal/webstreams/adapters.js",
@@ -644,6 +634,16 @@ deno_core::extension!(deno_node,
644634
"internal/crypto/_keys.ts",
645635
"internal/crypto/constants.ts",
646636
"internal_binding/types.ts",
637+
"_util/os.ts",
638+
"_utils.ts",
639+
"internal/primordials.mjs",
640+
"internal_binding/constants.ts",
641+
"internal_binding/_libuv_winerror.ts",
642+
"internal_binding/uv.ts",
643+
"internal/util/inspect.mjs",
644+
"internal/errors.ts",
645+
"internal/errors/error_source.ts",
646+
"internal/util.mjs",
647647
],
648648
options = {
649649
maybe_init: Option<NodeExtInitServices<TInNpmPackageChecker, TNpmPackageFolderResolver, TSys>>,

ext/node/polyfills/01_require.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ import internalDgram from "ext:deno_node/internal/dgram.ts";
128128
import internalUndici from "ext:deno_node/internal/deps/undici/undici.js";
129129
import internalDnsPromises from "ext:deno_node/internal/dns/promises.ts";
130130
import internalBuffer from "ext:deno_node/internal/buffer.mjs";
131-
import internalErrors from "ext:deno_node/internal/errors.ts";
131+
const internalErrors = core.loadExtScript("ext:deno_node/internal/errors.ts");
132132
import internalEventTarget from "ext:deno_node/internal/event_target.mjs";
133133
import internalFsUtils from "ext:deno_node/internal/fs/utils.mjs";
134134
import internalHttp from "ext:deno_node/internal/http.ts";
@@ -141,9 +141,11 @@ import internalStreamsLazyTransform from "ext:deno_node/internal/streams/lazy_tr
141141
import internalStreamsState from "ext:deno_node/internal/streams/state.js";
142142
import internalTestBinding from "ext:deno_node/internal/test/binding.ts";
143143
import internalTimers from "ext:deno_node/internal/timers.mjs";
144-
import internalUtil from "ext:deno_node/internal/util.mjs";
144+
const internalUtil = core.loadExtScript("ext:deno_node/internal/util.mjs");
145145
import internalUtilDebuglog from "ext:deno_node/internal/util/debuglog.ts";
146-
import internalUtilInspect from "ext:deno_node/internal/util/inspect.mjs";
146+
const internalUtilInspect = core.loadExtScript(
147+
"ext:deno_node/internal/util/inspect.mjs",
148+
);
147149
const internalValidators = core.loadExtScript(
148150
"ext:deno_node/internal/validators.mjs",
149151
);

ext/node/polyfills/_brotli.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ import {
3131
op_create_brotli_decompress,
3232
} from "ext:core/ops";
3333

34-
import { zlib as constants } from "ext:deno_node/internal_binding/constants.ts";
34+
const { zlib: constants } = core.loadExtScript(
35+
"ext:deno_node/internal_binding/constants.ts",
36+
);
3537
const { TextEncoder } = core.loadExtScript("ext:deno_web/08_text_encoding.js");
3638
import { Transform } from "node:stream";
3739
import { Buffer } from "node:buffer";

ext/node/polyfills/_events.mjs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,16 @@ const kRejection = SymbolFor("nodejs.rejection");
5353
const kWatermarkData = SymbolFor("nodejs.watermarkData");
5454
export const kEvents = Symbol("kEvents");
5555

56-
import { inspect } from "ext:deno_node/internal/util/inspect.mjs";
57-
import { kEmptyObject } from "ext:deno_node/internal/util.mjs";
58-
import {
56+
const { inspect } = core.loadExtScript(
57+
"ext:deno_node/internal/util/inspect.mjs",
58+
);
59+
const { kEmptyObject } = core.loadExtScript("ext:deno_node/internal/util.mjs");
60+
const {
5961
AbortError,
6062
ERR_INVALID_ARG_TYPE,
6163
ERR_INVALID_THIS,
6264
ERR_UNHANDLED_ERROR,
63-
} from "ext:deno_node/internal/errors.ts";
65+
} = core.loadExtScript("ext:deno_node/internal/errors.ts");
6466

6567
import { AsyncResource } from "node:async_hooks";
6668
const {
@@ -72,7 +74,7 @@ const {
7274
validateObject,
7375
validateString,
7476
} = core.loadExtScript("ext:deno_node/internal/validators.mjs");
75-
import { spliceOne } from "ext:deno_node/_utils.ts";
77+
const { spliceOne } = core.loadExtScript("ext:deno_node/_utils.ts");
7678
import { nextTick } from "ext:deno_node/_process/process.ts";
7779
const {
7880
eventTargetData,

ext/node/polyfills/_fs/_fs_common.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const { validateFunction } = core.loadExtScript(
66
"ext:deno_node/internal/validators.mjs",
77
);
88
import type { ErrnoException } from "ext:deno_node/_global.d.ts";
9-
import {
9+
import type {
1010
BinaryEncodings,
1111
Encodings,
1212
TextEncodings,

ext/node/polyfills/_fs/_fs_constants.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
// Copyright 2018-2026 the Deno authors. MIT license.
22

3-
import { fs } from "ext:deno_node/internal_binding/constants.ts";
3+
import { core } from "ext:core/mod.js";
4+
const { fs } = core.loadExtScript(
5+
"ext:deno_node/internal_binding/constants.ts",
6+
);
47

58
export const {
69
F_OK,

ext/node/polyfills/_fs/_fs_copy.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ import {
1010
getValidatedPath,
1111
getValidMode,
1212
} from "ext:deno_node/internal/fs/utils.mjs";
13-
import { fs } from "ext:deno_node/internal_binding/constants.ts";
14-
import { codeMap } from "ext:deno_node/internal_binding/uv.ts";
15-
import { promisify } from "ext:deno_node/internal/util.mjs";
13+
import { core } from "ext:core/mod.js";
14+
const { fs } = core.loadExtScript(
15+
"ext:deno_node/internal_binding/constants.ts",
16+
);
17+
const { codeMap } = core.loadExtScript("ext:deno_node/internal_binding/uv.ts");
18+
const { promisify } = core.loadExtScript("ext:deno_node/internal/util.mjs");
1619

1720
export function copyFile(
1821
src: string | Buffer | URL,

ext/node/polyfills/_fs/_fs_dir.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import {
66
direntFromDeno,
77
} from "ext:deno_node/internal/fs/utils.mjs";
88
import assert from "node:assert";
9-
import { ERR_MISSING_ARGS } from "ext:deno_node/internal/errors.ts";
9+
const { ERR_MISSING_ARGS } = core.loadExtScript(
10+
"ext:deno_node/internal/errors.ts",
11+
);
1012
const { TextDecoder } = core.loadExtScript("ext:deno_web/08_text_encoding.js");
1113

1214
const {

ext/node/polyfills/_fs/_fs_exists.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import { op_node_fs_exists, op_node_fs_exists_sync } from "ext:core/ops";
44
import { getValidatedPathToString } from "ext:deno_node/internal/fs/utils.mjs";
5-
import { primordials } from "ext:core/mod.js";
5+
import { core, primordials } from "ext:core/mod.js";
66
import { makeCallback } from "ext:deno_node/_fs/_fs_common.ts";
77
import type { Buffer } from "node:buffer";
8-
import { kCustomPromisifiedSymbol } from "ext:deno_node/internal/util.mjs";
8+
const { kCustomPromisifiedSymbol } = core.loadExtScript(
9+
"ext:deno_node/internal/util.mjs",
10+
);
911
import * as process from "node:process";
1012

1113
const { ObjectDefineProperty, Promise, PromisePrototypeThen } = primordials;

ext/node/polyfills/_fs/_fs_fstat.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ import {
1010
type statOptions,
1111
} from "ext:deno_node/internal/fs/stat_utils.ts";
1212
import { BigIntStats, Stats } from "ext:deno_node/internal/fs/utils.mjs";
13-
import { denoErrorToNodeError } from "ext:deno_node/internal/errors.ts";
13+
import { core } from "ext:core/mod.js";
14+
const { denoErrorToNodeError } = core.loadExtScript(
15+
"ext:deno_node/internal/errors.ts",
16+
);
1417
import { getValidatedFd } from "ext:deno_node/internal/fs/utils.mjs";
1518
import { op_node_fs_fstat, op_node_fs_fstat_sync } from "ext:core/ops";
1619

0 commit comments

Comments
 (0)