Skip to content

Commit 6ed93b4

Browse files
authoredJun 7, 2024··
lib: expose global CloseEvent
This PR adds `CloseEvent` as a global, which can be disabled via the --no-experimental-websocket flag. ```js const ws = new WebSocket('...') ws.addEventListener('close', (event) => { assert(event instanceof CloseEvent) }) ``` Fixes: #50275 PR-URL: #53355 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Paolo Insogna <paolo@cowtech.it> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
1 parent 0289e85 commit 6ed93b4

File tree

8 files changed

+24
-1
lines changed

8 files changed

+24
-1
lines changed
 

Diff for: ‎doc/api/globals.md

+14
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,19 @@ added: v0.0.1
322322

323323
[`clearTimeout`][] is described in the [timers][] section.
324324

325+
## `CloseEvent`
326+
327+
<!-- YAML
328+
added: REPLACEME
329+
-->
330+
331+
<!-- type=global -->
332+
333+
The `CloseEvent` class. See [`CloseEvent`][] for more details.
334+
335+
A browser-compatible implementation of [`CloseEvent`][]. Disable this API
336+
with the [`--no-experimental-websocket`][] CLI flag.
337+
325338
## Class: `CompressionStream`
326339

327340
<!-- YAML
@@ -1159,6 +1172,7 @@ A browser-compatible implementation of [`WritableStreamDefaultWriter`][].
11591172
[`--no-experimental-websocket`]: cli.md#--no-experimental-websocket
11601173
[`AbortController`]: https://developer.mozilla.org/en-US/docs/Web/API/AbortController
11611174
[`ByteLengthQueuingStrategy`]: webstreams.md#class-bytelengthqueuingstrategy
1175+
[`CloseEvent`]: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent/CloseEvent
11621176
[`CompressionStream`]: webstreams.md#class-compressionstream
11631177
[`CountQueuingStrategy`]: webstreams.md#class-countqueuingstrategy
11641178
[`CustomEvent` Web API]: https://dom.spec.whatwg.org/#customevent

Diff for: ‎lib/eslint.config_partial.mjs

+4
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ export default [
7373
name: 'ByteLengthQueuingStrategy',
7474
message: "Use `const { ByteLengthQueuingStrategy } = require('internal/webstreams/queuingstrategies')` instead of the global.",
7575
},
76+
{
77+
name: 'CloseEvent',
78+
message: "Use `const { CloseEvent } = require('internal/deps/undici/undici');` instead of the global.",
79+
},
7680
{
7781
name: 'CompressionStream',
7882
message: "Use `const { CompressionStream } = require('internal/webstreams/compression')` instead of the global.",

Diff for: ‎lib/internal/bootstrap/web/exposed-window-or-worker.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ ObjectDefineProperty(globalThis, 'fetch', {
8484
// https://fetch.spec.whatwg.org/#request-class
8585
// https://fetch.spec.whatwg.org/#response-class
8686
exposeLazyInterfaces(globalThis, 'internal/deps/undici/undici', [
87-
'FormData', 'Headers', 'Request', 'Response', 'MessageEvent',
87+
'FormData', 'Headers', 'Request', 'Response', 'MessageEvent', 'CloseEvent',
8888
]);
8989

9090
// https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events.org/

Diff for: ‎lib/internal/process/pre_execution.js

+1
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ function setupWarningHandler() {
304304
function setupWebsocket() {
305305
if (getOptionValue('--no-experimental-websocket')) {
306306
delete globalThis.WebSocket;
307+
delete globalThis.CloseEvent;
307308
}
308309
}
309310

Diff for: ‎test/common/globals.js

+1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ const webIdlExposedWindow = new Set([
127127
'Response',
128128
'WebSocket',
129129
'EventSource',
130+
'CloseEvent',
130131
]);
131132

132133
const nodeGlobals = new Set([

Diff for: ‎test/eslint.config_partial.mjs

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export default [
1313
languageOptions: {
1414
globals: {
1515
...globals.node,
16+
CloseEvent: true,
1617
},
1718
},
1819
rules: {

Diff for: ‎test/parallel/test-websocket-disabled.js

+1
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ require('../common');
55
const assert = require('assert');
66

77
assert.strictEqual(typeof WebSocket, 'undefined');
8+
assert.strictEqual(typeof CloseEvent, 'undefined');

Diff for: ‎test/parallel/test-websocket.js

+1
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ require('../common');
44
const assert = require('assert');
55

66
assert.strictEqual(typeof WebSocket, 'function');
7+
assert.strictEqual(typeof CloseEvent, 'function');

0 commit comments

Comments
 (0)
Please sign in to comment.