@per_moeller/asterisk-ari 1.0.2 → 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.
- package/dist/client.d.ts +363 -21
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +395 -24
- package/dist/client.js.map +1 -1
- package/dist/connection.d.ts +132 -12
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +121 -10
- package/dist/connection.js.map +1 -1
- package/dist/events/emitter.d.ts +235 -24
- package/dist/events/emitter.d.ts.map +1 -1
- package/dist/events/emitter.js +248 -22
- package/dist/events/emitter.js.map +1 -1
- package/dist/events/types.d.ts +389 -1
- package/dist/events/types.d.ts.map +1 -1
- package/dist/events/types.js +5 -0
- package/dist/events/types.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models/channel.d.ts +349 -32
- package/dist/models/channel.d.ts.map +1 -1
- package/dist/models/channel.js +348 -34
- package/dist/models/channel.js.map +1 -1
- package/dist/pool.d.ts +152 -11
- package/dist/pool.d.ts.map +1 -1
- package/dist/pool.js +152 -11
- package/dist/pool.js.map +1 -1
- package/dist/queue.d.ts +130 -16
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +123 -16
- package/dist/queue.js.map +1 -1
- package/dist/types/api.d.ts +655 -1
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/api.js +5 -0
- package/dist/types/api.js.map +1 -1
- package/dist/version.d.ts +163 -26
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +143 -22
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
package/dist/events/emitter.d.ts
CHANGED
|
@@ -1,82 +1,293 @@
|
|
|
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 type { AriEventMap, AriEventType } from './types.js';
|
|
5
|
-
type
|
|
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';
|
|
6
15
|
/**
|
|
7
|
-
*
|
|
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
|
+
* ```
|
|
8
53
|
*/
|
|
9
54
|
export declare class TypedEventEmitter<TEventMap extends object> {
|
|
10
55
|
private emitter;
|
|
11
56
|
private wildcardListeners;
|
|
12
57
|
constructor();
|
|
13
58
|
/**
|
|
14
|
-
* 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
|
+
* ```
|
|
15
71
|
*/
|
|
16
|
-
on<K extends keyof TEventMap>(event: K, listener:
|
|
72
|
+
on<K extends keyof TEventMap>(event: K, listener: (event: TEventMap[K], ...args: unknown[]) => void | Promise<void>): this;
|
|
17
73
|
/**
|
|
18
|
-
* 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
|
|
19
81
|
*/
|
|
20
|
-
once<K extends keyof TEventMap>(event: K, listener:
|
|
82
|
+
once<K extends keyof TEventMap>(event: K, listener: (event: TEventMap[K], ...args: unknown[]) => void | Promise<void>): this;
|
|
21
83
|
/**
|
|
22
|
-
* 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
|
|
23
89
|
*/
|
|
24
|
-
off<K extends keyof TEventMap>(event: K, listener:
|
|
90
|
+
off<K extends keyof TEventMap>(event: K, listener: (event: TEventMap[K], ...args: unknown[]) => void | Promise<void>): this;
|
|
25
91
|
/**
|
|
26
|
-
* 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
|
|
27
100
|
*/
|
|
28
|
-
emit<K extends keyof TEventMap>(event: K, data: TEventMap[K],
|
|
101
|
+
emit<K extends keyof TEventMap>(event: K, data: TEventMap[K], convenienceArg?: unknown): boolean;
|
|
29
102
|
/**
|
|
30
|
-
* Remove all listeners for
|
|
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
|
|
31
107
|
*/
|
|
32
108
|
removeAllListeners<K extends keyof TEventMap>(event?: K): this;
|
|
33
109
|
/**
|
|
34
|
-
* Get
|
|
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
|
|
35
114
|
*/
|
|
36
115
|
listenerCount<K extends keyof TEventMap>(event: K): number;
|
|
37
116
|
/**
|
|
38
|
-
* Set
|
|
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
|
|
39
121
|
*/
|
|
40
122
|
setMaxListeners(n: number): this;
|
|
41
123
|
}
|
|
42
124
|
/**
|
|
43
|
-
* ARI
|
|
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
|
+
* ```
|
|
44
166
|
*/
|
|
45
|
-
export declare class AriEventEmitter
|
|
167
|
+
export declare class AriEventEmitter {
|
|
168
|
+
private emitter;
|
|
169
|
+
private wildcardListeners;
|
|
170
|
+
constructor();
|
|
171
|
+
/**
|
|
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
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
on<K extends AriEventType | '*'>(event: K, listener: AriEventListener<K>): this;
|
|
200
|
+
/**
|
|
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
|
+
* ```
|
|
216
|
+
*/
|
|
217
|
+
once<K extends AriEventType | '*'>(event: K, listener: AriEventListener<K>): this;
|
|
218
|
+
/**
|
|
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
|
|
224
|
+
*/
|
|
225
|
+
off<K extends AriEventType | '*'>(event: K, listener: AriEventListener<K>): this;
|
|
226
|
+
/**
|
|
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
|
|
235
|
+
*/
|
|
236
|
+
emit<K extends AriEventType>(event: K, data: AriEventMap[K], convenienceArg?: unknown): boolean;
|
|
46
237
|
/**
|
|
47
|
-
*
|
|
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
|
|
48
242
|
*/
|
|
49
|
-
|
|
243
|
+
removeAllListeners<K extends AriEventType | '*'>(event?: K): this;
|
|
50
244
|
/**
|
|
51
|
-
*
|
|
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
|
|
52
249
|
*/
|
|
53
|
-
|
|
250
|
+
listenerCount<K extends AriEventType | '*'>(event: K): number;
|
|
54
251
|
/**
|
|
55
|
-
*
|
|
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
|
|
56
256
|
*/
|
|
57
|
-
|
|
257
|
+
setMaxListeners(n: number): this;
|
|
58
258
|
}
|
|
59
259
|
/**
|
|
60
|
-
*
|
|
260
|
+
* Event map for WebSocket connection events.
|
|
261
|
+
*
|
|
262
|
+
* Used internally by `ConnectionEventEmitter` to type connection-related events.
|
|
61
263
|
*/
|
|
62
264
|
export interface ConnectionEventMap {
|
|
265
|
+
/** Emitted when the connection is established */
|
|
63
266
|
connected: void;
|
|
267
|
+
/** Emitted when the connection is closed */
|
|
64
268
|
disconnected: {
|
|
65
269
|
intentional: boolean;
|
|
66
270
|
error?: Error;
|
|
67
271
|
};
|
|
272
|
+
/** Emitted when attempting to reconnect */
|
|
68
273
|
reconnecting: {
|
|
69
274
|
attempt: number;
|
|
70
275
|
delay: number;
|
|
71
276
|
};
|
|
277
|
+
/** Emitted when reconnection succeeds */
|
|
72
278
|
reconnected: void;
|
|
279
|
+
/** Emitted when an error occurs */
|
|
73
280
|
error: Error;
|
|
281
|
+
/** Emitted when a message is received */
|
|
74
282
|
message: unknown;
|
|
75
283
|
}
|
|
76
284
|
/**
|
|
77
|
-
*
|
|
285
|
+
* Event emitter for WebSocket connection events.
|
|
286
|
+
*
|
|
287
|
+
* Used internally by the WebSocket manager to emit connection state events.
|
|
288
|
+
*
|
|
289
|
+
* @internal
|
|
78
290
|
*/
|
|
79
291
|
export declare class ConnectionEventEmitter extends TypedEventEmitter<ConnectionEventMap> {
|
|
80
292
|
}
|
|
81
|
-
export {};
|
|
82
293
|
//# sourceMappingURL=emitter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/events/emitter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/events/emitter.ts"],"names":[],"mappings":"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"}
|