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.
- package/LICENSE +1 -0
- package/README.md +90 -21
- package/SherpaOnnx.podspec +3 -0
- package/THIRD_PARTY_LICENSES/README.md +62 -0
- package/THIRD_PARTY_LICENSES/ffmpeg.txt +502 -0
- package/THIRD_PARTY_LICENSES/libarchive.txt +65 -0
- package/THIRD_PARTY_LICENSES/nvidia_omla.txt +181 -0
- package/THIRD_PARTY_LICENSES/onnxruntime.txt +21 -0
- package/THIRD_PARTY_LICENSES/opus.txt +44 -0
- package/THIRD_PARTY_LICENSES/sherpa-onnx.txt +201 -0
- package/THIRD_PARTY_LICENSES/shine.txt +482 -0
- package/THIRD_PARTY_LICENSES/zstd.txt +30 -0
- package/android/build.gradle +7 -3
- package/android/prebuilt-download.gradle +345 -153
- package/android/prebuilt-versions.gradle +2 -2
- package/android/src/main/assets/model_licenses/asr-models-license-status.csv +409 -0
- package/android/src/main/assets/model_licenses/qnn-asr-models-license-status.csv +695 -0
- package/android/src/main/assets/model_licenses/tts-models-license-status.csv +596 -0
- package/android/src/main/cpp/CMakeLists.txt +28 -10
- package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.cpp +306 -6
- package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-helper.h +33 -4
- package/android/src/main/cpp/jni/archive/sherpa-onnx-archive-jni.cpp +266 -7
- package/android/src/main/cpp/jni/audio/sherpa-onnx-audio-convert-jni.cpp +268 -2
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-model-detect-tts.cpp +6 -2
- package/android/src/main/cpp/jni/model_detect/sherpa-onnx-validate-tts.cpp +4 -2
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxArchiveHelper.kt +137 -7
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxAssetHelper.kt +51 -6
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxModule.kt +159 -0
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxOnlineSttHelper.kt +4 -1
- package/android/src/main/java/com/sherpaonnx/SherpaOnnxTtsHelper.kt +112 -97
- package/ios/Resources/model_licenses/asr-models-license-status.csv +409 -0
- package/ios/Resources/model_licenses/qnn-asr-models-license-status.csv +695 -0
- package/ios/Resources/model_licenses/tts-models-license-status.csv +596 -0
- package/ios/SherpaOnnx+OnlineSTT.mm +2 -0
- package/ios/SherpaOnnx+PcmLiveStream.mm +2 -29
- package/ios/SherpaOnnx+TTS.mm +178 -20
- package/ios/SherpaOnnx.mm +108 -1
- package/ios/SherpaOnnxAudioConvert.h +10 -0
- package/ios/SherpaOnnxAudioConvert.mm +257 -1
- package/ios/archive/sherpa-onnx-archive-helper.h +10 -0
- package/ios/archive/sherpa-onnx-archive-helper.mm +56 -5
- package/ios/model_detect/sherpa-onnx-model-detect-tts.mm +13 -2
- package/ios/model_detect/sherpa-onnx-validate-tts.mm +4 -2
- package/ios/online_stt/sherpa-onnx-online-stt-wrapper.h +1 -0
- package/ios/online_stt/sherpa-onnx-online-stt-wrapper.mm +4 -0
- package/ios/tts/sherpa-onnx-tts-wrapper.h +37 -0
- package/ios/tts/sherpa-onnx-tts-wrapper.mm +149 -3
- package/lib/module/NativeSherpaOnnx.js.map +1 -1
- package/lib/module/audio/index.js +8 -0
- package/lib/module/audio/index.js.map +1 -1
- package/lib/module/download/ModelDownloadManager.js +10 -929
- package/lib/module/download/ModelDownloadManager.js.map +1 -1
- package/lib/module/download/activeModelOperations.js +26 -0
- package/lib/module/download/activeModelOperations.js.map +1 -0
- package/lib/module/download/background-downloader.d.js +2 -0
- package/lib/module/download/background-downloader.d.js.map +1 -0
- package/lib/module/download/bulkPurge.js +72 -0
- package/lib/module/download/bulkPurge.js.map +1 -0
- package/lib/module/download/checksumPrompt.js +19 -0
- package/lib/module/download/checksumPrompt.js.map +1 -0
- package/lib/module/download/constants.js +7 -0
- package/lib/module/download/constants.js.map +1 -0
- package/lib/module/download/downloadEvents.js +35 -0
- package/lib/module/download/downloadEvents.js.map +1 -0
- package/lib/module/download/downloadTask.js +385 -0
- package/lib/module/download/downloadTask.js.map +1 -0
- package/lib/module/download/ensureModel.js +89 -0
- package/lib/module/download/ensureModel.js.map +1 -0
- package/lib/module/download/index.js +4 -3
- package/lib/module/download/index.js.map +1 -1
- package/lib/module/download/localModels.js +151 -0
- package/lib/module/download/localModels.js.map +1 -0
- package/lib/module/download/modelExtraction.js +174 -0
- package/lib/module/download/modelExtraction.js.map +1 -0
- package/lib/module/download/paths.js +98 -0
- package/lib/module/download/paths.js.map +1 -0
- package/lib/module/download/postDownloadProcessing.js +206 -0
- package/lib/module/download/postDownloadProcessing.js.map +1 -0
- package/lib/module/download/protectedModelKeys.js +31 -0
- package/lib/module/download/protectedModelKeys.js.map +1 -0
- package/lib/module/download/registry.js +267 -0
- package/lib/module/download/registry.js.map +1 -0
- package/lib/module/download/retry.js +59 -0
- package/lib/module/download/retry.js.map +1 -0
- package/lib/module/download/types.js +17 -0
- package/lib/module/download/types.js.map +1 -0
- package/lib/module/download/validation.js +101 -5
- package/lib/module/download/validation.js.map +1 -1
- package/lib/module/{download → extraction}/extractTarBz2.js +3 -1
- package/lib/module/extraction/extractTarBz2.js.map +1 -0
- package/lib/module/extraction/extractTarZst.js +54 -0
- package/lib/module/extraction/extractTarZst.js.map +1 -0
- package/lib/module/extraction/index.js +190 -0
- package/lib/module/extraction/index.js.map +1 -0
- package/lib/module/extraction/types.js +2 -0
- package/lib/module/extraction/types.js.map +1 -0
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/licenses.js +63 -0
- package/lib/module/licenses.js.map +1 -0
- package/lib/module/stt/index.js +16 -2
- package/lib/module/stt/index.js.map +1 -1
- package/lib/module/stt/streaming.js +2 -0
- package/lib/module/stt/streaming.js.map +1 -1
- package/lib/module/stt/streamingTypes.js.map +1 -1
- package/lib/module/stt/types.js.map +1 -1
- package/lib/module/tts/index.js +20 -2
- package/lib/module/tts/index.js.map +1 -1
- package/lib/module/tts/streaming.js +4 -0
- package/lib/module/tts/streaming.js.map +1 -1
- package/lib/module/tts/types.js.map +1 -1
- package/lib/module/utils.js +16 -1
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/src/NativeSherpaOnnx.d.ts +72 -5
- package/lib/typescript/src/NativeSherpaOnnx.d.ts.map +1 -1
- package/lib/typescript/src/audio/index.d.ts +10 -0
- package/lib/typescript/src/audio/index.d.ts.map +1 -1
- package/lib/typescript/src/download/ModelDownloadManager.d.ts +10 -108
- package/lib/typescript/src/download/ModelDownloadManager.d.ts.map +1 -1
- package/lib/typescript/src/download/activeModelOperations.d.ts +6 -0
- package/lib/typescript/src/download/activeModelOperations.d.ts.map +1 -0
- package/lib/typescript/src/download/bulkPurge.d.ts +14 -0
- package/lib/typescript/src/download/bulkPurge.d.ts.map +1 -0
- package/lib/typescript/src/download/checksumPrompt.d.ts +3 -0
- package/lib/typescript/src/download/checksumPrompt.d.ts.map +1 -0
- package/lib/typescript/src/download/constants.d.ts +5 -0
- package/lib/typescript/src/download/constants.d.ts.map +1 -0
- package/lib/typescript/src/download/downloadEvents.d.ts +6 -0
- package/lib/typescript/src/download/downloadEvents.d.ts.map +1 -0
- package/lib/typescript/src/download/downloadTask.d.ts +20 -0
- package/lib/typescript/src/download/downloadTask.d.ts.map +1 -0
- package/lib/typescript/src/download/ensureModel.d.ts +26 -0
- package/lib/typescript/src/download/ensureModel.d.ts.map +1 -0
- package/lib/typescript/src/download/index.d.ts +7 -5
- package/lib/typescript/src/download/index.d.ts.map +1 -1
- package/lib/typescript/src/download/localModels.d.ts +15 -0
- package/lib/typescript/src/download/localModels.d.ts.map +1 -0
- package/lib/typescript/src/download/modelExtraction.d.ts +36 -0
- package/lib/typescript/src/download/modelExtraction.d.ts.map +1 -0
- package/lib/typescript/src/download/paths.d.ts +28 -0
- package/lib/typescript/src/download/paths.d.ts.map +1 -0
- package/lib/typescript/src/download/postDownloadProcessing.d.ts +19 -0
- package/lib/typescript/src/download/postDownloadProcessing.d.ts.map +1 -0
- package/lib/typescript/src/download/protectedModelKeys.d.ts +6 -0
- package/lib/typescript/src/download/protectedModelKeys.d.ts.map +1 -0
- package/lib/typescript/src/download/registry.d.ts +14 -0
- package/lib/typescript/src/download/registry.d.ts.map +1 -0
- package/lib/typescript/src/download/retry.d.ts +15 -0
- package/lib/typescript/src/download/retry.d.ts.map +1 -0
- package/lib/typescript/src/download/types.d.ts +96 -0
- package/lib/typescript/src/download/types.d.ts.map +1 -0
- package/lib/typescript/src/download/validation.d.ts +19 -0
- package/lib/typescript/src/download/validation.d.ts.map +1 -1
- package/lib/typescript/src/extraction/extractTarBz2.d.ts.map +1 -0
- package/lib/typescript/src/extraction/extractTarZst.d.ts +14 -0
- package/lib/typescript/src/extraction/extractTarZst.d.ts.map +1 -0
- package/lib/typescript/src/extraction/index.d.ts +50 -0
- package/lib/typescript/src/extraction/index.d.ts.map +1 -0
- package/lib/typescript/src/extraction/types.d.ts +60 -0
- package/lib/typescript/src/extraction/types.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/licenses.d.ts +10 -0
- package/lib/typescript/src/licenses.d.ts.map +1 -0
- package/lib/typescript/src/stt/index.d.ts +4 -1
- package/lib/typescript/src/stt/index.d.ts.map +1 -1
- package/lib/typescript/src/stt/streaming.d.ts.map +1 -1
- package/lib/typescript/src/stt/streamingTypes.d.ts +5 -0
- package/lib/typescript/src/stt/streamingTypes.d.ts.map +1 -1
- package/lib/typescript/src/stt/types.d.ts +3 -1
- package/lib/typescript/src/stt/types.d.ts.map +1 -1
- package/lib/typescript/src/tts/index.d.ts +3 -1
- package/lib/typescript/src/tts/index.d.ts.map +1 -1
- package/lib/typescript/src/tts/streaming.d.ts.map +1 -1
- package/lib/typescript/src/tts/types.d.ts +6 -5
- package/lib/typescript/src/tts/types.d.ts.map +1 -1
- package/lib/typescript/src/utils.d.ts +5 -0
- package/lib/typescript/src/utils.d.ts.map +1 -1
- package/package.json +11 -1
- package/scripts/{check-model-csvs.sh → ci/check-model-csvs.sh} +9 -2
- package/scripts/ci/collect_all_sherpa_model_streams.sh +101 -0
- package/scripts/ci/collect_one_sherpa_release_stream.sh +189 -0
- package/scripts/ci/sherpa_asr_model_release_streams.json +21 -0
- package/scripts/ci/sherpa_tts_model_release_streams.json +13 -0
- package/scripts/ci/update_model_license_csv.sh +765 -0
- package/scripts/setup-ios-framework.sh +14 -11
- package/scripts/update_commercial_use.js +73 -0
- package/src/NativeSherpaOnnx.ts +92 -5
- package/src/audio/index.ts +20 -0
- package/src/download/ModelDownloadManager.ts +55 -1343
- package/src/download/activeModelOperations.ts +38 -0
- package/src/download/background-downloader.d.ts +43 -0
- package/src/download/bulkPurge.ts +102 -0
- package/src/download/checksumPrompt.ts +25 -0
- package/src/download/constants.ts +5 -0
- package/src/download/downloadEvents.ts +55 -0
- package/src/download/downloadTask.ts +497 -0
- package/src/download/ensureModel.ts +124 -0
- package/src/download/index.ts +19 -2
- package/src/download/localModels.ts +234 -0
- package/src/download/modelExtraction.ts +244 -0
- package/src/download/paths.ts +134 -0
- package/src/download/postDownloadProcessing.ts +292 -0
- package/src/download/protectedModelKeys.ts +30 -0
- package/src/download/registry.ts +404 -0
- package/src/download/retry.ts +76 -0
- package/src/download/types.ts +120 -0
- package/src/download/validation.ts +114 -8
- package/src/{download → extraction}/extractTarBz2.ts +3 -1
- package/src/extraction/extractTarZst.ts +79 -0
- package/src/extraction/index.ts +269 -0
- package/src/extraction/types.ts +63 -0
- package/src/index.tsx +2 -0
- package/src/licenses.ts +100 -0
- package/src/stt/index.ts +20 -2
- package/src/stt/streaming.ts +3 -0
- package/src/stt/streamingTypes.ts +5 -0
- package/src/stt/types.ts +3 -1
- package/src/tts/index.ts +30 -2
- package/src/tts/streaming.ts +10 -0
- package/src/tts/types.ts +6 -5
- package/src/utils.ts +22 -1
- package/third_party/libarchive_prebuilt/ANDROID_RELEASE_TAG +1 -1
- package/third_party/libarchive_prebuilt/IOS_RELEASE_TAG +1 -1
- package/third_party/sherpa-onnx-prebuilt/ANDROID_RELEASE_TAG +1 -1
- package/third_party/sherpa-onnx-prebuilt/IOS_RELEASE_TAG +1 -1
- package/android/src/main/cpp/jni/tts/sherpa-onnx-tts-zipvoice-jni.cpp +0 -301
- package/android/src/main/java/com/sherpaonnx/ZipvoiceTtsWrapper.kt +0 -187
- package/lib/module/download/extractTarBz2.js.map +0 -1
- package/lib/typescript/src/download/extractTarBz2.d.ts.map +0 -1
- package/scripts/check-qnn-support.sh +0 -78
- /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":";;AAAA,SACEA,MAAM,EACNC,KAAK,EACLC,SAAS,EACTC,IAAI,EACJC,MAAM,QACD,6BAA6B;AAQpC,SACEC,kBAAkB,EAClBC,eAAe,EACfC,sBAAsB,QACjB,YAAS;AAChB,SACEC,gBAAgB,EAChBC,sBAAsB,EACtBC,qBAAqB,QAChB,iBAAc;AACrB,SAASC,aAAa,QAAQ,gCAA6B;AAC3D,SAASC,sBAAsB,QAAQ,qBAAkB;AACzD,SAASC,oBAAoB,EAAEC,qBAAqB,QAAQ,qBAAkB;AAE9E,SACEC,yBAAyB,EACzBC,2BAA2B,QACtB,4BAAyB;AAkBhC,OAAO,eAAeC,yBAAyBA,CAC7CC,OAAyC,EAChB;EACzB,MAAM;IACJC,QAAQ;IACRC,EAAE;IACFC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,SAAS;IACTC,SAAS;IACTC,MAAM;IACNC,eAAe;IACfC,yBAAyB;IACzBC,UAAU;IACVC;EACF,CAAC,GAAGZ,OAAO;EAEXH,yBAAyB,CAACI,QAAQ,EAAEC,EAAE,CAAC;EACvC,IAAI;IACF,OAAO,MAAMW,6BAA6B,CAAC;MACzCZ,QAAQ;MACRC,EAAE;MACFC,KAAK;MACLC,YAAY;MACZC,QAAQ;MACRC,SAAS;MACTC,SAAS;MACTC,MAAM;MACNC,eAAe;MACfC,yBAAyB;MACzBC,UAAU;MACVC;IACF,CAAC,CAAC;EACJ,CAAC,SAAS;IACRd,2BAA2B,CAACG,QAAQ,EAAEC,EAAE,CAAC;EAC3C;AACF;AAEA,eAAeW,6BAA6BA,CAC1Cb,OAAyC,EAChB;EACzB,MAAM;IACJC,QAAQ;IACRC,EAAE;IACFC,KAAK;IACLC,YAAY;IACZC,QAAQ;IACRC,SAAS;IACTC,SAAS;IACTC,MAAM;IACNC,eAAe;IACfC,yBAAyB;IACzBC,UAAU;IACVC;EACF,CAAC,GAAGZ,OAAO;EAEX,MAAMc,SAAS,GAAGA,CAAA,KAAMC,OAAO,CAACP,MAAM,EAAEQ,OAAO,CAAC;EAChD,MAAMC,UAAU,GAAG,IAAIC,KAAK,CAAC,kBAAkB,CAAC;EAChDD,UAAU,CAACE,IAAI,GAAG,YAAY;EAE9B,IAAIX,MAAM,EAAEQ,OAAO,EAAE,MAAMC,UAAU;EAErC,IAAIG,aAAyC,GAAG,IAAI;EACpD,IAAIC,mBAAmB,GAAG,CAAC;EAE3B,IAAIf,SAAS,EAAE;IACb,IAAI;MACF,MAAMgB,WAAW,GAAG,MAAMrC,IAAI,CAACmB,YAAY,CAAC;MAC5C,IAAID,KAAK,CAACoB,KAAK,GAAG,CAAC,IAAID,WAAW,CAACE,IAAI,GAAGrB,KAAK,CAACoB,KAAK,EAAE;QACrDE,OAAO,CAACC,IAAI,CACV,oCAAoCzB,QAAQ,IAAIC,EAAE,KAAKoB,WAAW,CAACE,IAAI,IAAIrB,KAAK,CAACoB,KAAK,mCACxF,CAAC;QACD,MAAMrC,MAAM,CAACkB,YAAY,CAAC;QAC1B,MAAM,IAAIc,KAAK,CACb,8BAA8BI,WAAW,CAACE,IAAI,IAAIrB,KAAK,CAACoB,KAAK,qCAC/D,CAAC;MACH;IACF,CAAC,CAAC,OAAOI,OAAO,EAAE;MAChB,IAAIA,OAAO,YAAYT,KAAK,IAAIS,OAAO,CAACC,OAAO,CAACC,QAAQ,CAAC,WAAW,CAAC,EACnE,MAAMF,OAAO;IACjB;IACA,MAAM5C,KAAK,CAACsB,QAAQ,CAAC;IACrB,MAAMyB,mBAAmB,GAAGzC,sBAAsB,CAACY,QAAQ,EAAEC,EAAE,CAAC;IAChE,IAAI;MACF,MAAMlB,SAAS,CACb8C,mBAAmB,EACnBC,IAAI,CAACC,SAAS,CAAC;QACbC,OAAO,EAAE/B,EAAE;QACXD,QAAQ;QACRiC,KAAK,EAAE,YAAqB;QAC5BC,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;QACnCC,WAAW,EAAElC,YAAY;QACzBC,QAAQ;QACRF;MACF,CAAC,CAAC,EACF,MACF,CAAC;IACH,CAAC,CAAC,MAAM;MACN;IAAA;IAEFiB,aAAa,GAAG,MAAM3B,aAAa,CACjCW,YAAY,EACZC,QAAQ,EACR,IAAI,EACHkC,GAAG,IAAK;MACP,IAAIzB,SAAS,CAAC,CAAC,EAAE;MACjB,IAAIyB,GAAG,CAACC,UAAU,GAAG,CAAC,EAAEnB,mBAAmB,GAAGkB,GAAG,CAACC,UAAU;MAC5D,MAAMC,QAA0B,GAAG;QACjCC,eAAe,EAAEH,GAAG,CAAChB,KAAK;QAC1BiB,UAAU,EAAED,GAAG,CAACC,UAAU;QAC1BG,OAAO,EAAEJ,GAAG,CAACI,OAAO;QACpBT,KAAK,EAAE;MACT,CAAC;MACDvB,UAAU,GAAG8B,QAAQ,CAAC;MACtB9C,oBAAoB,CAACM,QAAQ,EAAEC,EAAE,EAAEuC,QAAQ,CAAC;IAC9C,CAAC,EACDjC,MACF,CAAC;EACH;EAEA,IAAIL,KAAK,CAACyC,MAAM,EAAE;IAChB,MAAMC,WAAW,GAAG1C,KAAK,CAACyC,MAAM,CAACE,WAAW,CAAC,CAAC;IAC9C,IAAIC,KAA2B,GAAG,IAAI;IACtC,IAAIzC,SAAS,EAAE;MACb,MAAM0C,SAAS,GAAG5B,aAAa,EAAEwB,MAAM,EAAEE,WAAW,CAAC,CAAC;MACtD,IAAI,CAACE,SAAS,EAAE;QACdD,KAAK,GAAG;UACN9C,QAAQ;UACRC,EAAE;UACFoC,WAAW,EAAElC,YAAY;UACzB6C,QAAQ,EAAE9C,KAAK,CAACyC,MAAM;UACtBhB,OAAO,EAAE,gDAAgD;UACzDsB,MAAM,EAAE;QACV,CAAC;MACH,CAAC,MAAM,IAAIF,SAAS,KAAKH,WAAW,EAAE;QACpCE,KAAK,GAAG;UACN9C,QAAQ;UACRC,EAAE;UACFoC,WAAW,EAAElC,YAAY;UACzB6C,QAAQ,EAAE9C,KAAK,CAACyC,MAAM;UACtBhB,OAAO,EAAE,+BAA+BzB,KAAK,CAACyC,MAAM,SAASxB,aAAa,EAAEwB,MAAM,EAAE;UACpFM,MAAM,EAAE;QACV,CAAC;MACH;IACF,CAAC,MAAM;MACL,MAAMC,cAAc,GAAG,MAAM7D,gBAAgB,CAACc,YAAY,EAAEyC,WAAW,CAAC;MACxE,IAAI,CAACM,cAAc,CAACC,OAAO,EAAE;QAC3BL,KAAK,GAAG;UACN9C,QAAQ;UACRC,EAAE;UACFoC,WAAW,EAAElC,YAAY;UACzB6C,QAAQ,EAAE9C,KAAK,CAACyC,MAAM;UACtBhB,OAAO,EAAEuB,cAAc,CAACvB,OAAO,IAAI,6BAA6B;UAChEsB,MAAM,EACJC,cAAc,CAACE,KAAK,KAAK,mBAAmB,GACxC,mBAAmB,GACnB;QACR,CAAC;MACH;IACF;IACA,IAAIN,KAAK,EAAE;MACT,MAAMO,QAAQ,GAAG7C,eAAe,GAC5B,MAAMA,eAAe,CAACsC,KAAK,CAAC,GAC5B,MAAMrD,sBAAsB,CAACqD,KAAK,CAAC;MACvC,IAAI,CAACO,QAAQ,EAAE;QACb,IAAI,MAAMxE,MAAM,CAACuB,QAAQ,CAAC,EAAE,MAAMnB,MAAM,CAACmB,QAAQ,CAAC;QAClD,IAAI,MAAMvB,MAAM,CAACsB,YAAY,CAAC,EAAE,MAAMlB,MAAM,CAACkB,YAAY,CAAC;QAC1D,MAAM,IAAIc,KAAK,CAAC,+BAA+B6B,KAAK,CAACnB,OAAO,EAAE,CAAC;MACjE;IACF;EACF;EAEA,IAAIpB,MAAM,EAAEQ,OAAO,EAAE,MAAMC,UAAU;EAErC,MAAMsC,eAAe,GAAG,MAAMhE,sBAAsB,CAACc,QAAQ,EAAEJ,QAAQ,CAAC;EACxE,IAAI,CAACsD,eAAe,CAACH,OAAO,EAAE;IAC5B,MAAMlE,MAAM,CAACmB,QAAQ,CAAC;IACtB,MAAM,IAAIa,KAAK,CACb,sCAAsCqC,eAAe,CAAC3B,OAAO,EAC/D,CAAC;EACH;EAEA,MAAM5C,SAAS,CAACG,kBAAkB,CAACc,QAAQ,EAAEC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC;EAClE,MAAMsD,GAAG,GAAG,IAAIpB,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EACpC,IAAIoB,UAA8B;EAClC,IAAInD,SAAS,IAAIe,mBAAmB,GAAG,CAAC,EAAE;IACxCoC,UAAU,GAAGpC,mBAAmB;EAClC,CAAC,MAAM,IAAI,CAACf,SAAS,EAAE;IACrB,IAAI;MACF,MAAMoD,CAAC,GAAG,MAAMzE,IAAI,CAACmB,YAAY,CAAC;MAClCqD,UAAU,GAAGC,CAAC,CAAClC,IAAI;IACrB,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;EACA,MAAMxC,SAAS,CACbI,eAAe,CAACa,QAAQ,EAAEC,EAAE,CAAC,EAC7B6B,IAAI,CAACC,SAAS,CAAC;IACb2B,YAAY,EAAEH,GAAG;IACjBI,QAAQ,EAAEJ,GAAG;IACbrD,KAAK;IACLsD;EACF,CAAkB,CAAC,EACnB,MACF,CAAC;EAED,IAAI;IACF,IAAI,MAAM3E,MAAM,CAACyB,SAAS,CAAC,EAAE,MAAMrB,MAAM,CAACqB,SAAS,CAAC;EACtD,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,IAAID,SAAS,EAAE;IACb,IAAI;MACF,MAAMwB,mBAAmB,GAAGzC,sBAAsB,CAACY,QAAQ,EAAEC,EAAE,CAAC;MAChE,IACE4B,mBAAmB,KAAKvB,SAAS,KAChC,MAAMzB,MAAM,CAACgD,mBAAmB,CAAC,CAAC,EACnC;QACA,MAAM5C,MAAM,CAAC4C,mBAAmB,CAAC;MACnC;IACF,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;EAEA,IAAIxB,SAAS,IAAII,yBAAyB,KAAK,KAAK,EAAE;IACpD,IAAI;MACF,IAAI,MAAM5B,MAAM,CAACsB,YAAY,CAAC,EAAE,MAAMlB,MAAM,CAACkB,YAAY,CAAC;IAC5D,CAAC,CAAC,OAAOyD,GAAG,EAAE;MACZpC,OAAO,CAACC,IAAI,CACV,4DAA4DzB,QAAQ,IAAIC,EAAE,GAAG,EAC7E2D,GAAG,YAAY3C,KAAK,GAAG2C,GAAG,CAACjC,OAAO,GAAGkC,MAAM,CAACD,GAAG,CACjD,CAAC;IACH;EACF;EAEA,MAAME,IAAI,GAAG,MAAMnD,iBAAiB,CAAC,CAAC;EACtChB,qBAAqB,CAACK,QAAQ,EAAE8D,IAAI,CAAC;EAErC,MAAMC,YAAY,GAAG,MAAMxE,qBAAqB,CAACa,QAAQ,CAAC;EAC1D,OAAO;IAAE4B,OAAO,EAAE/B,EAAE;IAAE+D,SAAS,EAAED;EAAa,CAAC;AACjD","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":";;AAAA,SACEA,MAAM,EACNC,QAAQ,EACRC,KAAK,EACLC,SAAS,QACJ,6BAA6B;AACpC,SAASC,aAAa,QAAQ,YAAS;AAWvC,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,cAAc,QACT,gBAAa;AACpB,SACEC,WAAW,EACXC,YAAY,EACZC,kBAAkB,EAClBC,aAAa,EACbC,eAAe,QACV,YAAS;AAChB,SAASC,iBAAiB,QAAQ,iBAAc;AAChD,SAASC,gBAAgB,QAAQ,YAAS;AAC1C,SAASC,qBAAqB,QAAQ,qBAAkB;AAExD,MAAMC,qBAEL,GAAG,CAAC,CAAC;AAEN,MAAMC,uBAEL,GAAG,CAAC,CAAC;AAEN,OAAO,eAAeC,yBAAyBA,CAC7CC,QAAuB,EACO;EAC9B,IAAIA,QAAQ,KAAKf,aAAa,CAACgB,GAAG,EAAE;IAClC,OAAO,IAAIC,GAAG,CAAiB,CAAC;EAClC;EACA,IAAIJ,uBAAuB,CAACE,QAAQ,CAAC,EAAE;IACrC,OAAOF,uBAAuB,CAACE,QAAQ,CAAC;EAC1C;EACA,IAAI;IACF,MAAMG,SAAS,GAAG,MAAMR,gBAAgB,CACtC,YAAY;MACV,MAAMS,QAAQ,GAAG,MAAMC,KAAK,CAC1B,2DAA2DZ,eAAe,CAACO,QAAQ,CAAC,CAACM,GAAG,eAC1F,CAAC;MACD,IAAI,CAACF,QAAQ,CAACG,EAAE,EAAE;QAChB,MAAM,IAAIC,KAAK,CACb,oCAAoCR,QAAQ,KAAKI,QAAQ,CAACK,MAAM,EAClE,CAAC;MACH;MACA,MAAMC,OAAO,GAAG,MAAMN,QAAQ,CAACO,IAAI,CAAC,CAAC;MACrC,OAAOjB,iBAAiB,CAACgB,OAAO,CAAC;IACnC,CAAC,EACD;MAAEE,UAAU,EAAE,CAAC;MAAEC,cAAc,EAAE;IAAK,CACxC,CAAC;IACDf,uBAAuB,CAACE,QAAQ,CAAC,GAAGG,SAAS;IAC7C,OAAOA,SAAS;EAClB,CAAC,CAAC,OAAOW,KAAK,EAAE;IACdC,OAAO,CAACC,IAAI,CACV,oDAAoDhB,QAAQ,GAAG,EAC/Dc,KACF,CAAC;IACD,OAAO,IAAIZ,GAAG,CAAC,CAAC;EAClB;AACF;AAEA,SAASe,WAAWA,CAACC,KAAa,EAAU;EAC1C,OAAOA,KAAK,CACTC,KAAK,CAAC,UAAU,CAAC,CACjBC,MAAM,CAACC,OAAO,CAAC,CACfC,GAAG,CAAEC,KAAK,IAAKA,KAAK,CAAC,CAAC,CAAC,CAAEC,WAAW,CAAC,CAAC,GAAGD,KAAK,CAACE,KAAK,CAAC,CAAC,CAAC,CAAC,CACxDC,IAAI,CAAC,GAAG,CAAC;AACd;AAEA,SAASC,iBAAiBA,CAACC,EAAU,EAAU;EAC7C,MAAMC,OAAO,GAAGD,EAAE,CAACE,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;EAC/C,OAAOb,WAAW,CAACY,OAAO,CAAC;AAC7B;AAEA,SAASE,UAAUA,CAACH,EAAU,EAAgB;EAC5C,MAAMI,KAAK,GAAGJ,EAAE,CAACK,WAAW,CAAC,CAAC;EAC9B,IAAID,KAAK,CAACE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM;EACzC,IAAIF,KAAK,CAACE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,QAAQ;EAC7C,IAAIF,KAAK,CAACE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,QAAQ;EAC7C,IAAIF,KAAK,CAACE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,QAAQ;EAC7C,IAAIF,KAAK,CAACE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,QAAQ;EAC7C,IAAIF,KAAK,CAACE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,UAAU;EACjD,OAAO,SAAS;AAClB;AAEA,SAASC,kBAAkBA,CAACP,EAAU,EAAgB;EACpD,MAAMI,KAAK,GAAGJ,EAAE,CAACK,WAAW,CAAC,CAAC;EAC9B,IAAID,KAAK,CAACE,QAAQ,CAAC,MAAM,CAAC,IAAIF,KAAK,CAACE,QAAQ,CAAC,OAAO,CAAC,EAAE;IACrD,OAAO,gBAAgB;EACzB;EACA,IAAIF,KAAK,CAACE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM;EACzC,IAAIF,KAAK,CAACE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM;EACzC,OAAO,SAAS;AAClB;AAEA,SAASE,cAAcA,CAACR,EAAU,EAAY;EAC5C,MAAMI,KAAK,GAAGJ,EAAE,CAACK,WAAW,CAAC,CAAC;EAC9B,IAAID,KAAK,CAACE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM;EACzC,IAAIF,KAAK,CAACE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,OAAO;EAC3C,IAAIF,KAAK,CAACE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,QAAQ;EAC7C,IAAIF,KAAK,CAACE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,OAAO;EAC3C,IAAIF,KAAK,CAACE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,OAAO;EACzC,OAAO,SAAS;AAClB;AAEA,SAASG,eAAeA,CAACT,EAAU,EAAY;EAC7C,MAAMU,MAAM,GAAGV,EAAE,CAACT,KAAK,CAAC,QAAQ,CAAC;EACjC,MAAMoB,SAAS,GAAG,IAAIC,GAAG,CAAS,CAAC;EACnC,KAAK,MAAMjB,KAAK,IAAIe,MAAM,EAAE;IAC1B,IAAI,YAAY,CAACG,IAAI,CAAClB,KAAK,CAAC,EAAE;MAC5BgB,SAAS,CAACG,GAAG,CAACnB,KAAK,CAAC;MACpB;IACF;IACA,IAAI,oBAAoB,CAACkB,IAAI,CAAClB,KAAK,CAAC,EAAE;MACpCgB,SAAS,CAACG,GAAG,CAACnB,KAAK,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACQ,WAAW,CAAC,CAAC,CAAC;MAC9C;IACF;IACA,IAAI,qBAAqB,CAACQ,IAAI,CAAClB,KAAK,CAAC,EAAE;MACrCgB,SAAS,CAACG,GAAG,CAACnB,KAAK,CAACE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACQ,WAAW,CAAC,CAAC,CAAC;IAChD;EACF;EACA,OAAOU,KAAK,CAACC,IAAI,CAACL,SAAS,CAAC;AAC9B;AAEA,SAASM,iBAAiBA,CAACC,IAAY,EAA0B;EAC/D,IAAIA,IAAI,CAACC,QAAQ,CAAC5D,iBAAiB,CAAC,EAAE,OAAO,SAAS;EACtD,IAAI2D,IAAI,CAACC,QAAQ,CAAC3D,cAAc,CAAC,EAAE,OAAO,MAAM;EAChD,OAAO,IAAI;AACb;AAEA,SAAS4D,mBAAmBA,CAACF,IAAY,EAAEG,GAAoB,EAAU;EACvE,MAAMC,MAAM,GAAG,IAAID,GAAG,EAAE;EACxB,OAAOH,IAAI,CAACC,QAAQ,CAACG,MAAM,CAAC,GAAGJ,IAAI,CAACrB,KAAK,CAAC,CAAC,EAAE,CAACyB,MAAM,CAACC,MAAM,CAAC,GAAGL,IAAI;AACrE;AAEA,SAASM,2BAA2BA,CAClCpD,QAAuB,EACvB8C,IAAY,EACZG,GAAoB,EACX;EACT,MAAMjB,KAAK,GAAGc,IAAI,CAACb,WAAW,CAAC,CAAC;EAChC,QAAQjC,QAAQ;IACd,KAAKf,aAAa,CAACoE,GAAG;MACpB,OAAOJ,GAAG,KAAK,SAAS;IAC1B,KAAKhE,aAAa,CAACqE,GAAG;MACpB,OAAOL,GAAG,KAAK,SAAS,IAAI,CAACjB,KAAK,CAACE,QAAQ,CAAC,KAAK,CAAC;IACpD,KAAKjD,aAAa,CAACsE,GAAG;MACpB,OAAON,GAAG,KAAK,MAAM,IAAIjB,KAAK,CAACE,QAAQ,CAAC,KAAK,CAAC;IAChD,KAAKjD,aAAa,CAACuE,WAAW;MAC5B,OAAOP,GAAG,KAAK,SAAS;IAC1B,KAAKhE,aAAa,CAACwE,WAAW;MAC5B,OAAOR,GAAG,KAAK,MAAM;IACvB,KAAKhE,aAAa,CAACyE,UAAU;MAC3B,OAAOT,GAAG,KAAK,SAAS,IAAIA,GAAG,KAAK,MAAM;IAC5C,KAAKhE,aAAa,CAACgB,GAAG;MACpB,OACEgD,GAAG,KAAK,SAAS,IACjBjB,KAAK,CAACE,QAAQ,CAAC,iBAAiB,CAAC,IACjCF,KAAK,CAACE,QAAQ,CAAC,QAAQ,CAAC,IACxBF,KAAK,CAACE,QAAQ,CAAC,SAAS,CAAC;IAE7B;MACE,OAAO,KAAK;EAChB;AACF;AAEA,SAASyB,iBAAiBA,CAACzC,KAAqB,EAAsB;EACpE,IAAI,CAACA,KAAK,EAAE,OAAO0C,SAAS;EAC5B,MAAMC,KAAK,GAAG3C,KAAK,CAAC2C,KAAK,CAAC,0BAA0B,CAAC;EACrD,OAAOA,KAAK,GAAG,CAAC,CAAC,EAAE5B,WAAW,CAAC,CAAC;AAClC;AAEA,SAAS6B,cAAcA,CACrBC,KAKC,EACDC,UAA2B,EACN;EACrB,IAAIA,UAAU,KAAK,SAAS,EAAE,OAAO,IAAI;EACzC,MAAMpC,EAAE,GAAGoB,mBAAmB,CAACe,KAAK,CAACjB,IAAI,EAAEkB,UAAU,CAAC;EACtD,MAAMC,IAAI,GAAGlC,UAAU,CAACH,EAAE,CAAC;EAC3B,IAAIqC,IAAI,KAAK,SAAS,EAAE;IACtBlD,OAAO,CAACC,IAAI,CAAC,wCAAwC,EAAEY,EAAE,CAAC;EAC5D;EACA,OAAO;IACLA,EAAE;IACFsC,WAAW,EAAEvC,iBAAiB,CAACC,EAAE,CAAC;IAClCqC,IAAI;IACJ1B,SAAS,EAAEF,eAAe,CAACT,EAAE,CAAC;IAC9BuC,YAAY,EAAEhC,kBAAkB,CAACP,EAAE,CAAC;IACpCwC,QAAQ,EAAEhC,cAAc,CAACR,EAAE,CAAC;IAC5ByC,WAAW,EAAEN,KAAK,CAACO,oBAAoB;IACvCN,UAAU;IACVO,KAAK,EAAER,KAAK,CAACS,IAAI;IACjBC,MAAM,EAAEd,iBAAiB,CAACI,KAAK,CAACW,MAAM,CAAC;IACvC1E,QAAQ,EAAEf,aAAa,CAACoE;EAC1B,CAAC;AACH;AAEA,SAASsB,kBAAkBA,CACzB3E,QAAuB,EACvB+D,KAKC,EACDC,UAA2B,EACL;EACtB,MAAMpC,EAAE,GAAGoB,mBAAmB,CAACe,KAAK,CAACjB,IAAI,EAAEkB,UAAU,CAAC;EACtD,OAAO;IACLpC,EAAE;IACFsC,WAAW,EAAEvC,iBAAiB,CAACC,EAAE,CAAC;IAClCyC,WAAW,EAAEN,KAAK,CAACO,oBAAoB;IACvCN,UAAU;IACVO,KAAK,EAAER,KAAK,CAACS,IAAI;IACjBC,MAAM,EAAEd,iBAAiB,CAACI,KAAK,CAACW,MAAM,CAAC;IACvC1E;EACF,CAAC;AACH;AAEA,SAAS4E,WAAWA,CAClB5E,QAAuB,EACvB+D,KAKC,EACqB;EACtB,MAAMC,UAAU,GAAGnB,iBAAiB,CAACkB,KAAK,CAACjB,IAAI,CAAC;EAChD,IAAI,CAACkB,UAAU,EAAE,OAAO,IAAI;EAC5B,IAAI,CAACZ,2BAA2B,CAACpD,QAAQ,EAAE+D,KAAK,CAACjB,IAAI,EAAEkB,UAAU,CAAC,EAAE;IAClE,OAAO,IAAI;EACb;EACA,IAAIhE,QAAQ,KAAKf,aAAa,CAACoE,GAAG,EAAE;IAClC,OAAOS,cAAc,CAACC,KAAK,EAAEC,UAAU,CAAC;EAC1C;EACA,OAAOW,kBAAkB,CAAC3E,QAAQ,EAAE+D,KAAK,EAAEC,UAAU,CAAC;AACxD;AAEA,eAAea,iBAAiBA,CAC9B7E,QAAuB,EACU;EACjC,MAAM8E,WAAW,GAAGjF,qBAAqB,CAACG,QAAQ,CAErC;EACb,IAAI8E,WAAW,EAAE,OAAOA,WAAW;EACnC,MAAMC,SAAS,GAAGzF,YAAY,CAACU,QAAQ,CAAC;EACxC,MAAMgF,YAAY,GAAG,MAAMnG,MAAM,CAACkG,SAAS,CAAC;EAC5C,IAAI,CAACC,YAAY,EAAE,OAAO,IAAI;EAC9B,MAAMC,GAAG,GAAG,MAAMnG,QAAQ,CAACiG,SAAS,EAAE,MAAM,CAAC;EAC7C,MAAMG,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACH,GAAG,CAAoB;EACjDpF,qBAAqB,CAACG,QAAQ,CAAC,GAAGkF,MAAqC;EACvE,OAAOA,MAAM;AACf;AAEA,eAAeG,SAASA,CACtBrF,QAAuB,EACvBsF,OAAwB,EACT;EACf,MAAMvG,KAAK,CAACM,WAAW,CAAC,CAAC,CAAC;EAC1B,MAAML,SAAS,CAACM,YAAY,CAACU,QAAQ,CAAC,EAAEmF,IAAI,CAACI,SAAS,CAACD,OAAO,CAAC,EAAE,MAAM,CAAC;EACxEzF,qBAAqB,CAACG,QAAQ,CAAC,GAAGsF,OAAsC;AAC1E;AAEA,SAASE,YAAYA,CACnBF,OAAwB,EACxBG,UAAkB,EACT;EACT,MAAMC,OAAO,GAAG,IAAIC,IAAI,CAACL,OAAO,CAACM,WAAW,CAAC,CAACC,OAAO,CAAC,CAAC;EACvD,IAAI,CAACH,OAAO,EAAE,OAAO,KAAK;EAC1B,MAAMI,KAAK,GAAGH,IAAI,CAACI,GAAG,CAAC,CAAC,GAAGL,OAAO;EAClC,OAAOI,KAAK,GAAGL,UAAU,GAAG,EAAE,GAAG,IAAI;AACvC;AAEA,OAAO,eAAeO,oBAAoBA,CACxChG,QAAuB,EACT;EACd,MAAMiG,KAAK,GAAG,MAAMpB,iBAAiB,CAAI7E,QAAQ,CAAC;EAClD,OAAOiG,KAAK,EAAEC,MAAM,IAAI,EAAE;AAC5B;AAEA,OAAO,eAAeC,uBAAuBA,CAC3CnG,QAAuB,EACvBoG,OAKC,EACa;EACd,MAAMC,GAAG,GAAGD,OAAO,EAAEE,eAAe,IAAIpH,iBAAiB;EACzD,MAAMqH,MAAM,GAAG,MAAM1B,iBAAiB,CAAI7E,QAAQ,CAAC;EAEnD,IAAI,CAACoG,OAAO,EAAEI,YAAY,IAAID,MAAM,IAAIf,YAAY,CAACe,MAAM,EAAEF,GAAG,CAAC,EAAE;IACjE,OAAOE,MAAM,CAACL,MAAM;EACtB;EAEA,IAAI;IACF,MAAMO,IAAI,GAAG,MAAM9G,gBAAgB,CACjC,YAAY;MACV,MAAMS,QAAQ,GAAG,MAAMC,KAAK,CAACb,aAAa,CAACQ,QAAQ,CAAC,CAAC;MACrD,IAAI,CAACI,QAAQ,CAACG,EAAE,EAAE;QAChB,MAAM,IAAIC,KAAK,CAAC,2BAA2BJ,QAAQ,CAACK,MAAM,EAAE,CAAC;MAC/D;MACA,OAAOL,QAAQ,CAACsG,IAAI,CAAC,CAAC;IACxB,CAAC,EACD;MACE9F,UAAU,EAAEwF,OAAO,EAAExF,UAAU,IAAI,CAAC;MACpCC,cAAc,EAAE,IAAI;MACpB8F,MAAM,EAAEP,OAAO,EAAEO;IACnB,CACF,CAAC;IAED,MAAMC,MAAM,GAAGjE,KAAK,CAACkE,OAAO,CAACJ,IAAI,EAAEG,MAAM,CAAC,GAAGH,IAAI,CAACG,MAAM,GAAG,EAAE;IAC7D,MAAMV,MAAW,GAAGU,MAAM,CACvBtF,GAAG,CACDyC,KAKA,IACCa,WAAW,CAAC5E,QAAQ,EAAE;MACpB8C,IAAI,EAAEiB,KAAK,CAACjB,IAAI;MAChB0B,IAAI,EAAET,KAAK,CAACS,IAAI;MAChBF,oBAAoB,EAAEP,KAAK,CAACO,oBAAoB;MAChDI,MAAM,EAAEX,KAAK,CAACW;IAChB,CAAC,CACL,CAAC,CACAtD,MAAM,CAAE0F,KAA2B,IAAiBzF,OAAO,CAACyF,KAAK,CAAC,CAAC;IAEtE,MAAM3G,SAAS,GAAG,MAAMJ,yBAAyB,CAACC,QAAQ,CAAC;IAC3D,KAAK,MAAM8G,KAAK,IAAIZ,MAAM,EAAE;MAC1B,MAAMa,eAAe,GAAGxH,kBAAkB,CAACuH,KAAK,CAAClF,EAAE,EAAEkF,KAAK,CAAC9C,UAAU,CAAC;MACtE,MAAMS,MAAM,GAAGtE,SAAS,CAAC6G,GAAG,CAACD,eAAe,CAAC;MAC7C,IAAItC,MAAM,EAAE;QACVqC,KAAK,CAACrC,MAAM,GAAGA,MAAM;MACvB,CAAC,MAAM,IAAIqC,KAAK,CAACrC,MAAM,EAAE;QACvBqC,KAAK,CAACrC,MAAM,GAAGqC,KAAK,CAACrC,MAAM,CAACxC,WAAW,CAAC,CAAC;MAC3C;IACF;IAEA,MAAMqD,OAAwB,GAAG;MAC/BM,WAAW,EAAE,IAAID,IAAI,CAAC,CAAC,CAACsB,WAAW,CAAC,CAAC;MACrCf;IACF,CAAC;IACD,MAAMb,SAAS,CAACrF,QAAQ,EAAEsF,OAAO,CAAC;IAClC1F,qBAAqB,CAACI,QAAQ,EAAEkG,MAAyB,CAAC;IAC1D,OAAOA,MAAM;EACf,CAAC,CAAC,OAAOpF,KAAK,EAAE;IACd,IAAIyF,MAAM,EAAE;MACVxF,OAAO,CAACC,IAAI,CACV,gCAAgChB,QAAQ,sBAAsB,EAC9Dc,KACF,CAAC;MACD,OAAOyF,MAAM,CAACL,MAAM;IACtB;IACA,MAAMpF,KAAK;EACb;AACF;AAEA,OAAO,eAAeoG,8BAA8BA,CAClDlH,QAAuB,EACD;EACtB,MAAMuG,MAAM,GAAG,MAAM1B,iBAAiB,CAAC7E,QAAQ,CAAC;EAChD,IAAI,CAACuG,MAAM,EAAE;IACX,OAAO;MAAEX,WAAW,EAAE,IAAI;MAAEuB,MAAM,EAAE;IAAQ,CAAC;EAC/C;EACA,OAAO;IAAEvB,WAAW,EAAEW,MAAM,CAACX,WAAW;IAAEuB,MAAM,EAAE;EAAQ,CAAC;AAC7D;AAEA,OAAO,eAAeC,sBAAsBA,CAC1CpH,QAAuB,EACvB4B,EAAU,EACS;EACnB,MAAMsE,MAAM,GAAG,MAAMF,oBAAoB,CAAIhG,QAAQ,CAAC;EACtD,OAAOkG,MAAM,CAACmB,IAAI,CAAEP,KAAK,IAAKA,KAAK,CAAClF,EAAE,KAAKA,EAAE,CAAC,IAAI,IAAI;AACxD;AAEA,OAAO,SAAS0F,2BAA2BA,CAACtH,QAAuB,EAAQ;EACzE,OAAOH,qBAAqB,CAACG,QAAQ,CAAC;EACtC,OAAOF,uBAAuB,CAACE,QAAQ,CAAC;AAC1C","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
|
|
92
|
-
|
|
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","
|
|
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":"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","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
|
-
|
|
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":[]}
|