@per_moeller/asterisk-ari 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,100 +1,292 @@
1
1
  /**
2
2
  * Type-safe event emitter for ARI events
3
+ *
4
+ * This module provides typed event emitter classes that ensure type safety
5
+ * when listening to and emitting ARI events.
6
+ *
7
+ * @packageDocumentation
3
8
  */
4
- import type { AriEventMap, AriEventType, EventConvenienceArg } from './types.js';
9
+ import type { AriEventMap, AriEventType } from './types.js';
10
+ import type { ChannelInstance } from '../models/channel.js';
11
+ import type { BridgeInstance } from '../models/bridge.js';
12
+ import type { PlaybackInstance } from '../models/playback.js';
13
+ import type { LiveRecordingInstance } from '../models/recording.js';
14
+ import type { Endpoint } from '../types/api.js';
5
15
  /**
6
- * Typed event emitter with support for wildcard listeners
16
+ * Maps event types to their convenience instance argument type.
17
+ *
18
+ * This provides the instance types (with methods) for event callbacks,
19
+ * enabling ari-client style usage:
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * client.on('StasisStart', (event, channel) => {
24
+ * // channel is ChannelInstance with methods like answer(), play(), etc.
25
+ * channel.answer();
26
+ * });
27
+ * ```
28
+ */
29
+ export type EventInstanceArg<K extends AriEventType> = K extends 'StasisStart' | 'StasisEnd' | 'ChannelCreated' | 'ChannelDestroyed' | 'ChannelStateChange' | 'ChannelDtmfReceived' | 'ChannelHangupRequest' | 'ChannelHold' | 'ChannelUnhold' | 'ChannelTalkingStarted' | 'ChannelTalkingFinished' | 'ChannelConnectedLine' | 'ChannelDialplan' | 'ChannelCallerId' | 'ChannelToneDetected' | 'ChannelEnteredBridge' | 'ChannelLeftBridge' | 'ChannelTransfer' | 'BridgeBlindTransfer' | 'ApplicationMoveFailed' ? ChannelInstance : K extends 'BridgeCreated' | 'BridgeDestroyed' | 'BridgeMerged' | 'BridgeVideoSourceChanged' ? BridgeInstance : K extends 'PlaybackStarted' | 'PlaybackContinuing' | 'PlaybackFinished' ? PlaybackInstance : K extends 'RecordingStarted' | 'RecordingFinished' | 'RecordingFailed' ? LiveRecordingInstance : K extends 'EndpointStateChange' | 'PeerStatusChange' | 'ContactStatusChange' ? Endpoint : K extends 'Dial' ? ChannelInstance : K extends 'ChannelVarset' ? ChannelInstance | undefined : K extends 'ChannelUserevent' ? ChannelInstance | undefined : undefined;
30
+ /**
31
+ * A typed event emitter with support for wildcard listeners.
32
+ *
33
+ * This generic class wraps Node.js EventEmitter to provide type-safe
34
+ * event handling based on an event map type parameter.
35
+ *
36
+ * @typeParam TEventMap - Object type mapping event names to event data types
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * interface MyEvents {
41
+ * userJoined: { userId: string; name: string };
42
+ * userLeft: { userId: string };
43
+ * '*': { userId: string } | { userId: string; name: string };
44
+ * }
45
+ *
46
+ * const emitter = new TypedEventEmitter<MyEvents>();
47
+ *
48
+ * emitter.on('userJoined', (event) => {
49
+ * // event is typed as { userId: string; name: string }
50
+ * console.log(event.name);
51
+ * });
52
+ * ```
7
53
  */
