@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.
package/dist/esm/index.js CHANGED
@@ -574,9 +574,11 @@ var require_backoff = __commonJS({
574
574
  var import_exponential_backoff = __toESM(require_backoff(), 1);
575
575
 
576
576
  // src/ari-client/baseClient.ts
577
+ import { EventEmitter } from "events";
577
578
  import axios from "axios";
578
579
  var BaseClient = class {
579
580
  client;
581
+ eventEmitter = new EventEmitter();
580
582
  constructor(baseUrl, username, password) {
581
583
  this.client = axios.create({
582
584
  baseURL: baseUrl,
@@ -617,6 +619,18 @@ var BaseClient = class {
617
619
  const response = await this.client.delete(path);
618
620
  return response.data;
619
621
  }
622
+ /**
623
+ * Escuta eventos do WebSocket.
624
+ */
625
+ onWebSocketEvent(callback) {
626
+ this.eventEmitter.on("websocketEvent", callback);
627
+ }
628
+ /**
629
+ * Emite eventos do WebSocket.
630
+ */
631
+ emitWebSocketEvent(event) {
632
+ this.eventEmitter.emit("websocketEvent", event);
633
+ }
620
634
  };
621
635
 
622
636
  // src/ari-client/resources/applications.ts
@@ -835,7 +849,7 @@ var Bridges = class {
835
849
  };
836
850
 
837
851
  // src/ari-client/resources/channels.ts
838
- import { EventEmitter } from "events";
852
+ import { EventEmitter as EventEmitter2 } from "events";
839
853
 
840
854
  // src/ari-client/utils.ts
841
855
  function toQueryParams2(options) {
@@ -865,7 +879,7 @@ var channelEvents = [
865
879
  ];
866
880
 
867
881
  // src/ari-client/resources/channels.ts
868
- var ChannelInstance = class extends EventEmitter {
882
+ var ChannelInstance = class extends EventEmitter2 {
869
883
  constructor(client, baseClient, channelId = `channel-${Date.now()}`) {
870
884
  super();
871
885
  this.client = client;
@@ -1064,7 +1078,7 @@ var ChannelInstance = class extends EventEmitter {
1064
1078
  await this.baseClient.delete(`/channels/${this.channelData.id}/hold`);
1065
1079
  }
1066
1080
  };
1067
- var Channels = class extends EventEmitter {
1081
+ var Channels = class extends EventEmitter2 {
1068
1082
  constructor(baseClient, client) {
1069
1083
  super();
1070
1084
  this.baseClient = baseClient;
@@ -1280,17 +1294,28 @@ var Endpoints = class {
1280
1294
  };
1281
1295
 
1282
1296
  // src/ari-client/resources/playbacks.ts
1283
- import { EventEmitter as EventEmitter2 } from "events";
1284
- var PlaybackInstance = class extends EventEmitter2 {
1297
+ import { EventEmitter as EventEmitter3 } from "events";
1298
+ var PlaybackInstance = class extends EventEmitter3 {
1285
1299
  // Garantimos que o ID esteja disponível
1286
1300
  constructor(baseClient, playbackId) {
1287
1301
  super();
1288
1302
  this.baseClient = baseClient;
1289
1303
  this.playbackId = playbackId;
1290
1304
  this.id = playbackId || `playback-${Date.now()}`;
1305
+ this.baseClient.onWebSocketEvent((event) => {
1306
+ if (this.isPlaybackEvent(event) && event.playbackId === this.playbackId) {
1307
+ this.emit(event.type, event);
1308
+ }
1309
+ });
1291
1310
  }
1292
1311
  playbackData = null;
1293
1312
  id;
1313
+ /**
1314
+ * Verifica se o evento é relacionado a um playback.
1315
+ */
1316
+ isPlaybackEvent(event) {
1317
+ return event && typeof event === "object" && "playbackId" in event;
1318
+ }
1294
1319
  /**
1295
1320
  * Obtém os detalhes do playback.
1296
1321
  */
@@ -1298,8 +1323,9 @@ var PlaybackInstance = class extends EventEmitter2 {
1298
1323
  if (!this.playbackId && !this.playbackData) {
1299
1324
  throw new Error("Nenhum playback associado a esta inst\xE2ncia.");
1300
1325
  }
1301
- const id = this.playbackId || this.playbackData?.id;
1302
- const details = await this.baseClient.get(`/playbacks/${id}`);
1326
+ const details = await this.baseClient.get(
1327
+ `/playbacks/${this.id}`
1328
+ );
1303
1329
  this.playbackData = details;
1304
1330
  return details;
1305
1331
  }
@@ -1310,7 +1336,7 @@ var PlaybackInstance = class extends EventEmitter2 {
1310
1336
  if (!this.playbackId) {
1311
1337
  throw new Error("Nenhum playback associado para controlar.");
1312
1338
  }
1313
- await this.baseClient.post(`/playbacks/${this.playbackId}/control`, {
1339
+ await this.baseClient.post(`/playbacks/${this.id}/control`, {
1314
1340
  operation
1315
1341
  });
1316
1342
  }
@@ -1321,7 +1347,7 @@ var PlaybackInstance = class extends EventEmitter2 {
1321
1347
  if (!this.playbackId) {
1322
1348
  throw new Error("Nenhum playback associado para encerrar.");
1323
1349
  }
1324
- await this.baseClient.post(`/playbacks/${this.playbackId}/stop`);
1350
+ await this.baseClient.post(`/playbacks/${this.id}/stop`);
1325
1351
  this.emit("PlaybackStopped", this.playbackData);
1326
1352
  }
1327
1353
  /**
@@ -1346,10 +1372,25 @@ var PlaybackInstance = class extends EventEmitter2 {
1346
1372
  return this;
1347
1373
  }
1348
1374
  };
1349
- var Playbacks = class extends EventEmitter2 {
1375
+ var Playbacks = class extends EventEmitter3 {
1350
1376
  constructor(client) {
1351
1377
  super();
1352
1378
  this.client = client;
1379
+ this.client.onWebSocketEvent((event) => {
1380
+ if (this.isPlaybackEvent(event)) {
1381
+ const playbackId = event.playbackId;
1382
+ if (playbackId) {
1383
+ this.emit(`${event.type}:${playbackId}`, event);
1384
+ }
1385
+ this.emit(event.type, event);
1386
+ }
1387
+ });
1388
+ }
1389
+ /**
1390
+ * Verifica se o evento é relacionado a um playback.
1391
+ */
1392
+ isPlaybackEvent(event) {
1393
+ return event && typeof event === "object" && "playbackId" in event;
1353
1394
  }
1354
1395
  /**
1355
1396
  * Inicializa uma nova instância de `PlaybackInstance`.
@@ -1472,9 +1513,9 @@ var Sounds = class {
1472
1513
  };
1473
1514
 
1474
1515
  // src/ari-client/websocketClient.ts
1475
- import { EventEmitter as EventEmitter3 } from "events";
1516
+ import { EventEmitter as EventEmitter4 } from "events";
1476
1517
  import WebSocket from "ws";
1477
- var WebSocketClient = class extends EventEmitter3 {
1518
+ var WebSocketClient = class extends EventEmitter4 {
1478
1519
  /**
1479
1520
  * Creates a new WebSocketClient instance.
1480
1521
  * @param url - The WebSocket server URL to connect to.