@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.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +291 -0
  3. package/dist/client.d.ts +123 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +297 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/connection.d.ts +70 -0
  8. package/dist/connection.d.ts.map +1 -0
  9. package/dist/connection.js +157 -0
  10. package/dist/connection.js.map +1 -0
  11. package/dist/events/emitter.d.ts +82 -0
  12. package/dist/events/emitter.d.ts.map +1 -0
  13. package/dist/events/emitter.js +132 -0
  14. package/dist/events/emitter.js.map +1 -0
  15. package/dist/events/types.d.ts +283 -0
  16. package/dist/events/types.d.ts.map +1 -0
  17. package/dist/events/types.js +5 -0
  18. package/dist/events/types.js.map +1 -0
  19. package/dist/index.d.ts +27 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +34 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/models/bridge.d.ts +102 -0
  24. package/dist/models/bridge.d.ts.map +1 -0
  25. package/dist/models/bridge.js +186 -0
  26. package/dist/models/bridge.js.map +1 -0
  27. package/dist/models/channel.d.ts +166 -0
  28. package/dist/models/channel.d.ts.map +1 -0
  29. package/dist/models/channel.js +278 -0
  30. package/dist/models/channel.js.map +1 -0
  31. package/dist/models/index.d.ts +8 -0
  32. package/dist/models/index.d.ts.map +1 -0
  33. package/dist/models/index.js +8 -0
  34. package/dist/models/index.js.map +1 -0
  35. package/dist/models/playback.d.ts +82 -0
  36. package/dist/models/playback.d.ts.map +1 -0
  37. package/dist/models/playback.js +146 -0
  38. package/dist/models/playback.js.map +1 -0
  39. package/dist/models/recording.d.ts +104 -0
  40. package/dist/models/recording.d.ts.map +1 -0
  41. package/dist/models/recording.js +191 -0
  42. package/dist/models/recording.js.map +1 -0
  43. package/dist/pool.d.ts +57 -0
  44. package/dist/pool.d.ts.map +1 -0
  45. package/dist/pool.js +111 -0
  46. package/dist/pool.js.map +1 -0
  47. package/dist/queue.d.ts +85 -0
  48. package/dist/queue.d.ts.map +1 -0
  49. package/dist/queue.js +208 -0
  50. package/dist/queue.js.map +1 -0
  51. package/dist/resources/applications.d.ts +37 -0
  52. package/dist/resources/applications.d.ts.map +1 -0
  53. package/dist/resources/applications.js +45 -0
  54. package/dist/resources/applications.js.map +1 -0
  55. package/dist/resources/asterisk.d.ts +71 -0
  56. package/dist/resources/asterisk.d.ts.map +1 -0
  57. package/dist/resources/asterisk.js +94 -0
  58. package/dist/resources/asterisk.js.map +1 -0
  59. package/dist/resources/base.d.ts +18 -0
  60. package/dist/resources/base.d.ts.map +1 -0
  61. package/dist/resources/base.js +21 -0
  62. package/dist/resources/base.js.map +1 -0
  63. package/dist/resources/bridges.d.ts +66 -0
  64. package/dist/resources/bridges.d.ts.map +1 -0
  65. package/dist/resources/bridges.js +109 -0
  66. package/dist/resources/bridges.js.map +1 -0
  67. package/dist/resources/channels.d.ts +130 -0
  68. package/dist/resources/channels.d.ts.map +1 -0
  69. package/dist/resources/channels.js +228 -0
  70. package/dist/resources/channels.js.map +1 -0
  71. package/dist/resources/devicestates.d.ts +30 -0
  72. package/dist/resources/devicestates.d.ts.map +1 -0
  73. package/dist/resources/devicestates.js +37 -0
  74. package/dist/resources/devicestates.js.map +1 -0
  75. package/dist/resources/endpoints.d.ts +38 -0
  76. package/dist/resources/endpoints.d.ts.map +1 -0
  77. package/dist/resources/endpoints.js +61 -0
  78. package/dist/resources/endpoints.js.map +1 -0
  79. package/dist/resources/mailboxes.d.ts +30 -0
  80. package/dist/resources/mailboxes.d.ts.map +1 -0
  81. package/dist/resources/mailboxes.js +38 -0
  82. package/dist/resources/mailboxes.js.map +1 -0
  83. package/dist/resources/playbacks.d.ts +27 -0
  84. package/dist/resources/playbacks.d.ts.map +1 -0
  85. package/dist/resources/playbacks.js +31 -0
  86. package/dist/resources/playbacks.js.map +1 -0
  87. package/dist/resources/recordings.d.ts +76 -0
  88. package/dist/resources/recordings.d.ts.map +1 -0
  89. package/dist/resources/recordings.js +105 -0
  90. package/dist/resources/recordings.js.map +1 -0
  91. package/dist/resources/sounds.d.ts +22 -0
  92. package/dist/resources/sounds.d.ts.map +1 -0
  93. package/dist/resources/sounds.js +26 -0
  94. package/dist/resources/sounds.js.map +1 -0
  95. package/dist/types/api.d.ts +331 -0
  96. package/dist/types/api.d.ts.map +1 -0
  97. package/dist/types/api.js +5 -0
  98. package/dist/types/api.js.map +1 -0
  99. package/dist/types/options.d.ts +77 -0
  100. package/dist/types/options.d.ts.map +1 -0
  101. package/dist/types/options.js +23 -0
  102. package/dist/types/options.js.map +1 -0
  103. package/dist/version.d.ts +86 -0
  104. package/dist/version.d.ts.map +1 -0
  105. package/dist/version.js +122 -0
  106. package/dist/version.js.map +1 -0
  107. package/dist/websocket.d.ts +70 -0
  108. package/dist/websocket.d.ts.map +1 -0
  109. package/dist/websocket.js +195 -0
  110. package/dist/websocket.js.map +1 -0
  111. package/package.json +59 -0
