Skip to content

Commit 5f02e1b

Browse files
committed
lib: move Symbol[Async]Dispose polyfills to internal/util
PR-URL: #54853 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent b96ee30 commit 5f02e1b

27 files changed

+48
-41
lines changed

lib/_http_server.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ const {
2929
ObjectSetPrototypeOf,
3030
ReflectApply,
3131
Symbol,
32-
SymbolAsyncDispose,
3332
SymbolFor,
3433
} = primordials;
3534

@@ -82,6 +81,7 @@ const {
8281
const {
8382
kEmptyObject,
8483
promisify,
84+
SymbolAsyncDispose,
8585
} = require('internal/util');
8686
const {
8787
validateInteger,

lib/child_process.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ const {
4242
StringPrototypeIncludes,
4343
StringPrototypeSlice,
4444
StringPrototypeToUpperCase,
45-
SymbolDispose,
4645
} = primordials;
4746

4847
const {
@@ -51,6 +50,7 @@ const {
5150
getSystemErrorName,
5251
kEmptyObject,
5352
promisify,
53+
SymbolDispose,
5454
} = require('internal/util');
5555
const { isArrayBufferView } = require('internal/util/types');
5656
let debug = require('internal/util/debuglog').debuglog(

lib/dgram.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ const {
3030
ObjectDefineProperty,
3131
ObjectSetPrototypeOf,
3232
ReflectApply,
33-
SymbolAsyncDispose,
34-
SymbolDispose,
3533
} = primordials;
3634

3735
const {
@@ -63,7 +61,7 @@ const {
6361
validatePort,
6462
} = require('internal/validators');
6563
const { Buffer } = require('buffer');
66-
const { deprecate, guessHandleType, promisify } = require('internal/util');
64+
const { deprecate, guessHandleType, promisify, SymbolAsyncDispose, SymbolDispose } = require('internal/util');
6765
const { isArrayBufferView } = require('internal/util/types');
6866
const EventEmitter = require('events');
6967
const { addAbortListener } = require('internal/events/abort_listener');

lib/events.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,11 @@ const {
4747
StringPrototypeSplit,
4848
Symbol,
4949
SymbolAsyncIterator,
50-
SymbolDispose,
5150
SymbolFor,
5251
} = primordials;
5352
const kRejection = SymbolFor('nodejs.rejection');
5453

55-
const { kEmptyObject } = require('internal/util');
54+
const { SymbolDispose, kEmptyObject } = require('internal/util');
5655

5756
const {
5857
inspect,

lib/https.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ const {
3333
ObjectSetPrototypeOf,
3434
ReflectApply,
3535
ReflectConstruct,
36-
SymbolAsyncDispose,
3736
} = primordials;
3837

3938
const {
4039
assertCrypto,
4140
kEmptyObject,
4241
promisify,
42+
SymbolAsyncDispose,
4343
} = require('internal/util');
4444
assertCrypto();
4545

lib/inspector.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ const {
44
JSONParse,
55
JSONStringify,
66
SafeMap,
7-
SymbolDispose,
87
} = primordials;
98

9+
const {
10+
SymbolDispose,
11+
} = require('internal/util');
12+
1013
const {
1114
ERR_INSPECTOR_ALREADY_ACTIVATED,
1215
ERR_INSPECTOR_ALREADY_CONNECTED,

lib/internal/child_process.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ const {
1212
ReflectApply,
1313
StringPrototypeSlice,
1414
Symbol,
15-
SymbolDispose,
1615
Uint8Array,
1716
} = primordials;
1817

@@ -56,7 +55,7 @@ const { TTY } = internalBinding('tty_wrap');
5655
const { UDP } = internalBinding('udp_wrap');
5756
const SocketList = require('internal/socket_list');
5857
const { owner_symbol } = require('internal/async_hooks').symbols;
59-
const { convertToValidSignal, deprecate } = require('internal/util');
58+
const { convertToValidSignal, deprecate, SymbolDispose } = require('internal/util');
6059
const { isArrayBufferView } = require('internal/util/types');
6160
const spawn_sync = internalBinding('spawn_sync');
6261
const { kStateSymbol } = require('internal/dgram');

lib/internal/events/abort_listener.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
const {
44
SymbolDispose,
5-
} = primordials;
5+
} = require('internal/util');
66
const {
77
validateAbortSignal,
88
validateFunction,

lib/internal/fs/promises.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ const {
1515
SafeArrayIterator,
1616
SafePromisePrototypeFinally,
1717
Symbol,
18-
SymbolAsyncDispose,
1918
Uint8Array,
2019
uncurryThis,
2120
} = primordials;
@@ -99,6 +98,7 @@ const {
9998
promisify,
10099
isWindows,
101100
isMacOS,
101+
SymbolAsyncDispose,
102102
} = require('internal/util');
103103
const EventEmitter = require('events');
104104
const { StringDecoder } = require('string_decoder');

lib/internal/http2/core.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ const {
1919
SafeMap,
2020
SafeSet,
2121
Symbol,
22-
SymbolAsyncDispose,
23-
SymbolDispose,
2422
Uint32Array,
2523
Uint8Array,
2624
} = primordials;
@@ -30,6 +28,8 @@ const {
3028
customInspectSymbol: kInspect,
3129
kEmptyObject,
3230
promisify,
31+
SymbolAsyncDispose,
32+
SymbolDispose,
3333
} = require('internal/util');
3434

3535
assertCrypto();

lib/internal/per_context/primordials.js

-5
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,6 @@ function copyPrototype(src, dest, prefix) {
229229
copyPrototype(original.prototype, primordials, `${name}Prototype`);
230230
});
231231

232-
// Define Symbol.dispose and Symbol.asyncDispose
233-
// Until these are defined by the environment.
234-
// TODO(MoLow): Remove this polyfill once Symbol.dispose and Symbol.asyncDispose are available in V8.
235-
primordials.SymbolDispose ??= primordials.SymbolFor('nodejs.dispose');
236-
primordials.SymbolAsyncDispose ??= primordials.SymbolFor('nodejs.asyncDispose');
237232

238233
// Create copies of intrinsic objects that require a valid `this` to call
239234
// static methods.

lib/internal/process/pre_execution.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ const {
1616
String,
1717
StringPrototypeStartsWith,
1818
Symbol,
19-
SymbolAsyncDispose,
20-
SymbolDispose,
2119
globalThis,
2220
} = primordials;
2321

@@ -33,6 +31,8 @@ const {
3331
defineReplaceableLazyAttribute,
3432
setupCoverageHooks,
3533
emitExperimentalWarning,
34+
SymbolAsyncDispose,
35+
SymbolDispose,
3636
} = require('internal/util');
3737

3838
const {

lib/internal/readline/interface.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ const {
3030
StringPrototypeTrim,
3131
Symbol,
3232
SymbolAsyncIterator,
33-
SymbolDispose,
3433
} = primordials;
3534

3635
const { codes: {
@@ -45,7 +44,7 @@ const {
4544
validateString,
4645
validateUint32,
4746
} = require('internal/validators');
48-
const { kEmptyObject } = require('internal/util');
47+
const { SymbolDispose, kEmptyObject } = require('internal/util');
4948
const {
5049
inspect,
5150
getStringWidth,

lib/internal/streams/add-abort-signal.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
const {
44
SymbolDispose,
5-
} = primordials;
5+
} = require('internal/util');
66

77
const {
88
AbortError,

lib/internal/streams/end-of-stream.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
const {
77
Promise,
88
PromisePrototypeThen,
9-
SymbolDispose,
109
} = primordials;
1110

1211
const {
@@ -19,6 +18,7 @@ const {
1918
const {
2019
kEmptyObject,
2120
once,
21+
SymbolDispose,
2222
} = require('internal/util');
2323
const {
2424
validateAbortSignal,

lib/internal/streams/pipeline.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ const {
77
ArrayIsArray,
88
Promise,
99
SymbolAsyncIterator,
10-
SymbolDispose,
1110
} = primordials;
1211

1312
const eos = require('internal/streams/end-of-stream');
14-
const { once } = require('internal/util');
13+
const { SymbolDispose, once } = require('internal/util');
1514
const destroyImpl = require('internal/streams/destroy');
1615
const Duplex = require('internal/streams/duplex');
1716
const {

lib/internal/streams/readable.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ const {
3232
Promise,
3333
SafeSet,
3434
Symbol,
35-
SymbolAsyncDispose,
3635
SymbolAsyncIterator,
3736
SymbolSpecies,
3837
TypedArrayPrototypeSet,
@@ -44,6 +43,9 @@ Readable.ReadableState = ReadableState;
4443
const EE = require('events');
4544
const { Stream, prependListener } = require('internal/streams/legacy');
4645
const { Buffer } = require('buffer');
46+
const {
47+
SymbolAsyncDispose,
48+
} = require('internal/util');
4749

4850
const {
4951
addAbortSignal,

lib/internal/streams/writable.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ const {
3535
Promise,
3636
StringPrototypeToLowerCase,
3737
Symbol,
38-
SymbolAsyncDispose,
3938
SymbolHasInstance,
4039
} = primordials;
4140

@@ -47,6 +46,9 @@ const Stream = require('internal/streams/legacy').Stream;
4746
const { Buffer } = require('buffer');
4847
const destroyImpl = require('internal/streams/destroy');
4948
const eos = require('internal/streams/end-of-stream');
49+
const {
50+
SymbolAsyncDispose,
51+
} = require('internal/util');
5052

5153
const {
5254
addAbortSignal,

lib/internal/test_runner/mock/mock_timers.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ const {
1717
Promise,
1818
Symbol,
1919
SymbolAsyncIterator,
20-
SymbolDispose,
2120
globalThis,
2221
} = primordials;
2322

@@ -29,6 +28,7 @@ const {
2928

3029
const {
3130
emitExperimentalWarning,
31+
SymbolDispose,
3232
} = require('internal/util');
3333
const {
3434
AbortError,

lib/internal/test_runner/test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ const {
2626
StringPrototypeStartsWith,
2727
StringPrototypeTrim,
2828
Symbol,
29-
SymbolDispose,
3029
} = primordials;
3130
const { getCallerLocation } = internalBinding('util');
3231
const { exitCodes: { kGenericUserError } } = internalBinding('errors');
@@ -52,6 +51,7 @@ const {
5251
createDeferredPromise,
5352
kEmptyObject,
5453
once: runOnce,
54+
SymbolDispose,
5555
} = require('internal/util');
5656
const { isPromise } = require('internal/util/types');
5757
const {

lib/internal/util.js

+8
Original file line numberDiff line numberDiff line change
@@ -936,6 +936,14 @@ module.exports = {
936936
setupCoverageHooks,
937937
removeColors,
938938

939+
// Define Symbol.dispose and Symbol.asyncDispose
940+
// Until these are defined by the environment.
941+
// TODO(MoLow): Remove this polyfill once Symbol.dispose and Symbol.asyncDispose are available in primordials.
942+
// eslint-disable-next-line node-core/prefer-primordials
943+
SymbolDispose: Symbol.dispose || SymbolFor('nodejs.dispose'),
944+
// eslint-disable-next-line node-core/prefer-primordials
945+
SymbolAsyncDispose: Symbol.asyncDispose || SymbolFor('nodejs.asyncDispose'),
946+
939947
// Symbol used to customize promisify conversion
940948
customPromisifyArgs: kCustomPromisifyArgsSymbol,
941949

lib/internal/webstreams/readablestream.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ const {
2020
SafePromiseAll,
2121
Symbol,
2222
SymbolAsyncIterator,
23-
SymbolDispose,
2423
SymbolToStringTag,
2524
TypedArrayPrototypeGetLength,
2625
Uint8Array,
@@ -54,6 +53,7 @@ const {
5453
kEmptyObject,
5554
kEnumerableProperty,
5655
SideEffectFreeRegExpPrototypeSymbolReplace,
56+
SymbolDispose,
5757
} = require('internal/util');
5858

5959
const {

lib/net.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ const {
3636
ObjectDefineProperty,
3737
ObjectSetPrototypeOf,
3838
Symbol,
39-
SymbolAsyncDispose,
40-
SymbolDispose,
4139
} = primordials;
4240

4341
const EventEmitter = require('events');
@@ -116,7 +114,14 @@ const {
116114
} = require('internal/errors');
117115
const { isUint8Array } = require('internal/util/types');
118116
const { queueMicrotask } = require('internal/process/task_queues');
119-
const { kEmptyObject, guessHandleType, promisify, isWindows } = require('internal/util');
117+
const {
118+
guessHandleType,
119+
isWindows,
120+
kEmptyObject,
121+
promisify,
122+
SymbolAsyncDispose,
123+
SymbolDispose,
124+
} = require('internal/util');
120125
const {
121126
validateAbortSignal,
122127
validateBoolean,

lib/readline.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ const {
3030
Promise,
3131
PromiseReject,
3232
StringPrototypeSlice,
33-
SymbolDispose,
3433
} = primordials;
3534

3635
const {
@@ -51,6 +50,7 @@ const {
5150
const {
5251
kEmptyObject,
5352
promisify,
53+
SymbolDispose,
5454
} = require('internal/util');
5555
const { validateAbortSignal } = require('internal/validators');
5656

lib/readline/promises.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
const {
44
Promise,
5-
SymbolDispose,
65
} = primordials;
76

87
const {
@@ -22,6 +21,7 @@ const { validateAbortSignal } = require('internal/validators');
2221

2322
const {
2423
kEmptyObject,
24+
SymbolDispose,
2525
} = require('internal/util');
2626
let addAbortListener;
2727

0 commit comments

Comments
 (0)