8
54
  export declare class TypedEventEmitter<TEventMap extends object> {
9
55
  private emitter;
10
56
  private wildcardListeners;
11
57
  constructor();
12
58
  /**
13
- * Add an event listener
59
+ * Add an event listener.
60
+ *
61
+ * @param event - Event name to listen for, or '*' for all events
62
+ * @param listener - Callback function to invoke when event occurs
63
+ * @returns This emitter for chaining
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * emitter.on('userJoined', (event) => {
68
+ * console.log(`${event.name} joined`);
69
+ * });
70
+ * ```
14
71
  */
15
72
  on<K extends keyof TEventMap>(event: K, listener: (event: TEventMap[K], ...args: unknown[]) => void | Promise<void>): this;
16
73
  /**
17
- * Add a one-time event listener
74
+ * Add a one-time event listener.
75
+ *
76
+ * The listener is automatically removed after being invoked once.
77
+ *
78
+ * @param event - Event name to listen for, or '*' for all events
79
+ * @param listener - Callback function to invoke when event occurs
80
+ * @returns This emitter for chaining
18
81
  */
19
82
  once<K extends keyof TEventMap>(event: K, listener: (event: TEventMap[K], ...args: unknown[]) => void | Promise<void>): this;
20
83
  /**
21
- * Remove an event listener
84
+ * Remove an event listener.
85
+ *
86
+ * @param event - Event name the listener was registered for
87
+ * @param listener - The listener function to remove
88
+ * @returns This emitter for chaining
22
89
  */
23
90
  off<K extends keyof TEventMap>(event: K, listener: (event: TEventMap[K], ...args: unknown[]) => void | Promise<void>): this;
24
91
  /**
25
- * Emit an event
92
+ * Emit an event to all registered listeners.
93
+ *
94
+ * @param event - Event name to emit
95
+ * @param data - Event data to pass to listeners
96
+ * @param convenienceArg - Optional second argument for listeners
97
+ * @returns `true` if any listeners were invoked
98
+ *
99
+ * @internal
26
100
  */
27
101
  emit<K extends keyof TEventMap>(event: K, data: TEventMap[K], convenienceArg?: unknown): boolean;
28
102
  /**
29
- * Remove all listeners for an event
103
+ * Remove all listeners for a specific event or all events.
104
+ *
105
+ * @param event - Event name to remove listeners for, or undefined for all
106
+ * @returns This emitter for chaining
30
107
  */
31
108
  removeAllListeners<K extends keyof TEventMap>(event?: K): this;
32
109
  /**
33
- * Get listener count for an event
110
+ * Get the number of listeners for an event.
111
+ *
112
+ * @param event - Event name to count listeners for
113
+ * @returns Number of registered listeners
34
114
  */
35
115
  listenerCount<K extends keyof TEventMap>(event: K): number;
36
116
  /**
37
- * Set max listeners
117
+ * Set the maximum number of listeners before a warning is issued.
118
+ *
119
+ * @param n - Maximum number of listeners
120
+ * @returns This emitter for chaining
38
121
  */
39
122
  setMaxListeners(n: number): this;
40
123
  }
41
- /** Listener type for ARI events with typed convenience argument */
42
- export type AriEventListener<K extends AriEventType | '*'> = K extends '*' ? (event: AriEventMap['*']) => void | Promise<void> : K extends AriEventType ? EventConvenienceArg<K> extends undefined ? (event: AriEventMap[K]) => void | Promise<void> : (event: AriEventMap[K], arg: EventConvenienceArg<K>) => void | Promise<void> : never;
43
124
  /**
44
- * ARI Event emitter with typed events and convenience arguments
125
+ * Listener function type for ARI events with typed instance argument.
126
+ *
127
+ * This type provides proper typing for the second "convenience" argument
128
+ * that is passed to listeners for ari-client compatibility. The argument
129
+ * is an instance type (e.g., `ChannelInstance`) with methods, not just data.
130
+ *
131
+ * @typeParam K - The event type string
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * // For StasisStart, the listener receives (event, channel)
136
+ * const listener: AriEventListener<'StasisStart'> = (event, channel) => {
137
+ * // event is StasisStartEvent
138
+ * // channel is ChannelInstance with methods like answer(), play(), etc.
139
+ * channel.answer();
140
+ * };
141
+ * ```
142
+ */
143
+ export type AriEventListener<K extends AriEventType | '*'> = K extends '*' ? (event: AriEventMap['*']) => void | Promise<void> : K extends AriEventType ? EventInstanceArg<K> extends undefined ? (event: AriEventMap[K]) => void | Promise<void> : (event: AriEventMap[K], arg: EventInstanceArg<K>) => void | Promise<void> : never;
144
+ /**
145
+ * ARI Event emitter with typed events and convenience arguments.
146
+ *
147
+ * This class is the base for `AriClient` and provides type-safe event
148
+ * handling for all ARI events. It supports the ari-client style of
149
+ * passing convenience arguments (channel, bridge, etc.) as a second
150
+ * parameter to listeners.
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * const emitter = new AriEventEmitter();
155
+ *
156
+ * // The channel parameter is automatically typed
157
+ * emitter.on('StasisStart', (event, channel) => {
158
+ * console.log(`Call from ${channel.caller.number}`);
159
+ * });
160
+ *
161
+ * // Wildcard listener receives all events
162
+ * emitter.on('*', (event) => {
163
+ * console.log(`Event: ${event.type}`);
164
+ * });
165
+ * ```
45
166
  */
