@per_moeller/asterisk-ari 1.0.3 → 1.0.5

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 (52) hide show
  1. package/dist/client.d.ts +360 -22
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +374 -29
  4. package/dist/client.js.map +1 -1
  5. package/dist/connection.d.ts +132 -12
  6. package/dist/connection.d.ts.map +1 -1
  7. package/dist/connection.js +121 -10
  8. package/dist/connection.js.map +1 -1
  9. package/dist/events/emitter.d.ts +213 -21
  10. package/dist/events/emitter.d.ts.map +1 -1
  11. package/dist/events/emitter.js +163 -17
  12. package/dist/events/emitter.js.map +1 -1
  13. package/dist/events/types.d.ts +386 -3
  14. package/dist/events/types.d.ts.map +1 -1
  15. package/dist/events/types.js +5 -0
  16. package/dist/events/types.js.map +1 -1
  17. package/dist/index.d.ts +2 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/models/bridge.d.ts +26 -3
  21. package/dist/models/bridge.d.ts.map +1 -1
  22. package/dist/models/bridge.js.map +1 -1
  23. package/dist/models/channel.d.ts +364 -35
  24. package/dist/models/channel.d.ts.map +1 -1
  25. package/dist/models/channel.js +348 -34
  26. package/dist/models/channel.js.map +1 -1
  27. package/dist/models/index.d.ts +4 -0
  28. package/dist/models/index.d.ts.map +1 -1
  29. package/dist/models/index.js.map +1 -1
  30. package/dist/models/playback.d.ts +23 -3
  31. package/dist/models/playback.d.ts.map +1 -1
  32. package/dist/models/playback.js.map +1 -1
  33. package/dist/models/recording.d.ts +23 -3
  34. package/dist/models/recording.d.ts.map +1 -1
  35. package/dist/models/recording.js.map +1 -1
  36. package/dist/pool.d.ts +152 -11
  37. package/dist/pool.d.ts.map +1 -1
  38. package/dist/pool.js +152 -11
  39. package/dist/pool.js.map +1 -1
  40. package/dist/queue.d.ts +130 -16
  41. package/dist/queue.d.ts.map +1 -1
  42. package/dist/queue.js +123 -16
  43. package/dist/queue.js.map +1 -1
  44. package/dist/types/api.d.ts +655 -1
  45. package/dist/types/api.d.ts.map +1 -1
  46. package/dist/types/api.js +5 -0
  47. package/dist/types/api.js.map +1 -1
  48. package/dist/version.d.ts +163 -26
  49. package/dist/version.d.ts.map +1 -1
  50. package/dist/version.js +143 -22
  51. package/dist/version.js.map +1 -1
  52. package/package.json +1 -1
package/dist/client.js CHANGED
@@ -1,5 +1,28 @@
1
1
  /**
2
2
  * ARI Client - Main entry point for Asterisk REST Interface
3
+ *
4
+ * This module provides the main `AriClient` class and `connect()` function
5
+ * for establishing connections to Asterisk ARI.
6
+ *
7
+ * @packageDocumentation
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { connect } from '@per_moeller/asterisk-ari';
12
+ *
13
+ * const client = await connect({
14
+ * url: 'http://localhost:8088',
15
+ * username: 'asterisk',
16
+ * password: 'secret',
17
+ * app: 'my-app'
18
+ * });
19
+ *
20
+ * client.on('StasisStart', async (event, channel) => {
21
+ * console.log(`Incoming call from ${channel.caller.number}`);
22
+ * await channel.answer();
23
+ * await channel.play({ media: 'sound:hello-world' });
24
+ * });
25
+ * ```
3
26
  */
4
27
  import { HttpConnection } from './connection.js';
5
28
  import { WebSocketManager } from './websocket.js';
@@ -23,7 +46,34 @@ import { BridgeInstance } from './models/bridge.js';
23
46
  import { PlaybackInstance } from './models/playback.js';
