@ipcom/asterisk-ari 0.0.50 → 0.0.52

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.
@@ -596,9 +596,11 @@ module.exports = __toCommonJS(src_exports);
596
596
  var import_exponential_backoff = __toESM(require_backoff(), 1);
597
597
 
598
598
  // src/ari-client/baseClient.ts
599
+ var import_events = require("events");
599
600
  var import_axios = __toESM(require("axios"), 1);
600
601
  var BaseClient = class {
601
602
  client;
603
+ eventEmitter = new import_events.EventEmitter();
602
604
  constructor(baseUrl, username, password) {
603
605
  this.client = import_axios.default.create({
604
606
  baseURL: baseUrl,
@@ -639,6 +641,18 @@ var BaseClient = class {
639
641
  const response = await this.client.delete(path);
640
642
  return response.data;
641
643
  }
644
+ /**
645
+ * Escuta eventos do WebSocket.
646
+ */
647
+ onWebSocketEvent(callback) {
648
+ this.eventEmitter.on("websocketEvent", callback);
649
+ }
650
+ /**
651
+ * Emite eventos do WebSocket.
652
+ */
653
+ emitWebSocketEvent(event) {
654
+ this.eventEmitter.emit("websocketEvent", event);
655
+ }
642
656
  };
643
657
 
644
658
  // src/ari-client/resources/applications.ts
@@ -857,7 +871,7 @@ var Bridges = class {
857
871
  };
858
872
 
859
873
  // src/ari-client/resources/channels.ts
860
- var import_events = require("events");
874
+ var import_events2 = require("events");
861
875
 
862
876
  // src/ari-client/utils.ts
863
877
  function toQueryParams2(options) {
@@ -887,7 +901,7 @@ var channelEvents = [
887
901
  ];
888
902
 
889
903
  // src/ari-client/resources/channels.ts
890
- var ChannelInstance = class extends import_events.EventEmitter {
904
+ var ChannelInstance = class extends import_events2.EventEmitter {
891
905
  constructor(client, baseClient, channelId = `channel-${Date.now()}`) {
892
906
  super();
893
907
  this.client = client;
@@ -1086,7 +1100,7 @@ var ChannelInstance = class extends import_events.EventEmitter {
1086
1100
  await this.baseClient.delete(`/channels/${this.channelData.id}/hold`);
1087
1101
  }
1088
1102
  };
1089
- var Channels = class extends import_events.EventEmitter {
1103
+ var Channels = class extends import_events2.EventEmitter {
1090
1104
  constructor(baseClient, client) {
1091
1105
  super();
1092
1106
  this.baseClient = baseClient;
@@ -1302,17 +1316,28 @@ var Endpoints = class {
1302
1316
  };
1303
1317
 
1304
1318
  // src/ari-client/resources/playbacks.ts
1305
- var import_events2 = require("events");
1306
- var PlaybackInstance = class extends import_events2.EventEmitter {
1319
+ var import_events3 = require("events");
1320
+ var PlaybackInstance = class extends import_events3.EventEmitter {
1307
1321
  // Garantimos que o ID esteja disponível
1308
1322
  constructor(baseClient, playbackId) {
1309
1323
  super();
1310
1324
  this.baseClient = baseClient;
1311
1325
  this.playbackId = playbackId;
1312
1326
  this.id = playbackId || `playback-${Date.now()}`;
1327
+ this.baseClient.onWebSocketEvent((event) => {
1328
+ if (this.isPlaybackEvent(event) && event.playbackId === this.playbackId) {
1329
+ this.emit(event.type, event);
1330
+ }
1331
+ });
1313
1332
  }
1314
1333
  playbackData = null;
1315
1334
  id;
1335
+ /**
1336
+ * Verifica se o evento é relacionado a um playback.
1337
+ */
1338
+ isPlaybackEvent(event) {
1339
+ return event && typeof event === "object" && "playbackId" in event;
1340
+ }
1316
1341
  /**
1317
1342
  * Obtém os detalhes do playback.
1318
1343
  */
@@ -1320,8 +1345,9 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
1320
1345
  if (!this.playbackId && !this.playbackData) {
1321
1346
  throw new Error("Nenhum playback associado a esta inst\xE2ncia.");
1322
1347
  }
1323
- const id = this.playbackId || this.playbackData?.id;
1324
- const details = await this.baseClient.get(`/playbacks/${id}`);
1348
+ const details = await this.baseClient.get(
1349
+ `/playbacks/${this.id}`
1350
+ );
1325
1351
  this.playbackData = details;
1326
1352
  return details;
1327
1353
  }
@@ -1332,7 +1358,7 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
1332
1358
  if (!this.playbackId) {
1333
1359
  throw new Error("Nenhum playback associado para controlar.");
1334
1360
  }
1335
- await this.baseClient.post(`/playbacks/${this.playbackId}/control`, {
1361
+ await this.baseClient.post(`/playbacks/${this.id}/control`, {
1336
1362
  operation
1337
1363
  });
1338
1364
  }
@@ -1343,7 +1369,7 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
1343
1369
  if (!this.playbackId) {
1344
1370
  throw new Error("Nenhum playback associado para encerrar.");
1345
1371
  }
1346
- await this.baseClient.post(`/playbacks/${this.playbackId}/stop`);
1372
+ await this.baseClient.post(`/playbacks/${this.id}/stop`);
1347
1373
  this.emit("PlaybackStopped", this.playbackData);
1348
1374
  }
1349
1375
  /**
@@ -1368,10 +1394,25 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
1368
1394
  return this;
1369
1395
  }
1370
1396
  };
1371
- var Playbacks = class extends import_events2.EventEmitter {
1397
+ var Playbacks = class extends import_events3.EventEmitter {
1372
1398
  constructor(client) {
1373
1399
  super();
1374
1400
  this.client = client;
1401
+ this.client.onWebSocketEvent((event) => {
1402
+ if (this.isPlaybackEvent(event)) {
1403
+ const playbackId = event.playbackId;
1404
+ if (playbackId) {
1405
+ this.emit(`${event.type}:${playbackId}`, event);
1406
+ }
1407
+ this.emit(event.type, event);
1408
+ }
1409
+ });
1410
+ }
1411
+ /**
1412
+ * Verifica se o evento é relacionado a um playback.
1413
+ */
1414
+ isPlaybackEvent(event) {
1415
+ return event && typeof event === "object" && "playbackId" in event;
1375
1416
  }
1376
1417
  /**
1377
1418
  * Inicializa uma nova instância de `PlaybackInstance`.
@@ -1494,9 +1535,9 @@ var Sounds = class {
1494
1535
  };
1495
1536
 
1496
1537
  // src/ari-client/websocketClient.ts
1497
- var import_events3 = require("events");
1538
+ var import_events4 = require("events");
1498
1539
  var import_ws = __toESM(require("ws"), 1);
1499
- var WebSocketClient = class extends import_events3.EventEmitter {
1540
+ var WebSocketClient = class extends import_events4.EventEmitter {
1500
1541
  /**
1501
1542
  * Creates a new WebSocketClient instance.
1502
1543
  * @param url - The WebSocket server URL to connect to.