react-native-update 10.59.2 → 10.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (877) hide show
  1. package/README-CN.md +13 -7
  2. package/README.md +15 -6
  3. package/android/build.gradle +25 -33
  4. package/android/jni/Android.mk +18 -24
  5. package/android/jni/Application.mk +3 -1
  6. package/android/lib/arm64-v8a/librnpushy.so +0 -0
  7. package/android/lib/armeabi-v7a/librnpushy.so +0 -0
  8. package/android/lib/x86/librnpushy.so +0 -0
  9. package/android/lib/x86_64/librnpushy.so +0 -0
  10. package/android/proguard.pro +9 -7
  11. package/android/src/main/java/cn/reactnative/modules/update/ApkInstaller.java +3 -8
  12. package/android/src/main/java/cn/reactnative/modules/update/ArchiveLimits.java +24 -6
  13. package/android/src/main/java/cn/reactnative/modules/update/BundlePreparationResult.java +2 -0
  14. package/android/src/main/java/cn/reactnative/modules/update/BundledResourceCopier.java +50 -51
  15. package/android/src/main/java/cn/reactnative/modules/update/CleanupKeepNames.java +12 -13
  16. package/android/src/main/java/cn/reactnative/modules/update/CopyGroupResult.java +3 -0
  17. package/android/src/main/java/cn/reactnative/modules/update/CrashHold.java +22 -30
  18. package/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java +284 -452
  19. package/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java +8 -4
  20. package/android/src/main/java/cn/reactnative/modules/update/ErrorCodes.java +32 -3
  21. package/android/src/main/java/cn/reactnative/modules/update/FileOperationException.java +1 -1
  22. package/android/src/main/java/cn/reactnative/modules/update/FlowBridge.java +39 -8
  23. package/android/src/main/java/cn/reactnative/modules/update/HttpClients.java +63 -0
  24. package/android/src/main/java/cn/reactnative/modules/update/HttpUtils.java +0 -45
  25. package/android/src/main/java/cn/reactnative/modules/update/InstallRecord.java +68 -116
  26. package/android/src/main/java/cn/reactnative/modules/update/NativeCore.java +10 -2
  27. package/android/src/main/java/cn/reactnative/modules/update/PatchFailedException.java +1 -1
  28. package/android/src/main/java/cn/reactnative/modules/update/PushyRuntime.java +53 -62
  29. package/android/src/main/java/cn/reactnative/modules/update/ReactReloadManager.java +9 -24
  30. package/android/src/main/java/cn/reactnative/modules/update/ResumePlan.java +31 -0
  31. package/android/src/main/java/cn/reactnative/modules/update/SafeZipFile.java +42 -80
  32. package/android/src/main/java/cn/reactnative/modules/update/StateSerialRunner.java +22 -39
  33. package/android/src/main/java/cn/reactnative/modules/update/SyncCoordinator.java +474 -500
  34. package/android/src/main/java/cn/reactnative/modules/update/Texts.java +15 -1
  35. package/android/src/main/java/cn/reactnative/modules/update/Threads.java +44 -0
  36. package/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java +265 -188
  37. package/android/src/main/java/cn/reactnative/modules/update/UpdateEventEmitter.java +1 -1
  38. package/android/src/main/java/cn/reactnative/modules/update/UpdateFileUtils.java +75 -17
  39. package/android/src/main/java/cn/reactnative/modules/update/{UpdateModuleImpl.java → UpdateModule.java} +114 -96
  40. package/android/src/main/java/cn/reactnative/modules/update/UpdatePackage.java +16 -19
  41. package/android/src/main/java/cn/reactnative/modules/update/VersionScopedKeys.java +64 -0
  42. package/android/src/oldarch/cn/reactnative/modules/update/NativePushySpec.java +71 -0
  43. package/cpp/android_jni/archive_limits_jni.cpp +83 -0
  44. package/cpp/android_jni/install_record_jni.cpp +89 -0
  45. package/cpp/android_jni/jni_log.h +30 -0
  46. package/cpp/android_jni/jni_natives.h +46 -0
  47. package/cpp/android_jni/jni_registration.cpp +146 -0
  48. package/cpp/android_jni/jni_util.h +160 -0
  49. package/cpp/android_jni/resume_plan_jni.cpp +58 -0
  50. package/cpp/android_jni/update_core_android.cpp +448 -0
  51. package/cpp/android_jni/update_flow_jni.cpp +150 -0
  52. package/{android/jni → cpp/hpatch}/hpatch.c +5 -5
  53. package/{android/jni → cpp/hpatch}/hpatch.h +4 -1
  54. package/cpp/patch_core/archive_limits.cpp +194 -0
  55. package/cpp/patch_core/archive_limits.h +101 -10
  56. package/cpp/patch_core/archive_patch_core.cpp +98 -15
  57. package/cpp/patch_core/archive_patch_core.h +51 -0
  58. package/cpp/patch_core/digest.h +5 -4
  59. package/cpp/patch_core/error_codes.h +15 -11
  60. package/cpp/patch_core/install_record.cpp +430 -0
  61. package/cpp/patch_core/install_record.h +165 -9
  62. package/cpp/patch_core/native_texts.h +102 -0
  63. package/cpp/patch_core/patch_core.cpp +62 -16
  64. package/cpp/patch_core/patch_core.h +27 -7
  65. package/cpp/patch_core/patch_manifest.cpp +201 -0
  66. package/cpp/patch_core/patch_manifest.h +74 -0
  67. package/cpp/patch_core/resume_plan.cpp +226 -0
  68. package/cpp/patch_core/resume_plan.h +88 -0
  69. package/cpp/patch_core/state_ops.h +5 -3
  70. package/cpp/update_flow_core/flow_json.cpp +82 -8
  71. package/cpp/update_flow_core/flow_json.h +21 -0
  72. package/cpp/update_flow_core/native_config.cpp +436 -0
  73. package/cpp/update_flow_core/native_config.h +84 -0
  74. package/cpp/update_flow_core/native_round.cpp +321 -0
  75. package/cpp/update_flow_core/native_round.h +94 -0
  76. package/cpp/update_flow_core/round_engine.cpp +456 -0
  77. package/cpp/update_flow_core/round_engine.h +106 -0
  78. package/cpp/update_flow_core/update_flow_core.cpp +5 -14
  79. package/cpp/update_flow_core/update_flow_core.h +2 -2
  80. package/harmony/hvigor-plugin.ts +11 -19
  81. package/harmony/pushy/src/main/cpp/CMakeLists.txt +19 -26
  82. package/harmony/pushy/src/main/cpp/PushyPackage.h +2 -2
  83. package/harmony/pushy/src/main/cpp/PushyTurboModule.cpp +57 -94
  84. package/harmony/pushy/src/main/cpp/pushy.cpp +817 -518
  85. package/harmony/pushy/src/main/ets/ArchiveLimits.ts +55 -75
  86. package/harmony/pushy/src/main/ets/DownloadTask.ts +279 -539
  87. package/harmony/pushy/src/main/ets/DownloadTaskParams.ts +6 -6
  88. package/harmony/pushy/src/main/ets/ErrorCodes.ts +3 -15
  89. package/harmony/pushy/src/main/ets/EventHub.ts +1 -1
  90. package/harmony/pushy/src/main/ets/InstallRecord.ts +54 -151
  91. package/harmony/pushy/src/main/ets/Logger.ts +20 -34
  92. package/harmony/pushy/src/main/ets/NativePatchCore.ts +150 -41
  93. package/harmony/pushy/src/main/ets/PushyConfiguration.ts +8 -85
  94. package/harmony/pushy/src/main/ets/PushyFileJSBundleProvider.ets +8 -3
  95. package/harmony/pushy/src/main/ets/PushyTurboModule.ts +11 -25
  96. package/harmony/pushy/src/main/ets/SaveFile.ts +99 -18
  97. package/harmony/pushy/src/main/ets/SyncCoordinator.ts +291 -543
  98. package/harmony/pushy/src/main/ets/Texts.ts +8 -7
  99. package/harmony/pushy/src/main/ets/UpdateContext.ts +245 -152
  100. package/harmony/pushy.har +0 -0
  101. package/ios/RCTPushy/RCTPushy+Launch.mm +190 -0
  102. package/ios/RCTPushy/RCTPushy.h +12 -0
  103. package/ios/RCTPushy/RCTPushy.mm +135 -2666
  104. package/ios/RCTPushy/RCTPushyCommon.h +28 -0
  105. package/ios/RCTPushy/RCTPushyConfiguration.h +0 -8
  106. package/ios/RCTPushy/RCTPushyConfiguration.mm +40 -123
  107. package/ios/RCTPushy/RCTPushyDownloader.mm +152 -198
  108. package/ios/RCTPushy/RCTPushyInstallRecord.mm +101 -0
  109. package/ios/RCTPushy/RCTPushyInstaller.mm +732 -0
  110. package/ios/RCTPushy/RCTPushyInternal.h +185 -0
  111. package/ios/RCTPushy/RCTPushyOrchestrator.mm +969 -0
  112. package/ios/RCTPushy/RCTPushyState.mm +382 -0
  113. package/package.json +46 -25
  114. package/react-native-update.podspec +73 -82
  115. package/src/client.ts +126 -1633
  116. package/src/clientActivation.ts +324 -0
  117. package/src/clientCheck.ts +405 -0
  118. package/src/clientDownload.ts +448 -0
  119. package/src/clientNativeConfig.ts +171 -0
  120. package/src/clientReporter.ts +398 -0
  121. package/src/clientState.ts +51 -0
  122. package/src/context.ts +1 -1
  123. package/src/core.ts +39 -10
  124. package/src/endpoint.ts +22 -8
  125. package/src/error.ts +18 -35
  126. package/src/i18n.ts +18 -83
  127. package/src/locales/en.ts +1 -5
  128. package/src/locales/zh.ts +1 -5
  129. package/src/provider.tsx +86 -67
  130. package/src/telemetry.ts +0 -13
  131. package/src/type.ts +0 -15
  132. package/src/updateFlowCore.ts +116 -10
  133. package/src/utils.ts +49 -42
  134. package/android/jni/HDiffPatch/.travis.yml +0 -33
  135. package/android/jni/HDiffPatch/CHANGELOG.md +0 -153
  136. package/android/jni/HDiffPatch/Makefile +0 -157
  137. package/android/jni/HDiffPatch/_atosize.h +0 -83
  138. package/android/jni/HDiffPatch/_clock_for_demo.h +0 -47
  139. package/android/jni/HDiffPatch/_dir_ignore.h +0 -191
  140. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/Android.mk +0 -37
  141. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/Application.mk +0 -7
  142. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/build_libs.bat +0 -1
  143. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/build_libs.sh +0 -1
  144. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch.c +0 -18
  145. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch.h +0 -20
  146. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch_jni.c +0 -28
  147. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/java/com/github/sisong/HPatch.java +0 -8
  148. package/android/jni/HDiffPatch/builds/codeblocks/HDiffPatch.workspace +0 -8
  149. package/android/jni/HDiffPatch/builds/codeblocks/HDiffZ.cbp +0 -219
  150. package/android/jni/HDiffPatch/builds/codeblocks/HPatchZ.cbp +0 -156
  151. package/android/jni/HDiffPatch/builds/codeblocks/unitTest.cbp +0 -65
  152. package/android/jni/HDiffPatch/builds/vc/HDiffPatch.sln +0 -105
  153. package/android/jni/HDiffPatch/builds/vc/HDiffZ.vcxproj +0 -237
  154. package/android/jni/HDiffPatch/builds/vc/HDiffZ.vcxproj.user +0 -3
  155. package/android/jni/HDiffPatch/builds/vc/HPatchZ.vcxproj +0 -318
  156. package/android/jni/HDiffPatch/builds/vc/HPatchZ.vcxproj.user +0 -3
  157. package/android/jni/HDiffPatch/builds/vc/unitTest.vcxproj +0 -182
  158. package/android/jni/HDiffPatch/builds/vc/unitTest.vcxproj.user +0 -3
  159. package/android/jni/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/contents.xcworkspacedata +0 -30
  160. package/android/jni/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  161. package/android/jni/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.pbxproj +0 -408
  162. package/android/jni/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  163. package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.pbxproj +0 -573
  164. package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  165. package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  166. package/android/jni/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.pbxproj +0 -396
  167. package/android/jni/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  168. package/android/jni/HDiffPatch/builds/xcode/lz4.xcodeproj/project.pbxproj +0 -268
  169. package/android/jni/HDiffPatch/builds/xcode/lz4.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  170. package/android/jni/HDiffPatch/builds/xcode/lzma.xcodeproj/project.pbxproj +0 -361
  171. package/android/jni/HDiffPatch/builds/xcode/lzma.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  172. package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.pbxproj +0 -301
  173. package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  174. package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  175. package/android/jni/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.pbxproj +0 -411
  176. package/android/jni/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  177. package/android/jni/HDiffPatch/builds/xcode/zstd.xcodeproj/project.pbxproj +0 -504
  178. package/android/jni/HDiffPatch/builds/xcode/zstd.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  179. package/android/jni/HDiffPatch/checksum_plugin_demo.h +0 -344
  180. package/android/jni/HDiffPatch/compress_parallel.cpp +0 -166
  181. package/android/jni/HDiffPatch/compress_parallel.h +0 -59
  182. package/android/jni/HDiffPatch/compress_plugin_demo.h +0 -1152
  183. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.cpp +0 -797
  184. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.h +0 -65
  185. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.cpp +0 -200
  186. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.h +0 -178
  187. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.cpp +0 -357
  188. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.h +0 -87
  189. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/file_for_dirDiff.h +0 -151
  190. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.c +0 -770
  191. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.h +0 -236
  192. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_private.h +0 -47
  193. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.c +0 -112
  194. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.h +0 -53
  195. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.c +0 -331
  196. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.h +0 -144
  197. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_stream.c +0 -176
  198. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_stream.h +0 -84
  199. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.c +0 -146
  200. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.h +0 -61
  201. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.c +0 -152
  202. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.h +0 -76
  203. package/android/jni/HDiffPatch/hdiffz.cpp +0 -1570
  204. package/android/jni/HDiffPatch/hpatch_dir_listener.h +0 -290
  205. package/android/jni/HDiffPatch/hpatchz.c +0 -1221
  206. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff.cpp +0 -1025
  207. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff.h +0 -116
  208. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff_types.h +0 -72
  209. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.cpp +0 -213
  210. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.h +0 -63
  211. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.cpp +0 -170
  212. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.h +0 -86
  213. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/config.h +0 -89
  214. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c +0 -13
  215. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c.inc.h +0 -398
  216. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.h +0 -194
  217. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.c +0 -13
  218. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.h +0 -204
  219. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort_private.h +0 -207
  220. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/sssort.c.inc.h +0 -815
  221. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/trsort.c.inc.h +0 -586
  222. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/utils.c.inc.h +0 -381
  223. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.c +0 -352
  224. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.h +0 -137
  225. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/bloom_filter.h +0 -137
  226. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/covers.h +0 -70
  227. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp +0 -628
  228. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.h +0 -87
  229. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp +0 -363
  230. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.h +0 -139
  231. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/mem_buf.h +0 -68
  232. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/pack_uint.h +0 -115
  233. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.cpp +0 -342
  234. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.h +0 -94
  235. package/android/jni/HDiffPatch/libHDiffPatch/HPatch/checksum_plugin.h +0 -52
  236. package/android/jni/HDiffPatch/libParallel/parallel_channel.cpp +0 -174
  237. package/android/jni/HDiffPatch/libParallel/parallel_channel.h +0 -73
  238. package/android/jni/HDiffPatch/libParallel/parallel_import.cpp +0 -367
  239. package/android/jni/HDiffPatch/libParallel/parallel_import.h +0 -92
  240. package/android/jni/lzma/Asm/arm/7zCrcOpt.asm +0 -100
  241. package/android/jni/lzma/Asm/x86/7zAsm.asm +0 -147
  242. package/android/jni/lzma/Asm/x86/7zCrcOpt.asm +0 -147
  243. package/android/jni/lzma/Asm/x86/AesOpt.asm +0 -237
  244. package/android/jni/lzma/Asm/x86/LzmaDecOpt.asm +0 -1258
  245. package/android/jni/lzma/Asm/x86/XzCrc64Opt.asm +0 -205
  246. package/android/jni/lzma/C/7z.h +0 -202
  247. package/android/jni/lzma/C/7zAlloc.c +0 -80
  248. package/android/jni/lzma/C/7zAlloc.h +0 -19
  249. package/android/jni/lzma/C/7zArcIn.c +0 -1771
  250. package/android/jni/lzma/C/7zBuf.c +0 -36
  251. package/android/jni/lzma/C/7zBuf.h +0 -35
  252. package/android/jni/lzma/C/7zBuf2.c +0 -52
  253. package/android/jni/lzma/C/7zCrc.c +0 -128
  254. package/android/jni/lzma/C/7zCrc.h +0 -25
  255. package/android/jni/lzma/C/7zCrcOpt.c +0 -115
  256. package/android/jni/lzma/C/7zDec.c +0 -591
  257. package/android/jni/lzma/C/7zFile.c +0 -286
  258. package/android/jni/lzma/C/7zFile.h +0 -83
  259. package/android/jni/lzma/C/7zStream.c +0 -176
  260. package/android/jni/lzma/C/7zVersion.h +0 -27
  261. package/android/jni/lzma/C/7zVersion.rc +0 -55
  262. package/android/jni/lzma/C/Aes.c +0 -306
  263. package/android/jni/lzma/C/Aes.h +0 -38
  264. package/android/jni/lzma/C/AesOpt.c +0 -184
  265. package/android/jni/lzma/C/Alloc.c +0 -455
  266. package/android/jni/lzma/C/Alloc.h +0 -51
  267. package/android/jni/lzma/C/Bcj2.c +0 -257
  268. package/android/jni/lzma/C/Bcj2.h +0 -146
  269. package/android/jni/lzma/C/Bcj2Enc.c +0 -311
  270. package/android/jni/lzma/C/Bra.c +0 -230
  271. package/android/jni/lzma/C/Bra.h +0 -64
  272. package/android/jni/lzma/C/Bra86.c +0 -82
  273. package/android/jni/lzma/C/BraIA64.c +0 -53
  274. package/android/jni/lzma/C/CpuArch.c +0 -218
  275. package/android/jni/lzma/C/CpuArch.h +0 -336
  276. package/android/jni/lzma/C/Delta.c +0 -64
  277. package/android/jni/lzma/C/Delta.h +0 -19
  278. package/android/jni/lzma/C/DllSecur.c +0 -108
  279. package/android/jni/lzma/C/DllSecur.h +0 -20
  280. package/android/jni/lzma/C/LzFind.c +0 -1127
  281. package/android/jni/lzma/C/LzFind.h +0 -121
  282. package/android/jni/lzma/C/LzFindMt.c +0 -853
  283. package/android/jni/lzma/C/LzFindMt.h +0 -101
  284. package/android/jni/lzma/C/LzHash.h +0 -57
  285. package/android/jni/lzma/C/Lzma2DecMt.c +0 -1082
  286. package/android/jni/lzma/C/Lzma2DecMt.h +0 -79
  287. package/android/jni/lzma/C/Lzma2Enc.c +0 -803
  288. package/android/jni/lzma/C/Lzma2Enc.h +0 -55
  289. package/android/jni/lzma/C/Lzma86.h +0 -111
  290. package/android/jni/lzma/C/Lzma86Dec.c +0 -54
  291. package/android/jni/lzma/C/Lzma86Enc.c +0 -106
  292. package/android/jni/lzma/C/LzmaEnc.c +0 -2976
  293. package/android/jni/lzma/C/LzmaEnc.h +0 -76
  294. package/android/jni/lzma/C/LzmaLib.c +0 -40
  295. package/android/jni/lzma/C/LzmaLib.h +0 -131
  296. package/android/jni/lzma/C/MtCoder.c +0 -601
  297. package/android/jni/lzma/C/MtCoder.h +0 -141
  298. package/android/jni/lzma/C/MtDec.c +0 -1138
  299. package/android/jni/lzma/C/MtDec.h +0 -201
  300. package/android/jni/lzma/C/Ppmd.h +0 -85
  301. package/android/jni/lzma/C/Ppmd7.c +0 -712
  302. package/android/jni/lzma/C/Ppmd7.h +0 -142
  303. package/android/jni/lzma/C/Ppmd7Dec.c +0 -191
  304. package/android/jni/lzma/C/Ppmd7Enc.c +0 -187
  305. package/android/jni/lzma/C/RotateDefs.h +0 -30
  306. package/android/jni/lzma/C/Sha256.c +0 -248
  307. package/android/jni/lzma/C/Sha256.h +0 -26
  308. package/android/jni/lzma/C/Sort.c +0 -141
  309. package/android/jni/lzma/C/Sort.h +0 -18
  310. package/android/jni/lzma/C/Threads.c +0 -95
  311. package/android/jni/lzma/C/Threads.h +0 -70
  312. package/android/jni/lzma/C/ThreadsP.c +0 -396
  313. package/android/jni/lzma/C/ThreadsP.h +0 -31
  314. package/android/jni/lzma/C/Util/7z/7z.dsp +0 -241
  315. package/android/jni/lzma/C/Util/7z/7z.dsw +0 -29
  316. package/android/jni/lzma/C/Util/7z/7zMain.c +0 -686
  317. package/android/jni/lzma/C/Util/7z/Precomp.c +0 -4
  318. package/android/jni/lzma/C/Util/7z/Precomp.h +0 -10
  319. package/android/jni/lzma/C/Util/7z/makefile +0 -40
  320. package/android/jni/lzma/C/Util/7z/makefile.gcc +0 -75
  321. package/android/jni/lzma/C/Util/Lzma/LzmaUtil.c +0 -258
  322. package/android/jni/lzma/C/Util/Lzma/LzmaUtil.dsp +0 -168
  323. package/android/jni/lzma/C/Util/Lzma/LzmaUtil.dsw +0 -29
  324. package/android/jni/lzma/C/Util/Lzma/makefile +0 -28
  325. package/android/jni/lzma/C/Util/Lzma/makefile.gcc +0 -44
  326. package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.def +0 -4
  327. package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.dsp +0 -178
  328. package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.dsw +0 -29
  329. package/android/jni/lzma/C/Util/LzmaLib/LzmaLibExports.c +0 -14
  330. package/android/jni/lzma/C/Util/LzmaLib/makefile +0 -34
  331. package/android/jni/lzma/C/Util/LzmaLib/resource.rc +0 -3
  332. package/android/jni/lzma/C/Util/SfxSetup/Precomp.c +0 -4
  333. package/android/jni/lzma/C/Util/SfxSetup/Precomp.h +0 -10
  334. package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.c +0 -640
  335. package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.dsp +0 -231
  336. package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.dsw +0 -29
  337. package/android/jni/lzma/C/Util/SfxSetup/makefile +0 -37
  338. package/android/jni/lzma/C/Util/SfxSetup/makefile_con +0 -38
  339. package/android/jni/lzma/C/Util/SfxSetup/resource.rc +0 -5
  340. package/android/jni/lzma/C/Util/SfxSetup/setup.ico +0 -0
  341. package/android/jni/lzma/C/Xz.c +0 -90
  342. package/android/jni/lzma/C/Xz.h +0 -460
  343. package/android/jni/lzma/C/XzCrc64.c +0 -86
  344. package/android/jni/lzma/C/XzCrc64.h +0 -26
  345. package/android/jni/lzma/C/XzCrc64Opt.c +0 -69
  346. package/android/jni/lzma/C/XzDec.c +0 -2766
  347. package/android/jni/lzma/C/XzEnc.c +0 -1329
  348. package/android/jni/lzma/C/XzEnc.h +0 -60
  349. package/android/jni/lzma/C/XzIn.c +0 -319
  350. package/android/jni/lzma/CPP/7zip/7zip.mak +0 -240
  351. package/android/jni/lzma/CPP/7zip/Aes.mak +0 -7
  352. package/android/jni/lzma/CPP/7zip/Archive/7z/7zCompressionMode.cpp +0 -3
  353. package/android/jni/lzma/CPP/7zip/Archive/7z/7zCompressionMode.h +0 -76
  354. package/android/jni/lzma/CPP/7zip/Archive/7z/7zDecode.cpp +0 -569
  355. package/android/jni/lzma/CPP/7zip/Archive/7z/7zDecode.h +0 -70
  356. package/android/jni/lzma/CPP/7zip/Archive/7z/7zEncode.cpp +0 -678
  357. package/android/jni/lzma/CPP/7zip/Archive/7z/7zEncode.h +0 -92
  358. package/android/jni/lzma/CPP/7zip/Archive/7z/7zExtract.cpp +0 -423
  359. package/android/jni/lzma/CPP/7zip/Archive/7z/7zFolderInStream.cpp +0 -139
  360. package/android/jni/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h +0 -61
  361. package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandler.cpp +0 -763
  362. package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandler.h +0 -181
  363. package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp +0 -942
  364. package/android/jni/lzma/CPP/7zip/Archive/7z/7zHeader.cpp +0 -19
  365. package/android/jni/lzma/CPP/7zip/Archive/7z/7zHeader.h +0 -148
  366. package/android/jni/lzma/CPP/7zip/Archive/7z/7zIn.cpp +0 -1666
  367. package/android/jni/lzma/CPP/7zip/Archive/7z/7zIn.h +0 -445
  368. package/android/jni/lzma/CPP/7zip/Archive/7z/7zItem.h +0 -202
  369. package/android/jni/lzma/CPP/7zip/Archive/7z/7zOut.cpp +0 -901
  370. package/android/jni/lzma/CPP/7zip/Archive/7z/7zOut.h +0 -335
  371. package/android/jni/lzma/CPP/7zip/Archive/7z/7zProperties.cpp +0 -174
  372. package/android/jni/lzma/CPP/7zip/Archive/7z/7zProperties.h +0 -22
  373. package/android/jni/lzma/CPP/7zip/Archive/7z/7zRegister.cpp +0 -21
  374. package/android/jni/lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp +0 -22
  375. package/android/jni/lzma/CPP/7zip/Archive/7z/7zSpecStream.h +0 -35
  376. package/android/jni/lzma/CPP/7zip/Archive/7z/7zUpdate.cpp +0 -2500
  377. package/android/jni/lzma/CPP/7zip/Archive/7z/7zUpdate.h +0 -139
  378. package/android/jni/lzma/CPP/7zip/Archive/7z/StdAfx.cpp +0 -3
  379. package/android/jni/lzma/CPP/7zip/Archive/7z/StdAfx.h +0 -8
  380. package/android/jni/lzma/CPP/7zip/Archive/Archive.def +0 -12
  381. package/android/jni/lzma/CPP/7zip/Archive/Archive2.def +0 -19
  382. package/android/jni/lzma/CPP/7zip/Archive/ArchiveExports.cpp +0 -151
  383. package/android/jni/lzma/CPP/7zip/Archive/Common/CoderMixer2.cpp +0 -1125
  384. package/android/jni/lzma/CPP/7zip/Archive/Common/CoderMixer2.h +0 -447
  385. package/android/jni/lzma/CPP/7zip/Archive/Common/DummyOutStream.cpp +0 -17
  386. package/android/jni/lzma/CPP/7zip/Archive/Common/DummyOutStream.h +0 -25
  387. package/android/jni/lzma/CPP/7zip/Archive/Common/HandlerOut.cpp +0 -232
  388. package/android/jni/lzma/CPP/7zip/Archive/Common/HandlerOut.h +0 -110
  389. package/android/jni/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +0 -46
  390. package/android/jni/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.h +0 -67
  391. package/android/jni/lzma/CPP/7zip/Archive/Common/ItemNameUtils.cpp +0 -88
  392. package/android/jni/lzma/CPP/7zip/Archive/Common/ItemNameUtils.h +0 -28
  393. package/android/jni/lzma/CPP/7zip/Archive/Common/MultiStream.cpp +0 -191
  394. package/android/jni/lzma/CPP/7zip/Archive/Common/MultiStream.h +0 -89
  395. package/android/jni/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +0 -18
  396. package/android/jni/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h +0 -37
  397. package/android/jni/lzma/CPP/7zip/Archive/Common/ParseProperties.cpp +0 -3
  398. package/android/jni/lzma/CPP/7zip/Archive/Common/ParseProperties.h +0 -6
  399. package/android/jni/lzma/CPP/7zip/Archive/Common/StdAfx.h +0 -8
  400. package/android/jni/lzma/CPP/7zip/Archive/DllExports2.cpp +0 -122
  401. package/android/jni/lzma/CPP/7zip/Archive/IArchive.h +0 -608
  402. package/android/jni/lzma/CPP/7zip/Archive/Icons/7z.ico +0 -0
  403. package/android/jni/lzma/CPP/7zip/Archive/LzmaHandler.cpp +0 -629
  404. package/android/jni/lzma/CPP/7zip/Archive/SplitHandler.cpp +0 -359
  405. package/android/jni/lzma/CPP/7zip/Archive/StdAfx.h +0 -8
  406. package/android/jni/lzma/CPP/7zip/Archive/XzHandler.cpp +0 -1308
  407. package/android/jni/lzma/CPP/7zip/Archive/XzHandler.h +0 -11
  408. package/android/jni/lzma/CPP/7zip/Asm.mak +0 -9
  409. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp +0 -1910
  410. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsw +0 -29
  411. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +0 -3
  412. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h +0 -8
  413. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/makefile +0 -154
  414. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/resource.rc +0 -7
  415. package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +0 -3
  416. package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +0 -8
  417. package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/makefile +0 -96
  418. package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/resource.rc +0 -5
  419. package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +0 -3
  420. package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h +0 -8
  421. package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/makefile +0 -116
  422. package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/resource.rc +0 -5
  423. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +0 -799
  424. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +0 -477
  425. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +0 -29
  426. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +0 -3
  427. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h +0 -8
  428. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/makefile +0 -59
  429. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/makefile.gcc +0 -195
  430. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/resource.rc +0 -3
  431. package/android/jni/lzma/CPP/7zip/Bundles/LzmaSpec/LzmaSpec.cpp +0 -715
  432. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  433. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +0 -912
  434. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +0 -29
  435. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +0 -482
  436. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +0 -3
  437. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h +0 -8
  438. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/makefile +0 -134
  439. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/resource.rc +0 -5
  440. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +0 -246
  441. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +0 -86
  442. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +0 -137
  443. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +0 -11
  444. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +0 -803
  445. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +0 -29
  446. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +0 -364
  447. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +0 -3
  448. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h +0 -13
  449. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/makefile +0 -117
  450. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/resource.h +0 -6
  451. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/resource.rc +0 -16
  452. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  453. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  454. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +0 -988
  455. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +0 -29
  456. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +0 -241
  457. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +0 -3
  458. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h +0 -14
  459. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/makefile +0 -153
  460. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/resource.h +0 -1
  461. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/resource.rc +0 -50
  462. package/android/jni/lzma/CPP/7zip/Common/CWrappers.cpp +0 -250
  463. package/android/jni/lzma/CPP/7zip/Common/CWrappers.h +0 -120
  464. package/android/jni/lzma/CPP/7zip/Common/CreateCoder.cpp +0 -536
  465. package/android/jni/lzma/CPP/7zip/Common/CreateCoder.h +0 -192
  466. package/android/jni/lzma/CPP/7zip/Common/FilePathAutoRename.cpp +0 -46
  467. package/android/jni/lzma/CPP/7zip/Common/FilePathAutoRename.h +0 -10
  468. package/android/jni/lzma/CPP/7zip/Common/FileStreams.cpp +0 -475
  469. package/android/jni/lzma/CPP/7zip/Common/FileStreams.h +0 -166
  470. package/android/jni/lzma/CPP/7zip/Common/FilterCoder.cpp +0 -435
  471. package/android/jni/lzma/CPP/7zip/Common/FilterCoder.h +0 -205
  472. package/android/jni/lzma/CPP/7zip/Common/InBuffer.cpp +0 -163
  473. package/android/jni/lzma/CPP/7zip/Common/InBuffer.h +0 -92
  474. package/android/jni/lzma/CPP/7zip/Common/InOutTempBuffer.cpp +0 -127
  475. package/android/jni/lzma/CPP/7zip/Common/InOutTempBuffer.h +0 -48
  476. package/android/jni/lzma/CPP/7zip/Common/LimitedStreams.cpp +0 -367
  477. package/android/jni/lzma/CPP/7zip/Common/LimitedStreams.h +0 -252
  478. package/android/jni/lzma/CPP/7zip/Common/LockedStream.cpp +0 -3
  479. package/android/jni/lzma/CPP/7zip/Common/LockedStream.h +0 -6
  480. package/android/jni/lzma/CPP/7zip/Common/MethodId.cpp +0 -3
  481. package/android/jni/lzma/CPP/7zip/Common/MethodId.h +0 -10
  482. package/android/jni/lzma/CPP/7zip/Common/MethodProps.cpp +0 -509
  483. package/android/jni/lzma/CPP/7zip/Common/MethodProps.h +0 -264
  484. package/android/jni/lzma/CPP/7zip/Common/OffsetStream.cpp +0 -39
  485. package/android/jni/lzma/CPP/7zip/Common/OffsetStream.h +0 -26
  486. package/android/jni/lzma/CPP/7zip/Common/OutBuffer.cpp +0 -111
  487. package/android/jni/lzma/CPP/7zip/Common/OutBuffer.h +0 -66
  488. package/android/jni/lzma/CPP/7zip/Common/ProgressUtils.cpp +0 -51
  489. package/android/jni/lzma/CPP/7zip/Common/ProgressUtils.h +0 -35
  490. package/android/jni/lzma/CPP/7zip/Common/PropId.cpp +0 -108
  491. package/android/jni/lzma/CPP/7zip/Common/RegisterArc.h +0 -78
  492. package/android/jni/lzma/CPP/7zip/Common/RegisterCodec.h +0 -106
  493. package/android/jni/lzma/CPP/7zip/Common/StdAfx.h +0 -8
  494. package/android/jni/lzma/CPP/7zip/Common/StreamBinder.cpp +0 -156
  495. package/android/jni/lzma/CPP/7zip/Common/StreamBinder.h +0 -60
  496. package/android/jni/lzma/CPP/7zip/Common/StreamObjects.cpp +0 -285
  497. package/android/jni/lzma/CPP/7zip/Common/StreamObjects.h +0 -157
  498. package/android/jni/lzma/CPP/7zip/Common/StreamUtils.cpp +0 -56
  499. package/android/jni/lzma/CPP/7zip/Common/StreamUtils.h +0 -13
  500. package/android/jni/lzma/CPP/7zip/Common/UniqBlocks.cpp +0 -57
  501. package/android/jni/lzma/CPP/7zip/Common/UniqBlocks.h +0 -26
  502. package/android/jni/lzma/CPP/7zip/Common/VirtThread.cpp +0 -48
  503. package/android/jni/lzma/CPP/7zip/Common/VirtThread.h +0 -24
  504. package/android/jni/lzma/CPP/7zip/Compress/Bcj2Coder.cpp +0 -666
  505. package/android/jni/lzma/CPP/7zip/Compress/Bcj2Coder.h +0 -120
  506. package/android/jni/lzma/CPP/7zip/Compress/Bcj2Register.cpp +0 -24
  507. package/android/jni/lzma/CPP/7zip/Compress/BcjCoder.cpp +0 -24
  508. package/android/jni/lzma/CPP/7zip/Compress/BcjCoder.h +0 -31
  509. package/android/jni/lzma/CPP/7zip/Compress/BcjRegister.cpp +0 -17
  510. package/android/jni/lzma/CPP/7zip/Compress/BranchMisc.cpp +0 -23
  511. package/android/jni/lzma/CPP/7zip/Compress/BranchMisc.h +0 -35
  512. package/android/jni/lzma/CPP/7zip/Compress/BranchRegister.cpp +0 -41
  513. package/android/jni/lzma/CPP/7zip/Compress/ByteSwap.cpp +0 -92
  514. package/android/jni/lzma/CPP/7zip/Compress/CodecExports.cpp +0 -344
  515. package/android/jni/lzma/CPP/7zip/Compress/CopyCoder.cpp +0 -120
  516. package/android/jni/lzma/CPP/7zip/Compress/CopyCoder.h +0 -49
  517. package/android/jni/lzma/CPP/7zip/Compress/CopyRegister.cpp +0 -15
  518. package/android/jni/lzma/CPP/7zip/Compress/DeltaFilter.cpp +0 -128
  519. package/android/jni/lzma/CPP/7zip/Compress/Lzma2Decoder.cpp +0 -265
  520. package/android/jni/lzma/CPP/7zip/Compress/Lzma2Decoder.h +0 -96
  521. package/android/jni/lzma/CPP/7zip/Compress/Lzma2Encoder.cpp +0 -122
  522. package/android/jni/lzma/CPP/7zip/Compress/Lzma2Encoder.h +0 -42
  523. package/android/jni/lzma/CPP/7zip/Compress/Lzma2Register.cpp +0 -22
  524. package/android/jni/lzma/CPP/7zip/Compress/LzmaDecoder.cpp +0 -343
  525. package/android/jni/lzma/CPP/7zip/Compress/LzmaDecoder.h +0 -113
  526. package/android/jni/lzma/CPP/7zip/Compress/LzmaEncoder.cpp +0 -182
  527. package/android/jni/lzma/CPP/7zip/Compress/LzmaEncoder.h +0 -46
  528. package/android/jni/lzma/CPP/7zip/Compress/LzmaRegister.cpp +0 -22
  529. package/android/jni/lzma/CPP/7zip/Compress/PpmdDecoder.cpp +0 -170
  530. package/android/jni/lzma/CPP/7zip/Compress/PpmdDecoder.h +0 -86
  531. package/android/jni/lzma/CPP/7zip/Compress/PpmdEncoder.cpp +0 -152
  532. package/android/jni/lzma/CPP/7zip/Compress/PpmdEncoder.h +0 -58
  533. package/android/jni/lzma/CPP/7zip/Compress/PpmdRegister.cpp +0 -22
  534. package/android/jni/lzma/CPP/7zip/Compress/StdAfx.h +0 -8
  535. package/android/jni/lzma/CPP/7zip/Compress/XzDecoder.cpp +0 -150
  536. package/android/jni/lzma/CPP/7zip/Compress/XzDecoder.h +0 -92
  537. package/android/jni/lzma/CPP/7zip/Compress/XzEncoder.cpp +0 -245
  538. package/android/jni/lzma/CPP/7zip/Compress/XzEncoder.h +0 -46
  539. package/android/jni/lzma/CPP/7zip/Crc.mak +0 -8
  540. package/android/jni/lzma/CPP/7zip/Crc64.mak +0 -8
  541. package/android/jni/lzma/CPP/7zip/Crypto/7zAes.cpp +0 -280
  542. package/android/jni/lzma/CPP/7zip/Crypto/7zAes.h +0 -118
  543. package/android/jni/lzma/CPP/7zip/Crypto/7zAesRegister.cpp +0 -17
  544. package/android/jni/lzma/CPP/7zip/Crypto/MyAes.cpp +0 -112
  545. package/android/jni/lzma/CPP/7zip/Crypto/MyAes.h +0 -57
  546. package/android/jni/lzma/CPP/7zip/Crypto/MyAesReg.cpp +0 -16
  547. package/android/jni/lzma/CPP/7zip/Crypto/RandGen.cpp +0 -233
  548. package/android/jni/lzma/CPP/7zip/Crypto/RandGen.h +0 -40
  549. package/android/jni/lzma/CPP/7zip/Crypto/StdAfx.h +0 -8
  550. package/android/jni/lzma/CPP/7zip/GuiCommon.rc +0 -84
  551. package/android/jni/lzma/CPP/7zip/Guid.txt +0 -220
  552. package/android/jni/lzma/CPP/7zip/ICoder.h +0 -399
  553. package/android/jni/lzma/CPP/7zip/IDecl.h +0 -28
  554. package/android/jni/lzma/CPP/7zip/IPassword.h +0 -23
  555. package/android/jni/lzma/CPP/7zip/IProgress.h +0 -19
  556. package/android/jni/lzma/CPP/7zip/IStream.h +0 -127
  557. package/android/jni/lzma/CPP/7zip/LzmaDec.mak +0 -5
  558. package/android/jni/lzma/CPP/7zip/MyVersion.h +0 -2
  559. package/android/jni/lzma/CPP/7zip/MyVersionInfo.rc +0 -2
  560. package/android/jni/lzma/CPP/7zip/PropID.h +0 -127
  561. package/android/jni/lzma/CPP/7zip/SubBuild.mak +0 -3
  562. package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.cpp +0 -993
  563. package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.dsp +0 -235
  564. package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.dsw +0 -29
  565. package/android/jni/lzma/CPP/7zip/UI/Client7z/StdAfx.cpp +0 -3
  566. package/android/jni/lzma/CPP/7zip/UI/Client7z/StdAfx.h +0 -8
  567. package/android/jni/lzma/CPP/7zip/UI/Client7z/makefile +0 -28
  568. package/android/jni/lzma/CPP/7zip/UI/Client7z/resource.rc +0 -3
  569. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +0 -1295
  570. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h +0 -136
  571. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +0 -1715
  572. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.h +0 -403
  573. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveName.cpp +0 -155
  574. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveName.h +0 -10
  575. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +0 -161
  576. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.h +0 -112
  577. package/android/jni/lzma/CPP/7zip/UI/Common/Bench.cpp +0 -3618
  578. package/android/jni/lzma/CPP/7zip/UI/Common/Bench.h +0 -77
  579. package/android/jni/lzma/CPP/7zip/UI/Common/DefaultName.cpp +0 -37
  580. package/android/jni/lzma/CPP/7zip/UI/Common/DefaultName.h +0 -11
  581. package/android/jni/lzma/CPP/7zip/UI/Common/DirItem.h +0 -190
  582. package/android/jni/lzma/CPP/7zip/UI/Common/EnumDirItems.cpp +0 -1096
  583. package/android/jni/lzma/CPP/7zip/UI/Common/EnumDirItems.h +0 -42
  584. package/android/jni/lzma/CPP/7zip/UI/Common/ExitCode.h +0 -27
  585. package/android/jni/lzma/CPP/7zip/UI/Common/Extract.cpp +0 -482
  586. package/android/jni/lzma/CPP/7zip/UI/Common/Extract.h +0 -94
  587. package/android/jni/lzma/CPP/7zip/UI/Common/ExtractMode.h +0 -34
  588. package/android/jni/lzma/CPP/7zip/UI/Common/ExtractingFilePath.cpp +0 -280
  589. package/android/jni/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h +0 -31
  590. package/android/jni/lzma/CPP/7zip/UI/Common/HashCalc.cpp +0 -347
  591. package/android/jni/lzma/CPP/7zip/UI/Common/HashCalc.h +0 -110
  592. package/android/jni/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h +0 -114
  593. package/android/jni/lzma/CPP/7zip/UI/Common/LoadCodecs.cpp +0 -1074
  594. package/android/jni/lzma/CPP/7zip/UI/Common/LoadCodecs.h +0 -424
  595. package/android/jni/lzma/CPP/7zip/UI/Common/OpenArchive.cpp +0 -3553
  596. package/android/jni/lzma/CPP/7zip/UI/Common/OpenArchive.h +0 -436
  597. package/android/jni/lzma/CPP/7zip/UI/Common/PropIDUtils.cpp +0 -668
  598. package/android/jni/lzma/CPP/7zip/UI/Common/PropIDUtils.h +0 -18
  599. package/android/jni/lzma/CPP/7zip/UI/Common/Property.h +0 -14
  600. package/android/jni/lzma/CPP/7zip/UI/Common/SetProperties.cpp +0 -80
  601. package/android/jni/lzma/CPP/7zip/UI/Common/SetProperties.h +0 -10
  602. package/android/jni/lzma/CPP/7zip/UI/Common/SortUtils.cpp +0 -25
  603. package/android/jni/lzma/CPP/7zip/UI/Common/SortUtils.h +0 -10
  604. package/android/jni/lzma/CPP/7zip/UI/Common/StdAfx.h +0 -8
  605. package/android/jni/lzma/CPP/7zip/UI/Common/TempFiles.cpp +0 -19
  606. package/android/jni/lzma/CPP/7zip/UI/Common/TempFiles.h +0 -16
  607. package/android/jni/lzma/CPP/7zip/UI/Common/Update.cpp +0 -1704
  608. package/android/jni/lzma/CPP/7zip/UI/Common/Update.h +0 -200
  609. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateAction.cpp +0 -64
  610. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateAction.h +0 -66
  611. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateCallback.cpp +0 -771
  612. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateCallback.h +0 -162
  613. package/android/jni/lzma/CPP/7zip/UI/Common/UpdatePair.cpp +0 -233
  614. package/android/jni/lzma/CPP/7zip/UI/Common/UpdatePair.h +0 -27
  615. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateProduce.cpp +0 -70
  616. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateProduce.h +0 -55
  617. package/android/jni/lzma/CPP/7zip/UI/Common/WorkDir.cpp +0 -94
  618. package/android/jni/lzma/CPP/7zip/UI/Common/WorkDir.h +0 -26
  619. package/android/jni/lzma/CPP/7zip/UI/Common/ZipRegistry.h +0 -130
  620. package/android/jni/lzma/CPP/7zip/UI/Console/BenchCon.cpp +0 -41
  621. package/android/jni/lzma/CPP/7zip/UI/Console/BenchCon.h +0 -14
  622. package/android/jni/lzma/CPP/7zip/UI/Console/Console.mak +0 -43
  623. package/android/jni/lzma/CPP/7zip/UI/Console/Console.manifest +0 -13
  624. package/android/jni/lzma/CPP/7zip/UI/Console/ConsoleClose.cpp +0 -69
  625. package/android/jni/lzma/CPP/7zip/UI/Console/ConsoleClose.h +0 -33
  626. package/android/jni/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +0 -825
  627. package/android/jni/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.h +0 -164
  628. package/android/jni/lzma/CPP/7zip/UI/Console/HashCon.cpp +0 -367
  629. package/android/jni/lzma/CPP/7zip/UI/Console/HashCon.h +0 -48
  630. package/android/jni/lzma/CPP/7zip/UI/Console/List.cpp +0 -1359
  631. package/android/jni/lzma/CPP/7zip/UI/Console/List.h +0 -27
  632. package/android/jni/lzma/CPP/7zip/UI/Console/Main.cpp +0 -1154
  633. package/android/jni/lzma/CPP/7zip/UI/Console/MainAr.cpp +0 -175
  634. package/android/jni/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +0 -115
  635. package/android/jni/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.h +0 -66
  636. package/android/jni/lzma/CPP/7zip/UI/Console/PercentPrinter.cpp +0 -183
  637. package/android/jni/lzma/CPP/7zip/UI/Console/PercentPrinter.h +0 -62
  638. package/android/jni/lzma/CPP/7zip/UI/Console/StdAfx.cpp +0 -3
  639. package/android/jni/lzma/CPP/7zip/UI/Console/StdAfx.h +0 -8
  640. package/android/jni/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +0 -702
  641. package/android/jni/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.h +0 -124
  642. package/android/jni/lzma/CPP/7zip/UI/Console/UserInputUtils.cpp +0 -110
  643. package/android/jni/lzma/CPP/7zip/UI/Console/UserInputUtils.h +0 -27
  644. package/android/jni/lzma/CPP/7zip/UI/Console/makefile +0 -64
  645. package/android/jni/lzma/CPP/7zip/UI/Console/resource.rc +0 -7
  646. package/android/jni/lzma/CPP/7zip/UI/Explorer/MyMessages.cpp +0 -37
  647. package/android/jni/lzma/CPP/7zip/UI/Explorer/MyMessages.h +0 -16
  648. package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialog.cpp +0 -1025
  649. package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialog.h +0 -21
  650. package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialogRes.h +0 -9
  651. package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialog.cpp +0 -64
  652. package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialog.h +0 -28
  653. package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialogRes.h +0 -4
  654. package/android/jni/lzma/CPP/7zip/UI/FileManager/DialogSize.h +0 -16
  655. package/android/jni/lzma/CPP/7zip/UI/FileManager/ExtractCallback.cpp +0 -1037
  656. package/android/jni/lzma/CPP/7zip/UI/FileManager/ExtractCallback.h +0 -328
  657. package/android/jni/lzma/CPP/7zip/UI/FileManager/FormatUtils.cpp +0 -28
  658. package/android/jni/lzma/CPP/7zip/UI/FileManager/FormatUtils.h +0 -14
  659. package/android/jni/lzma/CPP/7zip/UI/FileManager/LangUtils.h +0 -40
  660. package/android/jni/lzma/CPP/7zip/UI/FileManager/MyWindowsNew.h +0 -76
  661. package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +0 -122
  662. package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h +0 -69
  663. package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.rc +0 -91
  664. package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +0 -17
  665. package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.cpp +0 -58
  666. package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.h +0 -28
  667. package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.rc +0 -14
  668. package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialogRes.h +0 -5
  669. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.cpp +0 -196
  670. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.h +0 -170
  671. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.rc +0 -12
  672. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +0 -1337
  673. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.h +0 -351
  674. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.rc +0 -40
  675. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +0 -48
  676. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +0 -80
  677. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialogRes.h +0 -3
  678. package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyName.cpp +0 -23
  679. package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyName.h +0 -10
  680. package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyNameRes.h +0 -95
  681. package/android/jni/lzma/CPP/7zip/UI/FileManager/SysIconUtils.cpp +0 -255
  682. package/android/jni/lzma/CPP/7zip/UI/FileManager/SysIconUtils.h +0 -62
  683. package/android/jni/lzma/CPP/7zip/UI/FileManager/resource.h +0 -177
  684. package/android/jni/lzma/CPP/7zip/UI/FileManager/resourceGui.h +0 -15
  685. package/android/jni/lzma/CPP/7zip/UI/GUI/Extract.rc +0 -59
  686. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp +0 -418
  687. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.h +0 -113
  688. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.rc +0 -98
  689. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialogRes.h +0 -24
  690. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp +0 -280
  691. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractGUI.h +0 -38
  692. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractRes.h +0 -51
  693. package/android/jni/lzma/CPP/7zip/UI/GUI/HashGUI.h +0 -27
  694. package/android/jni/lzma/CPP/7zip/UI/GUI/resource2.h +0 -2
  695. package/android/jni/lzma/CPP/Build.mak +0 -156
  696. package/android/jni/lzma/CPP/Common/AutoPtr.h +0 -35
  697. package/android/jni/lzma/CPP/Common/CRC.cpp +0 -7
  698. package/android/jni/lzma/CPP/Common/C_FileIO.cpp +0 -92
  699. package/android/jni/lzma/CPP/Common/C_FileIO.h +0 -53
  700. package/android/jni/lzma/CPP/Common/ComTry.h +0 -21
  701. package/android/jni/lzma/CPP/Common/CommandLineParser.cpp +0 -197
  702. package/android/jni/lzma/CPP/Common/CommandLineParser.h +0 -63
  703. package/android/jni/lzma/CPP/Common/Common.h +0 -43
  704. package/android/jni/lzma/CPP/Common/CrcReg.cpp +0 -98
  705. package/android/jni/lzma/CPP/Common/Defs.h +0 -15
  706. package/android/jni/lzma/CPP/Common/DynamicBuffer.h +0 -64
  707. package/android/jni/lzma/CPP/Common/IntToString.cpp +0 -193
  708. package/android/jni/lzma/CPP/Common/IntToString.h +0 -28
  709. package/android/jni/lzma/CPP/Common/Lang.h +0 -23
  710. package/android/jni/lzma/CPP/Common/ListFileUtils.cpp +0 -132
  711. package/android/jni/lzma/CPP/Common/ListFileUtils.h +0 -18
  712. package/android/jni/lzma/CPP/Common/MyBuffer.h +0 -259
  713. package/android/jni/lzma/CPP/Common/MyBuffer2.h +0 -100
  714. package/android/jni/lzma/CPP/Common/MyCom.h +0 -277
  715. package/android/jni/lzma/CPP/Common/MyException.h +0 -14
  716. package/android/jni/lzma/CPP/Common/MyGuidDef.h +0 -54
  717. package/android/jni/lzma/CPP/Common/MyInitGuid.h +0 -45
  718. package/android/jni/lzma/CPP/Common/MyLinux.h +0 -42
  719. package/android/jni/lzma/CPP/Common/MyString.cpp +0 -1659
  720. package/android/jni/lzma/CPP/Common/MyString.h +0 -868
  721. package/android/jni/lzma/CPP/Common/MyTypes.h +0 -35
  722. package/android/jni/lzma/CPP/Common/MyUnknown.h +0 -17
  723. package/android/jni/lzma/CPP/Common/MyVector.cpp +0 -3
  724. package/android/jni/lzma/CPP/Common/MyVector.h +0 -634
  725. package/android/jni/lzma/CPP/Common/MyWindows.cpp +0 -145
  726. package/android/jni/lzma/CPP/Common/MyWindows.h +0 -231
  727. package/android/jni/lzma/CPP/Common/NewHandler.cpp +0 -163
  728. package/android/jni/lzma/CPP/Common/NewHandler.h +0 -88
  729. package/android/jni/lzma/CPP/Common/Sha256Reg.cpp +0 -40
  730. package/android/jni/lzma/CPP/Common/StdAfx.h +0 -8
  731. package/android/jni/lzma/CPP/Common/StdInStream.cpp +0 -89
  732. package/android/jni/lzma/CPP/Common/StdInStream.h +0 -38
  733. package/android/jni/lzma/CPP/Common/StdOutStream.cpp +0 -163
  734. package/android/jni/lzma/CPP/Common/StdOutStream.h +0 -71
  735. package/android/jni/lzma/CPP/Common/StringConvert.cpp +0 -319
  736. package/android/jni/lzma/CPP/Common/StringConvert.h +0 -88
  737. package/android/jni/lzma/CPP/Common/StringToInt.cpp +0 -144
  738. package/android/jni/lzma/CPP/Common/StringToInt.h +0 -21
  739. package/android/jni/lzma/CPP/Common/TextConfig.cpp +0 -124
  740. package/android/jni/lzma/CPP/Common/TextConfig.h +0 -19
  741. package/android/jni/lzma/CPP/Common/UTFConvert.cpp +0 -288
  742. package/android/jni/lzma/CPP/Common/UTFConvert.h +0 -12
  743. package/android/jni/lzma/CPP/Common/Wildcard.cpp +0 -676
  744. package/android/jni/lzma/CPP/Common/Wildcard.h +0 -149
  745. package/android/jni/lzma/CPP/Common/XzCrc64Init.cpp +0 -7
  746. package/android/jni/lzma/CPP/Common/XzCrc64Reg.cpp +0 -42
  747. package/android/jni/lzma/CPP/Windows/COM.h +0 -70
  748. package/android/jni/lzma/CPP/Windows/CommonDialog.cpp +0 -185
  749. package/android/jni/lzma/CPP/Windows/CommonDialog.h +0 -23
  750. package/android/jni/lzma/CPP/Windows/Control/ComboBox.cpp +0 -66
  751. package/android/jni/lzma/CPP/Windows/Control/ComboBox.h +0 -65
  752. package/android/jni/lzma/CPP/Windows/Control/CommandBar.h +0 -52
  753. package/android/jni/lzma/CPP/Windows/Control/Dialog.cpp +0 -251
  754. package/android/jni/lzma/CPP/Windows/Control/Dialog.h +0 -170
  755. package/android/jni/lzma/CPP/Windows/Control/Edit.h +0 -19
  756. package/android/jni/lzma/CPP/Windows/Control/ImageList.cpp +0 -10
  757. package/android/jni/lzma/CPP/Windows/Control/ImageList.h +0 -87
  758. package/android/jni/lzma/CPP/Windows/Control/ListView.cpp +0 -155
  759. package/android/jni/lzma/CPP/Windows/Control/ListView.h +0 -146
  760. package/android/jni/lzma/CPP/Windows/Control/ProgressBar.h +0 -35
  761. package/android/jni/lzma/CPP/Windows/Control/PropertyPage.cpp +0 -143
  762. package/android/jni/lzma/CPP/Windows/Control/PropertyPage.h +0 -50
  763. package/android/jni/lzma/CPP/Windows/Control/ReBar.h +0 -34
  764. package/android/jni/lzma/CPP/Windows/Control/Static.h +0 -28
  765. package/android/jni/lzma/CPP/Windows/Control/StatusBar.h +0 -42
  766. package/android/jni/lzma/CPP/Windows/Control/StdAfx.h +0 -8
  767. package/android/jni/lzma/CPP/Windows/Control/ToolBar.h +0 -43
  768. package/android/jni/lzma/CPP/Windows/Control/Trackbar.h +0 -27
  769. package/android/jni/lzma/CPP/Windows/Control/Window2.cpp +0 -200
  770. package/android/jni/lzma/CPP/Windows/Control/Window2.h +0 -51
  771. package/android/jni/lzma/CPP/Windows/DLL.cpp +0 -109
  772. package/android/jni/lzma/CPP/Windows/DLL.h +0 -58
  773. package/android/jni/lzma/CPP/Windows/Defs.h +0 -17
  774. package/android/jni/lzma/CPP/Windows/ErrorMsg.cpp +0 -66
  775. package/android/jni/lzma/CPP/Windows/ErrorMsg.h +0 -15
  776. package/android/jni/lzma/CPP/Windows/FileDir.cpp +0 -714
  777. package/android/jni/lzma/CPP/Windows/FileDir.h +0 -117
  778. package/android/jni/lzma/CPP/Windows/FileFind.cpp +0 -749
  779. package/android/jni/lzma/CPP/Windows/FileFind.h +0 -161
  780. package/android/jni/lzma/CPP/Windows/FileIO.cpp +0 -432
  781. package/android/jni/lzma/CPP/Windows/FileIO.h +0 -212
  782. package/android/jni/lzma/CPP/Windows/FileLink.cpp +0 -440
  783. package/android/jni/lzma/CPP/Windows/FileMapping.cpp +0 -12
  784. package/android/jni/lzma/CPP/Windows/FileMapping.h +0 -66
  785. package/android/jni/lzma/CPP/Windows/FileName.cpp +0 -839
  786. package/android/jni/lzma/CPP/Windows/FileName.h +0 -115
  787. package/android/jni/lzma/CPP/Windows/FileSystem.cpp +0 -131
  788. package/android/jni/lzma/CPP/Windows/FileSystem.h +0 -27
  789. package/android/jni/lzma/CPP/Windows/Handle.h +0 -37
  790. package/android/jni/lzma/CPP/Windows/MemoryLock.cpp +0 -112
  791. package/android/jni/lzma/CPP/Windows/MemoryLock.h +0 -40
  792. package/android/jni/lzma/CPP/Windows/NtCheck.h +0 -46
  793. package/android/jni/lzma/CPP/Windows/PropVariant.cpp +0 -347
  794. package/android/jni/lzma/CPP/Windows/PropVariant.h +0 -114
  795. package/android/jni/lzma/CPP/Windows/PropVariantConv.cpp +0 -138
  796. package/android/jni/lzma/CPP/Windows/PropVariantConv.h +0 -37
  797. package/android/jni/lzma/CPP/Windows/Registry.cpp +0 -390
  798. package/android/jni/lzma/CPP/Windows/Registry.h +0 -84
  799. package/android/jni/lzma/CPP/Windows/ResourceString.cpp +0 -103
  800. package/android/jni/lzma/CPP/Windows/ResourceString.h +0 -16
  801. package/android/jni/lzma/CPP/Windows/SecurityUtils.cpp +0 -181
  802. package/android/jni/lzma/CPP/Windows/SecurityUtils.h +0 -167
  803. package/android/jni/lzma/CPP/Windows/Shell.cpp +0 -358
  804. package/android/jni/lzma/CPP/Windows/Shell.h +0 -94
  805. package/android/jni/lzma/CPP/Windows/StdAfx.h +0 -8
  806. package/android/jni/lzma/CPP/Windows/Synchronization.cpp +0 -10
  807. package/android/jni/lzma/CPP/Windows/Synchronization.h +0 -164
  808. package/android/jni/lzma/CPP/Windows/System.cpp +0 -142
  809. package/android/jni/lzma/CPP/Windows/System.h +0 -40
  810. package/android/jni/lzma/CPP/Windows/Thread.h +0 -38
  811. package/android/jni/lzma/CPP/Windows/TimeUtils.cpp +0 -213
  812. package/android/jni/lzma/CPP/Windows/TimeUtils.h +0 -32
  813. package/android/jni/lzma/CPP/Windows/Window.cpp +0 -179
  814. package/android/jni/lzma/CPP/Windows/Window.h +0 -284
  815. package/android/jni/lzma/CS/7zip/Common/CRC.cs +0 -55
  816. package/android/jni/lzma/CS/7zip/Common/CommandLineParser.cs +0 -274
  817. package/android/jni/lzma/CS/7zip/Common/InBuffer.cs +0 -72
  818. package/android/jni/lzma/CS/7zip/Common/OutBuffer.cs +0 -47
  819. package/android/jni/lzma/CS/7zip/Compress/LZ/IMatchFinder.cs +0 -24
  820. package/android/jni/lzma/CS/7zip/Compress/LZ/LzBinTree.cs +0 -367
  821. package/android/jni/lzma/CS/7zip/Compress/LZ/LzInWindow.cs +0 -132
  822. package/android/jni/lzma/CS/7zip/Compress/LZ/LzOutWindow.cs +0 -110
  823. package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaBase.cs +0 -76
  824. package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaDecoder.cs +0 -398
  825. package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaEncoder.cs +0 -1480
  826. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs +0 -364
  827. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.csproj +0 -90
  828. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.sln +0 -20
  829. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaBench.cs +0 -340
  830. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/AssemblyInfo.cs +0 -29
  831. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/Resources.cs +0 -70
  832. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/Settings.cs +0 -42
  833. package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoder.cs +0 -234
  834. package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBit.cs +0 -117
  835. package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBitTree.cs +0 -157
  836. package/android/jni/lzma/CS/7zip/ICoder.cs +0 -157
  837. package/android/jni/lzma/DOC/7zC.txt +0 -187
  838. package/android/jni/lzma/DOC/7zFormat.txt +0 -469
  839. package/android/jni/lzma/DOC/Methods.txt +0 -173
  840. package/android/jni/lzma/DOC/installer.txt +0 -166
  841. package/android/jni/lzma/DOC/lzma-history.txt +0 -446
  842. package/android/jni/lzma/DOC/lzma-specification.txt +0 -1176
  843. package/android/jni/lzma/DOC/lzma.txt +0 -328
  844. package/android/jni/lzma/Java/SevenZip/CRC.java +0 -52
  845. package/android/jni/lzma/Java/SevenZip/Compression/LZ/BinTree.java +0 -382
  846. package/android/jni/lzma/Java/SevenZip/Compression/LZ/InWindow.java +0 -131
  847. package/android/jni/lzma/Java/SevenZip/Compression/LZ/OutWindow.java +0 -85
  848. package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Base.java +0 -88
  849. package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Decoder.java +0 -329
  850. package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Encoder.java +0 -1416
  851. package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeDecoder.java +0 -55
  852. package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeEncoder.java +0 -99
  853. package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/Decoder.java +0 -88
  854. package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java +0 -151
  855. package/android/jni/lzma/Java/SevenZip/ICodeProgress.java +0 -6
  856. package/android/jni/lzma/Java/SevenZip/LzmaAlone.java +0 -253
  857. package/android/jni/lzma/Java/SevenZip/LzmaBench.java +0 -392
  858. package/android/jni/lzma/bin/7zS2.sfx +0 -0
  859. package/android/jni/lzma/bin/7zS2con.sfx +0 -0
  860. package/android/jni/lzma/bin/7zSD.sfx +0 -0
  861. package/android/jni/lzma/bin/7zdec.exe +0 -0
  862. package/android/jni/lzma/bin/7zr.exe +0 -0
  863. package/android/jni/lzma/bin/installer/config.txt +0 -5
  864. package/android/jni/lzma/bin/installer/cr.bat +0 -5
  865. package/android/jni/lzma/bin/lzma.exe +0 -0
  866. package/android/jni/lzma/bin/x64/7zr.exe +0 -0
  867. package/android/src/main/java/cn/reactnative/modules/update/ArchivePatchPlanResult.java +0 -6
  868. package/android/src/main/java/cn/reactnative/modules/update/PushyConfiguration.java +0 -104
  869. package/android/src/main/java/cn/reactnative/modules/update/UiThreadRunner.java +0 -37
  870. package/android/src/newarch/cn/reactnative/modules/update/UpdateModule.java +0 -121
  871. package/android/src/oldarch/cn/reactnative/modules/update/UpdateModule.java +0 -125
  872. package/cpp/patch_core/jni_natives.h +0 -27
  873. package/cpp/patch_core/jni_registration.cpp +0 -103
  874. package/cpp/patch_core/jni_util.h +0 -60
  875. package/cpp/patch_core/patch_core_android.cpp +0 -97
  876. package/cpp/patch_core/update_core_android.cpp +0 -485
  877. package/cpp/update_flow_core/update_flow_jni.cpp +0 -150
