@deepgram/sdk 3.3.5 → 3.4.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.
Files changed (295) hide show
  1. package/README.md +129 -9
  2. package/dist/main/DeepgramClient.d.ts +65 -12
  3. package/dist/main/DeepgramClient.d.ts.map +1 -1
  4. package/dist/main/DeepgramClient.js +73 -18
  5. package/dist/main/DeepgramClient.js.map +1 -1
  6. package/dist/main/index.d.ts +13 -4
  7. package/dist/main/index.d.ts.map +1 -1
  8. package/dist/main/index.js +18 -8
  9. package/dist/main/index.js.map +1 -1
  10. package/dist/main/lib/constants.d.ts +16 -7
  11. package/dist/main/lib/constants.d.ts.map +1 -1
  12. package/dist/main/lib/constants.js +26 -9
  13. package/dist/main/lib/constants.js.map +1 -1
  14. package/dist/main/lib/enums/LiveConnectionState.d.ts +5 -0
  15. package/dist/main/lib/enums/LiveConnectionState.d.ts.map +1 -1
  16. package/dist/main/lib/enums/LiveConnectionState.js +5 -0
  17. package/dist/main/lib/enums/LiveConnectionState.js.map +1 -1
  18. package/dist/main/lib/enums/LiveTranscriptionEvents.d.ts +24 -3
  19. package/dist/main/lib/enums/LiveTranscriptionEvents.d.ts.map +1 -1
  20. package/dist/main/lib/enums/LiveTranscriptionEvents.js +23 -2
  21. package/dist/main/lib/enums/LiveTranscriptionEvents.js.map +1 -1
  22. package/dist/main/lib/enums/index.d.ts +2 -2
  23. package/dist/main/lib/enums/index.d.ts.map +1 -1
  24. package/dist/main/lib/enums/index.js +16 -5
  25. package/dist/main/lib/enums/index.js.map +1 -1
  26. package/dist/main/lib/fetch.d.ts +19 -1
  27. package/dist/main/lib/fetch.d.ts.map +1 -1
  28. package/dist/main/lib/fetch.js +19 -1
  29. package/dist/main/lib/fetch.js.map +1 -1
  30. package/dist/main/lib/helpers.d.ts +9 -5
  31. package/dist/main/lib/helpers.d.ts.map +1 -1
  32. package/dist/main/lib/helpers.js +82 -7
  33. package/dist/main/lib/helpers.js.map +1 -1
  34. package/dist/main/lib/types/CreateProjectKeySchema.d.ts +0 -1
  35. package/dist/main/lib/types/CreateProjectKeySchema.d.ts.map +1 -1
  36. package/dist/main/lib/types/DeepgramClientOptions.d.ts +75 -8
  37. package/dist/main/lib/types/DeepgramClientOptions.d.ts.map +1 -1
  38. package/dist/main/lib/types/Fetch.d.ts +3 -13
  39. package/dist/main/lib/types/Fetch.d.ts.map +1 -1
  40. package/dist/main/lib/types/LiveConfigOptions.d.ts +6 -3
  41. package/dist/main/lib/types/LiveConfigOptions.d.ts.map +1 -1
  42. package/dist/main/lib/types/TranscriptionSchema.d.ts +0 -1
  43. package/dist/main/lib/types/TranscriptionSchema.d.ts.map +1 -1
  44. package/dist/main/lib/types/UpdateProjectMemberScopeSchema.d.ts +1 -1
  45. package/dist/main/lib/types/UpdateProjectMemberScopeSchema.d.ts.map +1 -1
  46. package/dist/main/lib/types/UpdateProjectSchema.d.ts +0 -1
  47. package/dist/main/lib/types/UpdateProjectSchema.d.ts.map +1 -1
  48. package/dist/main/lib/types/index.d.ts +39 -39
  49. package/dist/main/lib/types/index.d.ts.map +1 -1
  50. package/dist/main/lib/types/index.js +53 -0
  51. package/dist/main/lib/types/index.js.map +1 -1
  52. package/dist/main/lib/version.d.ts +1 -1
  53. package/dist/main/lib/version.js +1 -1
  54. package/dist/main/packages/AbstractClient.d.ts +63 -10
  55. package/dist/main/packages/AbstractClient.d.ts.map +1 -1
  56. package/dist/main/packages/AbstractClient.js +103 -50
  57. package/dist/main/packages/AbstractClient.js.map +1 -1
  58. package/dist/main/packages/AbstractLiveClient.d.ts +114 -0
  59. package/dist/main/packages/AbstractLiveClient.d.ts.map +1 -0
  60. package/dist/main/packages/AbstractLiveClient.js +238 -0
  61. package/dist/main/packages/AbstractLiveClient.js.map +1 -0
  62. package/dist/main/packages/AbstractRestClient.d.ts +105 -0
  63. package/dist/main/packages/AbstractRestClient.d.ts.map +1 -0
  64. package/dist/main/packages/AbstractRestClient.js +185 -0
  65. package/dist/main/packages/AbstractRestClient.js.map +1 -0
  66. package/dist/main/packages/ListenClient.d.ts +21 -4
  67. package/dist/main/packages/ListenClient.d.ts.map +1 -1
  68. package/dist/main/packages/ListenClient.js +25 -5
  69. package/dist/main/packages/ListenClient.js.map +1 -1
  70. package/dist/main/packages/ListenLiveClient.d.ts +58 -0
  71. package/dist/main/packages/ListenLiveClient.d.ts.map +1 -0
  72. package/dist/main/packages/ListenLiveClient.js +119 -0
  73. package/dist/main/packages/ListenLiveClient.js.map +1 -0
  74. package/dist/main/packages/ListenRestClient.d.ts +57 -0
  75. package/dist/main/packages/ListenRestClient.d.ts.map +1 -0
  76. package/dist/main/packages/ListenRestClient.js +167 -0
  77. package/dist/main/packages/ListenRestClient.js.map +1 -0
  78. package/dist/main/packages/ManageRestClient.d.ts +286 -0
  79. package/dist/main/packages/ManageRestClient.d.ts.map +1 -0
  80. package/dist/main/packages/ManageRestClient.js +628 -0
  81. package/dist/main/packages/ManageRestClient.js.map +1 -0
  82. package/dist/main/packages/ReadRestClient.d.ts +57 -0
  83. package/dist/main/packages/ReadRestClient.d.ts.map +1 -0
  84. package/dist/main/packages/ReadRestClient.js +165 -0
  85. package/dist/main/packages/ReadRestClient.js.map +1 -0
  86. package/dist/main/packages/SelfHostedRestClient.d.ts +47 -0
  87. package/dist/main/packages/SelfHostedRestClient.d.ts.map +1 -0
  88. package/dist/main/packages/SelfHostedRestClient.js +120 -0
  89. package/dist/main/packages/SelfHostedRestClient.js.map +1 -0
  90. package/dist/main/packages/SpeakRestClient.d.ts +36 -0
  91. package/dist/main/packages/SpeakRestClient.d.ts.map +1 -0
  92. package/dist/main/packages/SpeakRestClient.js +84 -0
  93. package/dist/main/packages/SpeakRestClient.js.map +1 -0
  94. package/dist/main/packages/index.d.ts +10 -8
  95. package/dist/main/packages/index.d.ts.map +1 -1
  96. package/dist/main/packages/index.js +24 -17
  97. package/dist/main/packages/index.js.map +1 -1
  98. package/dist/module/DeepgramClient.d.ts +65 -12
  99. package/dist/module/DeepgramClient.d.ts.map +1 -1
  100. package/dist/module/DeepgramClient.js +72 -17
  101. package/dist/module/DeepgramClient.js.map +1 -1
  102. package/dist/module/index.d.ts +13 -4
  103. package/dist/module/index.d.ts.map +1 -1
  104. package/dist/module/index.js +18 -8
  105. package/dist/module/index.js.map +1 -1
  106. package/dist/module/lib/constants.d.ts +16 -7
  107. package/dist/module/lib/constants.d.ts.map +1 -1
  108. package/dist/module/lib/constants.js +26 -9
  109. package/dist/module/lib/constants.js.map +1 -1
  110. package/dist/module/lib/enums/LiveConnectionState.d.ts +5 -0
  111. package/dist/module/lib/enums/LiveConnectionState.d.ts.map +1 -1
  112. package/dist/module/lib/enums/LiveConnectionState.js +5 -0
  113. package/dist/module/lib/enums/LiveConnectionState.js.map +1 -1
  114. package/dist/module/lib/enums/LiveTranscriptionEvents.d.ts +24 -3
  115. package/dist/module/lib/enums/LiveTranscriptionEvents.d.ts.map +1 -1
  116. package/dist/module/lib/enums/LiveTranscriptionEvents.js +23 -2
  117. package/dist/module/lib/enums/LiveTranscriptionEvents.js.map +1 -1
  118. package/dist/module/lib/enums/index.d.ts +2 -2
  119. package/dist/module/lib/enums/index.d.ts.map +1 -1
  120. package/dist/module/lib/enums/index.js +2 -2
  121. package/dist/module/lib/enums/index.js.map +1 -1
  122. package/dist/module/lib/fetch.d.ts +19 -1
  123. package/dist/module/lib/fetch.d.ts.map +1 -1
  124. package/dist/module/lib/fetch.js +19 -1
  125. package/dist/module/lib/fetch.js.map +1 -1
  126. package/dist/module/lib/helpers.d.ts +9 -5
  127. package/dist/module/lib/helpers.d.ts.map +1 -1
  128. package/dist/module/lib/helpers.js +75 -4
  129. package/dist/module/lib/helpers.js.map +1 -1
  130. package/dist/module/lib/types/CreateProjectKeySchema.d.ts +0 -1
  131. package/dist/module/lib/types/CreateProjectKeySchema.d.ts.map +1 -1
  132. package/dist/module/lib/types/DeepgramClientOptions.d.ts +75 -8
  133. package/dist/module/lib/types/DeepgramClientOptions.d.ts.map +1 -1
  134. package/dist/module/lib/types/Fetch.d.ts +3 -13
  135. package/dist/module/lib/types/Fetch.d.ts.map +1 -1
  136. package/dist/module/lib/types/LiveConfigOptions.d.ts +6 -3
  137. package/dist/module/lib/types/LiveConfigOptions.d.ts.map +1 -1
  138. package/dist/module/lib/types/TranscriptionSchema.d.ts +0 -1
  139. package/dist/module/lib/types/TranscriptionSchema.d.ts.map +1 -1
  140. package/dist/module/lib/types/UpdateProjectMemberScopeSchema.d.ts +1 -1
  141. package/dist/module/lib/types/UpdateProjectMemberScopeSchema.d.ts.map +1 -1
  142. package/dist/module/lib/types/UpdateProjectSchema.d.ts +0 -1
  143. package/dist/module/lib/types/UpdateProjectSchema.d.ts.map +1 -1
  144. package/dist/module/lib/types/index.d.ts +39 -39
  145. package/dist/module/lib/types/index.d.ts.map +1 -1
  146. package/dist/module/lib/types/index.js +39 -1
  147. package/dist/module/lib/types/index.js.map +1 -1
  148. package/dist/module/lib/version.d.ts +1 -1
  149. package/dist/module/lib/version.js +1 -1
  150. package/dist/module/packages/AbstractClient.d.ts +63 -10
  151. package/dist/module/packages/AbstractClient.d.ts.map +1 -1
  152. package/dist/module/packages/AbstractClient.js +99 -50
  153. package/dist/module/packages/AbstractClient.js.map +1 -1
  154. package/dist/module/packages/AbstractLiveClient.d.ts +114 -0
  155. package/dist/module/packages/AbstractLiveClient.d.ts.map +1 -0
  156. package/dist/module/packages/AbstractLiveClient.js +211 -0
  157. package/dist/module/packages/AbstractLiveClient.js.map +1 -0
  158. package/dist/module/packages/AbstractRestClient.d.ts +105 -0
  159. package/dist/module/packages/AbstractRestClient.d.ts.map +1 -0
  160. package/dist/module/packages/AbstractRestClient.js +178 -0
  161. package/dist/module/packages/AbstractRestClient.js.map +1 -0
  162. package/dist/module/packages/ListenClient.d.ts +21 -4
  163. package/dist/module/packages/ListenClient.d.ts.map +1 -1
  164. package/dist/module/packages/ListenClient.js +25 -5
  165. package/dist/module/packages/ListenClient.js.map +1 -1
  166. package/dist/module/packages/ListenLiveClient.d.ts +58 -0
  167. package/dist/module/packages/ListenLiveClient.d.ts.map +1 -0
  168. package/dist/module/packages/ListenLiveClient.js +115 -0
  169. package/dist/module/packages/ListenLiveClient.js.map +1 -0
  170. package/dist/module/packages/ListenRestClient.d.ts +57 -0
  171. package/dist/module/packages/ListenRestClient.d.ts.map +1 -0
  172. package/dist/module/packages/ListenRestClient.js +163 -0
  173. package/dist/module/packages/ListenRestClient.js.map +1 -0
  174. package/dist/module/packages/ManageRestClient.d.ts +286 -0
  175. package/dist/module/packages/ManageRestClient.d.ts.map +1 -0
  176. package/dist/module/packages/ManageRestClient.js +624 -0
  177. package/dist/module/packages/ManageRestClient.js.map +1 -0
  178. package/dist/module/packages/ReadRestClient.d.ts +57 -0
  179. package/dist/module/packages/ReadRestClient.d.ts.map +1 -0
  180. package/dist/module/packages/ReadRestClient.js +161 -0
  181. package/dist/module/packages/ReadRestClient.js.map +1 -0
  182. package/dist/module/packages/SelfHostedRestClient.d.ts +47 -0
  183. package/dist/module/packages/SelfHostedRestClient.d.ts.map +1 -0
  184. package/dist/module/packages/SelfHostedRestClient.js +116 -0
  185. package/dist/module/packages/SelfHostedRestClient.js.map +1 -0
  186. package/dist/module/packages/SpeakRestClient.d.ts +36 -0
  187. package/dist/module/packages/SpeakRestClient.d.ts.map +1 -0
  188. package/dist/module/packages/SpeakRestClient.js +80 -0
  189. package/dist/module/packages/SpeakRestClient.js.map +1 -0
  190. package/dist/module/packages/index.d.ts +10 -8
  191. package/dist/module/packages/index.d.ts.map +1 -1
  192. package/dist/module/packages/index.js +10 -8
  193. package/dist/module/packages/index.js.map +1 -1
  194. package/dist/umd/deepgram.js +1 -1
  195. package/package.json +8 -6
  196. package/src/DeepgramClient.ts +81 -17
  197. package/src/index.ts +32 -7
  198. package/src/lib/constants.ts +33 -13
  199. package/src/lib/enums/LiveConnectionState.ts +11 -4
  200. package/src/lib/enums/LiveTranscriptionEvents.ts +27 -4
  201. package/src/lib/enums/index.ts +2 -2
  202. package/src/lib/fetch.ts +22 -2
  203. package/src/lib/helpers.ts +98 -9
  204. package/src/lib/types/CreateProjectKeySchema.ts +0 -1
  205. package/src/lib/types/DeepgramClientOptions.ts +75 -11
  206. package/src/lib/types/Fetch.ts +2 -24
  207. package/src/lib/types/LiveConfigOptions.ts +7 -3
  208. package/src/lib/types/TranscriptionSchema.ts +0 -2
  209. package/src/lib/types/UpdateProjectMemberScopeSchema.ts +1 -1
  210. package/src/lib/types/UpdateProjectSchema.ts +0 -1
  211. package/src/lib/types/index.ts +39 -54
  212. package/src/lib/version.ts +1 -1
  213. package/src/packages/AbstractClient.ts +129 -61
  214. package/src/packages/AbstractLiveClient.ts +280 -0
  215. package/src/packages/AbstractRestClient.ts +221 -0
  216. package/src/packages/ListenClient.ts +26 -5
  217. package/src/packages/ListenLiveClient.ts +133 -0
  218. package/src/packages/ListenRestClient.ts +201 -0
  219. package/src/packages/ManageRestClient.ts +760 -0
  220. package/src/packages/ReadRestClient.ts +200 -0
  221. package/src/packages/SelfHostedRestClient.ts +134 -0
  222. package/src/packages/SpeakRestClient.ts +79 -0
  223. package/src/packages/index.ts +10 -8
  224. package/dist/main/packages/AbstractRestfulClient.d.ts +0 -26
  225. package/dist/main/packages/AbstractRestfulClient.d.ts.map +0 -1
  226. package/dist/main/packages/AbstractRestfulClient.js +0 -118
  227. package/dist/main/packages/AbstractRestfulClient.js.map +0 -1
  228. package/dist/main/packages/AbstractWsClient.d.ts +0 -10
  229. package/dist/main/packages/AbstractWsClient.d.ts.map +0 -1
  230. package/dist/main/packages/AbstractWsClient.js +0 -33
  231. package/dist/main/packages/AbstractWsClient.js.map +0 -1
  232. package/dist/main/packages/LiveClient.d.ts +0 -28
  233. package/dist/main/packages/LiveClient.d.ts.map +0 -1
  234. package/dist/main/packages/LiveClient.js +0 -110
  235. package/dist/main/packages/LiveClient.js.map +0 -1
  236. package/dist/main/packages/ManageClient.d.ts +0 -97
  237. package/dist/main/packages/ManageClient.d.ts.map +0 -1
  238. package/dist/main/packages/ManageClient.js +0 -463
  239. package/dist/main/packages/ManageClient.js.map +0 -1
  240. package/dist/main/packages/OnPremClient.d.ts +0 -21
  241. package/dist/main/packages/OnPremClient.d.ts.map +0 -1
  242. package/dist/main/packages/OnPremClient.js +0 -99
  243. package/dist/main/packages/OnPremClient.js.map +0 -1
  244. package/dist/main/packages/PrerecordedClient.d.ts +0 -10
  245. package/dist/main/packages/PrerecordedClient.d.ts.map +0 -1
  246. package/dist/main/packages/PrerecordedClient.js +0 -125
  247. package/dist/main/packages/PrerecordedClient.js.map +0 -1
  248. package/dist/main/packages/ReadClient.d.ts +0 -10
  249. package/dist/main/packages/ReadClient.d.ts.map +0 -1
  250. package/dist/main/packages/ReadClient.js +0 -123
  251. package/dist/main/packages/ReadClient.js.map +0 -1
  252. package/dist/main/packages/SpeakClient.d.ts +0 -12
  253. package/dist/main/packages/SpeakClient.d.ts.map +0 -1
  254. package/dist/main/packages/SpeakClient.js +0 -57
  255. package/dist/main/packages/SpeakClient.js.map +0 -1
  256. package/dist/module/packages/AbstractRestfulClient.d.ts +0 -26
  257. package/dist/module/packages/AbstractRestfulClient.d.ts.map +0 -1
  258. package/dist/module/packages/AbstractRestfulClient.js +0 -114
  259. package/dist/module/packages/AbstractRestfulClient.js.map +0 -1
  260. package/dist/module/packages/AbstractWsClient.d.ts +0 -10
  261. package/dist/module/packages/AbstractWsClient.d.ts.map +0 -1
  262. package/dist/module/packages/AbstractWsClient.js +0 -29
  263. package/dist/module/packages/AbstractWsClient.js.map +0 -1
  264. package/dist/module/packages/LiveClient.d.ts +0 -28
  265. package/dist/module/packages/LiveClient.d.ts.map +0 -1
  266. package/dist/module/packages/LiveClient.js +0 -106
  267. package/dist/module/packages/LiveClient.js.map +0 -1
  268. package/dist/module/packages/ManageClient.d.ts +0 -97
  269. package/dist/module/packages/ManageClient.d.ts.map +0 -1
  270. package/dist/module/packages/ManageClient.js +0 -459
  271. package/dist/module/packages/ManageClient.js.map +0 -1
  272. package/dist/module/packages/OnPremClient.d.ts +0 -21
  273. package/dist/module/packages/OnPremClient.d.ts.map +0 -1
  274. package/dist/module/packages/OnPremClient.js +0 -95
  275. package/dist/module/packages/OnPremClient.js.map +0 -1
  276. package/dist/module/packages/PrerecordedClient.d.ts +0 -10
  277. package/dist/module/packages/PrerecordedClient.d.ts.map +0 -1
  278. package/dist/module/packages/PrerecordedClient.js +0 -121
  279. package/dist/module/packages/PrerecordedClient.js.map +0 -1
  280. package/dist/module/packages/ReadClient.d.ts +0 -10
  281. package/dist/module/packages/ReadClient.d.ts.map +0 -1
  282. package/dist/module/packages/ReadClient.js +0 -119
  283. package/dist/module/packages/ReadClient.js.map +0 -1
  284. package/dist/module/packages/SpeakClient.d.ts +0 -12
  285. package/dist/module/packages/SpeakClient.d.ts.map +0 -1
  286. package/dist/module/packages/SpeakClient.js +0 -53
  287. package/dist/module/packages/SpeakClient.js.map +0 -1
  288. package/src/packages/AbstractRestfulClient.ts +0 -160
  289. package/src/packages/AbstractWsClient.ts +0 -42
  290. package/src/packages/LiveClient.ts +0 -140
  291. package/src/packages/ManageClient.ts +0 -584
  292. package/src/packages/OnPremClient.ts +0 -113
  293. package/src/packages/PrerecordedClient.ts +0 -162
  294. package/src/packages/ReadClient.ts +0 -161
  295. package/src/packages/SpeakClient.ts +0 -50
