@per_moeller/asterisk-ari 1.0.0
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/LICENSE +21 -0
- package/README.md +291 -0
- package/dist/client.d.ts +123 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +297 -0
- package/dist/client.js.map +1 -0
- package/dist/connection.d.ts +70 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +157 -0
- package/dist/connection.js.map +1 -0
- package/dist/events/emitter.d.ts +82 -0
- package/dist/events/emitter.d.ts.map +1 -0
- package/dist/events/emitter.js +132 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/types.d.ts +283 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +5 -0
- package/dist/events/types.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/models/bridge.d.ts +102 -0
- package/dist/models/bridge.d.ts.map +1 -0
- package/dist/models/bridge.js +186 -0
- package/dist/models/bridge.js.map +1 -0
- package/dist/models/channel.d.ts +166 -0
- package/dist/models/channel.d.ts.map +1 -0
- package/dist/models/channel.js +278 -0
- package/dist/models/channel.js.map +1 -0
- package/dist/models/index.d.ts +8 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +8 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/playback.d.ts +82 -0
- package/dist/models/playback.d.ts.map +1 -0
- package/dist/models/playback.js +146 -0
- package/dist/models/playback.js.map +1 -0
- package/dist/models/recording.d.ts +104 -0
- package/dist/models/recording.d.ts.map +1 -0
- package/dist/models/recording.js +191 -0
- package/dist/models/recording.js.map +1 -0
- package/dist/pool.d.ts +57 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js +111 -0
- package/dist/pool.js.map +1 -0
- package/dist/queue.d.ts +85 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +208 -0
- package/dist/queue.js.map +1 -0
- package/dist/resources/applications.d.ts +37 -0
- package/dist/resources/applications.d.ts.map +1 -0
- package/dist/resources/applications.js +45 -0
- package/dist/resources/applications.js.map +1 -0
- package/dist/resources/asterisk.d.ts +71 -0
- package/dist/resources/asterisk.d.ts.map +1 -0
- package/dist/resources/asterisk.js +94 -0
- package/dist/resources/asterisk.js.map +1 -0
- package/dist/resources/base.d.ts +18 -0
- package/dist/resources/base.d.ts.map +1 -0
- package/dist/resources/base.js +21 -0
- package/dist/resources/base.js.map +1 -0
- package/dist/resources/bridges.d.ts +66 -0
- package/dist/resources/bridges.d.ts.map +1 -0
- package/dist/resources/bridges.js +109 -0
- package/dist/resources/bridges.js.map +1 -0
- package/dist/resources/channels.d.ts +130 -0
- package/dist/resources/channels.d.ts.map +1 -0
- package/dist/resources/channels.js +228 -0
- package/dist/resources/channels.js.map +1 -0
- package/dist/resources/devicestates.d.ts +30 -0
- package/dist/resources/devicestates.d.ts.map +1 -0
- package/dist/resources/devicestates.js +37 -0
- package/dist/resources/devicestates.js.map +1 -0
- package/dist/resources/endpoints.d.ts +38 -0
- package/dist/resources/endpoints.d.ts.map +1 -0
- package/dist/resources/endpoints.js +61 -0
- package/dist/resources/endpoints.js.map +1 -0
- package/dist/resources/mailboxes.d.ts +30 -0
- package/dist/resources/mailboxes.d.ts.map +1 -0
- package/dist/resources/mailboxes.js +38 -0
- package/dist/resources/mailboxes.js.map +1 -0
- package/dist/resources/playbacks.d.ts +27 -0
- package/dist/resources/playbacks.d.ts.map +1 -0
- package/dist/resources/playbacks.js +31 -0
- package/dist/resources/playbacks.js.map +1 -0
- package/dist/resources/recordings.d.ts +76 -0
- package/dist/resources/recordings.d.ts.map +1 -0
- package/dist/resources/recordings.js +105 -0
- package/dist/resources/recordings.js.map +1 -0
- package/dist/resources/sounds.d.ts +22 -0
- package/dist/resources/sounds.d.ts.map +1 -0
- package/dist/resources/sounds.js +26 -0
- package/dist/resources/sounds.js.map +1 -0
- package/dist/types/api.d.ts +331 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +5 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/options.d.ts +77 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +23 -0
- package/dist/types/options.js.map +1 -0
- package/dist/version.d.ts +86 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +122 -0
- package/dist/version.js.map +1 -0
- package/dist/websocket.d.ts +70 -0
- package/dist/websocket.d.ts.map +1 -0
- package/dist/websocket.js +195 -0
- package/dist/websocket.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Playback model and instance class
|
|
3
|
+
*/
|
|
4
|
+
import type { AriClient } from '../client.js';
|
|
5
|
+
import type { Playback, PlaybackState } from '../types/api.js';
|
|
6
|
+
import type { PlaybackOperation } from '../resources/playbacks.js';
|
|
7
|
+
import type { AriEventMap, PlaybackEventType, PlaybackStartedEvent, PlaybackContinuingEvent, PlaybackFinishedEvent } from '../events/types.js';
|
|
8
|
+
type PlaybackEventListener<E> = (event: E, playback: PlaybackInstance) => void | Promise<void>;
|
|
9
|
+
interface PlaybackEventListeners {
|
|
10
|
+
PlaybackStarted: PlaybackEventListener<PlaybackStartedEvent>;
|
|
11
|
+
PlaybackContinuing: PlaybackEventListener<PlaybackContinuingEvent>;
|
|
12
|
+
PlaybackFinished: PlaybackEventListener<PlaybackFinishedEvent>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Playback instance with bound operations and event handling
|
|
16
|
+
*/
|
|
17
|
+
export declare class PlaybackInstance implements Playback {
|
|
18
|
+
id: string;
|
|
19
|
+
media_uri: string;
|
|
20
|
+
next_media_uri?: string;
|
|
21
|
+
target_uri: string;
|
|
22
|
+
language: string;
|
|
23
|
+
state: PlaybackState;
|
|
24
|
+
private readonly client;
|
|
25
|
+
private readonly listeners;
|
|
26
|
+
constructor(client: AriClient, id?: string, data?: Partial<Playback>);
|
|
27
|
+
/**
|
|
28
|
+
* Update playback data from an event or API response
|
|
29
|
+
*/
|
|
30
|
+
updateData(data: Partial<Playback>): void;
|
|
31
|
+
/**
|
|
32
|
+
* Add an event listener
|
|
33
|
+
*/
|
|
34
|
+
on<K extends keyof PlaybackEventListeners>(event: K, listener: PlaybackEventListeners[K]): this;
|
|
35
|
+
/**
|
|
36
|
+
* Add a one-time event listener
|
|
37
|
+
*/
|
|
38
|
+
once<K extends keyof PlaybackEventListeners>(event: K, listener: PlaybackEventListeners[K]): this;
|
|
39
|
+
/**
|
|
40
|
+
* Remove an event listener
|
|
41
|
+
*/
|
|
42
|
+
off<K extends keyof PlaybackEventListeners>(event: K, listener: PlaybackEventListeners[K]): this;
|
|
43
|
+
/**
|
|
44
|
+
* Emit an event to listeners
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
_emit<K extends PlaybackEventType>(event: K, data: AriEventMap[K]): void;
|
|
48
|
+
/**
|
|
49
|
+
* Remove all event listeners and unregister from client
|
|
50
|
+
*/
|
|
51
|
+
removeAllListeners(): this;
|
|
52
|
+
/**
|
|
53
|
+
* Stop this playback
|
|
54
|
+
*/
|
|
55
|
+
stop(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Control this playback
|
|
58
|
+
*/
|
|
59
|
+
control(operation: PlaybackOperation): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Pause this playback
|
|
62
|
+
*/
|
|
63
|
+
pause(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Unpause this playback
|
|
66
|
+
*/
|
|
67
|
+
unpause(): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Restart this playback
|
|
70
|
+
*/
|
|
71
|
+
restart(): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Skip forward in this playback
|
|
74
|
+
*/
|
|
75
|
+
forward(): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Skip backward in this playback
|
|
78
|
+
*/
|
|
79
|
+
reverse(): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
export {};
|
|
82
|
+
//# sourceMappingURL=playback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../src/models/playback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAE5B,KAAK,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/F,UAAU,sBAAsB;IAC9B,eAAe,EAAE,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IAC7D,kBAAkB,EAAE,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;IACnE,gBAAgB,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,QAAQ;IAE/C,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAM;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAM;IACxB,QAAQ,EAAE,MAAM,CAAQ;IACxB,KAAK,EAAE,aAAa,CAAY;IAEhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6D;gBAE3E,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IAYpE;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI;IASzC;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,sBAAsB,EACvC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAClC,IAAI;IAUP;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,sBAAsB,EACzC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAClC,IAAI;IASP;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,sBAAsB,EACxC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAClC,IAAI;IAQP;;;OAGG;IACH,KAAK,CAAC,CAAC,SAAS,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAaxE;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAU1B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Playback model and instance class
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Playback instance with bound operations and event handling
|
|
6
|
+
*/
|
|
7
|
+
export class PlaybackInstance {
|
|
8
|
+
// Playback properties
|
|
9
|
+
id;
|
|
10
|
+
media_uri = '';
|
|
11
|
+
next_media_uri;
|
|
12
|
+
target_uri = '';
|
|
13
|
+
language = 'en';
|
|
14
|
+
state = 'queued';
|
|
15
|
+
client;
|
|
16
|
+
listeners = new Map();
|
|
17
|
+
constructor(client, id, data) {
|
|
18
|
+
this.client = client;
|
|
19
|
+
this.id = id || crypto.randomUUID();
|
|
20
|
+
if (data) {
|
|
21
|
+
this.updateData(data);
|
|
22
|
+
}
|
|
23
|
+
// Register this instance for events
|
|
24
|
+
this.client._registerPlaybackInstance(this.id, this);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Update playback data from an event or API response
|
|
28
|
+
*/
|
|
29
|
+
updateData(data) {
|
|
30
|
+
if (data.id !== undefined)
|
|
31
|
+
this.id = data.id;
|
|
32
|
+
if (data.media_uri !== undefined)
|
|
33
|
+
this.media_uri = data.media_uri;
|
|
34
|
+
if (data.next_media_uri !== undefined)
|
|
35
|
+
this.next_media_uri = data.next_media_uri;
|
|
36
|
+
if (data.target_uri !== undefined)
|
|
37
|
+
this.target_uri = data.target_uri;
|
|
38
|
+
if (data.language !== undefined)
|
|
39
|
+
this.language = data.language;
|
|
40
|
+
if (data.state !== undefined)
|
|
41
|
+
this.state = data.state;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Add an event listener
|
|
45
|
+
*/
|
|
46
|
+
on(event, listener) {
|
|
47
|
+
let eventListeners = this.listeners.get(event);
|
|
48
|
+
if (!eventListeners) {
|
|
49
|
+
eventListeners = new Set();
|
|
50
|
+
this.listeners.set(event, eventListeners);
|
|
51
|
+
}
|
|
52
|
+
eventListeners.add(listener);
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Add a one-time event listener
|
|
57
|
+
*/
|
|
58
|
+
once(event, listener) {
|
|
59
|
+
const wrappedListener = ((...args) => {
|
|
60
|
+
this.off(event, wrappedListener);
|
|
61
|
+
listener(...args);
|
|
62
|
+
});
|
|
63
|
+
return this.on(event, wrappedListener);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Remove an event listener
|
|
67
|
+
*/
|
|
68
|
+
off(event, listener) {
|
|
69
|
+
const eventListeners = this.listeners.get(event);
|
|
70
|
+
if (eventListeners) {
|
|
71
|
+
eventListeners.delete(listener);
|
|
72
|
+
}
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Emit an event to listeners
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
_emit(event, data) {
|
|
80
|
+
const eventListeners = this.listeners.get(event);
|
|
81
|
+
if (eventListeners) {
|
|
82
|
+
for (const listener of eventListeners) {
|
|
83
|
+
try {
|
|
84
|
+
listener(data, this);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error(`Error in playback event listener for ${event}:`, error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Remove all event listeners and unregister from client
|
|
94
|
+
*/
|
|
95
|
+
removeAllListeners() {
|
|
96
|
+
this.listeners.clear();
|
|
97
|
+
this.client._unregisterPlaybackInstance(this.id);
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
// ============================================================================
|
|
101
|
+
// Bound Playback Operations
|
|
102
|
+
// ============================================================================
|
|
103
|
+
/**
|
|
104
|
+
* Stop this playback
|
|
105
|
+
*/
|
|
106
|
+
async stop() {
|
|
107
|
+
return this.client.playbacks.stop(this.id);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Control this playback
|
|
111
|
+
*/
|
|
112
|
+
async control(operation) {
|
|
113
|
+
return this.client.playbacks.control(this.id, operation);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Pause this playback
|
|
117
|
+
*/
|
|
118
|
+
async pause() {
|
|
119
|
+
return this.control('pause');
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Unpause this playback
|
|
123
|
+
*/
|
|
124
|
+
async unpause() {
|
|
125
|
+
return this.control('unpause');
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Restart this playback
|
|
129
|
+
*/
|
|
130
|
+
async restart() {
|
|
131
|
+
return this.control('restart');
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Skip forward in this playback
|
|
135
|
+
*/
|
|
136
|
+
async forward() {
|
|
137
|
+
return this.control('forward');
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Skip backward in this playback
|
|
141
|
+
*/
|
|
142
|
+
async reverse() {
|
|
143
|
+
return this.control('reverse');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=playback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playback.js","sourceRoot":"","sources":["../../src/models/playback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recording model and instance classes
|
|
3
|
+
*/
|
|
4
|
+
import type { AriClient } from '../client.js';
|
|
5
|
+
import type { LiveRecording, RecordingState, StoredRecording } from '../types/api.js';
|
|
6
|
+
import type { AriEventMap, RecordingEventType, RecordingStartedEvent, RecordingFinishedEvent, RecordingFailedEvent } from '../events/types.js';
|
|
7
|
+
type RecordingEventListener<E> = (event: E, recording: LiveRecordingInstance) => void | Promise<void>;
|
|
8
|
+
interface RecordingEventListeners {
|
|
9
|
+
RecordingStarted: RecordingEventListener<RecordingStartedEvent>;
|
|
10
|
+
RecordingFinished: RecordingEventListener<RecordingFinishedEvent>;
|
|
11
|
+
RecordingFailed: RecordingEventListener<RecordingFailedEvent>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Live recording instance with bound operations and event handling
|
|
15
|
+
*/
|
|
16
|
+
export declare class LiveRecordingInstance implements LiveRecording {
|
|
17
|
+
name: string;
|
|
18
|
+
format: string;
|
|
19
|
+
state: RecordingState;
|
|
20
|
+
target_uri: string;
|
|
21
|
+
duration?: number;
|
|
22
|
+
talking_duration?: number;
|
|
23
|
+
silence_duration?: number;
|
|
24
|
+
cause?: string;
|
|
25
|
+
private readonly client;
|
|
26
|
+
private readonly listeners;
|
|
27
|
+
constructor(client: AriClient, name: string, data?: Partial<LiveRecording>);
|
|
28
|
+
/**
|
|
29
|
+
* Update recording data from an event or API response
|
|
30
|
+
*/
|
|
31
|
+
updateData(data: Partial<LiveRecording>): void;
|
|
32
|
+
/**
|
|
33
|
+
* Add an event listener
|
|
34
|
+
*/
|
|
35
|
+
on<K extends keyof RecordingEventListeners>(event: K, listener: RecordingEventListeners[K]): this;
|
|
36
|
+
/**
|
|
37
|
+
* Add a one-time event listener
|
|
38
|
+
*/
|
|
39
|
+
once<K extends keyof RecordingEventListeners>(event: K, listener: RecordingEventListeners[K]): this;
|
|
40
|
+
/**
|
|
41
|
+
* Remove an event listener
|
|
42
|
+
*/
|
|
43
|
+
off<K extends keyof RecordingEventListeners>(event: K, listener: RecordingEventListeners[K]): this;
|
|
44
|
+
/**
|
|
45
|
+
* Emit an event to listeners
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
_emit<K extends RecordingEventType>(event: K, data: AriEventMap[K]): void;
|
|
49
|
+
/**
|
|
50
|
+
* Remove all event listeners and unregister from client
|
|
51
|
+
*/
|
|
52
|
+
removeAllListeners(): this;
|
|
53
|
+
/**
|
|
54
|
+
* Stop and store this recording
|
|
55
|
+
*/
|
|
56
|
+
stop(): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Pause this recording
|
|
59
|
+
*/
|
|
60
|
+
pause(): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Unpause this recording
|
|
63
|
+
*/
|
|
64
|
+
unpause(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Mute this recording
|
|
67
|
+
*/
|
|
68
|
+
mute(): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Unmute this recording
|
|
71
|
+
*/
|
|
72
|
+
unmute(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Cancel and discard this recording
|
|
75
|
+
*/
|
|
76
|
+
cancel(): Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Stored recording instance with bound operations
|
|
80
|
+
*/
|
|
81
|
+
export declare class StoredRecordingInstance implements StoredRecording {
|
|
82
|
+
name: string;
|
|
83
|
+
format: string;
|
|
84
|
+
private readonly client;
|
|
85
|
+
constructor(client: AriClient, name: string, data?: Partial<StoredRecording>);
|
|
86
|
+
/**
|
|
87
|
+
* Update recording data
|
|
88
|
+
*/
|
|
89
|
+
updateData(data: Partial<StoredRecording>): void;
|
|
90
|
+
/**
|
|
91
|
+
* Get the file for this recording
|
|
92
|
+
*/
|
|
93
|
+
getFile(): Promise<ArrayBuffer>;
|
|
94
|
+
/**
|
|
95
|
+
* Copy this recording
|
|
96
|
+
*/
|
|
97
|
+
copy(destinationRecordingName: string): Promise<StoredRecordingInstance>;
|
|
98
|
+
/**
|
|
99
|
+
* Delete this recording
|
|
100
|
+
*/
|
|
101
|
+
delete(): Promise<void>;
|
|
102
|
+
}
|
|
103
|
+
export {};
|
|
104
|
+
//# sourceMappingURL=recording.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording.d.ts","sourceRoot":"","sources":["../../src/models/recording.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recording model and instance classes
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Live recording instance with bound operations and event handling
|
|
6
|
+
*/
|
|
7
|
+
export class LiveRecordingInstance {
|
|
8
|
+
// Recording properties
|
|
9
|
+
name;
|
|
10
|
+
format = '';
|
|
11
|
+
state = 'queued';
|
|
12
|
+
target_uri = '';
|
|
13
|
+
duration;
|
|
14
|
+
talking_duration;
|
|
15
|
+
silence_duration;
|
|
16
|
+
cause;
|
|
17
|
+
client;
|
|
18
|
+
listeners = new Map();
|
|
19
|
+
constructor(client, name, data) {
|
|
20
|
+
this.client = client;
|
|
21
|
+
this.name = name;
|
|
22
|
+
if (data) {
|
|
23
|
+
this.updateData(data);
|
|
24
|
+
}
|
|
25
|
+
// Register this instance for events
|
|
26
|
+
this.client._registerRecordingInstance(this.name, this);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Update recording data from an event or API response
|
|
30
|
+
*/
|
|
31
|
+
updateData(data) {
|
|
32
|
+
if (data.name !== undefined)
|
|
33
|
+
this.name = data.name;
|
|
34
|
+
if (data.format !== undefined)
|
|
35
|
+
this.format = data.format;
|
|
36
|
+
if (data.state !== undefined)
|
|
37
|
+
this.state = data.state;
|
|
38
|
+
if (data.target_uri !== undefined)
|
|
39
|
+
this.target_uri = data.target_uri;
|
|
40
|
+
if (data.duration !== undefined)
|
|
41
|
+
this.duration = data.duration;
|
|
42
|
+
if (data.talking_duration !== undefined)
|
|
43
|
+
this.talking_duration = data.talking_duration;
|
|
44
|
+
if (data.silence_duration !== undefined)
|
|
45
|
+
this.silence_duration = data.silence_duration;
|
|
46
|
+
if (data.cause !== undefined)
|
|
47
|
+
this.cause = data.cause;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Add an event listener
|
|
51
|
+
*/
|
|
52
|
+
on(event, listener) {
|
|
53
|
+
let eventListeners = this.listeners.get(event);
|
|
54
|
+
if (!eventListeners) {
|
|
55
|
+
eventListeners = new Set();
|
|
56
|
+
this.listeners.set(event, eventListeners);
|
|
57
|
+
}
|
|
58
|
+
eventListeners.add(listener);
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Add a one-time event listener
|
|
63
|
+
*/
|
|
64
|
+
once(event, listener) {
|
|
65
|
+
const wrappedListener = ((...args) => {
|
|
66
|
+
this.off(event, wrappedListener);
|
|
67
|
+
listener(...args);
|
|
68
|
+
});
|
|
69
|
+
return this.on(event, wrappedListener);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Remove an event listener
|
|
73
|
+
*/
|
|
74
|
+
off(event, listener) {
|
|
75
|
+
const eventListeners = this.listeners.get(event);
|
|
76
|
+
if (eventListeners) {
|
|
77
|
+
eventListeners.delete(listener);
|
|
78
|
+
}
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Emit an event to listeners
|
|
83
|
+
* @internal
|
|
84
|
+
*/
|
|
85
|
+
_emit(event, data) {
|
|
86
|
+
const eventListeners = this.listeners.get(event);
|
|
87
|
+
if (eventListeners) {
|
|
88
|
+
for (const listener of eventListeners) {
|
|
89
|
+
try {
|
|
90
|
+
listener(data, this);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
console.error(`Error in recording event listener for ${event}:`, error);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Remove all event listeners and unregister from client
|
|
100
|
+
*/
|
|
101
|
+
removeAllListeners() {
|
|
102
|
+
this.listeners.clear();
|
|
103
|
+
this.client._unregisterRecordingInstance(this.name);
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
// ============================================================================
|
|
107
|
+
// Bound Recording Operations
|
|
108
|
+
// ============================================================================
|
|
109
|
+
/**
|
|
110
|
+
* Stop and store this recording
|
|
111
|
+
*/
|
|
112
|
+
async stop() {
|
|
113
|
+
return this.client.recordings.live.stop(this.name);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Pause this recording
|
|
117
|
+
*/
|
|
118
|
+
async pause() {
|
|
119
|
+
return this.client.recordings.live.pause(this.name);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Unpause this recording
|
|
123
|
+
*/
|
|
124
|
+
async unpause() {
|
|
125
|
+
return this.client.recordings.live.unpause(this.name);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Mute this recording
|
|
129
|
+
*/
|
|
130
|
+
async mute() {
|
|
131
|
+
return this.client.recordings.live.mute(this.name);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Unmute this recording
|
|
135
|
+
*/
|
|
136
|
+
async unmute() {
|
|
137
|
+
return this.client.recordings.live.unmute(this.name);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Cancel and discard this recording
|
|
141
|
+
*/
|
|
142
|
+
async cancel() {
|
|
143
|
+
return this.client.recordings.live.cancel(this.name);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Stored recording instance with bound operations
|
|
148
|
+
*/
|
|
149
|
+
export class StoredRecordingInstance {
|
|
150
|
+
name;
|
|
151
|
+
format = '';
|
|
152
|
+
client;
|
|
153
|
+
constructor(client, name, data) {
|
|
154
|
+
this.client = client;
|
|
155
|
+
this.name = name;
|
|
156
|
+
if (data) {
|
|
157
|
+
this.updateData(data);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Update recording data
|
|
162
|
+
*/
|
|
163
|
+
updateData(data) {
|
|
164
|
+
if (data.name !== undefined)
|
|
165
|
+
this.name = data.name;
|
|
166
|
+
if (data.format !== undefined)
|
|
167
|
+
this.format = data.format;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get the file for this recording
|
|
171
|
+
*/
|
|
172
|
+
async getFile() {
|
|
173
|
+
return this.client.recordings.stored.getFile(this.name);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Copy this recording
|
|
177
|
+
*/
|
|
178
|
+
async copy(destinationRecordingName) {
|
|
179
|
+
const result = await this.client.recordings.stored.copy(this.name, {
|
|
180
|
+
destinationRecordingName,
|
|
181
|
+
});
|
|
182
|
+
return new StoredRecordingInstance(this.client, result.name, result);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Delete this recording
|
|
186
|
+
*/
|
|
187
|
+
async delete() {
|
|
188
|
+
return this.client.recordings.stored.delete(this.name);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=recording.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording.js","sourceRoot":"","sources":["../../src/models/recording.ts"],"names":[],"mappings":"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"}
|
package/dist/pool.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection pool for high-throughput scenarios
|
|
3
|
+
*/
|
|
4
|
+
import { AriClient } from './client.js';
|
|
5
|
+
import type { PoolOptions } from './types/options.js';
|
|
6
|
+
/**
|
|
7
|
+
* Connection pool for distributing load across multiple ARI connections
|
|
8
|
+
*/
|
|
9
|
+
export declare class ConnectionPool {
|
|
10
|
+
private connections;
|
|
11
|
+
private currentIndex;
|
|
12
|
+
private readonly options;
|
|
13
|
+
private readonly poolSize;
|
|
14
|
+
private initialized;
|
|
15
|
+
constructor(options: PoolOptions);
|
|
16
|
+
/**
|
|
17
|
+
* Initialize the connection pool
|
|
18
|
+
*/
|
|
19
|
+
initialize(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Get a connection from the pool (round-robin)
|
|
22
|
+
*/
|
|
23
|
+
getConnection(): AriClient;
|
|
24
|
+
/**
|
|
25
|
+
* Get a connection that is currently connected
|
|
26
|
+
*/
|
|
27
|
+
getConnectedConnection(): AriClient | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Get all connections in the pool
|
|
30
|
+
*/
|
|
31
|
+
getConnections(): readonly AriClient[];
|
|
32
|
+
/**
|
|
33
|
+
* Get the number of connections in the pool
|
|
34
|
+
*/
|
|
35
|
+
get size(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Get the number of connected clients
|
|
38
|
+
*/
|
|
39
|
+
get connectedCount(): number;
|
|
40
|
+
/**
|
|
41
|
+
* Stop all connections in the pool
|
|
42
|
+
*/
|
|
43
|
+
stop(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Check if the pool is initialized
|
|
46
|
+
*/
|
|
47
|
+
isInitialized(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Execute a function with a pooled connection
|
|
50
|
+
*/
|
|
51
|
+
withConnection<T>(fn: (client: AriClient) => Promise<T>): Promise<T>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create and initialize a connection pool
|
|
55
|
+
*/
|
|
56
|
+
export declare function createPool(options: PoolOptions): Promise<ConnectionPool>;
|
|
57
|
+
//# sourceMappingURL=pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAW,SAAS,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,EAAE,WAAW;IAKhC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACH,aAAa,IAAI,SAAS;IAU1B;;OAEG;IACH,sBAAsB,IAAI,SAAS,GAAG,SAAS;IAmB/C;;OAEG;IACH,cAAc,IAAI,SAAS,SAAS,EAAE;IAItC;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACG,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAI3E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAI9E"}
|