46
167
  export declare class AriEventEmitter {
47
168
  private emitter;
48
169
  private wildcardListeners;
49
170
  constructor();
50
171
  /**
51
- * Add a listener for a specific event type
172
+ * Add a listener for a specific event type.
173
+ *
174
+ * The listener receives the event object and an optional convenience
175
+ * argument (channel, bridge, playback, etc.) depending on the event type.
176
+ *
177
+ * @param event - Event type to listen for, or '*' for all events
178
+ * @param listener - Callback function with typed parameters
179
+ * @returns This emitter for chaining
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * // Channel events pass the channel as second argument
184
+ * client.on('StasisStart', (event, channel) => {
185
+ * channel.answer();
186
+ * });
187
+ *
188
+ * // Bridge events pass the bridge
189
+ * client.on('BridgeCreated', (event, bridge) => {
190
+ * console.log(`Bridge ${bridge.id} created`);
191
+ * });
192
+ *
193
+ * // Listen to all events
194
+ * client.on('*', (event) => {
195
+ * console.log(event.type);
196
+ * });
197
+ * ```
52
198
  */
53
199
  on<K extends AriEventType | '*'>(event: K, listener: AriEventListener<K>): this;
54
200
  /**
55
- * Add a one-time listener for a specific event type
201
+ * Add a one-time listener for a specific event type.
202
+ *
203
+ * The listener is automatically removed after being invoked once.
204
+ *
205
+ * @param event - Event type to listen for, or '*' for all events
206
+ * @param listener - Callback function with typed parameters
207
+ * @returns This emitter for chaining
208
+ *
209
+ * @example
210
+ * ```typescript
211
+ * // Wait for a single event
212
+ * client.once('StasisStart', (event, channel) => {
213
+ * console.log('First call received!');
214
+ * });
215
+ * ```
56
216
  */
57
217
  once<K extends AriEventType | '*'>(event: K, listener: AriEventListener<K>): this;
58
218
  /**
59
- * Remove a listener for a specific event type
219
+ * Remove a listener for a specific event type.
220
+ *
221
+ * @param event - Event type the listener was registered for
222
+ * @param listener - The listener function to remove
223
+ * @returns This emitter for chaining
60
224
  */
61
225
  off<K extends AriEventType | '*'>(event: K, listener: AriEventListener<K>): this;
62
226
  /**
63
- * Emit an event
227
+ * Emit an event to all registered listeners.
228
+ *
229
+ * @param event - Event type to emit
230
+ * @param data - Event data to pass to listeners
231
+ * @param convenienceArg - Optional convenience argument (channel, bridge, etc.)
232
+ * @returns `true` if any listeners were invoked
233
+ *
234
+ * @internal
64
235
  */
65
236
  emit<K extends AriEventType>(event: K, data: AriEventMap[K], convenienceArg?: unknown): boolean;
66
237
  /**
67
- * Remove all listeners for an event
238
+ * Remove all listeners for a specific event or all events.
239
+ *
240
+ * @param event - Event type to remove listeners for, or undefined for all
241
+ * @returns This emitter for chaining
68
242
  */
69
243
  removeAllListeners<K extends AriEventType | '*'>(event?: K): this;
70
244
  /**
71
- * Get listener count for an event
245
+ * Get the number of listeners for an event type.
246
+ *
247
+ * @param event - Event type to count listeners for
248
+ * @returns Number of registered listeners
72
249
  */
73
250
  listenerCount<K extends AriEventType | '*'>(event: K): number;
74
251
  /**
75
- * Set max listeners
252
+ * Set the maximum number of listeners before a warning is issued.
253
+ *
254
+ * @param n - Maximum number of listeners (default: 100)
255
+ * @returns This emitter for chaining
76
256
  */
77
257
  setMaxListeners(n: number): this;
78
258
  }
