@tapra/sdk 0.0.0-stage → 0.1.2

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 (404) hide show
  1. package/README.md +60 -2
  2. package/dist/lib/index.d.ts +5 -0
  3. package/dist/lib/index.js +7 -0
  4. package/dist/lib/index.js.map +1 -0
  5. package/dist/lib/pricing.d.ts +70 -0
  6. package/dist/lib/pricing.js +67 -0
  7. package/dist/lib/pricing.js.map +1 -0
  8. package/dist/lib/realtime.d.ts +99 -0
  9. package/dist/lib/realtime.js +230 -0
  10. package/dist/lib/realtime.js.map +1 -0
  11. package/dist/src/BaseClient.d.ts +57 -0
  12. package/dist/src/BaseClient.js +37 -0
  13. package/dist/src/BaseClient.js.map +1 -0
  14. package/dist/src/Client.d.ts +41 -0
  15. package/dist/src/Client.js +61 -0
  16. package/dist/src/Client.js.map +1 -0
  17. package/dist/src/api/errors/BadRequestError.d.ts +7 -0
  18. package/dist/src/api/errors/BadRequestError.js +18 -0
  19. package/dist/src/api/errors/BadRequestError.js.map +1 -0
  20. package/dist/src/api/errors/ContentTooLargeError.d.ts +7 -0
  21. package/dist/src/api/errors/ContentTooLargeError.js +18 -0
  22. package/dist/src/api/errors/ContentTooLargeError.js.map +1 -0
  23. package/dist/src/api/errors/ForbiddenError.d.ts +7 -0
  24. package/dist/src/api/errors/ForbiddenError.js +18 -0
  25. package/dist/src/api/errors/ForbiddenError.js.map +1 -0
  26. package/dist/src/api/errors/InternalServerError.d.ts +7 -0
  27. package/dist/src/api/errors/InternalServerError.js +18 -0
  28. package/dist/src/api/errors/InternalServerError.js.map +1 -0
  29. package/dist/src/api/errors/PaymentRequiredError.d.ts +7 -0
  30. package/dist/src/api/errors/PaymentRequiredError.js +18 -0
  31. package/dist/src/api/errors/PaymentRequiredError.js.map +1 -0
  32. package/dist/src/api/errors/ServiceUnavailableError.d.ts +7 -0
  33. package/dist/src/api/errors/ServiceUnavailableError.js +18 -0
  34. package/dist/src/api/errors/ServiceUnavailableError.js.map +1 -0
  35. package/dist/src/api/errors/TooManyRequestsError.d.ts +7 -0
  36. package/dist/src/api/errors/TooManyRequestsError.js +18 -0
  37. package/dist/src/api/errors/TooManyRequestsError.js.map +1 -0
  38. package/dist/src/api/errors/UnauthorizedError.d.ts +7 -0
  39. package/dist/src/api/errors/UnauthorizedError.js +18 -0
  40. package/dist/src/api/errors/UnauthorizedError.js.map +1 -0
  41. package/dist/src/api/errors/index.d.ts +8 -0
  42. package/dist/src/api/errors/index.js +9 -0
  43. package/dist/src/api/errors/index.js.map +1 -0
  44. package/dist/src/api/index.d.ts +3 -0
  45. package/dist/src/api/index.js +4 -0
  46. package/dist/src/api/index.js.map +1 -0
  47. package/dist/src/api/resources/diarization/client/Client.d.ts +40 -0
  48. package/dist/src/api/resources/diarization/client/Client.js +97 -0
  49. package/dist/src/api/resources/diarization/client/Client.js.map +1 -0
  50. package/dist/src/api/resources/diarization/client/index.d.ts +1 -0
  51. package/dist/src/api/resources/diarization/client/index.js +2 -0
  52. package/dist/src/api/resources/diarization/client/index.js.map +1 -0
  53. package/dist/src/api/resources/diarization/client/requests/DiarizationRequest.d.ts +11 -0
  54. package/dist/src/api/resources/diarization/client/requests/DiarizationRequest.js +3 -0
  55. package/dist/src/api/resources/diarization/client/requests/DiarizationRequest.js.map +1 -0
  56. package/dist/src/api/resources/diarization/client/requests/index.d.ts +1 -0
  57. package/dist/src/api/resources/diarization/client/requests/index.js +2 -0
  58. package/dist/src/api/resources/diarization/client/requests/index.js.map +1 -0
  59. package/dist/src/api/resources/diarization/exports.d.ts +2 -0
  60. package/dist/src/api/resources/diarization/exports.js +4 -0
  61. package/dist/src/api/resources/diarization/exports.js.map +1 -0
  62. package/dist/src/api/resources/diarization/index.d.ts +1 -0
  63. package/dist/src/api/resources/diarization/index.js +2 -0
  64. package/dist/src/api/resources/diarization/index.js.map +1 -0
  65. package/dist/src/api/resources/index.d.ts +11 -0
  66. package/dist/src/api/resources/index.js +12 -0
  67. package/dist/src/api/resources/index.js.map +1 -0
  68. package/dist/src/api/resources/models/client/Client.d.ts +27 -0
  69. package/dist/src/api/resources/models/client/Client.js +56 -0
  70. package/dist/src/api/resources/models/client/Client.js.map +1 -0
  71. package/dist/src/api/resources/models/client/index.d.ts +1 -0
  72. package/dist/src/api/resources/models/client/index.js +2 -0
  73. package/dist/src/api/resources/models/client/index.js.map +1 -0
  74. package/dist/src/api/resources/models/exports.d.ts +2 -0
  75. package/dist/src/api/resources/models/exports.js +4 -0
  76. package/dist/src/api/resources/models/exports.js.map +1 -0
  77. package/dist/src/api/resources/models/index.d.ts +1 -0
  78. package/dist/src/api/resources/models/index.js +2 -0
  79. package/dist/src/api/resources/models/index.js.map +1 -0
  80. package/dist/src/api/resources/script/client/Client.d.ts +47 -0
  81. package/dist/src/api/resources/script/client/Client.js +99 -0
  82. package/dist/src/api/resources/script/client/Client.js.map +1 -0
  83. package/dist/src/api/resources/script/client/index.d.ts +1 -0
  84. package/dist/src/api/resources/script/client/index.js +2 -0
  85. package/dist/src/api/resources/script/client/index.js.map +1 -0
  86. package/dist/src/api/resources/script/client/requests/ConversionRequest.d.ts +26 -0
  87. package/dist/src/api/resources/script/client/requests/ConversionRequest.js +10 -0
  88. package/dist/src/api/resources/script/client/requests/ConversionRequest.js.map +1 -0
  89. package/dist/src/api/resources/script/client/requests/index.d.ts +1 -0
  90. package/dist/src/api/resources/script/client/requests/index.js +2 -0
  91. package/dist/src/api/resources/script/client/requests/index.js.map +1 -0
  92. package/dist/src/api/resources/script/exports.d.ts +2 -0
  93. package/dist/src/api/resources/script/exports.js +4 -0
  94. package/dist/src/api/resources/script/exports.js.map +1 -0
  95. package/dist/src/api/resources/script/index.d.ts +1 -0
  96. package/dist/src/api/resources/script/index.js +2 -0
  97. package/dist/src/api/resources/script/index.js.map +1 -0
  98. package/dist/src/api/resources/speech/client/Client.d.ts +43 -0
  99. package/dist/src/api/resources/speech/client/Client.js +136 -0
  100. package/dist/src/api/resources/speech/client/Client.js.map +1 -0
  101. package/dist/src/api/resources/speech/client/index.d.ts +1 -0
  102. package/dist/src/api/resources/speech/client/index.js +2 -0
  103. package/dist/src/api/resources/speech/client/index.js.map +1 -0
  104. package/dist/src/api/resources/speech/client/requests/SpeechRequest.d.ts +50 -0
  105. package/dist/src/api/resources/speech/client/requests/SpeechRequest.js +23 -0
  106. package/dist/src/api/resources/speech/client/requests/SpeechRequest.js.map +1 -0
  107. package/dist/src/api/resources/speech/client/requests/index.d.ts +1 -0
  108. package/dist/src/api/resources/speech/client/requests/index.js +2 -0
  109. package/dist/src/api/resources/speech/client/requests/index.js.map +1 -0
  110. package/dist/src/api/resources/speech/exports.d.ts +2 -0
  111. package/dist/src/api/resources/speech/exports.js +4 -0
  112. package/dist/src/api/resources/speech/exports.js.map +1 -0
  113. package/dist/src/api/resources/speech/index.d.ts +1 -0
  114. package/dist/src/api/resources/speech/index.js +2 -0
  115. package/dist/src/api/resources/speech/index.js.map +1 -0
  116. package/dist/src/api/resources/transcriptions/client/Client.d.ts +40 -0
  117. package/dist/src/api/resources/transcriptions/client/Client.js +118 -0
  118. package/dist/src/api/resources/transcriptions/client/Client.js.map +1 -0
  119. package/dist/src/api/resources/transcriptions/client/index.d.ts +1 -0
  120. package/dist/src/api/resources/transcriptions/client/index.js +2 -0
  121. package/dist/src/api/resources/transcriptions/client/index.js.map +1 -0
  122. package/dist/src/api/resources/transcriptions/client/requests/TranscriptionRequest.d.ts +32 -0
  123. package/dist/src/api/resources/transcriptions/client/requests/TranscriptionRequest.js +10 -0
  124. package/dist/src/api/resources/transcriptions/client/requests/TranscriptionRequest.js.map +1 -0
  125. package/dist/src/api/resources/transcriptions/client/requests/index.d.ts +1 -0
  126. package/dist/src/api/resources/transcriptions/client/requests/index.js +2 -0
  127. package/dist/src/api/resources/transcriptions/client/requests/index.js.map +1 -0
  128. package/dist/src/api/resources/transcriptions/exports.d.ts +2 -0
  129. package/dist/src/api/resources/transcriptions/exports.js +4 -0
  130. package/dist/src/api/resources/transcriptions/exports.js.map +1 -0
  131. package/dist/src/api/resources/transcriptions/index.d.ts +1 -0
  132. package/dist/src/api/resources/transcriptions/index.js +2 -0
  133. package/dist/src/api/resources/transcriptions/index.js.map +1 -0
  134. package/dist/src/api/resources/translations/client/Client.d.ts +57 -0
  135. package/dist/src/api/resources/translations/client/Client.js +208 -0
  136. package/dist/src/api/resources/translations/client/Client.js.map +1 -0
  137. package/dist/src/api/resources/translations/client/index.d.ts +1 -0
  138. package/dist/src/api/resources/translations/client/index.js +2 -0
  139. package/dist/src/api/resources/translations/client/index.js.map +1 -0
  140. package/dist/src/api/resources/translations/client/requests/CreateTranslationsRequest.d.ts +26 -0
  141. package/dist/src/api/resources/translations/client/requests/CreateTranslationsRequest.js +11 -0
  142. package/dist/src/api/resources/translations/client/requests/CreateTranslationsRequest.js.map +1 -0
  143. package/dist/src/api/resources/translations/client/requests/CreateTranslationsStreamRequest.d.ts +26 -0
  144. package/dist/src/api/resources/translations/client/requests/CreateTranslationsStreamRequest.js +11 -0
  145. package/dist/src/api/resources/translations/client/requests/CreateTranslationsStreamRequest.js.map +1 -0
  146. package/dist/src/api/resources/translations/client/requests/index.d.ts +2 -0
  147. package/dist/src/api/resources/translations/client/requests/index.js +3 -0
  148. package/dist/src/api/resources/translations/client/requests/index.js.map +1 -0
  149. package/dist/src/api/resources/translations/exports.d.ts +2 -0
  150. package/dist/src/api/resources/translations/exports.js +4 -0
  151. package/dist/src/api/resources/translations/exports.js.map +1 -0
  152. package/dist/src/api/resources/translations/index.d.ts +1 -0
  153. package/dist/src/api/resources/translations/index.js +2 -0
  154. package/dist/src/api/resources/translations/index.js.map +1 -0
  155. package/dist/src/api/types/Conversion.d.ts +20 -0
  156. package/dist/src/api/types/Conversion.js +9 -0
  157. package/dist/src/api/types/Conversion.js.map +1 -0
  158. package/dist/src/api/types/ConversionSegment.d.ts +10 -0
  159. package/dist/src/api/types/ConversionSegment.js +3 -0
  160. package/dist/src/api/types/ConversionSegment.js.map +1 -0
  161. package/dist/src/api/types/Diarization.d.ts +12 -0
  162. package/dist/src/api/types/Diarization.js +3 -0
  163. package/dist/src/api/types/Diarization.js.map +1 -0
  164. package/dist/src/api/types/ErrorObject.d.ts +18 -0
  165. package/dist/src/api/types/ErrorObject.js +16 -0
  166. package/dist/src/api/types/ErrorObject.js.map +1 -0
  167. package/dist/src/api/types/Error_.d.ts +6 -0
  168. package/dist/src/api/types/Error_.js +3 -0
  169. package/dist/src/api/types/Error_.js.map +1 -0
  170. package/dist/src/api/types/Model.d.ts +17 -0
  171. package/dist/src/api/types/Model.js +11 -0
  172. package/dist/src/api/types/Model.js.map +1 -0
  173. package/dist/src/api/types/ModelList.d.ts +13 -0
  174. package/dist/src/api/types/ModelList.js +8 -0
  175. package/dist/src/api/types/ModelList.js.map +1 -0
  176. package/dist/src/api/types/RealtimeClientMessage.d.ts +13 -0
  177. package/dist/src/api/types/RealtimeClientMessage.js +9 -0
  178. package/dist/src/api/types/RealtimeClientMessage.js.map +1 -0
  179. package/dist/src/api/types/RealtimeEvent.d.ts +39 -0
  180. package/dist/src/api/types/RealtimeEvent.js +13 -0
  181. package/dist/src/api/types/RealtimeEvent.js.map +1 -0
  182. package/dist/src/api/types/Segment.d.ts +10 -0
  183. package/dist/src/api/types/Segment.js +3 -0
  184. package/dist/src/api/types/Segment.js.map +1 -0
  185. package/dist/src/api/types/Speaker.d.ts +9 -0
  186. package/dist/src/api/types/Speaker.js +3 -0
  187. package/dist/src/api/types/Speaker.js.map +1 -0
  188. package/dist/src/api/types/SpeakerTurn.d.ts +7 -0
  189. package/dist/src/api/types/SpeakerTurn.js +3 -0
  190. package/dist/src/api/types/SpeakerTurn.js.map +1 -0
  191. package/dist/src/api/types/Speech.d.ts +25 -0
  192. package/dist/src/api/types/Speech.js +8 -0
  193. package/dist/src/api/types/Speech.js.map +1 -0
  194. package/dist/src/api/types/Transcription.d.ts +21 -0
  195. package/dist/src/api/types/Transcription.js +3 -0
  196. package/dist/src/api/types/Transcription.js.map +1 -0
  197. package/dist/src/api/types/Translation.d.ts +16 -0
  198. package/dist/src/api/types/Translation.js +3 -0
  199. package/dist/src/api/types/Translation.js.map +1 -0
  200. package/dist/src/api/types/TranslationLanguage.d.ts +8 -0
  201. package/dist/src/api/types/TranslationLanguage.js +3 -0
  202. package/dist/src/api/types/TranslationLanguage.js.map +1 -0
  203. package/dist/src/api/types/TranslationLanguageList.d.ts +14 -0
  204. package/dist/src/api/types/TranslationLanguageList.js +8 -0
  205. package/dist/src/api/types/TranslationLanguageList.js.map +1 -0
  206. package/dist/src/api/types/TranslationRequest.d.ts +22 -0
  207. package/dist/src/api/types/TranslationRequest.js +11 -0
  208. package/dist/src/api/types/TranslationRequest.js.map +1 -0
  209. package/dist/src/api/types/TranslationStreamEvent.d.ts +19 -0
  210. package/dist/src/api/types/TranslationStreamEvent.js +11 -0
  211. package/dist/src/api/types/TranslationStreamEvent.js.map +1 -0
  212. package/dist/src/api/types/Usage.d.ts +8 -0
  213. package/dist/src/api/types/Usage.js +3 -0
  214. package/dist/src/api/types/Usage.js.map +1 -0
  215. package/dist/src/api/types/Word.d.ts +9 -0
  216. package/dist/src/api/types/Word.js +3 -0
  217. package/dist/src/api/types/Word.js.map +1 -0
  218. package/dist/src/api/types/index.d.ts +21 -0
  219. package/dist/src/api/types/index.js +22 -0
  220. package/dist/src/api/types/index.js.map +1 -0
  221. package/dist/src/auth/BearerAuthProvider.d.ts +20 -0
  222. package/dist/src/auth/BearerAuthProvider.js +34 -0
  223. package/dist/src/auth/BearerAuthProvider.js.map +1 -0
  224. package/dist/src/auth/index.d.ts +1 -0
  225. package/dist/src/auth/index.js +2 -0
  226. package/dist/src/auth/index.js.map +1 -0
  227. package/dist/src/core/auth/AuthProvider.d.ts +8 -0
  228. package/dist/src/core/auth/AuthProvider.js +7 -0
  229. package/dist/src/core/auth/AuthProvider.js.map +1 -0
  230. package/dist/src/core/auth/AuthRequest.d.ts +9 -0
  231. package/dist/src/core/auth/AuthRequest.js +2 -0
  232. package/dist/src/core/auth/AuthRequest.js.map +1 -0
  233. package/dist/src/core/auth/BasicAuth.d.ts +8 -0
  234. package/dist/src/core/auth/BasicAuth.js +30 -0
  235. package/dist/src/core/auth/BasicAuth.js.map +1 -0
  236. package/dist/src/core/auth/BearerToken.d.ts +7 -0
  237. package/dist/src/core/auth/BearerToken.js +14 -0
  238. package/dist/src/core/auth/BearerToken.js.map +1 -0
  239. package/dist/src/core/auth/NoOpAuthProvider.d.ts +5 -0
  240. package/dist/src/core/auth/NoOpAuthProvider.js +6 -0
  241. package/dist/src/core/auth/NoOpAuthProvider.js.map +1 -0
  242. package/dist/src/core/auth/index.d.ts +5 -0
  243. package/dist/src/core/auth/index.js +5 -0
  244. package/dist/src/core/auth/index.js.map +1 -0
  245. package/dist/src/core/base64.d.ts +2 -0
  246. package/dist/src/core/base64.js +23 -0
  247. package/dist/src/core/base64.js.map +1 -0
  248. package/dist/src/core/exports.d.ts +2 -0
  249. package/dist/src/core/exports.js +3 -0
  250. package/dist/src/core/exports.js.map +1 -0
  251. package/dist/src/core/fetcher/APIResponse.d.ts +20 -0
  252. package/dist/src/core/fetcher/APIResponse.js +2 -0
  253. package/dist/src/core/fetcher/APIResponse.js.map +1 -0
  254. package/dist/src/core/fetcher/BinaryResponse.d.ts +19 -0
  255. package/dist/src/core/fetcher/BinaryResponse.js +15 -0
  256. package/dist/src/core/fetcher/BinaryResponse.js.map +1 -0
  257. package/dist/src/core/fetcher/EndpointMetadata.d.ts +13 -0
  258. package/dist/src/core/fetcher/EndpointMetadata.js +2 -0
  259. package/dist/src/core/fetcher/EndpointMetadata.js.map +1 -0
  260. package/dist/src/core/fetcher/EndpointSupplier.d.ts +12 -0
  261. package/dist/src/core/fetcher/EndpointSupplier.js +11 -0
  262. package/dist/src/core/fetcher/EndpointSupplier.js.map +1 -0
  263. package/dist/src/core/fetcher/Fetcher.d.ts +56 -0
  264. package/dist/src/core/fetcher/Fetcher.js +224 -0
  265. package/dist/src/core/fetcher/Fetcher.js.map +1 -0
  266. package/dist/src/core/fetcher/Headers.d.ts +2 -0
  267. package/dist/src/core/fetcher/Headers.js +84 -0
  268. package/dist/src/core/fetcher/Headers.js.map +1 -0
  269. package/dist/src/core/fetcher/HttpResponsePromise.d.ts +58 -0
  270. package/dist/src/core/fetcher/HttpResponsePromise.js +91 -0
  271. package/dist/src/core/fetcher/HttpResponsePromise.js.map +1 -0
  272. package/dist/src/core/fetcher/RawResponse.d.ts +29 -0
  273. package/dist/src/core/fetcher/RawResponse.js +41 -0
  274. package/dist/src/core/fetcher/RawResponse.js.map +1 -0
  275. package/dist/src/core/fetcher/Supplier.d.ts +4 -0
  276. package/dist/src/core/fetcher/Supplier.js +11 -0
  277. package/dist/src/core/fetcher/Supplier.js.map +1 -0
  278. package/dist/src/core/fetcher/createRequestUrl.d.ts +1 -0
  279. package/dist/src/core/fetcher/createRequestUrl.js +6 -0
  280. package/dist/src/core/fetcher/createRequestUrl.js.map +1 -0
  281. package/dist/src/core/fetcher/getErrorResponseBody.d.ts +1 -0
  282. package/dist/src/core/fetcher/getErrorResponseBody.js +31 -0
  283. package/dist/src/core/fetcher/getErrorResponseBody.js.map +1 -0
  284. package/dist/src/core/fetcher/getFetchFn.d.ts +1 -0
  285. package/dist/src/core/fetcher/getFetchFn.js +4 -0
  286. package/dist/src/core/fetcher/getFetchFn.js.map +1 -0
  287. package/dist/src/core/fetcher/getHeader.d.ts +1 -0
  288. package/dist/src/core/fetcher/getHeader.js +9 -0
  289. package/dist/src/core/fetcher/getHeader.js.map +1 -0
  290. package/dist/src/core/fetcher/getRequestBody.d.ts +7 -0
  291. package/dist/src/core/fetcher/getRequestBody.js +14 -0
  292. package/dist/src/core/fetcher/getRequestBody.js.map +1 -0
  293. package/dist/src/core/fetcher/getResponseBody.d.ts +1 -0
  294. package/dist/src/core/fetcher/getResponseBody.js +67 -0
  295. package/dist/src/core/fetcher/getResponseBody.js.map +1 -0
  296. package/dist/src/core/fetcher/index.d.ts +13 -0
  297. package/dist/src/core/fetcher/index.js +8 -0
  298. package/dist/src/core/fetcher/index.js.map +1 -0
  299. package/dist/src/core/fetcher/makePassthroughRequest.d.ts +49 -0
  300. package/dist/src/core/fetcher/makePassthroughRequest.js +142 -0
  301. package/dist/src/core/fetcher/makePassthroughRequest.js.map +1 -0
  302. package/dist/src/core/fetcher/makeRequest.d.ts +6 -0
  303. package/dist/src/core/fetcher/makeRequest.js +54 -0
  304. package/dist/src/core/fetcher/makeRequest.js.map +1 -0
  305. package/dist/src/core/fetcher/redactUrl.d.ts +2 -0
  306. package/dist/src/core/fetcher/redactUrl.js +85 -0
  307. package/dist/src/core/fetcher/redactUrl.js.map +1 -0
  308. package/dist/src/core/fetcher/requestWithRetries.d.ts +1 -0
  309. package/dist/src/core/fetcher/requestWithRetries.js +57 -0
  310. package/dist/src/core/fetcher/requestWithRetries.js.map +1 -0
  311. package/dist/src/core/fetcher/signals.d.ts +5 -0
  312. package/dist/src/core/fetcher/signals.js +29 -0
  313. package/dist/src/core/fetcher/signals.js.map +1 -0
  314. package/dist/src/core/file/exports.d.ts +1 -0
  315. package/dist/src/core/file/exports.js +2 -0
  316. package/dist/src/core/file/exports.js.map +1 -0
  317. package/dist/src/core/file/file.d.ts +10 -0
  318. package/dist/src/core/file/file.js +169 -0
  319. package/dist/src/core/file/file.js.map +1 -0
  320. package/dist/src/core/file/index.d.ts +2 -0
  321. package/dist/src/core/file/index.js +3 -0
  322. package/dist/src/core/file/index.js.map +1 -0
  323. package/dist/src/core/file/types.d.ts +66 -0
  324. package/dist/src/core/file/types.js +2 -0
  325. package/dist/src/core/file/types.js.map +1 -0
  326. package/dist/src/core/form-data-utils/FormDataWrapper.d.ts +15 -0
  327. package/dist/src/core/form-data-utils/FormDataWrapper.js +109 -0
  328. package/dist/src/core/form-data-utils/FormDataWrapper.js.map +1 -0
  329. package/dist/src/core/form-data-utils/encodeAsFormParameter.d.ts +1 -0
  330. package/dist/src/core/form-data-utils/encodeAsFormParameter.js +10 -0
  331. package/dist/src/core/form-data-utils/encodeAsFormParameter.js.map +1 -0
  332. package/dist/src/core/form-data-utils/index.d.ts +2 -0
  333. package/dist/src/core/form-data-utils/index.js +3 -0
  334. package/dist/src/core/form-data-utils/index.js.map +1 -0
  335. package/dist/src/core/headers.d.ts +2 -0
  336. package/dist/src/core/headers.js +28 -0
  337. package/dist/src/core/headers.js.map +1 -0
  338. package/dist/src/core/index.d.ts +9 -0
  339. package/dist/src/core/index.js +10 -0
  340. package/dist/src/core/index.js.map +1 -0
  341. package/dist/src/core/json.d.ts +15 -0
  342. package/dist/src/core/json.js +20 -0
  343. package/dist/src/core/json.js.map +1 -0
  344. package/dist/src/core/logging/exports.d.ts +18 -0
  345. package/dist/src/core/logging/exports.js +10 -0
  346. package/dist/src/core/logging/exports.js.map +1 -0
  347. package/dist/src/core/logging/index.d.ts +1 -0
  348. package/dist/src/core/logging/index.js +2 -0
  349. package/dist/src/core/logging/index.js.map +1 -0
  350. package/dist/src/core/logging/logger.d.ts +126 -0
  351. package/dist/src/core/logging/logger.js +141 -0
  352. package/dist/src/core/logging/logger.js.map +1 -0
  353. package/dist/src/core/requestBody.d.ts +12 -0
  354. package/dist/src/core/requestBody.js +24 -0
  355. package/dist/src/core/requestBody.js.map +1 -0
  356. package/dist/src/core/runtime/index.d.ts +1 -0
  357. package/dist/src/core/runtime/index.js +2 -0
  358. package/dist/src/core/runtime/index.js.map +1 -0
  359. package/dist/src/core/runtime/runtime.d.ts +28 -0
  360. package/dist/src/core/runtime/runtime.js +172 -0
  361. package/dist/src/core/runtime/runtime.js.map +1 -0
  362. package/dist/src/core/stream/Stream.d.ts +100 -0
  363. package/dist/src/core/stream/Stream.js +427 -0
  364. package/dist/src/core/stream/Stream.js.map +1 -0
  365. package/dist/src/core/stream/index.d.ts +2 -0
  366. package/dist/src/core/stream/index.js +2 -0
  367. package/dist/src/core/stream/index.js.map +1 -0
  368. package/dist/src/core/url/QueryStringBuilder.d.ts +47 -0
  369. package/dist/src/core/url/QueryStringBuilder.js +79 -0
  370. package/dist/src/core/url/QueryStringBuilder.js.map +1 -0
  371. package/dist/src/core/url/encodePathParam.d.ts +1 -0
  372. package/dist/src/core/url/encodePathParam.js +19 -0
  373. package/dist/src/core/url/encodePathParam.js.map +1 -0
  374. package/dist/src/core/url/index.d.ts +4 -0
  375. package/dist/src/core/url/index.js +5 -0
  376. package/dist/src/core/url/index.js.map +1 -0
  377. package/dist/src/core/url/join.d.ts +1 -0
  378. package/dist/src/core/url/join.js +66 -0
  379. package/dist/src/core/url/join.js.map +1 -0
  380. package/dist/src/core/url/qs.d.ts +7 -0
  381. package/dist/src/core/url/qs.js +77 -0
  382. package/dist/src/core/url/qs.js.map +1 -0
  383. package/dist/src/environments.d.ts +4 -0
  384. package/dist/src/environments.js +5 -0
  385. package/dist/src/environments.js.map +1 -0
  386. package/dist/src/errors/TapraError.d.ts +15 -0
  387. package/dist/src/errors/TapraError.js +39 -0
  388. package/dist/src/errors/TapraError.js.map +1 -0
  389. package/dist/src/errors/TapraTimeoutError.d.ts +6 -0
  390. package/dist/src/errors/TapraTimeoutError.js +16 -0
  391. package/dist/src/errors/TapraTimeoutError.js.map +1 -0
  392. package/dist/src/errors/handleNonStatusCodeError.d.ts +2 -0
  393. package/dist/src/errors/handleNonStatusCodeError.js +33 -0
  394. package/dist/src/errors/handleNonStatusCodeError.js.map +1 -0
  395. package/dist/src/errors/index.d.ts +2 -0
  396. package/dist/src/errors/index.js +3 -0
  397. package/dist/src/errors/index.js.map +1 -0
  398. package/dist/src/exports.d.ts +1 -0
  399. package/dist/src/exports.js +2 -0
  400. package/dist/src/exports.js.map +1 -0
  401. package/dist/src/index.d.ts +6 -0
  402. package/dist/src/index.js +6 -0
  403. package/dist/src/index.js.map +1 -0
  404. package/package.json +28 -4