24
47
  import { LiveRecordingInstance, StoredRecordingInstance } from './models/recording.js';
25
48
  /**
26
- * ARI Client for interacting with Asterisk
49
+ * Main ARI Client for interacting with Asterisk.
50
+ *
51
+ * The client provides access to all ARI resources (channels, bridges, etc.)
52
+ * and handles WebSocket events from Asterisk. It extends `AriEventEmitter`
53
+ * for type-safe event handling.
54
+ *
55
+ * @remarks
56
+ * Don't instantiate this class directly. Use the {@link connect} function instead.
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const client = await connect({ ... });
61
+ *
62
+ * // Access API resources
63
+ * const channels = await client.channels.list();
64
+ * const bridge = await client.bridges.create({ type: 'mixing' });
65
+ *
66
+ * // Listen to events
67
+ * client.on('StasisStart', (event, channel) => {
68
+ * // Handle incoming calls
69
+ * });
70
+ *
71
+ * // Create model instances for event-based programming
72
+ * const myChannel = client.Channel('channel-id');
73
+ * myChannel.on('ChannelDtmfReceived', (event) => {
74
+ * console.log(`DTMF: ${event.digit}`);
75
+ * });
76
+ * ```
27
77
  */
28
78
  export class AriClient extends AriEventEmitter {
29
79
  options;
@@ -35,19 +85,157 @@ export class AriClient extends AriEventEmitter {
35
85
  bridgeInstances = new Map();
36
86
  playbackInstances = new Map();
37
87
  recordingInstances = new Map();
88
+ // ============================================================================
38
89
  // API Resources
90
+ // ============================================================================
91
+ /**
92
+ * Channels API for managing calls and channels.
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * // List all channels
97
+ * const channels = await client.channels.list();
98
+ *
99
+ * // Originate a call
100
+ * const channel = await client.channels.originate({
101
+ * endpoint: 'PJSIP/1000',
102
+ * app: 'my-app'
103
+ * });
104
+ *
105
+ * // Answer a channel
106
+ * await client.channels.answer(channelId);
107
+ * ```
108
+ */
39
109
  channels;
110
+ /**
111
+ * Bridges API for managing bridges (conferences, etc.).
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * // Create a mixing bridge
116
+ * const bridge = await client.bridges.create({ type: 'mixing' });
117
+ *
118
+ * // Add channels to bridge
119
+ * await client.bridges.addChannel(bridge.id, { channel: [channel1, channel2] });
120
+ * ```
121
+ */
40
122
  bridges;
123
+ /**
124
+ * Endpoints API for managing endpoints.
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * // List all endpoints
129
+ * const endpoints = await client.endpoints.list();
130
+ *
131
+ * // Get PJSIP endpoints
132
+ * const pjsipEndpoints = await client.endpoints.listByTech('PJSIP');
133
+ * ```
134
+ */
41
135
  endpoints;
136
+ /**
137
+ * Applications API for managing Stasis applications.
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * // Get application details
142
+ * const app = await client.applications.get('my-app');
143
+ *
144
+ * // Subscribe to events
145
+ * await client.applications.subscribe('my-app', { eventSource: 'channel:123' });
146
+ * ```
147
+ */
42
148
  applications;
149
+ /**
150
+ * Asterisk API for system information and management.
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * // Get Asterisk info
155
+ * const info = await client.asterisk.getInfo();
156
+ * console.log(info.system?.version);
157
+ *
158
+ * // Get a global variable
159
+ * const value = await client.asterisk.getVariable('GLOBALVAR');
160
+ * ```
161
+ */
43
162
  asterisk;
163
+ /**
164
+ * Playbacks API for controlling media playback.
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * // Control a playback
169
+ * await client.playbacks.control(playbackId, 'pause');
170
+ * await client.playbacks.control(playbackId, 'unpause');
171
+ * await client.playbacks.stop(playbackId);
172
+ * ```
173
+ */
44
174
  playbacks;
175
+ /**
176
+ * Recordings API for managing live and stored recordings.
177
+ *
178
+ * @example
179
+ * ```typescript
180
+ * // List stored recordings
181
+ * const recordings = await client.recordings.listStored();
182
+ *
183
+ * // Get a stored recording
184
+ * const recording = await client.recordings.getStored('my-recording');
185
+ * ```
186
+ */
45
187
  recordings;
188
+ /**
189
+ * Sounds API for listing available sound files.
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * // List all sounds
194
+ * const sounds = await client.sounds.list();
195
+ *
196
+ * // Get sounds for a specific language
197
+ * const englishSounds = await client.sounds.list({ lang: 'en' });
198
+ * ```
199
+ */
46
200
  sounds;
201
+ /**
202
+ * Mailboxes API for managing voicemail mailboxes.
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * // List mailboxes
207
+ * const mailboxes = await client.mailboxes.list();
208
+ *
209
+ * // Update message counts
210
+ * await client.mailboxes.update('1000@default', {
211
+ * oldMessages: 5,
212
+ * newMessages: 2
213
+ * });
214
+ * ```
215
+ */
47
216
  mailboxes;
217
+ /**
218
+ * Device States API for managing custom device states.
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * // Set a device state
223
+ * await client.deviceStates.update('Stasis:mydevice', 'INUSE');
224
+ *
225
+ * // Get a device state
226
+ * const state = await client.deviceStates.get('Stasis:mydevice');
227
+ * ```
228
+ */
48
229
  deviceStates;
49
230
  /**
50
- * @internal - Use connect() function instead
231
+ * Creates a new ARI client.
232
+ *
233
+ * @internal - Use the {@link connect} function instead of instantiating directly.
234
+ *
235
+ * @param options - Resolved connection options
236
+ * @param http - HTTP connection instance
237
+ * @param ws - WebSocket manager instance
238
+ * @param versionCompat - Version compatibility checker
51
239
  */
52
240
  constructor(options, http, ws, versionCompat) {
53
241
  super();
@@ -71,6 +259,7 @@ export class AriClient extends AriEventEmitter {
71
259
  }
72
260
  /**
73
261
  * Set up WebSocket event handlers
262
+ * @internal
74
263
  */
75
264
  setupWebSocketEvents() {
76
265
  this.ws.on('message', (data) => {
@@ -89,6 +278,7 @@ export class AriClient extends AriEventEmitter {
89
278
  }
90
279
  /**
91
280
  * Handle an incoming ARI event
281
+ * @internal
92
282
  */
93
283
  handleEvent(event) {
94
284
  // Emit to global listeners with convenience argument (ari-client compatibility)
@@ -98,32 +288,40 @@ export class AriClient extends AriEventEmitter {
98
288
  this.routeEventToInstances(event);
99
289
  }
100
290
  /**
101
- * Extract convenience argument from event for ari-client style callbacks
291
+ * Extract convenience instance argument from event for ari-client style callbacks.
292
+ * Returns instance types (ChannelInstance, BridgeInstance, etc.) with methods.
293
+ * @internal
102
294
  */
103
295
  getConvenienceArg(event) {
104
296
  if ('channel' in event && event.channel) {
105
- return event.channel;
297
+ // Return a ChannelInstance with the channel data
298
+ return this.Channel(event.channel.id, event.channel);
106
299
  }
107
300
  if ('bridge' in event && event.bridge) {
108
- return event.bridge;
301
+ // Return a BridgeInstance with the bridge data
302
+ return this.Bridge(event.bridge.id, event.bridge);
109
303
  }
110
304
  if ('playback' in event && event.playback) {
111
- return event.playback;
305
+ // Return a PlaybackInstance with the playback data
306
+ return this.Playback(event.playback.id, event.playback);
112
307
  }
113
308
  if ('recording' in event && event.recording) {
114
- return event.recording;
309
+ // Return a LiveRecordingInstance with the recording data
310
+ return this.LiveRecording(event.recording.name, event.recording);
115
311
  }
116
312
  if ('endpoint' in event && event.endpoint) {
313
+ // Endpoints don't have an instance class yet, return raw data
117
314
  return event.endpoint;
118
315
  }
119
- // Special case for Dial event - return peer channel
316
+ // Special case for Dial event - return peer channel as instance
120
317
  if (event.type === 'Dial' && 'peer' in event) {
121
- return event.peer;
318
+ return this.Channel(event.peer.id, event.peer);
122
319
  }
123
320
  return undefined;
124
321
  }
125
322
  /**
126
323
  * Route event to appropriate instance listeners
324
+ * @internal
127
325
  */
128
326
  routeEventToInstances(event) {
129
327
  // Channel events
@@ -164,10 +362,31 @@ export class AriClient extends AriEventEmitter {
164
362
  }
165
363
  }
166
364
  // ============================================================================
167
- // Instance Factory Methods (like ari-client)
365
+ // Instance Factory Methods
168
366
  // ============================================================================
169
367
  /**
170
- * Create a Channel instance
368
+ * Create or retrieve a Channel instance.
369
+ *
370
+ * Channel instances provide event-based programming for individual channels.
371
+ * Events are automatically routed to the appropriate instance based on channel ID.
372
+ *
373
+ * @param id - Channel ID (auto-generated if not provided)
374
+ * @param data - Initial channel data
375
+ * @returns Channel instance for event handling and operations
376
+ *
377
+ * @example
378
+ * ```typescript
379
+ * // Create a channel instance from an event
380
+ * client.on('StasisStart', (event, channelData) => {
381
+ * const channel = client.Channel(channelData.id, channelData);
382
+ *
383
+ * channel.on('ChannelDtmfReceived', (event) => {
384
+ * console.log(`DTMF: ${event.digit}`);
385
+ * });
386
+ *
387
+ * await channel.answer();
388
+ * });
389
+ * ```
171
390
  */
172
391
  Channel(id, data) {
173
392
  const existingId = id || data?.id;
@@ -182,7 +401,23 @@ export class AriClient extends AriEventEmitter {
182
401
  return new ChannelInstance(this, id, data);
183
402
  }
184
403
  /**
185
- * Create a Bridge instance
404
+ * Create or retrieve a Bridge instance.
405
+ *
406
+ * Bridge instances provide event-based programming for bridges.
407
+ *
408
+ * @param id - Bridge ID (auto-generated if not provided)
409
+ * @param data - Initial bridge data
410
+ * @returns Bridge instance for event handling and operations
411
+ *
412
+ * @example
413
+ * ```typescript
414
+ * const bridge = client.Bridge();
415
+ * await bridge.create({ type: 'mixing' });
416
+ *
417
+ * bridge.on('ChannelEnteredBridge', (event) => {
418
+ * console.log(`${event.channel.name} joined the bridge`);
419
+ * });
420
+ * ```
186
421
  */
187
422
  Bridge(id, data) {
188
423
  const existingId = id || data?.id;
@@ -197,7 +432,24 @@ export class AriClient extends AriEventEmitter {
197
432
  return new BridgeInstance(this, id, data);
198
433
  }
199
434
  /**
200
- * Create a Playback instance
435
+ * Create or retrieve a Playback instance.
436
+ *
437
+ * Playback instances provide event-based programming for media playback.
438
+ *
439
+ * @param id - Playback ID (auto-generated if not provided)
440
+ * @param data - Initial playback data
441
+ * @returns Playback instance for event handling and operations
442
+ *
443
+ * @example
444
+ * ```typescript
445
+ * const playback = client.Playback();
446
+ *
447
+ * playback.on('PlaybackFinished', (event) => {
448
+ * console.log('Playback completed');
449
+ * });
450
+ *
451
+ * await channel.play({ media: 'sound:hello', playbackId: playback.id });
452
+ * ```
201
453
  */
202
454
  Playback(id, data) {
203
455
  const existingId = id || data?.id;
@@ -212,7 +464,24 @@ export class AriClient extends AriEventEmitter {
212
464
  return new PlaybackInstance(this, id, data);
213
465
  }
214
466
  /**
215
- * Create a LiveRecording instance
467
+ * Create or retrieve a LiveRecording instance.
468
+ *
469
+ * LiveRecording instances provide event-based programming for active recordings.
470
+ *
471
+ * @param name - Recording name
472
+ * @param data - Initial recording data
473
+ * @returns LiveRecording instance for event handling and operations
474
+ *
475
+ * @example
476
+ * ```typescript
477
+ * const recording = client.LiveRecording('my-recording');
478
+ *
479
+ * recording.on('RecordingFinished', (event) => {
480
+ * console.log(`Recording saved: ${event.recording.name}`);
481
+ * });
482
+ *
483
+ * await channel.record({ name: 'my-recording', format: 'wav' });
484
+ * ```
216
485
  */
217
486
  LiveRecording(name, data) {
218
487
  const existing = this.recordingInstances.get(name);
@@ -224,7 +493,25 @@ export class AriClient extends AriEventEmitter {
224
493
  return new LiveRecordingInstance(this, name, data);
225
494
  }
226
495
  /**
227
- * Create a StoredRecording instance (no events, just convenience methods)
496
+ * Create a StoredRecording instance.
497
+ *
498
+ * StoredRecording instances provide convenience methods for working with
499
+ * recordings that are already saved to disk. Unlike LiveRecording, these
500
+ * don't receive events.
501
+ *
502
+ * @param name - Recording name
503
+ * @returns StoredRecording instance for operations
504
+ *
505
+ * @example
506
+ * ```typescript
507
+ * const stored = client.StoredRecording('my-recording');
508
+ *
509
+ * // Copy the recording
510
+ * await stored.copy('my-recording-backup');
511
+ *
512
+ * // Delete the recording
513
+ * await stored.delete();
514
+ * ```
228
515
  */
229
516
  StoredRecording(name) {
230
517
  return new StoredRecordingInstance(this, name);
@@ -232,35 +519,35 @@ export class AriClient extends AriEventEmitter {
232
519
  // ============================================================================
233
520
  // Instance Registration (internal use by model instances)
234
521
  // ============================================================================
235
- /** @internal */
522
+ /** @internal Register a channel instance for event routing */
236
523
  _registerChannelInstance(id, instance) {
237
524
  this.channelInstances.set(id, instance);
238
525
  }
239
- /** @internal */
526
+ /** @internal Unregister a channel instance */
240
527
  _unregisterChannelInstance(id) {
241
528
  this.channelInstances.delete(id);
242
529
  }
243
- /** @internal */
530
+ /** @internal Register a bridge instance for event routing */
244
531
  _registerBridgeInstance(id, instance) {
245
532
  this.bridgeInstances.set(id, instance);
246
533
  }
247
- /** @internal */
534
+ /** @internal Unregister a bridge instance */
248
535
  _unregisterBridgeInstance(id) {
249
536
  this.bridgeInstances.delete(id);
250
537
  }
251
- /** @internal */
538
+ /** @internal Register a playback instance for event routing */
252
539
  _registerPlaybackInstance(id, instance) {
253
540
  this.playbackInstances.set(id, instance);
254
541
  }
255
- /** @internal */
542
+ /** @internal Unregister a playback instance */
256
543
  _unregisterPlaybackInstance(id) {
257
544
  this.playbackInstances.delete(id);
258
545
  }
259
- /** @internal */
546
+ /** @internal Register a recording instance for event routing */
260
547
  _registerRecordingInstance(name, instance) {
261
548
  this.recordingInstances.set(name, instance);
262
549
  }
263
- /** @internal */
550
+ /** @internal Unregister a recording instance */
264
551
  _unregisterRecordingInstance(name) {
265
552
  this.recordingInstances.delete(name);
266
553
  }
@@ -268,19 +555,45 @@ export class AriClient extends AriEventEmitter {
268
555
  // Connection State
269
556
  // ============================================================================
270
557
  /**
271
- * Get the detected ARI/Asterisk version
558
+ * Get the detected ARI/Asterisk version compatibility checker.
559
+ *
560
+ * @returns Version compatibility object with feature flags
561
+ *
562
+ * @example
563
+ * ```typescript
564
+ * console.log(client.version.toString());
565
+ * // "Asterisk 20 (ARI 8.0.0)"
566
+ *
567
+ * if (client.version.hasExternalMedia) {
568
+ * // Use external media feature
569
+ * }
570
+ * ```
272
571
  */
273
572
  get version() {
274
573
  return this.versionCompat;
275
574
  }
276
575
  /**
277
- * Check if WebSocket is connected
576
+ * Check if the WebSocket connection is active.
577
+ *
578
+ * @returns `true` if connected, `false` otherwise
278
579
  */
279
580
  isConnected() {
280
581
  return this.ws.isConnected();
281
582
  }
282
583
  /**
283
- * Stop the client and disconnect
584
+ * Stop the client and disconnect from Asterisk.
585
+ *
586
+ * This closes the WebSocket connection and clears all instance registries.
587
+ * The client cannot be reused after calling stop().
588
+ *
589
+ * @example
590
+ * ```typescript
591
+ * // Graceful shutdown
592
+ * process.on('SIGTERM', () => {
593
+ * client.stop();
594
+ * process.exit(0);
595
+ * });
596
+ * ```
284
597
  */
285
598
  stop() {
286
599
  this.ws.disconnect();
@@ -290,21 +603,53 @@ export class AriClient extends AriEventEmitter {
290
603
  this.recordingInstances.clear();
291
604
  }
292
605
  /**
293
- * Reconnect the WebSocket
606
+ * Reconnect the WebSocket connection.
607
+ *
608
+ * Disconnects and then reconnects to Asterisk. Instance registries
609
+ * are preserved, so events will continue routing correctly.
610
+ *
611
+ * @returns Promise that resolves when reconnected
294
612
  */
295
613
  async reconnect() {
296
614
  this.ws.disconnect();
297
615
  await this.ws.connect();
298
616
  }
299
617
  /**
300
- * Get the application name
618
+ * Get the Stasis application name.
619
+ *
620
+ * @returns Application name used for this connection
301
621
  */
302
622
  get app() {
303
623
  return this.options.app;
304
624
  }
305
625
  }
306
626
  /**
307
- * Connect to Asterisk ARI
627
+ * Connect to Asterisk ARI and create a client.
628
+ *
629
+ * This is the main entry point for establishing an ARI connection.
630
+ * It performs version detection and sets up the WebSocket connection.
631
+ *
632
+ * @param options - Connection options
633
+ * @returns Promise that resolves to an ARI client
634
+ * @throws {AriHttpError} If connection fails or authentication is invalid
635
+ *
636
+ * @example
637
+ * ```typescript
638
+ * import { connect } from '@per_moeller/asterisk-ari';
639
+ *
640
+ * const client = await connect({
641
+ * url: 'http://localhost:8088',
642
+ * username: 'asterisk',
643
+ * password: 'secret',
644
+ * app: 'my-app'
645
+ * });
646
+ *
647
+ * console.log(`Connected to ${client.version}`);
648
+ *
649
+ * client.on('StasisStart', async (event, channel) => {
650
+ * await channel.answer();
651
+ * });
652
+ * ```
308
653
  */
309
654
  export async function connect(options) {
310
655
  const resolved = resolveOptions(options);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,YAAY;AACZ,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,SAAS;AACT,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAMvF;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,eAAe;IAC3B,OAAO,CAAkB;IACzB,IAAI,CAAiB;IACrB,EAAE,CAAmB;IACrB,aAAa,CAAgB;IAE9C,wCAAwC;IACvB,gBAAgB,GAAiC,IAAI,GAAG,EAAE,CAAC;IAC3D,eAAe,GAAgC,IAAI,GAAG,EAAE,CAAC;IACzD,iBAAiB,GAAkC,IAAI,GAAG,EAAE,CAAC;IAC7D,kBAAkB,GAAuC,IAAI,GAAG,EAAE,CAAC;IAEpF,gBAAgB;IACA,QAAQ,CAAmB;IAC3B,OAAO,CAAkB;IACzB,SAAS,CAAoB;IAC7B,YAAY,CAAuB;IACnC,QAAQ,CAAmB;IAC3B,SAAS,CAAoB;IAC7B,UAAU,CAAqB;IAC/B,MAAM,CAAiB;IACvB,SAAS,CAAoB;IAC7B,YAAY,CAAuB;IAEnD;;OAEG;IACH,YACE,OAAwB,EACxB,IAAoB,EACpB,EAAoB,EACpB,aAA4B;QAE5B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,2BAA2B;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAElE,kCAAkC;QAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAgB,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;YAClC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,OAAO,WAAW,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAe;QACjC,gFAAgF;QAChF,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAoB,EAAE,KAAkC,EAAE,cAAc,CAAC,CAAC;QAE1F,kDAAkD;QAClD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,KAAe;QACvC,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;QACD,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QACD,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QACD,IAAI,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC,SAAS,CAAC;QACzB,CAAC;QACD,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QACD,oDAAoD;QACpD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,KAAe;QAC3C,iBAAiB;QACjB,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAA4C,EAAE,KAAc,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAA4C,EAAE,KAAc,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACpC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAA4C,EAAE,KAAc,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAC5C,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACrC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAA4C,EAAE,KAAc,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,6CAA6C;IAC7C,+EAA+E;IAE/E;;OAEG;IACH,OAAO,CAAC,EAAW,EAAE,IAAuB;QAC1C,MAAM,UAAU,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,IAAI;oBAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpC,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,EAAW,EAAE,IAAsB;QACxC,MAAM,UAAU,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,IAAI;oBAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpC,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,EAAW,EAAE,IAAwB;QAC5C,MAAM,UAAU,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,IAAI;oBAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpC,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,IAAY,EAAE,IAA6B;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,IAAI;gBAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAAY;QAC1B,OAAO,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,+EAA+E;IAC/E,0DAA0D;IAC1D,+EAA+E;IAE/E,gBAAgB;IAChB,wBAAwB,CAAC,EAAU,EAAE,QAAyB;QAC5D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,gBAAgB;IAChB,0BAA0B,CAAC,EAAU;QACnC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,gBAAgB;IAChB,uBAAuB,CAAC,EAAU,EAAE,QAAwB;QAC1D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;IAChB,yBAAyB,CAAC,EAAU;QAClC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB;IAChB,yBAAyB,CAAC,EAAU,EAAE,QAA0B;QAC9D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB;IAChB,2BAA2B,CAAC,EAAU;QACpC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,gBAAgB;IAChB,0BAA0B,CAAC,IAAY,EAAE,QAA+B;QACtE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,gBAAgB;IAChB,4BAA4B,CAAC,IAAY;QACvC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,+EAA+E;IAC/E,mBAAmB;IACnB,+EAA+E;IAE/E;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACrB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAuB;IACnD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEzC,yBAAyB;IACzB,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE1C,8BAA8B;IAC9B,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAEpD,OAAO,CAAC,GAAG,CAAC,iBAAiB,aAAa,EAAE,CAAC,CAAC;IAE9C,+BAA+B;IAC/B,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IAEnB,2BAA2B;IAC3B,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}