79
259
  /**
80
- * Connection event map
260
+ * Event map for WebSocket connection events.
261
+ *
262
+ * Used internally by `ConnectionEventEmitter` to type connection-related events.
81
263
  */
82
264
  export interface ConnectionEventMap {
265
+ /** Emitted when the connection is established */
83
266
  connected: void;
267
+ /** Emitted when the connection is closed */
84
268
  disconnected: {
85
269
  intentional: boolean;
86
270
  error?: Error;
87
271
  };
272
+ /** Emitted when attempting to reconnect */
88
273
  reconnecting: {
89
274
  attempt: number;
90
275
  delay: number;
91
276
  };
277
+ /** Emitted when reconnection succeeds */
92
278
  reconnected: void;
279
+ /** Emitted when an error occurs */
93
280
  error: Error;
281
+ /** Emitted when a message is received */
94
282
  message: unknown;
95
283
  }
96
284
  /**
97
- * Connection event emitter
285
+ * Event emitter for WebSocket connection events.
286
+ *
287
+ * Used internally by the WebSocket manager to emit connection state events.
288
+ *
289
+ * @internal
98
290
  */
99
291
  export declare class ConnectionEventEmitter extends TypedEventEmitter<ConnectionEventMap> {
100
292
  }
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/events/emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/events/emitter.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,35 @@
1
1
  /**
2
2
  * Type-safe event emitter for ARI events
3
+ *
4
+ * This module provides typed event emitter classes that ensure type safety
5
+ * when listening to and emitting ARI events.
6
+ *
7
+ * @packageDocumentation
3
8
  */
4
9
  import { EventEmitter } from 'events';
5
10
  /**
6
- * Typed event emitter with support for wildcard listeners
11
+ * A typed event emitter with support for wildcard listeners.
12
+ *
13
+ * This generic class wraps Node.js EventEmitter to provide type-safe
14
+ * event handling based on an event map type parameter.
15
+ *
16
+ * @typeParam TEventMap - Object type mapping event names to event data types
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * interface MyEvents {
21
+ * userJoined: { userId: string; name: string };
22
+ * userLeft: { userId: string };
23
+ * '*': { userId: string } | { userId: string; name: string };
24
+ * }
25
+ *
26
+ * const emitter = new TypedEventEmitter<MyEvents>();
27
+ *
28
+ * emitter.on('userJoined', (event) => {
29
+ * // event is typed as { userId: string; name: string }
30
+ * console.log(event.name);
31
+ * });
32
+ * ```
7
33
  */