package/README.md CHANGED
@@ -1,3 +1,61 @@
1
- # Temporary Holding Version
1
+ # Tapra TypeScript SDK
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Official TypeScript client for the Tapra API: Tunisian Arabic / French / English
4
+ code-switching transcription, speech, translation, and Arabizi ↔ Arabic conversion.
5
+ ESM, Node.js 22+ and modern browsers, no runtime dependencies.
6
+
7
+ ```ts
8
+ import { TapraClient, Tapra } from '@tapra/sdk';
9
+
10
+ const client = new TapraClient(); // https://api.tapra.tn; apiKey defaults to TAPRA_API_KEY
11
+
12
+ const transcript = await client.transcriptions.create({ file: audioFile, timestamps: 'word' });
13
+ await client.script.convert({ text: '3lech 7abit l9anoun?', direction: 'ZI2AR' });
14
+
15
+ for await (const event of await client.translations.createStream({ input: 'عندي برشا خدمة', target: 'French' })) {
16
+ process.stdout.write(event.delta ?? '');
17
+ }
18
+ ```
19
+
20
+ Pass `baseUrl` to target another host, such as a local model host.
21
+
22
+ Errors are typed (`Tapra.PaymentRequiredError` for HTTP 402, …) and carry `body.error.type`.
23
+ Pass `{ idempotencyKey }` as request options to retry metered requests safely, and call
24
+ `.withRawResponse()` to read `x-tapra-cost-tnd`.
25
+
26
+ ## Realtime transcription
27
+
28
+ ```ts
29
+ import { connectRealtime } from '@tapra/sdk';
30
+
31
+ const session = await connectRealtime({ language: 'ar-AR' }); // wss://api.tapra.tn
32
+ session.on('partial', (event) => render(event.text));
33
+ session.sendAudio(pcmChunk); // mono pcm_s16le, 16 kHz
34
+ const final = await session.stop();
35
+ ```
36
+
37
+ The key is sent as the `tapra-auth.<key>` WebSocket subprotocol, never in the URL. In a browser,
38
+ pass a short-lived session token as `apiKey`, not a permanent key.
39
+
40
+ ## Prices
41
+
42
+ Tapra charges in TND. The SDK does not hardcode any price or dollar amount: it reads the
43
+ same live price list the website and the meter use.
44
+
45
+ ```ts
46
+ import { fetchTapraPrices, estimateCostTnd, estimateCostUsd } from '@tapra/sdk';
47
+
48
+ const prices = await fetchTapraPrices(); // GET https://www.tapra.tn/api/pricing, no key needed
49
+
50
+ estimateCostTnd(prices, 'tts', 1200); // 0.24 TND — 1,200 characters
51
+ estimateCostUsd(prices, 'tts', 1200); // ≈ $0.08, at the rate the list was fetched with
52
+ ```
53
+
54
+ `estimateCostMicroTnd` returns the exact integer amount the meter charges, including the
55
+ per-request minimum for text products. The endpoint also returns `tndPerUsd` and the date of
56
+ the published rate, so a UI can show which rate it used.
57
+
58
+ ## Development
59
+
60
+ `src/` is generated by Fern from `openapi/tapra-api.json`; do not edit it by hand.
61
+ `lib/` (package entry, realtime helper, price list) is hand-written. Tests: `sdks/tests/typescript`.
@@ -0,0 +1,5 @@
1
+ export * from '../src/index.js';
2
+ export { RealtimeError, RealtimeSession, connectRealtime, transcribeStream } from './realtime.js';
3
+ export type { AudioChunk, RealtimeOptions, WebSocketLike } from './realtime.js';
4
+ export { TAPRA_PRICING_URL, estimateCostMicroTnd, estimateCostTnd, estimateCostUsd, fetchTapraPrices, formatUsd, tndToUsd, usdToTnd } from './pricing.js';
5
+ export type { TapraPrices, TapraServicePrice } from './pricing.js';
@@ -0,0 +1,7 @@
1
+ // Package entry: the Fern-generated client (src/, never edit) plus the hand-written
2
+ // realtime WebSocket helper (lib/realtime.ts) and the price-list helper
3
+ // (lib/pricing.ts).
4
+ export * from '../src/index.js';
5
+ export { RealtimeError, RealtimeSession, connectRealtime, transcribeStream } from './realtime.js';
6
+ export { TAPRA_PRICING_URL, estimateCostMicroTnd, estimateCostTnd, estimateCostUsd, fetchTapraPrices, formatUsd, tndToUsd, usdToTnd } from './pricing.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,wEAAwE;AACxE,oBAAoB;AACpB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAElG,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,QAAQ,EACT,MAAM,cAAc,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Tapra price list.
3
+ *
4
+ * Tapra charges in TND. The dollar figures in this package are never written
5
+ * down: they come from the same live rate the website and the meter use, which
6
+ * the SDK reads from `GET /api/pricing`.
7
+ *
8
+ * import { fetchTapraPrices, estimateCostTnd } from '@tapra/sdk';
9
+ *
10
+ * const prices = await fetchTapraPrices();
11
+ * const costTnd = estimateCostTnd(prices, 'tts', 1200);
12
+ *
13
+ * The endpoint is public, needs no key, and answers with the exact integer
14
+ * micro-TND amounts the meter charges.
15
+ */
16
+ export declare const TAPRA_PRICING_URL = "https://www.tapra.tn/api/pricing";
17
+ export interface TapraServicePrice {
18
+ /** The exact model id sent to the API. */
19
+ model: string;
20
+ /** `audio_ms` for speech, `characters` for text. */
21
+ unit: 'audio_ms' | 'characters';
22
+ /** How many metered units one charge unit covers (60,000 ms or 1,000 chars). */
23
+ unitsPerChargeUnit: number;
24
+ /** The price of one charge unit in TND. */
25
+ tndPerUnit: number;
26
+ /** The same price in USD, at the rate the endpoint was fetched with. */
27
+ usdPerUnit: number;
28
+ /** The same price in exact micro-TND (1 TND = 1,000,000 micro-TND). */
29
+ microTndPerUnit: number;
30
+ /** The per-request floor in TND (text products only). */
31
+ minimumTnd: number;
32
+ /** The per-request floor in USD. */
33
+ minimumUsd: number;
34
+ }
35
+ export interface TapraPrices {
36
+ version: string;
37
+ currency: 'TND';
38
+ /** Units of TND per 1 USD. */
39
+ tndPerUsd: number;
40
+ /** Date the rate was published (ISO yyyy-mm-dd), when known. */
41
+ rateDate: string | null;
42
+ rateSource: 'frankfurter' | 'fallback';
43
+ microTndPerTnd: number;
44
+ minimumChargeMicroTnd: number;
45
+ welcomeCreditTnd: number;
46
+ topUpPackagesTnd: number[];
47
+ ttsFlashMultiplier: number;
48
+ services: Record<string, TapraServicePrice>;
49
+ }
50
+ /** Fetches the live price list. */
51
+ export declare function fetchTapraPrices(options?: {
52
+ baseUrl?: string;
53
+ signal?: AbortSignal;
54
+ fetch?: typeof fetch;
55
+ }): Promise<TapraPrices>;
56
+ /** Converts an amount in TND to USD at the rate of a fetched price list. */
57
+ export declare function tndToUsd(tnd: number, tndPerUsd: number): number;
58
+ /** Converts an amount in USD to TND at the rate of a fetched price list. */
59
+ export declare function usdToTnd(usd: number, tndPerUsd: number): number;
60
+ /** Formats a USD amount the way the site does: up to three decimals. */
61
+ export declare function formatUsd(value: number): string;
62
+ /**
63
+ * The charge for a request, in exact micro-TND, exactly as the meter computes
64
+ * it. `quantity` is audio milliseconds for speech and characters for text.
65
+ */
66
+ export declare function estimateCostMicroTnd(prices: TapraPrices, service: string, quantity: number): number;
67
+ /** The charge for a request, in TND. */
68
+ export declare function estimateCostTnd(prices: TapraPrices, service: string, quantity: number): number;
69
+ /** The charge for a request, in USD, at the rate of the fetched price list. */
70
+ export declare function estimateCostUsd(prices: TapraPrices, service: string, quantity: number): number;
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Tapra price list.
3
+ *
4
+ * Tapra charges in TND. The dollar figures in this package are never written
5
+ * down: they come from the same live rate the website and the meter use, which
6
+ * the SDK reads from `GET /api/pricing`.
7
+ *
8
+ * import { fetchTapraPrices, estimateCostTnd } from '@tapra/sdk';
9
+ *
10
+ * const prices = await fetchTapraPrices();
11
+ * const costTnd = estimateCostTnd(prices, 'tts', 1200);
12
+ *
13
+ * The endpoint is public, needs no key, and answers with the exact integer
14
+ * micro-TND amounts the meter charges.
15
+ */
16
+ export const TAPRA_PRICING_URL = 'https://www.tapra.tn/api/pricing';
17
+ /** Fetches the live price list. */
18
+ export async function fetchTapraPrices(options = {}) {
19
+ const url = options.baseUrl ? `${options.baseUrl.replace(/\/$/, '')}/api/pricing` : TAPRA_PRICING_URL;
20
+ const doFetch = options.fetch ?? fetch;
21
+ const response = await doFetch(url, { signal: options.signal });
22
+ if (!response.ok) {
23
+ throw new Error(`Could not load the Tapra price list (HTTP ${response.status}).`);
24
+ }
25
+ return (await response.json());
26
+ }
27
+ /** Converts an amount in TND to USD at the rate of a fetched price list. */
28
+ export function tndToUsd(tnd, tndPerUsd) {
29
+ if (!Number.isFinite(tnd) || !Number.isFinite(tndPerUsd) || tndPerUsd <= 0)
30
+ return 0;
31
+ return tnd / tndPerUsd;
32
+ }
33
+ /** Converts an amount in USD to TND at the rate of a fetched price list. */
34
+ export function usdToTnd(usd, tndPerUsd) {
35
+ if (!Number.isFinite(usd) || !Number.isFinite(tndPerUsd) || tndPerUsd <= 0)
36
+ return 0;
37
+ return usd * tndPerUsd;
38
+ }
39
+ /** Formats a USD amount the way the site does: up to three decimals. */
40
+ export function formatUsd(value) {
41
+ const fixed = value.toFixed(3);
42
+ return `$${fixed.includes('.') ? fixed.replace(/0+$/, '').replace(/\.$/, '') : fixed}`;
43
+ }
44
+ /**
45
+ * The charge for a request, in exact micro-TND, exactly as the meter computes
46
+ * it. `quantity` is audio milliseconds for speech and characters for text.
47
+ */
48
+ export function estimateCostMicroTnd(prices, service, quantity) {
49
+ const price = prices.services[service];
50
+ if (!price)
51
+ throw new Error(`Unknown Tapra service: ${service}`);
52
+ if (!Number.isFinite(quantity) || quantity < 0) {
53
+ throw new Error('Quantity must be a non-negative number.');
54
+ }
55
+ const units = Math.ceil(quantity);
56
+ const charge = Math.ceil((units * price.microTndPerUnit) / price.unitsPerChargeUnit);
57
+ return price.unit === 'characters' ? Math.max(prices.minimumChargeMicroTnd, charge) : charge;
58
+ }
59
+ /** The charge for a request, in TND. */
60
+ export function estimateCostTnd(prices, service, quantity) {
61
+ return estimateCostMicroTnd(prices, service, quantity) / prices.microTndPerTnd;
62
+ }
63
+ /** The charge for a request, in USD, at the rate of the fetched price list. */
64
+ export function estimateCostUsd(prices, service, quantity) {
65
+ return tndToUsd(estimateCostTnd(prices, service, quantity), prices.tndPerUsd);
66
+ }
67
+ //# sourceMappingURL=pricing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../lib/pricing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Hand-written client for the realtime transcription WebSocket (/v1/realtime/stream).
3
+ * OpenAPI cannot describe WebSockets, so Fern does not generate this part; the event
4
+ * types still come from the generated contract (Tapra.RealtimeEvent).
5
+ *
6
+ * Works with the browser WebSocket and the Node.js 22+ global WebSocket. The API key is
7
+ * sent as the `tapra-auth.<key>` subprotocol, never in the URL. Permanent keys belong
8
+ * in server-side code; browsers should use a short-lived session token as `apiKey`.
9
+ */
10
+ import type * as Tapra from '../src/api/index.js';
11
+ type RealtimeEvent = Tapra.RealtimeEvent;
12
+ type EventType = RealtimeEvent['type'];
13
+ /** Mono 16-bit little-endian PCM at 16 kHz. */
14
+ export type AudioChunk = ArrayBuffer | ArrayBufferView;
15
+ /** The subset of the WebSocket API this helper uses. */
16
+ export interface WebSocketLike {
17
+ readonly readyState: number;
18
+ binaryType: string;
19
+ send(data: string | ArrayBuffer | ArrayBufferView): void;
20
+ close(code?: number, reason?: string): void;
21
+ addEventListener(type: string, listener: (event: any) => void): void;
22
+ }
23
+ export type WebSocketConstructor = new (url: string, protocols?: string | string[]) => WebSocketLike;
24
+ export interface RealtimeOptions {
25
+ /** Defaults to the TAPRA_API_KEY environment variable. */
26
+ apiKey?: string;
27
+ /** API origin, e.g. https://api.example.com. Defaults to TapraEnvironment.Default. */
28
+ baseUrl?: string;
29
+ /** Decoding hint; code-switching stays enabled. Server default: ar-AR. */
30
+ language?: string;
31
+ /** Mask silence before the decoder. Server default: true. */
32
+ vad?: boolean;
33
+ /** Emit `utterance` events after trailing silence. Server default: true. */
34
+ endpointing?: boolean;
35
+ /** Trailing silence that closes an utterance (200-3000). Server default: 800. */
36
+ endpointingMs?: number;
37
+ /** End the session after a long silence. Server default: true. */
38
+ idleStop?: boolean;
39
+ /** Silence that ends the session (1000-120000). Server default: 10000. */
40
+ idleStopMs?: number;
41
+ /** Punctuate `utterance` and `final` text. Server default: false. */
42
+ punctuation?: boolean;
43
+ /** How long to wait for the `ready` event. Default: 15000. */
44
+ connectTimeoutMs?: number;
45
+ /** WebSocket implementation. Defaults to globalThis.WebSocket. */
46
+ WebSocket?: WebSocketConstructor;
47
+ }
48
+ export declare class RealtimeError extends Error {
49
+ /** `connection_rejected`, `timeout`, `closed`, `not_open`, `missing_api_key`, or a server error code. */
50
+ readonly code: string;
51
+ readonly closeCode?: number;
52
+ constructor(message: string, code: string, closeCode?: number);
53
+ }
54
+ export declare function realtimeUrl(options?: RealtimeOptions): string;
55
+ /** One realtime transcription session. Create it with {@link connectRealtime}. */
56
+ export declare class RealtimeSession implements AsyncIterable<RealtimeEvent> {
57
+ private readonly socket;
58
+ private readonly readyState;
59
+ private readonly finalState;
60
+ private readonly queue;
61
+ private readonly waiters;
62
+ private readonly listeners;
63
+ private closed;
64
+ private readyEvent?;
65
+ /** @internal Use connectRealtime(). */
66
+ constructor(socket: WebSocketLike);
67
+ /** The `ready` event: audio format and the session settings the server applied. */
68
+ get ready(): RealtimeEvent;
69
+ /** True while audio can be sent. */
70
+ get isOpen(): boolean;
71
+ /** @internal */
72
+ waitUntilReady(timeoutMs: number): Promise<RealtimeEvent>;
73
+ /** Send one chunk of mono pcm_s16le audio at 16 kHz. */
74
+ sendAudio(chunk: AudioChunk): void;
75
+ /** Keep an idle connection alive; send every 15 s when no audio is flowing. */
76
+ ping(): void;
77
+ /** Finish the session and resolve with the `final` event (full transcript and usage). */
78
+ stop(): Promise<RealtimeEvent>;
79
+ /** Resolves with the `final` event, whether it follows stop() or an idle stop. */
80
+ get final(): Promise<RealtimeEvent>;
81
+ /** Close without waiting for the final transcript (no final charge event is received). */
82
+ close(): void;
83
+ /** Subscribe to one event type. Returns an unsubscribe function. */
84
+ on(type: EventType, listener: (event: RealtimeEvent) => void): () => void;
85
+ /** Iterate over every event after `ready` until the socket closes. */
86
+ [Symbol.asyncIterator](): AsyncIterator<RealtimeEvent>;
87
+ private onMessage;
88
+ private onClose;
89
+ }
90
+ /** Open a realtime session and resolve once the server sends `ready`. */
91
+ export declare function connectRealtime(options?: RealtimeOptions): Promise<RealtimeSession>;
92
+ /**
93
+ * Stream audio chunks through one session and resolve with the `final` event.
94
+ * `onEvent` receives every partial/utterance event while audio is flowing.
95
+ */
96
+ export declare function transcribeStream(audio: AsyncIterable<AudioChunk> | Iterable<AudioChunk>, options?: RealtimeOptions & {
97
+ onEvent?: (event: RealtimeEvent) => void;
98
+ }): Promise<RealtimeEvent>;
99
+ export {};
@@ -0,0 +1,230 @@
1
+ import { TapraEnvironment } from '../src/environments.js';
2
+ export class RealtimeError extends Error {
3
+ /** `connection_rejected`, `timeout`, `closed`, `not_open`, `missing_api_key`, or a server error code. */
4
+ code;
5
+ closeCode;
6
+ constructor(message, code, closeCode) {
7
+ super(message);
8
+ this.name = 'RealtimeError';
9
+ this.code = code;
10
+ this.closeCode = closeCode;
11
+ }
12
+ }
13
+ const OPEN = 1;
14
+ const PATH = '/v1/realtime/stream';
15
+ function deferred() {
16
+ const state = { settled: false };
17
+ state.promise = new Promise((resolve, reject) => {
18
+ state.resolve = (value) => {
19
+ if (state.settled)
20
+ return;
21
+ state.settled = true;
22
+ resolve(value);
23
+ };
24
+ state.reject = (error) => {
25
+ if (state.settled)
26
+ return;
27
+ state.settled = true;
28
+ reject(error);
29
+ };
30
+ });
31
+ // Unobserved rejections (e.g. nobody awaits `final`) must not crash the process.
32
+ state.promise.catch(() => undefined);
33
+ return state;
34
+ }
35
+ function environmentApiKey() {
36
+ const env = globalThis.process
37
+ ?.env;
38
+ return env?.TAPRA_API_KEY;
39
+ }
40
+ function flag(value) {
41
+ return value ? 'true' : 'false';
42
+ }
43
+ export function realtimeUrl(options = {}) {
44
+ const url = new URL(options.baseUrl ?? TapraEnvironment.Default);
45
+ if (url.protocol === 'https:')
46
+ url.protocol = 'wss:';
47
+ else if (url.protocol === 'http:')
48
+ url.protocol = 'ws:';
49
+ else if (url.protocol !== 'ws:' && url.protocol !== 'wss:') {
50
+ throw new RealtimeError(`Unsupported base URL protocol: ${url.protocol}`, 'invalid_base_url');
51
+ }
52
+ url.pathname = url.pathname.replace(/\/+$/, '') + PATH;
53
+ const query = [
54
+ ['language', options.language],
55
+ ['vad', options.vad === undefined ? undefined : flag(options.vad)],
56
+ ['endpointing', options.endpointing === undefined ? undefined : flag(options.endpointing)],
57
+ ['endpointing_ms', options.endpointingMs?.toString()],
58
+ ['idle_stop', options.idleStop === undefined ? undefined : flag(options.idleStop)],
59
+ ['idle_stop_ms', options.idleStopMs?.toString()],
60
+ ['punctuation', options.punctuation === undefined ? undefined : flag(options.punctuation)]
61
+ ];
62
+ for (const [name, value] of query) {
63
+ if (value !== undefined)
64
+ url.searchParams.set(name, value);
65
+ }
66
+ return url.toString();
67
+ }
68
+ /** One realtime transcription session. Create it with {@link connectRealtime}. */
69
+ export class RealtimeSession {
70
+ socket;
71
+ readyState = deferred();
72
+ finalState = deferred();
73
+ queue = [];
74
+ waiters = [];
75
+ listeners = new Map();
76
+ closed = false;
77
+ readyEvent;
78
+ /** @internal Use connectRealtime(). */
79
+ constructor(socket) {
80
+ this.socket = socket;
81
+ socket.binaryType = 'arraybuffer';
82
+ socket.addEventListener('message', (message) => this.onMessage(message.data));
83
+ socket.addEventListener('close', (event) => this.onClose(event.code, event.reason));
84
+ // Some runtimes (Node.js 22) report a refused handshake only as an error event.
85
+ socket.addEventListener('error', () => {
86
+ if (this.readyState.settled)
87
+ return;
88
+ this.readyState.reject(new RealtimeError('The server rejected the connection', 'connection_rejected'));
89
+ this.onClose(undefined, 'The server rejected the connection');
90
+ });
91
+ }
92
+ /** The `ready` event: audio format and the session settings the server applied. */
93
+ get ready() {
94
+ if (!this.readyEvent)
95
+ throw new RealtimeError('The session is not ready yet', 'not_open');
96
+ return this.readyEvent;
97
+ }
98
+ /** True while audio can be sent. */
99
+ get isOpen() {
100
+ return !this.closed && this.socket.readyState === OPEN;
101
+ }
102
+ /** @internal */
103
+ waitUntilReady(timeoutMs) {
104
+ const timer = setTimeout(() => {
105
+ this.readyState.reject(new RealtimeError('Timed out waiting for the ready event', 'timeout'));
106
+ this.socket.close(1000, 'Connect timeout');
107
+ }, timeoutMs);
108
+ return this.readyState.promise.finally(() => clearTimeout(timer));
109
+ }
110
+ /** Send one chunk of mono pcm_s16le audio at 16 kHz. */
111
+ sendAudio(chunk) {
112
+ if (!this.isOpen)
113
+ throw new RealtimeError('The session is not open', 'not_open');
114
+ this.socket.send(chunk);
115
+ }
116
+ /** Keep an idle connection alive; send every 15 s when no audio is flowing. */
117
+ ping() {
118
+ if (this.isOpen)
119
+ this.socket.send(JSON.stringify({ type: 'ping' }));
120
+ }
121
+ /** Finish the session and resolve with the `final` event (full transcript and usage). */
122
+ stop() {
123
+ if (this.isOpen && !this.finalState.settled) {
124
+ this.socket.send(JSON.stringify({ type: 'stop' }));
125
+ }
126
+ return this.finalState.promise;
127
+ }
128
+ /** Resolves with the `final` event, whether it follows stop() or an idle stop. */
129
+ get final() {
130
+ return this.finalState.promise;
131
+ }
132
+ /** Close without waiting for the final transcript (no final charge event is received). */
133
+ close() {
134
+ this.socket.close(1000, 'Client closed');
135
+ }
136
+ /** Subscribe to one event type. Returns an unsubscribe function. */
137
+ on(type, listener) {
138
+ const set = this.listeners.get(type) ?? new Set();
139
+ set.add(listener);
140
+ this.listeners.set(type, set);
141
+ return () => set.delete(listener);
142
+ }
143
+ /** Iterate over every event after `ready` until the socket closes. */
144
+ [Symbol.asyncIterator]() {
145
+ return {
146
+ next: () => {
147
+ const event = this.queue.shift();
148
+ if (event)
149
+ return Promise.resolve({ value: event, done: false });
150
+ if (this.closed)
151
+ return Promise.resolve({ value: undefined, done: true });
152
+ return new Promise((resolve) => this.waiters.push(resolve));
153
+ }
154
+ };
155
+ }
156
+ onMessage(data) {
157
+ if (typeof data !== 'string')
158
+ return;
159
+ let event;
160
+ try {
161
+ event = JSON.parse(data);
162
+ }
163
+ catch {
164
+ return;
165
+ }
166
+ if (event.type === 'ready') {
167
+ this.readyEvent = event;
168
+ this.readyState.resolve(event);
169
+ return;
170
+ }
171
+ if (event.type === 'final')
172
+ this.finalState.resolve(event);
173
+ if (event.type === 'error') {
174
+ const error = new RealtimeError(event.message ?? 'The transcription stream failed', event.code ?? 'server_error');
175
+ this.readyState.reject(error);
176
+ this.finalState.reject(error);
177
+ }
178
+ for (const listener of this.listeners.get(event.type) ?? [])
179
+ listener(event);
180
+ const waiter = this.waiters.shift();
181
+ if (waiter)
182
+ waiter({ value: event, done: false });
183
+ else
184
+ this.queue.push(event);
185
+ }
186
+ onClose(code, reason) {
187
+ this.closed = true;
188
+ if (!this.readyState.settled) {
189
+ this.readyState.reject(new RealtimeError(reason || 'The server rejected the connection', 'connection_rejected', code));
190
+ }
191
+ this.finalState.reject(new RealtimeError(reason || 'The socket closed before the final event', 'closed', code));
192
+ for (const waiter of this.waiters.splice(0))
193
+ waiter({ value: undefined, done: true });
194
+ }
195
+ }
196
+ /** Open a realtime session and resolve once the server sends `ready`. */
197
+ export async function connectRealtime(options = {}) {
198
+ const apiKey = options.apiKey ?? environmentApiKey();
199
+ if (!apiKey) {
200
+ throw new RealtimeError('Pass apiKey or set TAPRA_API_KEY', 'missing_api_key');
201
+ }
202
+ const WebSocketImpl = options.WebSocket ?? globalThis.WebSocket;
203
+ if (!WebSocketImpl) {
204
+ throw new RealtimeError('No WebSocket implementation; pass options.WebSocket', 'not_open');
205
+ }
206
+ const socket = new WebSocketImpl(realtimeUrl(options), ['tapra-realtime', `tapra-auth.${apiKey}`]);
207
+ const session = new RealtimeSession(socket);
208
+ await session.waitUntilReady(options.connectTimeoutMs ?? 15_000);
209
+ return session;
210
+ }
211
+ /**
212
+ * Stream audio chunks through one session and resolve with the `final` event.
213
+ * `onEvent` receives every partial/utterance event while audio is flowing.
214
+ */
215
+ export async function transcribeStream(audio, options = {}) {
216
+ const session = await connectRealtime(options);
217
+ const { onEvent } = options;
218
+ const unsubscribe = onEvent
219
+ ? ['partial', 'utterance'].map((type) => session.on(type, onEvent))
220
+ : [];
221
+ try {
222
+ for await (const chunk of audio)
223
+ session.sendAudio(chunk);
224
+ return await session.stop();
225
+ }
226
+ finally {
227
+ unsubscribe.forEach((off) => off());
228
+ }
229
+ }
230
+ //# sourceMappingURL=realtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../lib/realtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { BearerAuthProvider } from "./auth/BearerAuthProvider.js";
2
+ import * as core from "./core/index.js";
3
+ import type * as environments from "./environments.js";
4
+ export type AuthOption = false | core.AuthProvider["getAuthRequest"] | core.AuthProvider | BearerAuthProvider.AuthOptions;
5
+ export type BaseClientOptions = {
6
+ environment?: core.Supplier<environments.TapraEnvironment | string>;
7
+ /** Specify a custom URL to connect the client to. */
8
+ baseUrl?: core.Supplier<string>;
9
+ /** Additional headers to include in requests. */
10
+ headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;
11
+ /** The default maximum time to wait for a response in seconds. */
12
+ timeoutInSeconds?: number;
13
+ /** The default number of times to retry the request. Defaults to 2. */
14
+ maxRetries?: number;
15
+ /** Provide a custom fetch implementation. Useful for platforms that don't have a built-in fetch or need a custom implementation. */
16
+ fetch?: typeof fetch;
17
+ /** Configure logging for the client. */
18
+ logging?: core.logging.LogConfig | core.logging.Logger;
19
+ /** Default options for SSE stream reconnection behavior. Has no effect on non-resumable endpoints. */
20
+ stream?: {
21
+ reconnectionEnabled?: boolean;
22
+ maxReconnectionAttempts?: number;
23
+ };
24
+ /** Override auth. Pass false to disable, a function returning auth headers, an AuthProvider, or auth options. */
25
+ auth?: AuthOption;
26
+ } & BearerAuthProvider.AuthOptions;
27
+ export interface BaseRequestOptions {
28
+ /** The maximum time to wait for a response in seconds. */
29
+ timeoutInSeconds?: number;
30
+ /** The number of times to retry the request. Defaults to 2. */
31
+ maxRetries?: number;
32
+ /** A hook to abort the request. */
33
+ abortSignal?: AbortSignal;
34
+ /** Additional query string parameters to include in the request. */
35
+ queryParams?: Record<string, unknown>;
36
+ /** A dictionary containing additional parameters to spread into the request's body. */
37
+ additionalBodyParameters?: Record<string, unknown>;
38
+ /** Additional headers to include in the request. */
39
+ headers?: Record<string, string | core.Supplier<string | null | undefined> | null | undefined>;
40
+ /** Options for SSE stream reconnection behavior. Has no effect on non-resumable endpoints. */
41
+ stream?: {
42
+ reconnectionEnabled?: boolean;
43
+ maxReconnectionAttempts?: number;
44
+ };
45
+ }
46
+ export interface BaseIdempotentRequestOptions {
47
+ idempotencyKey?: string | undefined;
48
+ }
49
+ export type NormalizedClientOptions<T extends BaseClientOptions = BaseClientOptions> = T & {
50
+ logging: core.logging.Logger;
51
+ authProvider?: core.AuthProvider;
52
+ };
53
+ export type NormalizedClientOptionsWithAuth<T extends BaseClientOptions = BaseClientOptions> = NormalizedClientOptions<T> & {
54
+ authProvider: core.AuthProvider;
55
+ };
56
+ export declare function normalizeClientOptions<T extends BaseClientOptions = BaseClientOptions>(options: T): NormalizedClientOptions<T>;
57
+ export declare function normalizeClientOptionsWithAuth<T extends BaseClientOptions = BaseClientOptions>(options: T): NormalizedClientOptionsWithAuth<T>;