GeezerVison is showing github.com — events: define abort on prototype · nodejs/node@ff59fcd
File treeExpand file treeCollapse file tree Open diff view settings Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: lib/internal/abort_controller.js +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -48,6 +48,8 @@ ObjectDefineProperties(AbortSignal.prototype, { | 48 | 48 | aborted: { enumerable: true } | 49 | 49 | }); | 50 | 50 |
| | 51 | +defineEventHandler(AbortSignal.prototype, 'abort'); | | 52 | + | 51 | 53 | function abortSignal(signal) { | 52 | 54 | if (signal[kAborted]) return; | 53 | 55 | signal[kAborted] = true; | @@ -65,7 +67,6 @@ class AbortController { | 65 | 67 | constructor() { | 66 | 68 | this[kSignal] = new AbortSignal(); | 67 | 69 | emitExperimentalWarning('AbortController'); | 68 | | - defineEventHandler(this[kSignal], 'abort'); | 69 | 70 | } | 70 | 71 |
| 71 | 72 | get signal() { return this[kSignal]; } | |
Collapse file Copy file name to clipboardExpand all lines: lib/internal/event_target.js +8-11Lines changed: 8 additions & 11 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -4,17 +4,16 @@ const { | 4 | 4 | ArrayFrom, | 5 | 5 | Boolean, | 6 | 6 | Error, | 7 | | - Map, | 8 | 7 | NumberIsInteger, | 9 | 8 | ObjectAssign, | 10 | 9 | ObjectDefineProperties, | 11 | 10 | ObjectDefineProperty, | 12 | 11 | ObjectGetOwnPropertyDescriptor, | | 12 | + SafeMap, | 13 | 13 | String, | 14 | 14 | Symbol, | 15 | 15 | SymbolFor, | 16 | 16 | SymbolToStringTag, | 17 | | - SafeWeakMap, | 18 | 17 | SafeWeakSet, | 19 | 18 | } = primordials; | 20 | 19 |
| @@ -36,6 +35,7 @@ const kIsEventTarget = SymbolFor('nodejs.event_target'); | 36 | 35 | const kEvents = Symbol('kEvents'); | 37 | 36 | const kStop = Symbol('kStop'); | 38 | 37 | const kTarget = Symbol('kTarget'); | | 38 | +const kHandlers = Symbol('khandlers'); | 39 | 39 |
| 40 | 40 | const kHybridDispatch = SymbolFor('nodejs.internal.kHybridDispatch'); | 41 | 41 | const kCreateEvent = Symbol('kCreateEvent'); | @@ -219,7 +219,7 @@ class Listener { | 219 | 219 | } | 220 | 220 |
| 221 | 221 | function initEventTarget(self) { | 222 | | - self[kEvents] = new Map(); | | 222 | + self[kEvents] = new SafeMap(); | 223 | 223 | } | 224 | 224 |
| 225 | 225 | class EventTarget { | @@ -578,27 +578,24 @@ function emitUnhandledRejectionOrErr(that, err, event) { | 578 | 578 | process.emit('error', err, event); | 579 | 579 | } | 580 | 580 |
| 581 | | -// A map of emitter -> map of name -> handler | 582 | | -const eventHandlerValueMap = new SafeWeakMap(); | 583 | | - | 584 | 581 | function defineEventHandler(emitter, name) { | 585 | 582 | // 8.1.5.1 Event handlers - basically `on[eventName]` attributes | 586 | 583 | ObjectDefineProperty(emitter, `on${name}`, { | 587 | 584 | get() { | 588 | | - return eventHandlerValueMap.get(this)?.get(name); | | 585 | + return this[kHandlers]?.get(name); | 589 | 586 | }, | 590 | 587 | set(value) { | 591 | | - const oldValue = eventHandlerValueMap.get(this)?.get(name); | | 588 | + const oldValue = this[kHandlers]?.get(name); | 592 | 589 | if (oldValue) { | 593 | 590 | this.removeEventListener(name, oldValue); | 594 | 591 | } | 595 | 592 | if (typeof value === 'function') { | 596 | 593 | this.addEventListener(name, value); | 597 | 594 | } | 598 | | - if (!eventHandlerValueMap.has(this)) { | 599 | | - eventHandlerValueMap.set(this, new Map()); | | 595 | + if (!this[kHandlers]) { | | 596 | + this[kHandlers] = new SafeMap(); | 600 | 597 | } | 601 | | - eventHandlerValueMap.get(this).set(name, value); | | 598 | + this[kHandlers].set(name, value); | 602 | 599 | }, | 603 | 600 | configurable: true, | 604 | 601 | enumerable: true | |
Collapse file Copy file name to clipboardExpand all lines: lib/internal/worker/io.js -2Lines changed: 0 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -146,8 +146,6 @@ ObjectDefineProperty( | 146 | 146 | // This is called from inside the `MessagePort` constructor. | 147 | 147 | function oninit() { | 148 | 148 | initNodeEventTarget(this); | 149 | | - defineEventHandler(this, 'message'); | 150 | | - defineEventHandler(this, 'messageerror'); | 151 | 149 | setupPortReferencing(this, this, 'message'); | 152 | 150 | } | 153 | 151 |
| |
|