@@ -1,16 +1,69 @@
1
- import { DeepgramClientOptions } from "../lib/types";
1
+ /// <reference types="node" />
2
+ import EventEmitter from "events";
3
+ import type { DeepgramClientOptions, DefaultClientOptions, DefaultNamespaceOptions } from "../lib/types";
4
+ export declare const noop: () => void;
2
5
  /**
3
- * Deepgram Client.
6
+ * Represents an abstract Deepgram client that provides a base implementation for interacting with the Deepgram API.
4
7
  *
5
- * An isomorphic Javascript client for interacting with the Deepgram API.
6
- * @see https://developers.deepgram.com
8
+ * The `AbstractClient` class is responsible for:
9
+ * - Initializing the Deepgram API key
10
+ * - Applying default options for the client and namespace
11
+ * - Providing a namespace for organizing API requests
12
+ *
13
+ * Subclasses of `AbstractClient` should implement the specific functionality for interacting with the Deepgram API.
7
14
  */
8
- export declare abstract class AbstractClient {
15
+ export declare abstract class AbstractClient extends EventEmitter {
16
+ protected factory: Function | undefined;
9
17
  protected key: string;
10
- protected options: DeepgramClientOptions;
11
- protected baseUrl: URL;
12
- constructor(key: string, options: DeepgramClientOptions);
13
- protected resolveBaseUrl(url: string): URL;
14
- protected willProxy(): boolean;
18
+ protected options: DefaultClientOptions;
19
+ namespace: string;
20
+ version: string;
21
+ baseUrl: string;
22
+ logger: Function;
23
+ /**
24
+ * Constructs a new instance of the DeepgramClient class with the provided options.
25
+ *
26
+ * @param options - The options to configure the DeepgramClient instance.
27
+ * @param options.key - The Deepgram API key to use for authentication. If not provided, the `DEEPGRAM_API_KEY` environment variable will be used.
28
+ * @param options.global - Global options that apply to all requests made by the DeepgramClient instance.
29
+ * @param options.global.fetch - Options to configure the fetch requests made by the DeepgramClient instance.
30
+ * @param options.global.fetch.options - Additional options to pass to the fetch function, such as `url` and `headers`.
31
+ * @param options.namespace - Options specific to a particular namespace within the DeepgramClient instance.
32
+ */
33
+ constructor(options: DeepgramClientOptions);
34
+ /**
35
+ * Sets the version for the current instance of the Deepgram API and returns the instance.
36
+ *
37
+ * @param version - The version to set for the Deepgram API instance. Defaults to "v1" if not provided.
38
+ * @returns The current instance of the AbstractClient with the updated version.
39
+ */
40
+ v(version?: string): this;
41
+ /**
42
+ * Gets the namespace options for the current instance of the AbstractClient.
43
+ * The namespace options include the default options merged with the global options,
44
+ * and the API key for the current instance.
45
+ *
46
+ * @returns The namespace options for the current instance.
47
+ */
48
+ get namespaceOptions(): DefaultNamespaceOptions;
49
+ /**
50
+ * Generates a URL for an API endpoint with optional query parameters and transcription options.
51
+ *
52
+ * @param endpoint - The API endpoint URL, which may contain placeholders for fields.
53
+ * @param fields - An optional object containing key-value pairs to replace placeholders in the endpoint URL.
54
+ * @param transcriptionOptions - Optional transcription options to include as query parameters in the URL.
55
+ * @returns A URL object representing the constructed API request URL.
56
+ */
57
+ getRequestUrl(endpoint: string, fields?: {
58
+ [key: string]: string;
59
+ }, transcriptionOptions?: {
60
+ [key: string]: unknown;
61
+ }): URL;
62
+ /**
63
+ * Logs the message.
64
+ *
65
+ * For customized logging, `this.logger` can be overridden.
66
+ */
67
+ log(kind: string, msg: string, data?: any): void;
15
68
  }
16
69
  //# sourceMappingURL=AbstractClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractClient.d.ts","sourceRoot":"","sources":["../../../src/packages/AbstractClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD;;;;;GAKG;AACH,8BAAsB,cAAc;IAGtB,SAAS,CAAC,GAAG,EAAE,MAAM;IAAE,SAAS,CAAC,OAAO,EAAE,qBAAqB;IAF3E,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC;gBAED,GAAG,EAAE,MAAM,EAAY,OAAO,EAAE,qBAAqB;IA6D3E,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM;IAQpC,SAAS,CAAC,SAAS;CAKpB"}
1
+ {"version":3,"file":"AbstractClient.d.ts","sourceRoot":"","sources":["../../../src/packages/AbstractClient.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAIlC,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAEtB,eAAO,MAAM,IAAI,YAAW,CAAC;AAE7B;;;;;;;;;GASG;AACH,8BAAsB,cAAe,SAAQ,YAAY;IACvD,SAAS,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAa;IACpD,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAY;IAC7B,OAAO,EAAE,MAAM,CAAQ;IACvB,OAAO,EAAE,MAAM,CAAe;IAC9B,MAAM,EAAE,QAAQ,CAAQ;IAE/B;;;;;;;;;OASG;gBACS,OAAO,EAAE,qBAAqB;IAiC1C;;;;;OAKG;IACI,CAAC,CAAC,OAAO,GAAE,MAAa,GAAG,IAAI;IAMtC;;;;;;OAMG;IACH,IAAI,gBAAgB,IAAI,uBAAuB,CAU9C;IAED;;;;;;;OAOG;IACI,aAAa,CAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAA8B,EAC7D,oBAAoB,CAAC,EAAE;QACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GACA,GAAG;IA4BN;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;CAGjD"}
@@ -1,67 +1,116 @@
1
+ import EventEmitter from "events";
1
2
  import { DEFAULT_OPTIONS, DEFAULT_URL } from "../lib/constants";
2
3
  import { DeepgramError } from "../lib/errors";
3
- import { applySettingDefaults, stripTrailingSlash } from "../lib/helpers";
4
+ import { appendSearchParams, applyDefaults, convertLegacyOptions } from "../lib/helpers";
5
+ export const noop = () => { };
4
6
  /**
5
- * Deepgram Client.
7
+ * Represents an abstract Deepgram client that provides a base implementation for interacting with the Deepgram API.
6
8
  *
7
- * An isomorphic Javascript client for interacting with the Deepgram API.
8
- * @see https://developers.deepgram.com
9
+ * The `AbstractClient` class is responsible for:
10
+ * - Initializing the Deepgram API key
11
+ * - Applying default options for the client and namespace
12
+ * - Providing a namespace for organizing API requests
13
+ *
14
+ * Subclasses of `AbstractClient` should implement the specific functionality for interacting with the Deepgram API.
9
15
  */
10
- export class AbstractClient {
11
- constructor(key, options) {
12
- var _a, _b;
13
- this.key = key;
14
- this.options = options;
15
- this.key = key;
16
- if (!key) {
17
- this.key = process.env.DEEPGRAM_API_KEY;
16
+ export class AbstractClient extends EventEmitter {
17
+ /**
18
+ * Constructs a new instance of the DeepgramClient class with the provided options.
19
+ *
20
+ * @param options - The options to configure the DeepgramClient instance.
21
+ * @param options.key - The Deepgram API key to use for authentication. If not provided, the `DEEPGRAM_API_KEY` environment variable will be used.
22
+ * @param options.global - Global options that apply to all requests made by the DeepgramClient instance.
23
+ * @param options.global.fetch - Options to configure the fetch requests made by the DeepgramClient instance.
24
+ * @param options.global.fetch.options - Additional options to pass to the fetch function, such as `url` and `headers`.
25
+ * @param options.namespace - Options specific to a particular namespace within the DeepgramClient instance.
26
+ */
27
+ constructor(options) {
28
+ super();
29
+ this.factory = undefined;
30
+ this.namespace = "global";
31
+ this.version = "v1";
32
+ this.baseUrl = DEFAULT_URL;
33
+ this.logger = noop;
34
+ let key;
35
+ if (typeof options.key === "function") {
36
+ this.factory = options.key;
37
+ key = this.factory();
18
38
  }
19
- if (!this.key) {
20
- throw new DeepgramError("A deepgram API key is required");
39
+ else {
40
+ key = options.key;
21
41
  }
22
- this.options = applySettingDefaults(options, DEFAULT_OPTIONS);
23
- if (!((_a = this.options.global) === null || _a === void 0 ? void 0 : _a.url)) {
24
- throw new DeepgramError(`An API URL is required. It should be set to ${DEFAULT_URL} by default. No idea what happened!`);
42
+ if (!key) {
43
+ key = process.env.DEEPGRAM_API_KEY;
25
44
  }
26
- let baseUrlString = this.options.global.url;
27
- let proxyUrlString;
28
- /**
29
- * Check if the base URL provided is missing a protocol and warn in the console.
30
- */
31
- if (!baseUrlString.startsWith("http") && !baseUrlString.startsWith("ws")) {
32
- console.warn(`The base URL provided does not begin with http, https, ws, or wss and will default to https as standard.`);
45
+ if (!key) {
46
+ throw new DeepgramError("A deepgram API key is required.");
33
47
  }
48
+ this.key = key;
49
+ options = convertLegacyOptions(options);
34
50
  /**
35
- * Applying proxy to base URL.
51
+ * Apply default options.
36
52
  */
37
- if ((_b = this.options.restProxy) === null || _b === void 0 ? void 0 : _b.url) {
38
- /**
39
- * Prevent client using a real API key when using a proxy configuration.
40
- */
41
- if (this.key !== "proxy") {
42
- throw new DeepgramError(`Do not attempt to pass any other API key than the string "proxy" when making proxied REST requests. Please ensure your proxy application is responsible for writing our API key to the Authorization header.`);
43
- }
44
- proxyUrlString = this.options.restProxy.url;
45
- /**
46
- * Check if the proxy URL provided is missing a protocol and warn in the console.
47
- */
48
- if (!proxyUrlString.startsWith("http") && !proxyUrlString.startsWith("ws")) {
49
- console.warn(`The proxy URL provided does not begin with http, https, ws, or wss and will default to https as standard.`);
50
- }
51
- baseUrlString = proxyUrlString;
52
- }
53
- this.baseUrl = this.resolveBaseUrl(baseUrlString);
53
+ this.options = applyDefaults(options, DEFAULT_OPTIONS);
54
54
  }
55
- resolveBaseUrl(url) {
56
- if (!/^https?:\/\//i.test(url)) {
57
- url = "https://" + url;
55
+ /**
56
+ * Sets the version for the current instance of the Deepgram API and returns the instance.
57
+ *
58
+ * @param version - The version to set for the Deepgram API instance. Defaults to "v1" if not provided.
59
+ * @returns The current instance of the AbstractClient with the updated version.
60
+ */
61
+ v(version = "v1") {
62
+ this.version = version;
63
+ return this;
64
+ }
65
+ /**
66
+ * Gets the namespace options for the current instance of the AbstractClient.
67
+ * The namespace options include the default options merged with the global options,
68
+ * and the API key for the current instance.
69
+ *
70
+ * @returns The namespace options for the current instance.
71
+ */
72
+ get namespaceOptions() {
73
+ const defaults = applyDefaults(this.options[this.namespace], this.options.global);
74
+ return Object.assign(Object.assign({}, defaults), { key: this.key });
75
+ }
76
+ /**
77
+ * Generates a URL for an API endpoint with optional query parameters and transcription options.
78
+ *
79
+ * @param endpoint - The API endpoint URL, which may contain placeholders for fields.
80
+ * @param fields - An optional object containing key-value pairs to replace placeholders in the endpoint URL.
81
+ * @param transcriptionOptions - Optional transcription options to include as query parameters in the URL.
82
+ * @returns A URL object representing the constructed API request URL.
83
+ */
84
+ getRequestUrl(endpoint, fields = { version: this.version }, transcriptionOptions) {
85
+ /**
86
+ * If we pass in fields without a version, set a version.
87
+ */
88
+ fields.version = this.version;
89
+ /**
90
+ * Version and template the endpoint for input argument..
91
+ */
92
+ endpoint = endpoint.replace(/:(\w+)/g, function (_, key) {
93
+ return fields[key];
94
+ });
95
+ /**
96
+ * Create a URL object.
97
+ */
98
+ const url = new URL(endpoint, this.baseUrl);
99
+ /**
100
+ * If there are transcription options, append them to the request as URL querystring parameters
101
+ */
102
+ if (transcriptionOptions) {
103
+ appendSearchParams(url.searchParams, transcriptionOptions);
58
104
  }
59
- return new URL(stripTrailingSlash(url));
105
+ return url;
60
106
  }
61
- willProxy() {
62
- var _a;
63
- const proxyUrl = (_a = this.options.restProxy) === null || _a === void 0 ? void 0 : _a.url;
64
- return !!proxyUrl;
107
+ /**
108
+ * Logs the message.
109
+ *
110
+ * For customized logging, `this.logger` can be overridden.
111
+ */
112
+ log(kind, msg, data) {
113
+ this.logger(kind, msg, data);
65
114
  }
66
115
  }
67
116
  //# sourceMappingURL=AbstractClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractClient.js","sourceRoot":"","sources":["../../../src/packages/AbstractClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAG1E;;;;;GAKG;AACH,MAAM,OAAgB,cAAc;IAGlC,YAAsB,GAAW,EAAY,OAA8B;;QAArD,QAAG,GAAH,GAAG,CAAQ;QAAY,YAAO,GAAP,OAAO,CAAuB;QACzE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,IAAI,CAAC,GAAG,EAAE;YACR,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAA0B,CAAC;SACnD;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,MAAM,IAAI,aAAa,CAAC,gCAAgC,CAAC,CAAC;SAC3D;QAED,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAE9D,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,MAAM,0CAAE,GAAG,CAAA,EAAE;YAC7B,MAAM,IAAI,aAAa,CACrB,+CAA+C,WAAW,qCAAqC,CAChG,CAAC;SACH;QAED,IAAI,aAAa,GAAW,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QACpD,IAAI,cAAsB,CAAC;QAE3B;;WAEG;QACH,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACxE,OAAO,CAAC,IAAI,CACV,0GAA0G,CAC3G,CAAC;SACH;QAED;;WAEG;QACH,IAAI,MAAA,IAAI,CAAC,OAAO,CAAC,SAAS,0CAAE,GAAG,EAAE;YAC/B;;eAEG;YACH,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,EAAE;gBACxB,MAAM,IAAI,aAAa,CACrB,8MAA8M,CAC/M,CAAC;aACH;YAED,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;YAE5C;;eAEG;YACH,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAC1E,OAAO,CAAC,IAAI,CACV,2GAA2G,CAC5G,CAAC;aACH;YAED,aAAa,GAAG,cAAc,CAAC;SAChC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IAES,cAAc,CAAC,GAAW;QAClC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC9B,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC;SACxB;QAED,OAAO,IAAI,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC;IAES,SAAS;;QACjB,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,SAAS,0CAAE,GAAG,CAAC;QAE7C,OAAO,CAAC,CAAC,QAAQ,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"AbstractClient.js","sourceRoot":"","sources":["../../../src/packages/AbstractClient.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAQzF,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAE7B;;;;;;;;;GASG;AACH,MAAM,OAAgB,cAAe,SAAQ,YAAY;IASvD;;;;;;;;;OASG;IACH,YAAY,OAA8B;QACxC,KAAK,EAAE,CAAC;QAnBA,YAAO,GAAyB,SAAS,CAAC;QAG7C,cAAS,GAAW,QAAQ,CAAC;QAC7B,YAAO,GAAW,IAAI,CAAC;QACvB,YAAO,GAAW,WAAW,CAAC;QAC9B,WAAM,GAAa,IAAI,CAAC;QAe7B,IAAI,GAAG,CAAC;QAER,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU,EAAE;YACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;YAC3B,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;SACtB;aAAM;YACL,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;SACnB;QAED,IAAI,CAAC,GAAG,EAAE;YACR,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,gBAA0B,CAAC;SAC9C;QAED,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,aAAa,CAAC,iCAAiC,CAAC,CAAC;SAC5D;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAExC;;WAEG;QACH,IAAI,CAAC,OAAO,GAAG,aAAa,CAC1B,OAAO,EACP,eAAe,CAChB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,CAAC,CAAC,UAAkB,IAAI;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,IAAI,gBAAgB;QAClB,MAAM,QAAQ,GAAG,aAAa,CAC3B,IAAI,CAAC,OAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,CAAC;QAEF,uCACK,QAAQ,KACX,GAAG,EAAE,IAAI,CAAC,GAAG,IACb;IACJ,CAAC;IAED;;;;;;;OAOG;IACI,aAAa,CAClB,QAAgB,EAChB,SAAoC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAC7D,oBAEC;QAED;;WAEG;QACH,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE9B;;WAEG;QACH,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,GAAG;YACrD,OAAO,MAAO,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtD;;WAEG;QACH,IAAI,oBAAoB,EAAE;YACxB,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;SAC5D;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,IAAU;QAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,114 @@
1
+ import { AbstractClient } from "./AbstractClient";
2
+ import { CONNECTION_STATE, SOCKET_STATES } from "../lib/constants";
3
+ import type { DeepgramClientOptions, LiveSchema } from "../lib/types";
4
+ import type { WebSocket as WSWebSocket } from "ws";
5
+ /**
6
+ * Represents a constructor for a WebSocket-like object that can be used in the application.
7
+ * The constructor takes the following parameters:
8
+ * @param address - The URL or address of the WebSocket server.
9
+ * @param _ignored - An optional parameter that is ignored.
10
+ * @param options - An optional object containing headers to be included in the WebSocket connection.
11
+ * @returns A WebSocket-like object that implements the WebSocketLike interface.
12
+ */
13
+ interface WebSocketLikeConstructor {
14
+ new (address: string | URL, _ignored?: any, options?: {
15
+ headers: Object | undefined;
16
+ }): WebSocketLike;
17
+ }
18
+ /**
19
+ * Represents the types of WebSocket-like connections that can be used in the application.
20
+ * This type is used to provide a common interface for different WebSocket implementations,
21
+ * such as the native WebSocket API, a WebSocket wrapper library, or a dummy implementation
22
+ * for testing purposes.
23
+ */
24
+ declare type WebSocketLike = WebSocket | WSWebSocket | WSWebSocketDummy;
25
+ /**
26
+ * Represents the types of data that can be sent or received over a WebSocket-like connection.
27
+ */
28
+ declare type SocketDataLike = string | ArrayBufferLike | Blob;
29
+ /**
30
+ * Represents an abstract live client that extends the AbstractClient class.
31
+ * The AbstractLiveClient class provides functionality for connecting, reconnecting, and disconnecting a WebSocket connection, as well as sending data over the connection.
32
+ * Subclasses of this class are responsible for setting up the connection event handlers.
33
+ *
34
+ * @abstract
35
+ */
36
+ export declare abstract class AbstractLiveClient extends AbstractClient {
37
+ headers: {
38
+ [key: string]: string;
39
+ };
40
+ transport: WebSocketLikeConstructor | null;
41
+ conn: WebSocketLike | null;
42
+ sendBuffer: Function[];
43
+ constructor(options: DeepgramClientOptions);
44
+ /**
45
+ * Connects the socket, unless already connected.
46
+ *
47
+ * @protected Can only be called from within the class.
48
+ */
49
+ protected connect(transcriptionOptions: LiveSchema, endpoint: string): void;
50
+ /**
51
+ * Reconnects the socket using new or existing transcription options.
52
+ *
53
+ * @param options - The transcription options to use when reconnecting the socket.
54
+ */
55
+ reconnect: (options: LiveSchema) => void;
56
+ /**
57
+ * Disconnects the socket from the client.
58
+ *
59
+ * @param code A numeric status code to send on disconnect.
60
+ * @param reason A custom reason for the disconnect.
61
+ */
62
+ disconnect(code?: number, reason?: string): void;
63
+ /**
64
+ * Returns the current connection state of the WebSocket connection.
65
+ *
66
+ * @returns The current connection state of the WebSocket connection.
67
+ */
68
+ connectionState(): CONNECTION_STATE;
69
+ /**
70
+ * Returns the current ready state of the WebSocket connection.
71
+ *
72
+ * @returns The current ready state of the WebSocket connection.
73
+ */
74
+ getReadyState(): SOCKET_STATES;
75
+ /**
76
+ * Returns `true` is the connection is open.
77
+ */
78
+ isConnected(): boolean;
79
+ /**
80
+ * Sends data to the Deepgram API via websocket connection
81
+ * @param data Audio data to send to Deepgram
82
+ *
83
+ * Conforms to RFC #146 for Node.js - does not send an empty byte.
84
+ * @see https://github.com/deepgram/deepgram-python-sdk/issues/146
85
+ */
86
+ send(data: SocketDataLike): void;
87
+ /**
88
+ * Determines whether the current instance should proxy requests.
89
+ * @returns {boolean} true if the current instance should proxy requests; otherwise, false
90
+ */
91
+ get proxy(): boolean;
92
+ /**
93
+ * Sets up the connection event handlers.
94
+ *
95
+ * @abstract Requires subclasses to set up context aware event handlers.
96
+ */
97
+ abstract setupConnection(): void;
98
+ }
99
+ declare class WSWebSocketDummy {
100
+ binaryType: string;
101
+ close: Function;
102
+ onclose: Function;
103
+ onerror: Function;
104
+ onmessage: Function;
105
+ onopen: Function;
106
+ readyState: number;
107
+ send: Function;
108
+ url: string | URL | null;
109
+ constructor(address: URL, _protocols: undefined, options: {
110
+ close: Function;
111
+ });
112
+ }
113
+ export { AbstractLiveClient as AbstractWsClient };
114
+ //# sourceMappingURL=AbstractLiveClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractLiveClient.d.ts","sourceRoot":"","sources":["../../../src/packages/AbstractLiveClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAQ,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,IAAI,CAAC;AAEnD;;;;;;;GAOG;AACH,UAAU,wBAAwB;IAChC,KACE,OAAO,EAAE,MAAM,GAAG,GAAG,EACrB,QAAQ,CAAC,EAAE,GAAG,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GACxC,aAAa,CAAC;CAClB;AAED;;;;;GAKG;AACH,aAAK,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAEhE;;GAEG;AACH,aAAK,cAAc,GAAG,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;AAmBtD;;;;;;GAMG;AACH,8BAAsB,kBAAmB,SAAQ,cAAc;IACtD,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACnC,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC3C,IAAI,EAAE,aAAa,GAAG,IAAI,CAAQ;IAClC,UAAU,EAAE,QAAQ,EAAE,CAAM;gBAEvB,OAAO,EAAE,qBAAqB;IA+B1C;;;;OAIG;IACH,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkD3E;;;;OAIG;IACI,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAQ;IAEvD;;;;;OAKG;IACI,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAYvD;;;;OAIG;IACI,eAAe,IAAI,gBAAgB;IAa1C;;;;OAIG;IACI,aAAa,IAAI,aAAa;IAIrC;;OAEG;IACI,WAAW,IAAI,OAAO;IAI7B;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IA8BhC;;;OAGG;IACH,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;;;OAIG;IACH,QAAQ,CAAC,eAAe,IAAI,IAAI;CACjC;AAED,cAAM,gBAAgB;IACpB,UAAU,EAAE,MAAM,CAAiB;IACnC,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,QAAQ,CAAY;IAC7B,OAAO,EAAE,QAAQ,CAAY;IAC7B,SAAS,EAAE,QAAQ,CAAY;IAC/B,MAAM,EAAE,QAAQ,CAAY;IAC5B,UAAU,EAAE,MAAM,CAA4B;IAC9C,IAAI,EAAE,QAAQ,CAAY;IAC1B,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAQ;gBAEpB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAA;KAAE;CAI9E;AAED,OAAO,EAAE,kBAAkB,IAAI,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,211 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { AbstractClient, noop } from "./AbstractClient";
11
+ import { CONNECTION_STATE, SOCKET_STATES } from "../lib/constants";
12
+ /**
13
+ * Indicates whether a native WebSocket implementation is available in the current environment.
14
+ */
15
+ const NATIVE_WEBSOCKET_AVAILABLE = typeof WebSocket !== "undefined";
16
+ /**
17
+ * Represents an abstract live client that extends the AbstractClient class.
18
+ * The AbstractLiveClient class provides functionality for connecting, reconnecting, and disconnecting a WebSocket connection, as well as sending data over the connection.
19
+ * Subclasses of this class are responsible for setting up the connection event handlers.
20
+ *
21
+ * @abstract
22
+ */
23
+ export class AbstractLiveClient extends AbstractClient {
24
+ constructor(options) {
25
+ super(options);
26
+ this.conn = null;
27
+ this.sendBuffer = [];
28
+ /**
29
+ * Reconnects the socket using new or existing transcription options.
30
+ *
31
+ * @param options - The transcription options to use when reconnecting the socket.
32
+ */
33
+ this.reconnect = noop;
34
+ const { key, websocket: { options: websocketOptions, client }, } = this.namespaceOptions;
35
+ if (this.proxy) {
36
+ this.baseUrl = websocketOptions.proxy.url;
37
+ }
38
+ else {
39
+ this.baseUrl = websocketOptions.url;
40
+ }
41
+ if (client) {
42
+ this.transport = client;
43
+ }
44
+ else {
45
+ this.transport = null;
46
+ }
47
+ if (websocketOptions._nodeOnlyHeaders) {
48
+ this.headers = websocketOptions._nodeOnlyHeaders;
49
+ }
50
+ else {
51
+ this.headers = {};
52
+ }
53
+ if (!("Authorization" in this.headers)) {
54
+ this.headers["Authorization"] = `Token ${key}`; // Add default token
55
+ }
56
+ }
57
+ /**
58
+ * Connects the socket, unless already connected.
59
+ *
60
+ * @protected Can only be called from within the class.
61
+ */
62
+ connect(transcriptionOptions, endpoint) {
63
+ if (this.conn) {
64
+ return;
65
+ }
66
+ this.reconnect = (options = transcriptionOptions) => {
67
+ this.connect(options, endpoint);
68
+ };
69
+ const requestUrl = this.getRequestUrl(endpoint, {}, transcriptionOptions);
70
+ /**
71
+ * Custom websocket transport
72
+ */
73
+ if (this.transport) {
74
+ this.conn = new this.transport(requestUrl, undefined, {
75
+ headers: this.headers,
76
+ });
77
+ return;
78
+ }
79
+ /**
80
+ * Native websocket transport (browser)
81
+ */
82
+ if (NATIVE_WEBSOCKET_AVAILABLE) {
83
+ this.conn = new WebSocket(requestUrl, ["token", this.namespaceOptions.key]);
84
+ this.setupConnection();
85
+ return;
86
+ }
87
+ /**
88
+ * Dummy websocket
89
+ */
90
+ this.conn = new WSWebSocketDummy(requestUrl, undefined, {
91
+ close: () => {
92
+ this.conn = null;
93
+ },
94
+ });
95
+ /**
96
+ * WS package for node environment
97
+ */
98
+ import("ws").then(({ default: WS }) => {
99
+ this.conn = new WS(requestUrl, undefined, {
100
+ headers: this.headers,
101
+ });
102
+ this.setupConnection();
103
+ });
104
+ }
105
+ /**
106
+ * Disconnects the socket from the client.
107
+ *
108
+ * @param code A numeric status code to send on disconnect.
109
+ * @param reason A custom reason for the disconnect.
110
+ */
111
+ disconnect(code, reason) {
112
+ if (this.conn) {
113
+ this.conn.onclose = function () { }; // noop
114
+ if (code) {
115
+ this.conn.close(code, reason !== null && reason !== void 0 ? reason : "");
116
+ }
117
+ else {
118
+ this.conn.close();
119
+ }
120
+ this.conn = null;
121
+ }
122
+ }
123
+ /**
124
+ * Returns the current connection state of the WebSocket connection.
125
+ *
126
+ * @returns The current connection state of the WebSocket connection.
127
+ */
128
+ connectionState() {
129
+ switch (this.conn && this.conn.readyState) {
130
+ case SOCKET_STATES.connecting:
131
+ return CONNECTION_STATE.Connecting;
132
+ case SOCKET_STATES.open:
133
+ return CONNECTION_STATE.Open;
134
+ case SOCKET_STATES.closing:
135
+ return CONNECTION_STATE.Closing;
136
+ default:
137
+ return CONNECTION_STATE.Closed;
138
+ }
139
+ }
140
+ /**
141
+ * Returns the current ready state of the WebSocket connection.
142
+ *
143
+ * @returns The current ready state of the WebSocket connection.
144
+ */
145
+ getReadyState() {
146
+ var _a, _b;
147
+ return (_b = (_a = this.conn) === null || _a === void 0 ? void 0 : _a.readyState) !== null && _b !== void 0 ? _b : SOCKET_STATES.closed;
148
+ }
149
+ /**
150
+ * Returns `true` is the connection is open.
151
+ */
152
+ isConnected() {
153
+ return this.connectionState() === CONNECTION_STATE.Open;
154
+ }
155
+ /**
156
+ * Sends data to the Deepgram API via websocket connection
157
+ * @param data Audio data to send to Deepgram
158
+ *
159
+ * Conforms to RFC #146 for Node.js - does not send an empty byte.
160
+ * @see https://github.com/deepgram/deepgram-python-sdk/issues/146
161
+ */
162
+ send(data) {
163
+ const callback = () => __awaiter(this, void 0, void 0, function* () {
164
+ var _a;
165
+ if (data instanceof Blob) {
166
+ if (data.size === 0) {
167
+ this.log("warn", "skipping `send` for zero-byte blob", data);
168
+ return;
169
+ }
170
+ data = yield data.arrayBuffer();
171
+ }
172
+ if (typeof data !== "string") {
173
+ if (data.byteLength === 0) {
174
+ this.log("warn", "skipping `send` for zero-byte blob", data);
175
+ return;
176
+ }
177
+ }
178
+ (_a = this.conn) === null || _a === void 0 ? void 0 : _a.send(data);
179
+ });
180
+ if (this.isConnected()) {
181
+ callback();
182
+ }
183
+ else {
184
+ this.sendBuffer.push(callback);
185
+ }
186
+ }
187
+ /**
188
+ * Determines whether the current instance should proxy requests.
189
+ * @returns {boolean} true if the current instance should proxy requests; otherwise, false
190
+ */
191
+ get proxy() {
192
+ var _a;
193
+ return this.key === "proxy" && !!((_a = this.namespaceOptions.websocket.options.proxy) === null || _a === void 0 ? void 0 : _a.url);
194
+ }
195
+ }
196
+ class WSWebSocketDummy {
197
+ constructor(address, _protocols, options) {
198
+ this.binaryType = "arraybuffer";
199
+ this.onclose = () => { };
200
+ this.onerror = () => { };
201
+ this.onmessage = () => { };
202
+ this.onopen = () => { };
203
+ this.readyState = SOCKET_STATES.connecting;
204
+ this.send = () => { };
205
+ this.url = null;
206
+ this.url = address.toString();
207
+ this.close = options.close;
208
+ }
209
+ }
210
+ export { AbstractLiveClient as AbstractWsClient };
211
+ //# sourceMappingURL=AbstractLiveClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractLiveClient.js","sourceRoot":"","sources":["../../../src/packages/AbstractLiveClient.ts"],"names":[],"mappings":"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"}