@ipcom/asterisk-ari 0.0.8 → 0.0.9

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.
@@ -655,7 +655,7 @@ var WebSocketClient = class {
655
655
  }
656
656
  ws = null;
657
657
  isClosedManually = false;
658
- async connect(retryInterval = 1e3) {
658
+ async connect() {
659
659
  return new Promise((resolve, reject) => {
660
660
  this.ws = new import_ws.default(this.url);
661
661
  this.ws.on("open", () => {
@@ -665,25 +665,18 @@ var WebSocketClient = class {
665
665
  });
666
666
  this.ws.on("error", (err) => {
667
667
  console.error("Erro na conex\xE3o WebSocket:", err);
668
- if (!this.isClosedManually) {
669
- setTimeout(() => this.reconnect(retryInterval), retryInterval);
670
- }
671
668
  reject(err);
672
669
  });
673
670
  this.ws.on("close", (code, reason) => {
674
671
  console.warn(`WebSocket desconectado: ${code} - ${reason}`);
675
672
  if (!this.isClosedManually) {
676
- setTimeout(() => this.reconnect(retryInterval), retryInterval);
673
+ console.warn(
674
+ "Desconex\xE3o inesperada. Reconex\xE3o ser\xE1 gerenciada pelo AriClient."
675
+ );
677
676
  }
678
677
  });
679
678
  });
680
679
  }
681
- reconnect(retryInterval) {
682
- console.log("Tentando reconectar ao WebSocket...");
683
- this.connect(retryInterval).catch((err) => {
684
- console.error("Erro ao tentar reconectar:", err);
685
- });
686
- }
687
680
  isConnected() {
688
681
  return this.ws?.readyState === import_ws.default.OPEN;
689
682
  }
@@ -747,30 +740,26 @@ var AriClient = class {
747
740
  }
748
741
  const protocol = this.config.secure ? "wss" : "ws";
749
742
  const wsUrl = `${protocol}://${encodeURIComponent(this.config.username)}:${encodeURIComponent(this.config.password)}@${this.config.host}:${this.config.port}/ari/events?app=${app}`;
750
- this.wsClient = new WebSocketClient(wsUrl);
751
743
  const backoffOptions = {
752
744
  delayFirstAttempt: false,
753
745
  startingDelay: 1e3,
754
746
  timeMultiple: 2,
755
747
  maxDelay: 3e4,
756
- // Máximo de 30 segundos entre tentativas
757
748
  numOfAttempts: 10,
758
- // Até 10 tentativas
759
749
  jitter: "full",
760
- // Adiciona variabilidade ao intervalo
761
750
  retry: (error, attemptNumber) => {
762
751
  console.warn(`Tentativa ${attemptNumber} falhou: ${error.message}`);
763
752
  return true;
764
753
  }
765
754
  };
755
+ this.wsClient = new WebSocketClient(wsUrl);
766
756
  try {
767
757
  await (0, import_exponential_backoff.backOff)(async () => {
768
- if (this.wsClient) {
769
- await this.wsClient.connect();
770
- console.log(`WebSocket connected for app: ${app}`);
771
- } else {
758
+ if (!this.wsClient) {
772
759
  throw new Error("WebSocketClient instance is null.");
773
760
  }
761
+ await this.wsClient.connect();
762
+ console.log(`WebSocket connected for app: ${app}`);
774
763
  }, backoffOptions);
775
764
  } catch (err) {
776
765
  console.error(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../node_modules/exponential-backoff/src/options.ts", "../../node_modules/exponential-backoff/src/jitter/full/full.jitter.ts", "../../node_modules/exponential-backoff/src/jitter/no/no.jitter.ts", "../../node_modules/exponential-backoff/src/jitter/jitter.factory.ts", "../../node_modules/exponential-backoff/src/delay/delay.base.ts", "../../node_modules/exponential-backoff/src/delay/skip-first/skip-first.delay.ts", "../../node_modules/exponential-backoff/src/delay/always/always.delay.ts", "../../node_modules/exponential-backoff/src/delay/delay.factory.ts", "../../node_modules/exponential-backoff/src/backoff.ts", "../../src/index.ts", "../../src/ari-client/ariClient.ts", "../../src/ari-client/baseClient.ts", "../../src/ari-client/resources/channels.ts", "../../src/ari-client/websocketClient.ts"],
4
- "sourcesContent": [null, null, null, null, null, null, null, null, null, "// Exporta a classe principal AriClient\nexport { AriClient } from \"./ari-client/ariClient.js\";\n\n// Exporta as classes dos recursos, caso o usu\u00E1rio precise us\u00E1-las diretamente\nexport { Channels } from \"./ari-client/resources/channels.js\";\n\n// Exporta interfaces importantes para tipagem\nexport type { AriClientConfig } from \"./ari-client/interfaces/requests.js\";\nexport type { Channel } from \"./ari-client/interfaces/channels.types.js\";\n", "import { type IBackOffOptions, backOff } from \"exponential-backoff\";\nimport { BaseClient } from \"./baseClient.js\";\nimport type { AriClientConfig } from \"./interfaces/requests.js\";\nimport { Channels } from \"./resources/channels.js\";\nimport { WebSocketClient } from \"./websocketClient.js\";\n\nexport class AriClient {\n private wsClient: WebSocketClient | null = null;\n private readonly baseClient: BaseClient;\n\n public channels: Channels;\n\n /**\n * Initializes a new instance of the AriClient class.\n *\n * This constructor sets up the necessary configurations for connecting to an Asterisk ARI server,\n * including HTTP connections. WebSocket connections are handled dynamically per application.\n *\n * @param config - The configuration object for the ARI client.\n */\n constructor(private config: AriClientConfig) {\n const httpProtocol = config.secure ? \"https\" : \"http\";\n const normalizedHost = config.host.replace(/^https?:\\/\\//, \"\");\n const baseUrl = `${httpProtocol}://${normalizedHost}:${config.port}/ari`;\n\n this.baseClient = new BaseClient(baseUrl, config.username, config.password);\n this.channels = new Channels(this.baseClient);\n }\n\n /**\n * Connects to the ARI WebSocket for a specific application.\n *\n * @param app - The application name to connect to.\n * @returns {Promise<void>} Resolves when the WebSocket connects successfully.\n */\n async connectWebSocket(app: string): Promise<void> {\n if (!app) {\n throw new Error(\n \"The 'app' parameter is required to connect to the WebSocket.\",\n );\n }\n\n const protocol = this.config.secure ? \"wss\" : \"ws\";\n const wsUrl = `${protocol}://${encodeURIComponent(this.config.username)}:${encodeURIComponent(this.config.password)}@${\n this.config.host\n }:${this.config.port}/ari/events?app=${app}`;\n\n this.wsClient = new WebSocketClient(wsUrl);\n\n const backoffOptions: IBackOffOptions = {\n delayFirstAttempt: false,\n startingDelay: 1000,\n timeMultiple: 2,\n maxDelay: 30000, // M\u00E1ximo de 30 segundos entre tentativas\n numOfAttempts: 10, // At\u00E9 10 tentativas\n jitter: \"full\", // Adiciona variabilidade ao intervalo\n retry: (error: any, attemptNumber: number) => {\n console.warn(`Tentativa ${attemptNumber} falhou: ${error.message}`);\n return true; // Continua tentando at\u00E9 atingir o limite\n },\n };\n\n try {\n await backOff(async () => {\n if (this.wsClient) {\n await this.wsClient.connect();\n console.log(`WebSocket connected for app: ${app}`);\n } else {\n throw new Error(\"WebSocketClient instance is null.\");\n }\n }, backoffOptions);\n } catch (err) {\n console.error(\n \"Failed to connect to WebSocket after multiple attempts:\",\n err,\n );\n throw err;\n }\n }\n\n /**\n * Checks if the WebSocket connection is active.\n *\n * @returns {boolean} True if connected, false otherwise.\n */\n isWebSocketConnected(): boolean {\n return this.wsClient ? this.wsClient.isConnected() : false;\n }\n\n /**\n * Registers a callback for a specific WebSocket event.\n *\n * @param event - The WebSocket event to listen for.\n * @param callback - The callback function to execute when the event occurs.\n */\n onWebSocketEvent(event: string, callback: (data: any) => void): void {\n if (!this.wsClient) {\n throw new Error(\"WebSocket is not connected.\");\n }\n this.wsClient.on(event, callback);\n }\n\n /**\n * Closes the WebSocket connection.\n */\n closeWebSocket(): void {\n if (this.wsClient) {\n this.wsClient.close();\n this.wsClient = null;\n }\n }\n\n /**\n * Retrieves a list of active channels from the Asterisk ARI.\n *\n * @returns {Promise<any>} A promise resolving to the list of active channels.\n */\n async listChannels() {\n return this.baseClient.get(\"/channels\");\n }\n\n /**\n * Initiates a new channel on the Asterisk server.\n *\n * @param data - The parameters for creating the new channel.\n * @returns {Promise<any>} A promise resolving to the new channel's details.\n */\n async originateChannel(data: any) {\n return this.baseClient.post(\"/channels\", data);\n }\n}\n", "import axios, { type AxiosInstance } from \"axios\";\n\nexport class BaseClient {\n private client: AxiosInstance;\n\n constructor(baseUrl: string, username: string, password: string) {\n this.client = axios.create({\n baseURL: baseUrl,\n auth: { username, password },\n });\n }\n\n async get<T>(path: string): Promise<T> {\n const response = await this.client.get<T>(path);\n return response.data;\n }\n\n async post<T>(path: string, data?: unknown): Promise<T> {\n const response = await this.client.post<T>(path, data);\n return response.data;\n }\n}\n", "import type { BaseClient } from \"../baseClient.js\";\nimport type {\n Channel,\n OriginateRequest,\n} from \"../interfaces/channels.types.js\";\n\nexport class Channels {\n constructor(private client: BaseClient) {}\n\n // Lista todos os canais ativos\n async list(): Promise<Channel[]> {\n return this.client.get<Channel[]>(\"/channels\");\n }\n\n // Cria um novo canal\n async originate(data: OriginateRequest): Promise<Channel> {\n return this.client.post<Channel>(\"/channels\", data);\n }\n\n // Obt\u00E9m detalhes de um canal espec\u00EDfico\n async getDetails(channelId: string): Promise<Channel> {\n return this.client.get<Channel>(`/channels/${channelId}`);\n }\n\n // Desliga (hangup) um canal\n async hangup(channelId: string): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/hangup`);\n }\n\n // Continua no dialplan\n async continueDialplan(\n channelId: string,\n context?: string,\n extension?: string,\n priority?: number,\n label?: string,\n ): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/continue`, {\n context,\n extension,\n priority,\n label,\n });\n }\n\n // Move o canal para outra aplica\u00E7\u00E3o Stasis\n async moveToApplication(\n channelId: string,\n app: string,\n appArgs?: string,\n ): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/move`, {\n app,\n appArgs,\n });\n }\n}\n", "import WebSocket from \"ws\";\n\nexport class WebSocketClient {\n private ws: WebSocket | null = null;\n private isClosedManually = false; // Para evitar reconex\u00F5es autom\u00E1ticas quando fechado manualmente\n\n constructor(private url: string) {}\n\n async connect(retryInterval = 1000): Promise<void> {\n return new Promise((resolve, reject) => {\n this.ws = new WebSocket(this.url);\n\n this.ws.on(\"open\", () => {\n console.log(\"WebSocket conectado.\");\n this.isClosedManually = false;\n resolve();\n });\n\n this.ws.on(\"error\", (err) => {\n console.error(\"Erro na conex\u00E3o WebSocket:\", err);\n if (!this.isClosedManually) {\n setTimeout(() => this.reconnect(retryInterval), retryInterval);\n }\n reject(err);\n });\n\n this.ws.on(\"close\", (code, reason) => {\n console.warn(`WebSocket desconectado: ${code} - ${reason}`);\n if (!this.isClosedManually) {\n setTimeout(() => this.reconnect(retryInterval), retryInterval);\n }\n });\n });\n }\n\n private reconnect(retryInterval: number): void {\n console.log(\"Tentando reconectar ao WebSocket...\");\n this.connect(retryInterval).catch((err) => {\n console.error(\"Erro ao tentar reconectar:\", err);\n });\n }\n\n isConnected(): boolean {\n return this.ws?.readyState === WebSocket.OPEN;\n }\n\n on(event: string, callback: (data: any) => void): void {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error(\"WebSocket n\u00E3o est\u00E1 conectado.\");\n }\n\n this.ws.on(event, callback);\n }\n\n send(data: any): void {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error(\"WebSocket n\u00E3o est\u00E1 conectado.\");\n }\n\n this.ws.send(data, (err) => {\n if (err) {\n console.error(\"Erro ao enviar dados pelo WebSocket:\", err);\n }\n });\n }\n\n close(): void {\n if (this.ws) {\n this.isClosedManually = true;\n this.ws.close();\n console.log(\"WebSocket fechado manualmente.\");\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": [null, null, null, null, null, null, null, null, null, "// Exporta a classe principal AriClient\nexport { AriClient } from \"./ari-client/ariClient.js\";\n\n// Exporta as classes dos recursos, caso o usu\u00E1rio precise us\u00E1-las diretamente\nexport { Channels } from \"./ari-client/resources/channels.js\";\n\n// Exporta interfaces importantes para tipagem\nexport type { AriClientConfig } from \"./ari-client/interfaces/requests.js\";\nexport type { Channel } from \"./ari-client/interfaces/channels.types.js\";\n", "import { type IBackOffOptions, backOff } from \"exponential-backoff\";\nimport { BaseClient } from \"./baseClient.js\";\nimport type { AriClientConfig } from \"./interfaces/requests.js\";\nimport { Channels } from \"./resources/channels.js\";\nimport { WebSocketClient } from \"./websocketClient.js\";\n\nexport class AriClient {\n private wsClient: WebSocketClient | null = null;\n private readonly baseClient: BaseClient;\n\n public channels: Channels;\n\n /**\n * Initializes a new instance of the AriClient class.\n *\n * This constructor sets up the necessary configurations for connecting to an Asterisk ARI server,\n * including HTTP connections. WebSocket connections are handled dynamically per application.\n *\n * @param config - The configuration object for the ARI client.\n */\n constructor(private config: AriClientConfig) {\n const httpProtocol = config.secure ? \"https\" : \"http\";\n const normalizedHost = config.host.replace(/^https?:\\/\\//, \"\");\n const baseUrl = `${httpProtocol}://${normalizedHost}:${config.port}/ari`;\n\n this.baseClient = new BaseClient(baseUrl, config.username, config.password);\n this.channels = new Channels(this.baseClient);\n }\n\n /**\n * Connects to the ARI WebSocket for a specific application.\n *\n * @param app - The application name to connect to.\n * @returns {Promise<void>} Resolves when the WebSocket connects successfully.\n */\n async connectWebSocket(app: string): Promise<void> {\n if (!app) {\n throw new Error(\n \"The 'app' parameter is required to connect to the WebSocket.\",\n );\n }\n\n const protocol = this.config.secure ? \"wss\" : \"ws\";\n const wsUrl = `${protocol}://${encodeURIComponent(this.config.username)}:${encodeURIComponent(this.config.password)}@${\n this.config.host\n }:${this.config.port}/ari/events?app=${app}`;\n\n const backoffOptions: IBackOffOptions = {\n delayFirstAttempt: false,\n startingDelay: 1000,\n timeMultiple: 2,\n maxDelay: 30000,\n numOfAttempts: 10,\n jitter: \"full\",\n retry: (error: any, attemptNumber: number) => {\n console.warn(`Tentativa ${attemptNumber} falhou: ${error.message}`);\n return true;\n },\n };\n\n this.wsClient = new WebSocketClient(wsUrl);\n\n try {\n await backOff(async () => {\n if (!this.wsClient) {\n throw new Error(\"WebSocketClient instance is null.\");\n }\n await this.wsClient.connect();\n console.log(`WebSocket connected for app: ${app}`);\n }, backoffOptions);\n } catch (err) {\n console.error(\n \"Failed to connect to WebSocket after multiple attempts:\",\n err,\n );\n throw err;\n }\n }\n\n /**\n * Checks if the WebSocket connection is active.\n *\n * @returns {boolean} True if connected, false otherwise.\n */\n isWebSocketConnected(): boolean {\n return this.wsClient ? this.wsClient.isConnected() : false;\n }\n\n /**\n * Registers a callback for a specific WebSocket event.\n *\n * @param event - The WebSocket event to listen for.\n * @param callback - The callback function to execute when the event occurs.\n */\n onWebSocketEvent(event: string, callback: (data: any) => void): void {\n if (!this.wsClient) {\n throw new Error(\"WebSocket is not connected.\");\n }\n this.wsClient.on(event, callback);\n }\n\n /**\n * Closes the WebSocket connection.\n */\n closeWebSocket(): void {\n if (this.wsClient) {\n this.wsClient.close();\n this.wsClient = null;\n }\n }\n\n /**\n * Retrieves a list of active channels from the Asterisk ARI.\n *\n * @returns {Promise<any>} A promise resolving to the list of active channels.\n */\n async listChannels() {\n return this.baseClient.get(\"/channels\");\n }\n\n /**\n * Initiates a new channel on the Asterisk server.\n *\n * @param data - The parameters for creating the new channel.\n * @returns {Promise<any>} A promise resolving to the new channel's details.\n */\n async originateChannel(data: any) {\n return this.baseClient.post(\"/channels\", data);\n }\n}\n", "import axios, { type AxiosInstance } from \"axios\";\n\nexport class BaseClient {\n private client: AxiosInstance;\n\n constructor(baseUrl: string, username: string, password: string) {\n this.client = axios.create({\n baseURL: baseUrl,\n auth: { username, password },\n });\n }\n\n async get<T>(path: string): Promise<T> {\n const response = await this.client.get<T>(path);\n return response.data;\n }\n\n async post<T>(path: string, data?: unknown): Promise<T> {\n const response = await this.client.post<T>(path, data);\n return response.data;\n }\n}\n", "import type { BaseClient } from \"../baseClient.js\";\nimport type {\n Channel,\n OriginateRequest,\n} from \"../interfaces/channels.types.js\";\n\nexport class Channels {\n constructor(private client: BaseClient) {}\n\n // Lista todos os canais ativos\n async list(): Promise<Channel[]> {\n return this.client.get<Channel[]>(\"/channels\");\n }\n\n // Cria um novo canal\n async originate(data: OriginateRequest): Promise<Channel> {\n return this.client.post<Channel>(\"/channels\", data);\n }\n\n // Obt\u00E9m detalhes de um canal espec\u00EDfico\n async getDetails(channelId: string): Promise<Channel> {\n return this.client.get<Channel>(`/channels/${channelId}`);\n }\n\n // Desliga (hangup) um canal\n async hangup(channelId: string): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/hangup`);\n }\n\n // Continua no dialplan\n async continueDialplan(\n channelId: string,\n context?: string,\n extension?: string,\n priority?: number,\n label?: string,\n ): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/continue`, {\n context,\n extension,\n priority,\n label,\n });\n }\n\n // Move o canal para outra aplica\u00E7\u00E3o Stasis\n async moveToApplication(\n channelId: string,\n app: string,\n appArgs?: string,\n ): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/move`, {\n app,\n appArgs,\n });\n }\n}\n", "import WebSocket from \"ws\";\n\nexport class WebSocketClient {\n private ws: WebSocket | null = null;\n private isClosedManually = false; // Para evitar reconex\u00F5es autom\u00E1ticas quando fechado manualmente\n\n constructor(private url: string) {}\n\n async connect(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.ws = new WebSocket(this.url);\n\n this.ws.on(\"open\", () => {\n console.log(\"WebSocket conectado.\");\n this.isClosedManually = false;\n resolve();\n });\n\n this.ws.on(\"error\", (err) => {\n console.error(\"Erro na conex\u00E3o WebSocket:\", err);\n reject(err);\n });\n\n this.ws.on(\"close\", (code, reason) => {\n console.warn(`WebSocket desconectado: ${code} - ${reason}`);\n if (!this.isClosedManually) {\n console.warn(\n \"Desconex\u00E3o inesperada. Reconex\u00E3o ser\u00E1 gerenciada pelo AriClient.\",\n );\n }\n });\n });\n }\n\n isConnected(): boolean {\n return this.ws?.readyState === WebSocket.OPEN;\n }\n\n on(event: string, callback: (data: any) => void): void {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error(\"WebSocket n\u00E3o est\u00E1 conectado.\");\n }\n\n this.ws.on(event, callback);\n }\n\n send(data: any): void {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error(\"WebSocket n\u00E3o est\u00E1 conectado.\");\n }\n\n this.ws.send(data, (err) => {\n if (err) {\n console.error(\"Erro ao enviar dados pelo WebSocket:\", err);\n }\n });\n }\n\n close(): void {\n if (this.ws) {\n this.isClosedManually = true;\n this.ws.close();\n console.log(\"WebSocket fechado manualmente.\");\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["exports", "exports", "exports", "exports", "Delay", "exports", "SkipFirstDelay", "exports", "AlwaysDelay", "exports", "exports", "backOff", "exports", "BackOff", "axios", "WebSocket"]
7
7
  }
package/dist/esm/index.js CHANGED
@@ -641,7 +641,7 @@ var WebSocketClient = class {
641
641
  }
642
642
  ws = null;
643
643
  isClosedManually = false;
644
- async connect(retryInterval = 1e3) {
644
+ async connect() {
645
645
  return new Promise((resolve, reject) => {
646
646
  this.ws = new WebSocket(this.url);
647
647
  this.ws.on("open", () => {
@@ -651,25 +651,18 @@ var WebSocketClient = class {
651
651
  });
652
652
  this.ws.on("error", (err) => {
653
653
  console.error("Erro na conex\xE3o WebSocket:", err);
654
- if (!this.isClosedManually) {
655
- setTimeout(() => this.reconnect(retryInterval), retryInterval);
656
- }
657
654
  reject(err);
658
655
  });
659
656
  this.ws.on("close", (code, reason) => {
660
657
  console.warn(`WebSocket desconectado: ${code} - ${reason}`);
661
658
  if (!this.isClosedManually) {
662
- setTimeout(() => this.reconnect(retryInterval), retryInterval);
659
+ console.warn(
660
+ "Desconex\xE3o inesperada. Reconex\xE3o ser\xE1 gerenciada pelo AriClient."
661
+ );
663
662
  }
664
663
  });
665
664
  });
666
665
  }
667
- reconnect(retryInterval) {
668
- console.log("Tentando reconectar ao WebSocket...");
669
- this.connect(retryInterval).catch((err) => {
670
- console.error("Erro ao tentar reconectar:", err);
671
- });
672
- }
673
666
  isConnected() {
674
667
  return this.ws?.readyState === WebSocket.OPEN;
675
668
  }
@@ -733,30 +726,26 @@ var AriClient = class {
733
726
  }
734
727
  const protocol = this.config.secure ? "wss" : "ws";
735
728
  const wsUrl = `${protocol}://${encodeURIComponent(this.config.username)}:${encodeURIComponent(this.config.password)}@${this.config.host}:${this.config.port}/ari/events?app=${app}`;
736
- this.wsClient = new WebSocketClient(wsUrl);
737
729
  const backoffOptions = {
738
730
  delayFirstAttempt: false,
739
731
  startingDelay: 1e3,
740
732
  timeMultiple: 2,
741
733
  maxDelay: 3e4,
742
- // Máximo de 30 segundos entre tentativas
743
734
  numOfAttempts: 10,
744
- // Até 10 tentativas
745
735
  jitter: "full",
746
- // Adiciona variabilidade ao intervalo
747
736
  retry: (error, attemptNumber) => {
748
737
  console.warn(`Tentativa ${attemptNumber} falhou: ${error.message}`);
749
738
  return true;
750
739
  }
751
740
  };
741
+ this.wsClient = new WebSocketClient(wsUrl);
752
742
  try {
753
743
  await (0, import_exponential_backoff.backOff)(async () => {
754
- if (this.wsClient) {
755
- await this.wsClient.connect();
756
- console.log(`WebSocket connected for app: ${app}`);
757
- } else {
744
+ if (!this.wsClient) {
758
745
  throw new Error("WebSocketClient instance is null.");
759
746
  }
747
+ await this.wsClient.connect();
748
+ console.log(`WebSocket connected for app: ${app}`);
760
749
  }, backoffOptions);
761
750
  } catch (err) {
762
751
  console.error(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../node_modules/exponential-backoff/src/options.ts", "../../node_modules/exponential-backoff/src/jitter/full/full.jitter.ts", "../../node_modules/exponential-backoff/src/jitter/no/no.jitter.ts", "../../node_modules/exponential-backoff/src/jitter/jitter.factory.ts", "../../node_modules/exponential-backoff/src/delay/delay.base.ts", "../../node_modules/exponential-backoff/src/delay/skip-first/skip-first.delay.ts", "../../node_modules/exponential-backoff/src/delay/always/always.delay.ts", "../../node_modules/exponential-backoff/src/delay/delay.factory.ts", "../../node_modules/exponential-backoff/src/backoff.ts", "../../src/ari-client/ariClient.ts", "../../src/ari-client/baseClient.ts", "../../src/ari-client/resources/channels.ts", "../../src/ari-client/websocketClient.ts"],
4
- "sourcesContent": [null, null, null, null, null, null, null, null, null, "import { type IBackOffOptions, backOff } from \"exponential-backoff\";\nimport { BaseClient } from \"./baseClient.js\";\nimport type { AriClientConfig } from \"./interfaces/requests.js\";\nimport { Channels } from \"./resources/channels.js\";\nimport { WebSocketClient } from \"./websocketClient.js\";\n\nexport class AriClient {\n private wsClient: WebSocketClient | null = null;\n private readonly baseClient: BaseClient;\n\n public channels: Channels;\n\n /**\n * Initializes a new instance of the AriClient class.\n *\n * This constructor sets up the necessary configurations for connecting to an Asterisk ARI server,\n * including HTTP connections. WebSocket connections are handled dynamically per application.\n *\n * @param config - The configuration object for the ARI client.\n */\n constructor(private config: AriClientConfig) {\n const httpProtocol = config.secure ? \"https\" : \"http\";\n const normalizedHost = config.host.replace(/^https?:\\/\\//, \"\");\n const baseUrl = `${httpProtocol}://${normalizedHost}:${config.port}/ari`;\n\n this.baseClient = new BaseClient(baseUrl, config.username, config.password);\n this.channels = new Channels(this.baseClient);\n }\n\n /**\n * Connects to the ARI WebSocket for a specific application.\n *\n * @param app - The application name to connect to.\n * @returns {Promise<void>} Resolves when the WebSocket connects successfully.\n */\n async connectWebSocket(app: string): Promise<void> {\n if (!app) {\n throw new Error(\n \"The 'app' parameter is required to connect to the WebSocket.\",\n );\n }\n\n const protocol = this.config.secure ? \"wss\" : \"ws\";\n const wsUrl = `${protocol}://${encodeURIComponent(this.config.username)}:${encodeURIComponent(this.config.password)}@${\n this.config.host\n }:${this.config.port}/ari/events?app=${app}`;\n\n this.wsClient = new WebSocketClient(wsUrl);\n\n const backoffOptions: IBackOffOptions = {\n delayFirstAttempt: false,\n startingDelay: 1000,\n timeMultiple: 2,\n maxDelay: 30000, // M\u00E1ximo de 30 segundos entre tentativas\n numOfAttempts: 10, // At\u00E9 10 tentativas\n jitter: \"full\", // Adiciona variabilidade ao intervalo\n retry: (error: any, attemptNumber: number) => {\n console.warn(`Tentativa ${attemptNumber} falhou: ${error.message}`);\n return true; // Continua tentando at\u00E9 atingir o limite\n },\n };\n\n try {\n await backOff(async () => {\n if (this.wsClient) {\n await this.wsClient.connect();\n console.log(`WebSocket connected for app: ${app}`);\n } else {\n throw new Error(\"WebSocketClient instance is null.\");\n }\n }, backoffOptions);\n } catch (err) {\n console.error(\n \"Failed to connect to WebSocket after multiple attempts:\",\n err,\n );\n throw err;\n }\n }\n\n /**\n * Checks if the WebSocket connection is active.\n *\n * @returns {boolean} True if connected, false otherwise.\n */\n isWebSocketConnected(): boolean {\n return this.wsClient ? this.wsClient.isConnected() : false;\n }\n\n /**\n * Registers a callback for a specific WebSocket event.\n *\n * @param event - The WebSocket event to listen for.\n * @param callback - The callback function to execute when the event occurs.\n */\n onWebSocketEvent(event: string, callback: (data: any) => void): void {\n if (!this.wsClient) {\n throw new Error(\"WebSocket is not connected.\");\n }\n this.wsClient.on(event, callback);\n }\n\n /**\n * Closes the WebSocket connection.\n */\n closeWebSocket(): void {\n if (this.wsClient) {\n this.wsClient.close();\n this.wsClient = null;\n }\n }\n\n /**\n * Retrieves a list of active channels from the Asterisk ARI.\n *\n * @returns {Promise<any>} A promise resolving to the list of active channels.\n */\n async listChannels() {\n return this.baseClient.get(\"/channels\");\n }\n\n /**\n * Initiates a new channel on the Asterisk server.\n *\n * @param data - The parameters for creating the new channel.\n * @returns {Promise<any>} A promise resolving to the new channel's details.\n */\n async originateChannel(data: any) {\n return this.baseClient.post(\"/channels\", data);\n }\n}\n", "import axios, { type AxiosInstance } from \"axios\";\n\nexport class BaseClient {\n private client: AxiosInstance;\n\n constructor(baseUrl: string, username: string, password: string) {\n this.client = axios.create({\n baseURL: baseUrl,\n auth: { username, password },\n });\n }\n\n async get<T>(path: string): Promise<T> {\n const response = await this.client.get<T>(path);\n return response.data;\n }\n\n async post<T>(path: string, data?: unknown): Promise<T> {\n const response = await this.client.post<T>(path, data);\n return response.data;\n }\n}\n", "import type { BaseClient } from \"../baseClient.js\";\nimport type {\n Channel,\n OriginateRequest,\n} from \"../interfaces/channels.types.js\";\n\nexport class Channels {\n constructor(private client: BaseClient) {}\n\n // Lista todos os canais ativos\n async list(): Promise<Channel[]> {\n return this.client.get<Channel[]>(\"/channels\");\n }\n\n // Cria um novo canal\n async originate(data: OriginateRequest): Promise<Channel> {\n return this.client.post<Channel>(\"/channels\", data);\n }\n\n // Obt\u00E9m detalhes de um canal espec\u00EDfico\n async getDetails(channelId: string): Promise<Channel> {\n return this.client.get<Channel>(`/channels/${channelId}`);\n }\n\n // Desliga (hangup) um canal\n async hangup(channelId: string): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/hangup`);\n }\n\n // Continua no dialplan\n async continueDialplan(\n channelId: string,\n context?: string,\n extension?: string,\n priority?: number,\n label?: string,\n ): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/continue`, {\n context,\n extension,\n priority,\n label,\n });\n }\n\n // Move o canal para outra aplica\u00E7\u00E3o Stasis\n async moveToApplication(\n channelId: string,\n app: string,\n appArgs?: string,\n ): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/move`, {\n app,\n appArgs,\n });\n }\n}\n", "import WebSocket from \"ws\";\n\nexport class WebSocketClient {\n private ws: WebSocket | null = null;\n private isClosedManually = false; // Para evitar reconex\u00F5es autom\u00E1ticas quando fechado manualmente\n\n constructor(private url: string) {}\n\n async connect(retryInterval = 1000): Promise<void> {\n return new Promise((resolve, reject) => {\n this.ws = new WebSocket(this.url);\n\n this.ws.on(\"open\", () => {\n console.log(\"WebSocket conectado.\");\n this.isClosedManually = false;\n resolve();\n });\n\n this.ws.on(\"error\", (err) => {\n console.error(\"Erro na conex\u00E3o WebSocket:\", err);\n if (!this.isClosedManually) {\n setTimeout(() => this.reconnect(retryInterval), retryInterval);\n }\n reject(err);\n });\n\n this.ws.on(\"close\", (code, reason) => {\n console.warn(`WebSocket desconectado: ${code} - ${reason}`);\n if (!this.isClosedManually) {\n setTimeout(() => this.reconnect(retryInterval), retryInterval);\n }\n });\n });\n }\n\n private reconnect(retryInterval: number): void {\n console.log(\"Tentando reconectar ao WebSocket...\");\n this.connect(retryInterval).catch((err) => {\n console.error(\"Erro ao tentar reconectar:\", err);\n });\n }\n\n isConnected(): boolean {\n return this.ws?.readyState === WebSocket.OPEN;\n }\n\n on(event: string, callback: (data: any) => void): void {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error(\"WebSocket n\u00E3o est\u00E1 conectado.\");\n }\n\n this.ws.on(event, callback);\n }\n\n send(data: any): void {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error(\"WebSocket n\u00E3o est\u00E1 conectado.\");\n }\n\n this.ws.send(data, (err) => {\n if (err) {\n console.error(\"Erro ao enviar dados pelo WebSocket:\", err);\n }\n });\n }\n\n close(): void {\n if (this.ws) {\n this.isClosedManually = true;\n this.ws.close();\n console.log(\"WebSocket fechado manualmente.\");\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": [null, null, null, null, null, null, null, null, null, "import { type IBackOffOptions, backOff } from \"exponential-backoff\";\nimport { BaseClient } from \"./baseClient.js\";\nimport type { AriClientConfig } from \"./interfaces/requests.js\";\nimport { Channels } from \"./resources/channels.js\";\nimport { WebSocketClient } from \"./websocketClient.js\";\n\nexport class AriClient {\n private wsClient: WebSocketClient | null = null;\n private readonly baseClient: BaseClient;\n\n public channels: Channels;\n\n /**\n * Initializes a new instance of the AriClient class.\n *\n * This constructor sets up the necessary configurations for connecting to an Asterisk ARI server,\n * including HTTP connections. WebSocket connections are handled dynamically per application.\n *\n * @param config - The configuration object for the ARI client.\n */\n constructor(private config: AriClientConfig) {\n const httpProtocol = config.secure ? \"https\" : \"http\";\n const normalizedHost = config.host.replace(/^https?:\\/\\//, \"\");\n const baseUrl = `${httpProtocol}://${normalizedHost}:${config.port}/ari`;\n\n this.baseClient = new BaseClient(baseUrl, config.username, config.password);\n this.channels = new Channels(this.baseClient);\n }\n\n /**\n * Connects to the ARI WebSocket for a specific application.\n *\n * @param app - The application name to connect to.\n * @returns {Promise<void>} Resolves when the WebSocket connects successfully.\n */\n async connectWebSocket(app: string): Promise<void> {\n if (!app) {\n throw new Error(\n \"The 'app' parameter is required to connect to the WebSocket.\",\n );\n }\n\n const protocol = this.config.secure ? \"wss\" : \"ws\";\n const wsUrl = `${protocol}://${encodeURIComponent(this.config.username)}:${encodeURIComponent(this.config.password)}@${\n this.config.host\n }:${this.config.port}/ari/events?app=${app}`;\n\n const backoffOptions: IBackOffOptions = {\n delayFirstAttempt: false,\n startingDelay: 1000,\n timeMultiple: 2,\n maxDelay: 30000,\n numOfAttempts: 10,\n jitter: \"full\",\n retry: (error: any, attemptNumber: number) => {\n console.warn(`Tentativa ${attemptNumber} falhou: ${error.message}`);\n return true;\n },\n };\n\n this.wsClient = new WebSocketClient(wsUrl);\n\n try {\n await backOff(async () => {\n if (!this.wsClient) {\n throw new Error(\"WebSocketClient instance is null.\");\n }\n await this.wsClient.connect();\n console.log(`WebSocket connected for app: ${app}`);\n }, backoffOptions);\n } catch (err) {\n console.error(\n \"Failed to connect to WebSocket after multiple attempts:\",\n err,\n );\n throw err;\n }\n }\n\n /**\n * Checks if the WebSocket connection is active.\n *\n * @returns {boolean} True if connected, false otherwise.\n */\n isWebSocketConnected(): boolean {\n return this.wsClient ? this.wsClient.isConnected() : false;\n }\n\n /**\n * Registers a callback for a specific WebSocket event.\n *\n * @param event - The WebSocket event to listen for.\n * @param callback - The callback function to execute when the event occurs.\n */\n onWebSocketEvent(event: string, callback: (data: any) => void): void {\n if (!this.wsClient) {\n throw new Error(\"WebSocket is not connected.\");\n }\n this.wsClient.on(event, callback);\n }\n\n /**\n * Closes the WebSocket connection.\n */\n closeWebSocket(): void {\n if (this.wsClient) {\n this.wsClient.close();\n this.wsClient = null;\n }\n }\n\n /**\n * Retrieves a list of active channels from the Asterisk ARI.\n *\n * @returns {Promise<any>} A promise resolving to the list of active channels.\n */\n async listChannels() {\n return this.baseClient.get(\"/channels\");\n }\n\n /**\n * Initiates a new channel on the Asterisk server.\n *\n * @param data - The parameters for creating the new channel.\n * @returns {Promise<any>} A promise resolving to the new channel's details.\n */\n async originateChannel(data: any) {\n return this.baseClient.post(\"/channels\", data);\n }\n}\n", "import axios, { type AxiosInstance } from \"axios\";\n\nexport class BaseClient {\n private client: AxiosInstance;\n\n constructor(baseUrl: string, username: string, password: string) {\n this.client = axios.create({\n baseURL: baseUrl,\n auth: { username, password },\n });\n }\n\n async get<T>(path: string): Promise<T> {\n const response = await this.client.get<T>(path);\n return response.data;\n }\n\n async post<T>(path: string, data?: unknown): Promise<T> {\n const response = await this.client.post<T>(path, data);\n return response.data;\n }\n}\n", "import type { BaseClient } from \"../baseClient.js\";\nimport type {\n Channel,\n OriginateRequest,\n} from \"../interfaces/channels.types.js\";\n\nexport class Channels {\n constructor(private client: BaseClient) {}\n\n // Lista todos os canais ativos\n async list(): Promise<Channel[]> {\n return this.client.get<Channel[]>(\"/channels\");\n }\n\n // Cria um novo canal\n async originate(data: OriginateRequest): Promise<Channel> {\n return this.client.post<Channel>(\"/channels\", data);\n }\n\n // Obt\u00E9m detalhes de um canal espec\u00EDfico\n async getDetails(channelId: string): Promise<Channel> {\n return this.client.get<Channel>(`/channels/${channelId}`);\n }\n\n // Desliga (hangup) um canal\n async hangup(channelId: string): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/hangup`);\n }\n\n // Continua no dialplan\n async continueDialplan(\n channelId: string,\n context?: string,\n extension?: string,\n priority?: number,\n label?: string,\n ): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/continue`, {\n context,\n extension,\n priority,\n label,\n });\n }\n\n // Move o canal para outra aplica\u00E7\u00E3o Stasis\n async moveToApplication(\n channelId: string,\n app: string,\n appArgs?: string,\n ): Promise<void> {\n return this.client.post<void>(`/channels/${channelId}/move`, {\n app,\n appArgs,\n });\n }\n}\n", "import WebSocket from \"ws\";\n\nexport class WebSocketClient {\n private ws: WebSocket | null = null;\n private isClosedManually = false; // Para evitar reconex\u00F5es autom\u00E1ticas quando fechado manualmente\n\n constructor(private url: string) {}\n\n async connect(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.ws = new WebSocket(this.url);\n\n this.ws.on(\"open\", () => {\n console.log(\"WebSocket conectado.\");\n this.isClosedManually = false;\n resolve();\n });\n\n this.ws.on(\"error\", (err) => {\n console.error(\"Erro na conex\u00E3o WebSocket:\", err);\n reject(err);\n });\n\n this.ws.on(\"close\", (code, reason) => {\n console.warn(`WebSocket desconectado: ${code} - ${reason}`);\n if (!this.isClosedManually) {\n console.warn(\n \"Desconex\u00E3o inesperada. Reconex\u00E3o ser\u00E1 gerenciada pelo AriClient.\",\n );\n }\n });\n });\n }\n\n isConnected(): boolean {\n return this.ws?.readyState === WebSocket.OPEN;\n }\n\n on(event: string, callback: (data: any) => void): void {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error(\"WebSocket n\u00E3o est\u00E1 conectado.\");\n }\n\n this.ws.on(event, callback);\n }\n\n send(data: any): void {\n if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {\n throw new Error(\"WebSocket n\u00E3o est\u00E1 conectado.\");\n }\n\n this.ws.send(data, (err) => {\n if (err) {\n console.error(\"Erro ao enviar dados pelo WebSocket:\", err);\n }\n });\n }\n\n close(): void {\n if (this.ws) {\n this.isClosedManually = true;\n this.ws.close();\n console.log(\"WebSocket fechado manualmente.\");\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Delay", "SkipFirstDelay", "AlwaysDelay", "backOff", "BackOff"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ariClient.d.ts","sourceRoot":"","sources":["../../../src/ari-client/ariClient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,qBAAa,SAAS;IAcR,OAAO,CAAC,MAAM;IAb1B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAEjC,QAAQ,EAAE,QAAQ,CAAC;IAE1B;;;;;;;OAOG;gBACiB,MAAM,EAAE,eAAe;IAS3C;;;;;OAKG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6ClD;;;;OAIG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAOpE;;OAEG;IACH,cAAc,IAAI,IAAI;IAOtB;;;;OAIG;IACG,YAAY;IAIlB;;;;;OAKG;IACG,gBAAgB,CAAC,IAAI,EAAE,GAAG;CAGjC"}
1
+ {"version":3,"file":"ariClient.d.ts","sourceRoot":"","sources":["../../../src/ari-client/ariClient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,qBAAa,SAAS;IAcR,OAAO,CAAC,MAAM;IAb1B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAEjC,QAAQ,EAAE,QAAQ,CAAC;IAE1B;;;;;;;OAOG;gBACiB,MAAM,EAAE,eAAe;IAS3C;;;;;OAKG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ClD;;;;OAIG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAOpE;;OAEG;IACH,cAAc,IAAI,IAAI;IAOtB;;;;OAIG;IACG,YAAY;IAIlB;;;;;OAKG;IACG,gBAAgB,CAAC,IAAI,EAAE,GAAG;CAGjC"}
@@ -3,8 +3,7 @@ export declare class WebSocketClient {
3
3
  private ws;
4
4
  private isClosedManually;
5
5
  constructor(url: string);
6
- connect(retryInterval?: number): Promise<void>;
7
- private reconnect;
6
+ connect(): Promise<void>;
8
7
  isConnected(): boolean;
9
8
  on(event: string, callback: (data: any) => void): void;
10
9
  send(data: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"websocketClient.d.ts","sourceRoot":"","sources":["../../../src/ari-client/websocketClient.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAId,OAAO,CAAC,GAAG;IAHvB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,gBAAgB,CAAS;gBAEb,GAAG,EAAE,MAAM;IAEzB,OAAO,CAAC,aAAa,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BlD,OAAO,CAAC,SAAS;IAOjB,WAAW,IAAI,OAAO;IAItB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAQtD,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAYrB,KAAK,IAAI,IAAI;CAOd"}
1
+ {"version":3,"file":"websocketClient.d.ts","sourceRoot":"","sources":["../../../src/ari-client/websocketClient.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAId,OAAO,CAAC,GAAG;IAHvB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,gBAAgB,CAAS;gBAEb,GAAG,EAAE,MAAM;IAEzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B9B,WAAW,IAAI,OAAO;IAItB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAQtD,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAYrB,KAAK,IAAI,IAAI;CAOd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ipcom/asterisk-ari",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "type": "module",
5
5
  "description": "JavaScript client for Asterisk REST Interface.",
6
6
  "homepage": "https://github.com/fabiotheo/ipcom-asterisk-ari",