8
34
  export class TypedEventEmitter {
9
35
  emitter = new EventEmitter();
@@ -12,7 +38,18 @@ export class TypedEventEmitter {
12
38
  this.emitter.setMaxListeners(100);
13
39
  }
14
40
  /**
15
- * Add an event listener
41
+ * Add an event listener.
42
+ *
43
+ * @param event - Event name to listen for, or '*' for all events
44
+ * @param listener - Callback function to invoke when event occurs
45
+ * @returns This emitter for chaining
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * emitter.on('userJoined', (event) => {
50
+ * console.log(`${event.name} joined`);
51
+ * });
52
+ * ```
16
53
  */
17
54
  on(event, listener) {
18
55
  if (event === '*') {
@@ -24,7 +61,13 @@ export class TypedEventEmitter {
24
61
  return this;
25
62
  }
26
63
  /**
27
- * Add a one-time event listener
64
+ * Add a one-time event listener.
65
+ *
66
+ * The listener is automatically removed after being invoked once.
67
+ *
68
+ * @param event - Event name to listen for, or '*' for all events
69
+ * @param listener - Callback function to invoke when event occurs
70
+ * @returns This emitter for chaining
28
71
  */
29
72
  once(event, listener) {
30
73
  if (event === '*') {
@@ -40,7 +83,11 @@ export class TypedEventEmitter {
40
83
  return this;
41
84
  }
42
85
  /**
43
- * Remove an event listener
86
+ * Remove an event listener.
87
+ *
88
+ * @param event - Event name the listener was registered for
89
+ * @param listener - The listener function to remove
90
+ * @returns This emitter for chaining
44
91
  */
45
92
  off(event, listener) {
46
93
  if (event === '*') {
@@ -52,7 +99,14 @@ export class TypedEventEmitter {
52
99
  return this;
53
100
  }
54
101
  /**
55
- * Emit an event
102
+ * Emit an event to all registered listeners.
103
+ *
104
+ * @param event - Event name to emit
105
+ * @param data - Event data to pass to listeners
106
+ * @param convenienceArg - Optional second argument for listeners
107
+ * @returns `true` if any listeners were invoked
108
+ *
109
+ * @internal
56
110
  */
57
111
  emit(event, data, convenienceArg) {
58
112
  // Emit to specific listeners
@@ -71,7 +125,10 @@ export class TypedEventEmitter {
71
125
  return hasListeners || this.wildcardListeners.size > 0;
72
126
  }
73
127
  /**
74
- * Remove all listeners for an event
128
+ * Remove all listeners for a specific event or all events.
129
+ *
130
+ * @param event - Event name to remove listeners for, or undefined for all
131
+ * @returns This emitter for chaining
75
132
  */
76
133
  removeAllListeners(event) {
77
134
  if (event === undefined) {
@@ -87,7 +144,10 @@ export class TypedEventEmitter {
87
144
  return this;
88
145
  }
89
146
  /**
90
- * Get listener count for an event
147
+ * Get the number of listeners for an event.
148
+ *
149
+ * @param event - Event name to count listeners for
150
+ * @returns Number of registered listeners
91
151
  */
92
152
  listenerCount(event) {
93
153
  if (event === '*') {
@@ -96,7 +156,10 @@ export class TypedEventEmitter {
96
156
  return this.emitter.listenerCount(event);
97
157
  }
98
158
  /**
99
- * Set max listeners
159
+ * Set the maximum number of listeners before a warning is issued.
160
+ *
161
+ * @param n - Maximum number of listeners
162
+ * @returns This emitter for chaining
100
163
  */
101
164
  setMaxListeners(n) {
102
165
  this.emitter.setMaxListeners(n);
@@ -104,7 +167,27 @@ export class TypedEventEmitter {
104
167
  }
105
168
  }
106
169
  /**
107
- * ARI Event emitter with typed events and convenience arguments
170
+ * ARI Event emitter with typed events and convenience arguments.
171
+ *
172
+ * This class is the base for `AriClient` and provides type-safe event
173
+ * handling for all ARI events. It supports the ari-client style of
174
+ * passing convenience arguments (channel, bridge, etc.) as a second
175
+ * parameter to listeners.
176
+ *
177
+ * @example
178
+ * ```typescript
179
+ * const emitter = new AriEventEmitter();
180
+ *
181
+ * // The channel parameter is automatically typed
182
+ * emitter.on('StasisStart', (event, channel) => {
183
+ * console.log(`Call from ${channel.caller.number}`);
184
+ * });
185
+ *
186
+ * // Wildcard listener receives all events
187
+ * emitter.on('*', (event) => {
188
+ * console.log(`Event: ${event.type}`);
189
+ * });
190
+ * ```
108
191
  */
109
192
  export class AriEventEmitter {
110
193
  emitter = new EventEmitter();
@@ -113,7 +196,32 @@ export class AriEventEmitter {
113
196
  this.emitter.setMaxListeners(100);
114
197
  }
115
198
  /**
116
- * Add a listener for a specific event type
199
+ * Add a listener for a specific event type.
200
+ *
201
+ * The listener receives the event object and an optional convenience
202
+ * argument (channel, bridge, playback, etc.) depending on the event type.
203
+ *
204
+ * @param event - Event type to listen for, or '*' for all events
205
+ * @param listener - Callback function with typed parameters
206
+ * @returns This emitter for chaining
207
+ *
208
+ * @example
209
+ * ```typescript
210
+ * // Channel events pass the channel as second argument
211
+ * client.on('StasisStart', (event, channel) => {
212
+ * channel.answer();
213
+ * });
214
+ *
215
+ * // Bridge events pass the bridge
216
+ * client.on('BridgeCreated', (event, bridge) => {
217
+ * console.log(`Bridge ${bridge.id} created`);
218
+ * });
219
+ *
220
+ * // Listen to all events
221
+ * client.on('*', (event) => {
222
+ * console.log(event.type);
223
+ * });
224
+ * ```
117
225
  */
118
226
  on(event, listener) {
119
227
  if (event === '*') {
@@ -125,7 +233,21 @@ export class AriEventEmitter {
125
233
  return this;
126
234
  }
127
235
  /**
128
- * Add a one-time listener for a specific event type
236
+ * Add a one-time listener for a specific event type.
237
+ *
238
+ * The listener is automatically removed after being invoked once.
239
+ *
240
+ * @param event - Event type to listen for, or '*' for all events
241
+ * @param listener - Callback function with typed parameters
242
+ * @returns This emitter for chaining
243
+ *
244
+ * @example
245
+ * ```typescript
246
+ * // Wait for a single event
247
+ * client.once('StasisStart', (event, channel) => {
248
+ * console.log('First call received!');
249
+ * });
250
+ * ```
129
251
  */
130
252
  once(event, listener) {
131
253
  if (event === '*') {
@@ -141,7 +263,11 @@ export class AriEventEmitter {
141
263
  return this;
142
264
  }
143
265
  /**
144
- * Remove a listener for a specific event type
266
+ * Remove a listener for a specific event type.
267
+ *
268
+ * @param event - Event type the listener was registered for
269
+ * @param listener - The listener function to remove
270
+ * @returns This emitter for chaining
145
271
  */
146
272
  off(event, listener) {
147
273
  if (event === '*') {
@@ -153,7 +279,14 @@ export class AriEventEmitter {
153
279
  return this;
154
280
  }
155
281
  /**
156
- * Emit an event
282
+ * Emit an event to all registered listeners.
283
+ *
284
+ * @param event - Event type to emit
285
+ * @param data - Event data to pass to listeners
286
+ * @param convenienceArg - Optional convenience argument (channel, bridge, etc.)
287
+ * @returns `true` if any listeners were invoked
288
+ *
289
+ * @internal
157
290
  */
158
291
  emit(event, data, convenienceArg) {
159
292
  // Emit to specific listeners
@@ -172,7 +305,10 @@ export class AriEventEmitter {
172
305
  return hasListeners || this.wildcardListeners.size > 0;
173
306
  }
174
307
  /**
175
- * Remove all listeners for an event
308
+ * Remove all listeners for a specific event or all events.
309
+ *
310
+ * @param event - Event type to remove listeners for, or undefined for all
311
+ * @returns This emitter for chaining
176
312
  */
177
313
  removeAllListeners(event) {
178
314
  if (event === undefined) {
@@ -188,7 +324,10 @@ export class AriEventEmitter {
188
324
  return this;
189
325
  }
190
326
  /**
191
- * Get listener count for an event
327
+ * Get the number of listeners for an event type.
328
+ *
329
+ * @param event - Event type to count listeners for
330
+ * @returns Number of registered listeners
192
331
  */
193
332
  listenerCount(event) {
194
333
  if (event === '*') {
@@ -197,7 +336,10 @@ export class AriEventEmitter {
197
336
  return this.emitter.listenerCount(event);
198
337
  }
199
338
  /**
200
- * Set max listeners
339
+ * Set the maximum number of listeners before a warning is issued.
340
+ *
341
+ * @param n - Maximum number of listeners (default: 100)
342
+ * @returns This emitter for chaining
201
343
  */
202
344
  setMaxListeners(n) {
203
345
  this.emitter.setMaxListeners(n);
@@ -205,7 +347,11 @@ export class AriEventEmitter {
205
347
  }
206
348
  }
207
349
  /**
208
- * Connection event emitter
350
+ * Event emitter for WebSocket connection events.
351
+ *
352
+ * Used internally by the WebSocket manager to emit connection state events.
353
+ *
354
+ * @internal
209
355
  */
210
356
  export class ConnectionEventEmitter extends TypedEventEmitter {
211
357
  }
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/events/emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/events/emitter.ts"],"names":[],"mappings":"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"}