react-native-sherpa-onnx 0.3.5 → 0.3.7

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 (232) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +90 -21
  3. package/SherpaOnnx.podspec +3 -0
  4. package/THIRD_PARTY_LICENSES/README.md +62 -0
  5. package/THIRD_PARTY_LICENSES/ffmpeg.txt +502 -0
  6. package/THIRD_PARTY_LICENSES/libarchive.txt +65 -0
  7. package/THIRD_PARTY_LICENSES/nvidia_omla.txt +181 -0
  8. package/THIRD_PARTY_LICENSES/onnxruntime.txt +21 -0
  9. package/THIRD_PARTY_LICENSES/opus.txt +44 -0
  10. package/THIRD_PARTY_LICENSES/sherpa-onnx.txt +201 -0
  11. package/THIRD_PARTY_LICENSES/shine.txt +482 -0
  12. package/THIRD_PARTY_LICENSES/zstd.txt +30 -0
  13. package/android/build.gradle +7 -3
  14. package/android/prebuilt-download.gradle +345 -153
  15. package/android/prebuilt-versions.gradle +2 -2
  16. package/android/src/main/assets/model_licenses/asr-models-license-status.csv +409 -0
  17. package/android/src/main/assets/model_licenses/qnn-asr-models-license-status.csv +695 -0
  18. package/android/src/main/assets/model_licenses/tts-models-license-status.csv +596 -0
  19. package/android/src/main/cpp/CMakeLists.txt +28 -10
  20. package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.cpp +306 -6
  21. package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.h +33 -4
  22. package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-jni.cpp +266 -7
  23. package/android/src/main/cpp/jni/audio/sherpa-onnx-audio-convert-jni.cpp +268 -2
  24. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-tts.cpp +6 -2
  25. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-validate-tts.cpp +4 -2
  26. package/android/src/main/java/com/sherpaonnx/SherpaOnnxArchiveHelper.kt +137 -7
  27. package/android/src/main/java/com/sherpaonnx/SherpaOnnxAssetHelper.kt +51 -6
  28. package/android/src/main/java/com/sherpaonnx/SherpaOnnxModule.kt +159 -0
  29. package/android/src/main/java/com/sherpaonnx/SherpaOnnxOnlineSttHelper.kt +4 -1
  30. package/android/src/main/java/com/sherpaonnx/SherpaOnnxTtsHelper.kt +112 -97
  31. package/ios/Resources/model_licenses/asr-models-license-status.csv +409 -0
  32. package/ios/Resources/model_licenses/qnn-asr-models-license-status.csv +695 -0
  33. package/ios/Resources/model_licenses/tts-models-license-status.csv +596 -0
  34. package/ios/SherpaOnnx+OnlineSTT.mm +2 -0
  35. package/ios/SherpaOnnx+PcmLiveStream.mm +2 -29
  36. package/ios/SherpaOnnx+TTS.mm +178 -20
  37. package/ios/SherpaOnnx.mm +108 -1
  38. package/ios/SherpaOnnxAudioConvert.h +10 -0
  39. package/ios/SherpaOnnxAudioConvert.mm +257 -1
  40. package/ios/archive/sherpa-onnx-archive-helper.h +10 -0
  41. package/ios/archive/sherpa-onnx-archive-helper.mm +56 -5
  42. package/ios/model_detect/sherpa-onnx-model-detect-tts.mm +13 -2
  43. package/ios/model_detect/sherpa-onnx-validate-tts.mm +4 -2
  44. package/ios/online_stt/sherpa-onnx-online-stt-wrapper.h +1 -0
  45. package/ios/online_stt/sherpa-onnx-online-stt-wrapper.mm +4 -0
  46. package/ios/tts/sherpa-onnx-tts-wrapper.h +37 -0
  47. package/ios/tts/sherpa-onnx-tts-wrapper.mm +149 -3
  48. package/lib/module/NativeSherpaOnnx.js.map +1 -1
  49. package/lib/module/audio/index.js +8 -0
  50. package/lib/module/audio/index.js.map +1 -1
  51. package/lib/module/download/ModelDownloadManager.js +10 -929
  52. package/lib/module/download/ModelDownloadManager.js.map +1 -1
  53. package/lib/module/download/activeModelOperations.js +26 -0
  54. package/lib/module/download/activeModelOperations.js.map +1 -0
  55. package/lib/module/download/background-downloader.d.js +2 -0
  56. package/lib/module/download/background-downloader.d.js.map +1 -0
  57. package/lib/module/download/bulkPurge.js +72 -0
  58. package/lib/module/download/bulkPurge.js.map +1 -0
  59. package/lib/module/download/checksumPrompt.js +19 -0
  60. package/lib/module/download/checksumPrompt.js.map +1 -0
  61. package/lib/module/download/constants.js +7 -0
  62. package/lib/module/download/constants.js.map +1 -0
  63. package/lib/module/download/downloadEvents.js +35 -0
  64. package/lib/module/download/downloadEvents.js.map +1 -0
  65. package/lib/module/download/downloadTask.js +385 -0
  66. package/lib/module/download/downloadTask.js.map +1 -0
  67. package/lib/module/download/ensureModel.js +89 -0
  68. package/lib/module/download/ensureModel.js.map +1 -0
  69. package/lib/module/download/index.js +4 -3
  70. package/lib/module/download/index.js.map +1 -1
  71. package/lib/module/download/localModels.js +151 -0
  72. package/lib/module/download/localModels.js.map +1 -0
  73. package/lib/module/download/modelExtraction.js +174 -0
  74. package/lib/module/download/modelExtraction.js.map +1 -0
  75. package/lib/module/download/paths.js +98 -0
  76. package/lib/module/download/paths.js.map +1 -0
  77. package/lib/module/download/postDownloadProcessing.js +206 -0
  78. package/lib/module/download/postDownloadProcessing.js.map +1 -0
  79. package/lib/module/download/protectedModelKeys.js +31 -0
  80. package/lib/module/download/protectedModelKeys.js.map +1 -0
  81. package/lib/module/download/registry.js +267 -0
  82. package/lib/module/download/registry.js.map +1 -0
  83. package/lib/module/download/retry.js +59 -0
  84. package/lib/module/download/retry.js.map +1 -0
  85. package/lib/module/download/types.js +17 -0
  86. package/lib/module/download/types.js.map +1 -0
  87. package/lib/module/download/validation.js +101 -5
  88. package/lib/module/download/validation.js.map +1 -1
  89. package/lib/module/{download → extraction}/extractTarBz2.js +3 -1
  90. package/lib/module/extraction/extractTarBz2.js.map +1 -0
  91. package/lib/module/extraction/extractTarZst.js +54 -0
  92. package/lib/module/extraction/extractTarZst.js.map +1 -0
  93. package/lib/module/extraction/index.js +190 -0
  94. package/lib/module/extraction/index.js.map +1 -0
  95. package/lib/module/extraction/types.js +2 -0
  96. package/lib/module/extraction/types.js.map +1 -0
  97. package/lib/module/index.js +2 -1
  98. package/lib/module/index.js.map +1 -1
  99. package/lib/module/licenses.js +63 -0
  100. package/lib/module/licenses.js.map +1 -0
  101. package/lib/module/stt/index.js +16 -2
  102. package/lib/module/stt/index.js.map +1 -1
  103. package/lib/module/stt/streaming.js +2 -0
  104. package/lib/module/stt/streaming.js.map +1 -1
  105. package/lib/module/stt/streamingTypes.js.map +1 -1
  106. package/lib/module/stt/types.js.map +1 -1
  107. package/lib/module/tts/index.js +20 -2
  108. package/lib/module/tts/index.js.map +1 -1
  109. package/lib/module/tts/streaming.js +4 -0
  110. package/lib/module/tts/streaming.js.map +1 -1
  111. package/lib/module/tts/types.js.map +1 -1
  112. package/lib/module/utils.js +16 -1
  113. package/lib/module/utils.js.map +1 -1
  114. package/lib/typescript/src/NativeSherpaOnnx.d.ts +72 -5
  115. package/lib/typescript/src/NativeSherpaOnnx.d.ts.map +1 -1
  116. package/lib/typescript/src/audio/index.d.ts +10 -0
  117. package/lib/typescript/src/audio/index.d.ts.map +1 -1
  118. package/lib/typescript/src/download/ModelDownloadManager.d.ts +10 -108
  119. package/lib/typescript/src/download/ModelDownloadManager.d.ts.map +1 -1
  120. package/lib/typescript/src/download/activeModelOperations.d.ts +6 -0
  121. package/lib/typescript/src/download/activeModelOperations.d.ts.map +1 -0
  122. package/lib/typescript/src/download/bulkPurge.d.ts +14 -0
  123. package/lib/typescript/src/download/bulkPurge.d.ts.map +1 -0
  124. package/lib/typescript/src/download/checksumPrompt.d.ts +3 -0
  125. package/lib/typescript/src/download/checksumPrompt.d.ts.map +1 -0
  126. package/lib/typescript/src/download/constants.d.ts +5 -0
  127. package/lib/typescript/src/download/constants.d.ts.map +1 -0
  128. package/lib/typescript/src/download/downloadEvents.d.ts +6 -0
  129. package/lib/typescript/src/download/downloadEvents.d.ts.map +1 -0
  130. package/lib/typescript/src/download/downloadTask.d.ts +20 -0
  131. package/lib/typescript/src/download/downloadTask.d.ts.map +1 -0
  132. package/lib/typescript/src/download/ensureModel.d.ts +26 -0
  133. package/lib/typescript/src/download/ensureModel.d.ts.map +1 -0
  134. package/lib/typescript/src/download/index.d.ts +7 -5
  135. package/lib/typescript/src/download/index.d.ts.map +1 -1
  136. package/lib/typescript/src/download/localModels.d.ts +15 -0
  137. package/lib/typescript/src/download/localModels.d.ts.map +1 -0
  138. package/lib/typescript/src/download/modelExtraction.d.ts +36 -0
  139. package/lib/typescript/src/download/modelExtraction.d.ts.map +1 -0
  140. package/lib/typescript/src/download/paths.d.ts +28 -0
  141. package/lib/typescript/src/download/paths.d.ts.map +1 -0
  142. package/lib/typescript/src/download/postDownloadProcessing.d.ts +19 -0
  143. package/lib/typescript/src/download/postDownloadProcessing.d.ts.map +1 -0
  144. package/lib/typescript/src/download/protectedModelKeys.d.ts +6 -0
  145. package/lib/typescript/src/download/protectedModelKeys.d.ts.map +1 -0
  146. package/lib/typescript/src/download/registry.d.ts +14 -0
  147. package/lib/typescript/src/download/registry.d.ts.map +1 -0
  148. package/lib/typescript/src/download/retry.d.ts +15 -0
  149. package/lib/typescript/src/download/retry.d.ts.map +1 -0
  150. package/lib/typescript/src/download/types.d.ts +96 -0
  151. package/lib/typescript/src/download/types.d.ts.map +1 -0
  152. package/lib/typescript/src/download/validation.d.ts +19 -0
  153. package/lib/typescript/src/download/validation.d.ts.map +1 -1
  154. package/lib/typescript/src/extraction/extractTarBz2.d.ts.map +1 -0
  155. package/lib/typescript/src/extraction/extractTarZst.d.ts +14 -0
  156. package/lib/typescript/src/extraction/extractTarZst.d.ts.map +1 -0
  157. package/lib/typescript/src/extraction/index.d.ts +50 -0
  158. package/lib/typescript/src/extraction/index.d.ts.map +1 -0
  159. package/lib/typescript/src/extraction/types.d.ts +60 -0
  160. package/lib/typescript/src/extraction/types.d.ts.map +1 -0
  161. package/lib/typescript/src/index.d.ts +1 -0
  162. package/lib/typescript/src/index.d.ts.map +1 -1
  163. package/lib/typescript/src/licenses.d.ts +10 -0
  164. package/lib/typescript/src/licenses.d.ts.map +1 -0
  165. package/lib/typescript/src/stt/index.d.ts +4 -1
  166. package/lib/typescript/src/stt/index.d.ts.map +1 -1
  167. package/lib/typescript/src/stt/streaming.d.ts.map +1 -1
  168. package/lib/typescript/src/stt/streamingTypes.d.ts +5 -0
  169. package/lib/typescript/src/stt/streamingTypes.d.ts.map +1 -1
  170. package/lib/typescript/src/stt/types.d.ts +3 -1
  171. package/lib/typescript/src/stt/types.d.ts.map +1 -1
  172. package/lib/typescript/src/tts/index.d.ts +3 -1
  173. package/lib/typescript/src/tts/index.d.ts.map +1 -1
  174. package/lib/typescript/src/tts/streaming.d.ts.map +1 -1
  175. package/lib/typescript/src/tts/types.d.ts +6 -5
  176. package/lib/typescript/src/tts/types.d.ts.map +1 -1
  177. package/lib/typescript/src/utils.d.ts +5 -0
  178. package/lib/typescript/src/utils.d.ts.map +1 -1
  179. package/package.json +11 -1
  180. package/scripts/{check-model-csvs.sh → ci/check-model-csvs.sh} +9 -2
  181. package/scripts/ci/collect_all_sherpa_model_streams.sh +101 -0
  182. package/scripts/ci/collect_one_sherpa_release_stream.sh +189 -0
  183. package/scripts/ci/sherpa_asr_model_release_streams.json +21 -0
  184. package/scripts/ci/sherpa_tts_model_release_streams.json +13 -0
  185. package/scripts/ci/update_model_license_csv.sh +765 -0
  186. package/scripts/setup-ios-framework.sh +14 -11
  187. package/scripts/update_commercial_use.js +73 -0
  188. package/src/NativeSherpaOnnx.ts +92 -5
  189. package/src/audio/index.ts +20 -0
  190. package/src/download/ModelDownloadManager.ts +55 -1343
  191. package/src/download/activeModelOperations.ts +38 -0
  192. package/src/download/background-downloader.d.ts +43 -0
  193. package/src/download/bulkPurge.ts +102 -0
  194. package/src/download/checksumPrompt.ts +25 -0
  195. package/src/download/constants.ts +5 -0
  196. package/src/download/downloadEvents.ts +55 -0
  197. package/src/download/downloadTask.ts +497 -0
  198. package/src/download/ensureModel.ts +124 -0
  199. package/src/download/index.ts +19 -2
  200. package/src/download/localModels.ts +234 -0
  201. package/src/download/modelExtraction.ts +244 -0
  202. package/src/download/paths.ts +134 -0
  203. package/src/download/postDownloadProcessing.ts +292 -0
  204. package/src/download/protectedModelKeys.ts +30 -0
  205. package/src/download/registry.ts +404 -0
  206. package/src/download/retry.ts +76 -0
  207. package/src/download/types.ts +120 -0
  208. package/src/download/validation.ts +114 -8
  209. package/src/{download → extraction}/extractTarBz2.ts +3 -1
  210. package/src/extraction/extractTarZst.ts +79 -0
  211. package/src/extraction/index.ts +269 -0
  212. package/src/extraction/types.ts +63 -0
  213. package/src/index.tsx +2 -0
  214. package/src/licenses.ts +100 -0
  215. package/src/stt/index.ts +20 -2
  216. package/src/stt/streaming.ts +3 -0
  217. package/src/stt/streamingTypes.ts +5 -0
  218. package/src/stt/types.ts +3 -1
  219. package/src/tts/index.ts +30 -2
  220. package/src/tts/streaming.ts +10 -0
  221. package/src/tts/types.ts +6 -5
  222. package/src/utils.ts +22 -1
  223. package/third_party/libarchive_prebuilt/ANDROID_RELEASE_TAG +1 -1
  224. package/third_party/libarchive_prebuilt/IOS_RELEASE_TAG +1 -1
  225. package/third_party/sherpa-onnx-prebuilt/ANDROID_RELEASE_TAG +1 -1
  226. package/third_party/sherpa-onnx-prebuilt/IOS_RELEASE_TAG +1 -1
  227. package/android/src/main/cpp/jni/tts/sherpa-onnx-tts-zipvoice-jni.cpp +0 -301
  228. package/android/src/main/java/com/sherpaonnx/ZipvoiceTtsWrapper.kt +0 -187
  229. package/lib/module/download/extractTarBz2.js.map +0 -1
  230. package/lib/typescript/src/download/extractTarBz2.d.ts.map +0 -1
  231. package/scripts/check-qnn-support.sh +0 -78
  232. /package/lib/typescript/src/{download → extraction}/extractTarBz2.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["exists","mkdir","writeFile","stat","unlink","getReadyMarkerPath","getManifestPath","getExtractionStatePath","validateChecksum","validateExtractedFiles","resolveActualModelDir","extractTarBz2","promptChecksumFallback","emitDownloadProgress","emitModelsListUpdated","registerActivePostProcess","unregisterActivePostProcess","runPostDownloadProcessing","options","category","id","model","downloadPath","modelDir","isArchive","statePath","signal","onChecksumIssue","deleteArchiveAfterExtract","onProgress","getDownloadedList","runPostDownloadProcessingBody","isAborted","Boolean","aborted","abortError","Error","name","extractResult","extractedTotalBytes","archiveStat","bytes","size","console","warn","statErr","message","includes","extractionStatePath","JSON","stringify","modelId","phase","startedAt","Date","toISOString","archivePath","evt","totalBytes","progress","bytesDownloaded","percent","sha256","expectedSha","toLowerCase","issue","nativeSha","expected","reason","checksumResult","success","error","keepFile","filesValidation","now","sizeOnDisk","s","downloadedAt","lastUsed","err","String","list","resolvedPath","localPath"],"sourceRoot":"../../../src","sources":["download/postDownloadProcessing.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ import { getExistingDownloadTasks } from '@kesha-antonov/react-native-background-downloader';
4
+ import { getActivePostProcessKeys } from "./activeModelOperations.js";
5
+ import { getActiveDownloadTaskKeys } from "./downloadTask.js";
6
+
7
+ /**
8
+ * Model keys (`category:modelId`) that must not be removed by bulk delete: active JS download tasks,
9
+ * native background-downloader tasks, and models in post-download processing (extraction / validation).
10
+ */
11
+ export async function getProtectedModelKeysForBulkDelete() {
12
+ const set = new Set();
13
+ for (const k of getActiveDownloadTaskKeys()) {
14
+ set.add(k);
15
+ }
16
+ for (const k of getActivePostProcessKeys()) {
17
+ set.add(k);
18
+ }
19
+ try {
20
+ const existing = await getExistingDownloadTasks();
21
+ for (const t of existing) {
22
+ if (t.id && typeof t.id === 'string') {
23
+ set.add(t.id);
24
+ }
25
+ }
26
+ } catch {
27
+ // ignore — still return JS/post-process protection
28
+ }
29
+ return set;
30
+ }
31
+ //# sourceMappingURL=protectedModelKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getExistingDownloadTasks","getActivePostProcessKeys","getActiveDownloadTaskKeys","getProtectedModelKeysForBulkDelete","set","Set","k","add","existing","t","id"],"sourceRoot":"../../../src","sources":["download/protectedModelKeys.ts"],"mappings":";;AAAA,SAASA,wBAAwB,QAAQ,mDAAmD;AAC5F,SAASC,wBAAwB,QAAQ,4BAAyB;AAClE,SAASC,yBAAyB,QAAQ,mBAAgB;;AAE1D;AACA;AACA;AACA;AACA,OAAO,eAAeC,kCAAkCA,CAAA,EAEtD;EACA,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAAS,CAAC;EAC7B,KAAK,MAAMC,CAAC,IAAIJ,yBAAyB,CAAC,CAAC,EAAE;IAC3CE,GAAG,CAACG,GAAG,CAACD,CAAC,CAAC;EACZ;EACA,KAAK,MAAMA,CAAC,IAAIL,wBAAwB,CAAC,CAAC,EAAE;IAC1CG,GAAG,CAACG,GAAG,CAACD,CAAC,CAAC;EACZ;EACA,IAAI;IACF,MAAME,QAAQ,GAAG,MAAMR,wBAAwB,CAAC,CAAC;IACjD,KAAK,MAAMS,CAAC,IAAID,QAAQ,EAAE;MACxB,IAAIC,CAAC,CAACC,EAAE,IAAI,OAAOD,CAAC,CAACC,EAAE,KAAK,QAAQ,EAAE;QACpCN,GAAG,CAACG,GAAG,CAACE,CAAC,CAACC,EAAE,CAAC;MACf;IACF;EACF,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,OAAON,GAAG;AACZ","ignoreList":[]}
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+
3
+ import { exists, readFile, mkdir, writeFile } from '@dr.pogodin/react-native-fs';
4
+ import { ModelCategory } from "./types.js";
5
+ import { CACHE_TTL_MINUTES, MODEL_ARCHIVE_EXT, MODEL_ONNX_EXT } from "./constants.js";
6
+ import { getCacheDir, getCachePath, getArchiveFilename, getReleaseUrl, CATEGORY_CONFIG } from "./paths.js";
7
+ import { parseChecksumFile } from "./validation.js";
8
+ import { retryWithBackoff } from "./retry.js";
9
+ import { emitModelsListUpdated } from "./downloadEvents.js";
10
+ const memoryCacheByCategory = {};
11
+ const checksumCacheByCategory = {};
12
+ export async function fetchChecksumsFromRelease(category) {
13
+ if (category === ModelCategory.Qnn) {
14
+ return new Map();
15
+ }
16
+ if (checksumCacheByCategory[category]) {
17
+ return checksumCacheByCategory[category];
18
+ }
19
+ try {
20
+ const checksums = await retryWithBackoff(async () => {
21
+ const response = await fetch(`https://github.com/k2-fsa/sherpa-onnx/releases/download/${CATEGORY_CONFIG[category].tag}/checksum.txt`);
22
+ if (!response.ok) {
23
+ throw new Error(`Failed to fetch checksum.txt for ${category}: ${response.status}`);
24
+ }
25
+ const content = await response.text();
26
+ return parseChecksumFile(content);
27
+ }, {
28
+ maxRetries: 3,
29
+ initialDelayMs: 1000
30
+ });
31
+ checksumCacheByCategory[category] = checksums;
32
+ return checksums;
33
+ } catch (error) {
34
+ console.warn(`SherpaOnnxChecksum: Error fetching checksums for ${category}:`, error);
35
+ return new Map();
36
+ }
37
+ }
38
+ function toTitleCase(value) {
39
+ return value.split(/[-_\s]+/g).filter(Boolean).map(token => token[0].toUpperCase() + token.slice(1)).join(' ');
40
+ }
41
+ function deriveDisplayName(id) {
42
+ const cleaned = id.replace(/^sherpa-onnx-/, '');
43
+ return toTitleCase(cleaned);
44
+ }
45
+ function deriveType(id) {
46
+ const lower = id.toLowerCase();
47
+ if (lower.includes('vits')) return 'vits';
48
+ if (lower.includes('kokoro')) return 'kokoro';
49
+ if (lower.includes('matcha')) return 'matcha';
50
+ if (lower.includes('kitten')) return 'kitten';
51
+ if (lower.includes('pocket')) return 'pocket';
52
+ if (lower.includes('zipvoice')) return 'zipvoice';
53
+ return 'unknown';
54
+ }
55
+ function deriveQuantization(id) {
56
+ const lower = id.toLowerCase();
57
+ if (lower.includes('int8') && lower.includes('quant')) {
58
+ return 'int8-quantized';
59
+ }
60
+ if (lower.includes('int8')) return 'int8';
61
+ if (lower.includes('fp16')) return 'fp16';
62
+ return 'unknown';
63
+ }
64
+ function deriveSizeTier(id) {
65
+ const lower = id.toLowerCase();
66
+ if (lower.includes('tiny')) return 'tiny';
67
+ if (lower.includes('small')) return 'small';
68
+ if (lower.includes('medium')) return 'medium';
69
+ if (lower.includes('large')) return 'large';
70
+ if (lower.includes('low')) return 'small';
71
+ return 'unknown';
72
+ }
73
+ function deriveLanguages(id) {
74
+ const tokens = id.split(/[-_]+/g);
75
+ const languages = new Set();
76
+ for (const token of tokens) {
77
+ if (/^[a-z]{2}$/.test(token)) {
78
+ languages.add(token);
79
+ continue;
80
+ }
81
+ if (/^[a-z]{2}[A-Z]{2}$/.test(token)) {
82
+ languages.add(token.slice(0, 2).toLowerCase());
83
+ continue;
84
+ }
85
+ if (/^[a-z]{2}-[A-Z]{2}$/.test(token)) {
86
+ languages.add(token.slice(0, 2).toLowerCase());
87
+ }
88
+ }
89
+ return Array.from(languages);
90
+ }
91
+ function getAssetExtension(name) {
92
+ if (name.endsWith(MODEL_ARCHIVE_EXT)) return 'tar.bz2';
93
+ if (name.endsWith(MODEL_ONNX_EXT)) return 'onnx';
94
+ return null;
95
+ }
96
+ function stripAssetExtension(name, ext) {
97
+ const suffix = `.${ext}`;
98
+ return name.endsWith(suffix) ? name.slice(0, -suffix.length) : name;
99
+ }
100
+ function isAssetSupportedForCategory(category, name, ext) {
101
+ const lower = name.toLowerCase();
102
+ switch (category) {
103
+ case ModelCategory.Tts:
104
+ return ext === 'tar.bz2';
105
+ case ModelCategory.Stt:
106
+ return ext === 'tar.bz2' && !lower.includes('vad');
107
+ case ModelCategory.Vad:
108
+ return ext === 'onnx' && lower.includes('vad');
109
+ case ModelCategory.Diarization:
110
+ return ext === 'tar.bz2';
111
+ case ModelCategory.Enhancement:
112
+ return ext === 'onnx';
113
+ case ModelCategory.Separation:
114
+ return ext === 'tar.bz2' || ext === 'onnx';
115
+ case ModelCategory.Qnn:
116
+ return ext === 'tar.bz2' && lower.includes('sherpa-onnx-qnn') && lower.includes('binary') && lower.includes('seconds');
117
+ default:
118
+ return false;
119
+ }
120
+ }
121
+ function parseDigestSha256(value) {
122
+ if (!value) return undefined;
123
+ const match = value.match(/^sha256:([a-f0-9]{64})$/i);
124
+ return match?.[1]?.toLowerCase();
125
+ }
126
+ function toTtsModelMeta(asset, archiveExt) {
127
+ if (archiveExt !== 'tar.bz2') return null;
128
+ const id = stripAssetExtension(asset.name, archiveExt);
129
+ const type = deriveType(id);
130
+ if (type === 'unknown') {
131
+ console.warn('SherpaOnnxModelList: Unsupported model', id);
132
+ }
133
+ return {
134
+ id,
135
+ displayName: deriveDisplayName(id),
136
+ type,
137
+ languages: deriveLanguages(id),
138
+ quantization: deriveQuantization(id),
139
+ sizeTier: deriveSizeTier(id),
140
+ downloadUrl: asset.browser_download_url,
141
+ archiveExt,
142
+ bytes: asset.size,
143
+ sha256: parseDigestSha256(asset.digest),
144
+ category: ModelCategory.Tts
145
+ };
146
+ }
147
+ function toGenericModelMeta(category, asset, archiveExt) {
148
+ const id = stripAssetExtension(asset.name, archiveExt);
149
+ return {
150
+ id,
151
+ displayName: deriveDisplayName(id),
152
+ downloadUrl: asset.browser_download_url,
153
+ archiveExt,
154
+ bytes: asset.size,
155
+ sha256: parseDigestSha256(asset.digest),
156
+ category
157
+ };
158
+ }
159
+ function toModelMeta(category, asset) {
160
+ const archiveExt = getAssetExtension(asset.name);
161
+ if (!archiveExt) return null;
162
+ if (!isAssetSupportedForCategory(category, asset.name, archiveExt)) {
163
+ return null;
164
+ }
165
+ if (category === ModelCategory.Tts) {
166
+ return toTtsModelMeta(asset, archiveExt);
167
+ }
168
+ return toGenericModelMeta(category, asset, archiveExt);
169
+ }
170
+ async function loadCacheFromDisk(category) {
171
+ const memoryCache = memoryCacheByCategory[category];
172
+ if (memoryCache) return memoryCache;
173
+ const cachePath = getCachePath(category);
174
+ const existsResult = await exists(cachePath);
175
+ if (!existsResult) return null;
176
+ const raw = await readFile(cachePath, 'utf8');
177
+ const parsed = JSON.parse(raw);
178
+ memoryCacheByCategory[category] = parsed;
179
+ return parsed;
180
+ }
181
+ async function saveCache(category, payload) {
182
+ await mkdir(getCacheDir());
183
+ await writeFile(getCachePath(category), JSON.stringify(payload), 'utf8');
184
+ memoryCacheByCategory[category] = payload;
185
+ }
186
+ function isCacheFresh(payload, ttlMinutes) {
187
+ const updated = new Date(payload.lastUpdated).getTime();
188
+ if (!updated) return false;
189
+ const ageMs = Date.now() - updated;
190
+ return ageMs < ttlMinutes * 60 * 1000;
191
+ }
192
+ export async function listModelsByCategory(category) {
193
+ const cache = await loadCacheFromDisk(category);
194
+ return cache?.models ?? [];
195
+ }
196
+ export async function refreshModelsByCategory(category, options) {
197
+ const ttl = options?.cacheTtlMinutes ?? CACHE_TTL_MINUTES;
198
+ const cached = await loadCacheFromDisk(category);
199
+ if (!options?.forceRefresh && cached && isCacheFresh(cached, ttl)) {
200
+ return cached.models;
201
+ }
202
+ try {
203
+ const body = await retryWithBackoff(async () => {
204
+ const response = await fetch(getReleaseUrl(category));
205
+ if (!response.ok) {
206
+ throw new Error(`Failed to fetch models: ${response.status}`);
207
+ }
208
+ return response.json();
209
+ }, {
210
+ maxRetries: options?.maxRetries ?? 3,
211
+ initialDelayMs: 1000,
212
+ signal: options?.signal
213
+ });
214
+ const assets = Array.isArray(body?.assets) ? body.assets : [];
215
+ const models = assets.map(asset => toModelMeta(category, {
216
+ name: asset.name,
217
+ size: asset.size,
218
+ browser_download_url: asset.browser_download_url,
219
+ digest: asset.digest
220
+ })).filter(model => Boolean(model));
221
+ const checksums = await fetchChecksumsFromRelease(category);
222
+ for (const model of models) {
223
+ const archiveFilename = getArchiveFilename(model.id, model.archiveExt);
224
+ const sha256 = checksums.get(archiveFilename);
225
+ if (sha256) {
226
+ model.sha256 = sha256;
227
+ } else if (model.sha256) {
228
+ model.sha256 = model.sha256.toLowerCase();
229
+ }
230
+ }
231
+ const payload = {
232
+ lastUpdated: new Date().toISOString(),
233
+ models
234
+ };
235
+ await saveCache(category, payload);
236
+ emitModelsListUpdated(category, models);
237
+ return models;
238
+ } catch (error) {
239
+ if (cached) {
240
+ console.warn(`Failed to refresh models for ${category}, using cached data:`, error);
241
+ return cached.models;
242
+ }
243
+ throw error;
244
+ }
245
+ }
246
+ export async function getModelsCacheStatusByCategory(category) {
247
+ const cached = await loadCacheFromDisk(category);
248
+ if (!cached) {
249
+ return {
250
+ lastUpdated: null,
251
+ source: 'cache'
252
+ };
253
+ }
254
+ return {
255
+ lastUpdated: cached.lastUpdated,
256
+ source: 'cache'
257
+ };
258
+ }
259
+ export async function getModelByIdByCategory(category, id) {
260
+ const models = await listModelsByCategory(category);
261
+ return models.find(model => model.id === id) ?? null;
262
+ }
263
+ export function clearMemoryCacheForCategory(category) {
264
+ delete memoryCacheByCategory[category];
265
+ delete checksumCacheByCategory[category];
266
+ }
267
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["exists","readFile","mkdir","writeFile","ModelCategory","CACHE_TTL_MINUTES","MODEL_ARCHIVE_EXT","MODEL_ONNX_EXT","getCacheDir","getCachePath","getArchiveFilename","getReleaseUrl","CATEGORY_CONFIG","parseChecksumFile","retryWithBackoff","emitModelsListUpdated","memoryCacheByCategory","checksumCacheByCategory","fetchChecksumsFromRelease","category","Qnn","Map","checksums","response","fetch","tag","ok","Error","status","content","text","maxRetries","initialDelayMs","error","console","warn","toTitleCase","value","split","filter","Boolean","map","token","toUpperCase","slice","join","deriveDisplayName","id","cleaned","replace","deriveType","lower","toLowerCase","includes","deriveQuantization","deriveSizeTier","deriveLanguages","tokens","languages","Set","test","add","Array","from","getAssetExtension","name","endsWith","stripAssetExtension","ext","suffix","length","isAssetSupportedForCategory","Tts","Stt","Vad","Diarization","Enhancement","Separation","parseDigestSha256","undefined","match","toTtsModelMeta","asset","archiveExt","type","displayName","quantization","sizeTier","downloadUrl","browser_download_url","bytes","size","sha256","digest","toGenericModelMeta","toModelMeta","loadCacheFromDisk","memoryCache","cachePath","existsResult","raw","parsed","JSON","parse","saveCache","payload","stringify","isCacheFresh","ttlMinutes","updated","Date","lastUpdated","getTime","ageMs","now","listModelsByCategory","cache","models","refreshModelsByCategory","options","ttl","cacheTtlMinutes","cached","forceRefresh","body","json","signal","assets","isArray","model","archiveFilename","get","toISOString","getModelsCacheStatusByCategory","source","getModelByIdByCategory","find","clearMemoryCacheForCategory"],"sourceRoot":"../../../src","sources":["download/registry.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Retry helper with exponential backoff
5
+ * @param fn - The async function to retry
6
+ * @param options - Retry configuration
7
+ * @returns The result of the function
8
+ * @throws The last error if all retries fail or AbortError if aborted
9
+ */
10
+ export async function retryWithBackoff(fn, options = {}) {
11
+ const maxRetries = options.maxRetries ?? 3;
12
+ const initialDelayMs = options.initialDelayMs ?? 1000;
13
+ const maxDelayMs = options.maxDelayMs ?? 10000;
14
+ const backoffFactor = options.backoffFactor ?? 2;
15
+ let lastError;
16
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
17
+ if (options.signal?.aborted) {
18
+ const abortError = new Error('Operation aborted');
19
+ abortError.name = 'AbortError';
20
+ throw abortError;
21
+ }
22
+ try {
23
+ return await fn();
24
+ } catch (error) {
25
+ lastError = error instanceof Error ? error : new Error(String(error));
26
+
27
+ // Don't retry on abort
28
+ if (lastError.name === 'AbortError' || options.signal?.aborted) {
29
+ throw lastError;
30
+ }
31
+
32
+ // If this was the last attempt, throw the error
33
+ if (attempt === maxRetries) {
34
+ throw lastError;
35
+ }
36
+
37
+ // Calculate delay with exponential backoff
38
+ const delayMs = Math.min(initialDelayMs * Math.pow(backoffFactor, attempt), maxDelayMs);
39
+ console.warn(`Retry attempt ${attempt + 1}/${maxRetries} after ${delayMs}ms due to:`, lastError.message);
40
+
41
+ // Wait before retrying (abort-aware: cancel the delay if signal fires)
42
+ await new Promise((resolve, reject) => {
43
+ const timer = setTimeout(resolve, delayMs);
44
+ if (options.signal) {
45
+ const onAbort = () => {
46
+ clearTimeout(timer);
47
+ options.signal.removeEventListener('abort', onAbort);
48
+ const abortErr = new Error('Operation aborted');
49
+ abortErr.name = 'AbortError';
50
+ reject(abortErr);
51
+ };
52
+ options.signal.addEventListener('abort', onAbort);
53
+ }
54
+ });
55
+ }
56
+ }
57
+ throw lastError ?? new Error('Retry failed with no error');
58
+ }
59
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["retryWithBackoff","fn","options","maxRetries","initialDelayMs","maxDelayMs","backoffFactor","lastError","attempt","signal","aborted","abortError","Error","name","error","String","delayMs","Math","min","pow","console","warn","message","Promise","resolve","reject","timer","setTimeout","onAbort","clearTimeout","removeEventListener","abortErr","addEventListener"],"sourceRoot":"../../../src","sources":["download/retry.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeA,gBAAgBA,CACpCC,EAAoB,EACpBC,OAMC,GAAG,CAAC,CAAC,EACM;EACZ,MAAMC,UAAU,GAAGD,OAAO,CAACC,UAAU,IAAI,CAAC;EAC1C,MAAMC,cAAc,GAAGF,OAAO,CAACE,cAAc,IAAI,IAAI;EACrD,MAAMC,UAAU,GAAGH,OAAO,CAACG,UAAU,IAAI,KAAK;EAC9C,MAAMC,aAAa,GAAGJ,OAAO,CAACI,aAAa,IAAI,CAAC;EAEhD,IAAIC,SAA4B;EAEhC,KAAK,IAAIC,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIL,UAAU,EAAEK,OAAO,EAAE,EAAE;IACtD,IAAIN,OAAO,CAACO,MAAM,EAAEC,OAAO,EAAE;MAC3B,MAAMC,UAAU,GAAG,IAAIC,KAAK,CAAC,mBAAmB,CAAC;MACjDD,UAAU,CAACE,IAAI,GAAG,YAAY;MAC9B,MAAMF,UAAU;IAClB;IAEA,IAAI;MACF,OAAO,MAAMV,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,OAAOa,KAAK,EAAE;MACdP,SAAS,GAAGO,KAAK,YAAYF,KAAK,GAAGE,KAAK,GAAG,IAAIF,KAAK,CAACG,MAAM,CAACD,KAAK,CAAC,CAAC;;MAErE;MACA,IAAIP,SAAS,CAACM,IAAI,KAAK,YAAY,IAAIX,OAAO,CAACO,MAAM,EAAEC,OAAO,EAAE;QAC9D,MAAMH,SAAS;MACjB;;MAEA;MACA,IAAIC,OAAO,KAAKL,UAAU,EAAE;QAC1B,MAAMI,SAAS;MACjB;;MAEA;MACA,MAAMS,OAAO,GAAGC,IAAI,CAACC,GAAG,CACtBd,cAAc,GAAGa,IAAI,CAACE,GAAG,CAACb,aAAa,EAAEE,OAAO,CAAC,EACjDH,UACF,CAAC;MAEDe,OAAO,CAACC,IAAI,CACV,iBAAiBb,OAAO,GAAG,CAAC,IAAIL,UAAU,UAAUa,OAAO,YAAY,EACvET,SAAS,CAACe,OACZ,CAAC;;MAED;MACA,MAAM,IAAIC,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAK;QAC3C,MAAMC,KAAK,GAAGC,UAAU,CAACH,OAAO,EAAER,OAAO,CAAC;QAC1C,IAAId,OAAO,CAACO,MAAM,EAAE;UAClB,MAAMmB,OAAO,GAAGA,CAAA,KAAM;YACpBC,YAAY,CAACH,KAAK,CAAC;YACnBxB,OAAO,CAACO,MAAM,CAAEqB,mBAAmB,CAAC,OAAO,EAAEF,OAAO,CAAC;YACrD,MAAMG,QAAQ,GAAG,IAAInB,KAAK,CAAC,mBAAmB,CAAC;YAC/CmB,QAAQ,CAAClB,IAAI,GAAG,YAAY;YAC5BY,MAAM,CAACM,QAAQ,CAAC;UAClB,CAAC;UACD7B,OAAO,CAACO,MAAM,CAACuB,gBAAgB,CAAC,OAAO,EAAEJ,OAAO,CAAC;QACnD;MACF,CAAC,CAAC;IACJ;EACF;EAEA,MAAMrB,SAAS,IAAI,IAAIK,KAAK,CAAC,4BAA4B,CAAC;AAC5D","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ export let ModelCategory = /*#__PURE__*/function (ModelCategory) {
4
+ ModelCategory["Tts"] = "tts";
5
+ ModelCategory["Stt"] = "stt";
6
+ ModelCategory["Vad"] = "vad";
7
+ ModelCategory["Diarization"] = "diarization";
8
+ ModelCategory["Enhancement"] = "enhancement";
9
+ ModelCategory["Separation"] = "separation";
10
+ ModelCategory["Qnn"] = "qnn";
11
+ return ModelCategory;
12
+ }({});
13
+
14
+ /** TTS model type for meta; 'unknown' when id could not be classified. */
15
+
16
+ /** State for an in-progress or interrupted model extraction (archive --> model dir). */
17
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ModelCategory"],"sourceRoot":"../../../src","sources":["download/types.ts"],"mappings":";;AAEA,WAAYA,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;;AAUzB;;AAoDA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { DocumentDirectoryPath, stat, exists, readDir } from '@dr.pogodin/react-native-fs';
3
+ import { DocumentDirectoryPath, stat, exists, readDir, unlink } from '@dr.pogodin/react-native-fs';
4
4
  import SherpaOnnx from "../NativeSherpaOnnx.js";
5
5
  export class ValidationResult {
6
6
  constructor(success, error, message) {
@@ -10,6 +10,37 @@ export class ValidationResult {
10
10
  }
11
11
  }
12
12
 
13
+ /**
14
+ * Delete a directory and all contents. No-op if the path is missing.
15
+ * Best-effort: continues on per-entry errors (permissions, race).
16
+ */
17
+ export async function removeDirectoryRecursive(dirPath) {
18
+ if (!(await exists(dirPath))) return;
19
+ let entries;
20
+ try {
21
+ entries = await readDir(dirPath);
22
+ } catch {
23
+ return;
24
+ }
25
+ for (const entry of entries) {
26
+ const childPath = `${dirPath}/${entry.name}`.replace(/\/+/g, '/');
27
+ try {
28
+ if (entry.isDirectory()) {
29
+ await removeDirectoryRecursive(childPath);
30
+ } else {
31
+ await unlink(childPath);
32
+ }
33
+ } catch {
34
+ // ignore
35
+ }
36
+ }
37
+ try {
38
+ await unlink(dirPath);
39
+ } catch {
40
+ // ignore
41
+ }
42
+ }
43
+
13
44
  /**
14
45
  * Parse checksum.txt format into a Map of filename -> hash
15
46
  * Expected format:
@@ -88,8 +119,11 @@ export async function validateExtractedFiles(modelDir, _category) {
88
119
  const files = [];
89
120
  for (const entry of entries) {
90
121
  if (entry.isDirectory()) {
91
- const nested = await collectFilesRecursive(entry.path, depth + 1, maxDepth);
92
- files.push(...nested);
122
+ const subPath = entry.path;
123
+ if (subPath != null) {
124
+ const nested = await collectFilesRecursive(subPath, depth + 1, maxDepth);
125
+ files.push(...nested);
126
+ }
93
127
  } else {
94
128
  files.push(entry);
95
129
  }
@@ -102,10 +136,10 @@ export async function validateExtractedFiles(modelDir, _category) {
102
136
  if (actualFiles.length === 0 && subdirs.length === 0) {
103
137
  return new ValidationResult(false, 'MISSING_FILES', `Extraction failed: directory is empty: ${modelDir}`);
104
138
  }
105
- let hasModelLikeFiles = actualFiles.some(file => isModelLikeFile(file.name));
139
+ let hasModelLikeFiles = actualFiles.some(file => isModelLikeFile(file.name ?? ''));
106
140
  if (!hasModelLikeFiles) {
107
141
  const nestedFiles = await collectFilesRecursive(modelDir);
108
- hasModelLikeFiles = nestedFiles.some(file => isModelLikeFile(file.name));
142
+ hasModelLikeFiles = nestedFiles.some(file => isModelLikeFile(file.name ?? ''));
109
143
  }
110
144
  if (!hasModelLikeFiles) {
111
145
  return new ValidationResult(false, 'MISSING_FILES', `Extraction may have failed: no model files (.onnx/.txt/.bin/.json) found under ${modelDir}`);
@@ -116,6 +150,68 @@ export async function validateExtractedFiles(modelDir, _category) {
116
150
  }
117
151
  }
118
152
 
153
+ /** True if the file is a native sherpa-onnx model file (e.g. encoder.onnx). Excludes our metadata (.ready, manifest.json). */
154
+ function isNativeModelFileName(name) {
155
+ const lower = name.toLowerCase();
156
+ return lower.endsWith('.onnx') || lower.endsWith('.bin');
157
+ }
158
+
159
+ /**
160
+ * Check if a directory contains native model files (.onnx or .bin) at the top level or one level of subdirectories.
161
+ * Used to find the actual model dir; ignores our metadata (manifest.json, .ready).
162
+ */
163
+ async function dirContainsModelFiles(dir) {
164
+ const entries = await readDir(dir);
165
+ const files = entries.filter(e => !e.isDirectory());
166
+ if (files.some(f => isNativeModelFileName(f.name ?? ''))) return true;
167
+ const subdirs = entries.filter(e => e.isDirectory());
168
+ for (const sub of subdirs) {
169
+ const subPath = sub?.path;
170
+ if (subPath == null) continue;
171
+ const subEntries = await readDir(subPath);
172
+ const subFiles = subEntries.filter(e => !e.isDirectory());
173
+ if (subFiles.some(f => isNativeModelFileName(f.name ?? ''))) return true;
174
+ }
175
+ return false;
176
+ }
177
+
178
+ /**
179
+ * Resolve the directory that actually contains model files.
180
+ * After extracting a tarball, model files often end up in a single top-level subdirectory
181
+ * (e.g. installDir/modelId/encoder.onnx). Native APIs expect the path to the folder
182
+ * that directly contains encoder.onnx, decoder.onnx, etc.
183
+ *
184
+ * - If installDir itself contains native model files (.onnx/.bin), returns installDir.
185
+ * - If installDir has exactly one subdirectory that contains native model files, returns that subdirectory path.
186
+ * (Ignores our metadata: .ready, manifest.json.) This can produce paths like
187
+ * .../tts/vits-piper-de_DE-thorsten-medium-int8/vits-piper-de_DE-thorsten-medium-int8 when the
188
+ * archive extracts a top-level folder with the same name as the model id; that is intentional.
189
+ * - Otherwise returns installDir unchanged.
190
+ */
191
+ export async function resolveActualModelDir(installDir) {
192
+ try {
193
+ const dirExists = await exists(installDir);
194
+ if (!dirExists) return installDir;
195
+ const entries = await readDir(installDir);
196
+ const topLevelFiles = entries.filter(e => !e.isDirectory());
197
+ if (topLevelFiles.some(f => isNativeModelFileName(f.name ?? ''))) {
198
+ return installDir;
199
+ }
200
+ const subdirs = entries.filter(e => e.isDirectory());
201
+ const firstSubdir = subdirs[0];
202
+ const singleSubdir = subdirs.length === 1 ? firstSubdir : undefined;
203
+ if (singleSubdir != null) {
204
+ const candidatePath = singleSubdir.path;
205
+ if (candidatePath != null && (await dirContainsModelFiles(candidatePath))) {
206
+ return candidatePath;
207
+ }
208
+ }
209
+ return installDir;
210
+ } catch {
211
+ return installDir;
212
+ }
213
+ }
214
+
119
215
  /**
120
216
  * Get available disk space (in bytes)
121
217
  * This is a simplified version. For accurate values on Android/iOS, use native modules.
@@ -1 +1 @@
1
- {"version":3,"names":["DocumentDirectoryPath","stat","exists","readDir","SherpaOnnx","ValidationResult","constructor","success","error","message","parseChecksumFile","content","checksums","Map","lines","split","filter","line","trim","filename","hash","set","calculateFileChecksum","filePath","onProgress","digest","computeFileSha256","statResult","total","size","toLowerCase","Error","validateChecksum","expectedChecksum","actualChecksum","validateExtractedFiles","modelDir","_category","dirExists","isModelLikeFile","name","lower","endsWith","collectFilesRecursive","dir","depth","maxDepth","entries","files","entry","isDirectory","nested","path","push","actualFiles","subdirs","length","hasModelLikeFiles","some","file","nestedFiles","getAvailableDiskSpace","console","warn","checkDiskSpace","requiredBytes","available","buffer","totalRequired","availableGB","toFixed","requiredGB","setExpectedFilesForCategory","_files","getExpectedFilesForCategory"],"sourceRoot":"../../../src","sources":["download/validation.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["DocumentDirectoryPath","stat","exists","readDir","unlink","SherpaOnnx","ValidationResult","constructor","success","error","message","removeDirectoryRecursive","dirPath","entries","entry","childPath","name","replace","isDirectory","parseChecksumFile","content","checksums","Map","lines","split","filter","line","trim","filename","hash","set","calculateFileChecksum","filePath","onProgress","digest","computeFileSha256","statResult","total","size","toLowerCase","Error","validateChecksum","expectedChecksum","actualChecksum","validateExtractedFiles","modelDir","_category","dirExists","isModelLikeFile","lower","endsWith","collectFilesRecursive","dir","depth","maxDepth","files","subPath","path","nested","push","actualFiles","subdirs","length","hasModelLikeFiles","some","file","nestedFiles","isNativeModelFileName","dirContainsModelFiles","e","f","sub","subEntries","subFiles","resolveActualModelDir","installDir","topLevelFiles","firstSubdir","singleSubdir","undefined","candidatePath","getAvailableDiskSpace","console","warn","checkDiskSpace","requiredBytes","available","buffer","totalRequired","availableGB","toFixed","requiredGB","setExpectedFilesForCategory","_files","getExpectedFilesForCategory"],"sourceRoot":"../../../src","sources":["download/validation.ts"],"mappings":";;AAAA,SACEA,qBAAqB,EACrBC,IAAI,EACJC,MAAM,EACNC,OAAO,EACPC,MAAM,QAED,6BAA6B;AACpC,OAAOC,UAAU,MAAM,wBAAqB;AAQ5C,OAAO,MAAMC,gBAAgB,CAAC;EAK5BC,WAAWA,CAACC,OAAgB,EAAEC,KAAuB,EAAEC,OAAgB,EAAE;IACvE,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,OAAO,GAAGA,OAAO;EACxB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeC,wBAAwBA,CAACC,OAAe,EAAiB;EAC7E,IAAI,EAAE,MAAMV,MAAM,CAACU,OAAO,CAAC,CAAC,EAAE;EAC9B,IAAIC,OAA0B;EAC9B,IAAI;IACFA,OAAO,GAAG,MAAMV,OAAO,CAACS,OAAO,CAAC;EAClC,CAAC,CAAC,MAAM;IACN;EACF;EACA,KAAK,MAAME,KAAK,IAAID,OAAO,EAAE;IAC3B,MAAME,SAAS,GAAG,GAAGH,OAAO,IAAIE,KAAK,CAACE,IAAI,EAAE,CAACC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;IACjE,IAAI;MACF,IAAIH,KAAK,CAACI,WAAW,CAAC,CAAC,EAAE;QACvB,MAAMP,wBAAwB,CAACI,SAAS,CAAC;MAC3C,CAAC,MAAM;QACL,MAAMX,MAAM,CAACW,SAAS,CAAC;MACzB;IACF,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;EACA,IAAI;IACF,MAAMX,MAAM,CAACQ,OAAO,CAAC;EACvB,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASO,iBAAiBA,CAACC,OAAe,EAAuB;EACtE,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAC3C,MAAMC,KAAK,GAAGH,OAAO,CAACI,KAAK,CAAC,IAAI,CAAC,CAACC,MAAM,CAAEC,IAAI,IAAKA,IAAI,CAACC,IAAI,CAAC,CAAC,CAAC;EAE/D,KAAK,MAAMD,IAAI,IAAIH,KAAK,EAAE;IACxB,MAAM,CAACK,QAAQ,EAAEC,IAAI,CAAC,GAAGH,IAAI,CAACF,KAAK,CAAC,KAAK,CAAC;IAC1C,IAAII,QAAQ,IAAIC,IAAI,EAAE;MACpBR,SAAS,CAACS,GAAG,CAACF,QAAQ,CAACD,IAAI,CAAC,CAAC,EAAEE,IAAI,CAACF,IAAI,CAAC,CAAC,CAAC;IAC7C;EACF;EAEA,OAAON,SAAS;AAClB;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeU,qBAAqBA,CACzCC,QAAgB,EAChBC,UAIS,EACQ;EACjB,IAAI;IACF,MAAMC,MAAM,GAAG,MAAM7B,UAAU,CAAC8B,iBAAiB,CAACH,QAAQ,CAAC;IAC3D,IAAIC,UAAU,EAAE;MACd,MAAMG,UAAU,GAAG,MAAMnC,IAAI,CAAC+B,QAAQ,CAAC;MACvC,MAAMK,KAAK,GAAGD,UAAU,CAACE,IAAI;MAC7BL,UAAU,CAACI,KAAK,EAAEA,KAAK,EAAE,GAAG,CAAC;IAC/B;IACA,OAAOH,MAAM,CAACK,WAAW,CAAC,CAAC;EAC7B,CAAC,CAAC,OAAO9B,KAAK,EAAE;IACd,MAAM,IAAI+B,KAAK,CAAC,iCAAiC/B,KAAK,EAAE,CAAC;EAC3D;AACF;;AAEA;AACA;AACA;AACA,OAAO,eAAegC,gBAAgBA,CACpCT,QAAgB,EAChBU,gBAAwB,EACxBT,UAIS,EACkB;EAC3B,IAAI;IACF,MAAMU,cAAc,GAAG,MAAMZ,qBAAqB,CAACC,QAAQ,EAAEC,UAAU,CAAC;IACxE;IACA,IAAIU,cAAc,CAACJ,WAAW,CAAC,CAAC,KAAKG,gBAAgB,CAACH,WAAW,CAAC,CAAC,EAAE;MACnE,OAAO,IAAIjC,gBAAgB,CACzB,KAAK,EACL,mBAAmB,EACnB,+BAA+BoC,gBAAgB,SAASC,cAAc,EACxE,CAAC;IACH;IACA,OAAO,IAAIrC,gBAAgB,CAAC,IAAI,CAAC;EACnC,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd,OAAO,IAAIH,gBAAgB,CACzB,KAAK,EACL,iBAAiB,EACjB,gCAAgCG,KAAK,EACvC,CAAC;EACH;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAemC,sBAAsBA,CAC1CC,QAAgB,EAChBC,SAAiB,EACU;EAC3B,IAAI;IACF,MAAMC,SAAS,GAAG,MAAM7C,MAAM,CAAC2C,QAAQ,CAAC;IACxC,IAAI,CAACE,SAAS,EAAE;MACd,OAAO,IAAIzC,gBAAgB,CACzB,KAAK,EACL,eAAe,EACf,mCAAmCuC,QAAQ,EAC7C,CAAC;IACH;IAEA,MAAMG,eAAe,GAAIhC,IAAY,IAAK;MACxC,MAAMiC,KAAK,GAAGjC,IAAI,CAACuB,WAAW,CAAC,CAAC;MAChC,OACEU,KAAK,CAACC,QAAQ,CAAC,OAAO,CAAC,IACvBD,KAAK,CAACC,QAAQ,CAAC,MAAM,CAAC,IACtBD,KAAK,CAACC,QAAQ,CAAC,MAAM,CAAC,IACtBD,KAAK,CAACC,QAAQ,CAAC,OAAO,CAAC;IAE3B,CAAC;IAED,MAAMC,qBAAqB,GAAG,MAAAA,CAC5BC,GAAW,EACXC,KAAK,GAAG,CAAC,EACTC,QAAQ,GAAG,CAAC,KACmB;MAC/B,IAAID,KAAK,GAAGC,QAAQ,EAAE,OAAO,EAAE;MAE/B,MAAMzC,OAAO,GAAG,MAAMV,OAAO,CAACiD,GAAG,CAAC;MAClC,MAAMG,KAAwB,GAAG,EAAE;MAEnC,KAAK,MAAMzC,KAAK,IAAID,OAAO,EAAE;QAC3B,IAAIC,KAAK,CAACI,WAAW,CAAC,CAAC,EAAE;UACvB,MAAMsC,OAAO,GAAG1C,KAAK,CAAC2C,IAAI;UAC1B,IAAID,OAAO,IAAI,IAAI,EAAE;YACnB,MAAME,MAAM,GAAG,MAAMP,qBAAqB,CACxCK,OAAO,EACPH,KAAK,GAAG,CAAC,EACTC,QACF,CAAC;YACDC,KAAK,CAACI,IAAI,CAAC,GAAGD,MAAM,CAAC;UACvB;QACF,CAAC,MAAM;UACLH,KAAK,CAACI,IAAI,CAAC7C,KAAK,CAAC;QACnB;MACF;MAEA,OAAOyC,KAAK;IACd,CAAC;IAED,MAAM1C,OAAO,GAAG,MAAMV,OAAO,CAAC0C,QAAQ,CAAC;IACvC,MAAMe,WAAW,GAAG/C,OAAO,CAACY,MAAM,CAAEX,KAAK,IAAK,CAACA,KAAK,CAACI,WAAW,CAAC,CAAC,CAAC;IACnE,MAAM2C,OAAO,GAAGhD,OAAO,CAACY,MAAM,CAAEX,KAAK,IAAKA,KAAK,CAACI,WAAW,CAAC,CAAC,CAAC;IAE9D,IAAI0C,WAAW,CAACE,MAAM,KAAK,CAAC,IAAID,OAAO,CAACC,MAAM,KAAK,CAAC,EAAE;MACpD,OAAO,IAAIxD,gBAAgB,CACzB,KAAK,EACL,eAAe,EACf,0CAA0CuC,QAAQ,EACpD,CAAC;IACH;IAEA,IAAIkB,iBAAiB,GAAGH,WAAW,CAACI,IAAI,CAAEC,IAAI,IAC5CjB,eAAe,CAACiB,IAAI,CAACjD,IAAI,IAAI,EAAE,CACjC,CAAC;IAED,IAAI,CAAC+C,iBAAiB,EAAE;MACtB,MAAMG,WAAW,GAAG,MAAMf,qBAAqB,CAACN,QAAQ,CAAC;MACzDkB,iBAAiB,GAAGG,WAAW,CAACF,IAAI,CAAEC,IAAI,IACxCjB,eAAe,CAACiB,IAAI,CAACjD,IAAI,IAAI,EAAE,CACjC,CAAC;IACH;IAEA,IAAI,CAAC+C,iBAAiB,EAAE;MACtB,OAAO,IAAIzD,gBAAgB,CACzB,KAAK,EACL,eAAe,EACf,kFAAkFuC,QAAQ,EAC5F,CAAC;IACH;IAEA,OAAO,IAAIvC,gBAAgB,CAAC,IAAI,CAAC;EACnC,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd,OAAO,IAAIH,gBAAgB,CACzB,KAAK,EACL,eAAe,EACf,uCAAuCG,KAAK,EAC9C,CAAC;EACH;AACF;;AAEA;AACA,SAAS0D,qBAAqBA,CAACnD,IAAY,EAAW;EACpD,MAAMiC,KAAK,GAAGjC,IAAI,CAACuB,WAAW,CAAC,CAAC;EAChC,OAAOU,KAAK,CAACC,QAAQ,CAAC,OAAO,CAAC,IAAID,KAAK,CAACC,QAAQ,CAAC,MAAM,CAAC;AAC1D;;AAEA;AACA;AACA;AACA;AACA,eAAekB,qBAAqBA,CAAChB,GAAW,EAAoB;EAClE,MAAMvC,OAAO,GAAG,MAAMV,OAAO,CAACiD,GAAG,CAAC;EAClC,MAAMG,KAAK,GAAG1C,OAAO,CAACY,MAAM,CAAE4C,CAAC,IAAK,CAACA,CAAC,CAACnD,WAAW,CAAC,CAAC,CAAC;EACrD,IAAIqC,KAAK,CAACS,IAAI,CAAEM,CAAC,IAAKH,qBAAqB,CAACG,CAAC,CAACtD,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI;EACvE,MAAM6C,OAAO,GAAGhD,OAAO,CAACY,MAAM,CAAE4C,CAAC,IAAKA,CAAC,CAACnD,WAAW,CAAC,CAAC,CAAC;EACtD,KAAK,MAAMqD,GAAG,IAAIV,OAAO,EAAE;IACzB,MAAML,OAAO,GAAGe,GAAG,EAAEd,IAAI;IACzB,IAAID,OAAO,IAAI,IAAI,EAAE;IACrB,MAAMgB,UAAU,GAAG,MAAMrE,OAAO,CAACqD,OAAO,CAAC;IACzC,MAAMiB,QAAQ,GAAGD,UAAU,CAAC/C,MAAM,CAAE4C,CAAC,IAAK,CAACA,CAAC,CAACnD,WAAW,CAAC,CAAC,CAAC;IAC3D,IAAIuD,QAAQ,CAACT,IAAI,CAAEM,CAAC,IAAKH,qBAAqB,CAACG,CAAC,CAACtD,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI;EAC5E;EACA,OAAO,KAAK;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe0D,qBAAqBA,CACzCC,UAAkB,EACD;EACjB,IAAI;IACF,MAAM5B,SAAS,GAAG,MAAM7C,MAAM,CAACyE,UAAU,CAAC;IAC1C,IAAI,CAAC5B,SAAS,EAAE,OAAO4B,UAAU;IAEjC,MAAM9D,OAAO,GAAG,MAAMV,OAAO,CAACwE,UAAU,CAAC;IACzC,MAAMC,aAAa,GAAG/D,OAAO,CAACY,MAAM,CAAE4C,CAAC,IAAK,CAACA,CAAC,CAACnD,WAAW,CAAC,CAAC,CAAC;IAC7D,IAAI0D,aAAa,CAACZ,IAAI,CAAEM,CAAC,IAAKH,qBAAqB,CAACG,CAAC,CAACtD,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE;MAClE,OAAO2D,UAAU;IACnB;IAEA,MAAMd,OAAO,GAAGhD,OAAO,CAACY,MAAM,CAAE4C,CAAC,IAAKA,CAAC,CAACnD,WAAW,CAAC,CAAC,CAAC;IACtD,MAAM2D,WAAW,GAAGhB,OAAO,CAAC,CAAC,CAAC;IAC9B,MAAMiB,YAAY,GAAGjB,OAAO,CAACC,MAAM,KAAK,CAAC,GAAGe,WAAW,GAAGE,SAAS;IAEnE,IAAID,YAAY,IAAI,IAAI,EAAE;MACxB,MAAME,aAAa,GAAGF,YAAY,CAACrB,IAAI;MACvC,IACEuB,aAAa,IAAI,IAAI,KACpB,MAAMZ,qBAAqB,CAACY,aAAa,CAAC,CAAC,EAC5C;QACA,OAAOA,aAAa;MACtB;IACF;IAEA,OAAOL,UAAU;EACnB,CAAC,CAAC,MAAM;IACN,OAAOA,UAAU;EACnB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeM,qBAAqBA,CAAA,EAAoB;EAC7D,IAAI;IACF;IACA,MAAMlC,SAAS,GAAG,MAAM7C,MAAM,CAACF,qBAAqB,CAAC;IACrD,IAAI+C,SAAS,EAAE;MACb;MACA;MACA,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAClC;EACF,CAAC,CAAC,OAAOtC,KAAK,EAAE;IACdyE,OAAO,CAACC,IAAI,CAAC,6BAA6B,EAAE1E,KAAK,CAAC;EACpD;;EAEA;EACA,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AAChC;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAe2E,cAAcA,CAClCC,aAAqB,EACM;EAC3B,IAAI;IACF,MAAMC,SAAS,GAAG,MAAML,qBAAqB,CAAC,CAAC;IAC/C,MAAMM,MAAM,GAAGF,aAAa,GAAG,GAAG,CAAC,CAAC;IACpC,MAAMG,aAAa,GAAGH,aAAa,GAAGE,MAAM;IAE5C,IAAID,SAAS,GAAGE,aAAa,EAAE;MAC7B,MAAMC,WAAW,GAAG,CAACH,SAAS,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,EAAEI,OAAO,CAAC,CAAC,CAAC;MACjE,MAAMC,UAAU,GAAG,CAACH,aAAa,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,EAAEE,OAAO,CAAC,CAAC,CAAC;MACpE,OAAO,IAAIpF,gBAAgB,CACzB,KAAK,EACL,yBAAyB,EACzB,uCAAuCmF,WAAW,iBAAiBE,UAAU,IAC/E,CAAC;IACH;IAEA,OAAO,IAAIrF,gBAAgB,CAAC,IAAI,CAAC;EACnC,CAAC,CAAC,OAAOG,KAAK,EAAE;IACd,OAAO,IAAIH,gBAAgB,CACzB,KAAK,EACL,yBAAyB,EACzB,+BAA+BG,KAAK,EACtC,CAAC;EACH;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASmF,2BAA2BA,CACzC9C,SAAiB,EACjB+C,MAAgB,EACV;EACN;AAAA;;AAGF;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,2BAA2BA,CAAChD,SAAiB,EAAY;EACvE;EACA,OAAO,EAAE;AACX","ignoreList":[]}
@@ -26,7 +26,9 @@ export async function extractTarBz2(sourcePath, targetPath, force = true, onProg
26
26
  if (signal) {
27
27
  const onAbort = () => {
28
28
  try {
29
- SherpaOnnx.cancelExtractTarBz2();
29
+ // Use per-path cancel so aborting this extraction doesn't affect
30
+ // other extractions that may be running in parallel.
31
+ SherpaOnnx.cancelExtractBySourcePath(sourcePath);
30
32
  } catch {
31
33
  // Ignore cancel errors to avoid crashing on abort.
32
34
  }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DeviceEventEmitter","SherpaOnnx","extractTarBz2","sourcePath","targetPath","force","onProgress","signal","subscription","removeAbortListener","aborted","abortError","Error","name","addListener","event","safePercent","Math","max","min","percent","onAbort","cancelExtractBySourcePath","addEventListener","removeEventListener","result","success","message","reason","error","test","remove"],"sourceRoot":"../../../src","sources":["extraction/extractTarBz2.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,cAAc;AACjD,OAAOC,UAAU,MAAM,wBAAqB;AAe5C,OAAO,eAAeC,aAAaA,CACjCC,UAAkB,EAClBC,UAAkB,EAClBC,KAAK,GAAG,IAAI,EACZC,UAAkD,EAClDC,MAAoB,EACI;EACxB,IAAIC,YAA2C,GAAG,IAAI;EACtD,IAAIC,mBAAwC,GAAG,IAAI;EAEnD,IAAIF,MAAM,EAAEG,OAAO,EAAE;IACnB,MAAMC,UAAU,GAAG,IAAIC,KAAK,CAAC,oBAAoB,CAAC;IAClDD,UAAU,CAACE,IAAI,GAAG,YAAY;IAC9B,MAAMF,UAAU;EAClB;EAEA,IAAIL,UAAU,EAAE;IACdE,YAAY,GAAGR,kBAAkB,CAACc,WAAW,CAC3C,uBAAuB,EACtBC,KAAqD,IAAK;MACzD;MACA,IAAIA,KAAK,CAACZ,UAAU,IAAI,IAAI,IAAIY,KAAK,CAACZ,UAAU,KAAKA,UAAU,EAAE;QAC/D;MACF;MACA,MAAMa,WAAW,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,GAAG,EAAEJ,KAAK,CAACK,OAAO,CAAC,CAAC;MAC7Dd,UAAU,CAAC;QAAE,GAAGS,KAAK;QAAEK,OAAO,EAAEJ;MAAY,CAAC,CAAC;IAChD,CACF,CAAC;EACH;EAEA,IAAIT,MAAM,EAAE;IACV,MAAMc,OAAO,GAAGA,CAAA,KAAM;MACpB,IAAI;QACF;QACA;QACApB,UAAU,CAACqB,yBAAyB,CAACnB,UAAU,CAAC;MAClD,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ,CAAC;IACDI,MAAM,CAACgB,gBAAgB,CAAC,OAAO,EAAEF,OAAO,CAAC;IACzCZ,mBAAmB,GAAGA,CAAA,KAAMF,MAAM,CAACiB,mBAAmB,CAAC,OAAO,EAAEH,OAAO,CAAC;EAC1E;EAEA,IAAI;IACF,MAAMI,MAAM,GAAG,MAAMxB,UAAU,CAACC,aAAa,CAC3CC,UAAU,EACVC,UAAU,EACVC,KACF,CAAC;IACD,IAAI,CAACoB,MAAM,CAACC,OAAO,EAAE;MACnB,MAAMC,OAAO,GAAGF,MAAM,CAACG,MAAM,IAAI,mBAAmB;MACpD,MAAMC,KAAK,GAAG,IAAIjB,KAAK,CAACe,OAAO,CAAC;MAChC,IAAIpB,MAAM,EAAEG,OAAO,IAAI,SAAS,CAACoB,IAAI,CAACH,OAAO,CAAC,EAAE;QAC9CE,KAAK,CAAChB,IAAI,GAAG,YAAY;MAC3B;MACA,MAAMgB,KAAK;IACb;IACA,OAAOJ,MAAM;EACf,CAAC,SAAS;IACRjB,YAAY,EAAEuB,MAAM,CAAC,CAAC;IACtBtB,mBAAmB,GAAG,CAAC;EACzB;AACF","ignoreList":[]}