echogarden 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/README.md +59 -1
  2. package/data/lexicons/heteronyms.json +674 -0
  3. package/data/schemas/options.json +1057 -0
  4. package/data/tables/lcid-table.json +7427 -0
  5. package/dist/alignment/DTWMfccSequenceAlignment.d.ts +2 -0
  6. package/dist/alignment/DTWMfccSequenceAlignment.js +26 -0
  7. package/dist/alignment/DTWMfccSequenceAlignment.js.map +1 -0
  8. package/dist/alignment/DTWSequenceAlignment.d.ts +5 -0
  9. package/dist/alignment/DTWSequenceAlignment.js +99 -0
  10. package/dist/alignment/DTWSequenceAlignment.js.map +1 -0
  11. package/dist/alignment/DTWSequenceAlignmentWindowed.d.ts +5 -0
  12. package/dist/alignment/DTWSequenceAlignmentWindowed.js +161 -0
  13. package/dist/alignment/DTWSequenceAlignmentWindowed.js.map +1 -0
  14. package/dist/alignment/LevenshteinSequenceAlignment.d.ts +5 -0
  15. package/dist/alignment/LevenshteinSequenceAlignment.js +102 -0
  16. package/dist/alignment/LevenshteinSequenceAlignment.js.map +1 -0
  17. package/dist/alignment/SpeechAlignment.d.ts +27 -0
  18. package/dist/alignment/SpeechAlignment.js +266 -0
  19. package/dist/alignment/SpeechAlignment.js.map +1 -0
  20. package/dist/api/API.d.ts +8 -0
  21. package/dist/api/API.js +10 -0
  22. package/dist/api/API.js.map +1 -0
  23. package/dist/api/APIOptions.d.ts +12 -0
  24. package/dist/api/APIOptions.js +2 -0
  25. package/dist/api/APIOptions.js.map +1 -0
  26. package/dist/api/Alignment.d.ts +32 -0
  27. package/dist/api/Alignment.js +134 -0
  28. package/dist/api/Alignment.js.map +1 -0
  29. package/dist/api/Denoising.d.ts +14 -0
  30. package/dist/api/Denoising.js +66 -0
  31. package/dist/api/Denoising.js.map +1 -0
  32. package/dist/api/Globals.d.ts +1 -0
  33. package/dist/api/Globals.js +2 -0
  34. package/dist/api/Globals.js.map +1 -0
  35. package/dist/api/LanguageDetection.d.ts +49 -0
  36. package/dist/api/LanguageDetection.js +118 -0
  37. package/dist/api/LanguageDetection.js.map +1 -0
  38. package/dist/api/Recognition.d.ts +49 -0
  39. package/dist/api/Recognition.js +162 -0
  40. package/dist/api/Recognition.js.map +1 -0
  41. package/dist/api/Synthesis.d.ts +125 -0
  42. package/dist/api/Synthesis.js +892 -0
  43. package/dist/api/Synthesis.js.map +1 -0
  44. package/dist/api/Translation.d.ts +25 -0
  45. package/dist/api/Translation.js +69 -0
  46. package/dist/api/Translation.js.map +1 -0
  47. package/dist/api/Vad.d.ts +25 -0
  48. package/dist/api/Vad.js +88 -0
  49. package/dist/api/Vad.js.map +1 -0
  50. package/dist/audio/AudioBufferConversion.d.ts +15 -0
  51. package/dist/audio/AudioBufferConversion.js +228 -0
  52. package/dist/audio/AudioBufferConversion.js.map +1 -0
  53. package/dist/audio/AudioPlayer.d.ts +9 -0
  54. package/dist/audio/AudioPlayer.js +232 -0
  55. package/dist/audio/AudioPlayer.js.map +1 -0
  56. package/dist/audio/AudioRecorder.d.ts +3 -0
  57. package/dist/audio/AudioRecorder.js +68 -0
  58. package/dist/audio/AudioRecorder.js.map +1 -0
  59. package/dist/audio/AudioUtilities.d.ts +48 -0
  60. package/dist/audio/AudioUtilities.js +209 -0
  61. package/dist/audio/AudioUtilities.js.map +1 -0
  62. package/dist/audio/SoxPath.d.ts +1 -0
  63. package/dist/audio/SoxPath.js +19 -0
  64. package/dist/audio/SoxPath.js.map +1 -0
  65. package/dist/cli/CLI.d.ts +8 -0
  66. package/dist/cli/CLI.js +860 -0
  67. package/dist/cli/CLI.js.map +1 -0
  68. package/dist/cli/CLIConfigFile.d.ts +3 -0
  69. package/dist/cli/CLIConfigFile.js +62 -0
  70. package/dist/cli/CLIConfigFile.js.map +1 -0
  71. package/dist/cli/CLILauncher.d.ts +2 -0
  72. package/dist/cli/CLILauncher.js +22 -0
  73. package/dist/cli/CLILauncher.js.map +1 -0
  74. package/dist/cli/CLIOptionsSchema.d.ts +5 -0
  75. package/dist/cli/CLIOptionsSchema.js +36 -0
  76. package/dist/cli/CLIOptionsSchema.js.map +1 -0
  77. package/dist/cli/CLIParser.d.ts +6 -0
  78. package/dist/cli/CLIParser.js +34 -0
  79. package/dist/cli/CLIParser.js.map +1 -0
  80. package/dist/cli/CLIStarter.d.ts +1 -0
  81. package/dist/cli/CLIStarter.js +3 -0
  82. package/dist/cli/CLIStarter.js.map +1 -0
  83. package/dist/codecs/FFMpegTranscoder.d.ts +20 -0
  84. package/dist/codecs/FFMpegTranscoder.js +169 -0
  85. package/dist/codecs/FFMpegTranscoder.js.map +1 -0
  86. package/dist/codecs/TIMITCodec.d.ts +9 -0
  87. package/dist/codecs/TIMITCodec.js +14 -0
  88. package/dist/codecs/TIMITCodec.js.map +1 -0
  89. package/dist/codecs/WaveCodec.d.ts +19 -0
  90. package/dist/codecs/WaveCodec.js +208 -0
  91. package/dist/codecs/WaveCodec.js.map +1 -0
  92. package/dist/denoising/RNNoise.d.ts +6 -0
  93. package/dist/denoising/RNNoise.js +68 -0
  94. package/dist/denoising/RNNoise.js.map +1 -0
  95. package/dist/dsp/BiquadFilter.d.ts +26 -0
  96. package/dist/dsp/BiquadFilter.js +399 -0
  97. package/dist/dsp/BiquadFilter.js.map +1 -0
  98. package/dist/dsp/FFT.d.ts +9 -0
  99. package/dist/dsp/FFT.js +135 -0
  100. package/dist/dsp/FFT.js.map +1 -0
  101. package/dist/dsp/MFCC.d.ts +25 -0
  102. package/dist/dsp/MFCC.js +162 -0
  103. package/dist/dsp/MFCC.js.map +1 -0
  104. package/dist/dsp/MelSpectogram.d.ts +19 -0
  105. package/dist/dsp/MelSpectogram.js +102 -0
  106. package/dist/dsp/MelSpectogram.js.map +1 -0
  107. package/dist/dsp/Rubberband.d.ts +52 -0
  108. package/dist/dsp/Rubberband.js +186 -0
  109. package/dist/dsp/Rubberband.js.map +1 -0
  110. package/dist/dsp/Sonic.d.ts +2 -0
  111. package/dist/dsp/Sonic.js +39 -0
  112. package/dist/dsp/Sonic.js.map +1 -0
  113. package/dist/dsp/SpeexResampler.d.ts +3 -0
  114. package/dist/dsp/SpeexResampler.js +53 -0
  115. package/dist/dsp/SpeexResampler.js.map +1 -0
  116. package/dist/math/VectorMath.d.ts +70 -0
  117. package/dist/math/VectorMath.js +564 -0
  118. package/dist/math/VectorMath.js.map +1 -0
  119. package/dist/nlp/ChineseSegmentation.d.ts +1 -0
  120. package/dist/nlp/ChineseSegmentation.js +53 -0
  121. package/dist/nlp/ChineseSegmentation.js.map +1 -0
  122. package/dist/nlp/CompromiseNLP.d.ts +15 -0
  123. package/dist/nlp/CompromiseNLP.js +66 -0
  124. package/dist/nlp/CompromiseNLP.js.map +1 -0
  125. package/dist/nlp/EspeakPhonemizer.d.ts +4 -0
  126. package/dist/nlp/EspeakPhonemizer.js +133 -0
  127. package/dist/nlp/EspeakPhonemizer.js.map +1 -0
  128. package/dist/nlp/IPA.d.ts +19 -0
  129. package/dist/nlp/IPA.js +113 -0
  130. package/dist/nlp/IPA.js.map +1 -0
  131. package/dist/nlp/JapaneseSegmentation.d.ts +1 -0
  132. package/dist/nlp/JapaneseSegmentation.js +40 -0
  133. package/dist/nlp/JapaneseSegmentation.js.map +1 -0
  134. package/dist/nlp/Lexicon.d.ts +17 -0
  135. package/dist/nlp/Lexicon.js +6 -0
  136. package/dist/nlp/Lexicon.js.map +1 -0
  137. package/dist/nlp/PhoneConversion.d.ts +6 -0
  138. package/dist/nlp/PhoneConversion.js +467 -0
  139. package/dist/nlp/PhoneConversion.js.map +1 -0
  140. package/dist/nlp/Segmentation.d.ts +41 -0
  141. package/dist/nlp/Segmentation.js +158 -0
  142. package/dist/nlp/Segmentation.js.map +1 -0
  143. package/dist/nlp/TextNormalizer.d.ts +4 -0
  144. package/dist/nlp/TextNormalizer.js +69 -0
  145. package/dist/nlp/TextNormalizer.js.map +1 -0
  146. package/dist/recognition/AmazonTranscribeSTT.d.ts +6 -0
  147. package/dist/recognition/AmazonTranscribeSTT.js +79 -0
  148. package/dist/recognition/AmazonTranscribeSTT.js.map +1 -0
  149. package/dist/recognition/AzureCognitiveServicesSTT.d.ts +7 -0
  150. package/dist/recognition/AzureCognitiveServicesSTT.js +51 -0
  151. package/dist/recognition/AzureCognitiveServicesSTT.js.map +1 -0
  152. package/dist/recognition/GoogleCloudSTT.d.ts +7 -0
  153. package/dist/recognition/GoogleCloudSTT.js +66 -0
  154. package/dist/recognition/GoogleCloudSTT.js.map +1 -0
  155. package/dist/recognition/SileroSTT.d.ts +9 -0
  156. package/dist/recognition/SileroSTT.js +125 -0
  157. package/dist/recognition/SileroSTT.js.map +1 -0
  158. package/dist/recognition/VoskSTT.d.ts +10 -0
  159. package/dist/recognition/VoskSTT.js +78 -0
  160. package/dist/recognition/VoskSTT.js.map +1 -0
  161. package/dist/recognition/WhisperSTT.d.ts +69 -0
  162. package/dist/recognition/WhisperSTT.js +977 -0
  163. package/dist/recognition/WhisperSTT.js.map +1 -0
  164. package/dist/server/Server.d.ts +1 -0
  165. package/dist/server/Server.js +18 -0
  166. package/dist/server/Server.js.map +1 -0
  167. package/dist/speech-language-detection/SileroLanguageDetection.d.ts +9 -0
  168. package/dist/speech-language-detection/SileroLanguageDetection.js +47 -0
  169. package/dist/speech-language-detection/SileroLanguageDetection.js.map +1 -0
  170. package/dist/subtitles/Subtitles.d.ts +25 -0
  171. package/dist/subtitles/Subtitles.js +286 -0
  172. package/dist/subtitles/Subtitles.js.map +1 -0
  173. package/dist/synthesis/AwsPollyTTS.d.ts +7 -0
  174. package/dist/synthesis/AwsPollyTTS.js +51 -0
  175. package/dist/synthesis/AwsPollyTTS.js.map +1 -0
  176. package/dist/synthesis/AzureCognitiveServicesTTS.d.ts +9 -0
  177. package/dist/synthesis/AzureCognitiveServicesTTS.js +103 -0
  178. package/dist/synthesis/AzureCognitiveServicesTTS.js.map +1 -0
  179. package/dist/synthesis/CoquiServerTTS.d.ts +6 -0
  180. package/dist/synthesis/CoquiServerTTS.js +22 -0
  181. package/dist/synthesis/CoquiServerTTS.js.map +1 -0
  182. package/dist/synthesis/ElevenLabsTTS.d.ts +8 -0
  183. package/dist/synthesis/ElevenLabsTTS.js +48 -0
  184. package/dist/synthesis/ElevenLabsTTS.js.map +1 -0
  185. package/dist/synthesis/EspeakTTS.d.ts +46 -0
  186. package/dist/synthesis/EspeakTTS.js +353 -0
  187. package/dist/synthesis/EspeakTTS.js.map +1 -0
  188. package/dist/synthesis/FliteTTS.d.ts +17 -0
  189. package/dist/synthesis/FliteTTS.js +326 -0
  190. package/dist/synthesis/FliteTTS.js.map +1 -0
  191. package/dist/synthesis/GoogleCloudTTS.d.ts +16 -0
  192. package/dist/synthesis/GoogleCloudTTS.js +72 -0
  193. package/dist/synthesis/GoogleCloudTTS.js.map +1 -0
  194. package/dist/synthesis/GoogleTranslateTTS.d.ts +13 -0
  195. package/dist/synthesis/GoogleTranslateTTS.js +177 -0
  196. package/dist/synthesis/GoogleTranslateTTS.js.map +1 -0
  197. package/dist/synthesis/MicrosoftEdgeTTS.d.ts +10 -0
  198. package/dist/synthesis/MicrosoftEdgeTTS.js +216 -0
  199. package/dist/synthesis/MicrosoftEdgeTTS.js.map +1 -0
  200. package/dist/synthesis/SamTTS.d.ts +4 -0
  201. package/dist/synthesis/SamTTS.js +21 -0
  202. package/dist/synthesis/SamTTS.js.map +1 -0
  203. package/dist/synthesis/SapiTTS.d.ts +9 -0
  204. package/dist/synthesis/SapiTTS.js +211 -0
  205. package/dist/synthesis/SapiTTS.js.map +1 -0
  206. package/dist/synthesis/StreamlabsPollyTTS.d.ts +12 -0
  207. package/dist/synthesis/StreamlabsPollyTTS.js +88 -0
  208. package/dist/synthesis/StreamlabsPollyTTS.js.map +1 -0
  209. package/dist/synthesis/SvoxPicoTTS.d.ts +11 -0
  210. package/dist/synthesis/SvoxPicoTTS.js +236 -0
  211. package/dist/synthesis/SvoxPicoTTS.js.map +1 -0
  212. package/dist/synthesis/VitsTTS.d.ts +27 -0
  213. package/dist/synthesis/VitsTTS.js +359 -0
  214. package/dist/synthesis/VitsTTS.js.map +1 -0
  215. package/dist/tests/Test.d.ts +1 -0
  216. package/dist/tests/Test.js +10 -0
  217. package/dist/tests/Test.js.map +1 -0
  218. package/dist/text-language-detection/FastTextLanguageDetection.d.ts +2 -0
  219. package/dist/text-language-detection/FastTextLanguageDetection.js +38 -0
  220. package/dist/text-language-detection/FastTextLanguageDetection.js.map +1 -0
  221. package/dist/text-language-detection/TinyLDLanguageDetection.d.ts +2 -0
  222. package/dist/text-language-detection/TinyLDLanguageDetection.js +12 -0
  223. package/dist/text-language-detection/TinyLDLanguageDetection.js.map +1 -0
  224. package/dist/utilities/BinaryArrayConversion.d.ts +15 -0
  225. package/dist/utilities/BinaryArrayConversion.js +115 -0
  226. package/dist/utilities/BinaryArrayConversion.js.map +1 -0
  227. package/dist/utilities/Compression.d.ts +4 -0
  228. package/dist/utilities/Compression.js +67 -0
  229. package/dist/utilities/Compression.js.map +1 -0
  230. package/dist/utilities/FileDownloader.d.ts +3 -0
  231. package/dist/utilities/FileDownloader.js +147 -0
  232. package/dist/utilities/FileDownloader.js.map +1 -0
  233. package/dist/utilities/FileSystem.d.ts +30 -0
  234. package/dist/utilities/FileSystem.js +141 -0
  235. package/dist/utilities/FileSystem.js.map +1 -0
  236. package/dist/utilities/Hashing.d.ts +10 -0
  237. package/dist/utilities/Hashing.js +169 -0
  238. package/dist/utilities/Hashing.js.map +1 -0
  239. package/dist/utilities/Locale.d.ts +9 -0
  240. package/dist/utilities/Locale.js +65 -0
  241. package/dist/utilities/Locale.js.map +1 -0
  242. package/dist/utilities/Logger.d.ts +11 -0
  243. package/dist/utilities/Logger.js +49 -0
  244. package/dist/utilities/Logger.js.map +1 -0
  245. package/dist/utilities/NdArrayUtilities.d.ts +3 -0
  246. package/dist/utilities/NdArrayUtilities.js +22 -0
  247. package/dist/utilities/NdArrayUtilities.js.map +1 -0
  248. package/dist/utilities/ObjectUtilities.d.ts +4 -0
  249. package/dist/utilities/ObjectUtilities.js +132 -0
  250. package/dist/utilities/ObjectUtilities.js.map +1 -0
  251. package/dist/utilities/OpenPromise.d.ts +6 -0
  252. package/dist/utilities/OpenPromise.js +12 -0
  253. package/dist/utilities/OpenPromise.js.map +1 -0
  254. package/dist/utilities/PackageManager.d.ts +4 -0
  255. package/dist/utilities/PackageManager.js +46 -0
  256. package/dist/utilities/PackageManager.js.map +1 -0
  257. package/dist/utilities/RandomGenerator.d.ts +35 -0
  258. package/dist/utilities/RandomGenerator.js +149 -0
  259. package/dist/utilities/RandomGenerator.js.map +1 -0
  260. package/dist/utilities/TarballMaker.d.ts +4 -0
  261. package/dist/utilities/TarballMaker.js +50 -0
  262. package/dist/utilities/TarballMaker.js.map +1 -0
  263. package/dist/utilities/Timeline.d.ts +20 -0
  264. package/dist/utilities/Timeline.js +110 -0
  265. package/dist/utilities/Timeline.js.map +1 -0
  266. package/dist/utilities/Timer.d.ts +13 -0
  267. package/dist/utilities/Timer.js +70 -0
  268. package/dist/utilities/Timer.js.map +1 -0
  269. package/dist/utilities/Utilities.d.ts +68 -0
  270. package/dist/utilities/Utilities.js +305 -0
  271. package/dist/utilities/Utilities.js.map +1 -0
  272. package/dist/utilities/WasmMemoryManager.d.ts +142 -0
  273. package/dist/utilities/WasmMemoryManager.js +407 -0
  274. package/dist/utilities/WasmMemoryManager.js.map +1 -0
  275. package/dist/utilities/WebReader.d.ts +1 -0
  276. package/dist/utilities/WebReader.js +47 -0
  277. package/dist/utilities/WebReader.js.map +1 -0
  278. package/dist/utilities/WikipediaReader.d.ts +1 -0
  279. package/dist/utilities/WikipediaReader.js +31 -0
  280. package/dist/utilities/WikipediaReader.js.map +1 -0
  281. package/dist/voice-activity-detection/SileroVAD.d.ts +13 -0
  282. package/dist/voice-activity-detection/SileroVAD.js +58 -0
  283. package/dist/voice-activity-detection/SileroVAD.js.map +1 -0
  284. package/dist/voice-activity-detection/WebRtcVAD.d.ts +3 -0
  285. package/dist/voice-activity-detection/WebRtcVAD.js +53 -0
  286. package/dist/voice-activity-detection/WebRtcVAD.js.map +1 -0
  287. package/docs/CLI.md +234 -0
  288. package/docs/Development.md +3 -0
  289. package/docs/Engines.md +80 -0
  290. package/docs/Licenses.md +37 -0
  291. package/docs/Options.md +192 -0
  292. package/docs/Roadmap.md +16 -0
  293. package/docs/Technical.md +72 -0
  294. package/package.json +119 -19
  295. package/cli.js +0 -3
