echogarden 2.10.2 → 3.0.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 (496) hide show
  1. package/LICENSE.MIT.md +7 -0
  2. package/README.md +9 -1
  3. package/data/lexicons/heteronyms.en.json +44 -10
  4. package/data/lexicons/words.en.json +726 -22
  5. package/data/schemas/options.json +91 -153
  6. package/dist/alignment/DTWMfccSequenceAlignment.js.map +1 -1
  7. package/dist/alignment/SemanticTextAlignment.d.ts +4 -2
  8. package/dist/alignment/SemanticTextAlignment.d.ts.map +1 -1
  9. package/dist/alignment/SemanticTextAlignment.js +7 -7
  10. package/dist/alignment/SemanticTextAlignment.js.map +1 -1
  11. package/dist/alignment/SpeechAlignment.d.ts +9 -10
  12. package/dist/alignment/SpeechAlignment.d.ts.map +1 -1
  13. package/dist/alignment/SpeechAlignment.js +23 -96
  14. package/dist/alignment/SpeechAlignment.js.map +1 -1
  15. package/dist/api/APIOptions.d.ts +1 -1
  16. package/dist/api/APIOptions.d.ts.map +1 -1
  17. package/dist/api/Alignment.d.ts +8 -6
  18. package/dist/api/Alignment.d.ts.map +1 -1
  19. package/dist/api/Alignment.js +31 -40
  20. package/dist/api/Alignment.js.map +1 -1
  21. package/dist/api/Common.d.ts +7 -0
  22. package/dist/api/Common.d.ts.map +1 -1
  23. package/dist/api/Common.js.map +1 -1
  24. package/dist/api/Denoising.d.ts +5 -2
  25. package/dist/api/Denoising.d.ts.map +1 -1
  26. package/dist/api/Denoising.js +15 -15
  27. package/dist/api/Denoising.js.map +1 -1
  28. package/dist/api/GlobalOptions.d.ts +2 -8
  29. package/dist/api/GlobalOptions.d.ts.map +1 -1
  30. package/dist/api/GlobalOptions.js +2 -13
  31. package/dist/api/GlobalOptions.js.map +1 -1
  32. package/dist/api/Recognition.d.ts +11 -12
  33. package/dist/api/Recognition.d.ts.map +1 -1
  34. package/dist/api/Recognition.js +32 -82
  35. package/dist/api/Recognition.js.map +1 -1
  36. package/dist/api/SourceSeparation.d.ts +7 -2
  37. package/dist/api/SourceSeparation.d.ts.map +1 -1
  38. package/dist/api/SourceSeparation.js +12 -10
  39. package/dist/api/SourceSeparation.js.map +1 -1
  40. package/dist/api/SpeechLanguageDetection.d.ts +11 -7
  41. package/dist/api/SpeechLanguageDetection.d.ts.map +1 -1
  42. package/dist/api/SpeechLanguageDetection.js +37 -30
  43. package/dist/api/SpeechLanguageDetection.js.map +1 -1
  44. package/dist/api/SpeechSearch.d.ts +4 -1
  45. package/dist/api/SpeechSearch.d.ts.map +1 -1
  46. package/dist/api/SpeechSearch.js.map +1 -1
  47. package/dist/api/SpeechTranslation.d.ts +10 -6
  48. package/dist/api/SpeechTranslation.d.ts.map +1 -1
  49. package/dist/api/SpeechTranslation.js +28 -26
  50. package/dist/api/SpeechTranslation.js.map +1 -1
  51. package/dist/api/Synthesis.d.ts +13 -8
  52. package/dist/api/Synthesis.d.ts.map +1 -1
  53. package/dist/api/Synthesis.js +67 -89
  54. package/dist/api/Synthesis.js.map +1 -1
  55. package/dist/api/TextLanguageDetection.d.ts +4 -2
  56. package/dist/api/TextLanguageDetection.d.ts.map +1 -1
  57. package/dist/api/TextLanguageDetection.js +4 -7
  58. package/dist/api/TextLanguageDetection.js.map +1 -1
  59. package/dist/api/TextTranslation.d.ts +4 -2
  60. package/dist/api/TextTranslation.d.ts.map +1 -1
  61. package/dist/api/TextTranslation.js +13 -24
  62. package/dist/api/TextTranslation.js.map +1 -1
  63. package/dist/api/TimelineTranslationAlignment.d.ts +6 -3
  64. package/dist/api/TimelineTranslationAlignment.d.ts.map +1 -1
  65. package/dist/api/TimelineTranslationAlignment.js +20 -11
  66. package/dist/api/TimelineTranslationAlignment.js.map +1 -1
  67. package/dist/api/TranscriptAndTranslationAlignment.d.ts +6 -4
  68. package/dist/api/TranscriptAndTranslationAlignment.d.ts.map +1 -1
  69. package/dist/api/TranscriptAndTranslationAlignment.js +11 -12
  70. package/dist/api/TranscriptAndTranslationAlignment.js.map +1 -1
  71. package/dist/api/TranslationAlignment.d.ts +6 -4
  72. package/dist/api/TranslationAlignment.d.ts.map +1 -1
  73. package/dist/api/TranslationAlignment.js +20 -21
  74. package/dist/api/TranslationAlignment.js.map +1 -1
  75. package/dist/api/VoiceActivityDetection.d.ts +9 -8
  76. package/dist/api/VoiceActivityDetection.d.ts.map +1 -1
  77. package/dist/api/VoiceActivityDetection.js +20 -43
  78. package/dist/api/VoiceActivityDetection.js.map +1 -1
  79. package/dist/audio/AudioBufferConversion.js.map +1 -1
  80. package/dist/audio/AudioPlayer.d.ts +1 -3
  81. package/dist/audio/AudioPlayer.d.ts.map +1 -1
  82. package/dist/audio/AudioPlayer.js +3 -188
  83. package/dist/audio/AudioPlayer.js.map +1 -1
  84. package/dist/audio/AudioUtilities.d.ts +2 -1
  85. package/dist/audio/AudioUtilities.d.ts.map +1 -1
  86. package/dist/audio/AudioUtilities.js +2 -2
  87. package/dist/audio/AudioUtilities.js.map +1 -1
  88. package/dist/build-tools/MakeTarballsForInstalledPackages.js +3 -3
  89. package/dist/build-tools/MakeTarballsForInstalledPackages.js.map +1 -1
  90. package/dist/cli/CLI.d.ts.map +1 -1
  91. package/dist/cli/CLI.js +139 -92
  92. package/dist/cli/CLI.js.map +1 -1
  93. package/dist/codecs/FFMpegTranscoder.d.ts +4 -3
  94. package/dist/codecs/FFMpegTranscoder.d.ts.map +1 -1
  95. package/dist/codecs/FFMpegTranscoder.js +16 -14
  96. package/dist/codecs/FFMpegTranscoder.js.map +1 -1
  97. package/dist/codecs/TIMITCodec.d.ts.map +1 -1
  98. package/dist/data-structures/DynamicTypedArray.d.ts.map +1 -1
  99. package/dist/data-structures/DynamicTypedArray.js.map +1 -1
  100. package/dist/data-structures/Queue.d.ts.map +1 -1
  101. package/dist/data-structures/WindowedList.d.ts.map +1 -1
  102. package/dist/data-structures/WindowedList.js.map +1 -1
  103. package/dist/denoising/NSNet2.d.ts +3 -2
  104. package/dist/denoising/NSNet2.d.ts.map +1 -1
  105. package/dist/denoising/NSNet2.js +4 -4
  106. package/dist/denoising/NSNet2.js.map +1 -1
  107. package/dist/denoising/RNNoise.d.ts +2 -1
  108. package/dist/denoising/RNNoise.d.ts.map +1 -1
  109. package/dist/denoising/RNNoise.js +10 -6
  110. package/dist/denoising/RNNoise.js.map +1 -1
  111. package/dist/dsp/BiquadFilter.d.ts.map +1 -1
  112. package/dist/dsp/DecayingPeakEstimator.d.ts.map +1 -1
  113. package/dist/dsp/DecayingPeakEstimator.js.map +1 -1
  114. package/dist/dsp/FFT.d.ts.map +1 -1
  115. package/dist/dsp/FFT.js +2 -1
  116. package/dist/dsp/FFT.js.map +1 -1
  117. package/dist/dsp/KWeightingFilter.d.ts.map +1 -1
  118. package/dist/dsp/KWeightingFilter.js.map +1 -1
  119. package/dist/dsp/LoudnessEstimator.d.ts.map +1 -1
  120. package/dist/dsp/LoudnessEstimator.js.map +1 -1
  121. package/dist/dsp/MFCC.d.ts +3 -2
  122. package/dist/dsp/MFCC.d.ts.map +1 -1
  123. package/dist/dsp/MFCC.js +4 -4
  124. package/dist/dsp/MFCC.js.map +1 -1
  125. package/dist/dsp/MelSpectrogram.d.ts +10 -8
  126. package/dist/dsp/MelSpectrogram.d.ts.map +1 -1
  127. package/dist/dsp/MelSpectrogram.js +31 -34
  128. package/dist/dsp/MelSpectrogram.js.map +1 -1
  129. package/dist/dsp/Rubberband.d.ts.map +1 -1
  130. package/dist/dsp/Rubberband.js +8 -3
  131. package/dist/dsp/Rubberband.js.map +1 -1
  132. package/dist/dsp/Sonic.d.ts.map +1 -1
  133. package/dist/dsp/Sonic.js +1 -1
  134. package/dist/dsp/Sonic.js.map +1 -1
  135. package/dist/dsp/SpeexResampler.d.ts.map +1 -1
  136. package/dist/dsp/SpeexResampler.js +1 -1
  137. package/dist/dsp/SpeexResampler.js.map +1 -1
  138. package/dist/encodings/Ascii.d.ts +1 -1
  139. package/dist/encodings/Ascii.d.ts.map +1 -1
  140. package/dist/encodings/Base64.js.map +1 -1
  141. package/dist/encodings/Utf16.d.ts.map +1 -1
  142. package/dist/encodings/Utf8.d.ts.map +1 -1
  143. package/dist/math/VectorMath.d.ts +1 -0
  144. package/dist/math/VectorMath.d.ts.map +1 -1
  145. package/dist/math/VectorMath.js +9 -5
  146. package/dist/math/VectorMath.js.map +1 -1
  147. package/dist/nlp/ChineseSegmentation.d.ts +1 -1
  148. package/dist/nlp/ChineseSegmentation.d.ts.map +1 -1
  149. package/dist/nlp/EspeakPhonemizer.d.ts +1 -1
  150. package/dist/nlp/EspeakPhonemizer.d.ts.map +1 -1
  151. package/dist/nlp/EspeakPhonemizer.js +2 -2
  152. package/dist/nlp/EspeakPhonemizer.js.map +1 -1
  153. package/dist/nlp/IPA.d.ts +2 -2
  154. package/dist/nlp/Segmentation.d.ts +1 -1
  155. package/dist/nlp/Segmentation.d.ts.map +1 -1
  156. package/dist/nlp/Segmentation.js +8 -4
  157. package/dist/nlp/Segmentation.js.map +1 -1
  158. package/dist/recognition/AmazonTranscribeSTT.d.ts +2 -1
  159. package/dist/recognition/AmazonTranscribeSTT.d.ts.map +1 -1
  160. package/dist/recognition/AmazonTranscribeSTT.js +3 -3
  161. package/dist/recognition/AmazonTranscribeSTT.js.map +1 -1
  162. package/dist/recognition/AzureCognitiveServicesSTT.d.ts +2 -1
  163. package/dist/recognition/AzureCognitiveServicesSTT.d.ts.map +1 -1
  164. package/dist/recognition/AzureCognitiveServicesSTT.js +4 -4
  165. package/dist/recognition/AzureCognitiveServicesSTT.js.map +1 -1
  166. package/dist/recognition/DeepgramSTT.d.ts +2 -1
  167. package/dist/recognition/DeepgramSTT.d.ts.map +1 -1
  168. package/dist/recognition/DeepgramSTT.js +12 -13
  169. package/dist/recognition/DeepgramSTT.js.map +1 -1
  170. package/dist/recognition/GoogleCloudSTT.d.ts +2 -1
  171. package/dist/recognition/GoogleCloudSTT.d.ts.map +1 -1
  172. package/dist/recognition/GoogleCloudSTT.js +11 -10
  173. package/dist/recognition/GoogleCloudSTT.js.map +1 -1
  174. package/dist/recognition/OpenAICloudSTT.d.ts +2 -1
  175. package/dist/recognition/OpenAICloudSTT.d.ts.map +1 -1
  176. package/dist/recognition/OpenAICloudSTT.js +6 -6
  177. package/dist/recognition/OpenAICloudSTT.js.map +1 -1
  178. package/dist/recognition/WhisperCommon.d.ts +9 -0
  179. package/dist/recognition/WhisperCommon.d.ts.map +1 -0
  180. package/dist/recognition/WhisperCommon.js +52 -0
  181. package/dist/recognition/WhisperCommon.js.map +1 -0
  182. package/dist/recognition/{WhisperCppSTT.d.ts → WhisperCppCliSTT.d.ts} +14 -16
  183. package/dist/recognition/WhisperCppCliSTT.d.ts.map +1 -0
  184. package/dist/recognition/{WhisperCppSTT.js → WhisperCppCliSTT.js} +55 -84
  185. package/dist/recognition/WhisperCppCliSTT.js.map +1 -0
  186. package/dist/recognition/WhisperSTT.d.ts +72 -85
  187. package/dist/recognition/WhisperSTT.d.ts.map +1 -1
  188. package/dist/recognition/WhisperSTT.js +384 -519
  189. package/dist/recognition/WhisperSTT.js.map +1 -1
  190. package/dist/server/Client.d.ts +2 -2
  191. package/dist/server/Client.d.ts.map +1 -1
  192. package/dist/server/Client.js.map +1 -1
  193. package/dist/server/Worker.d.ts +6 -7
  194. package/dist/server/Worker.d.ts.map +1 -1
  195. package/dist/server/Worker.js +42 -44
  196. package/dist/server/Worker.js.map +1 -1
  197. package/dist/source-separation/MDXNetSourceSeparation.d.ts +3 -2
  198. package/dist/source-separation/MDXNetSourceSeparation.d.ts.map +1 -1
  199. package/dist/source-separation/MDXNetSourceSeparation.js +10 -8
  200. package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -1
  201. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.d.ts +3 -2
  202. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.d.ts.map +1 -1
  203. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js +5 -5
  204. package/dist/speech-embeddings/WavToVec2BertFeatureEmbeddings.js.map +1 -1
  205. package/dist/speech-language-detection/SileroLanguageDetection.d.ts +5 -3
  206. package/dist/speech-language-detection/SileroLanguageDetection.d.ts.map +1 -1
  207. package/dist/speech-language-detection/SileroLanguageDetection.js +8 -8
  208. package/dist/speech-language-detection/SileroLanguageDetection.js.map +1 -1
  209. package/dist/speech-search/DTWSpeechSearch.d.ts +2 -1
  210. package/dist/speech-search/DTWSpeechSearch.d.ts.map +1 -1
  211. package/dist/speech-search/DTWSpeechSearch.js +4 -4
  212. package/dist/speech-search/DTWSpeechSearch.js.map +1 -1
  213. package/dist/subtitles/Subtitles.d.ts +13 -1
  214. package/dist/subtitles/Subtitles.d.ts.map +1 -1
  215. package/dist/subtitles/Subtitles.js +22 -22
  216. package/dist/subtitles/Subtitles.js.map +1 -1
  217. package/dist/synthesis/AwsPollyTTS.d.ts +3 -2
  218. package/dist/synthesis/AwsPollyTTS.d.ts.map +1 -1
  219. package/dist/synthesis/AwsPollyTTS.js +5 -5
  220. package/dist/synthesis/AwsPollyTTS.js.map +1 -1
  221. package/dist/synthesis/AzureCognitiveServicesTTS.d.ts +2 -1
  222. package/dist/synthesis/AzureCognitiveServicesTTS.d.ts.map +1 -1
  223. package/dist/synthesis/AzureCognitiveServicesTTS.js +3 -3
  224. package/dist/synthesis/AzureCognitiveServicesTTS.js.map +1 -1
  225. package/dist/synthesis/CoquiServerTTS.d.ts +2 -1
  226. package/dist/synthesis/CoquiServerTTS.d.ts.map +1 -1
  227. package/dist/synthesis/CoquiServerTTS.js +7 -8
  228. package/dist/synthesis/CoquiServerTTS.js.map +1 -1
  229. package/dist/synthesis/DeepgramTTS.d.ts +2 -2
  230. package/dist/synthesis/DeepgramTTS.d.ts.map +1 -1
  231. package/dist/synthesis/DeepgramTTS.js +13 -13
  232. package/dist/synthesis/DeepgramTTS.js.map +1 -1
  233. package/dist/synthesis/ElevenLabsTTS.d.ts +3 -3
  234. package/dist/synthesis/ElevenLabsTTS.d.ts.map +1 -1
  235. package/dist/synthesis/ElevenLabsTTS.js +22 -21
  236. package/dist/synthesis/ElevenLabsTTS.js.map +1 -1
  237. package/dist/synthesis/EspeakTTS.d.ts +11 -9
  238. package/dist/synthesis/EspeakTTS.d.ts.map +1 -1
  239. package/dist/synthesis/EspeakTTS.js +118 -68
  240. package/dist/synthesis/EspeakTTS.js.map +1 -1
  241. package/dist/synthesis/FliteTTS.d.ts +2 -2
  242. package/dist/synthesis/FliteTTS.d.ts.map +1 -1
  243. package/dist/synthesis/FliteTTS.js +2 -2
  244. package/dist/synthesis/FliteTTS.js.map +1 -1
  245. package/dist/synthesis/GnuSpeechTTS.d.ts +2 -2
  246. package/dist/synthesis/GnuSpeechTTS.d.ts.map +1 -1
  247. package/dist/synthesis/GnuSpeechTTS.js +1 -1
  248. package/dist/synthesis/GnuSpeechTTS.js.map +1 -1
  249. package/dist/synthesis/GoogleCloudTTS.d.ts +3 -2
  250. package/dist/synthesis/GoogleCloudTTS.d.ts.map +1 -1
  251. package/dist/synthesis/GoogleCloudTTS.js +15 -14
  252. package/dist/synthesis/GoogleCloudTTS.js.map +1 -1
  253. package/dist/synthesis/GoogleTranslateTTS.d.ts +3 -2
  254. package/dist/synthesis/GoogleTranslateTTS.d.ts.map +1 -1
  255. package/dist/synthesis/GoogleTranslateTTS.js +11 -11
  256. package/dist/synthesis/GoogleTranslateTTS.js.map +1 -1
  257. package/dist/synthesis/KokoroTTS.d.ts +4 -4
  258. package/dist/synthesis/KokoroTTS.d.ts.map +1 -1
  259. package/dist/synthesis/KokoroTTS.js +11 -10
  260. package/dist/synthesis/KokoroTTS.js.map +1 -1
  261. package/dist/synthesis/MicrosoftEdgeTTS.d.ts +4 -3
  262. package/dist/synthesis/MicrosoftEdgeTTS.d.ts.map +1 -1
  263. package/dist/synthesis/MicrosoftEdgeTTS.js +41 -20
  264. package/dist/synthesis/MicrosoftEdgeTTS.js.map +1 -1
  265. package/dist/synthesis/OpenAICloudTTS.d.ts +2 -2
  266. package/dist/synthesis/OpenAICloudTTS.d.ts.map +1 -1
  267. package/dist/synthesis/OpenAICloudTTS.js +6 -5
  268. package/dist/synthesis/OpenAICloudTTS.js.map +1 -1
  269. package/dist/synthesis/SamTTS.d.ts +2 -1
  270. package/dist/synthesis/SamTTS.d.ts.map +1 -1
  271. package/dist/synthesis/SamTTS.js +2 -2
  272. package/dist/synthesis/SamTTS.js.map +1 -1
  273. package/dist/synthesis/SapiTTS.d.ts +2 -2
  274. package/dist/synthesis/SapiTTS.d.ts.map +1 -1
  275. package/dist/synthesis/SapiTTS.js +2 -2
  276. package/dist/synthesis/SapiTTS.js.map +1 -1
  277. package/dist/synthesis/SvoxPicoTTS.d.ts +2 -2
  278. package/dist/synthesis/SvoxPicoTTS.d.ts.map +1 -1
  279. package/dist/synthesis/SvoxPicoTTS.js +3 -3
  280. package/dist/synthesis/SvoxPicoTTS.js.map +1 -1
  281. package/dist/synthesis/VitsTTS.d.ts +3 -3
  282. package/dist/synthesis/VitsTTS.d.ts.map +1 -1
  283. package/dist/synthesis/VitsTTS.js +14 -11
  284. package/dist/synthesis/VitsTTS.js.map +1 -1
  285. package/dist/text-translation/DeepLTextTranslation.d.ts +2 -2
  286. package/dist/text-translation/DeepLTextTranslation.d.ts.map +1 -1
  287. package/dist/text-translation/DeepLTextTranslation.js +10 -9
  288. package/dist/text-translation/DeepLTextTranslation.js.map +1 -1
  289. package/dist/text-translation/GoogleTranslateTextTranslation.d.ts +4 -4
  290. package/dist/text-translation/GoogleTranslateTextTranslation.d.ts.map +1 -1
  291. package/dist/text-translation/GoogleTranslateTextTranslation.js +20 -18
  292. package/dist/text-translation/GoogleTranslateTextTranslation.js.map +1 -1
  293. package/dist/text-translation/NLLBTextTranslation.d.ts +2 -2
  294. package/dist/text-translation/NLLBTextTranslation.d.ts.map +1 -1
  295. package/dist/text-translation/NLLBTextTranslation.js +4 -6
  296. package/dist/text-translation/NLLBTextTranslation.js.map +1 -1
  297. package/dist/typings/TypedArray.d.ts.map +1 -1
  298. package/dist/utilities/Compression.d.ts +4 -3
  299. package/dist/utilities/Compression.d.ts.map +1 -1
  300. package/dist/utilities/Compression.js +9 -9
  301. package/dist/utilities/Compression.js.map +1 -1
  302. package/dist/utilities/FileDownloader.d.ts +6 -3
  303. package/dist/utilities/FileDownloader.d.ts.map +1 -1
  304. package/dist/utilities/FileDownloader.js +25 -21
  305. package/dist/utilities/FileDownloader.js.map +1 -1
  306. package/dist/utilities/FileReader.d.ts.map +1 -1
  307. package/dist/utilities/FileReader.js.map +1 -1
  308. package/dist/utilities/FileSystem.js +1 -1
  309. package/dist/utilities/FileSystem.js.map +1 -1
  310. package/dist/utilities/FileWriter.d.ts.map +1 -1
  311. package/dist/utilities/FileWriter.js.map +1 -1
  312. package/dist/utilities/Hashing.d.ts.map +1 -1
  313. package/dist/utilities/Hashing.js.map +1 -1
  314. package/dist/utilities/Locale.js.map +1 -1
  315. package/dist/utilities/Logger.d.ts +17 -9
  316. package/dist/utilities/Logger.d.ts.map +1 -1
  317. package/dist/utilities/Logger.js +50 -35
  318. package/dist/utilities/Logger.js.map +1 -1
  319. package/dist/utilities/NpmUtilities.d.ts.map +1 -1
  320. package/dist/utilities/NpmUtilities.js +4 -5
  321. package/dist/utilities/NpmUtilities.js.map +1 -1
  322. package/dist/utilities/ObjectUtilities.js.map +1 -1
  323. package/dist/utilities/OpenPromise.d.ts.map +1 -1
  324. package/dist/utilities/OpenPromise.js.map +1 -1
  325. package/dist/utilities/PackageManager.d.ts +4 -1
  326. package/dist/utilities/PackageManager.d.ts.map +1 -1
  327. package/dist/utilities/PackageManager.js +37 -22
  328. package/dist/utilities/PackageManager.js.map +1 -1
  329. package/dist/utilities/PathUtilities.d.ts +2 -0
  330. package/dist/utilities/PathUtilities.d.ts.map +1 -1
  331. package/dist/utilities/PathUtilities.js +5 -2
  332. package/dist/utilities/PathUtilities.js.map +1 -1
  333. package/dist/utilities/RandomGenerator.d.ts.map +1 -1
  334. package/dist/utilities/SignalChannel.d.ts.map +1 -1
  335. package/dist/utilities/SmoothEstimator.d.ts.map +1 -1
  336. package/dist/utilities/SmoothEstimator.js.map +1 -1
  337. package/dist/utilities/StringBuilder.d.ts.map +1 -1
  338. package/dist/utilities/TarballMaker.d.ts +4 -3
  339. package/dist/utilities/TarballMaker.d.ts.map +1 -1
  340. package/dist/utilities/TarballMaker.js +6 -6
  341. package/dist/utilities/TarballMaker.js.map +1 -1
  342. package/dist/utilities/Timeline.js.map +1 -1
  343. package/dist/utilities/Timer.d.ts.map +1 -1
  344. package/dist/utilities/Utilities.d.ts +9 -7
  345. package/dist/utilities/Utilities.d.ts.map +1 -1
  346. package/dist/utilities/Utilities.js +49 -33
  347. package/dist/utilities/Utilities.js.map +1 -1
  348. package/dist/utilities/VirtualFileReadStream.d.ts.map +1 -1
  349. package/dist/utilities/WebReader.d.ts +2 -1
  350. package/dist/utilities/WebReader.d.ts.map +1 -1
  351. package/dist/utilities/WebReader.js +7 -6
  352. package/dist/utilities/WebReader.js.map +1 -1
  353. package/dist/utilities/WikipediaReader.d.ts +2 -1
  354. package/dist/utilities/WikipediaReader.d.ts.map +1 -1
  355. package/dist/utilities/WikipediaReader.js +1 -5
  356. package/dist/utilities/WikipediaReader.js.map +1 -1
  357. package/dist/voice-activity-detection/AdaptiveGateVAD.d.ts +2 -1
  358. package/dist/voice-activity-detection/AdaptiveGateVAD.d.ts.map +1 -1
  359. package/dist/voice-activity-detection/AdaptiveGateVAD.js +1 -1
  360. package/dist/voice-activity-detection/AdaptiveGateVAD.js.map +1 -1
  361. package/dist/voice-activity-detection/SileroVAD.d.ts.map +1 -1
  362. package/dist/voice-activity-detection/SileroVAD.js.map +1 -1
  363. package/dist/voice-activity-detection/WebRtcVAD.d.ts.map +1 -1
  364. package/dist/voice-activity-detection/WebRtcVAD.js +1 -1
  365. package/dist/voice-activity-detection/WebRtcVAD.js.map +1 -1
  366. package/docs/API.md +62 -17
  367. package/docs/CUDA.md +4 -3
  368. package/docs/Engines.md +8 -7
  369. package/docs/Licenses.md +0 -3
  370. package/docs/Options.md +27 -31
  371. package/docs/Server.md +1 -0
  372. package/docs/Tasklist.md +2 -1
  373. package/docs/Technical.md +2 -2
  374. package/package.json +45 -35
  375. package/src/alignment/SemanticTextAlignment.ts +14 -7
  376. package/src/alignment/SpeechAlignment.ts +47 -150
  377. package/src/api/APIOptions.ts +1 -1
  378. package/src/api/Alignment.ts +95 -61
  379. package/src/api/Common.ts +11 -0
  380. package/src/api/Denoising.ts +22 -17
  381. package/src/api/GlobalOptions.ts +4 -20
  382. package/src/api/Recognition.ts +106 -123
  383. package/src/api/SourceSeparation.ts +39 -21
  384. package/src/api/SpeechLanguageDetection.ts +77 -37
  385. package/src/api/SpeechSearch.ts +6 -1
  386. package/src/api/SpeechTranslation.ts +75 -38
  387. package/src/api/Synthesis.ts +220 -116
  388. package/src/api/TextLanguageDetection.ts +10 -12
  389. package/src/api/TextTranslation.ts +43 -26
  390. package/src/api/TimelineTranslationAlignment.ts +41 -13
  391. package/src/api/TranscriptAndTranslationAlignment.ts +28 -15
  392. package/src/api/TranslationAlignment.ts +53 -24
  393. package/src/api/VoiceActivityDetection.ts +33 -68
  394. package/src/audio/AudioPlayer.ts +4 -232
  395. package/src/audio/AudioUtilities.ts +9 -2
  396. package/src/build-tools/MakeTarballsForInstalledPackages.ts +4 -3
  397. package/src/cli/CLI.ts +209 -101
  398. package/src/codecs/FFMpegTranscoder.ts +18 -16
  399. package/src/denoising/NSNet2.ts +5 -4
  400. package/src/denoising/RNNoise.ts +14 -6
  401. package/src/dsp/FFT.ts +2 -1
  402. package/src/dsp/MFCC.ts +7 -5
  403. package/src/dsp/MelSpectrogram.ts +56 -36
  404. package/src/dsp/Rubberband.ts +10 -3
  405. package/src/dsp/Sonic.ts +2 -1
  406. package/src/dsp/SpeexResampler.ts +2 -1
  407. package/src/encodings/Ascii.ts +1 -1
  408. package/src/encodings/Base64.ts +1 -1
  409. package/src/math/VectorMath.ts +10 -6
  410. package/src/nlp/EspeakPhonemizer.ts +2 -2
  411. package/src/nlp/Segmentation.ts +9 -4
  412. package/src/recognition/AmazonTranscribeSTT.ts +4 -3
  413. package/src/recognition/AzureCognitiveServicesSTT.ts +5 -4
  414. package/src/recognition/DeepgramSTT.ts +16 -16
  415. package/src/recognition/GoogleCloudSTT.ts +14 -12
  416. package/src/recognition/OpenAICloudSTT.ts +12 -6
  417. package/src/recognition/WhisperCommon.ts +130 -0
  418. package/src/recognition/{WhisperCppSTT.ts → WhisperCppCliSTT.ts} +73 -133
  419. package/src/recognition/WhisperSTT.ts +569 -718
  420. package/src/server/Client.ts +4 -4
  421. package/src/server/Worker.ts +59 -59
  422. package/src/source-separation/MDXNetSourceSeparation.ts +15 -10
  423. package/src/speech-embeddings/WavToVec2BertFeatureEmbeddings.ts +7 -5
  424. package/src/speech-language-detection/SileroLanguageDetection.ts +18 -9
  425. package/src/speech-search/DTWSpeechSearch.ts +6 -5
  426. package/src/subtitles/Subtitles.ts +22 -22
  427. package/src/synthesis/AwsPollyTTS.ts +12 -5
  428. package/src/synthesis/AzureCognitiveServicesTTS.ts +11 -3
  429. package/src/synthesis/CoquiServerTTS.ts +8 -7
  430. package/src/synthesis/DeepgramTTS.ts +21 -15
  431. package/src/synthesis/ElevenLabsTTS.ts +33 -23
  432. package/src/synthesis/EspeakTTS.ts +145 -69
  433. package/src/synthesis/FliteTTS.ts +3 -3
  434. package/src/synthesis/GnuSpeechTTS.ts +2 -2
  435. package/src/synthesis/GoogleCloudTTS.ts +23 -14
  436. package/src/synthesis/GoogleTranslateTTS.ts +19 -11
  437. package/src/synthesis/KokoroTTS.ts +37 -14
  438. package/src/synthesis/MicrosoftEdgeTTS.ts +71 -23
  439. package/src/synthesis/OpenAICloudTTS.ts +7 -6
  440. package/src/synthesis/SamTTS.ts +3 -2
  441. package/src/synthesis/SapiTTS.ts +3 -3
  442. package/src/synthesis/SvoxPicoTTS.ts +4 -5
  443. package/src/synthesis/VitsTTS.ts +43 -15
  444. package/src/text-translation/DeepLTextTranslation.ts +12 -10
  445. package/src/text-translation/GoogleTranslateTextTranslation.ts +35 -21
  446. package/src/text-translation/NLLBTextTranslation.ts +5 -9
  447. package/src/typings/Fillers.d.ts +0 -60
  448. package/src/typings/TypedArray.ts +12 -1
  449. package/src/utilities/Compression.ts +10 -9
  450. package/src/utilities/FileDownloader.ts +38 -23
  451. package/src/utilities/FileSystem.ts +1 -1
  452. package/src/utilities/Logger.ts +59 -42
  453. package/src/utilities/NpmUtilities.ts +4 -6
  454. package/src/utilities/OpenPromise.ts +1 -2
  455. package/src/utilities/PackageManager.ts +53 -26
  456. package/src/utilities/PathUtilities.ts +6 -2
  457. package/src/utilities/TarballMaker.ts +7 -7
  458. package/src/utilities/Utilities.ts +58 -41
  459. package/src/utilities/WebReader.ts +11 -6
  460. package/src/utilities/WikipediaReader.ts +2 -8
  461. package/src/voice-activity-detection/AdaptiveGateVAD.ts +13 -8
  462. package/src/voice-activity-detection/WebRtcVAD.ts +1 -2
  463. package/tsconfig.json +53 -54
  464. package/dist/audio/AudioRecorder.d.ts +0 -4
  465. package/dist/audio/AudioRecorder.d.ts.map +0 -1
  466. package/dist/audio/AudioRecorder.js +0 -68
  467. package/dist/audio/AudioRecorder.js.map +0 -1
  468. package/dist/audio/SoxPath.d.ts +0 -2
  469. package/dist/audio/SoxPath.d.ts.map +0 -1
  470. package/dist/audio/SoxPath.js +0 -24
  471. package/dist/audio/SoxPath.js.map +0 -1
  472. package/dist/recognition/SileroSTT.d.ts +0 -30
  473. package/dist/recognition/SileroSTT.d.ts.map +0 -1
  474. package/dist/recognition/SileroSTT.js +0 -152
  475. package/dist/recognition/SileroSTT.js.map +0 -1
  476. package/dist/recognition/VoskSTT.d.ts +0 -11
  477. package/dist/recognition/VoskSTT.d.ts.map +0 -1
  478. package/dist/recognition/VoskSTT.js +0 -72
  479. package/dist/recognition/VoskSTT.js.map +0 -1
  480. package/dist/recognition/WhisperCppSTT.d.ts.map +0 -1
  481. package/dist/recognition/WhisperCppSTT.js.map +0 -1
  482. package/dist/synthesis/StreamlabsPollyTTS.d.ts +0 -12
  483. package/dist/synthesis/StreamlabsPollyTTS.d.ts.map +0 -1
  484. package/dist/synthesis/StreamlabsPollyTTS.js +0 -88
  485. package/dist/synthesis/StreamlabsPollyTTS.js.map +0 -1
  486. package/dist/utilities/BinaryUtilities.d.ts +0 -14
  487. package/dist/utilities/BinaryUtilities.d.ts.map +0 -1
  488. package/dist/utilities/BinaryUtilities.js +0 -113
  489. package/dist/utilities/BinaryUtilities.js.map +0 -1
  490. package/src/audio/AudioRecorder.ts +0 -91
  491. package/src/audio/SoxPath.ts +0 -31
  492. package/src/recognition/SileroSTT.ts +0 -222
  493. package/src/recognition/VoskSTT.ts +0 -112
  494. package/src/synthesis/StreamlabsPollyTTS.ts +0 -114
  495. package/src/utilities/BinaryUtilities.ts +0 -138
  496. /package/{LICENSE.md → LICENSE.GPLv3.md} +0 -0