package/dist/pool.js ADDED
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Connection pool for high-throughput scenarios
3
+ */
4
+ import { connect } from './client.js';
5
+ /**
6
+ * Connection pool for distributing load across multiple ARI connections
7
+ */
8
+ export class ConnectionPool {
9
+ connections = [];
10
+ currentIndex = 0;
11
+ options;
12
+ poolSize;
13
+ initialized = false;
14
+ constructor(options) {
15
+ this.options = options;
16
+ this.poolSize = options.poolSize ?? 5;
17
+ }
18
+ /**
19
+ * Initialize the connection pool
20
+ */
21
+ async initialize() {
22
+ if (this.initialized) {
23
+ return;
24
+ }
25
+ const connectionPromises = [];
26
+ for (let i = 0; i < this.poolSize; i++) {
27
+ connectionPromises.push(connect(this.options));
28
+ }
29
+ this.connections = await Promise.all(connectionPromises);
30
+ this.initialized = true;
31
+ }
32
+ /**
33
+ * Get a connection from the pool (round-robin)
34
+ */
35
+ getConnection() {
36
+ if (!this.initialized || this.connections.length === 0) {
37
+ throw new Error('Connection pool not initialized. Call initialize() first.');
38
+ }
39
+ const client = this.connections[this.currentIndex];
40
+ this.currentIndex = (this.currentIndex + 1) % this.connections.length;
41
+ return client;
42
+ }
43
+ /**
44
+ * Get a connection that is currently connected
45
+ */
46
+ getConnectedConnection() {
47
+ if (!this.initialized) {
48
+ return undefined;
49
+ }
50
+ // Try round-robin first
51
+ const startIndex = this.currentIndex;
52
+ do {
53
+ const client = this.connections[this.currentIndex];
54
+ this.currentIndex = (this.currentIndex + 1) % this.connections.length;
55
+ if (client.isConnected()) {
56
+ return client;
57
+ }
58
+ } while (this.currentIndex !== startIndex);
59
+ return undefined;
60
+ }
61
+ /**
62
+ * Get all connections in the pool
63
+ */
64
+ getConnections() {
65
+ return this.connections;
66
+ }
67
+ /**
68
+ * Get the number of connections in the pool
69
+ */
70
+ get size() {
71
+ return this.connections.length;
72
+ }
73
+ /**
74
+ * Get the number of connected clients
75
+ */
76
+ get connectedCount() {
77
+ return this.connections.filter(c => c.isConnected()).length;
78
+ }
79
+ /**
80
+ * Stop all connections in the pool
81
+ */
82
+ async stop() {
83
+ const stopPromises = this.connections.map(c => c.stop());
84
+ await Promise.all(stopPromises);
85
+ this.connections = [];
86
+ this.currentIndex = 0;
87
+ this.initialized = false;
88
+ }
89
+ /**
90
+ * Check if the pool is initialized
91
+ */
92
+ isInitialized() {
93
+ return this.initialized;
94
+ }
95
+ /**
96
+ * Execute a function with a pooled connection
97
+ */
98
+ async withConnection(fn) {
99
+ const client = this.getConnection();
100
+ return fn(client);
101
+ }
102
+ }
103
+ /**
104
+ * Create and initialize a connection pool
105
+ */
106
+ export async function createPool(options) {
107
+ const pool = new ConnectionPool(options);
108
+ await pool.initialize();
109
+ return pool;
110
+ }
111
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Request queue with retry and circuit breaker
3
+ */
4
+ import type { QueueOptions } from './types/options.js';
5
+ type CircuitState = 'closed' | 'open' | 'half-open';
6
+ /**
7
+ * Error thrown when circuit breaker is open
8
+ */
9
+ export declare class CircuitBreakerOpenError extends Error {
10
+ constructor();
11
+ }
12
+ /**
13
+ * Request queue with automatic retry and circuit breaker pattern
14
+ */
15
+ export declare class RequestQueue {
16
+ private queue;
17
+ private activeCount;
18
+ private failureCount;
19
+ private circuitState;
20
+ private circuitOpenTime;
21
+ private readonly maxConcurrent;
22
+ private readonly maxRetries;
23
+ private readonly retryDelay;
24
+ private readonly circuitBreakerThreshold;
25
+ private readonly circuitBreakerTimeout;
26
+ constructor(options?: QueueOptions);
27
+ /**
28
+ * Enqueue a request
29
+ */
30
+ enqueue<T>(request: () => Promise<T>): Promise<T>;
31
+ /**
32
+ * Process the queue
33
+ */
34
+ private processQueue;
35
+ /**
36
+ * Execute a single request with retry logic
37
+ */
38
+ private executeRequest;
39
+ /**
40
+ * Check if an error is retryable
41
+ */
42
+ private isRetryable;
43
+ /**
44
+ * Called on successful request
45
+ */
46
+ private onSuccess;
47
+ /**
48
+ * Called on failed request
49
+ */
50
+ private onFailure;
51
+ /**
52
+ * Update circuit breaker state based on timeout
53
+ */
54
+ private updateCircuitState;
55
+ /**
56
+ * Delay helper
57
+ */
58
+ private delay;
59
+ /**
60
+ * Get current queue length
61
+ */
62
+ get length(): number;
63
+ /**
64
+ * Get current active request count
65
+ */
66
+ get active(): number;
67
+ /**
68
+ * Get current circuit breaker state
69
+ */
70
+ get state(): CircuitState;
71
+ /**
72
+ * Get failure count
73
+ */
74
+ get failures(): number;
75
+ /**
76
+ * Reset the circuit breaker
77
+ */
78
+ reset(): void;
79
+ /**
80
+ * Clear the queue (reject all pending requests)
81
+ */
82
+ clear(): void;
83
+ }
84
+ export {};
85
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASvD,KAAK,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEpD;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;;CAKjD;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,eAAe,CAAK;IAE5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;gBAEnC,OAAO,GAAE,YAAiB;IAQtC;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBvD;;OAEG;YACW,YAAY;IAuB1B;;OAEG;YACW,cAAc;IA0B5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAyBnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,YAAY,CAGxB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
package/dist/queue.js ADDED
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Request queue with retry and circuit breaker
3
+ */
4
+ /**
5
+ * Error thrown when circuit breaker is open
6
+ */
7
+ export class CircuitBreakerOpenError extends Error {
8
+ constructor() {
9
+ super('Circuit breaker is open - requests are being rejected');
10
+ this.name = 'CircuitBreakerOpenError';
11
+ }
12
+ }
13
+ /**
14
+ * Request queue with automatic retry and circuit breaker pattern
15
+ */
16
+ export class RequestQueue {
17
+ queue = [];
18
+ activeCount = 0;
19
+ failureCount = 0;
20
+ circuitState = 'closed';
21
+ circuitOpenTime = 0;
22
+ maxConcurrent;
23
+ maxRetries;
24
+ retryDelay;
25
+ circuitBreakerThreshold;
26
+ circuitBreakerTimeout;
27
+ constructor(options = {}) {
28
+ this.maxConcurrent = options.maxConcurrent ?? 10;
29
+ this.maxRetries = options.maxRetries ?? 3;
30
+ this.retryDelay = options.retryDelay ?? 1000;
31
+ this.circuitBreakerThreshold = options.circuitBreakerThreshold ?? 5;
32
+ this.circuitBreakerTimeout = options.circuitBreakerTimeout ?? 30000;
33
+ }
34
+ /**
35
+ * Enqueue a request
36
+ */
37
+ async enqueue(request) {
38
+ // Check circuit breaker state
39
+ this.updateCircuitState();
40
+ if (this.circuitState === 'open') {
41
+ throw new CircuitBreakerOpenError();
42
+ }
43
+ return new Promise((resolve, reject) => {
44
+ this.queue.push({
45
+ request: request,
46
+ resolve: resolve,
47
+ reject,
48
+ retries: 0,
49
+ });
50
+ this.processQueue();
51
+ });
52
+ }
53
+ /**
54
+ * Process the queue
55
+ */
56
+ async processQueue() {
57
+ while (this.queue.length > 0 && this.activeCount < this.maxConcurrent) {
58
+ // Check circuit state before processing
59
+ this.updateCircuitState();
60
+ if (this.circuitState === 'open') {
61
+ // Reject all pending requests
62
+ while (this.queue.length > 0) {
63
+ const item = this.queue.shift();
64
+ item.reject(new CircuitBreakerOpenError());
65
+ }
66
+ return;
67
+ }
68
+ const item = this.queue.shift();
69
+ this.activeCount++;
70
+ this.executeRequest(item).finally(() => {
71
+ this.activeCount--;
72
+ this.processQueue();
73
+ });
74
+ }
75
+ }
76
+ /**
77
+ * Execute a single request with retry logic
78
+ */
79
+ async executeRequest(item) {
80
+ try {
81
+ const result = await item.request();
82
+ this.onSuccess();
83
+ item.resolve(result);
84
+ }
85
+ catch (error) {
86
+ if (item.retries < this.maxRetries && this.isRetryable(error)) {
87
+ item.retries++;
88
+ await this.delay(this.retryDelay * item.retries);
89
+ // Re-check circuit state before retry
90
+ this.updateCircuitState();
91
+ if (this.circuitState === 'open') {
92
+ item.reject(new CircuitBreakerOpenError());
93
+ return;
94
+ }
95
+ // Re-queue for retry
96
+ this.queue.unshift(item);
97
+ }
98
+ else {
99
+ this.onFailure();
100
+ item.reject(error instanceof Error ? error : new Error(String(error)));
101
+ }
102
+ }
103
+ }
104
+ /**
105
+ * Check if an error is retryable
106
+ */
107
+ isRetryable(error) {
108
+ if (error instanceof Error) {
109
+ // Retry on network errors and 5xx server errors
110
+ const message = error.message.toLowerCase();
111
+ if (message.includes('network') ||
112
+ message.includes('timeout') ||
113
+ message.includes('econnrefused') ||
114
+ message.includes('econnreset') ||
115
+ message.includes('socket')) {
116
+ return true;
117
+ }
118
+ // Check for HTTP status codes
119
+ const statusMatch = message.match(/(\d{3})/);
120
+ if (statusMatch) {
121
+ const status = parseInt(statusMatch[1], 10);
122
+ // Retry on 5xx errors and 429 (rate limited)
123
+ return status >= 500 || status === 429;
124
+ }
125
+ }
126
+ return false;
127
+ }
128
+ /**
129
+ * Called on successful request
130
+ */
131
+ onSuccess() {
132
+ this.failureCount = 0;
133
+ if (this.circuitState === 'half-open') {
134
+ this.circuitState = 'closed';
135
+ }
136
+ }
137
+ /**
138
+ * Called on failed request
139
+ */
140
+ onFailure() {
141
+ this.failureCount++;
142
+ if (this.failureCount >= this.circuitBreakerThreshold) {
143
+ this.circuitState = 'open';
144
+ this.circuitOpenTime = Date.now();
145
+ }
146
+ }
147
+ /**
148
+ * Update circuit breaker state based on timeout
149
+ */
150
+ updateCircuitState() {
151
+ if (this.circuitState === 'open') {
152
+ const elapsed = Date.now() - this.circuitOpenTime;
153
+ if (elapsed >= this.circuitBreakerTimeout) {
154
+ this.circuitState = 'half-open';
155
+ this.failureCount = 0;
156
+ }
157
+ }
158
+ }
159
+ /**
160
+ * Delay helper
161
+ */
162
+ delay(ms) {
163
+ return new Promise(resolve => setTimeout(resolve, ms));
164
+ }
165
+ /**
166
+ * Get current queue length
167
+ */
168
+ get length() {
169
+ return this.queue.length;
170
+ }
171
+ /**
172
+ * Get current active request count
173
+ */
174
+ get active() {
175
+ return this.activeCount;
176
+ }
177
+ /**
178
+ * Get current circuit breaker state
179
+ */
180
+ get state() {
181
+ this.updateCircuitState();
182
+ return this.circuitState;
183
+ }
184
+ /**
185
+ * Get failure count
186
+ */
187
+ get failures() {
188
+ return this.failureCount;
189
+ }
190
+ /**
191
+ * Reset the circuit breaker
192
+ */
193
+ reset() {
194
+ this.failureCount = 0;
195
+ this.circuitState = 'closed';
196
+ this.circuitOpenTime = 0;
197
+ }
198
+ /**
199
+ * Clear the queue (reject all pending requests)
200
+ */
201
+ clear() {
202
+ while (this.queue.length > 0) {
203
+ const item = this.queue.shift();
204
+ item.reject(new Error('Queue cleared'));
205
+ }
206
+ }
207
+ }
208
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Applications API resource
3
+ */
4
+ import { BaseResource } from './base.js';
5
+ import type { HttpConnection } from '../connection.js';
6
+ import type { VersionCompat } from '../version.js';
7
+ import type { Application } from '../types/api.js';
8
+ /**
9
+ * Applications API - Manage Stasis applications
10
+ */
11
+ export declare class ApplicationsResource extends BaseResource {
12
+ constructor(http: HttpConnection, version: VersionCompat);
13
+ /**
14
+ * List all applications
15
+ */
16
+ list(): Promise<Application[]>;
17
+ /**
18
+ * Get a specific application
19
+ */
20
+ get(applicationName: string): Promise<Application>;
21
+ /**
22
+ * Subscribe to events for specific resources
23
+ */
24
+ subscribe(applicationName: string, eventSource: string | string[]): Promise<Application>;
25
+ /**
26
+ * Unsubscribe from events for specific resources
27
+ */
28
+ unsubscribe(applicationName: string, eventSource: string | string[]): Promise<Application>;
29
+ /**
30
+ * Filter application events for a specific event type
31
+ */
32
+ filter(applicationName: string, filter?: {
33
+ allowed?: string[];
34
+ disallowed?: string[];
35
+ }): Promise<Application>;
36
+ }
37
+ //# sourceMappingURL=applications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../src/resources/applications.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;gBACxC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa;IAIxD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIpC;;OAEG;IACG,GAAG,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIxD;;OAEG;IACG,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAU9F;;OAEG;IACG,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAShG;;OAEG;IACG,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC;CAMpH"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Applications API resource
3
+ */
4
+ import { BaseResource } from './base.js';
5
+ /**
6
+ * Applications API - Manage Stasis applications
7
+ */
8
+ export class ApplicationsResource extends BaseResource {
9
+ constructor(http, version) {
10
+ super(http, version);
11
+ }
12
+ /**
13
+ * List all applications
14
+ */
15
+ async list() {
16
+ return this.http.get('/applications');
17
+ }
18
+ /**
19
+ * Get a specific application
20
+ */
21
+ async get(applicationName) {
22
+ return this.http.get(`/applications/${encodeURIComponent(applicationName)}`);
23
+ }
24
+ /**
25
+ * Subscribe to events for specific resources
26
+ */
27
+ async subscribe(applicationName, eventSource) {
28
+ const sources = Array.isArray(eventSource) ? eventSource : [eventSource];
29
+ return this.http.post(`/applications/${encodeURIComponent(applicationName)}/subscription`, undefined, { eventSource: sources });
30
+ }
31
+ /**
32
+ * Unsubscribe from events for specific resources
33
+ */
34
+ async unsubscribe(applicationName, eventSource) {
35
+ const sources = Array.isArray(eventSource) ? eventSource : [eventSource];
36
+ return this.http.delete(`/applications/${encodeURIComponent(applicationName)}/subscription`, { eventSource: sources });
37
+ }
38
+ /**
39
+ * Filter application events for a specific event type
40
+ */
41
+ async filter(applicationName, filter) {
42
+ return this.http.put(`/applications/${encodeURIComponent(applicationName)}/eventFilter`, filter);
43
+ }
44
+ }
45
+ //# sourceMappingURL=applications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applications.js","sourceRoot":"","sources":["../../src/resources/applications.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAKzC;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IACpD,YAAY,IAAoB,EAAE,OAAsB;QACtD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgB,eAAe,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,eAAuB;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,iBAAiB,kBAAkB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,eAAuB,EAAE,WAA8B;QACrE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAEzE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,iBAAiB,kBAAkB,CAAC,eAAe,CAAC,eAAe,EACnE,SAAS,EACT,EAAE,WAAW,EAAE,OAAO,EAAE,CACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,eAAuB,EAAE,WAA8B;QACvE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAEzE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,iBAAiB,kBAAkB,CAAC,eAAe,CAAC,eAAe,EACnE,EAAE,WAAW,EAAE,OAAO,EAAE,CACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,eAAuB,EAAE,MAAsD;QAC1F,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,iBAAiB,kBAAkB,CAAC,eAAe,CAAC,cAAc,EAClE,MAAM,CACP,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Asterisk system API resource
3
+ */
4
+ import { BaseResource } from './base.js';
5
+ import type { HttpConnection } from '../connection.js';
6
+ import type { VersionCompat } from '../version.js';
7
+ import type { AsteriskInfo, Module, LogChannel } from '../types/api.js';
8
+ export type AsteriskInfoFilter = 'build' | 'system' | 'config' | 'status';
9
+ /**
10
+ * Asterisk API - Manage Asterisk system resources
11
+ */
12
+ export declare class AsteriskResource extends BaseResource {
13
+ constructor(http: HttpConnection, version: VersionCompat);
14
+ /**
15
+ * Get Asterisk system information
16
+ */
17
+ getInfo(only?: AsteriskInfoFilter[]): Promise<AsteriskInfo>;
18
+ /**
19
+ * List Asterisk modules
20
+ */
21
+ listModules(): Promise<Module[]>;
22
+ /**
23
+ * Get a specific Asterisk module
24
+ */
25
+ getModule(moduleName: string): Promise<Module>;
26
+ /**
27
+ * Load an Asterisk module
28
+ */
29
+ loadModule(moduleName: string): Promise<void>;
30
+ /**
31
+ * Unload an Asterisk module
32
+ */
33
+ unloadModule(moduleName: string): Promise<void>;
34
+ /**
35
+ * Reload an Asterisk module
36
+ */
37
+ reloadModule(moduleName: string): Promise<void>;
38
+ /**
39
+ * List logging channels
40
+ */
41
+ listLogChannels(): Promise<LogChannel[]>;
42
+ /**
43
+ * Add a logging channel
44
+ */
45
+ addLogChannel(logChannelName: string, configuration: string): Promise<void>;
46
+ /**
47
+ * Delete a logging channel
48
+ */
49
+ deleteLogChannel(logChannelName: string): Promise<void>;
50
+ /**
51
+ * Rotate a log channel
52
+ */
53
+ rotateLogChannel(logChannelName: string): Promise<void>;
54
+ /**
55
+ * Get a global variable
56
+ */
57
+ getGlobalVariable(variable: string): Promise<string>;
58
+ /**
59
+ * Set a global variable
60
+ */
61
+ setGlobalVariable(variable: string, value?: string): Promise<void>;
62
+ /**
63
+ * Ping Asterisk
64
+ */
65
+ ping(): Promise<{
66
+ ping: string;
67
+ timestamp: string;
68
+ asterisk_id: string;
69
+ }>;
70
+ }
71
+ //# sourceMappingURL=asterisk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asterisk.d.ts","sourceRoot":"","sources":["../../src/resources/asterisk.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElF,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1E;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;gBACpC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa;IAIxD;;OAEG;IACG,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAMjE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAItC;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpD;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAI9C;;OAEG;IACG,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjF;;OAEG;IACG,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;OAEG;IACG,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAGhF"}