@@ -0,0 +1,10 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ export declare function knuthMultiplicative(bytes: Buffer): number;
3
+ export declare function xorShift32Hash(bytes: Buffer): number;
4
+ export declare function jenkinsOneAtATime(bytes: Buffer): number;
5
+ export declare function FNV1a(bytes: Buffer): number;
6
+ export declare function superFastHash(bytes: Buffer): number;
7
+ export declare function cyrb53Hash(bytes: Buffer, seed?: number): number;
8
+ export declare function djb2(bytes: Buffer): number;
9
+ export declare function murmurHash1(bytes: Buffer, seed?: number): number;
10
+ export declare function MurmurHash3(bytes: Buffer, seed?: number): number;
@@ -0,0 +1,169 @@
1
+ export function knuthMultiplicative(bytes) {
2
+ let hash = 0;
3
+ for (const byte of bytes) {
4
+ hash += Math.imul(byte, 2654435761);
5
+ }
6
+ return hash;
7
+ }
8
+ export function xorShift32Hash(bytes) {
9
+ let s = 0;
10
+ for (const byte of bytes) {
11
+ s += byte;
12
+ s ^= s << 13;
13
+ s ^= s >> 17;
14
+ s ^= s << 5;
15
+ }
16
+ return s;
17
+ }
18
+ export function jenkinsOneAtATime(bytes) {
19
+ let hash = 0;
20
+ for (const byte of bytes) {
21
+ hash += byte;
22
+ hash += hash << 10;
23
+ hash ^= hash >> 6;
24
+ }
25
+ hash += hash << 3;
26
+ hash ^= hash >> 11;
27
+ hash += hash << 15;
28
+ return hash >>> 0;
29
+ }
30
+ export function FNV1a(bytes) {
31
+ let hval = 2166136261 | 0;
32
+ for (const byte of bytes) {
33
+ hval = Math.imul(hval ^ byte, 16777619);
34
+ }
35
+ return hval >>> 0;
36
+ }
37
+ export function superFastHash(bytes) {
38
+ let hash = bytes.length, tmp, p = 0;
39
+ const len = bytes.length >>> 2;
40
+ for (let i = 0; i < len; i++) {
41
+ hash += bytes[p] | bytes[p + 1] << 8;
42
+ tmp = ((bytes[p + 2] | bytes[p + 3] << 8) << 11) ^ hash;
43
+ hash = (hash << 16) ^ tmp;
44
+ hash += hash >>> 11;
45
+ p += 4;
46
+ }
47
+ switch (bytes.length & 3) {
48
+ case 3:
49
+ hash += bytes[p] | bytes[p + 1] << 8;
50
+ hash ^= hash << 16;
51
+ hash ^= bytes[p + 2] << 18;
52
+ hash += hash >>> 11;
53
+ break;
54
+ case 2:
55
+ hash += bytes[p] | bytes[p + 1] << 8;
56
+ hash ^= hash << 11;
57
+ hash += hash >>> 17;
58
+ break;
59
+ case 1:
60
+ hash += bytes[p];
61
+ hash ^= hash << 10;
62
+ hash += hash >>> 1;
63
+ break;
64
+ }
65
+ hash ^= hash << 3;
66
+ hash += hash >>> 5;
67
+ hash ^= hash << 4;
68
+ hash += hash >>> 17;
69
+ hash ^= hash << 25;
70
+ hash += hash >>> 6;
71
+ return hash >>> 0;
72
+ }
73
+ export function cyrb53Hash(bytes, seed = 0) {
74
+ // https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js
75
+ let h1 = 0xdeadbeef ^ seed;
76
+ let h2 = 0x41c6ce57 ^ seed;
77
+ for (const byte of bytes) {
78
+ h1 = Math.imul(h1 ^ byte, 2654435761);
79
+ h2 = Math.imul(h2 ^ byte, 1597334677);
80
+ }
81
+ h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
82
+ h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
83
+ return (4294967296 * (2097151 & h2)) + (h1 >>> 0);
84
+ }
85
+ export function djb2(bytes) {
86
+ let hash = 5381;
87
+ for (const byte of bytes) {
88
+ //hash += (hash << 5) + byte
89
+ hash += (hash * 33) + byte;
90
+ }
91
+ return hash >>> 0;
92
+ }
93
+ export function murmurHash1(bytes, seed = 0) {
94
+ // https://github.com/bryc/code/blob/master/jshash/hashes/murmurhash1.js
95
+ const length = bytes.length;
96
+ const multiplier = 3332679571;
97
+ const intIterationMaxIndex = length & -4;
98
+ let hash = seed ^ Math.imul(length, multiplier);
99
+ let index = 0;
100
+ for (; index < intIterationMaxIndex; index += 4) {
101
+ hash += bytes[index + 3] << 24 |
102
+ bytes[index + 2] << 16 |
103
+ bytes[index + 1] << 8 |
104
+ bytes[index];
105
+ hash = Math.imul(hash, multiplier);
106
+ hash ^= hash >>> 16;
107
+ }
108
+ switch (length & 3) {
109
+ case 3: {
110
+ hash += bytes[index + 2] << 16;
111
+ }
112
+ case 2: {
113
+ hash += bytes[index + 1] << 8;
114
+ }
115
+ case 1: {
116
+ hash += bytes[index];
117
+ hash = Math.imul(hash, multiplier);
118
+ hash ^= hash >>> 16;
119
+ }
120
+ }
121
+ hash = Math.imul(hash, multiplier);
122
+ hash ^= hash >>> 10;
123
+ hash = Math.imul(hash, multiplier);
124
+ hash ^= hash >>> 17;
125
+ return hash >>> 0;
126
+ }
127
+ export function MurmurHash3(bytes, seed = 0) {
128
+ // https://github.com/bryc/code/blob/master/jshash/hashes/murmurhash3.js
129
+ const p1 = 3432918353;
130
+ const p2 = 461845907;
131
+ const p3 = 2246822507;
132
+ const p4 = 3266489909;
133
+ const byteCount = bytes.length;
134
+ const intIterationMaxIndex = byteCount & -4;
135
+ let k = 0;
136
+ let hash = seed | 0;
137
+ let i = 0;
138
+ for (; i < intIterationMaxIndex; i += 4) {
139
+ k = bytes[i + 3] << 24 | bytes[i + 2] << 16 | bytes[i + 1] << 8 | bytes[i];
140
+ k = Math.imul(k, p1);
141
+ k = k << 15 | k >>> 17;
142
+ hash ^= Math.imul(k, p2);
143
+ hash = hash << 13 | hash >>> 19;
144
+ hash = (Math.imul(hash, 5) + 3864292196) | 0; // |0 = prevent float
145
+ }
146
+ k = 0;
147
+ switch (bytes.length & 3) {
148
+ case 3: {
149
+ k ^= bytes[i + 2] << 16;
150
+ }
151
+ case 2: {
152
+ k ^= bytes[i + 1] << 8;
153
+ }
154
+ case 1: {
155
+ k ^= bytes[i];
156
+ k = Math.imul(k, p1);
157
+ k = k << 15 | k >>> 17;
158
+ hash ^= Math.imul(k, p2);
159
+ }
160
+ }
161
+ hash ^= byteCount;
162
+ hash ^= hash >>> 16;
163
+ hash = Math.imul(hash, p3);
164
+ hash ^= hash >>> 13;
165
+ hash = Math.imul(hash, p4);
166
+ hash ^= hash >>> 16;
167
+ return hash >>> 0;
168
+ }
169
+ //# sourceMappingURL=Hashing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hashing.js","sourceRoot":"","sources":["../../src/utilities/Hashing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare function languageCodeToName(languageCode: string): string;
2
+ export declare function formatLanguageCodeWithName(languageCode: string): string;
3
+ export declare function getShortLanguageCode(langCode: string): string;
4
+ export declare function normalizeLanguageCode(langCode: string): string;
5
+ export declare function isoToLcidLanguageCode(iso: string): Promise<number | undefined>;
6
+ export declare function lcidToIsoLanguageCode(lcid: number): Promise<string[] | undefined>;
7
+ export declare const shortLanguageCodeToLong: {
8
+ [lang: string]: string;
9
+ };
@@ -0,0 +1,65 @@
1
+ import { readAndParseJsonFile, resolveToModuleRootDir } from "./FileSystem.js";
2
+ export function languageCodeToName(languageCode) {
3
+ const languageNames = new Intl.DisplayNames(['en'], { type: 'language' });
4
+ let translatedLanguageName;
5
+ try {
6
+ translatedLanguageName = languageNames.of(languageCode);
7
+ }
8
+ catch (e) {
9
+ }
10
+ return translatedLanguageName || "Unknown";
11
+ }
12
+ export function formatLanguageCodeWithName(languageCode) {
13
+ return `${languageCodeToName(languageCode)} (${languageCode})`;
14
+ }
15
+ export function getShortLanguageCode(langCode) {
16
+ const dashIndex = langCode.indexOf("-");
17
+ if (dashIndex == -1) {
18
+ return langCode;
19
+ }
20
+ return langCode.substring(0, dashIndex).toLowerCase();
21
+ }
22
+ export function normalizeLanguageCode(langCode) {
23
+ const parts = langCode.split("-");
24
+ const result = [parts[0].toLowerCase()];
25
+ for (let i = 1; i < parts.length; i++) {
26
+ result.push(parts[i].toUpperCase());
27
+ }
28
+ return result.join("-");
29
+ }
30
+ const isoToLcidLookup = new Map();
31
+ const lcidToIsoLookup = new Map();
32
+ export async function isoToLcidLanguageCode(iso) {
33
+ await loadLcidLookupIfNeeded();
34
+ return isoToLcidLookup.get(iso);
35
+ }
36
+ export async function lcidToIsoLanguageCode(lcid) {
37
+ await loadLcidLookupIfNeeded();
38
+ return lcidToIsoLookup.get(lcid);
39
+ }
40
+ async function loadLcidLookupIfNeeded() {
41
+ if (isoToLcidLookup.size > 0) {
42
+ return;
43
+ }
44
+ const lcidLookup = await readAndParseJsonFile(resolveToModuleRootDir("data/tables/lcid-table.json"));
45
+ for (const isoName in lcidLookup) {
46
+ const lcidValue = lcidLookup[isoName].LCID;
47
+ isoToLcidLookup.set(isoName, lcidValue);
48
+ let entry = lcidToIsoLookup.get(lcidValue);
49
+ if (!entry) {
50
+ entry = [];
51
+ lcidToIsoLookup.set(lcidValue, entry);
52
+ }
53
+ entry.push(isoName);
54
+ }
55
+ }
56
+ export const shortLanguageCodeToLong = {
57
+ "en": "en-US",
58
+ "zh": "zh-CN",
59
+ "ar": "ar-EG",
60
+ "fr": "fr-FR",
61
+ "de": "de-DE",
62
+ "pt": "pt-BR",
63
+ "es": "es-ES"
64
+ };
65
+ //# sourceMappingURL=Locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Locale.js","sourceRoot":"","sources":["../../src/utilities/Locale.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class Logger {
2
+ private timer;
3
+ active: boolean;
4
+ start(title: string): void;
5
+ startAsync(title: string, wait?: boolean): Promise<void>;
6
+ end(): void;
7
+ log(message: any): void;
8
+ write(message: any): void;
9
+ logDuration(message: any, startTime: number): void;
10
+ getTimestamp(): number;
11
+ }
@@ -0,0 +1,49 @@
1
+ import { Timer } from "./Timer.js";
2
+ import { delay, logToStderr, roundToDigits, writeToStderr } from "./Utilities.js";
3
+ let currentActiveLogger = null;
4
+ export class Logger {
5
+ timer = new Timer();
6
+ active = false;
7
+ start(title) {
8
+ this.startAsync(title, false);
9
+ }
10
+ async startAsync(title, wait = true) {
11
+ if (currentActiveLogger != null && currentActiveLogger != this) {
12
+ return;
13
+ }
14
+ this.end();
15
+ if (wait) {
16
+ await delay(0);
17
+ }
18
+ writeToStderr(`${title}.. `);
19
+ this.active = true;
20
+ currentActiveLogger = this;
21
+ this.timer.restart();
22
+ }
23
+ end() {
24
+ if (this.active && currentActiveLogger == this) {
25
+ const elapsedTime = this.timer.elapsedTime;
26
+ writeToStderr(`${roundToDigits(elapsedTime, 1)}ms\n`);
27
+ currentActiveLogger = null;
28
+ }
29
+ this.active = false;
30
+ }
31
+ log(message) {
32
+ if (currentActiveLogger == this || currentActiveLogger == null) {
33
+ logToStderr(message);
34
+ }
35
+ }
36
+ write(message) {
37
+ if (currentActiveLogger == this || currentActiveLogger == null) {
38
+ writeToStderr(message);
39
+ }
40
+ }
41
+ logDuration(message, startTime) {
42
+ const duration = Timer.currentTime - startTime;
43
+ this.log(`${message}: ${roundToDigits(duration, 1)}ms`);
44
+ }
45
+ getTimestamp() {
46
+ return Timer.currentTime;
47
+ }
48
+ }
49
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/utilities/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEjF,IAAI,mBAAmB,GAAkB,IAAI,CAAA;AAE7C,MAAM,OAAO,MAAM;IACV,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IAC3B,MAAM,GAAG,KAAK,CAAA;IAEd,KAAK,CAAC,KAAa;QAClB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,IAAI,GAAG,IAAI;QAC1C,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,IAAI,IAAI,EAAE;YAC/D,OAAM;SACN;QAED,IAAI,CAAC,GAAG,EAAE,CAAA;QAEV,IAAI,IAAI,EAAE;YACT,MAAM,KAAK,CAAC,CAAC,CAAC,CAAA;SACd;QAED,aAAa,CAAC,GAAG,KAAK,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,mBAAmB,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;IACrB,CAAC;IAED,GAAG;QACF,IAAI,IAAI,CAAC,MAAM,IAAI,mBAAmB,IAAI,IAAI,EAAE;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAA;YAE1C,aAAa,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;YACrD,mBAAmB,GAAG,IAAI,CAAA;SAC1B;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,GAAG,CAAC,OAAY;QACf,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,IAAI,IAAI,EAAE;YAC/D,WAAW,CAAC,OAAO,CAAC,CAAA;SACpB;IACF,CAAC;IAED,KAAK,CAAC,OAAY;QACjB,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,IAAI,IAAI,EAAE;YAC/D,aAAa,CAAC,OAAO,CAAC,CAAA;SACtB;IACF,CAAC;IAED,WAAW,CAAC,OAAY,EAAE,SAAiB;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,GAAG,SAAS,CAAA;QAE9C,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,KAAK,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,YAAY;QACX,OAAO,KAAK,CAAC,WAAW,CAAA;IACzB,CAAC;CACD"}
@@ -0,0 +1,3 @@
1
+ import ndarray from 'ndarray';
2
+ export declare function ndarraySoftMax(vector: ndarray.NdArray, temperature?: number): void;
3
+ export declare function ndarrayMedianFilter(vector: ndarray.NdArray, width: number): void;
@@ -0,0 +1,22 @@
1
+ import { medianFilter, softMax } from '../math/VectorMath.js';
2
+ export function ndarraySoftMax(vector, temperature = 1.0) {
3
+ const vectorAsArray = new Array(vector.shape[0]);
4
+ for (let i = 0; i < vectorAsArray.length; i++) {
5
+ vectorAsArray[i] = vector.get(i);
6
+ }
7
+ const result = softMax(vectorAsArray, temperature);
8
+ for (let i = 0; i < vectorAsArray.length; i++) {
9
+ vector.set(i, result[i]);
10
+ }
11
+ }
12
+ export function ndarrayMedianFilter(vector, width) {
13
+ const vectorAsArray = new Array(vector.shape[0]);
14
+ for (let i = 0; i < vectorAsArray.length; i++) {
15
+ vectorAsArray[i] = vector.get(i);
16
+ }
17
+ const result = medianFilter(vectorAsArray, width);
18
+ for (let i = 0; i < vectorAsArray.length; i++) {
19
+ vector.set(i, result[i]);
20
+ }
21
+ }
22
+ //# sourceMappingURL=NdArrayUtilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NdArrayUtilities.js","sourceRoot":"","sources":["../../src/utilities/NdArrayUtilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,UAAU,cAAc,CAAC,MAAuB,EAAE,WAAW,GAAG,GAAG;IACxE,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC9C,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;KAChC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;KACxB;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAuB,EAAE,KAAa;IACzE,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC9C,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;KAChC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;IAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;KACxB;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function extendDeep(base: any, extension: any): any;
2
+ export declare function shallowClone<T>(val: T): T;
3
+ export declare function deepClone<T>(val: T): T;
4
+ export declare function isPlainObject(val: any): boolean;
@@ -0,0 +1,132 @@
1
+ export function extendDeep(base, extension) {
2
+ const extensionClone = deepClone(extension);
3
+ if (!isPlainObject(base) || !isPlainObject(extension)) {
4
+ return extensionClone;
5
+ }
6
+ const baseClone = deepClone(base);
7
+ for (const propName in extensionClone) {
8
+ if (!extensionClone.hasOwnProperty(propName)) {
9
+ continue;
10
+ }
11
+ baseClone[propName] = extendDeep(baseClone[propName], extensionClone[propName]);
12
+ }
13
+ return baseClone;
14
+ }
15
+ export function shallowClone(val) {
16
+ return clone(val, false);
17
+ }
18
+ export function deepClone(val) {
19
+ return clone(val, true);
20
+ }
21
+ function clone(val, deep = true, seenObjects = []) {
22
+ if (val == null || typeof val !== "object") {
23
+ return val;
24
+ }
25
+ const obj = val;
26
+ const prototypeIdentifier = toString.call(obj);
27
+ switch (prototypeIdentifier) {
28
+ case "[object Array]": {
29
+ if (seenObjects.includes(obj)) {
30
+ throw new Error("deepClone: encountered a cyclic object");
31
+ }
32
+ seenObjects.push(obj);
33
+ const clonedArray = new Array(obj.length);
34
+ for (let i = 0; i < obj.length; i++) {
35
+ if (deep) {
36
+ clonedArray[i] = clone(obj[i], true, seenObjects);
37
+ }
38
+ else {
39
+ clonedArray[i] = obj[i];
40
+ }
41
+ }
42
+ seenObjects.pop();
43
+ return clonedArray;
44
+ }
45
+ case "[object ArrayBuffer]": {
46
+ const clonedArray = new Uint8Array(obj.byteLength);
47
+ clonedArray.set(new Uint8Array(obj));
48
+ return clonedArray.buffer;
49
+ }
50
+ case "[object Int8Array]": {
51
+ const clonedArray = new Int8Array(obj.length);
52
+ clonedArray.set(obj);
53
+ return clonedArray;
54
+ }
55
+ case "[object Uint8Array]": {
56
+ const clonedArray = new Uint8Array(obj.length);
57
+ clonedArray.set(obj);
58
+ return clonedArray;
59
+ }
60
+ case "[object Uint8ClampedArray]": {
61
+ const clonedArray = new Uint8ClampedArray(obj.length);
62
+ clonedArray.set(obj);
63
+ return clonedArray;
64
+ }
65
+ case "[object Int16Array]": {
66
+ const clonedArray = new Int16Array(obj.length);
67
+ clonedArray.set(obj);
68
+ return clonedArray;
69
+ }
70
+ case "[object Uint16Array]": {
71
+ const clonedArray = new Uint16Array(obj.length);
72
+ clonedArray.set(obj);
73
+ return clonedArray;
74
+ }
75
+ case "[object Int32Array]": {
76
+ const clonedArray = new Int32Array(obj.length);
77
+ clonedArray.set(obj);
78
+ return clonedArray;
79
+ }
80
+ case "[object Uint32Array]": {
81
+ const clonedArray = new Uint32Array(obj.length);
82
+ clonedArray.set(obj);
83
+ return clonedArray;
84
+ }
85
+ case "[object Float32Array]": {
86
+ const clonedArray = new Float32Array(obj.length);
87
+ clonedArray.set(obj);
88
+ return clonedArray;
89
+ }
90
+ case "[object Float64Array]": {
91
+ const clonedArray = new Float64Array(obj.length);
92
+ clonedArray.set(obj);
93
+ return clonedArray;
94
+ }
95
+ case "[object Date]": {
96
+ return new Date(obj.valueOf());
97
+ }
98
+ case "[object RegExp]": {
99
+ return obj;
100
+ }
101
+ case "[object Function]": {
102
+ return obj;
103
+ }
104
+ case "[object Object]": {
105
+ if (seenObjects.includes(obj)) {
106
+ throw new Error("deepClone: encountered a cyclic object");
107
+ }
108
+ seenObjects.push(obj);
109
+ const clonedObj = {};
110
+ for (const propName in obj) {
111
+ if (!obj.hasOwnProperty(propName)) {
112
+ continue;
113
+ }
114
+ if (deep) {
115
+ clonedObj[propName] = clone(obj[propName], true, seenObjects);
116
+ }
117
+ else {
118
+ clonedObj[propName] = obj[propName];
119
+ }
120
+ }
121
+ seenObjects.pop();
122
+ return clonedObj;
123
+ }
124
+ default: {
125
+ throw new Error(`Cloning of type ${prototypeIdentifier} is not supported`);
126
+ }
127
+ }
128
+ }
129
+ export function isPlainObject(val) {
130
+ return val != null && typeof val === "object" && toString.call(val) === "[object Object]";
131
+ }
132
+ //# sourceMappingURL=ObjectUtilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectUtilities.js","sourceRoot":"","sources":["../../src/utilities/ObjectUtilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare class OpenPromise<T = void> {
2
+ promise: Promise<T>;
3
+ resolve: (value: T) => void;
4
+ reject: (reason?: any) => void;
5
+ constructor();
6
+ }
@@ -0,0 +1,12 @@
1
+ export class OpenPromise {
2
+ promise;
3
+ resolve = () => { throw new Error("OpenPromise resolved before initialization"); };
4
+ reject = () => { throw new Error("OpenPromise rejected before initialization"); };
5
+ constructor() {
6
+ this.promise = new Promise((resolve, reject) => {
7
+ this.resolve = resolve;
8
+ this.reject = reject;
9
+ });
10
+ }
11
+ }
12
+ //# sourceMappingURL=OpenPromise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenPromise.js","sourceRoot":"","sources":["../../src/utilities/OpenPromise.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IAEvB,OAAO,CAAY;IACnB,OAAO,GAAuB,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA,CAAC,CAAC,CAAA;IACrG,MAAM,GAA2B,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA,CAAC,CAAC,CAAA;IAExG;QACC,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACrB,CAAC,CAAC,CAAA;IACH,CAAC;CACD"}
@@ -0,0 +1,4 @@
1
+ export declare function getPackagePathIfExists(packageName: string): Promise<string | undefined>;
2
+ export declare function loadPackage(packageName: string): Promise<string>;
3
+ export declare function removePackage(packageName: string): Promise<void>;
4
+ export declare function ensureAndGetPackagesDir(): Promise<string>;
@@ -0,0 +1,46 @@
1
+ import path from "node:path";
2
+ import { downloadAndExtractTarball } from "./FileDownloader.js";
3
+ import { getAppDataDir, getAppTempDir, ensureDir, existsSync, remove } from "./FileSystem.js";
4
+ import { appName } from "../api/Globals.js";
5
+ export async function getPackagePathIfExists(packageName) {
6
+ const packagesPath = await ensureAndGetPackagesDir();
7
+ const packagePath = path.join(packagesPath, packageName);
8
+ if (existsSync(packagePath)) {
9
+ return packagePath;
10
+ }
11
+ return undefined;
12
+ }
13
+ export async function loadPackage(packageName) {
14
+ const packagesPath = await ensureAndGetPackagesDir();
15
+ const packagePath = path.join(packagesPath, packageName);
16
+ if (existsSync(packagePath)) {
17
+ return packagePath;
18
+ }
19
+ const tempPath = getAppTempDir(appName);
20
+ let baseUrl;
21
+ if (packageName.startsWith("whisper-")) {
22
+ baseUrl = "https://github.com/echogarden-project/whisper-onnx-models/releases/download/v0.0.1/";
23
+ }
24
+ else {
25
+ baseUrl = "https://github.com/echogarden-project/echogarden-packages/releases/download/v0.0.1/";
26
+ }
27
+ const headers = {};
28
+ const options = {
29
+ url: `${baseUrl}${packageName}.tar.gz`,
30
+ headers
31
+ };
32
+ await downloadAndExtractTarball(options, packagesPath, tempPath, packageName);
33
+ return packagePath;
34
+ }
35
+ export async function removePackage(packageName) {
36
+ const packagesPath = await ensureAndGetPackagesDir();
37
+ const packagePath = path.join(packagesPath, packageName);
38
+ await remove(packagePath);
39
+ }
40
+ export async function ensureAndGetPackagesDir() {
41
+ const dataPath = getAppDataDir(appName);
42
+ const packagesPath = path.join(dataPath, "packages");
43
+ await ensureDir(packagesPath);
44
+ return packagesPath;
45
+ }
46
+ //# sourceMappingURL=PackageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageManager.js","sourceRoot":"","sources":["../../src/utilities/PackageManager.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7F,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAG3C,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,WAAmB;IAC/D,MAAM,YAAY,GAAG,MAAM,uBAAuB,EAAE,CAAA;IAEpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAExD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;QAC5B,OAAO,WAAW,CAAA;KAClB;IAED,OAAO,SAAS,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACpD,MAAM,YAAY,GAAG,MAAM,uBAAuB,EAAE,CAAA;IAEpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAExD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;QAC5B,OAAO,WAAW,CAAA;KAClB;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IAEvC,IAAI,OAAe,CAAA;IAEnB,IAAI,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QACvC,OAAO,GAAG,qFAAqF,CAAA;KAC/F;SAAM;QACN,OAAO,GAAG,qFAAqF,CAAA;KAC/F;IAED,MAAM,OAAO,GAAG,EACf,CAAA;IAED,MAAM,OAAO,GAAkB;QAC9B,GAAG,EAAE,GAAG,OAAO,GAAG,WAAW,SAAS;QACtC,OAAO;KACP,CAAA;IAED,MAAM,yBAAyB,CAC9B,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,WAAW,CACX,CAAA;IAED,OAAO,WAAW,CAAA;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB;IACtD,MAAM,YAAY,GAAG,MAAM,uBAAuB,EAAE,CAAA;IAEpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAExD,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IAEvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAEpD,MAAM,SAAS,CAAC,YAAY,CAAC,CAAA;IAE7B,OAAO,YAAY,CAAA;AACpB,CAAC"}
@@ -0,0 +1,35 @@
1
+ export declare abstract class RandomGenerator {
2
+ getIntInRange(min: number, max: number): number;
3
+ getFloatInRange(min?: number, max?: number): number;
4
+ getFloats(length: number, min?: number, max?: number): number[];
5
+ getInts(length: number, min: number, max: number): number[];
6
+ getNormallyDistributedVector(featureCount: number, meanVector: number[], standardDeviationVector: number[]): number[];
7
+ getNormallyDistributedValues(count: number, mean?: number, standardDeviation?: number): number[];
8
+ getNormallyDistributedPair(): number[];
9
+ abstract nextFloat(): number;
10
+ abstract nextUint32(): number;
11
+ abstract nextInt32(): number;
12
+ }
13
+ export declare class MurmurRNG extends RandomGenerator {
14
+ state: number;
15
+ constructor(seed: number);
16
+ nextFloat(): number;
17
+ nextUint32(): number;
18
+ nextInt32(): number;
19
+ static hashInt32(val: number, seed?: number): number;
20
+ }
21
+ export declare class XorShift32RNG extends RandomGenerator {
22
+ state: number;
23
+ constructor(seed: number);
24
+ nextFloat(): number;
25
+ nextUint32(): number;
26
+ nextInt32(): number;
27
+ }
28
+ export declare class LehmerRNG extends RandomGenerator {
29
+ state: number;
30
+ constructor(seed: number);
31
+ nextFloat(): number;
32
+ nextUint32(): number;
33
+ nextInt32(): number;
34
+ }
35
+ export declare function testRngCycleLength(): void;