@@ -1,13 +1,13 @@
1
- import { request } from "gaxios"
2
- import { Logger } from "../utilities/Logger.js"
3
- import { Fragment, splitToFragments } from "../nlp/Segmentation.js"
4
- import { TranslationPair } from "../api/TextTranslation.js"
5
- import { getChromeOnAndroidHeaders } from "../utilities/BrowserRequestHeaders.js"
6
- import { logToStderr } from "../utilities/Utilities.js"
7
- import { getShortLanguageCode } from "../utilities/Locale.js"
8
- import { PlainTextOptions } from "../api/Common.js"
9
- import { extendDeep } from "../utilities/ObjectUtilities.js"
10
- import { splitAndPreserveSeparators } from "../utilities/StringUtilities.js"
1
+ import { Logger } from '../utilities/Logger.js'
2
+ import { Fragment, splitToFragments } from '../nlp/Segmentation.js'
3
+ import { TextTranslationCallbacks, TranslationPair } from '../api/TextTranslation.js'
4
+ import { getChromeOnAndroidHeaders } from '../utilities/BrowserRequestHeaders.js'
5
+ import { logToStderr } from '../utilities/Utilities.js'
6
+ import { getShortLanguageCode } from '../utilities/Locale.js'
7
+ import { PlainTextOptions } from '../api/Common.js'
8
+ import { extendDeep } from '../utilities/ObjectUtilities.js'
9
+ import { splitAndPreserveSeparators } from '../utilities/StringUtilities.js'
10
+ import { requestHttp } from 'easier-http-request'
11
11
 