@@ -4,7 +4,12 @@ import common from '@ohos.app.ability.common';
4
4
  import { zlib } from '@kit.BasicServicesKit';
5
5
  import { EventHub } from './EventHub';
6
6
  import { DownloadTaskParams } from './DownloadTaskParams';
7
- import { saveFileToSandbox } from './SaveFile';
7
+ import {
8
+ saveFileToSandbox,
9
+ unlinkIfExists,
10
+ withRawFd,
11
+ writeFully,
12
+ } from './SaveFile';
8
13
  import { util } from '@kit.ArkTS';
9
14
  import NativePatchCore, {
10
15
  ARCHIVE_PATCH_TYPE_FROM_PACKAGE,
@@ -16,16 +21,16 @@ import logger from './Logger';
16
21
  import {
17
22
  MAX_ARCHIVE_BYTES,
18
23
  MAX_MANIFEST_BYTES,
19
- UNKNOWN_LENGTH_FREE_SPACE_PROBE_BYTES,
24
+ checkExtractedDirectory,
25
+ checkOriginalSize,
20
26
  checkUncompressedSize,
21
27
  ensureFreeSpace,
22
- measureExtractedDirectory,
23
28
  } from './ArchiveLimits';
24
29
  import {
25
30
  HARMONY_BUNDLE_FILE_NAME,
26
- buildInstallRecord,
31
+ promoteStaging,
32
+ sealInstallRecord,
27
33
  stagingDirectoryFor,
28
- writeInstallRecord,
29
34
  } from './InstallRecord';
30
35
  import {
31
36
  ERROR_DOWNLOAD_FAILED,
@@ -38,141 +43,45 @@ import {
38
43
  } from './ErrorCodes';
39
44
  import { BUNDLE_DELTA_ENTRY } from './Texts';
40
45
 
46
+ // 连接超时,与 Android DownloadTask 的 connectTimeout(15s)一致。
47
+ const CONNECT_TIMEOUT_MS = 15000;
41
48
  const TAG = 'DownloadTask';
42
49
 
43
- export interface PatchManifestArrays {
44
- copyFroms: string[];
45
- copyTos: string[];
46
- // 与 copyFroms/copyTos 逐位对齐的 copiesCrc(CLI >= 2.21.2 的 pdiff
47
- // manifest 携带,键是 to);无声明时为 null。拷贝前用它校验包内资源内容,
48
- // 不符则整次 patch 失败落 full——重打包二进制不能静默拷出漂移的资源。
49
- copyCrcs: (number | null)[];
50
- deletes: string[];
51
- // __diff.json 中对应 bundle patch 条目的 hbcTransform 元数据(原始 JSON
52
- // 字符串);为空时 native 走现状路径
53
- hbcTransformMeta: string;
54
- }
55
-
56
- export function parseManifestToArrays(
57
- manifest: Record<string, any>,
58
- normalizeResourceCopies: boolean,
59
- ): PatchManifestArrays {
60
- const copyFroms: string[] = [];
61
- const copyTos: string[] = [];
62
- const copyCrcs: (number | null)[] = [];
63
- const deletesValue = manifest.deletes;
64
- const deletes = Array.isArray(deletesValue)
65
- ? deletesValue.map(item => String(item))
66
- : deletesValue && typeof deletesValue === 'object'
67
- ? Object.keys(deletesValue)
68
- : [];
69
-
70
- const copies = (manifest.copies || {}) as Record<string, string>;
71
- const copiesCrcValue = manifest.copiesCrc;
72
- const copiesCrc =
73
- copiesCrcValue && typeof copiesCrcValue === 'object'
74
- ? (copiesCrcValue as Record<string, number>)
75
- : ({} as Record<string, number>);
76
- for (const to of Object.keys(copies)) {
77
- const rawFrom = copies[to];
78
- let from = String(rawFrom || '');
79
- if (normalizeResourceCopies) {
80
- from = from.replace('resources/rawfile/', '');
81
- if (!from) {
82
- from = to;
83
- }
84
- }
85
- copyFroms.push(from);
86
- copyTos.push(to);
87
- const crc = copiesCrc[to];
88
- copyCrcs.push(typeof crc === 'number' && Number.isFinite(crc) ? crc : null);
89
- }
90
-
91
- const hbcTransform = manifest.hbcTransform as
92
- | Record<string, object>
93
- | undefined;
94
- const hbcTransformEntry =
95
- hbcTransform && typeof hbcTransform === 'object'
96
- ? hbcTransform[BUNDLE_DELTA_ENTRY]
97
- : undefined;
98
- const hbcTransformMeta =
99
- hbcTransformEntry && typeof hbcTransformEntry === 'object'
100
- ? JSON.stringify(hbcTransformEntry)
101
- : '';
102
-
103
- return {
104
- copyFroms,
105
- copyTos,
106
- copyCrcs,
107
- deletes,
108
- hbcTransformMeta,
109
- };
110
- }
111
-
50
+ // staging 目录里的条目名 + __diff.json 原文:由原生内核统一校验与解析
51
+ // (cpp/patch_core/patch_manifest.h),这里不解析 manifest。
112
52
  interface DeltaInputs {
113
53
  entryNames: string[];
114
- manifestArrays: PatchManifestArrays;
115
- }
116
-
117
- function toArrayBufferSlice(
118
- payload: Uint8Array,
119
- offset: number,
120
- length: number,
121
- ): ArrayBuffer {
122
- return (payload.buffer as ArrayBuffer).slice(
123
- payload.byteOffset + offset,
124
- payload.byteOffset + offset + length,
125
- );
54
+ manifestJson: string;
126
55
  }
127
56
 
57
+ // 包内 rawfile 在 HAP 中的路径前缀:pdiff 的拷贝源按 HAP 路径命名,
58
+ // resourceManager 按去掉前缀后的路径读取。原生解析时只剥开头一次。
59
+ const RAWFILE_COPY_SOURCE_PREFIX = 'resources/rawfile/';
128
60
  const DIFF_MANIFEST_ENTRY = '__diff.json';
129
- const TEMP_ORIGIN_BUNDLE_ENTRY = '.origin.bundle.harmony.js';
130
- const FILE_COPY_BUFFER_SIZE = 64 * 1024;
61
+ const TEMP_ORIGIN_BUNDLE_ENTRY = `.origin.${HARMONY_BUNDLE_FILE_NAME}`;
131
62
  const DOWNLOAD_CALL_TIMEOUT_MS = 10 * 60 * 1000;
132
63
 
133
64
  // 断点续传 sidecar(NATIVE_CHECKUPDATE_DESIGN §11.4):记录 partial 属于
134
65
  // 哪个 url、验证器与总长。归档与 sidecar 同生共死;有归档无 sidecar(或
135
- // url 不符)一律视为不可信,删掉重来。
136
- interface ResumeMeta {
137
- url: string;
138
- etag?: string;
139
- lastModified?: string;
66
+ // url 不符)一律视为不可信,删掉重来。续传的所有判定(读 sidecar、发不发
67
+ // Range、响应怎么处理、写什么 sidecar)都在共享内核
68
+ // cpp/patch_core/resume_plan.h,与 Android/iOS 同一份实现,这里只做 IO。
69
+ const MAX_SIDECAR_BYTES = 64 * 1024;
70
+
71
+ interface ResumeRequestPlan {
72
+ action: string;
140
73
  total?: number;
74
+ offset?: number;
75
+ headers?: Record<string, string>;
141
76
  }
142
77
 
143
- // "bytes <start>-<end>/<total>"。返回总长(“*”记 0);缺失/畸形/起点与
144
- // 本地 partial 不符、或 range 与 total 自相矛盾(end 在 start 之前、数值
145
- // total 不大于 end)返回 -1——那样追加的字节不可信。RFC 9110 §14.4 要求
146
- // 完整长度必须大于 last-pos。
147
- export function parseContentRangeTotal(
148
- header: string,
149
- expectedStart: number,
150
- ): number {
151
- if (!header.startsWith('bytes ')) {
152
- return -1;
153
- }
154
- const range = header.substring('bytes '.length).trim();
155
- const slash = range.indexOf('/');
156
- const dash = range.indexOf('-');
157
- if (slash < 0 || dash < 0 || dash > slash) {
158
- return -1;
159
- }
160
- const start = parseInt(range.substring(0, dash).trim(), 10);
161
- const end = parseInt(range.substring(dash + 1, slash).trim(), 10);
162
- if (
163
- Number.isNaN(start) ||
164
- Number.isNaN(end) ||
165
- start !== expectedStart ||
166
- end < start
167
- ) {
168
- return -1;
169
- }
170
- const totalPart = range.substring(slash + 1).trim();
171
- if (totalPart === '*') {
172
- return 0;
173
- }
174
- const total = parseInt(totalPart, 10);
175
- return Number.isNaN(total) || total <= end ? -1 : total;
78
+ interface ResumeResponseDecision {
79
+ action: string;
80
+ total?: number;
81
+ append?: boolean;
82
+ base?: number;
83
+ encoded?: boolean;
84
+ persistSidecar?: boolean;
176
85
  }
177
86
 
178
87
  export class DownloadTask {
@@ -194,23 +103,12 @@ export class DownloadTask {
194
103
 
195
104
  private async promoteStaging(params: DownloadTaskParams): Promise<void> {
196
105
  const work = this.stagingDirectory(params);
197
- const bundlePath = `${work}/${HARMONY_BUNDLE_FILE_NAME}`;
198
- if (!fileIo.accessSync(bundlePath)) {
199
- throw createPushyError(
200
- ERROR_DELTA_FAILED,
201
- `bundle missing after install: ${bundlePath}`,
202
- );
203
- }
204
- // 整 bundle 几十 MB:摘要在 native 工作线程算,不冻结 UI 线程。
205
- const bundleSha256 = await NativePatchCore.sha256HexFileAsync(bundlePath);
206
- await writeInstallRecord(
207
- work,
208
- buildInstallRecord(params.hash, bundleSha256, this.artifactSha256),
209
- );
106
+ // 整 bundle 几十 MB:摘要与记录写入在 native 工作线程完成,不冻结 UI 线程。
107
+ await sealInstallRecord(work, params.hash, this.artifactSha256);
210
108
  if (fileIo.accessSync(params.unzipDirectory)) {
211
109
  await this.removeDirectory(params.unzipDirectory);
212
110
  }
213
- await fileIo.rename(work, params.unzipDirectory);
111
+ await promoteStaging(work, params.unzipDirectory);
214
112
  }
215
113
 
216
114
  constructor(context: common.Context) {
@@ -222,33 +120,33 @@ export class DownloadTask {
222
120
  return `${targetFile}.resume`;
223
121
  }
224
122
 
225
- private async readResumeMeta(
226
- targetFile: string,
227
- url: string,
228
- ): Promise<ResumeMeta | null> {
123
+ // sidecar 原文;不存在、超过 sidecar 应有的大小或读失败时为 ""
124
+ // (共享内核把这些都当作“没有可信的 partial”)。
125
+ private async readSidecarText(targetFile: string): Promise<string> {
229
126
  const sidecar = this.resumeSidecarPath(targetFile);
230
- if (!fileIo.accessSync(sidecar)) {
231
- return null;
232
- }
233
127
  try {
234
- const meta = this.parseJsonEntry(
235
- await this.readFileContent(sidecar),
236
- ) as ResumeMeta;
237
- if (meta && meta.url === url) {
238
- return meta;
128
+ if (!fileIo.accessSync(sidecar)) {
129
+ return '';
130
+ }
131
+ const stat = await fileIo.stat(sidecar);
132
+ if (stat.size > MAX_SIDECAR_BYTES) {
133
+ return '';
239
134
  }
135
+ return new util.TextDecoder().decodeToString(
136
+ new Uint8Array(await this.readFileContent(sidecar)),
137
+ );
240
138
  } catch (e) {
241
139
  // 坏 sidecar 只意味着“无法续传”。
140
+ return '';
242
141
  }
243
- return null;
244
142
  }
245
143
 
246
- private async writeResumeMeta(
144
+ private async writeSidecarText(
247
145
  targetFile: string,
248
- meta: ResumeMeta,
146
+ text: string,
249
147
  ): Promise<void> {
250
148
  try {
251
- const encoded = new util.TextEncoder().encodeInto(JSON.stringify(meta));
149
+ const encoded = new util.TextEncoder().encodeInto(text);
252
150
  await this.writeFileContent(this.resumeSidecarPath(targetFile), encoded);
253
151
  } catch (e) {
254
152
  // 非致命:没有 sidecar,下次从零开始。
@@ -258,10 +156,7 @@ export class DownloadTask {
258
156
 
259
157
  private async deleteResumeSidecar(targetFile: string): Promise<void> {
260
158
  try {
261
- const sidecar = this.resumeSidecarPath(targetFile);
262
- if (fileIo.accessSync(sidecar)) {
263
- await fileIo.unlink(sidecar);
264
- }
159
+ await unlinkIfExists(this.resumeSidecarPath(targetFile));
265
160
  } catch (e) {
266
161
  logger.error(TAG, `Failed to delete resume sidecar: ${getErrorMessage(e)}`);
267
162
  }
@@ -270,9 +165,7 @@ export class DownloadTask {
270
165
  // 归档连同 sidecar 一起删除(被消费或被判定有毒)。
271
166
  private async deleteArchiveAndSidecar(targetFile: string): Promise<void> {
272
167
  try {
273
- if (fileIo.accessSync(targetFile)) {
274
- await fileIo.unlink(targetFile);
275
- }
168
+ await unlinkIfExists(targetFile);
276
169
  } catch (e) {
277
170
  logger.error(TAG, `Failed to delete archive: ${getErrorMessage(e)}`);
278
171
  }
@@ -328,35 +221,37 @@ export class DownloadTask {
328
221
 
329
222
  /**
330
223
  * 解压前读取归档解压后的总字节数(zlib.getOriginalSize,API 12——RNOH 的
331
- * 最低 API 已覆盖)。读不到就拒绝归档:zlib.decompressFile 没有逐条钩子,
332
- * 不知道展开量就放行等于允许一个 20MB 的归档在 measureExtractedDirectory
333
- * 跑到之前先把磁盘写满。
224
+ * 最低 API 已覆盖)。读不到就拒绝归档(checkOriginalSize):zlib.decompressFile
225
+ * 没有逐条钩子,不知道展开量就放行等于允许一个 20MB 的归档在
226
+ * checkExtractedDirectory 跑到之前先把磁盘写满。拒绝带专属错误细节
227
+ * (ORIGINAL_SIZE_UNAVAILABLE)并单独记日志,与"超限"拒绝可区分。
334
228
  */
335
229
  private async readOriginalSize(archiveFile: string): Promise<number> {
336
230
  let size: number | undefined;
231
+ let failure: string | undefined;
337
232
  try {
338
233
  size = await zlib.getOriginalSize(archiveFile);
339
234
  } catch (e) {
340
- throw createPushyError(
341
- ERROR_DELTA_FAILED,
342
- `cannot determine archive expansion size: ${getErrorMessage(e)}`,
343
- );
235
+ failure = getErrorMessage(e);
344
236
  }
345
- if (typeof size !== 'number' || !Number.isFinite(size) || size < 0) {
346
- throw createPushyError(
347
- ERROR_DELTA_FAILED,
348
- `cannot determine archive expansion size: ${String(size)}`,
237
+ try {
238
+ return checkOriginalSize(size, failure);
239
+ } catch (error) {
240
+ logger.error(
241
+ TAG,
242
+ `Refusing archive, expansion size unknown: ${getErrorMessage(error)}`,
349
243
  );
244
+ throw error;
350
245
  }
351
- return size;
352
246
  }
353
247
 
354
248
  /**
355
249
  * 解压 + 资源上限(cpp/patch_core/archive_limits.h)。zlib.decompressFile
356
250
  * 没有逐条钩子:解压前用 getOriginalSize 把总解压量与整包压缩比挡在
357
251
  * 上限内(20MB 归档 100:1 的 2GB 载荷不会先解出来再量),按已知解压量查
358
- * 磁盘,解压量未知直接拒绝;解压后再统计条目数/单条大小/总字节数并拒绝
359
- * 任意深度的 `.pushy-` 保留条目(超限即失败,staging 目录由失败清理删除)。
252
+ * 磁盘,解压量未知直接拒绝;解压后再逐条核对条目数/单条大小/总字节数,
253
+ * 拒绝任意深度的 `.pushy-` 保留条目与符号链接(规则见
254
+ * cpp/patch_core/archive_limits.h;超限即失败,staging 目录由失败清理删除)。
360
255
  */
361
256
  private async extractArchive(
362
257
  archiveFile: string,
@@ -371,13 +266,13 @@ export class DownloadTask {
371
266
  }
372
267
  const originalSize = await this.readOriginalSize(archiveFile);
373
268
  checkUncompressedSize(archiveStat.size, originalSize);
374
- await ensureFreeSpace(unzipDirectory, originalSize);
269
+ await ensureFreeSpace(unzipDirectory, originalSize, ERROR_DELTA_FAILED);
375
270
  try {
376
271
  await zlib.decompressFile(archiveFile, unzipDirectory);
377
272
  } catch (e) {
378
273
  throw toPushyError(e, ERROR_DELTA_FAILED);
379
274
  }
380
- await measureExtractedDirectory(unzipDirectory);
275
+ await checkExtractedDirectory(unzipDirectory, archiveStat.size);
381
276
  }
382
277
 
383
278
  private async recreateDirectory(path: string): Promise<void> {
@@ -415,33 +310,26 @@ export class DownloadTask {
415
310
  ): Promise<void> {
416
311
  const payload =
417
312
  content instanceof Uint8Array ? content : new Uint8Array(content);
313
+ // writeFully writes from the start of its buffer: a view into a larger
314
+ // buffer at a non-zero offset needs its own copy.
315
+ const bytes =
316
+ payload.byteOffset === 0
317
+ ? (payload.buffer as ArrayBuffer)
318
+ : (payload.buffer as ArrayBuffer).slice(
319
+ payload.byteOffset,
320
+ payload.byteOffset + payload.byteLength,
321
+ );
418
322
  await this.ensureParentDirectory(targetFile);
419
- if (fileIo.accessSync(targetFile)) {
420
- await fileIo.unlink(targetFile);
421
- }
323
+ await unlinkIfExists(targetFile);
422
324
 
423
- let writer: fileIo.File | null = null;
325
+ const writer = await fileIo.open(
326
+ targetFile,
327
+ fileIo.OpenMode.CREATE | fileIo.OpenMode.WRITE_ONLY,
328
+ );
424
329
  try {
425
- writer = await fileIo.open(
426
- targetFile,
427
- fileIo.OpenMode.CREATE | fileIo.OpenMode.WRITE_ONLY,
428
- );
429
- const chunkSize = FILE_COPY_BUFFER_SIZE;
430
- let bytesWritten = 0;
431
-
432
- while (bytesWritten < payload.byteLength) {
433
- const chunkLength = Math.min(
434
- chunkSize,
435
- payload.byteLength - bytesWritten,
436
- );
437
- const chunk = toArrayBufferSlice(payload, bytesWritten, chunkLength);
438
- await fileIo.write(writer.fd, chunk);
439
- bytesWritten += chunkLength;
440
- }
330
+ await writeFully(writer.fd, bytes, payload.byteLength);
441
331
  } finally {
442
- if (writer) {
443
- await fileIo.close(writer);
444
- }
332
+ await fileIo.close(writer);
445
333
  }
446
334
  }
447
335
 
@@ -451,19 +339,11 @@ export class DownloadTask {
451
339
  ) as Record<string, any>;
452
340
  }
453
341
 
454
- private async readManifestArrays(
455
- directory: string,
456
- normalizeResourceCopies: boolean,
457
- ): Promise<PatchManifestArrays> {
342
+ // __diff.json 原文;归档里没有时为空串(原生内核报 "diff.json not found")。
343
+ private async readManifestJson(directory: string): Promise<string> {
458
344
  const manifestPath = `${directory}/${DIFF_MANIFEST_ENTRY}`;
459
345
  if (!fileIo.accessSync(manifestPath)) {
460
- return {
461
- copyFroms: [],
462
- copyTos: [],
463
- copyCrcs: [],
464
- deletes: [],
465
- hbcTransformMeta: '',
466
- };
346
+ return '';
467
347
  }
468
348
 
469
349
  const manifestStat = await fileIo.stat(manifestPath);
@@ -473,34 +353,39 @@ export class DownloadTask {
473
353
  `delta manifest too large: ${manifestStat.size} bytes`,
474
354
  );
475
355
  }
476
- return parseManifestToArrays(
477
- this.parseJsonEntry(await this.readFileContent(manifestPath)),
478
- normalizeResourceCopies,
356
+ return new util.TextDecoder().decodeToString(
357
+ new Uint8Array(await this.readFileContent(manifestPath)),
479
358
  );
480
359
  }
481
360
 
482
-
483
- private async applyBundlePatchFromFileSource(
484
- originContent: ArrayBuffer,
485
- workingDirectory: string,
486
- bundleDeltaPath: string,
487
- outputFile: string,
488
- hbcTransformMeta = '',
489
- ): Promise<void> {
490
- const originBundlePath = `${workingDirectory}/${TEMP_ORIGIN_BUNDLE_ENTRY}`;
361
+ /**
362
+ * pdiff:hpatch 需要文件源,先把二进制内嵌的 bundle 从 rawfile descriptor
363
+ * 异步流式拷到 staging 里的临时文件(不整包读进内存、不在 UI 线程同步
364
+ * IO),原生内核只重建 bundle,拷贝分组交回由 copyFromResource 完成。
365
+ */
366
+ private async applyPatchFromEmbeddedBundle(
367
+ work: string,
368
+ inputs: DeltaInputs,
369
+ ): Promise<CopyGroupResult[]> {
370
+ const originBundlePath = `${work}/${TEMP_ORIGIN_BUNDLE_ENTRY}`;
491
371
  try {
492
- await this.writeFileContent(originBundlePath, originContent);
493
- await NativePatchCore.applyDeltaFromSource({
494
- copyFroms: [],
495
- copyTos: [],
496
- deletes: [],
497
- sourceRoot: workingDirectory,
498
- targetRoot: workingDirectory,
372
+ await withRawFd(
373
+ this.context.resourceManager,
374
+ HARMONY_BUNDLE_FILE_NAME,
375
+ descriptor => saveFileToSandbox(descriptor, originBundlePath),
376
+ );
377
+ return await NativePatchCore.applyArchiveDelta({
378
+ archiveType: ARCHIVE_PATCH_TYPE_FROM_PACKAGE,
379
+ entryNames: inputs.entryNames,
380
+ manifestJson: inputs.manifestJson,
381
+ bundleDeltaEntry: BUNDLE_DELTA_ENTRY,
382
+ copySourcePrefix: RAWFILE_COPY_SOURCE_PREFIX,
383
+ sourceRoot: work,
384
+ targetRoot: work,
499
385
  originBundlePath,
500
- bundleDeltaPath,
501
- bundleOutputPath: outputFile,
502
- enableMerge: false,
503
- bundleHbcTransformMeta: hbcTransformMeta,
386
+ bundleDeltaPath: `${work}/${BUNDLE_DELTA_ENTRY}`,
387
+ bundleOutputPath: `${work}/${HARMONY_BUNDLE_FILE_NAME}`,
388
+ hostCopiesResources: true,
504
389
  });
505
390
  } catch (error) {
506
391
  throw createPushyError(
@@ -508,56 +393,18 @@ export class DownloadTask {
508
393
  `Failed to process bundle delta: ${getErrorMessage(error)}`,
509
394
  );
510
395
  } finally {
511
- if (fileIo.accessSync(originBundlePath)) {
512
- await fileIo.unlink(originBundlePath);
513
- }
396
+ await unlinkIfExists(originBundlePath);
514
397
  }
515
398
  }
516
399
 
400
+ // 沙箱内文件复制(同一 rawfile 落到多个目标时,首个之外的目标从首个复制)。
401
+ // fileIo.copyFile 在工作线程整文件复制并覆盖目标,无需逐块搬运。
517
402
  private async copySandboxFile(
518
403
  sourceFile: string,
519
404
  targetFile: string,
520
405
  ): Promise<void> {
521
- let reader: fileIo.File | null = null;
522
- let writer: fileIo.File | null = null;
523
- const buffer = new ArrayBuffer(FILE_COPY_BUFFER_SIZE);
524
- let offset = 0;
525
-
526
- try {
527
- reader = await fileIo.open(sourceFile, fileIo.OpenMode.READ_ONLY);
528
- await this.ensureParentDirectory(targetFile);
529
- if (fileIo.accessSync(targetFile)) {
530
- await fileIo.unlink(targetFile);
531
- }
532
- writer = await fileIo.open(
533
- targetFile,
534
- fileIo.OpenMode.CREATE | fileIo.OpenMode.WRITE_ONLY,
535
- );
536
-
537
- while (true) {
538
- const readLength = await fileIo.read(reader.fd, buffer, {
539
- offset,
540
- length: FILE_COPY_BUFFER_SIZE,
541
- });
542
- if (readLength <= 0) {
543
- break;
544
- }
545
-
546
- await fileIo.write(writer.fd, buffer.slice(0, readLength));
547
- offset += readLength;
548
-
549
- if (readLength < FILE_COPY_BUFFER_SIZE) {
550
- break;
551
- }
552
- }
553
- } finally {
554
- if (reader) {
555
- await fileIo.close(reader);
556
- }
557
- if (writer) {
558
- await fileIo.close(writer);
559
- }
560
- }
406
+ await this.ensureParentDirectory(targetFile);
407
+ await fileIo.copyFile(sourceFile, targetFile);
561
408
  }
562
409
 
563
410
  private async downloadFile(params: DownloadTaskParams): Promise<void> {
@@ -613,32 +460,36 @@ export class DownloadTask {
613
460
  );
614
461
  }
615
462
 
616
- // 续传状态盘点:有匹配的 sidecar 且 partial 未收齐才发 Range。
617
- let resumeMeta: ResumeMeta | null = allowResume
618
- ? await this.readResumeMeta(params.targetFile, params.url)
619
- : null;
620
- let resumeOffset = 0;
621
- if (resumeMeta && fileIo.accessSync(params.targetFile)) {
622
- const stat = await fileIo.stat(params.targetFile);
623
- const knownTotal = resumeMeta.total ?? 0;
624
- if (stat.size > 0 && knownTotal > 0 && stat.size === knownTotal) {
625
- // 上次尝试已收齐(进程死在下载结束与解压之间):无需再传。
626
- httpRequest.destroy();
627
- this.onProgressUpdate(knownTotal, knownTotal);
628
- return 'done';
629
- }
630
- if (stat.size > 0 && (knownTotal <= 0 || stat.size < knownTotal)) {
631
- resumeOffset = stat.size;
632
- }
463
+ // 续传状态盘点(共享内核决定):已收齐 / 带 Range 续传 / 从零开始。
464
+ let sidecarText = allowResume
465
+ ? await this.readSidecarText(params.targetFile)
466
+ : '';
467
+ const partialSize = fileIo.accessSync(params.targetFile)
468
+ ? (await fileIo.stat(params.targetFile)).size
469
+ : 0;
470
+ const plan = JSON.parse(
471
+ NativePatchCore.resumePlanRequest(sidecarText, params.url, partialSize),
472
+ ) as ResumeRequestPlan;
473
+ if (plan.action === 'complete') {
474
+ // 上次尝试已收齐(进程死在下载结束与解压之间):无需再传。
475
+ httpRequest.destroy();
476
+ const knownTotal = plan.total ?? 0;
477
+ this.onProgressUpdate(knownTotal, knownTotal);
478
+ return 'done';
633
479
  }
634
- if (resumeOffset === 0) {
480
+ let resumeOffset = 0;
481
+ let resumeHeaders: Record<string, string> = {};
482
+ if (plan.action === 'resume') {
483
+ resumeOffset = plan.offset ?? 0;
484
+ resumeHeaders = plan.headers ?? {};
485
+ } else {
635
486
  if (fileIo.accessSync(params.targetFile)) {
636
487
  await fileIo.unlink(params.targetFile);
637
488
  } else {
638
489
  await this.ensureParentDirectory(params.targetFile);
639
490
  }
640
491
  await this.deleteResumeSidecar(params.targetFile);
641
- resumeMeta = null;
492
+ sidecarText = '';
642
493
  }
643
494
 
644
495
  // 响应体在状态码判定前一律只进内存缓冲:416/5xx 的错误体若被追加进
@@ -651,6 +502,17 @@ export class DownloadTask {
651
502
  authorize = resolve;
652
503
  });
653
504
 
505
+ // 本 url 的 sidecar 原文:验证器优先取本次响应头,缺失时沿用上次的;
506
+ // 总长未知(0)时不写(共享内核)。
507
+ const sidecarFor = (total: number): string =>
508
+ NativePatchCore.resumeSidecar(
509
+ params.url,
510
+ etagHeader,
511
+ lastModifiedHeader,
512
+ sidecarText,
513
+ total,
514
+ );
515
+
654
516
  const reportProgress = () => {
655
517
  const overall = baseOffset + received;
656
518
  const overallTotal = totalAll > 0
@@ -684,31 +546,35 @@ export class DownloadTask {
684
546
  received += data.byteLength;
685
547
  if (!writeError && baseOffset + received > MAX_ARCHIVE_BYTES) {
686
548
  // 未知长度/分块传输的兜底:超过上限即停写,请求在下面结算时失败。
549
+ // 下载阶段:与 Android/iOS 一样归为 DOWNLOAD_FAILED。
687
550
  writeError = createPushyError(
688
- ERROR_DELTA_FAILED,
551
+ ERROR_DOWNLOAD_FAILED,
689
552
  `archive too large: exceeded ${MAX_ARCHIVE_BYTES}`,
690
553
  );
691
554
  }
692
- // 未知长度:响应到达时只能预留安全余量,所以任何会写过已预留字节数的
693
- // 写入之前先探测,每次至少预留接下来的 PROBE 字节(单个 chunk 更大时按
694
- // chunk 算)——任何写入都吃不到余量(归档上限本身远大于余量)。失败保留
695
- // partial 供下次续传。
696
- const writtenBefore = received - data.byteLength;
697
- const probeFreeSpace = totalAll <= 0 && received > freeSpaceReservedUntil;
698
- const reserve = Math.max(
699
- UNKNOWN_LENGTH_FREE_SPACE_PROBE_BYTES,
555
+ // 未知长度:响应到达时只能预留安全余量,任何会写过已预留位置的写入
556
+ // 之前都要探测(archive_limits::PlanUnknownLengthFreeSpaceProbe)。
557
+ // 失败保留 partial 供下次续传。
558
+ const plan = NativePatchCore.planFreeSpaceProbe(
559
+ totalAll,
560
+ received - data.byteLength,
700
561
  data.byteLength,
562
+ freeSpaceReservedUntil,
701
563
  );
702
- if (probeFreeSpace) {
703
- freeSpaceReservedUntil = writtenBefore + reserve;
704
- }
564
+ freeSpaceReservedUntil = plan.reservedUntil;
565
+ const probeFreeSpace = plan.probe;
566
+ const reserve = plan.reserve;
705
567
  writeQueue = writeQueue.then(async () => {
706
568
  if (!writer || writeError) {
707
569
  return;
708
570
  }
709
571
  try {
710
572
  if (probeFreeSpace) {
711
- await ensureFreeSpace(params.targetFile, reserve);
573
+ await ensureFreeSpace(
574
+ params.targetFile,
575
+ reserve,
576
+ ERROR_DOWNLOAD_FAILED,
577
+ );
712
578
  }
713
579
  await fileIo.write(writer.fd, data);
714
580
  } catch (error) {
@@ -838,17 +704,10 @@ export class DownloadTask {
838
704
  const requestHeader: Record<string, string> = {
839
705
  'Content-Type': 'application/octet-stream',
840
706
  };
841
- if (resumeOffset > 0) {
842
- // 只有续传请求钉死编码:Range 偏移必须与盘上字节一一对应。
843
- // 全新下载保留平台默认的压缩处理,与引入续传前的行为一致。
844
- requestHeader['Accept-Encoding'] = 'identity';
845
- requestHeader.Range = `bytes=${resumeOffset}-`;
846
- const validator = resumeMeta?.etag || resumeMeta?.lastModified;
847
- if (validator) {
848
- // 带验证器时文件已变更的服务端会退回完整 200,而不是把不匹配
849
- // 的字节接上来。
850
- requestHeader['If-Range'] = validator;
851
- }
707
+ // 续传请求的 Range / Accept-Encoding: identity / If-Range(共享内核
708
+ // 给出);全新下载不带,保留平台默认的压缩处理。
709
+ for (const name of Object.keys(resumeHeaders)) {
710
+ requestHeader[name] = resumeHeaders[name];
852
711
  }
853
712
 
854
713
  const remainingMs = Math.max(1, deadlineUptimeMs - monotonicNowMs());
@@ -863,44 +722,20 @@ export class DownloadTask {
863
722
  }, remainingMs);
864
723
  });
865
724
  // netstack 把 readTimeout 交给 libcurl 的 CURLOPT_TIMEOUT_MS(整次传输
866
- // 总时长)而非空闲超时:固定 60s 会让慢网上的大全量包次次失败。两个
867
- // 超时都取剩余 deadline;卡死由下面的 60s 不活动看门狗负责——两种
868
- // 语义下都正确。
725
+ // 总时长)而非空闲超时:固定 60s 会让慢网上的大全量包次次失败。所以
726
+ // readTimeout 取剩余 deadline,卡死由下面的 60s 不活动看门狗负责——
727
+ // 两种语义下都正确。connectTimeout 没有这个问题,与 Android 一样
728
+ // 15s:连不上的镜像不该吃掉整个阶段预算,下一个镜像还要用。
869
729
  const responseCode = await Promise.race([
870
730
  httpRequest.requestInStream(params.url, {
871
731
  method: http.RequestMethod.GET,
872
732
  readTimeout: remainingMs,
873
- connectTimeout: remainingMs,
733
+ connectTimeout: Math.min(CONNECT_TIMEOUT_MS, remainingMs),
874
734
  header: requestHeader,
875
735
  }),
876
736
  deadlinePromise,
877
737
  ]);
878
738
 
879
- if (responseCode === 416) {
880
- discardBody = true;
881
- pendingChunks = null;
882
- const knownTotal = resumeMeta?.total ?? 0;
883
- if (knownTotal > 0 && fileIo.accessSync(params.targetFile)) {
884
- const stat = await fileIo.stat(params.targetFile);
885
- if (stat.size === knownTotal) {
886
- // partial 实际上就是完整文件。
887
- this.onProgressUpdate(knownTotal, knownTotal);
888
- return 'done';
889
- }
890
- }
891
- return 'staleRange';
892
- }
893
- if (responseCode > 299) {
894
- // 响应体从未落盘,partial + sidecar 原样保留——那就是续传状态。
895
- discardBody = true;
896
- pendingChunks = null;
897
- throw createPushyError(
898
- ERROR_DOWNLOAD_FAILED,
899
- `Server error: ${responseCode}`,
900
- );
901
- }
902
-
903
- let encodedBody = false;
904
739
  if (resumeOffset > 0 && responseCode === 206) {
905
740
  // Content-Range 只能从 headersReceive 拿到,而它与 promise 的先后
906
741
  // 顺序不保证——等头到达(dataEnd 前必到,兜底 5s)再判定。
@@ -912,33 +747,57 @@ export class DownloadTask {
912
747
  }),
913
748
  ]);
914
749
  clearTimeout(headersTimer);
915
- encodedBody =
916
- !!contentEncodingHeader &&
917
- contentEncodingHeader.toLowerCase() !== 'identity';
918
- const parsedTotal = encodedBody
919
- ? -1
920
- : parseContentRangeTotal(contentRangeHeader, resumeOffset);
921
- if (parsedTotal < 0) {
922
- // 编码过的 range 字节、或 Content-Range 缺失/畸形/起点不符:
923
- // 追加不可信。按“partial 已过期”处理(删掉、干净地重来一次),
924
- // 而不是抛错——抛错会保留 partial,之后每次都撞同一堵墙。
925
- discardBody = true;
926
- pendingChunks = null;
927
- return 'staleRange';
928
- }
929
- baseOffset = resumeOffset;
930
- totalAll = parsedTotal;
750
+ }
751
+ // 这个响应怎么处理由共享内核决定(与 Android/iOS 同一份)。
752
+ const partialNow = fileIo.accessSync(params.targetFile)
753
+ ? (await fileIo.stat(params.targetFile)).size
754
+ : 0;
755
+ const decision = JSON.parse(
756
+ NativePatchCore.resumeClassifyResponse(
757
+ responseCode,
758
+ resumeOffset,
759
+ contentRangeHeader,
760
+ contentEncodingHeader,
761
+ contentLength > 0 ? contentLength : -1,
762
+ sidecarText,
763
+ params.url,
764
+ partialNow,
765
+ ),
766
+ ) as ResumeResponseDecision;
767
+ if (decision.action !== 'write') {
768
+ // 响应体从未落盘,partial + sidecar 原样保留,除非下面判定要重来。
769
+ discardBody = true;
770
+ pendingChunks = null;
771
+ }
772
+ if (decision.action === 'complete') {
773
+ // 416 且 partial 实际上就是完整文件。
774
+ const knownTotal = decision.total ?? 0;
775
+ this.onProgressUpdate(knownTotal, knownTotal);
776
+ return 'done';
777
+ }
778
+ if (decision.action === 'restart') {
779
+ // 过期的 416、编码过的 range 字节、或 Content-Range 缺失/畸形/
780
+ // 起点不符:追加不可信。按“partial 已过期”处理(删掉、干净地
781
+ // 重来一次),而不是抛错——抛错会保留 partial,之后每次都撞同一堵墙。
782
+ return 'staleRange';
783
+ }
784
+ if (decision.action !== 'write') {
785
+ // 其余非 2xx:partial + sidecar 原样保留——那就是续传状态。
786
+ throw createPushyError(
787
+ ERROR_DOWNLOAD_FAILED,
788
+ `Server error: ${responseCode}`,
789
+ );
790
+ }
791
+ baseOffset = decision.base ?? 0;
792
+ totalAll = decision.total ?? 0;
793
+ if (decision.append) {
931
794
  writer = await fileIo.open(
932
795
  params.targetFile,
933
796
  fileIo.OpenMode.WRITE_ONLY | fileIo.OpenMode.APPEND,
934
797
  );
935
798
  } else {
936
799
  // 服务端忽略了 Range(或本就没发):从零开始。
937
- if (fileIo.accessSync(params.targetFile)) {
938
- await fileIo.unlink(params.targetFile);
939
- }
940
- baseOffset = 0;
941
- totalAll = contentLength > 0 ? contentLength : 0;
800
+ await unlinkIfExists(params.targetFile);
942
801
  writer = await fileIo.open(
943
802
  params.targetFile,
944
803
  fileIo.OpenMode.CREATE | fileIo.OpenMode.WRITE_ONLY,
@@ -946,7 +805,7 @@ export class DownloadTask {
946
805
  }
947
806
  if (totalAll > MAX_ARCHIVE_BYTES) {
948
807
  writeError = createPushyError(
949
- ERROR_DELTA_FAILED,
808
+ ERROR_DOWNLOAD_FAILED,
950
809
  `archive too large: ${totalAll} bytes`,
951
810
  );
952
811
  throw writeError;
@@ -954,21 +813,15 @@ export class DownloadTask {
954
813
  await ensureFreeSpace(
955
814
  params.targetFile,
956
815
  totalAll > 0 ? totalAll - baseOffset : 0,
816
+ ERROR_DOWNLOAD_FAILED,
957
817
  );
958
- // 先落 sidecar 再放行写入,流中崩溃才有得续。
959
- const meta: ResumeMeta = { url: params.url };
960
- const etag = etagHeader || resumeMeta?.etag;
961
- const lastModified = lastModifiedHeader || resumeMeta?.lastModified;
962
- if (etag) {
963
- meta.etag = etag;
964
- }
965
- if (lastModified) {
966
- meta.lastModified = lastModified;
967
- }
968
- if (totalAll > 0) {
969
- meta.total = totalAll;
818
+ if (decision.persistSidecar) {
819
+ // 先落 sidecar 再放行写入,流中崩溃才有得续。
820
+ await this.writeSidecarText(params.targetFile, sidecarFor(totalAll));
821
+ } else {
822
+ // 编码传输不可续传:偏移会落在编码后的表示上。
823
+ await this.deleteResumeSidecar(params.targetFile);
970
824
  }
971
- await this.writeResumeMeta(params.targetFile, meta);
972
825
 
973
826
  // 鉴权通过:回放缓冲,之后的数据直写。
974
827
  const buffered = pendingChunks ?? [];
@@ -1010,15 +863,7 @@ export class DownloadTask {
1010
863
  }
1011
864
  // 用最终观测值刷新 sidecar:首次写入可能因头部竞态缺 total/验证器,
1012
865
  // 补齐后“下载完、解压前死”的窗口才能被 complete 检测覆盖。
1013
- const finalMeta: ResumeMeta = { url: params.url, total: stats.size };
1014
- if (etagHeader || resumeMeta?.etag) {
1015
- finalMeta.etag = etagHeader || resumeMeta?.etag;
1016
- }
1017
- if (lastModifiedHeader || resumeMeta?.lastModified) {
1018
- finalMeta.lastModified =
1019
- lastModifiedHeader || resumeMeta?.lastModified;
1020
- }
1021
- await this.writeResumeMeta(params.targetFile, finalMeta);
866
+ await this.writeSidecarText(params.targetFile, sidecarFor(stats.size));
1022
867
  } else {
1023
868
  // 编码传输不可续传:盘上是解码后的字节,编码域的长度与偏移都失效。
1024
869
  await this.deleteResumeSidecar(params.targetFile);
@@ -1074,16 +919,12 @@ export class DownloadTask {
1074
919
  return work;
1075
920
  }
1076
921
 
1077
- /** 解压目录里的条目名 + __diff.json 解析结果,供 patch plan 使用。 */
1078
- private async readDeltaInputs(
1079
- work: string,
1080
- normalizeResourceCopies: boolean,
1081
- ): Promise<DeltaInputs> {
922
+ private async readDeltaInputs(work: string): Promise<DeltaInputs> {
1082
923
  const results = await Promise.all([
1083
924
  this.listEntryNames(work),
1084
- this.readManifestArrays(work, normalizeResourceCopies),
925
+ this.readManifestJson(work),
1085
926
  ]);
1086
- return { entryNames: results[0], manifestArrays: results[1] };
927
+ return { entryNames: results[0], manifestJson: results[1] };
1087
928
  }
1088
929
 
1089
930
  private async doFullPatch(params: DownloadTaskParams): Promise<void> {
@@ -1093,78 +934,27 @@ export class DownloadTask {
1093
934
 
1094
935
  private async doPatchFromApp(params: DownloadTaskParams): Promise<void> {
1095
936
  const work = await this.downloadAndExtract(params);
1096
- const inputs = await this.readDeltaInputs(work, true);
1097
- const manifestArrays = inputs.manifestArrays;
1098
-
1099
- NativePatchCore.buildArchivePlan(
1100
- ARCHIVE_PATCH_TYPE_FROM_PACKAGE,
1101
- inputs.entryNames,
1102
- manifestArrays.copyFroms,
1103
- manifestArrays.copyTos,
1104
- manifestArrays.deletes,
1105
- BUNDLE_DELTA_ENTRY,
1106
- );
1107
-
1108
- const bundleDeltaPath = `${work}/${BUNDLE_DELTA_ENTRY}`;
1109
- if (!fileIo.accessSync(bundleDeltaPath)) {
1110
- throw createPushyError(ERROR_DELTA_FAILED, 'bundle delta not found');
1111
- }
1112
- const resourceManager = this.context.resourceManager;
1113
- const originContent = await resourceManager.getRawFileContent(
1114
- 'bundle.harmony.js',
1115
- );
1116
- await this.applyBundlePatchFromFileSource(
1117
- originContent.buffer as ArrayBuffer,
937
+ const copyGroups = await this.applyPatchFromEmbeddedBundle(
1118
938
  work,
1119
- bundleDeltaPath,
1120
- `${work}/${HARMONY_BUNDLE_FILE_NAME}`,
1121
- manifestArrays.hbcTransformMeta,
1122
- );
1123
- // 组按 from 聚合;同一 from 的内容必然一致,所以每组一个 CRC 即可
1124
- // (与 manifest 逐位对齐的 copyCrcs 里取第一个非空值)。
1125
- const crcByFrom = new Map<string, number>();
1126
- manifestArrays.copyFroms.forEach((from, index) => {
1127
- const crc = manifestArrays.copyCrcs[index];
1128
- if (crc !== null && !crcByFrom.has(from)) {
1129
- crcByFrom.set(from, crc);
1130
- }
1131
- });
1132
- await this.copyFromResource(
1133
- NativePatchCore.buildCopyGroups(
1134
- manifestArrays.copyFroms,
1135
- manifestArrays.copyTos,
1136
- ),
1137
- work,
1138
- crcByFrom,
939
+ await this.readDeltaInputs(work),
1139
940
  );
941
+ await this.copyFromResource(copyGroups, work);
1140
942
  await this.deleteArchiveAndSidecar(params.targetFile);
1141
943
  }
1142
944
 
1143
945
  private async doPatchFromPpk(params: DownloadTaskParams): Promise<void> {
1144
946
  const work = await this.downloadAndExtract(params);
1145
- const inputs = await this.readDeltaInputs(work, false);
1146
- const manifestArrays = inputs.manifestArrays;
1147
-
1148
- const plan = NativePatchCore.buildArchivePlan(
1149
- ARCHIVE_PATCH_TYPE_FROM_PPK,
1150
- inputs.entryNames,
1151
- manifestArrays.copyFroms,
1152
- manifestArrays.copyTos,
1153
- manifestArrays.deletes,
1154
- BUNDLE_DELTA_ENTRY,
1155
- );
1156
- await NativePatchCore.applyDeltaFromSource({
1157
- copyFroms: manifestArrays.copyFroms,
1158
- copyTos: manifestArrays.copyTos,
1159
- deletes: manifestArrays.deletes,
947
+ const inputs = await this.readDeltaInputs(work);
948
+ await NativePatchCore.applyArchiveDelta({
949
+ archiveType: ARCHIVE_PATCH_TYPE_FROM_PPK,
950
+ entryNames: inputs.entryNames,
951
+ manifestJson: inputs.manifestJson,
952
+ bundleDeltaEntry: BUNDLE_DELTA_ENTRY,
1160
953
  sourceRoot: params.originDirectory,
1161
954
  targetRoot: work,
1162
- originBundlePath: `${params.originDirectory}/bundle.harmony.js`,
955
+ originBundlePath: `${params.originDirectory}/${HARMONY_BUNDLE_FILE_NAME}`,
1163
956
  bundleDeltaPath: `${work}/${BUNDLE_DELTA_ENTRY}`,
1164
957
  bundleOutputPath: `${work}/${HARMONY_BUNDLE_FILE_NAME}`,
1165
- mergeSourceSubdir: plan.mergeSourceSubdir,
1166
- enableMerge: plan.enableMerge,
1167
- bundleHbcTransformMeta: manifestArrays.hbcTransformMeta,
1168
958
  });
1169
959
  logger.info(TAG, 'Delta from PPK completed');
1170
960
  await this.deleteArchiveAndSidecar(params.targetFile);
@@ -1173,7 +963,6 @@ export class DownloadTask {
1173
963
  private async copyFromResource(
1174
964
  copyGroups: CopyGroupResult[],
1175
965
  targetRoot: string,
1176
- crcByFrom?: Map<string, number>,
1177
966
  ): Promise<void> {
1178
967
  let currentFrom = '';
1179
968
  try {
@@ -1185,7 +974,7 @@ export class DownloadTask {
1185
974
  if (targets.length === 0) {
1186
975
  continue;
1187
976
  }
1188
- const expectedCrc = crcByFrom?.get(currentFrom);
977
+ const expectedCrc = group.expectedCrc;
1189
978
 
1190
979
  if (currentFrom.startsWith('resources/base/media/')) {
1191
980
  // Strip only the final extension: 'icon.round.png' -> 'icon.round',
@@ -1218,28 +1007,15 @@ export class DownloadTask {
1218
1007
  continue;
1219
1008
  }
1220
1009
 
1221
- const fromContent = await resourceManager.getRawFd(currentFrom);
1222
- try {
1223
- const firstTarget = targets[0];
1224
- const restTargets = targets.slice(1);
1225
- await this.ensureParentDirectories(targets);
1226
- if (fileIo.accessSync(firstTarget)) {
1227
- await fileIo.unlink(firstTarget);
1228
- }
1229
- saveFileToSandbox(fromContent, firstTarget);
1230
- await Promise.all(
1231
- restTargets.map(target => this.copySandboxFile(firstTarget, target)),
1232
- );
1233
- } finally {
1234
- try {
1235
- await resourceManager.closeRawFd(currentFrom);
1236
- } catch (closeError) {
1237
- logger.error(
1238
- TAG,
1239
- `Failed to close raw fd for ${currentFrom}: ${getErrorMessage(closeError)}`,
1240
- );
1241
- }
1242
- }
1010
+ const firstTarget = targets[0];
1011
+ const restTargets = targets.slice(1);
1012
+ await this.ensureParentDirectories(targets);
1013
+ await withRawFd(resourceManager, currentFrom, descriptor =>
1014
+ saveFileToSandbox(descriptor, firstTarget),
1015
+ );
1016
+ await Promise.all(
1017
+ restTargets.map(target => this.copySandboxFile(firstTarget, target)),
1018
+ );
1243
1019
  }
1244
1020
  } catch (error) {
1245
1021
  const coded = toPushyError(error, ERROR_DELTA_FAILED);
@@ -1282,25 +1058,7 @@ export class DownloadTask {
1282
1058
  }
1283
1059
  }
1284
1060
 
1285
- private async doCleanUp(params: DownloadTaskParams): Promise<void> {
1286
- try {
1287
- await NativePatchCore.cleanupOldEntries(
1288
- params.unzipDirectory,
1289
- [params.hash, params.originHash].filter(name => !!name),
1290
- 3,
1291
- );
1292
- } catch (error) {
1293
- const message = `Cleanup failed: ${getErrorMessage(error)}`;
1294
- logger.error(TAG, message);
1295
- throw createPushyError(ERROR_FILE_OPERATION_FAILED, message);
1296
- }
1297
- }
1298
-
1299
1061
  public async execute(params: DownloadTaskParams): Promise<void> {
1300
- const isPatchTask =
1301
- params.type === DownloadTaskParams.TASK_TYPE_PATCH_FULL ||
1302
- params.type === DownloadTaskParams.TASK_TYPE_PATCH_FROM_APP ||
1303
- params.type === DownloadTaskParams.TASK_TYPE_PATCH_FROM_PPK;
1304
1062
  try {
1305
1063
  switch (params.type) {
1306
1064
  case DownloadTaskParams.TASK_TYPE_PATCH_FULL:
@@ -1312,24 +1070,13 @@ export class DownloadTask {
1312
1070
  case DownloadTaskParams.TASK_TYPE_PATCH_FROM_PPK:
1313
1071
  await this.doPatchFromPpk(params);
1314
1072
  break;
1315
- case DownloadTaskParams.TASK_TYPE_CLEANUP:
1316
- await this.doCleanUp(params);
1317
- break;
1318
- case DownloadTaskParams.TASK_TYPE_PLAIN_DOWNLOAD:
1319
- await this.downloadFile(params);
1320
- // 文件在完成时即是最终产物——残留的 sidecar 会让下次同 URL 的
1321
- // 下载不发请求直接返回这份旧字节。
1322
- await this.deleteResumeSidecar(params.targetFile);
1323
- break;
1324
1073
  default:
1325
1074
  throw createPushyError(
1326
1075
  ERROR_INVALID_OPTIONS,
1327
1076
  `Unknown task type: ${params.type}`,
1328
1077
  );
1329
1078
  }
1330
- if (isPatchTask) {
1331
- await this.promoteStaging(params);
1332
- }
1079
+ await this.promoteStaging(params);
1333
1080
  } catch (rawError) {
1334
1081
  // 稳定错误码:下载阶段的失败是 DOWNLOAD_FAILED;归档收齐之后的失败
1335
1082
  // (解压/hpatch/资源拷贝含 copiesCrc 校验/完成记录)一律 PATCH_FAILED,
@@ -1340,29 +1087,22 @@ export class DownloadTask {
1340
1087
  this.downloadPhaseCompleted ? ERROR_DELTA_FAILED : ERROR_DOWNLOAD_FAILED,
1341
1088
  );
1342
1089
  logger.error(TAG, `Task execution failed: ${error.message}`);
1343
- if (params.type !== DownloadTaskParams.TASK_TYPE_CLEANUP) {
1344
- try {
1345
- if (params.type === DownloadTaskParams.TASK_TYPE_PLAIN_DOWNLOAD) {
1346
- await fileIo.unlink(params.targetFile);
1347
- await this.deleteResumeSidecar(params.targetFile);
1348
- } else {
1349
- // Only the staging directory is ours to drop: the final version
1350
- // directory is never touched by a failed install, so a failed
1351
- // duplicate task cannot remove an earlier task's install.
1352
- await this.removeDirectory(this.stagingDirectory(params));
1353
- if (this.downloadPhaseCompleted) {
1354
- // 收齐后才失败的是解压/patch 失败:归档有毒,续传只会撞上
1355
- // 同一个失败。下载阶段的失败则保留 partial + sidecar——那
1356
- // 就是续传状态。
1357
- await this.deleteArchiveAndSidecar(params.targetFile);
1358
- }
1359
- }
1360
- } catch (cleanupError) {
1361
- logger.error(
1362
- TAG,
1363
- `Cleanup after error failed: ${getErrorMessage(cleanupError)}`,
1364
- );
1090
+ try {
1091
+ // Only the staging directory is ours to drop: the final version
1092
+ // directory is never touched by a failed install, so a failed
1093
+ // duplicate task cannot remove an earlier task's install.
1094
+ await this.removeDirectory(this.stagingDirectory(params));
1095
+ if (this.downloadPhaseCompleted) {
1096
+ // 收齐后才失败的是解压/patch 失败:归档有毒,续传只会撞上
1097
+ // 同一个失败。下载阶段的失败则保留 partial + sidecar——那
1098
+ // 就是续传状态。
1099
+ await this.deleteArchiveAndSidecar(params.targetFile);
1365
1100
  }
1101
+ } catch (cleanupError) {
1102
+ logger.error(
1103
+ TAG,
1104
+ `Cleanup after error failed: ${getErrorMessage(cleanupError)}`,
1105
+ );
1366
1106
  }
1367
1107
  throw error;
1368
1108
  }