react-native-sherpa-onnx 0.3.6 → 0.3.8

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 (228) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +92 -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 +344 -152
  15. package/android/prebuilt-versions.gradle +1 -1
  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 +2 -2
  21. package/android/src/main/cpp/jni/audio/sherpa-onnx-audio-convert-jni.cpp +268 -2
  22. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-tts.cpp +37 -6
  23. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect.h +9 -1
  24. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-tts-wrapper.cpp +7 -0
  25. package/android/src/main/cpp/jni/model_detect/sherpa-onnx-validate-tts.cpp +18 -2
  26. package/android/src/main/java/com/sherpaonnx/SherpaOnnxArchiveHelper.kt +40 -10
  27. package/android/src/main/java/com/sherpaonnx/SherpaOnnxModule.kt +99 -0
  28. package/android/src/main/java/com/sherpaonnx/SherpaOnnxOnlineSttHelper.kt +4 -1
  29. package/android/src/main/java/com/sherpaonnx/SherpaOnnxTtsHelper.kt +127 -97
  30. package/ios/Resources/model_licenses/asr-models-license-status.csv +409 -0
  31. package/ios/Resources/model_licenses/qnn-asr-models-license-status.csv +695 -0
  32. package/ios/Resources/model_licenses/tts-models-license-status.csv +596 -0
  33. package/ios/SherpaOnnx+OnlineSTT.mm +2 -0
  34. package/ios/SherpaOnnx+PcmLiveStream.mm +2 -29
  35. package/ios/SherpaOnnx+TTS.mm +179 -20
  36. package/ios/SherpaOnnx.mm +54 -0
  37. package/ios/SherpaOnnxAudioConvert.h +10 -0
  38. package/ios/SherpaOnnxAudioConvert.mm +257 -1
  39. package/ios/archive/sherpa-onnx-archive-helper.h +3 -0
  40. package/ios/archive/sherpa-onnx-archive-helper.mm +39 -6
  41. package/ios/model_detect/sherpa-onnx-model-detect-tts.mm +49 -6
  42. package/ios/model_detect/sherpa-onnx-model-detect.h +9 -1
  43. package/ios/model_detect/sherpa-onnx-validate-tts.mm +18 -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 +158 -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-types.js +2 -0
  56. package/lib/module/download/background-downloader-types.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 +438 -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 -4
  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 +268 -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/{download → extraction}/extractTarZst.js +3 -1
  92. package/lib/module/extraction/extractTarZst.js.map +1 -0
  93. package/lib/module/extraction/index.js +3 -4
  94. package/lib/module/extraction/index.js.map +1 -1
  95. package/lib/module/index.js +1 -1
  96. package/lib/module/index.js.map +1 -1
  97. package/lib/module/licenses.js +63 -0
  98. package/lib/module/licenses.js.map +1 -0
  99. package/lib/module/stt/index.js +16 -2
  100. package/lib/module/stt/index.js.map +1 -1
  101. package/lib/module/stt/streaming.js +2 -0
  102. package/lib/module/stt/streaming.js.map +1 -1
  103. package/lib/module/stt/streamingTypes.js.map +1 -1
  104. package/lib/module/stt/types.js.map +1 -1
  105. package/lib/module/tts/index.js +21 -3
  106. package/lib/module/tts/index.js.map +1 -1
  107. package/lib/module/tts/streaming.js +5 -1
  108. package/lib/module/tts/streaming.js.map +1 -1
  109. package/lib/module/tts/types.js +4 -1
  110. package/lib/module/tts/types.js.map +1 -1
  111. package/lib/module/utils.js +16 -1
  112. package/lib/module/utils.js.map +1 -1
  113. package/lib/typescript/src/NativeSherpaOnnx.d.ts +34 -6
  114. package/lib/typescript/src/NativeSherpaOnnx.d.ts.map +1 -1
  115. package/lib/typescript/src/audio/index.d.ts +10 -0
  116. package/lib/typescript/src/audio/index.d.ts.map +1 -1
  117. package/lib/typescript/src/download/ModelDownloadManager.d.ts +11 -108
  118. package/lib/typescript/src/download/ModelDownloadManager.d.ts.map +1 -1
  119. package/lib/typescript/src/download/activeModelOperations.d.ts +6 -0
  120. package/lib/typescript/src/download/activeModelOperations.d.ts.map +1 -0
  121. package/lib/typescript/src/download/background-downloader-types.d.ts +64 -0
  122. package/lib/typescript/src/download/background-downloader-types.d.ts.map +1 -0
  123. package/lib/typescript/src/download/bulkPurge.d.ts +14 -0
  124. package/lib/typescript/src/download/bulkPurge.d.ts.map +1 -0
  125. package/lib/typescript/src/download/checksumPrompt.d.ts +3 -0
  126. package/lib/typescript/src/download/checksumPrompt.d.ts.map +1 -0
  127. package/lib/typescript/src/download/constants.d.ts +5 -0
  128. package/lib/typescript/src/download/constants.d.ts.map +1 -0
  129. package/lib/typescript/src/download/downloadEvents.d.ts +6 -0
  130. package/lib/typescript/src/download/downloadEvents.d.ts.map +1 -0
  131. package/lib/typescript/src/download/downloadTask.d.ts +30 -0
  132. package/lib/typescript/src/download/downloadTask.d.ts.map +1 -0
  133. package/lib/typescript/src/download/ensureModel.d.ts +26 -0
  134. package/lib/typescript/src/download/ensureModel.d.ts.map +1 -0
  135. package/lib/typescript/src/download/index.d.ts +7 -7
  136. package/lib/typescript/src/download/index.d.ts.map +1 -1
  137. package/lib/typescript/src/download/localModels.d.ts +15 -0
  138. package/lib/typescript/src/download/localModels.d.ts.map +1 -0
  139. package/lib/typescript/src/download/modelExtraction.d.ts +36 -0
  140. package/lib/typescript/src/download/modelExtraction.d.ts.map +1 -0
  141. package/lib/typescript/src/download/paths.d.ts +28 -0
  142. package/lib/typescript/src/download/paths.d.ts.map +1 -0
  143. package/lib/typescript/src/download/postDownloadProcessing.d.ts +19 -0
  144. package/lib/typescript/src/download/postDownloadProcessing.d.ts.map +1 -0
  145. package/lib/typescript/src/download/protectedModelKeys.d.ts +6 -0
  146. package/lib/typescript/src/download/protectedModelKeys.d.ts.map +1 -0
  147. package/lib/typescript/src/download/registry.d.ts +14 -0
  148. package/lib/typescript/src/download/registry.d.ts.map +1 -0
  149. package/lib/typescript/src/download/retry.d.ts +15 -0
  150. package/lib/typescript/src/download/retry.d.ts.map +1 -0
  151. package/lib/typescript/src/download/types.d.ts +96 -0
  152. package/lib/typescript/src/download/types.d.ts.map +1 -0
  153. package/lib/typescript/src/download/validation.d.ts +19 -0
  154. package/lib/typescript/src/download/validation.d.ts.map +1 -1
  155. package/lib/typescript/src/extraction/extractTarBz2.d.ts.map +1 -0
  156. package/lib/typescript/src/extraction/extractTarZst.d.ts.map +1 -0
  157. package/lib/typescript/src/index.d.ts +1 -0
  158. package/lib/typescript/src/index.d.ts.map +1 -1
  159. package/lib/typescript/src/licenses.d.ts +10 -0
  160. package/lib/typescript/src/licenses.d.ts.map +1 -0
  161. package/lib/typescript/src/stt/index.d.ts +4 -1
  162. package/lib/typescript/src/stt/index.d.ts.map +1 -1
  163. package/lib/typescript/src/stt/streaming.d.ts.map +1 -1
  164. package/lib/typescript/src/stt/streamingTypes.d.ts +5 -0
  165. package/lib/typescript/src/stt/streamingTypes.d.ts.map +1 -1
  166. package/lib/typescript/src/stt/types.d.ts +3 -1
  167. package/lib/typescript/src/stt/types.d.ts.map +1 -1
  168. package/lib/typescript/src/tts/index.d.ts +4 -2
  169. package/lib/typescript/src/tts/index.d.ts.map +1 -1
  170. package/lib/typescript/src/tts/streaming.d.ts.map +1 -1
  171. package/lib/typescript/src/tts/types.d.ts +12 -6
  172. package/lib/typescript/src/tts/types.d.ts.map +1 -1
  173. package/lib/typescript/src/utils.d.ts +5 -0
  174. package/lib/typescript/src/utils.d.ts.map +1 -1
  175. package/package.json +6 -1
  176. package/scripts/{check-model-csvs.sh → ci/check-model-csvs.sh} +9 -2
  177. package/scripts/ci/collect_all_sherpa_model_streams.sh +101 -0
  178. package/scripts/ci/collect_one_sherpa_release_stream.sh +189 -0
  179. package/scripts/ci/sherpa_asr_model_release_streams.json +21 -0
  180. package/scripts/ci/sherpa_tts_model_release_streams.json +13 -0
  181. package/scripts/ci/update_model_license_csv.sh +765 -0
  182. package/scripts/setup-ios-framework.sh +14 -11
  183. package/scripts/update_commercial_use.js +73 -0
  184. package/src/NativeSherpaOnnx.ts +37 -6
  185. package/src/audio/index.ts +20 -0
  186. package/src/download/ModelDownloadManager.ts +57 -1343
  187. package/src/download/activeModelOperations.ts +38 -0
  188. package/src/download/background-downloader-types.ts +73 -0
  189. package/src/download/bulkPurge.ts +102 -0
  190. package/src/download/checksumPrompt.ts +25 -0
  191. package/src/download/constants.ts +5 -0
  192. package/src/download/downloadEvents.ts +55 -0
  193. package/src/download/downloadTask.ts +565 -0
  194. package/src/download/ensureModel.ts +124 -0
  195. package/src/download/index.ts +21 -4
  196. package/src/download/localModels.ts +234 -0
  197. package/src/download/modelExtraction.ts +244 -0
  198. package/src/download/paths.ts +134 -0
  199. package/src/download/postDownloadProcessing.ts +292 -0
  200. package/src/download/protectedModelKeys.ts +30 -0
  201. package/src/download/registry.ts +405 -0
  202. package/src/download/retry.ts +76 -0
  203. package/src/download/types.ts +120 -0
  204. package/src/download/validation.ts +114 -8
  205. package/src/{download → extraction}/extractTarBz2.ts +3 -1
  206. package/src/{download → extraction}/extractTarZst.ts +3 -1
  207. package/src/extraction/index.ts +3 -7
  208. package/src/index.tsx +1 -0
  209. package/src/licenses.ts +100 -0
  210. package/src/stt/index.ts +20 -2
  211. package/src/stt/streaming.ts +3 -0
  212. package/src/stt/streamingTypes.ts +5 -0
  213. package/src/stt/types.ts +3 -1
  214. package/src/tts/index.ts +33 -2
  215. package/src/tts/streaming.ts +12 -0
  216. package/src/tts/types.ts +15 -5
  217. package/src/utils.ts +22 -1
  218. package/third_party/sherpa-onnx-prebuilt/ANDROID_RELEASE_TAG +1 -1
  219. package/third_party/sherpa-onnx-prebuilt/IOS_RELEASE_TAG +1 -1
  220. package/android/src/main/cpp/jni/tts/sherpa-onnx-tts-zipvoice-jni.cpp +0 -301
  221. package/android/src/main/java/com/sherpaonnx/ZipvoiceTtsWrapper.kt +0 -187
  222. package/lib/module/download/extractTarBz2.js.map +0 -1
  223. package/lib/module/download/extractTarZst.js.map +0 -1
  224. package/lib/typescript/src/download/extractTarBz2.d.ts.map +0 -1
  225. package/lib/typescript/src/download/extractTarZst.d.ts.map +0 -1
  226. package/scripts/check-qnn-support.sh +0 -78
  227. /package/lib/typescript/src/{download → extraction}/extractTarBz2.d.ts +0 -0
  228. /package/lib/typescript/src/{download → extraction}/extractTarZst.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,268 @@
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
+ if (lower.includes('supertonic')) return 'supertonic';
54
+ return 'unknown';
55
+ }
56
+ function deriveQuantization(id) {
57
+ const lower = id.toLowerCase();
58
+ if (lower.includes('int8') && lower.includes('quant')) {
59
+ return 'int8-quantized';
60
+ }
61
+ if (lower.includes('int8')) return 'int8';
62
+ if (lower.includes('fp16')) return 'fp16';
63
+ return 'unknown';
64
+ }
65
+ function deriveSizeTier(id) {
66
+ const lower = id.toLowerCase();
67
+ if (lower.includes('tiny')) return 'tiny';
68
+ if (lower.includes('small')) return 'small';
69
+ if (lower.includes('medium')) return 'medium';
70
+ if (lower.includes('large')) return 'large';
71
+ if (lower.includes('low')) return 'small';
72
+ return 'unknown';
73
+ }
74
+ function deriveLanguages(id) {
75
+ const tokens = id.split(/[-_]+/g);
76
+ const languages = new Set();
77
+ for (const token of tokens) {
78
+ if (/^[a-z]{2}$/.test(token)) {
79
+ languages.add(token);
80
+ continue;
81
+ }
82
+ if (/^[a-z]{2}[A-Z]{2}$/.test(token)) {
83
+ languages.add(token.slice(0, 2).toLowerCase());
84
+ continue;
85
+ }
86
+ if (/^[a-z]{2}-[A-Z]{2}$/.test(token)) {
87
+ languages.add(token.slice(0, 2).toLowerCase());
88
+ }
89
+ }
90
+ return Array.from(languages);
91
+ }
92
+ function getAssetExtension(name) {
93
+ if (name.endsWith(MODEL_ARCHIVE_EXT)) return 'tar.bz2';
94
+ if (name.endsWith(MODEL_ONNX_EXT)) return 'onnx';
95
+ return null;
96
+ }
97
+ function stripAssetExtension(name, ext) {
98
+ const suffix = `.${ext}`;
99
+ return name.endsWith(suffix) ? name.slice(0, -suffix.length) : name;
100
+ }
101
+ function isAssetSupportedForCategory(category, name, ext) {
102
+ const lower = name.toLowerCase();
103
+ switch (category) {
104
+ case ModelCategory.Tts:
105
+ return ext === 'tar.bz2';
106
+ case ModelCategory.Stt:
107
+ return ext === 'tar.bz2' && !lower.includes('vad');
108
+ case ModelCategory.Vad:
109
+ return ext === 'onnx' && lower.includes('vad');
110
+ case ModelCategory.Diarization:
111
+ return ext === 'tar.bz2';
112
+ case ModelCategory.Enhancement:
113
+ return ext === 'onnx';
114
+ case ModelCategory.Separation:
115
+ return ext === 'tar.bz2' || ext === 'onnx';
116
+ case ModelCategory.Qnn:
117
+ return ext === 'tar.bz2' && lower.includes('sherpa-onnx-qnn') && lower.includes('binary') && lower.includes('seconds');
118
+ default:
119
+ return false;
120
+ }
121
+ }
122
+ function parseDigestSha256(value) {
123
+ if (!value) return undefined;
124
+ const match = value.match(/^sha256:([a-f0-9]{64})$/i);
125
+ return match?.[1]?.toLowerCase();
126
+ }
127
+ function toTtsModelMeta(asset, archiveExt) {
128
+ if (archiveExt !== 'tar.bz2') return null;
129
+ const id = stripAssetExtension(asset.name, archiveExt);
130
+ const type = deriveType(id);
131
+ if (type === 'unknown') {
132
+ console.warn('SherpaOnnxModelList: Unsupported model', id);
133
+ }
134
+ return {
135
+ id,
136
+ displayName: deriveDisplayName(id),
137
+ type,
138
+ languages: deriveLanguages(id),
139
+ quantization: deriveQuantization(id),
140
+ sizeTier: deriveSizeTier(id),
141
+ downloadUrl: asset.browser_download_url,
142
+ archiveExt,
143
+ bytes: asset.size,
144
+ sha256: parseDigestSha256(asset.digest),
145
+ category: ModelCategory.Tts
146
+ };
147
+ }
148
+ function toGenericModelMeta(category, asset, archiveExt) {
149
+ const id = stripAssetExtension(asset.name, archiveExt);
150
+ return {
151
+ id,
152
+ displayName: deriveDisplayName(id),
153
+ downloadUrl: asset.browser_download_url,
154
+ archiveExt,
155
+ bytes: asset.size,
156
+ sha256: parseDigestSha256(asset.digest),
157
+ category
158
+ };
159
+ }
160
+ function toModelMeta(category, asset) {
161
+ const archiveExt = getAssetExtension(asset.name);
162
+ if (!archiveExt) return null;
163
+ if (!isAssetSupportedForCategory(category, asset.name, archiveExt)) {
164
+ return null;
165
+ }
166
+ if (category === ModelCategory.Tts) {
167
+ return toTtsModelMeta(asset, archiveExt);
168
+ }
169
+ return toGenericModelMeta(category, asset, archiveExt);
170
+ }
171
+ async function loadCacheFromDisk(category) {
172
+ const memoryCache = memoryCacheByCategory[category];
173
+ if (memoryCache) return memoryCache;
174
+ const cachePath = getCachePath(category);
175
+ const existsResult = await exists(cachePath);
176
+ if (!existsResult) return null;
177
+ const raw = await readFile(cachePath, 'utf8');
178
+ const parsed = JSON.parse(raw);
179
+ memoryCacheByCategory[category] = parsed;
180
+ return parsed;
181
+ }
182
+ async function saveCache(category, payload) {
183
+ await mkdir(getCacheDir());
184
+ await writeFile(getCachePath(category), JSON.stringify(payload), 'utf8');
185
+ memoryCacheByCategory[category] = payload;
186
+ }
187
+ function isCacheFresh(payload, ttlMinutes) {
188
+ const updated = new Date(payload.lastUpdated).getTime();
189
+ if (!updated) return false;
190
+ const ageMs = Date.now() - updated;
191
+ return ageMs < ttlMinutes * 60 * 1000;
192
+ }
193
+ export async function listModelsByCategory(category) {
194
+ const cache = await loadCacheFromDisk(category);
195
+ return cache?.models ?? [];
196
+ }
197
+ export async function refreshModelsByCategory(category, options) {
198
+ const ttl = options?.cacheTtlMinutes ?? CACHE_TTL_MINUTES;
199
+ const cached = await loadCacheFromDisk(category);
200
+ if (!options?.forceRefresh && cached && isCacheFresh(cached, ttl)) {
201
+ return cached.models;
202
+ }
203
+ try {
204
+ const body = await retryWithBackoff(async () => {
205
+ const response = await fetch(getReleaseUrl(category));
206
+ if (!response.ok) {
207
+ throw new Error(`Failed to fetch models: ${response.status}`);
208
+ }
209
+ return response.json();
210
+ }, {
211
+ maxRetries: options?.maxRetries ?? 3,
212
+ initialDelayMs: 1000,
213
+ signal: options?.signal
214
+ });
215
+ const assets = Array.isArray(body?.assets) ? body.assets : [];
216
+ const models = assets.map(asset => toModelMeta(category, {
217
+ name: asset.name,
218
+ size: asset.size,
219
+ browser_download_url: asset.browser_download_url,
220
+ digest: asset.digest
221
+ })).filter(model => Boolean(model));
222
+ const checksums = await fetchChecksumsFromRelease(category);
223
+ for (const model of models) {
224
+ const archiveFilename = getArchiveFilename(model.id, model.archiveExt);
225
+ const sha256 = checksums.get(archiveFilename);
226
+ if (sha256) {
227
+ model.sha256 = sha256;
228
+ } else if (model.sha256) {
229
+ model.sha256 = model.sha256.toLowerCase();
230
+ }
231
+ }
232
+ const payload = {
233
+ lastUpdated: new Date().toISOString(),
234
+ models
235
+ };
236
+ await saveCache(category, payload);
237
+ emitModelsListUpdated(category, models);
238
+ return models;
239
+ } catch (error) {
240
+ if (cached) {
241
+ console.warn(`Failed to refresh models for ${category}, using cached data:`, error);
242
+ return cached.models;
243
+ }
244
+ throw error;
245
+ }
246
+ }
247
+ export async function getModelsCacheStatusByCategory(category) {
248
+ const cached = await loadCacheFromDisk(category);
249
+ if (!cached) {
250
+ return {
251
+ lastUpdated: null,
252
+ source: 'cache'
253
+ };
254
+ }
255
+ return {
256
+ lastUpdated: cached.lastUpdated,
257
+ source: 'cache'
258
+ };
259
+ }
260
+ export async function getModelByIdByCategory(category, id) {
261
+ const models = await listModelsByCategory(category);
262
+ return models.find(model => model.id === id) ?? null;
263
+ }
264
+ export function clearMemoryCacheForCategory(category) {
265
+ delete memoryCacheByCategory[category];
266
+ delete checksumCacheByCategory[category];
267
+ }
268
+ //# 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":[]}
@@ -25,7 +25,9 @@ export async function extractTarZst(sourcePath, targetPath, force = true, onProg
25
25
  if (signal) {
26
26
  const onAbort = () => {
27
27
  try {
28
- SherpaOnnx.cancelExtractTarZst();
28
+ // Use per-path cancel so aborting this extraction doesn't affect
29
+ // other extractions that may be running in parallel.
30
+ SherpaOnnx.cancelExtractBySourcePath(sourcePath);
29
31
  } catch {
30
32
  // Ignore cancel errors to avoid crashing on abort.
31
33
  }