telnyx 6.24.0 → 6.25.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.25.0 (2026-03-20)
4
+
5
+ Full Changelog: [v6.24.0...v6.25.0](https://github.com/team-telnyx/telnyx-node/compare/v6.24.0...v6.25.0)
6
+
7
+ ### Features
8
+
9
+ * **client:** add async iterator and stream() to WebSocket classes ([7913d4b](https://github.com/team-telnyx/telnyx-node/commit/7913d4b4abef030001c756678dbb13de09eac68d))
10
+
3
11
  ## 6.24.0 (2026-03-20)
4
12
 
5
13
  Full Changelog: [v6.23.0...v6.24.0](https://github.com/team-telnyx/telnyx-node/compare/v6.23.0...v6.24.0)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "telnyx",
3
- "version": "6.24.0",
3
+ "version": "6.25.0",
4
4
  "description": "Telnyx API SDK for global Voice, SMS, MMS, WhatsApp, Fax, Wireless IoT, SIP Trunking, and Call Control.",
5
5
  "author": "Telnyx <support@telnyx.com>",
6
6
  "types": "./index.d.ts",
@@ -2,6 +2,15 @@ import * as TextToSpeechAPI from "./text-to-speech.mjs";
2
2
  import { Telnyx } from "../../client.mjs";
3
3
  import { EventEmitter } from "../../core/EventEmitter.mjs";
4
4
  import { TelnyxError } from "../../core/error.mjs";
5
+ export type TextToSpeechStreamMessage = {
6
+ type: 'connecting' | 'open' | 'closing' | 'close';
7
+ } | {
8
+ type: 'message';
9
+ message: TextToSpeechAPI.StreamServerEvent;
10
+ } | {
11
+ type: 'error';
12
+ error: WebSocketError;
13
+ };
5
14
  export declare class WebSocketError extends TelnyxError {
6
15
  /**
7
16
  * The error data that the API sent back in an error event.
@@ -1 +1 @@
1
- {"version":3,"file":"internal-base.d.mts","sourceRoot":"","sources":["../../src/resources/text-to-speech/internal-base.ts"],"names":[],"mappings":"OAEO,KAAK,eAAe;OACpB,EAAE,MAAM,EAAE;OACV,EAAE,YAAY,EAAE;OAChB,EAAE,WAAW,EAAE;AAGtB,qBAAa,cAAe,SAAQ,WAAW;IAC7C;;OAEG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,GAAG,SAAS,CAAC;gBAErD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI;CAKxF;AAED,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;CAAE,GAAG,EAAE,CAAC;AAE7D,KAAK,eAAe,GAAG,QAAQ,CAC7B;IACE,KAAK,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,KAAK,IAAI,CAAC;IAC1D,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACxC,GAAG;KACD,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CACvF,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,KACpE,OAAO;CACb,CACF,CAAC;AAEF,8BAAsB,mBAAoB,SAAQ,YAAY,CAAC,eAAe,CAAC;IAC7E;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,IAAI;IAE7D;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAE9D,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAClE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CA0B5G;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CASnE"}
1
+ {"version":3,"file":"internal-base.d.mts","sourceRoot":"","sources":["../../src/resources/text-to-speech/internal-base.ts"],"names":[],"mappings":"OAEO,KAAK,eAAe;OACpB,EAAE,MAAM,EAAE;OACV,EAAE,YAAY,EAAE;OAChB,EAAE,WAAW,EAAE;AAGtB,MAAM,MAAM,yBAAyB,GACjC;IAAE,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,eAAe,CAAC,iBAAiB,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC;AAE7C,qBAAa,cAAe,SAAQ,WAAW;IAC7C;;OAEG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,GAAG,SAAS,CAAC;gBAErD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI;CAKxF;AAED,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;CAAE,GAAG,EAAE,CAAC;AAE7D,KAAK,eAAe,GAAG,QAAQ,CAC7B;IACE,KAAK,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,KAAK,IAAI,CAAC;IAC1D,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACxC,GAAG;KACD,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CACvF,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,KACpE,OAAO;CACb,CACF,CAAC;AAEF,8BAAsB,mBAAoB,SAAQ,YAAY,CAAC,eAAe,CAAC;IAC7E;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,IAAI;IAE7D;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAE9D,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAClE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CA0B5G;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CASnE"}
@@ -2,6 +2,15 @@ import * as TextToSpeechAPI from "./text-to-speech.js";
2
2
  import { Telnyx } from "../../client.js";
3
3
  import { EventEmitter } from "../../core/EventEmitter.js";
4
4
  import { TelnyxError } from "../../core/error.js";
5
+ export type TextToSpeechStreamMessage = {
6
+ type: 'connecting' | 'open' | 'closing' | 'close';
7
+ } | {
8
+ type: 'message';
9
+ message: TextToSpeechAPI.StreamServerEvent;
10
+ } | {
11
+ type: 'error';
12
+ error: WebSocketError;
13
+ };
5
14
  export declare class WebSocketError extends TelnyxError {
6
15
  /**
7
16
  * The error data that the API sent back in an error event.
@@ -1 +1 @@
1
- {"version":3,"file":"internal-base.d.ts","sourceRoot":"","sources":["../../src/resources/text-to-speech/internal-base.ts"],"names":[],"mappings":"OAEO,KAAK,eAAe;OACpB,EAAE,MAAM,EAAE;OACV,EAAE,YAAY,EAAE;OAChB,EAAE,WAAW,EAAE;AAGtB,qBAAa,cAAe,SAAQ,WAAW;IAC7C;;OAEG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,GAAG,SAAS,CAAC;gBAErD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI;CAKxF;AAED,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;CAAE,GAAG,EAAE,CAAC;AAE7D,KAAK,eAAe,GAAG,QAAQ,CAC7B;IACE,KAAK,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,KAAK,IAAI,CAAC;IAC1D,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACxC,GAAG;KACD,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CACvF,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,KACpE,OAAO;CACb,CACF,CAAC;AAEF,8BAAsB,mBAAoB,SAAQ,YAAY,CAAC,eAAe,CAAC;IAC7E;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,IAAI;IAE7D;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAE9D,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAClE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CA0B5G;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CASnE"}
1
+ {"version":3,"file":"internal-base.d.ts","sourceRoot":"","sources":["../../src/resources/text-to-speech/internal-base.ts"],"names":[],"mappings":"OAEO,KAAK,eAAe;OACpB,EAAE,MAAM,EAAE;OACV,EAAE,YAAY,EAAE;OAChB,EAAE,WAAW,EAAE;AAGtB,MAAM,MAAM,yBAAyB,GACjC;IAAE,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,eAAe,CAAC,iBAAiB,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC;AAE7C,qBAAa,cAAe,SAAQ,WAAW;IAC7C;;OAEG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,GAAG,SAAS,CAAC;gBAErD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI;CAKxF;AAED,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;CAAE,GAAG,EAAE,CAAC;AAE7D,KAAK,eAAe,GAAG,QAAQ,CAC7B;IACE,KAAK,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,KAAK,IAAI,CAAC;IAC1D,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACxC,GAAG;KACD,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CACvF,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,iBAAiB,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,KACpE,OAAO;CACb,CACF,CAAC;AAEF,8BAAsB,mBAAoB,SAAQ,YAAY,CAAC,eAAe,CAAC;IAC7E;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,GAAG,IAAI;IAE7D;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAE9D,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAClE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CA0B5G;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CASnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"internal-base.js","sourceRoot":"","sources":["../../src/resources/text-to-speech/internal-base.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AA0EtF,4BASC;AA/ED,6DAAuD;AACvD,+CAA+C;AAC/C,mDAAsD;AAEtD,MAAa,cAAe,SAAQ,mBAAW;IAM7C,YAAY,OAAe,EAAE,KAA0D;QACrF,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC;IAClC,CAAC;CACF;AAXD,wCAWC;AAeD,MAAsB,mBAAoB,SAAQ,2BAA6B;IAanE,QAAQ,CAChB,KAA0D,EAC1D,OAA4B,EAC5B,KAAW;QAEX,OAAO,GAAG,OAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC;QAEjE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,cAAc,CAC9B,OAAO;gBACL,iIAAiI,EACnI,KAAK,CACN,CAAC;YACF,aAAa;YACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjD,aAAa;QACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF;AAtCD,kDAsCC;AAED,SAAgB,QAAQ,CAAC,MAAc,EAAE,KAAqB;IAC5D,MAAM,IAAI,GAAG,wBAAwB,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,MAAM,GAAG,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"internal-base.js","sourceRoot":"","sources":["../../src/resources/text-to-speech/internal-base.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AA+EtF,4BASC;AApFD,6DAAuD;AACvD,+CAA+C;AAC/C,mDAAsD;AAOtD,MAAa,cAAe,SAAQ,mBAAW;IAM7C,YAAY,OAAe,EAAE,KAA0D;QACrF,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC;IAClC,CAAC;CACF;AAXD,wCAWC;AAeD,MAAsB,mBAAoB,SAAQ,2BAA6B;IAanE,QAAQ,CAChB,KAA0D,EAC1D,OAA4B,EAC5B,KAAW;QAEX,OAAO,GAAG,OAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC;QAEjE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,cAAc,CAC9B,OAAO;gBACL,iIAAiI,EACnI,KAAK,CACN,CAAC;YACF,aAAa;YACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjD,aAAa;QACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF;AAtCD,kDAsCC;AAED,SAAgB,QAAQ,CAAC,MAAc,EAAE,KAAqB;IAC5D,MAAM,IAAI,GAAG,wBAAwB,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,MAAM,GAAG,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"internal-base.mjs","sourceRoot":"","sources":["../../src/resources/text-to-speech/internal-base.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAI/E,EAAE,YAAY,EAAE;OAChB,EAAE,WAAW,EAAE;OACf,EAAE,cAAc,EAAE;AAEzB,MAAM,OAAO,cAAe,SAAQ,WAAW;IAM7C,YAAY,OAAe,EAAE,KAA0D;QACrF,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC;IAClC,CAAC;CACF;AAeD,MAAM,OAAgB,mBAAoB,SAAQ,YAA6B;IAanE,QAAQ,CAChB,KAA0D,EAC1D,OAA4B,EAC5B,KAAW;QAEX,OAAO,GAAG,OAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC;QAEjE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,cAAc,CAC9B,OAAO;gBACL,iIAAiI,EACnI,KAAK,CACN,CAAC;YACF,aAAa;YACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjD,aAAa;QACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,KAAqB;IAC5D,MAAM,IAAI,GAAG,wBAAwB,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"internal-base.mjs","sourceRoot":"","sources":["../../src/resources/text-to-speech/internal-base.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAI/E,EAAE,YAAY,EAAE;OAChB,EAAE,WAAW,EAAE;OACf,EAAE,cAAc,EAAE;AAOzB,MAAM,OAAO,cAAe,SAAQ,WAAW;IAM7C,YAAY,OAAe,EAAE,KAA0D;QACrF,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC;IAClC,CAAC;CACF;AAeD,MAAM,OAAgB,mBAAoB,SAAQ,YAA6B;IAanE,QAAQ,CAChB,KAA0D,EAC1D,OAA4B,EAC5B,KAAW;QAEX,OAAO,GAAG,OAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC;QAEjE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,cAAc,CAC9B,OAAO;gBACL,iIAAiI,EACnI,KAAK,CACN,CAAC;YACF,aAAa;YACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjD,aAAa;QACb,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,KAAqB;IAC5D,MAAM,IAAI,GAAG,wBAAwB,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import * as WS from 'ws';
2
- import { TextToSpeechEmitter } from "./internal-base.mjs";
2
+ import { TextToSpeechEmitter, TextToSpeechStreamMessage } from "./internal-base.mjs";
3
3
  import * as TextToSpeechAPI from "./text-to-speech.mjs";
4
4
  import { Telnyx } from "../../client.mjs";
5
5
  export declare class TextToSpeechWS extends TextToSpeechEmitter {
@@ -12,6 +12,31 @@ export declare class TextToSpeechWS extends TextToSpeechEmitter {
12
12
  code: number;
13
13
  reason: string;
14
14
  }): void;
15
+ /**
16
+ * Returns an async iterator over WebSocket lifecycle and message events,
17
+ * providing an alternative to the event-based `.on()` API.
18
+ * The iterator will exit if the socket closes but breaking out of the iterator
19
+ * does not close the socket.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * for await (const event of connection.stream()) {
24
+ * switch (event.type) {
25
+ * case 'message':
26
+ * console.log('received:', event.message);
27
+ * break;
28
+ * case 'error':
29
+ * console.error(event.error);
30
+ * break;
31
+ * case 'close':
32
+ * console.log('connection closed');
33
+ * break;
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ stream(): AsyncIterableIterator<TextToSpeechStreamMessage>;
39
+ [Symbol.asyncIterator](): AsyncIterableIterator<TextToSpeechStreamMessage>;
15
40
  private authHeaders;
16
41
  }
17
42
  //# sourceMappingURL=ws.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.mts","sourceRoot":"","sources":["../../src/resources/text-to-speech/ws.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,MAAM,IAAI;OACjB,EAAE,mBAAmB,EAAY;OACjC,KAAK,eAAe;OACpB,EAAE,MAAM,EAAE;AAEjB,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IACrB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,IAAI,GAAG,SAAS;IAuCxG,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB;IAQ7C,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAQ9C,OAAO,CAAC,WAAW;CAMpB"}
1
+ {"version":3,"file":"ws.d.mts","sourceRoot":"","sources":["../../src/resources/text-to-speech/ws.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,MAAM,IAAI;OACjB,EAAE,mBAAmB,EAAE,yBAAyB,EAA4B;OAC5E,KAAK,eAAe;OACpB,EAAE,MAAM,EAAE;AAEjB,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IACrB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,IAAI,GAAG,SAAS;IAuCxG,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB;IAQ7C,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAQ9C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,IAAI,qBAAqB,CAAC,yBAAyB,CAAC;IAI1D,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,yBAAyB,CAAC;IAsG1E,OAAO,CAAC,WAAW;CAMpB"}
@@ -1,5 +1,5 @@
1
1
  import * as WS from 'ws';
2
- import { TextToSpeechEmitter } from "./internal-base.js";
2
+ import { TextToSpeechEmitter, TextToSpeechStreamMessage } from "./internal-base.js";
3
3
  import * as TextToSpeechAPI from "./text-to-speech.js";
4
4
  import { Telnyx } from "../../client.js";
5
5
  export declare class TextToSpeechWS extends TextToSpeechEmitter {
@@ -12,6 +12,31 @@ export declare class TextToSpeechWS extends TextToSpeechEmitter {
12
12
  code: number;
13
13
  reason: string;
14
14
  }): void;
15
+ /**
16
+ * Returns an async iterator over WebSocket lifecycle and message events,
17
+ * providing an alternative to the event-based `.on()` API.
18
+ * The iterator will exit if the socket closes but breaking out of the iterator
19
+ * does not close the socket.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * for await (const event of connection.stream()) {
24
+ * switch (event.type) {
25
+ * case 'message':
26
+ * console.log('received:', event.message);
27
+ * break;
28
+ * case 'error':
29
+ * console.error(event.error);
30
+ * break;
31
+ * case 'close':
32
+ * console.log('connection closed');
33
+ * break;
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ stream(): AsyncIterableIterator<TextToSpeechStreamMessage>;
39
+ [Symbol.asyncIterator](): AsyncIterableIterator<TextToSpeechStreamMessage>;
15
40
  private authHeaders;
16
41
  }
17
42
  //# sourceMappingURL=ws.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/resources/text-to-speech/ws.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,MAAM,IAAI;OACjB,EAAE,mBAAmB,EAAY;OACjC,KAAK,eAAe;OACpB,EAAE,MAAM,EAAE;AAEjB,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IACrB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,IAAI,GAAG,SAAS;IAuCxG,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB;IAQ7C,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAQ9C,OAAO,CAAC,WAAW;CAMpB"}
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/resources/text-to-speech/ws.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,MAAM,IAAI;OACjB,EAAE,mBAAmB,EAAE,yBAAyB,EAA4B;OAC5E,KAAK,eAAe;OACpB,EAAE,MAAM,EAAE;AAEjB,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IACrB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,IAAI,GAAG,SAAS;IAuCxG,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB;IAQ7C,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAQ9C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,IAAI,qBAAqB,CAAC,yBAAyB,CAAC;IAI1D,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,yBAAyB,CAAC;IAsG1E,OAAO,CAAC,WAAW;CAMpB"}
@@ -58,6 +58,124 @@ class TextToSpeechWS extends internal_base_1.TextToSpeechEmitter {
58
58
  this._onError(null, 'could not close the connection', err);
59
59
  }
60
60
  }
61
+ /**
62
+ * Returns an async iterator over WebSocket lifecycle and message events,
63
+ * providing an alternative to the event-based `.on()` API.
64
+ * The iterator will exit if the socket closes but breaking out of the iterator
65
+ * does not close the socket.
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * for await (const event of connection.stream()) {
70
+ * switch (event.type) {
71
+ * case 'message':
72
+ * console.log('received:', event.message);
73
+ * break;
74
+ * case 'error':
75
+ * console.error(event.error);
76
+ * break;
77
+ * case 'close':
78
+ * console.log('connection closed');
79
+ * break;
80
+ * }
81
+ * }
82
+ * ```
83
+ */
84
+ stream() {
85
+ return this[Symbol.asyncIterator]();
86
+ }
87
+ [Symbol.asyncIterator]() {
88
+ // Two-queue async iterator: `queue` buffers incoming messages,
89
+ // `resolvers` buffers waiting next() calls. A push wakes the
90
+ // oldest next(); a next() drains the oldest message.
91
+ const queue = [];
92
+ const resolvers = [];
93
+ let done = false;
94
+ const push = (msg) => {
95
+ queue.push(msg);
96
+ resolvers.shift()?.();
97
+ };
98
+ const onEvent = (event) => {
99
+ if (event.type === 'error')
100
+ return; // handled by onEmitterError
101
+ push({ type: 'message', message: event });
102
+ };
103
+ // Catches both API-level and socket-level errors via _onError → _emit('error')
104
+ const onEmitterError = (err) => {
105
+ push({ type: 'error', error: err });
106
+ };
107
+ const onOpen = () => {
108
+ push({ type: 'open' });
109
+ };
110
+ const flushResolvers = () => {
111
+ for (let resolver = resolvers.shift(); resolver; resolver = resolvers.shift()) {
112
+ resolver();
113
+ }
114
+ };
115
+ const onClose = () => {
116
+ push({ type: 'close' });
117
+ done = true;
118
+ flushResolvers();
119
+ cleanup();
120
+ };
121
+ const cleanup = () => {
122
+ this.off('event', onEvent);
123
+ this.off('error', onEmitterError);
124
+ this.socket.off('open', onOpen);
125
+ this.socket.off('close', onClose);
126
+ };
127
+ this.on('event', onEvent);
128
+ this.on('error', onEmitterError);
129
+ this.socket.on('open', onOpen);
130
+ this.socket.on('close', onClose);
131
+ switch (this.socket.readyState) {
132
+ case WS.WebSocket.CONNECTING:
133
+ push({ type: 'connecting' });
134
+ break;
135
+ case WS.WebSocket.OPEN:
136
+ push({ type: 'open' });
137
+ break;
138
+ case WS.WebSocket.CLOSING:
139
+ push({ type: 'closing' });
140
+ break;
141
+ case WS.WebSocket.CLOSED:
142
+ push({ type: 'close' });
143
+ done = true;
144
+ cleanup();
145
+ break;
146
+ }
147
+ const resolve = (res) => {
148
+ if (queue.length > 0) {
149
+ res({ value: queue.shift(), done: false });
150
+ }
151
+ else if (done) {
152
+ res({ value: undefined, done: true });
153
+ }
154
+ else {
155
+ return false;
156
+ }
157
+ return true;
158
+ };
159
+ const next = () => new Promise((res) => {
160
+ if (resolve(res))
161
+ return;
162
+ resolvers.push(() => {
163
+ resolve(res);
164
+ });
165
+ });
166
+ return {
167
+ next,
168
+ return: () => {
169
+ done = true;
170
+ cleanup();
171
+ flushResolvers();
172
+ return Promise.resolve({ value: undefined, done: true });
173
+ },
174
+ [Symbol.asyncIterator]() {
175
+ return this;
176
+ },
177
+ };
178
+ }
61
179
  authHeaders() {
62
180
  if (this.client.apiKey) {
63
181
  return { Authorization: `Bearer ${this.client.apiKey}` };
@@ -1 +1 @@
1
- {"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/resources/text-to-speech/ws.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;AAEtF,+CAAyB;AACzB,sDAAgE;AAIhE,MAAa,cAAe,SAAQ,mCAAmB;IAKrD,YAAY,MAAc,EAAE,UAA6B,EAAE,OAA6C;QACtG,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,IAAA,wBAAQ,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;YACvC,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,WAAW,EAAE;gBACrB,GAAG,OAAO,EAAE,OAAO;aACpB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;gBAClB,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAsC,CAAC;gBAC7E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC;oBAC5D,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAE3B,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,sEAAsE;oBACtE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAwC;QAC3C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAwC;QAC5C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3D,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAlED,wCAkEC"}
1
+ {"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/resources/text-to-speech/ws.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,124 @@ export class TextToSpeechWS extends TextToSpeechEmitter {
54
54
  this._onError(null, 'could not close the connection', err);
55
55
  }
56
56
  }
57
+ /**
58
+ * Returns an async iterator over WebSocket lifecycle and message events,
59
+ * providing an alternative to the event-based `.on()` API.
60
+ * The iterator will exit if the socket closes but breaking out of the iterator
61
+ * does not close the socket.
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * for await (const event of connection.stream()) {
66
+ * switch (event.type) {
67
+ * case 'message':
68
+ * console.log('received:', event.message);
69
+ * break;
70
+ * case 'error':
71
+ * console.error(event.error);
72
+ * break;
73
+ * case 'close':
74
+ * console.log('connection closed');
75
+ * break;
76
+ * }
77
+ * }
78
+ * ```
79
+ */
80
+ stream() {
81
+ return this[Symbol.asyncIterator]();
82
+ }
83
+ [Symbol.asyncIterator]() {
84
+ // Two-queue async iterator: `queue` buffers incoming messages,
85
+ // `resolvers` buffers waiting next() calls. A push wakes the
86
+ // oldest next(); a next() drains the oldest message.
87
+ const queue = [];
88
+ const resolvers = [];
89
+ let done = false;
90
+ const push = (msg) => {
91
+ queue.push(msg);
92
+ resolvers.shift()?.();
93
+ };
94
+ const onEvent = (event) => {
95
+ if (event.type === 'error')
96
+ return; // handled by onEmitterError
97
+ push({ type: 'message', message: event });
98
+ };
99
+ // Catches both API-level and socket-level errors via _onError → _emit('error')
100
+ const onEmitterError = (err) => {
101
+ push({ type: 'error', error: err });
102
+ };
103
+ const onOpen = () => {
104
+ push({ type: 'open' });
105
+ };
106
+ const flushResolvers = () => {
107
+ for (let resolver = resolvers.shift(); resolver; resolver = resolvers.shift()) {
108
+ resolver();
109
+ }
110
+ };
111
+ const onClose = () => {
112
+ push({ type: 'close' });
113
+ done = true;
114
+ flushResolvers();
115
+ cleanup();
116
+ };
117
+ const cleanup = () => {
118
+ this.off('event', onEvent);
119
+ this.off('error', onEmitterError);
120
+ this.socket.off('open', onOpen);
121
+ this.socket.off('close', onClose);
122
+ };
123
+ this.on('event', onEvent);
124
+ this.on('error', onEmitterError);
125
+ this.socket.on('open', onOpen);
126
+ this.socket.on('close', onClose);
127
+ switch (this.socket.readyState) {
128
+ case WS.WebSocket.CONNECTING:
129
+ push({ type: 'connecting' });
130
+ break;
131
+ case WS.WebSocket.OPEN:
132
+ push({ type: 'open' });
133
+ break;
134
+ case WS.WebSocket.CLOSING:
135
+ push({ type: 'closing' });
136
+ break;
137
+ case WS.WebSocket.CLOSED:
138
+ push({ type: 'close' });
139
+ done = true;
140
+ cleanup();
141
+ break;
142
+ }
143
+ const resolve = (res) => {
144
+ if (queue.length > 0) {
145
+ res({ value: queue.shift(), done: false });
146
+ }
147
+ else if (done) {
148
+ res({ value: undefined, done: true });
149
+ }
150
+ else {
151
+ return false;
152
+ }
153
+ return true;
154
+ };
155
+ const next = () => new Promise((res) => {
156
+ if (resolve(res))
157
+ return;
158
+ resolvers.push(() => {
159
+ resolve(res);
160
+ });
161
+ });
162
+ return {
163
+ next,
164
+ return: () => {
165
+ done = true;
166
+ cleanup();
167
+ flushResolvers();
168
+ return Promise.resolve({ value: undefined, done: true });
169
+ },
170
+ [Symbol.asyncIterator]() {
171
+ return this;
172
+ },
173
+ };
174
+ }
57
175
  authHeaders() {
58
176
  if (this.client.apiKey) {
59
177
  return { Authorization: `Bearer ${this.client.apiKey}` };
@@ -1 +1 @@
1
- {"version":3,"file":"ws.mjs","sourceRoot":"","sources":["../../src/resources/text-to-speech/ws.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,KAAK,EAAE,MAAM,IAAI;OACjB,EAAE,mBAAmB,EAAE,QAAQ,EAAE;AAIxC,MAAM,OAAO,cAAe,SAAQ,mBAAmB;IAKrD,YAAY,MAAc,EAAE,UAA6B,EAAE,OAA6C;QACtG,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;YACvC,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,WAAW,EAAE;gBACrB,GAAG,OAAO,EAAE,OAAO;aACpB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;gBAClB,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAsC,CAAC;gBAC7E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC;oBAC5D,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAE3B,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,sEAAsE;oBACtE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAwC;QAC3C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAwC;QAC5C,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,gCAAgC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3D,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
1
+ {"version":3,"file":"ws.mjs","sourceRoot":"","sources":["../../src/resources/text-to-speech/ws.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,11 @@ import { EventEmitter } from '../../core/EventEmitter';
6
6
  import { TelnyxError } from '../../core/error';
7
7
  import { stringifyQuery } from '../../internal/utils';
8
8
 
9
+ export type TextToSpeechStreamMessage =
10
+ | { type: 'connecting' | 'open' | 'closing' | 'close' }
11
+ | { type: 'message'; message: TextToSpeechAPI.StreamServerEvent }
12
+ | { type: 'error'; error: WebSocketError };
13
+
9
14
  export class WebSocketError extends TelnyxError {
10
15
  /**
11
16
  * The error data that the API sent back in an error event.
@@ -1,7 +1,7 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  import * as WS from 'ws';
4
- import { TextToSpeechEmitter, buildURL } from './internal-base';
4
+ import { TextToSpeechEmitter, TextToSpeechStreamMessage, WebSocketError, buildURL } from './internal-base';
5
5
  import * as TextToSpeechAPI from './text-to-speech';
6
6
  import { Telnyx } from '../../client';
7
7
 
@@ -65,6 +65,135 @@ export class TextToSpeechWS extends TextToSpeechEmitter {
65
65
  }
66
66
  }
67
67
 
68
+ /**
69
+ * Returns an async iterator over WebSocket lifecycle and message events,
70
+ * providing an alternative to the event-based `.on()` API.
71
+ * The iterator will exit if the socket closes but breaking out of the iterator
72
+ * does not close the socket.
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * for await (const event of connection.stream()) {
77
+ * switch (event.type) {
78
+ * case 'message':
79
+ * console.log('received:', event.message);
80
+ * break;
81
+ * case 'error':
82
+ * console.error(event.error);
83
+ * break;
84
+ * case 'close':
85
+ * console.log('connection closed');
86
+ * break;
87
+ * }
88
+ * }
89
+ * ```
90
+ */
91
+ stream(): AsyncIterableIterator<TextToSpeechStreamMessage> {
92
+ return this[Symbol.asyncIterator]();
93
+ }
94
+
95
+ [Symbol.asyncIterator](): AsyncIterableIterator<TextToSpeechStreamMessage> {
96
+ // Two-queue async iterator: `queue` buffers incoming messages,
97
+ // `resolvers` buffers waiting next() calls. A push wakes the
98
+ // oldest next(); a next() drains the oldest message.
99
+ const queue: TextToSpeechStreamMessage[] = [];
100
+ const resolvers: (() => void)[] = [];
101
+ let done = false;
102
+
103
+ const push = (msg: TextToSpeechStreamMessage) => {
104
+ queue.push(msg);
105
+ resolvers.shift()?.();
106
+ };
107
+
108
+ const onEvent = (event: TextToSpeechAPI.StreamServerEvent) => {
109
+ if (event.type === 'error') return; // handled by onEmitterError
110
+ push({ type: 'message', message: event });
111
+ };
112
+
113
+ // Catches both API-level and socket-level errors via _onError → _emit('error')
114
+ const onEmitterError = (err: WebSocketError) => {
115
+ push({ type: 'error', error: err });
116
+ };
117
+
118
+ const onOpen = () => {
119
+ push({ type: 'open' });
120
+ };
121
+
122
+ const flushResolvers = () => {
123
+ for (let resolver = resolvers.shift(); resolver; resolver = resolvers.shift()) {
124
+ resolver();
125
+ }
126
+ };
127
+
128
+ const onClose = () => {
129
+ push({ type: 'close' });
130
+ done = true;
131
+ flushResolvers();
132
+ cleanup();
133
+ };
134
+
135
+ const cleanup = () => {
136
+ this.off('event', onEvent);
137
+ this.off('error', onEmitterError);
138
+ this.socket.off('open', onOpen);
139
+ this.socket.off('close', onClose);
140
+ };
141
+
142
+ this.on('event', onEvent);
143
+ this.on('error', onEmitterError);
144
+ this.socket.on('open', onOpen);
145
+ this.socket.on('close', onClose);
146
+
147
+ switch (this.socket.readyState) {
148
+ case WS.WebSocket.CONNECTING:
149
+ push({ type: 'connecting' });
150
+ break;
151
+ case WS.WebSocket.OPEN:
152
+ push({ type: 'open' });
153
+ break;
154
+ case WS.WebSocket.CLOSING:
155
+ push({ type: 'closing' });
156
+ break;
157
+ case WS.WebSocket.CLOSED:
158
+ push({ type: 'close' });
159
+ done = true;
160
+ cleanup();
161
+ break;
162
+ }
163
+
164
+ const resolve = (res: (value: IteratorResult<TextToSpeechStreamMessage>) => void) => {
165
+ if (queue.length > 0) {
166
+ res({ value: queue.shift()!, done: false });
167
+ } else if (done) {
168
+ res({ value: undefined, done: true });
169
+ } else {
170
+ return false;
171
+ }
172
+ return true;
173
+ };
174
+
175
+ const next = (): Promise<IteratorResult<TextToSpeechStreamMessage>> =>
176
+ new Promise((res) => {
177
+ if (resolve(res)) return;
178
+ resolvers.push(() => {
179
+ resolve(res);
180
+ });
181
+ });
182
+
183
+ return {
184
+ next,
185
+ return: (): Promise<IteratorReturnResult<undefined>> => {
186
+ done = true;
187
+ cleanup();
188
+ flushResolvers();
189
+ return Promise.resolve({ value: undefined, done: true });
190
+ },
191
+ [Symbol.asyncIterator]() {
192
+ return this;
193
+ },
194
+ };
195
+ }
196
+
68
197
  private authHeaders(): Record<string, string> {
69
198
  if (this.client.apiKey) {
70
199
  return { Authorization: `Bearer ${this.client.apiKey}` };
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '6.24.0'; // x-release-please-version
1
+ export const VERSION = '6.25.0'; // x-release-please-version
package/version.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "6.24.0";
1
+ export declare const VERSION = "6.25.0";
2
2
  //# sourceMappingURL=version.d.mts.map
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "6.24.0";
1
+ export declare const VERSION = "6.25.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '6.24.0'; // x-release-please-version
4
+ exports.VERSION = '6.25.0'; // x-release-please-version
5
5
  //# sourceMappingURL=version.js.map
package/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '6.24.0'; // x-release-please-version
1
+ export const VERSION = '6.25.0'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map