Skip to content

Commit bc304ff

Browse files
fix: make EventSource properties enumerable (#2987)
* make eventsource properties enumberable * Use kEnumerableProperty for eventsource immutable fields * Apply suggestions from code review * Apply suggestions from code review --------- Co-authored-by: Aras Abbasi <[email protected]>
1 parent 8fce214 commit bc304ff

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

lib/web/eventsource/eventsource.js

+11
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const { parseMIMEType } = require('../fetch/data-url')
1010
const { MessageEvent } = require('../websocket/events')
1111
const { isNetworkError } = require('../fetch/response')
1212
const { delay } = require('./util')
13+
const { kEnumerableProperty } = require('../../core/util')
1314

1415
let experimentalWarned = false
1516

@@ -459,6 +460,16 @@ const constantsPropertyDescriptors = {
459460
Object.defineProperties(EventSource, constantsPropertyDescriptors)
460461
Object.defineProperties(EventSource.prototype, constantsPropertyDescriptors)
461462

463+
Object.defineProperties(EventSource.prototype, {
464+
close: kEnumerableProperty,
465+
onerror: kEnumerableProperty,
466+
onmessage: kEnumerableProperty,
467+
onopen: kEnumerableProperty,
468+
readyState: kEnumerableProperty,
469+
url: kEnumerableProperty,
470+
withCredentials: kEnumerableProperty
471+
})
472+
462473
webidl.converters.EventSourceInitDict = webidl.dictionaryConverter([
463474
{ key: 'withCredentials', converter: webidl.converters.boolean, defaultValue: false }
464475
])
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
'use strict'
2+
3+
const { test } = require('node:test')
4+
const assert = require('node:assert')
5+
const { EventSource } = require('../..') // assuming the test is in test/eventsource/
6+
7+
test('EventSource.prototype properties are configured correctly', () => {
8+
const props = Object.entries(Object.getOwnPropertyDescriptors(EventSource.prototype))
9+
10+
for (const [key, value] of props) {
11+
if (key !== 'constructor') {
12+
assert(value.enumerable, `${key} is not enumerable`)
13+
}
14+
}
15+
})

0 commit comments

Comments
 (0)