12
12
  const log = logToStderr
13
13
 
@@ -16,9 +16,10 @@ export async function translateText(
16
16
  sourceLanguage: string,
17
17
  targetLanguage: string,
18
18
  plainTextOptions: PlainTextOptions,
19
- options: GoogleTranslateTextTranslationOptions) {
19
+ options: GoogleTranslateTextTranslationOptions,
20
+ callbacks: TextTranslationCallbacks) {
20
21
 
21
- const logger = new Logger()
22
+ const logger = new Logger(callbacks.logLevel)
22
23
 
23
24
  if (!supportsLanguage(sourceLanguage)) {
24
25
  throw new Error(`Language code ${sourceLanguage} is not supported by the Google Translate engine. Supported language codes are ${supportedLanguageCodes.join(', ')}`)
@@ -78,6 +79,8 @@ export async function translateText(
78
79
  const translatedFragmentsForParagraphs = paragraphs.map(_ => [] as string[])
79
80
 
80
81
  for (let partIndex = 0; partIndex < parts.length; partIndex++) {
82
+ callbacks?.abortSignal?.throwIfAborted()
83
+
81
84
  const part = parts[partIndex]
82
85
 
83
86
  const joinedFragmentsInPart = part.map(x => x.text.replaceAll('|', ' ')).join(`\n|\n`)
@@ -85,12 +88,16 @@ export async function translateText(
85
88
  logger.logTitledMessage(`\nTranslate part ${partIndex + 1} of ${parts.length}`, joinedFragmentsInPart.replaceAll('\n|\n', ''))
86
89
 
87
90
  logger.start(`Request translation from Google Translate`)
88
- const fragmentTranslationPair = await translateText_MobileWeb(joinedFragmentsInPart, sourceLanguage, targetLanguage, options)
89
- logger.end()
90
91
 
91
- const translatedTextForPart = fragmentTranslationPair[0].translatedText
92
+ const fragmentTranslationPair = await translateText_MobileWeb(
93
+ joinedFragmentsInPart,
94
+ sourceLanguage,
95
+ targetLanguage,
96
+ options,
97
+ { ...callbacks, logLevel: 'warning' }
98
+ )
92
99
 
93
- logger.logTitledMessage(`Translated part`, `"${translatedTextForPart.replaceAll(' | ', '\n')}"`)
100
+ const translatedTextForPart = fragmentTranslationPair[0].translatedText
94
101
 
95
102
  const splitTranslation = translatedTextForPart.split(`|`)
96
103
 
@@ -102,6 +109,10 @@ export async function translateText(
102
109
 
103
110
  translatedFragmentsForParagraphs[paragraphIndex].push(translatedFragment)
104
111
  }
112
+
113
+ logger.end()
114
+
115
+ logger.logTitledMessage(`Translated part`, `"${translatedTextForPart.replaceAll(' | ', '\n')}"`)
105
116
  }
106
117
 
107
118
  const translationPairs: TranslationPair[] = []
@@ -143,15 +154,16 @@ export async function translateText_MobileWeb(
143
154
  text: string,
144
155
  sourceLanguage: string,
145
156
  targetLanguage: string,
146
- options: GoogleTranslateTextTranslationOptions) {
157
+ options: GoogleTranslateTextTranslationOptions,
158
+ callbacks: TextTranslationCallbacks) {
147
159
 
148
160
  const tld = options.tld
149
161
 
150
- const logger = new Logger()
162
+ const logger = new Logger(callbacks.logLevel)
151
163
 
152
164
  logger.start(`Request translation from Google Translate`)
153
165
 
154
- const response = await request<string>({
166
+ const response = await requestHttp({
155
167
  method: 'GET',
156
168
 
157
169
  url: `https://translate.google.${tld}/m`,
@@ -171,12 +183,14 @@ export async function translateText_MobileWeb(
171
183
  }),
172
184
  },
173
185
 
174
- responseType: 'text',
186
+ abortSignal: callbacks?.abortSignal
175
187
  })
176
188
 
189
+ const responseText = await response.text()
190
+
177
191
  logger.start('Parse response')
178
192
 
179
- const html = response.data
193
+ const html = responseText
180
194
 
181
195
  let translatedText: string
182
196
 
@@ -1,21 +1,17 @@
1
1
  import chalk from 'chalk'
2
- import { TranslationPair } from '../api/TextTranslation.js'
2
+ import { TextTranslationCallbacks, TranslationPair } from '../api/TextTranslation.js'
3
3
  import { parseText } from '../nlp/Segmentation.js'
4
4
  import { Logger } from '../utilities/Logger.js'
5
5
  import { loadPackage } from '../utilities/PackageManager.js'
6
6
 
7
- export async function translateText(sourceText: string, sourceLanguage: string, targetLanguage: string): Promise<TranslationPair[]> {
8
- const logger = new Logger()
9
-
10
- //const languageNames = Object.keys(languageNameToNLLBCode)
11
-
12
- //logger.log(languageNames)
7
+ export async function translateText(sourceText: string, sourceLanguage: string, targetLanguage: string, callbacks: TextTranslationCallbacks): Promise<TranslationPair[]> {
8
+ const logger = new Logger(callbacks.logLevel)
13
9
 
14
10
  logger.start(`Load transformers.js module`)
15
11
  const { AutoTokenizer, M2M100ForConditionalGeneration } = await import('@echogarden/transformers-nodejs-lite')
16
12
 
17
13
  logger.start(`Load NLLB package`)
18
- const modelPath = await loadPackage(`xenova-nllb-200-distilled-600M-q8`)
14
+ const modelPath = await loadPackage(`xenova-nllb-200-distilled-600M-q8`, callbacks)
19
15
 
20
16
  logger.start(`Load NLLB tokenizer`)
21
17
  const tokenizer = await AutoTokenizer.from_pretrained(modelPath)
@@ -41,7 +37,7 @@ export async function translateText(sourceText: string, sourceLanguage: string,
41
37
  for (let i = 0; i < sentences.length; i++) {
42
38
  const sentenceText = sentences[i].text
43
39
 
44
- logger.logTitledMessage(`Translate sentence ${i + 1}/${sentences.length}`, `"${sentenceText.trim()}"`, chalk.magentaBright)
40
+ logger.logTitledMessage(`Translate sentence ${i + 1}/${sentences.length}`, `"${sentenceText.trim()}"`, 'info', chalk.magentaBright)
45
41
 
46
42
  logger.start(`Tokenize sentence`)
47
43
  const inputs = (tokenizer as any)._build_translation_inputs(sentenceText, {
@@ -37,63 +37,3 @@ declare module '@echogarden/pffft-wasm'
37
37
  declare module '@echogarden/pffft-wasm/simd'
38
38
  declare module '@echogarden/speex-resampler-wasm'
39
39
  declare module '@echogarden/speex-resampler-wasm/simd'
40
- declare module '@echogarden/vosk'
41
-
42
- /*
43
- // Not needed anymore in `onnxruntime-node` 1.21.0:
44
-
45
- declare module 'onnxruntime-node' {
46
- // From index.d.ts
47
- export * from 'onnxruntime-common'
48
-
49
- // From backend.d.ts
50
- import { Backend, InferenceSession, SessionHandler, OnnxValue } from 'onnxruntime-common'
51
-
52
- class OnnxruntimeBackend implements Backend {
53
- init(): Promise<void>
54
- createSessionHandler(pathOrBuffer: string | Uint8Array, options?: InferenceSession.SessionOptions): Promise<SessionHandler>
55
- }
56
-
57
- export const onnxruntimeBackend: OnnxruntimeBackend
58
-
59
- // From binding.d.ts
60
- type SessionOptions = InferenceSession.SessionOptions
61
-
62
- type FeedsType = {
63
- [name: string]: OnnxValue
64
- }
65
-
66
- type FetchesType = {
67
- [name: string]: OnnxValue | null
68
- }
69
-
70
- type ReturnType = {
71
- [name: string]: OnnxValue
72
- }
73
-
74
- type RunOptions = InferenceSession.RunOptions
75
-
76
- // Binding exports a simple synchronized inference session object wrap.
77
- export namespace Binding {
78
- interface InferenceSession {
79
- loadModel(modelPath: string, options: SessionOptions): void
80
- loadModel(buffer: ArrayBuffer, byteOffset: number, byteLength: number, options: SessionOptions): void
81
-
82
- readonly inputNames: string[]
83
- readonly outputNames: string[]
84
-
85
- run(feeds: FeedsType, fetches: FetchesType, options: RunOptions): ReturnType
86
- }
87
- interface InferenceSessionConstructor {
88
- new(): InferenceSession
89
- }
90
- }
91
-
92
- export const binding: {
93
- InferenceSession: Binding.InferenceSessionConstructor
94
- }
95
-
96
- // From version.d.ts
97
- export const version = '1.20.0'
98
- }
99
- */
@@ -1,4 +1,15 @@
1
- export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array
1
+ export type TypedArray =
2
+ Int8Array |
3
+ Uint8Array |
4
+ Uint8ClampedArray |
5
+ Int16Array |
6
+ Uint16Array |
7
+ Int32Array |
8
+ Uint32Array |
9
+ Float32Array |
10
+ Float64Array/* |
11
+ BigInt64Array |
12
+ BigUint64Array*/
2
13
 
3
14
  export interface TypedArrayConstructor<T extends TypedArray> {
4
15
  new(length: number): T
@@ -2,21 +2,22 @@ import { Logger } from './Logger.js'
2
2
  import { readdir, stat } from './FileSystem.js'
3
3
  import { encodeUtf8 } from '../encodings/Utf8.js'
4
4
  import { getBaseName, getDirName } from './PathUtilities.js'
5
+ import { OperationCallbacks } from '../api/Common.js'
5
6
 
6
- export async function createTarball(filePath: string, outputFile: string, prefixPath = '') {
7
+ export async function createTarball(filePath: string, outputFile: string, prefixPath = '', callbacks: OperationCallbacks) {
7
8
  const pathStat = await stat(filePath)
8
9
 
9
10
  if (pathStat.isDirectory()) {
10
- await createTarballForDir(filePath, outputFile, prefixPath)
11
+ await createTarballForDir(filePath, outputFile, prefixPath, callbacks)
11
12
  } else {
12
- await createTarballForFile(filePath, outputFile, prefixPath)
13
+ await createTarballForFile(filePath, outputFile, prefixPath, callbacks)
13
14
  }
14
15
  }
15
16
 
16
- export async function createTarballForFile(filePath: string, outputFile: string, prefixPath = '') {
17
- const logger = new Logger()
17
+ export async function createTarballForFile(filePath: string, outputFile: string, prefixPath = '', callbacks: OperationCallbacks) {
18
+ const logger = new Logger(callbacks.logLevel)
18
19
 
19
- logger.start(`Creating ${prefixPath || getBaseName(outputFile)}`)
20
+ logger.start(`Create ${prefixPath || getBaseName(outputFile)}`)
20
21
 
21
22
  const { create } = await import('tar')
22
23
 
@@ -49,10 +50,10 @@ export async function createTarballForFile(filePath: string, outputFile: string,
49
50
  logger.end()
50
51
  }
51
52
 
52
- export async function createTarballForDir(inputDir: string, outputFile: string, prefixPath = '') {
53
- const logger = new Logger()
53
+ export async function createTarballForDir(inputDir: string, outputFile: string, prefixPath = '', callbacks: OperationCallbacks) {
54
+ const logger = new Logger(callbacks.logLevel)
54
55
 
55
- logger.start(`Creating ${prefixPath || getBaseName(outputFile)}`)
56
+ logger.start(`Create ${prefixPath || getBaseName(outputFile)}`)
56
57
 
57
58
  const { create } = await import('tar')
58
59
 
@@ -1,18 +1,17 @@
1
- import { GaxiosOptions, request } from 'gaxios'
2
- import { Readable } from 'stream'
3
1
  import { getRandomHexString, writeToStderr } from './Utilities.js'
4
2
 
5
3
  import { Timer } from './Timer.js'
6
- import { Logger } from './Logger.js'
4
+ import { Logger, LogLevel, logLevelGreaterOrEqualTo } from './Logger.js'
7
5
  import { extractTarball } from './Compression.js'
8
6
  import { move, remove, readdir, ensureDir } from './FileSystem.js'
9
7
  import chalk from 'chalk'
10
- import { logLevelGreaterOrEqualTo } from '../api/GlobalOptions.js'
11
8
  import { FileWriter } from './FileWriter.js'
12
9
  import { joinPath } from './PathUtilities.js'
10
+ import { EasierHttpRequestError, EasierHttpRequestConfig, requestHttp } from 'easier-http-request'
11
+ import { OperationCallbacks } from '../api/Common.js'
13
12
 
14
- export async function downloadAndExtractTarball(options: GaxiosOptions, targetDir: string, baseTempPath: string, displayName = 'archive') {
15
- const logger = new Logger()
13
+ export async function downloadAndExtractTarball(options: EasierHttpRequestConfig, targetDir: string, baseTempPath: string, displayName = 'archive', callbacks: FileDownloaderCallbacks) {
14
+ const logger = new Logger(callbacks.logLevel)
16
15
 
17
16
  const randomID = getRandomHexString(16).toLowerCase()
18
17
  const tempTarballPath = joinPath(baseTempPath, `/${randomID}.tarball`)
@@ -21,7 +20,12 @@ export async function downloadAndExtractTarball(options: GaxiosOptions, targetDi
21
20
 
22
21
  logger.end()
23
22
 
24
- await downloadFile(options, tempTarballPath, `${chalk.cyanBright('Downloading')} ${chalk.greenBright(displayName)}`)
23
+ await downloadFile(
24
+ options,
25
+ tempTarballPath,
26
+ `${chalk.cyanBright('Downloading')} ${chalk.greenBright(displayName)}`,
27
+ callbacks
28
+ )
25
29
 
26
30
  logger.end()
27
31
 
@@ -43,14 +47,12 @@ export async function downloadAndExtractTarball(options: GaxiosOptions, targetDi
43
47
  logger.end()
44
48
  }
45
49
 
46
- export async function downloadFile(options: GaxiosOptions, targetFilePath: string, prompt = 'Downloading') {
47
- const write = logLevelGreaterOrEqualTo('info') ? writeToStderr : () => {}
50
+ export async function downloadFile(requestConfig: EasierHttpRequestConfig, targetFilePath: string, prompt = 'Downloading', callbacks: FileDownloaderCallbacks) {
51
+ const write = logLevelGreaterOrEqualTo(callbacks.logLevel ?? 'warning', 'info') ? writeToStderr : () => { }
48
52
 
49
53
  const timer = new Timer()
50
54
 
51
- options.responseType = 'stream'
52
-
53
- const response = await request<Readable>(options)
55
+ const response = await requestHttp(requestConfig)
54
56
 
55
57
  const ttyOutput = process.stderr.isTTY === true
56
58
 
@@ -59,8 +61,8 @@ export async function downloadFile(options: GaxiosOptions, targetFilePath: strin
59
61
  const rateAveragingWindowSeconds = 5.0
60
62
 
61
63
  let downloadStarted = false
62
- let downloadedBytes = 0
63
- let totalBytes: number | undefined = undefined
64
+ let downloadedByteCount = 0
65
+ let totalByteCount: number | undefined = undefined
64
66
 
65
67
  const statusUpdateInterval = 250
66
68
 
@@ -73,8 +75,8 @@ export async function downloadFile(options: GaxiosOptions, targetFilePath: strin
73
75
  return
74
76
  }
75
77
 
76
- const totalMBytes = (totalBytes || 0) / 1000 / 1000
77
- const downloadedMBytes = downloadedBytes / 1000 / 1000
78
+ const totalMBytes = (totalByteCount ?? 0) / 1000 / 1000
79
+ const downloadedMBytes = downloadedByteCount / 1000 / 1000
78
80
 
79
81
  const elapsedTime = timer.elapsedTimeSeconds
80
82
  const cumulativeDownloadRate = downloadedMBytes / elapsedTime
@@ -101,7 +103,7 @@ export async function downloadFile(options: GaxiosOptions, targetFilePath: strin
101
103
  if (ttyOutput) {
102
104
  let newString: string
103
105
 
104
- if (totalBytes != undefined) {
106
+ if (totalByteCount != undefined) {
105
107
  const percentage = (downloadedMBytes / totalMBytes) * 100
106
108
 
107
109
  newString = `${prompt}.. ${downloadedMbytesStr}MB/${totalMbytesStr}MB (${chalk.blueBright(percentage.toFixed(1) + '%')}, ${timer.elapsedTimeSeconds.toFixed(1)}s, ${downloadRateStr}MB/s)`
@@ -116,11 +118,11 @@ export async function downloadFile(options: GaxiosOptions, targetFilePath: strin
116
118
 
117
119
  lastString = newString
118
120
  } else {
119
- if (totalBytes == undefined) {
121
+ if (totalByteCount == undefined) {
120
122
  return
121
123
  }
122
124
 
123
- const percent = downloadedBytes / totalBytes
125
+ const percent = downloadedByteCount / totalByteCount
124
126
  const percentDisplay = `${(Math.floor(percent * 10) * 10).toString()}%`
125
127
 
126
128
  if (lastString == prompt) {
@@ -141,8 +143,8 @@ export async function downloadFile(options: GaxiosOptions, targetFilePath: strin
141
143
  }
142
144
  }
143
145
 
144
- const contentLengthString = response.headers['content-length']
145
- totalBytes = contentLengthString != undefined ? parseInt(contentLengthString) : undefined
146
+ const contentLengthString = response.headers.get('content-length')
147
+ totalByteCount = contentLengthString != undefined ? parseInt(contentLengthString) : undefined
146
148
 
147
149
  const partialFilePath = `${targetFilePath}.${getRandomHexString(16)}.partial`
148
150
  const fileWriter = new FileWriter(partialFilePath)
@@ -152,12 +154,22 @@ export async function downloadFile(options: GaxiosOptions, targetFilePath: strin
152
154
  }, statusUpdateInterval)
153
155
 
154
156
  try {
155
- for await (const chunk of response.data) {
157
+ const responseBodyReader = response.body!.getReader()
158
+
159
+ while (true) {
160
+ const readableStreamResult = await responseBodyReader.read()
161
+
156
162
  if (downloadStarted === false) {
157
163
  downloadStarted = true
158
164
  }
159
165
 
160
- downloadedBytes += chunk.length
166
+ if (readableStreamResult.done) {
167
+ break
168
+ }
169
+
170
+ const chunk = readableStreamResult.value
171
+
172
+ downloadedByteCount += chunk.length
161
173
 
162
174
  await fileWriter.write(chunk)
163
175
  }
@@ -178,3 +190,6 @@ export async function downloadFile(options: GaxiosOptions, targetFilePath: strin
178
190
 
179
191
  await move(partialFilePath, targetFilePath)
180
192
  }
193
+
194
+ export interface FileDownloaderCallbacks extends OperationCallbacks {
195
+ }
@@ -145,7 +145,7 @@ export async function writeUtf8File(filePath: string, content: string) {
145
145
  }
146
146
 
147
147
  export async function writeJsonFile(filePath: string, content: any, useJson5 = false) {
148
- const textContent = await stringifyAndFormatJson(content, useJson5)
148
+ const textContent = stringifyAndFormatJson(content, useJson5)
149
149
 
150
150
  await writeUtf8File(filePath, textContent)
151
151
  }
@@ -1,97 +1,114 @@
1
- import chalk from 'chalk'
1
+ import chalk, { ChalkInstance } from 'chalk'
2
2
  import { Timer } from './Timer.js'
3
3
  import { logToStderr, writeToStderr, yieldToEventLoop } from './Utilities.js'
4
- import { LogLevel, logLevelGreaterOrEqualTo, logLevelSmallerThan } from '../api/GlobalOptions.js'
5
-
6
- let currentActiveLogger: Logger | null = null
7
4
 
8
5
  export class Logger {
9
6
  private timer = new Timer()
10
- active = false
7
+ private started = false
8
+
9
+ constructor(
10
+ public readonly logLevel: LogLevel = 'warning',
11
+ public readonly timingMinimumLogLevel: LogLevel = 'info') {
12
+ }
11
13
 
12
14
  start(title: string, titleColor = chalk.cyanBright) {
13
15
  this.startAsync(title, false, titleColor)
14
16
  }
15
17
 
16
18
  async startAsync(title: string, yieldBeforeStart = true, titleColor = chalk.cyanBright) {
17
- if (currentActiveLogger != null && currentActiveLogger != this) {
18
- return
19
- }
20
-
21
19
  this.end()
22
20
 
23
21
  if (yieldBeforeStart) {
24
22
  await yieldToEventLoop()
25
23
  }
26
24
 
27
- if (logLevelGreaterOrEqualTo('info')) {
25
+ if (this.logLevelGreaterOrEqualTo(this.timingMinimumLogLevel)) {
28
26
  writeToStderr(`${titleColor(title)}.. `)
29
27
  }
30
28
 
31
- this.setAsActiveLogger()
32
-
29
+ this.started = true
33
30
  this.timer.restart()
34
31
  }
35
32
 
36
- setAsActiveLogger() {
37
- this.active = true
38
- currentActiveLogger = this
39
- }
33
+ end() {
34
+ if (!this.started) {
35
+ return
36
+ }
40
37
 
41
- unsetAsActiveLogger() {
42
- this.active = false
43
- currentActiveLogger = null
44
- }
38
+ this.started = false
45
39
 
46
- end() {
47
- if (this.active && currentActiveLogger == this) {
40
+ if (this.logLevelGreaterOrEqualTo(this.timingMinimumLogLevel)) {
48
41
  const elapsedTime = this.timer.elapsedTime
49
42
 
50
- if (logLevelGreaterOrEqualTo('info')) {
51
- writeToStderr(`${elapsedTime.toFixed(1)}ms\n`)
52
- }
53
-
54
- currentActiveLogger = null
43
+ writeToStderr(`${elapsedTime.toFixed(1)}ms\n`)
55
44
  }
56
-
57
- this.active = false
58
45
  }
59
46
 
60
- logDuration(message: any, startTime: number, titleColor = chalk.cyanBright, logLevel: LogLevel = 'info') {
47
+ logDuration(message: any, startTime: number, logLevel: LogLevel = 'info', titleColor?: ChalkInstance) {
61
48
  const duration = Timer.currentTime - startTime
62
49
 
63
- this.log(`${titleColor(message)}: ${duration.toFixed(1)}ms`, logLevel)
50
+ titleColor = titleColor ?? Logger.getDefaultTitleColorForLogLevel(logLevel)
51
+
52
+ this.log(`${titleColor(message)}: ${duration.toFixed(1)}ms`)
64
53
  }
65
54
 
66
- logTitledMessage(title: string, content: any, titleColor = chalk.cyanBright, logLevel: LogLevel = 'info') {
55
+ logTitledMessage(title: string, content: any, logLevel: LogLevel = 'info', titleColor?: ChalkInstance) {
56
+ titleColor = titleColor ?? Logger.getDefaultTitleColorForLogLevel(logLevel)
57
+
67
58
  this.log(`${titleColor(title)}: ${content}`, logLevel)
68
59
  }
69
60
 
70
61
  log(message: any, logLevel: LogLevel = 'info') {
71
- if (logLevelSmallerThan(logLevel)) {
62
+ if (this.logLevelSmallerThan(logLevel)) {
72
63
  return
73
64
  }
74
65
 
75
- if (currentActiveLogger == this || currentActiveLogger == null) {
76
- logToStderr(message)
77
- }
66
+ logToStderr(message)
78
67
  }
79
68
 
80
69
  write(message: any, logLevel: LogLevel = 'info') {
81
- if (logLevelSmallerThan(logLevel)) {
70
+ if (this.logLevelSmallerThan(logLevel)) {
82
71
  return
83
72
  }
84
73
 
85
- if (currentActiveLogger == this || currentActiveLogger == null) {
86
- writeToStderr(message)
87
- }
74
+ writeToStderr(message)
88
75
  }
89
76
 
90
77
  getTimestamp() {
91
78
  return Timer.currentTime
92
79
  }
80
+
81
+ logLevelGreaterOrEqualTo(comparedLogLevel: LogLevel) {
82
+ return logLevelGreaterOrEqualTo(this.logLevel, comparedLogLevel)
83
+ }
84
+
85
+ logLevelSmallerThan(comparedLogLevel: LogLevel) {
86
+ return logLevelSmallerThan(this.logLevel, comparedLogLevel)
87
+ }
88
+
89
+ static getDefaultTitleColorForLogLevel(logLevel: LogLevel): ChalkInstance {
90
+ if (logLevel === 'error') {
91
+ return chalk.redBright
92
+ } else if (logLevel === 'warning') {
93
+ return chalk.yellow
94
+ } else {
95
+ return chalk.cyanBright
96
+ }
97
+ }
98
+ }
99
+
100
+ export function logLevelGreaterOrEqualTo(logLevel: LogLevel, comparedLogLevel: LogLevel) {
101
+ return !logLevelSmallerThan(logLevel, comparedLogLevel)
93
102
  }
94
103
 
95
- export function resetActiveLogger() {
96
- currentActiveLogger = null
104
+ export function logLevelSmallerThan(logLevel: LogLevel, comparedLogLevel: LogLevel) {
105
+ return logLevelToNumber(logLevel) < logLevelToNumber(comparedLogLevel)
97
106
  }
107
+
108
+ export function logLevelToNumber(logLevel: LogLevel) {
109
+ return logLevels.indexOf(logLevel)
110
+ }
111
+
112
+ export const logLevels = ['silent', 'output', 'error', 'warning', 'info', 'trace'] as const
113
+
114
+ export type LogLevel = typeof logLevels[number]
@@ -1,7 +1,7 @@
1
- import { request } from 'gaxios'
1
+ import { requestHttp } from 'easier-http-request'
2
2
 
3
3
  export async function getPackageLatestVersion(packageName: string, timeout = 10000) {
4
- const response = await request<any>({
4
+ const response = await requestHttp({
5
5
  method: 'GET',
6
6
 
7
7
  url: `https://registry.npmjs.org/${packageName}/latest`,
@@ -12,12 +12,10 @@ export async function getPackageLatestVersion(packageName: string, timeout = 100
12
12
  headers: {
13
13
  },
14
14
 
15
- responseType: 'json',
16
-
17
15
  timeout,
18
16
  })
19
17
 
20
- const result = response.data
18
+ const responseObject = await response.json()
21
19
 
22
- return result.version
20
+ return responseObject.version
23
21
  }
@@ -1,5 +1,4 @@
1
- export class OpenPromise<T = void>
2
- {
1
+ export class OpenPromise<T = void> {
3
2
  promise: Promise<T>
4
3
  resolve: (value: T) => void = () => { throw new Error('Open promise resolved before initialization') }
5
4
  reject: (reason?: any) => void = () => { throw new Error('Open promise rejected before initialization') }