source dump of claude code
27
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 39 lines 1.1 kB view raw
1import { EventEmitter as NodeEventEmitter } from 'events' 2import { Event } from './event.js' 3 4// Similar to node's builtin EventEmitter, but is also aware of our `Event` 5// class, and so `emit` respects `stopImmediatePropagation()`. 6export class EventEmitter extends NodeEventEmitter { 7 constructor() { 8 super() 9 // Disable the default maxListeners warning. In React, many components 10 // can legitimately listen to the same event (e.g., useInput hooks). 11 // The default limit of 10 causes spurious warnings. 12 this.setMaxListeners(0) 13 } 14 15 override emit(type: string | symbol, ...args: unknown[]): boolean { 16 // Delegate to node for `error`, since it's not treated like a normal event 17 if (type === 'error') { 18 return super.emit(type, ...args) 19 } 20 21 const listeners = this.rawListeners(type) 22 23 if (listeners.length === 0) { 24 return false 25 } 26 27 const ccEvent = args[0] instanceof Event ? args[0] : null 28 29 for (const listener of listeners) { 30 listener.apply(this, args) 31 32 if (ccEvent?.didStopImmediatePropagation()) { 33 break 34 } 35 } 36 37 return true 38 } 39}