echogarden 1.8.6 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -18
- package/data/schemas/options.json +52 -47
- package/dist/alignment/DTWSequenceAlignment.d.ts +1 -1
- package/dist/alignment/DTWSequenceAlignment.js +5 -5
- package/dist/alignment/DTWSequenceAlignment.js.map +1 -1
- package/dist/alignment/SpeechAlignment.js +6 -6
- package/dist/alignment/SpeechAlignment.js.map +1 -1
- package/dist/api/Alignment.d.ts +1 -1
- package/dist/api/Alignment.js +49 -11
- package/dist/api/Alignment.js.map +1 -1
- package/dist/api/Denoising.d.ts +4 -2
- package/dist/api/Denoising.js +65 -13
- package/dist/api/Denoising.js.map +1 -1
- package/dist/api/SourceSeparation.js +9 -6
- package/dist/api/SourceSeparation.js.map +1 -1
- package/dist/api/SpeechLanguageDetection.js +4 -4
- package/dist/api/SpeechLanguageDetection.js.map +1 -1
- package/dist/api/Synthesis.d.ts +2 -2
- package/dist/api/Synthesis.js +10 -7
- package/dist/api/Synthesis.js.map +1 -1
- package/dist/api/VoiceActivityDetection.js +2 -2
- package/dist/api/VoiceActivityDetection.js.map +1 -1
- package/dist/audio/AudioBufferConversion.d.ts +2 -2
- package/dist/audio/AudioBufferConversion.js +77 -43
- package/dist/audio/AudioBufferConversion.js.map +1 -1
- package/dist/audio/AudioPlayer.d.ts +7 -5
- package/dist/audio/AudioPlayer.js +136 -50
- package/dist/audio/AudioPlayer.js.map +1 -1
- package/dist/audio/AudioUtilities.d.ts +4 -3
- package/dist/audio/AudioUtilities.js +30 -15
- package/dist/audio/AudioUtilities.js.map +1 -1
- package/dist/audio/SoxPath.js +3 -3
- package/dist/audio/SoxPath.js.map +1 -1
- package/dist/build-tools/MakeTarballsForInstalledPackages.js +3 -3
- package/dist/build-tools/MakeTarballsForInstalledPackages.js.map +1 -1
- package/dist/cli/CLI.js +30 -36
- package/dist/cli/CLI.js.map +1 -1
- package/dist/cli/CLIConfigFile.js +2 -2
- package/dist/cli/CLIConfigFile.js.map +1 -1
- package/dist/cli/CLIOptions.d.ts +2 -0
- package/dist/cli/CLIOptions.js +1 -1
- package/dist/cli/CLIOptions.js.map +1 -1
- package/dist/codecs/FFMpegTranscoder.d.ts +3 -3
- package/dist/codecs/FFMpegTranscoder.js +6 -6
- package/dist/codecs/FFMpegTranscoder.js.map +1 -1
- package/dist/codecs/TIMITCodec.d.ts +1 -1
- package/dist/codecs/TIMITCodec.js +4 -3
- package/dist/codecs/TIMITCodec.js.map +1 -1
- package/dist/codecs/WaveCodec.d.ts +3 -3
- package/dist/codecs/WaveCodec.js +37 -34
- package/dist/codecs/WaveCodec.js.map +1 -1
- package/dist/data-structures/DynamicTypedArray.d.ts +17 -0
- package/dist/data-structures/DynamicTypedArray.js +47 -0
- package/dist/data-structures/DynamicTypedArray.js.map +1 -0
- package/dist/data-structures/Queue.js.map +1 -0
- package/dist/data-structures/WindowedList.js.map +1 -0
- package/dist/denoising/NSNet2.d.ts +26 -0
- package/dist/denoising/NSNet2.js +128 -0
- package/dist/denoising/NSNet2.js.map +1 -0
- package/dist/denoising/RNNoise.js +3 -3
- package/dist/denoising/RNNoise.js.map +1 -1
- package/dist/dsp/FFT.d.ts +6 -1
- package/dist/dsp/FFT.js +17 -0
- package/dist/dsp/FFT.js.map +1 -1
- package/dist/encodings/Ascii.d.ts +10 -0
- package/dist/encodings/Ascii.js +41 -0
- package/dist/encodings/Ascii.js.map +1 -0
- package/dist/encodings/Base64.d.ts +5 -0
- package/dist/encodings/Base64.js +114 -0
- package/dist/encodings/Base64.js.map +1 -0
- package/dist/encodings/Hex.d.ts +3 -0
- package/dist/encodings/Hex.js +52 -0
- package/dist/encodings/Hex.js.map +1 -0
- package/dist/{utilities → encodings}/LEB128.d.ts +1 -1
- package/dist/{utilities → encodings}/LEB128.js +4 -4
- package/dist/encodings/LEB128.js.map +1 -0
- package/dist/{utilities → encodings}/LPVarInt.d.ts +1 -1
- package/dist/{utilities → encodings}/LPVarInt.js +6 -6
- package/dist/encodings/LPVarInt.js.map +1 -0
- package/dist/encodings/TextEncodingsCommon.d.ts +4 -0
- package/dist/encodings/TextEncodingsCommon.js +2 -0
- package/dist/encodings/TextEncodingsCommon.js.map +1 -0
- package/dist/encodings/Utf16.d.ts +10 -0
- package/dist/encodings/Utf16.js +36 -0
- package/dist/encodings/Utf16.js.map +1 -0
- package/dist/encodings/Utf32.d.ts +9 -0
- package/dist/encodings/Utf32.js +44 -0
- package/dist/encodings/Utf32.js.map +1 -0
- package/dist/encodings/Utf8.d.ts +10 -0
- package/dist/encodings/Utf8.js +97 -0
- package/dist/encodings/Utf8.js.map +1 -0
- package/dist/math/MedianFilter.js.map +1 -1
- package/dist/nlp/JapaneseSegmentation.js +2 -2
- package/dist/nlp/JapaneseSegmentation.js.map +1 -1
- package/dist/recognition/GoogleCloudSTT.js +2 -1
- package/dist/recognition/GoogleCloudSTT.js.map +1 -1
- package/dist/recognition/SileroSTT.js +3 -3
- package/dist/recognition/SileroSTT.js.map +1 -1
- package/dist/recognition/VoskSTT.js +3 -3
- package/dist/recognition/VoskSTT.js.map +1 -1
- package/dist/recognition/WhisperCppSTT.js +4 -5
- package/dist/recognition/WhisperCppSTT.js.map +1 -1
- package/dist/recognition/WhisperSTT.js +8 -7
- package/dist/recognition/WhisperSTT.js.map +1 -1
- package/dist/server/Client.d.ts +1 -1
- package/dist/server/Client.js +2 -1
- package/dist/server/Client.js.map +1 -1
- package/dist/server/Server.js +5 -4
- package/dist/server/Server.js.map +1 -1
- package/dist/server/Worker.js +1 -1
- package/dist/server/Worker.js.map +1 -1
- package/dist/source-separation/MDXNetSourceSeparation.js +1 -1
- package/dist/source-separation/MDXNetSourceSeparation.js.map +1 -1
- package/dist/speech-search/DTWSpeechSearch.d.ts +1 -1
- package/dist/speech-search/DTWSpeechSearch.js +25 -6
- package/dist/speech-search/DTWSpeechSearch.js.map +1 -1
- package/dist/subtitles/Subtitles.js +2 -2
- package/dist/subtitles/Subtitles.js.map +1 -1
- package/dist/synthesis/AzureCognitiveServicesTTS.js +17 -18
- package/dist/synthesis/AzureCognitiveServicesTTS.js.map +1 -1
- package/dist/synthesis/CoquiServerTTS.js +1 -1
- package/dist/synthesis/CoquiServerTTS.js.map +1 -1
- package/dist/synthesis/ElevenlabsTTS.js +1 -1
- package/dist/synthesis/ElevenlabsTTS.js.map +1 -1
- package/dist/synthesis/EspeakTTS.d.ts +0 -1
- package/dist/synthesis/EspeakTTS.js +0 -9
- package/dist/synthesis/EspeakTTS.js.map +1 -1
- package/dist/synthesis/FliteTTS.js +7 -8
- package/dist/synthesis/FliteTTS.js.map +1 -1
- package/dist/synthesis/GoogleCloudTTS.d.ts +1 -1
- package/dist/synthesis/GoogleCloudTTS.js +2 -1
- package/dist/synthesis/GoogleCloudTTS.js.map +1 -1
- package/dist/synthesis/GoogleTranslateTTS.d.ts +1 -1
- package/dist/synthesis/GoogleTranslateTTS.js +4 -3
- package/dist/synthesis/GoogleTranslateTTS.js.map +1 -1
- package/dist/synthesis/MicrosoftEdgeTTS.js +32 -7
- package/dist/synthesis/MicrosoftEdgeTTS.js.map +1 -1
- package/dist/synthesis/SapiTTS.js +1 -1
- package/dist/synthesis/SapiTTS.js.map +1 -1
- package/dist/synthesis/StreamlabsPollyTTS.d.ts +1 -1
- package/dist/synthesis/StreamlabsPollyTTS.js +1 -1
- package/dist/synthesis/StreamlabsPollyTTS.js.map +1 -1
- package/dist/synthesis/SvoxPicoTTS.js +6 -5
- package/dist/synthesis/SvoxPicoTTS.js.map +1 -1
- package/dist/synthesis/VitsTTS.js +2 -2
- package/dist/synthesis/VitsTTS.js.map +1 -1
- package/dist/tests/Test.js +0 -25
- package/dist/tests/Test.js.map +1 -1
- package/dist/text-language-detection/FastTextLanguageDetection.js +2 -2
- package/dist/text-language-detection/FastTextLanguageDetection.js.map +1 -1
- package/dist/typings/TypedArray.d.ts +4 -0
- package/dist/typings/TypedArray.js +2 -0
- package/dist/typings/TypedArray.js.map +1 -0
- package/dist/utilities/BinaryArrayConversion.d.ts +12 -22
- package/dist/utilities/BinaryArrayConversion.js +40 -90
- package/dist/utilities/BinaryArrayConversion.js.map +1 -1
- package/dist/utilities/BinaryUtilities.d.ts +13 -0
- package/dist/utilities/BinaryUtilities.js +113 -0
- package/dist/utilities/BinaryUtilities.js.map +1 -0
- package/dist/utilities/Compression.js +7 -6
- package/dist/utilities/Compression.js.map +1 -1
- package/dist/utilities/FileDownloader.js +26 -47
- package/dist/utilities/FileDownloader.js.map +1 -1
- package/dist/utilities/FileReader.d.ts +14 -0
- package/dist/utilities/FileReader.js +71 -0
- package/dist/utilities/FileReader.js.map +1 -0
- package/dist/utilities/FileSystem.d.ts +19 -17
- package/dist/utilities/FileSystem.js +170 -106
- package/dist/utilities/FileSystem.js.map +1 -1
- package/dist/utilities/FileWriter.d.ts +12 -0
- package/dist/utilities/FileWriter.js +60 -0
- package/dist/utilities/FileWriter.js.map +1 -0
- package/dist/utilities/NpmUtilities.d.ts +1 -0
- package/dist/utilities/NpmUtilities.js +14 -0
- package/dist/utilities/NpmUtilities.js.map +1 -0
- package/dist/utilities/PackageManager.js +7 -5
- package/dist/utilities/PackageManager.js.map +1 -1
- package/dist/utilities/PathUtilities.d.ts +8 -0
- package/dist/utilities/PathUtilities.js +28 -7
- package/dist/utilities/PathUtilities.js.map +1 -1
- package/dist/utilities/SignalChannel.d.ts +3 -1
- package/dist/utilities/SignalChannel.js +9 -5
- package/dist/utilities/SignalChannel.js.map +1 -1
- package/dist/utilities/StringBuilder.d.ts +10 -0
- package/dist/utilities/StringBuilder.js +39 -0
- package/dist/utilities/StringBuilder.js.map +1 -0
- package/dist/utilities/StringUtilities.js.map +1 -1
- package/dist/utilities/TarballMaker.js +6 -7
- package/dist/utilities/TarballMaker.js.map +1 -1
- package/dist/utilities/Timer.js +2 -2
- package/dist/utilities/Timer.js.map +1 -1
- package/dist/utilities/Utilities.d.ts +11 -4
- package/dist/utilities/Utilities.js +70 -18
- package/dist/utilities/Utilities.js.map +1 -1
- package/dist/utilities/VirtualFileReadStream.d.ts +3 -3
- package/dist/utilities/VirtualFileReadStream.js.map +1 -1
- package/dist/utilities/WasmMemoryManager.d.ts +5 -2
- package/dist/utilities/WasmMemoryManager.js +15 -3
- package/dist/utilities/WasmMemoryManager.js.map +1 -1
- package/docs/API.md +1 -1
- package/docs/Licenses.md +3 -0
- package/docs/Options.md +9 -3
- package/docs/Tasklist.md +0 -1
- package/docs/Technical.md +2 -2
- package/package.json +20 -22
- package/src/alignment/DTWSequenceAlignment.ts +5 -5
- package/src/alignment/SpeechAlignment.ts +6 -6
- package/src/api/Alignment.ts +65 -12
- package/src/api/Denoising.ts +97 -17
- package/src/api/SourceSeparation.ts +11 -8
- package/src/api/SpeechLanguageDetection.ts +4 -4
- package/src/api/Synthesis.ts +15 -11
- package/src/api/VoiceActivityDetection.ts +2 -2
- package/src/audio/AudioBufferConversion.ts +84 -45
- package/src/audio/AudioPlayer.ts +156 -54
- package/src/audio/AudioUtilities.ts +38 -22
- package/src/audio/SoxPath.ts +3 -3
- package/src/build-tools/MakeTarballsForInstalledPackages.ts +3 -3
- package/src/cli/CLI.ts +30 -36
- package/src/cli/CLIConfigFile.ts +2 -2
- package/src/cli/CLIOptions.ts +4 -1
- package/src/codecs/FFMpegTranscoder.ts +11 -11
- package/src/codecs/TIMITCodec.ts +5 -4
- package/src/codecs/WaveCodec.ts +42 -39
- package/src/data-structures/DynamicTypedArray.ts +64 -0
- package/src/denoising/NSNet2.ts +182 -0
- package/src/denoising/RNNoise.ts +3 -3
- package/src/dsp/FFT.ts +21 -1
- package/src/encodings/Ascii.ts +60 -0
- package/src/encodings/Base64.ts +157 -0
- package/src/encodings/Hex.ts +67 -0
- package/src/{utilities → encodings}/LEB128.ts +4 -4
- package/src/{utilities → encodings}/LPVarInt.ts +6 -6
- package/src/encodings/TextEncodingsCommon.ts +4 -0
- package/src/encodings/Utf16.ts +52 -0
- package/src/encodings/Utf32.ts +62 -0
- package/src/encodings/Utf8.ts +117 -0
- package/src/math/MedianFilter.ts +0 -2
- package/src/nlp/JapaneseSegmentation.ts +2 -2
- package/src/recognition/GoogleCloudSTT.ts +2 -1
- package/src/recognition/SileroSTT.ts +3 -3
- package/src/recognition/VoskSTT.ts +3 -3
- package/src/recognition/WhisperCppSTT.ts +4 -5
- package/src/recognition/WhisperSTT.ts +8 -7
- package/src/server/Client.ts +4 -3
- package/src/server/Server.ts +6 -5
- package/src/server/Worker.ts +1 -1
- package/src/source-separation/MDXNetSourceSeparation.ts +1 -1
- package/src/speech-search/DTWSpeechSearch.ts +36 -7
- package/src/subtitles/Subtitles.ts +3 -3
- package/src/synthesis/AzureCognitiveServicesTTS.ts +18 -15
- package/src/synthesis/CoquiServerTTS.ts +2 -2
- package/src/synthesis/ElevenlabsTTS.ts +1 -1
- package/src/synthesis/EspeakTTS.ts +0 -15
- package/src/synthesis/FliteTTS.ts +7 -8
- package/src/synthesis/GoogleCloudTTS.ts +3 -2
- package/src/synthesis/GoogleTranslateTTS.ts +5 -4
- package/src/synthesis/MicrosoftEdgeTTS.ts +47 -15
- package/src/synthesis/SapiTTS.ts +1 -1
- package/src/synthesis/StreamlabsPollyTTS.ts +1 -1
- package/src/synthesis/SvoxPicoTTS.ts +8 -7
- package/src/synthesis/VitsTTS.ts +2 -2
- package/src/tests/Test.ts +0 -30
- package/src/text-language-detection/FastTextLanguageDetection.ts +2 -2
- package/src/typings/Fillers.d.ts +2 -4
- package/src/typings/TypedArray.ts +5 -0
- package/src/utilities/BinaryArrayConversion.ts +51 -125
- package/src/utilities/BinaryUtilities.ts +138 -0
- package/src/utilities/Compression.ts +7 -6
- package/src/utilities/FileDownloader.ts +27 -52
- package/src/utilities/FileReader.ts +89 -0
- package/src/utilities/FileSystem.ts +215 -116
- package/src/utilities/FileWriter.ts +72 -0
- package/src/utilities/NpmUtilities.ts +23 -0
- package/src/utilities/PackageManager.ts +8 -5
- package/src/utilities/PathUtilities.ts +36 -7
- package/src/utilities/SignalChannel.ts +14 -7
- package/src/utilities/StringBuilder.ts +45 -0
- package/src/utilities/StringUtilities.ts +2 -0
- package/src/utilities/TarballMaker.ts +6 -7
- package/src/utilities/Timer.ts +4 -2
- package/src/utilities/Utilities.ts +80 -23
- package/src/utilities/VirtualFileReadStream.ts +5 -5
- package/src/utilities/WasmMemoryManager.ts +21 -5
- package/tsconfig.json +96 -0
- package/dist/utilities/DynamicUint8Array.d.ts +0 -9
- package/dist/utilities/DynamicUint8Array.js +0 -31
- package/dist/utilities/DynamicUint8Array.js.map +0 -1
- package/dist/utilities/LEB128.js.map +0 -1
- package/dist/utilities/LPVarInt.js.map +0 -1
- package/dist/utilities/Queue.js.map +0 -1
- package/dist/utilities/WindowedList.js.map +0 -1
- package/src/utilities/DynamicUint8Array.ts +0 -39
- /package/dist/{utilities → data-structures}/Queue.d.ts +0 -0
- /package/dist/{utilities → data-structures}/Queue.js +0 -0
- /package/dist/{utilities → data-structures}/WindowedList.d.ts +0 -0
- /package/dist/{utilities → data-structures}/WindowedList.js +0 -0
- /package/src/{utilities → data-structures}/Queue.ts +0 -0
- /package/src/{utilities → data-structures}/WindowedList.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileDownloader.js","sourceRoot":"","sources":["../../src/utilities/FileDownloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"FileDownloader.js","sourceRoot":"","sources":["../../src/utilities/FileDownloader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAAsB,EAAE,SAAiB,EAAE,YAAoB,EAAE,WAAW,GAAG,SAAS;IACvI,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;IAE3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IACrD,MAAM,eAAe,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,QAAQ,UAAU,CAAC,CAAA;IACtE,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAA;IAC1D,MAAM,SAAS,CAAC,WAAW,CAAC,CAAA;IAE5B,MAAM,CAAC,GAAG,EAAE,CAAA;IAEZ,MAAM,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAEpH,MAAM,CAAC,GAAG,EAAE,CAAA;IAEZ,MAAM,CAAC,KAAK,CAAC,cAAc,WAAW,EAAE,CAAC,CAAA;IAEzC,MAAM,cAAc,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;IAElD,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;IAE7B,KAAK,MAAM,QAAQ,IAAI,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACnD,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QACtD,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAEpD,MAAM,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;IAEzB,MAAM,CAAC,GAAG,EAAE,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAsB,EAAE,cAAsB,EAAE,MAAM,GAAG,aAAa;IACxG,MAAM,KAAK,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAA;IAEzE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IAEzB,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAA;IAE/B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAW,OAAO,CAAC,CAAA;IAEjD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAA;IAE/C,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,CAAA;IAEvB,MAAM,0BAA0B,GAAG,GAAG,CAAA;IAEtC,IAAI,eAAe,GAAG,KAAK,CAAA;IAC3B,IAAI,eAAe,GAAG,CAAC,CAAA;IACvB,IAAI,UAAU,GAAuB,SAAS,CAAA;IAE9C,MAAM,oBAAoB,GAAG,GAAG,CAAA;IAEhC,IAAI,UAAU,GAAG,MAAM,CAAA;IAEvB,MAAM,oBAAoB,GAAiD,EAAE,CAAA;IAE7E,SAAS,YAAY;QACpB,IAAI,CAAC,eAAe,EAAE,CAAC;YACtB,OAAM;QACP,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;QACnD,MAAM,gBAAgB,GAAG,eAAe,GAAG,IAAI,GAAG,IAAI,CAAA;QAEtD,MAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAA;QAC5C,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,WAAW,CAAA;QAE7D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,kBAAkB,GAAG,0BAA0B,CAAC,CAAA;QAEzH,IAAI,kBAA0B,CAAA;QAE9B,IAAI,iBAAiB,EAAE,CAAC;YACvB,kBAAkB,GAAG,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACtH,CAAC;aAAM,CAAC;YACP,kBAAkB,GAAG,sBAAsB,CAAA;QAC5C,CAAC;QAED,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAElE,MAAM,YAAY,GAAG,gBAAgB,IAAI,WAAW,CAAA;QAEpD,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACvD,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC7C,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACrD,MAAM,yBAAyB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAEnE,IAAI,SAAS,EAAE,CAAC;YACf,IAAI,SAAiB,CAAA;YAErB,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;gBAC7B,MAAM,UAAU,GAAG,CAAC,gBAAgB,GAAG,WAAW,CAAC,GAAG,GAAG,CAAA;gBAEzD,SAAS,GAAG,GAAG,MAAM,MAAM,mBAAmB,MAAM,cAAc,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,eAAe,OAAO,CAAA;YAC3L,CAAC;iBAAM,CAAC;gBACP,SAAS,GAAG,GAAG,MAAM,MAAM,mBAAmB,OAAO,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,eAAe,OAAO,CAAA;YACrH,CAAC;YAED,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,CAAA;gBACX,KAAK,CAAC,SAAS,CAAC,CAAA;YACjB,CAAC;YAED,UAAU,GAAG,SAAS,CAAA;QACvB,CAAC;aAAM,CAAC;YACP,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;gBAC7B,OAAM;YACP,CAAC;YAED,MAAM,OAAO,GAAG,eAAe,GAAG,UAAU,CAAA;YAC5C,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAA;YAEvE,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,cAAc,OAAO,CAAC,CAAA;YACjC,CAAC;YAED,IAAI,cAAc,IAAI,UAAU,EAAE,CAAC;gBAClC,KAAK,CAAC,cAAc,CAAC,CAAA;gBAErB,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;oBACpB,KAAK,CAAC,KAAK,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,yBAAyB,OAAO,CAAC,CAAA;gBACtF,CAAC;qBAAM,CAAC;oBACP,KAAK,CAAC,GAAG,CAAC,CAAA;gBACX,CAAC;gBAED,UAAU,GAAG,cAAc,CAAA;YAC5B,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC9D,UAAU,GAAG,mBAAmB,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEzF,MAAM,eAAe,GAAG,GAAG,cAAc,IAAI,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAA;IAC7E,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,CAAA;IAElD,IAAI,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,YAAY,EAAE,CAAA;IACf,CAAC,EAAE,oBAAoB,CAAC,CAAA;IAExB,IAAI,CAAC;QACJ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;gBAC/B,eAAe,GAAG,IAAI,CAAA;YACvB,CAAC;YAED,eAAe,IAAI,KAAK,CAAC,MAAM,CAAA;YAE/B,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;IACF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,aAAa,CAAC,cAAc,CAAC,CAAA;QAE7B,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;QAE1B,MAAM,CAAC,CAAA;IACR,CAAC;IAED,aAAa,CAAC,cAAc,CAAC,CAAA;IAC7B,YAAY,EAAE,CAAA;IAEd,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,CAAA;IAEX,MAAM,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAA;AAC5C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class FileReader {
|
|
2
|
+
readonly filePath: string;
|
|
3
|
+
private fileHandle?;
|
|
4
|
+
private finished;
|
|
5
|
+
private disposed;
|
|
6
|
+
private readOffset;
|
|
7
|
+
constructor(filePath: string);
|
|
8
|
+
readChunk(buffer: Uint8Array): Promise<Uint8Array>;
|
|
9
|
+
private openIfNeeded;
|
|
10
|
+
dispose(): Promise<void>;
|
|
11
|
+
get isOpened(): boolean;
|
|
12
|
+
get isDisposed(): boolean;
|
|
13
|
+
get isFinished(): boolean;
|
|
14
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { open, close, read } from "./FileSystem.js";
|
|
2
|
+
export class FileReader {
|
|
3
|
+
filePath;
|
|
4
|
+
fileHandle;
|
|
5
|
+
finished = false;
|
|
6
|
+
disposed = false;
|
|
7
|
+
readOffset = 0;
|
|
8
|
+
constructor(filePath) {
|
|
9
|
+
this.filePath = filePath;
|
|
10
|
+
}
|
|
11
|
+
async readChunk(buffer) {
|
|
12
|
+
if (this.isDisposed) {
|
|
13
|
+
throw new Error(`FileReader has been disposed`);
|
|
14
|
+
}
|
|
15
|
+
await this.openIfNeeded();
|
|
16
|
+
let bufferWriteOffset = 0;
|
|
17
|
+
while (bufferWriteOffset < buffer.length) {
|
|
18
|
+
const remainingSizeInBuffer = buffer.length - bufferWriteOffset;
|
|
19
|
+
let bytesRead;
|
|
20
|
+
try {
|
|
21
|
+
({ bytesRead } = await read(this.fileHandle, buffer, bufferWriteOffset, remainingSizeInBuffer, this.readOffset));
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
await this.dispose();
|
|
25
|
+
throw e;
|
|
26
|
+
}
|
|
27
|
+
if (bytesRead === 0) {
|
|
28
|
+
this.finished = true;
|
|
29
|
+
await this.dispose();
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
bufferWriteOffset += bytesRead;
|
|
33
|
+
this.readOffset += bytesRead;
|
|
34
|
+
}
|
|
35
|
+
return buffer.subarray(0, bufferWriteOffset);
|
|
36
|
+
}
|
|
37
|
+
async openIfNeeded() {
|
|
38
|
+
if (this.isDisposed) {
|
|
39
|
+
throw new Error(`FileWriter has been disposed`);
|
|
40
|
+
}
|
|
41
|
+
if (this.isOpened) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.fileHandle = await open(this.filePath, 'r');
|
|
45
|
+
}
|
|
46
|
+
async dispose() {
|
|
47
|
+
if (this.isDisposed) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (this.isOpened) {
|
|
51
|
+
try {
|
|
52
|
+
await close(this.fileHandle);
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
this.disposed = true;
|
|
58
|
+
this.readOffset = 0;
|
|
59
|
+
this.fileHandle = undefined;
|
|
60
|
+
}
|
|
61
|
+
get isOpened() {
|
|
62
|
+
return this.fileHandle !== undefined;
|
|
63
|
+
}
|
|
64
|
+
get isDisposed() {
|
|
65
|
+
return this.disposed;
|
|
66
|
+
}
|
|
67
|
+
get isFinished() {
|
|
68
|
+
return this.finished;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=FileReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileReader.js","sourceRoot":"","sources":["../../src/utilities/FileReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEnD,MAAM,OAAO,UAAU;IAMM;IALpB,UAAU,CAAS;IACnB,QAAQ,GAAG,KAAK,CAAA;IAChB,QAAQ,GAAG,KAAK,CAAA;IAChB,UAAU,GAAG,CAAC,CAAA;IAEtB,YAA4B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAC5C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAkB;QACjC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAChD,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QAEzB,IAAI,iBAAiB,GAAG,CAAC,CAAA;QAEzB,OAAO,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,GAAG,iBAAiB,CAAA;YAE/D,IAAI,SAAiB,CAAA;YAErB,IAAI,CAAC;gBACJ,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;YAClH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;gBAEpB,MAAM,CAAC,CAAA;YACR,CAAC;YAED,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBAEpB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;gBAEpB,MAAK;YACN,CAAC;YAED,iBAAiB,IAAI,SAAS,CAAA;YAC9B,IAAI,CAAC,UAAU,IAAI,SAAS,CAAA;QAC7B,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAA;IAC7C,CAAC;IAEO,KAAK,CAAC,YAAY;QACzB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAM;QACP,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAM;QACP,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC;gBACJ,MAAM,KAAK,CAAC,IAAI,CAAC,UAAW,CAAC,CAAA;YAC9B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;YACb,CAAC;QACF,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS,CAAA;IACrC,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,QAAQ,CAAA;IACrB,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,QAAQ,CAAA;IACrB,CAAC;CACD"}
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
import * as fsExtra from 'fs-extra/esm';
|
|
2
2
|
import gracefulFS from 'graceful-fs';
|
|
3
|
-
export declare const readFile: typeof gracefulFS.readFile.__promisify__;
|
|
4
|
-
export declare const readdir: typeof gracefulFS.readdir.__promisify__;
|
|
5
|
-
export declare const stat: typeof gracefulFS.stat.__promisify__;
|
|
6
3
|
export declare const open: typeof gracefulFS.open.__promisify__;
|
|
7
4
|
export declare const close: typeof gracefulFS.close.__promisify__;
|
|
5
|
+
export declare const read: typeof gracefulFS.read.__promisify__;
|
|
6
|
+
export declare const write: typeof gracefulFS.write.__promisify__;
|
|
7
|
+
export declare const existsSync: typeof gracefulFS.existsSync;
|
|
8
|
+
export declare const stat: typeof gracefulFS.stat.__promisify__;
|
|
8
9
|
export declare const chmod: typeof gracefulFS.chmod.__promisify__;
|
|
9
|
-
export declare const copyFile: typeof gracefulFS.copyFile.__promisify__;
|
|
10
10
|
export declare const access: typeof gracefulFS.access.__promisify__;
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const
|
|
13
|
-
export declare const existsSync: typeof gracefulFS.existsSync;
|
|
11
|
+
export declare const readdir: typeof gracefulFS.readdir.__promisify__;
|
|
12
|
+
export declare const copyFile: typeof gracefulFS.copyFile.__promisify__;
|
|
14
13
|
export declare const remove: typeof fsExtra.remove;
|
|
15
14
|
export declare const copy: typeof fsExtra.copy;
|
|
16
|
-
export declare
|
|
17
|
-
export declare function
|
|
18
|
-
export declare function isFileIsUpToDate(filePath: string, timeRangeSeconds: number): Promise<boolean>;
|
|
19
|
-
export declare function computeFileSha256Hex(filePath: string): Promise<string>;
|
|
15
|
+
export declare function readFileAsBinary(filePath: string): Promise<Uint8Array>;
|
|
16
|
+
export declare function readFileAsUtf8(filePath: string): Promise<string>;
|
|
20
17
|
export declare function readAndParseJsonFile(jsonFilePath: string, useJson5?: boolean): Promise<any>;
|
|
21
|
-
export declare function writeFile(filePath: string,
|
|
22
|
-
export declare function
|
|
23
|
-
export declare function
|
|
24
|
-
export declare function
|
|
18
|
+
export declare function writeFile(filePath: string, content: Uint8Array | string): Promise<void>;
|
|
19
|
+
export declare function writeBinaryFile(filePath: string, content: Uint8Array): Promise<void>;
|
|
20
|
+
export declare function writeUtf8File(filePath: string, content: string): Promise<void>;
|
|
21
|
+
export declare function writeJsonFile(filePath: string, content: any, useJson5?: boolean): Promise<void>;
|
|
22
|
+
export declare function writeFileSafe(filePath: string, content: Uint8Array | string): Promise<void>;
|
|
25
23
|
export declare function ensureDir(dirPath: string): Promise<void>;
|
|
24
|
+
export declare function testDirectoryIsWritable(dir: string): Promise<boolean>;
|
|
25
|
+
export declare function readDirRecursive(dir: string, pathFilter?: (filePath: string) => boolean): Promise<string[]>;
|
|
26
|
+
export declare function getAppDataDir(appName: string): string;
|
|
26
27
|
export declare function move(source: string, dest: string): Promise<void>;
|
|
27
28
|
export declare function existsAndIsWritable(targetPath: string): Promise<boolean>;
|
|
28
|
-
export declare function
|
|
29
|
-
export declare function
|
|
29
|
+
export declare function chmodRecursive(rootPath: string, newMode: number): Promise<void>;
|
|
30
|
+
export declare function isFileIsUpToDate(filePath: string, maxTimeDifferenceSeconds: number): Promise<boolean>;
|
|
31
|
+
export declare function computeFileSha256Hex(filePath: string): Promise<string>;
|
|
@@ -1,33 +1,147 @@
|
|
|
1
1
|
import * as fsExtra from 'fs-extra/esm';
|
|
2
2
|
import gracefulFS from 'graceful-fs';
|
|
3
3
|
import * as os from 'node:os';
|
|
4
|
-
import path from 'node:path';
|
|
5
4
|
import { promisify } from 'node:util';
|
|
6
|
-
import {
|
|
7
|
-
import { getRandomHexString } from './Utilities.js';
|
|
5
|
+
import { getRandomHexString, parseJson, stringifyAndFormatJson } from './Utilities.js';
|
|
8
6
|
import { appName } from '../api/Common.js';
|
|
9
|
-
import { getAppTempDir } from './PathUtilities.js';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
import { getAppTempDir, getDirName, joinPath, normalizePath, parsePath } from './PathUtilities.js';
|
|
8
|
+
import { createDynamicUint8Array } from '../data-structures/DynamicTypedArray.js';
|
|
9
|
+
import { ChunkedUtf8Decoder } from '../encodings/Utf8.js';
|
|
10
|
+
import { FileWriter } from './FileWriter.js';
|
|
11
|
+
import { FileReader } from './FileReader.js';
|
|
14
12
|
export const open = promisify(gracefulFS.open);
|
|
15
13
|
export const close = promisify(gracefulFS.close);
|
|
14
|
+
export const read = promisify(gracefulFS.read);
|
|
15
|
+
export const write = promisify(gracefulFS.write);
|
|
16
|
+
export const existsSync = gracefulFS.existsSync;
|
|
17
|
+
export const stat = promisify(gracefulFS.stat);
|
|
16
18
|
export const chmod = promisify(gracefulFS.chmod);
|
|
17
|
-
export const copyFile = promisify(gracefulFS.copyFile);
|
|
18
19
|
export const access = promisify(gracefulFS.access);
|
|
19
|
-
export const
|
|
20
|
-
export const
|
|
21
|
-
export const existsSync = gracefulFS.existsSync;
|
|
20
|
+
export const readdir = promisify(gracefulFS.readdir);
|
|
21
|
+
export const copyFile = promisify(gracefulFS.copyFile);
|
|
22
22
|
export const remove = fsExtra.remove;
|
|
23
23
|
export const copy = fsExtra.copy;
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
///////////////////////////////////////////////////////////////////////////////////////////
|
|
25
|
+
// File read operations
|
|
26
|
+
///////////////////////////////////////////////////////////////////////////////////////////
|
|
27
|
+
export async function readFileAsBinary(filePath) {
|
|
28
|
+
const chunkSize = 2 ** 20;
|
|
29
|
+
const fileInfo = await stat(filePath);
|
|
30
|
+
const fileSize = fileInfo.size;
|
|
31
|
+
const fileReader = new FileReader(filePath);
|
|
32
|
+
const buffer = new Uint8Array(chunkSize);
|
|
33
|
+
const result = createDynamicUint8Array(fileSize);
|
|
34
|
+
while (!fileReader.isFinished) {
|
|
35
|
+
const chunk = await fileReader.readChunk(buffer);
|
|
36
|
+
result.addArray(chunk);
|
|
37
|
+
}
|
|
38
|
+
return result.toTypedArray();
|
|
39
|
+
}
|
|
40
|
+
export async function readFileAsUtf8(filePath) {
|
|
41
|
+
const chunkSize = 2 ** 20;
|
|
42
|
+
const fileReader = new FileReader(filePath);
|
|
43
|
+
const buffer = new Uint8Array(chunkSize);
|
|
44
|
+
const result = new ChunkedUtf8Decoder();
|
|
45
|
+
while (!fileReader.isFinished) {
|
|
46
|
+
const chunk = await fileReader.readChunk(buffer);
|
|
47
|
+
result.writeChunk(chunk);
|
|
48
|
+
}
|
|
49
|
+
return result.toString();
|
|
50
|
+
}
|
|
51
|
+
export async function readAndParseJsonFile(jsonFilePath, useJson5 = false) {
|
|
52
|
+
const textContent = await readFileAsUtf8(jsonFilePath);
|
|
53
|
+
return parseJson(textContent, useJson5);
|
|
54
|
+
}
|
|
55
|
+
///////////////////////////////////////////////////////////////////////////////////////////
|
|
56
|
+
// File write operations
|
|
57
|
+
///////////////////////////////////////////////////////////////////////////////////////////
|
|
58
|
+
export async function writeFile(filePath, content) {
|
|
59
|
+
if (content instanceof Uint8Array) {
|
|
60
|
+
return writeBinaryFile(filePath, content);
|
|
61
|
+
}
|
|
62
|
+
else if (typeof content === 'string') {
|
|
63
|
+
return writeUtf8File(filePath, content);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
throw new Error(`Content can only be a Uint8Array or string`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export async function writeBinaryFile(filePath, content) {
|
|
70
|
+
const maxChunkSize = 2 ** 20;
|
|
71
|
+
const fileDir = getDirName(filePath);
|
|
72
|
+
await ensureDir(fileDir);
|
|
73
|
+
const fileWriter = new FileWriter(filePath);
|
|
74
|
+
let readOffset = 0;
|
|
75
|
+
while (true) {
|
|
76
|
+
const chunk = content.subarray(readOffset, readOffset + maxChunkSize);
|
|
77
|
+
if (chunk.length === 0) {
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
await fileWriter.write(chunk);
|
|
81
|
+
readOffset += chunk.length;
|
|
82
|
+
}
|
|
83
|
+
await fileWriter.dispose();
|
|
84
|
+
}
|
|
85
|
+
export async function writeUtf8File(filePath, content) {
|
|
86
|
+
const maxChunkSize = 2 ** 20;
|
|
87
|
+
const fileDir = getDirName(filePath);
|
|
88
|
+
await ensureDir(fileDir);
|
|
89
|
+
const fileWriter = new FileWriter(filePath);
|
|
90
|
+
const textEncoder = new TextEncoder();
|
|
91
|
+
let readOffset = 0;
|
|
92
|
+
while (true) {
|
|
93
|
+
const stringChunk = content.substring(readOffset, readOffset + maxChunkSize);
|
|
94
|
+
if (stringChunk.length === 0) {
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
const chunk = textEncoder.encode(stringChunk);
|
|
98
|
+
await fileWriter.write(chunk);
|
|
99
|
+
readOffset += stringChunk.length;
|
|
100
|
+
}
|
|
101
|
+
await fileWriter.dispose();
|
|
102
|
+
}
|
|
103
|
+
export async function writeJsonFile(filePath, content, useJson5 = false) {
|
|
104
|
+
const textContent = await stringifyAndFormatJson(content, useJson5);
|
|
105
|
+
await writeUtf8File(filePath, textContent);
|
|
106
|
+
}
|
|
107
|
+
export async function writeFileSafe(filePath, content) {
|
|
108
|
+
const tempDir = getAppTempDir(appName);
|
|
109
|
+
const tempFilePath = joinPath(tempDir, `${getRandomHexString(16)}.partial`);
|
|
110
|
+
await writeFile(tempFilePath, content);
|
|
111
|
+
await move(tempFilePath, filePath);
|
|
112
|
+
}
|
|
113
|
+
///////////////////////////////////////////////////////////////////////////////////////////
|
|
114
|
+
// Directory operations
|
|
115
|
+
///////////////////////////////////////////////////////////////////////////////////////////
|
|
116
|
+
export async function ensureDir(dirPath) {
|
|
117
|
+
dirPath = normalizePath(dirPath);
|
|
118
|
+
if (existsSync(dirPath)) {
|
|
119
|
+
const dirStats = await stat(dirPath);
|
|
120
|
+
if (!dirStats.isDirectory()) {
|
|
121
|
+
throw new Error(`The path '${dirPath}' exists but is not a directory.`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
return fsExtra.ensureDir(dirPath);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export async function testDirectoryIsWritable(dir) {
|
|
129
|
+
const testFileName = joinPath(dir, getRandomHexString(16));
|
|
130
|
+
try {
|
|
131
|
+
await fsExtra.createFile(testFileName);
|
|
132
|
+
await remove(testFileName);
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
export async function readDirRecursive(dir, pathFilter) {
|
|
26
140
|
if (!(await stat(dir)).isDirectory()) {
|
|
27
141
|
throw new Error(`'${dir}' is not a directory`);
|
|
28
142
|
}
|
|
29
143
|
const filenamesInDir = await readdir(dir);
|
|
30
|
-
const filesInDir = filenamesInDir.map(filename =>
|
|
144
|
+
const filesInDir = filenamesInDir.map(filename => joinPath(dir, filename));
|
|
31
145
|
const result = [];
|
|
32
146
|
const subDirectories = [];
|
|
33
147
|
for (const filePath of filesInDir) {
|
|
@@ -35,98 +149,42 @@ export async function readDirRecursive(dir, fileFilter) {
|
|
|
35
149
|
subDirectories.push(filePath);
|
|
36
150
|
}
|
|
37
151
|
else {
|
|
38
|
-
if (
|
|
152
|
+
if (pathFilter && !pathFilter(filePath)) {
|
|
39
153
|
continue;
|
|
40
154
|
}
|
|
41
155
|
result.push(filePath);
|
|
42
156
|
}
|
|
43
157
|
}
|
|
44
158
|
for (const subDirectory of subDirectories) {
|
|
45
|
-
const filesInSubdirectory = await readDirRecursive(subDirectory,
|
|
159
|
+
const filesInSubdirectory = await readDirRecursive(subDirectory, pathFilter);
|
|
46
160
|
result.push(...filesInSubdirectory);
|
|
47
161
|
}
|
|
48
162
|
return result;
|
|
49
163
|
}
|
|
50
|
-
export async function isFileIsUpToDate(filePath, timeRangeSeconds) {
|
|
51
|
-
const fileUpdateTime = (await stat(filePath)).mtime.valueOf();
|
|
52
|
-
const currentTime = (new Date()).valueOf();
|
|
53
|
-
const differenceInMilliseconds = currentTime - fileUpdateTime;
|
|
54
|
-
const differenceInSeconds = differenceInMilliseconds / 1000;
|
|
55
|
-
return differenceInSeconds <= timeRangeSeconds;
|
|
56
|
-
}
|
|
57
|
-
export async function computeFileSha256Hex(filePath) {
|
|
58
|
-
const resultOpenPromise = new OpenPromise();
|
|
59
|
-
const crypto = await import('crypto');
|
|
60
|
-
const hash = crypto.createHash('sha256');
|
|
61
|
-
const readStream = createReadStream(filePath);
|
|
62
|
-
readStream.on('data', data => hash.update(data));
|
|
63
|
-
readStream.on('error', error => resultOpenPromise.reject(error));
|
|
64
|
-
readStream.on('end', () => resultOpenPromise.resolve(hash.digest('hex')));
|
|
65
|
-
return resultOpenPromise.promise;
|
|
66
|
-
}
|
|
67
|
-
export async function readAndParseJsonFile(jsonFilePath, useJson5 = false) {
|
|
68
|
-
const fileContent = await readFile(jsonFilePath, { encoding: 'utf-8' });
|
|
69
|
-
if (useJson5) {
|
|
70
|
-
const { default: JSON5 } = await import('json5');
|
|
71
|
-
return JSON5.parse(fileContent);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
return JSON.parse(fileContent);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
export async function writeFile(filePath, data, options) {
|
|
78
|
-
return outputFile(filePath, data, options);
|
|
79
|
-
}
|
|
80
|
-
export async function writeFileSafe(filePath, data, options) {
|
|
81
|
-
const tempDir = getAppTempDir(appName);
|
|
82
|
-
const tempFilePath = path.join(tempDir, `${getRandomHexString(16)}.partial`);
|
|
83
|
-
await writeFile(tempFilePath, data, options);
|
|
84
|
-
await move(tempFilePath, filePath);
|
|
85
|
-
}
|
|
86
164
|
export function getAppDataDir(appName) {
|
|
87
165
|
let dataDir;
|
|
88
166
|
const platform = process.platform;
|
|
89
167
|
const homeDir = os.homedir();
|
|
90
168
|
if (platform == 'win32') {
|
|
91
|
-
dataDir =
|
|
169
|
+
dataDir = joinPath(homeDir, 'AppData', 'Local', appName);
|
|
92
170
|
}
|
|
93
171
|
else if (platform == 'darwin') {
|
|
94
|
-
dataDir =
|
|
172
|
+
dataDir = joinPath(homeDir, 'Library', 'Application Support', appName);
|
|
95
173
|
}
|
|
96
174
|
else if (platform == 'linux') {
|
|
97
|
-
dataDir =
|
|
175
|
+
dataDir = joinPath(homeDir, '.local', 'share', appName);
|
|
98
176
|
}
|
|
99
177
|
else {
|
|
100
178
|
throw new Error(`Unsupport platform ${platform}`);
|
|
101
179
|
}
|
|
102
180
|
return dataDir;
|
|
103
181
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (rootPathStat.isDirectory()) {
|
|
108
|
-
const fileList = await readdir(rootPath);
|
|
109
|
-
for (const filename of fileList) {
|
|
110
|
-
const filePath = path.join(rootPath, filename);
|
|
111
|
-
await chmodRecursive(filePath, newMode);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
export async function ensureDir(dirPath) {
|
|
116
|
-
dirPath = path.normalize(dirPath);
|
|
117
|
-
if (existsSync(dirPath)) {
|
|
118
|
-
const dirStats = await stat(dirPath);
|
|
119
|
-
if (!dirStats.isDirectory()) {
|
|
120
|
-
throw new Error(`The path '${dirPath}' exists but is not a directory.`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
return fsExtra.ensureDir(dirPath);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
182
|
+
///////////////////////////////////////////////////////////////////////////////////////////
|
|
183
|
+
// Copy operations
|
|
184
|
+
///////////////////////////////////////////////////////////////////////////////////////////
|
|
127
185
|
export async function move(source, dest) {
|
|
128
|
-
source =
|
|
129
|
-
dest =
|
|
186
|
+
source = normalizePath(source);
|
|
187
|
+
dest = normalizePath(dest);
|
|
130
188
|
if (existsSync(dest)) {
|
|
131
189
|
const destPathExistsAndIsWritable = await existsAndIsWritable(dest);
|
|
132
190
|
if (!destPathExistsAndIsWritable) {
|
|
@@ -134,7 +192,7 @@ export async function move(source, dest) {
|
|
|
134
192
|
}
|
|
135
193
|
}
|
|
136
194
|
else {
|
|
137
|
-
const destDir =
|
|
195
|
+
const destDir = parsePath(dest).dir;
|
|
138
196
|
const destDirIsWritable = await testDirectoryIsWritable(destDir);
|
|
139
197
|
if (!destDirIsWritable) {
|
|
140
198
|
throw new Error(`The directory ${destDir} is not writable. There may be a permissions issue.`);
|
|
@@ -142,6 +200,9 @@ export async function move(source, dest) {
|
|
|
142
200
|
}
|
|
143
201
|
return fsExtra.move(source, dest, { overwrite: true });
|
|
144
202
|
}
|
|
203
|
+
///////////////////////////////////////////////////////////////////////////////////////////
|
|
204
|
+
// Misc operations
|
|
205
|
+
///////////////////////////////////////////////////////////////////////////////////////////
|
|
145
206
|
export async function existsAndIsWritable(targetPath) {
|
|
146
207
|
try {
|
|
147
208
|
await access(targetPath, gracefulFS.constants.W_OK);
|
|
@@ -151,31 +212,34 @@ export async function existsAndIsWritable(targetPath) {
|
|
|
151
212
|
}
|
|
152
213
|
return true;
|
|
153
214
|
}
|
|
154
|
-
export async function
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
await
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
215
|
+
export async function chmodRecursive(rootPath, newMode) {
|
|
216
|
+
const rootPathStat = await stat(rootPath);
|
|
217
|
+
await chmod(rootPath, newMode);
|
|
218
|
+
if (rootPathStat.isDirectory()) {
|
|
219
|
+
const fileList = await readdir(rootPath);
|
|
220
|
+
for (const filename of fileList) {
|
|
221
|
+
const filePath = joinPath(rootPath, filename);
|
|
222
|
+
await chmodRecursive(filePath, newMode);
|
|
223
|
+
}
|
|
162
224
|
}
|
|
163
|
-
return true;
|
|
164
225
|
}
|
|
165
|
-
export async function
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
226
|
+
export async function isFileIsUpToDate(filePath, maxTimeDifferenceSeconds) {
|
|
227
|
+
const fileUpdateTime = (await stat(filePath)).mtime.valueOf();
|
|
228
|
+
const currentTime = (new Date()).valueOf();
|
|
229
|
+
const differenceInMilliseconds = currentTime - fileUpdateTime;
|
|
230
|
+
const differenceInSeconds = differenceInMilliseconds / 1000;
|
|
231
|
+
return differenceInSeconds <= maxTimeDifferenceSeconds;
|
|
232
|
+
}
|
|
233
|
+
export async function computeFileSha256Hex(filePath) {
|
|
234
|
+
const crypto = await import('crypto');
|
|
235
|
+
const hash = crypto.createHash('sha256');
|
|
236
|
+
const fileReader = new FileReader(filePath);
|
|
237
|
+
const buffer = new Uint8Array(2 ** 16);
|
|
238
|
+
while (!fileReader.isFinished) {
|
|
239
|
+
const chunk = await fileReader.readChunk(buffer);
|
|
240
|
+
hash.update(chunk);
|
|
241
|
+
}
|
|
242
|
+
const result = hash.digest('hex');
|
|
243
|
+
return result;
|
|
180
244
|
}
|
|
181
245
|
//# sourceMappingURL=FileSystem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSystem.js","sourceRoot":"","sources":["../../src/utilities/FileSystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,UAAU,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAE7B,OAAO,
|
|
1
|
+
{"version":3,"file":"FileSystem.js","sourceRoot":"","sources":["../../src/utilities/FileSystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,UAAU,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAElG,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAA;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AAEhD,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AAEhD,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;AAE/C,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAC9C,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;AAElD,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAEtD,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;AACpC,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;AAEhC,2FAA2F;AAC3F,uBAAuB;AACvB,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACtD,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,CAAA;IAEzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAA;IAE9B,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAA;IAEhD,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAEhD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,YAAY,EAAE,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACpD,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,CAAA;IAEzB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAA;IAExC,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAA;IAEvC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAEhD,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,YAAoB,EAAE,QAAQ,GAAG,KAAK;IAChF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,CAAA;IAEtD,OAAO,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AACxC,CAAC;AAED,2FAA2F;AAC3F,wBAAwB;AACxB,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,OAA4B;IAC7E,IAAI,OAAO,YAAY,UAAU,EAAE,CAAC;QACnC,OAAO,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;SAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC9D,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAmB;IAC1E,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,CAAA;IAE5B,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAEpC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;IAExB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IAE3C,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,OAAO,IAAI,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,CAAA;QAErE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAK;QACN,CAAC;QAED,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAE7B,UAAU,IAAI,KAAK,CAAC,MAAM,CAAA;IAC3B,CAAC;IAED,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IACpE,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,CAAA;IAE5B,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAEpC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAA;IAExB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IAE3C,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IAErC,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,OAAO,IAAI,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,CAAA;QAE5E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAK;QACN,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAE7C,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAE7B,UAAU,IAAI,WAAW,CAAC,MAAM,CAAA;IACjC,CAAC;IAED,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAY,EAAE,QAAQ,GAAG,KAAK;IACnF,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAEnE,MAAM,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,OAA4B;IACjF,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IAE3E,MAAM,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAEtC,MAAM,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;AACnC,CAAC;AAED,2FAA2F;AAC3F,uBAAuB;AACvB,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC9C,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IAEhC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;QAEpC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,kCAAkC,CAAC,CAAA;QACxE,CAAC;IACF,CAAC;SAAM,CAAC;QACP,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,GAAW;IACxD,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAA;IAE1D,IAAI,CAAC;QACJ,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QACtC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,KAAK,CAAA;IACb,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,UAA0C;IAC7F,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,sBAAsB,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE1E,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,cAAc,GAAa,EAAE,CAAA;IAEnC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1C,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC;aAAM,CAAC;YACP,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzC,SAAQ;YACT,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;IACF,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;QAC3C,MAAM,mBAAmB,GAAG,MAAM,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;QAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,MAAM,CAAA;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC5C,IAAI,OAAe,CAAA;IAEnB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IAE5B,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QACzB,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACzD,CAAC;SAAM,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACjC,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAA;IACvE,CAAC;SAAM,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QAChC,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;SAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC;AAED,2FAA2F;AAC3F,kBAAkB;AAClB,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,MAAc,EAAE,IAAY;IACtD,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IAC9B,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAE1B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,2BAA2B,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAEnE,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,4EAA4E,CAAC,CAAA;QAC3H,CAAC;IACF,CAAC;SAAM,CAAC;QACP,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAA;QACnC,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAA;QAEhE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,qDAAqD,CAAC,CAAA;QAC/F,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACvD,CAAC;AAED,2FAA2F;AAC3F,kBAAkB;AAClB,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IAC3D,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAA;IACb,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAe;IACrE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEzC,MAAM,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAE9B,IAAI,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAA;QAExC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAE7C,MAAM,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACxC,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB,EAAE,wBAAgC;IACxF,MAAM,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;IAE7D,MAAM,WAAW,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;IAE1C,MAAM,wBAAwB,GAAG,WAAW,GAAG,cAAc,CAAA;IAE7D,MAAM,mBAAmB,GAAG,wBAAwB,GAAG,IAAI,CAAA;IAE3D,OAAO,mBAAmB,IAAI,wBAAwB,CAAA;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IAC1D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAA;IAErC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAExC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAEtC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAEhD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEjC,OAAO,MAAM,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class FileWriter {
|
|
2
|
+
readonly filePath: string;
|
|
3
|
+
private fileHandle?;
|
|
4
|
+
private disposed;
|
|
5
|
+
private writeOffset;
|
|
6
|
+
constructor(filePath: string);
|
|
7
|
+
write(chunk: Uint8Array): Promise<void>;
|
|
8
|
+
private openIfNeeded;
|
|
9
|
+
dispose(): Promise<void>;
|
|
10
|
+
get isOpened(): boolean;
|
|
11
|
+
get isDisposed(): boolean;
|
|
12
|
+
}
|