rn-update 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (880) hide show
  1. package/LICENSE +22 -0
  2. package/README-CN.md +97 -0
  3. package/README.md +97 -0
  4. package/THIRD_PARTY_NOTICES.md +8 -0
  5. package/android/build.gradle +253 -0
  6. package/android/jni/Android.mk +41 -0
  7. package/android/jni/Application.mk +20 -0
  8. package/android/jni/HDiffPatch/.travis.yml +33 -0
  9. package/android/jni/HDiffPatch/CHANGELOG.md +153 -0
  10. package/android/jni/HDiffPatch/LICENSE +48 -0
  11. package/android/jni/HDiffPatch/Makefile +157 -0
  12. package/android/jni/HDiffPatch/README.md +307 -0
  13. package/android/jni/HDiffPatch/_atosize.h +83 -0
  14. package/android/jni/HDiffPatch/_clock_for_demo.h +47 -0
  15. package/android/jni/HDiffPatch/_dir_ignore.h +191 -0
  16. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/Android.mk +37 -0
  17. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/Application.mk +7 -0
  18. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/build_libs.bat +1 -0
  19. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/build_libs.sh +1 -0
  20. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch.c +18 -0
  21. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch.h +20 -0
  22. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch_jni.c +28 -0
  23. package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/java/com/github/sisong/HPatch.java +8 -0
  24. package/android/jni/HDiffPatch/builds/codeblocks/HDiffPatch.workspace +8 -0
  25. package/android/jni/HDiffPatch/builds/codeblocks/HDiffZ.cbp +219 -0
  26. package/android/jni/HDiffPatch/builds/codeblocks/HPatchZ.cbp +156 -0
  27. package/android/jni/HDiffPatch/builds/codeblocks/unitTest.cbp +65 -0
  28. package/android/jni/HDiffPatch/builds/vc/HDiffPatch.sln +105 -0
  29. package/android/jni/HDiffPatch/builds/vc/HDiffZ.vcxproj +237 -0
  30. package/android/jni/HDiffPatch/builds/vc/HDiffZ.vcxproj.user +3 -0
  31. package/android/jni/HDiffPatch/builds/vc/HPatchZ.vcxproj +318 -0
  32. package/android/jni/HDiffPatch/builds/vc/HPatchZ.vcxproj.user +3 -0
  33. package/android/jni/HDiffPatch/builds/vc/unitTest.vcxproj +182 -0
  34. package/android/jni/HDiffPatch/builds/vc/unitTest.vcxproj.user +3 -0
  35. package/android/jni/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/contents.xcworkspacedata +30 -0
  36. package/android/jni/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  37. package/android/jni/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.pbxproj +408 -0
  38. package/android/jni/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  39. package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.pbxproj +573 -0
  40. package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  41. package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  42. package/android/jni/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.pbxproj +396 -0
  43. package/android/jni/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  44. package/android/jni/HDiffPatch/builds/xcode/lz4.xcodeproj/project.pbxproj +268 -0
  45. package/android/jni/HDiffPatch/builds/xcode/lz4.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  46. package/android/jni/HDiffPatch/builds/xcode/lzma.xcodeproj/project.pbxproj +361 -0
  47. package/android/jni/HDiffPatch/builds/xcode/lzma.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  48. package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.pbxproj +301 -0
  49. package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  50. package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  51. package/android/jni/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.pbxproj +411 -0
  52. package/android/jni/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  53. package/android/jni/HDiffPatch/builds/xcode/zstd.xcodeproj/project.pbxproj +504 -0
  54. package/android/jni/HDiffPatch/builds/xcode/zstd.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  55. package/android/jni/HDiffPatch/checksum_plugin_demo.h +344 -0
  56. package/android/jni/HDiffPatch/compress_parallel.cpp +166 -0
  57. package/android/jni/HDiffPatch/compress_parallel.h +59 -0
  58. package/android/jni/HDiffPatch/compress_plugin_demo.h +1152 -0
  59. package/android/jni/HDiffPatch/decompress_plugin_demo.h +995 -0
  60. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.cpp +797 -0
  61. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.h +65 -0
  62. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.cpp +200 -0
  63. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.h +178 -0
  64. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.cpp +357 -0
  65. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.h +87 -0
  66. package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/file_for_dirDiff.h +151 -0
  67. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.c +770 -0
  68. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.h +236 -0
  69. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_private.h +47 -0
  70. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.c +112 -0
  71. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.h +53 -0
  72. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_types.h +61 -0
  73. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.c +331 -0
  74. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.h +144 -0
  75. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_stream.c +176 -0
  76. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_stream.h +84 -0
  77. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.c +146 -0
  78. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.h +61 -0
  79. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.c +152 -0
  80. package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.h +76 -0
  81. package/android/jni/HDiffPatch/file_for_patch.c +524 -0
  82. package/android/jni/HDiffPatch/file_for_patch.h +259 -0
  83. package/android/jni/HDiffPatch/hdiffz.cpp +1570 -0
  84. package/android/jni/HDiffPatch/hpatch_dir_listener.h +290 -0
  85. package/android/jni/HDiffPatch/hpatchz.c +1221 -0
  86. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff.cpp +1025 -0
  87. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff.h +116 -0
  88. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff_types.h +72 -0
  89. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.cpp +213 -0
  90. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.h +63 -0
  91. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.cpp +170 -0
  92. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.h +86 -0
  93. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/config.h +89 -0
  94. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c +13 -0
  95. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c.inc.h +398 -0
  96. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.h +194 -0
  97. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.c +13 -0
  98. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.h +204 -0
  99. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort_private.h +207 -0
  100. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/sssort.c.inc.h +815 -0
  101. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/trsort.c.inc.h +586 -0
  102. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/utils.c.inc.h +381 -0
  103. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.c +352 -0
  104. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.h +137 -0
  105. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/bloom_filter.h +137 -0
  106. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/covers.h +70 -0
  107. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp +628 -0
  108. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.h +87 -0
  109. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp +363 -0
  110. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.h +139 -0
  111. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/mem_buf.h +68 -0
  112. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/pack_uint.h +115 -0
  113. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.cpp +342 -0
  114. package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.h +94 -0
  115. package/android/jni/HDiffPatch/libHDiffPatch/HPatch/checksum_plugin.h +52 -0
  116. package/android/jni/HDiffPatch/libHDiffPatch/HPatch/patch.c +2292 -0
  117. package/android/jni/HDiffPatch/libHDiffPatch/HPatch/patch.h +215 -0
  118. package/android/jni/HDiffPatch/libHDiffPatch/HPatch/patch_private.h +165 -0
  119. package/android/jni/HDiffPatch/libHDiffPatch/HPatch/patch_types.h +251 -0
  120. package/android/jni/HDiffPatch/libParallel/parallel_channel.cpp +174 -0
  121. package/android/jni/HDiffPatch/libParallel/parallel_channel.h +73 -0
  122. package/android/jni/HDiffPatch/libParallel/parallel_import.cpp +367 -0
  123. package/android/jni/HDiffPatch/libParallel/parallel_import.h +92 -0
  124. package/android/jni/hpatch.c +232 -0
  125. package/android/jni/hpatch.h +43 -0
  126. package/android/jni/lzma/Asm/arm/7zCrcOpt.asm +100 -0
  127. package/android/jni/lzma/Asm/x86/7zAsm.asm +147 -0
  128. package/android/jni/lzma/Asm/x86/7zCrcOpt.asm +147 -0
  129. package/android/jni/lzma/Asm/x86/AesOpt.asm +237 -0
  130. package/android/jni/lzma/Asm/x86/LzmaDecOpt.asm +1258 -0
  131. package/android/jni/lzma/Asm/x86/XzCrc64Opt.asm +205 -0
  132. package/android/jni/lzma/C/7z.h +202 -0
  133. package/android/jni/lzma/C/7zAlloc.c +80 -0
  134. package/android/jni/lzma/C/7zAlloc.h +19 -0
  135. package/android/jni/lzma/C/7zArcIn.c +1771 -0
  136. package/android/jni/lzma/C/7zBuf.c +36 -0
  137. package/android/jni/lzma/C/7zBuf.h +35 -0
  138. package/android/jni/lzma/C/7zBuf2.c +52 -0
  139. package/android/jni/lzma/C/7zCrc.c +128 -0
  140. package/android/jni/lzma/C/7zCrc.h +25 -0
  141. package/android/jni/lzma/C/7zCrcOpt.c +115 -0
  142. package/android/jni/lzma/C/7zDec.c +591 -0
  143. package/android/jni/lzma/C/7zFile.c +286 -0
  144. package/android/jni/lzma/C/7zFile.h +83 -0
  145. package/android/jni/lzma/C/7zStream.c +176 -0
  146. package/android/jni/lzma/C/7zTypes.h +375 -0
  147. package/android/jni/lzma/C/7zVersion.h +27 -0
  148. package/android/jni/lzma/C/7zVersion.rc +55 -0
  149. package/android/jni/lzma/C/Aes.c +306 -0
  150. package/android/jni/lzma/C/Aes.h +38 -0
  151. package/android/jni/lzma/C/AesOpt.c +184 -0
  152. package/android/jni/lzma/C/Alloc.c +455 -0
  153. package/android/jni/lzma/C/Alloc.h +51 -0
  154. package/android/jni/lzma/C/Bcj2.c +257 -0
  155. package/android/jni/lzma/C/Bcj2.h +146 -0
  156. package/android/jni/lzma/C/Bcj2Enc.c +311 -0
  157. package/android/jni/lzma/C/Bra.c +230 -0
  158. package/android/jni/lzma/C/Bra.h +64 -0
  159. package/android/jni/lzma/C/Bra86.c +82 -0
  160. package/android/jni/lzma/C/BraIA64.c +53 -0
  161. package/android/jni/lzma/C/Compiler.h +33 -0
  162. package/android/jni/lzma/C/CpuArch.c +218 -0
  163. package/android/jni/lzma/C/CpuArch.h +336 -0
  164. package/android/jni/lzma/C/Delta.c +64 -0
  165. package/android/jni/lzma/C/Delta.h +19 -0
  166. package/android/jni/lzma/C/DllSecur.c +108 -0
  167. package/android/jni/lzma/C/DllSecur.h +20 -0
  168. package/android/jni/lzma/C/LzFind.c +1127 -0
  169. package/android/jni/lzma/C/LzFind.h +121 -0
  170. package/android/jni/lzma/C/LzFindMt.c +853 -0
  171. package/android/jni/lzma/C/LzFindMt.h +101 -0
  172. package/android/jni/lzma/C/LzHash.h +57 -0
  173. package/android/jni/lzma/C/Lzma2Dec.c +488 -0
  174. package/android/jni/lzma/C/Lzma2Dec.h +120 -0
  175. package/android/jni/lzma/C/Lzma2DecMt.c +1082 -0
  176. package/android/jni/lzma/C/Lzma2DecMt.h +79 -0
  177. package/android/jni/lzma/C/Lzma2Enc.c +803 -0
  178. package/android/jni/lzma/C/Lzma2Enc.h +55 -0
  179. package/android/jni/lzma/C/Lzma86.h +111 -0
  180. package/android/jni/lzma/C/Lzma86Dec.c +54 -0
  181. package/android/jni/lzma/C/Lzma86Enc.c +106 -0
  182. package/android/jni/lzma/C/LzmaDec.c +1185 -0
  183. package/android/jni/lzma/C/LzmaDec.h +234 -0
  184. package/android/jni/lzma/C/LzmaEnc.c +2976 -0
  185. package/android/jni/lzma/C/LzmaEnc.h +76 -0
  186. package/android/jni/lzma/C/LzmaLib.c +40 -0
  187. package/android/jni/lzma/C/LzmaLib.h +131 -0
  188. package/android/jni/lzma/C/MtCoder.c +601 -0
  189. package/android/jni/lzma/C/MtCoder.h +141 -0
  190. package/android/jni/lzma/C/MtDec.c +1138 -0
  191. package/android/jni/lzma/C/MtDec.h +201 -0
  192. package/android/jni/lzma/C/Ppmd.h +85 -0
  193. package/android/jni/lzma/C/Ppmd7.c +712 -0
  194. package/android/jni/lzma/C/Ppmd7.h +142 -0
  195. package/android/jni/lzma/C/Ppmd7Dec.c +191 -0
  196. package/android/jni/lzma/C/Ppmd7Enc.c +187 -0
  197. package/android/jni/lzma/C/Precomp.h +10 -0
  198. package/android/jni/lzma/C/RotateDefs.h +30 -0
  199. package/android/jni/lzma/C/Sha256.c +248 -0
  200. package/android/jni/lzma/C/Sha256.h +26 -0
  201. package/android/jni/lzma/C/Sort.c +141 -0
  202. package/android/jni/lzma/C/Sort.h +18 -0
  203. package/android/jni/lzma/C/Threads.c +95 -0
  204. package/android/jni/lzma/C/Threads.h +70 -0
  205. package/android/jni/lzma/C/ThreadsP.c +396 -0
  206. package/android/jni/lzma/C/ThreadsP.h +31 -0
  207. package/android/jni/lzma/C/Util/7z/7z.dsp +241 -0
  208. package/android/jni/lzma/C/Util/7z/7z.dsw +29 -0
  209. package/android/jni/lzma/C/Util/7z/7zMain.c +686 -0
  210. package/android/jni/lzma/C/Util/7z/Precomp.c +4 -0
  211. package/android/jni/lzma/C/Util/7z/Precomp.h +10 -0
  212. package/android/jni/lzma/C/Util/7z/makefile +40 -0
  213. package/android/jni/lzma/C/Util/7z/makefile.gcc +75 -0
  214. package/android/jni/lzma/C/Util/Lzma/LzmaUtil.c +258 -0
  215. package/android/jni/lzma/C/Util/Lzma/LzmaUtil.dsp +168 -0
  216. package/android/jni/lzma/C/Util/Lzma/LzmaUtil.dsw +29 -0
  217. package/android/jni/lzma/C/Util/Lzma/makefile +28 -0
  218. package/android/jni/lzma/C/Util/Lzma/makefile.gcc +44 -0
  219. package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.def +4 -0
  220. package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.dsp +178 -0
  221. package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.dsw +29 -0
  222. package/android/jni/lzma/C/Util/LzmaLib/LzmaLibExports.c +14 -0
  223. package/android/jni/lzma/C/Util/LzmaLib/makefile +34 -0
  224. package/android/jni/lzma/C/Util/LzmaLib/resource.rc +3 -0
  225. package/android/jni/lzma/C/Util/SfxSetup/Precomp.c +4 -0
  226. package/android/jni/lzma/C/Util/SfxSetup/Precomp.h +10 -0
  227. package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.c +640 -0
  228. package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.dsp +231 -0
  229. package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.dsw +29 -0
  230. package/android/jni/lzma/C/Util/SfxSetup/makefile +37 -0
  231. package/android/jni/lzma/C/Util/SfxSetup/makefile_con +38 -0
  232. package/android/jni/lzma/C/Util/SfxSetup/resource.rc +5 -0
  233. package/android/jni/lzma/C/Util/SfxSetup/setup.ico +0 -0
  234. package/android/jni/lzma/C/Xz.c +90 -0
  235. package/android/jni/lzma/C/Xz.h +460 -0
  236. package/android/jni/lzma/C/XzCrc64.c +86 -0
  237. package/android/jni/lzma/C/XzCrc64.h +26 -0
  238. package/android/jni/lzma/C/XzCrc64Opt.c +69 -0
  239. package/android/jni/lzma/C/XzDec.c +2766 -0
  240. package/android/jni/lzma/C/XzEnc.c +1329 -0
  241. package/android/jni/lzma/C/XzEnc.h +60 -0
  242. package/android/jni/lzma/C/XzIn.c +319 -0
  243. package/android/jni/lzma/CPP/7zip/7zip.mak +240 -0
  244. package/android/jni/lzma/CPP/7zip/Aes.mak +7 -0
  245. package/android/jni/lzma/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
  246. package/android/jni/lzma/CPP/7zip/Archive/7z/7zCompressionMode.h +76 -0
  247. package/android/jni/lzma/CPP/7zip/Archive/7z/7zDecode.cpp +569 -0
  248. package/android/jni/lzma/CPP/7zip/Archive/7z/7zDecode.h +70 -0
  249. package/android/jni/lzma/CPP/7zip/Archive/7z/7zEncode.cpp +678 -0
  250. package/android/jni/lzma/CPP/7zip/Archive/7z/7zEncode.h +92 -0
  251. package/android/jni/lzma/CPP/7zip/Archive/7z/7zExtract.cpp +423 -0
  252. package/android/jni/lzma/CPP/7zip/Archive/7z/7zFolderInStream.cpp +139 -0
  253. package/android/jni/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h +61 -0
  254. package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandler.cpp +763 -0
  255. package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandler.h +181 -0
  256. package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp +942 -0
  257. package/android/jni/lzma/CPP/7zip/Archive/7z/7zHeader.cpp +19 -0
  258. package/android/jni/lzma/CPP/7zip/Archive/7z/7zHeader.h +148 -0
  259. package/android/jni/lzma/CPP/7zip/Archive/7z/7zIn.cpp +1666 -0
  260. package/android/jni/lzma/CPP/7zip/Archive/7z/7zIn.h +445 -0
  261. package/android/jni/lzma/CPP/7zip/Archive/7z/7zItem.h +202 -0
  262. package/android/jni/lzma/CPP/7zip/Archive/7z/7zOut.cpp +901 -0
  263. package/android/jni/lzma/CPP/7zip/Archive/7z/7zOut.h +335 -0
  264. package/android/jni/lzma/CPP/7zip/Archive/7z/7zProperties.cpp +174 -0
  265. package/android/jni/lzma/CPP/7zip/Archive/7z/7zProperties.h +22 -0
  266. package/android/jni/lzma/CPP/7zip/Archive/7z/7zRegister.cpp +21 -0
  267. package/android/jni/lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp +22 -0
  268. package/android/jni/lzma/CPP/7zip/Archive/7z/7zSpecStream.h +35 -0
  269. package/android/jni/lzma/CPP/7zip/Archive/7z/7zUpdate.cpp +2500 -0
  270. package/android/jni/lzma/CPP/7zip/Archive/7z/7zUpdate.h +139 -0
  271. package/android/jni/lzma/CPP/7zip/Archive/7z/StdAfx.cpp +3 -0
  272. package/android/jni/lzma/CPP/7zip/Archive/7z/StdAfx.h +8 -0
  273. package/android/jni/lzma/CPP/7zip/Archive/Archive.def +12 -0
  274. package/android/jni/lzma/CPP/7zip/Archive/Archive2.def +19 -0
  275. package/android/jni/lzma/CPP/7zip/Archive/ArchiveExports.cpp +151 -0
  276. package/android/jni/lzma/CPP/7zip/Archive/Common/CoderMixer2.cpp +1125 -0
  277. package/android/jni/lzma/CPP/7zip/Archive/Common/CoderMixer2.h +447 -0
  278. package/android/jni/lzma/CPP/7zip/Archive/Common/DummyOutStream.cpp +17 -0
  279. package/android/jni/lzma/CPP/7zip/Archive/Common/DummyOutStream.h +25 -0
  280. package/android/jni/lzma/CPP/7zip/Archive/Common/HandlerOut.cpp +232 -0
  281. package/android/jni/lzma/CPP/7zip/Archive/Common/HandlerOut.h +110 -0
  282. package/android/jni/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +46 -0
  283. package/android/jni/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.h +67 -0
  284. package/android/jni/lzma/CPP/7zip/Archive/Common/ItemNameUtils.cpp +88 -0
  285. package/android/jni/lzma/CPP/7zip/Archive/Common/ItemNameUtils.h +28 -0
  286. package/android/jni/lzma/CPP/7zip/Archive/Common/MultiStream.cpp +191 -0
  287. package/android/jni/lzma/CPP/7zip/Archive/Common/MultiStream.h +89 -0
  288. package/android/jni/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
  289. package/android/jni/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h +37 -0
  290. package/android/jni/lzma/CPP/7zip/Archive/Common/ParseProperties.cpp +3 -0
  291. package/android/jni/lzma/CPP/7zip/Archive/Common/ParseProperties.h +6 -0
  292. package/android/jni/lzma/CPP/7zip/Archive/Common/StdAfx.h +8 -0
  293. package/android/jni/lzma/CPP/7zip/Archive/DllExports2.cpp +122 -0
  294. package/android/jni/lzma/CPP/7zip/Archive/IArchive.h +608 -0
  295. package/android/jni/lzma/CPP/7zip/Archive/Icons/7z.ico +0 -0
  296. package/android/jni/lzma/CPP/7zip/Archive/LzmaHandler.cpp +629 -0
  297. package/android/jni/lzma/CPP/7zip/Archive/SplitHandler.cpp +359 -0
  298. package/android/jni/lzma/CPP/7zip/Archive/StdAfx.h +8 -0
  299. package/android/jni/lzma/CPP/7zip/Archive/XzHandler.cpp +1308 -0
  300. package/android/jni/lzma/CPP/7zip/Archive/XzHandler.h +11 -0
  301. package/android/jni/lzma/CPP/7zip/Asm.mak +9 -0
  302. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp +1910 -0
  303. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsw +29 -0
  304. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +3 -0
  305. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h +8 -0
  306. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/makefile +154 -0
  307. package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/resource.rc +7 -0
  308. package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +3 -0
  309. package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +8 -0
  310. package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/makefile +96 -0
  311. package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/resource.rc +5 -0
  312. package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +3 -0
  313. package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h +8 -0
  314. package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/makefile +116 -0
  315. package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/resource.rc +5 -0
  316. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +799 -0
  317. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +477 -0
  318. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +29 -0
  319. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +3 -0
  320. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h +8 -0
  321. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/makefile +59 -0
  322. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/makefile.gcc +195 -0
  323. package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/resource.rc +3 -0
  324. package/android/jni/lzma/CPP/7zip/Bundles/LzmaSpec/LzmaSpec.cpp +715 -0
  325. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  326. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +912 -0
  327. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +29 -0
  328. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +482 -0
  329. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +3 -0
  330. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h +8 -0
  331. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/makefile +134 -0
  332. package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/resource.rc +5 -0
  333. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +246 -0
  334. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +86 -0
  335. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +137 -0
  336. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +11 -0
  337. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +803 -0
  338. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +29 -0
  339. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +364 -0
  340. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +3 -0
  341. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h +13 -0
  342. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/makefile +117 -0
  343. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/resource.h +6 -0
  344. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/resource.rc +16 -0
  345. package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  346. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  347. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +988 -0
  348. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +29 -0
  349. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +241 -0
  350. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +3 -0
  351. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h +14 -0
  352. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/makefile +153 -0
  353. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/resource.h +1 -0
  354. package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/resource.rc +50 -0
  355. package/android/jni/lzma/CPP/7zip/Common/CWrappers.cpp +250 -0
  356. package/android/jni/lzma/CPP/7zip/Common/CWrappers.h +120 -0
  357. package/android/jni/lzma/CPP/7zip/Common/CreateCoder.cpp +536 -0
  358. package/android/jni/lzma/CPP/7zip/Common/CreateCoder.h +192 -0
  359. package/android/jni/lzma/CPP/7zip/Common/FilePathAutoRename.cpp +46 -0
  360. package/android/jni/lzma/CPP/7zip/Common/FilePathAutoRename.h +10 -0
  361. package/android/jni/lzma/CPP/7zip/Common/FileStreams.cpp +475 -0
  362. package/android/jni/lzma/CPP/7zip/Common/FileStreams.h +166 -0
  363. package/android/jni/lzma/CPP/7zip/Common/FilterCoder.cpp +435 -0
  364. package/android/jni/lzma/CPP/7zip/Common/FilterCoder.h +205 -0
  365. package/android/jni/lzma/CPP/7zip/Common/InBuffer.cpp +163 -0
  366. package/android/jni/lzma/CPP/7zip/Common/InBuffer.h +92 -0
  367. package/android/jni/lzma/CPP/7zip/Common/InOutTempBuffer.cpp +127 -0
  368. package/android/jni/lzma/CPP/7zip/Common/InOutTempBuffer.h +48 -0
  369. package/android/jni/lzma/CPP/7zip/Common/LimitedStreams.cpp +367 -0
  370. package/android/jni/lzma/CPP/7zip/Common/LimitedStreams.h +252 -0
  371. package/android/jni/lzma/CPP/7zip/Common/LockedStream.cpp +3 -0
  372. package/android/jni/lzma/CPP/7zip/Common/LockedStream.h +6 -0
  373. package/android/jni/lzma/CPP/7zip/Common/MethodId.cpp +3 -0
  374. package/android/jni/lzma/CPP/7zip/Common/MethodId.h +10 -0
  375. package/android/jni/lzma/CPP/7zip/Common/MethodProps.cpp +509 -0
  376. package/android/jni/lzma/CPP/7zip/Common/MethodProps.h +264 -0
  377. package/android/jni/lzma/CPP/7zip/Common/OffsetStream.cpp +39 -0
  378. package/android/jni/lzma/CPP/7zip/Common/OffsetStream.h +26 -0
  379. package/android/jni/lzma/CPP/7zip/Common/OutBuffer.cpp +111 -0
  380. package/android/jni/lzma/CPP/7zip/Common/OutBuffer.h +66 -0
  381. package/android/jni/lzma/CPP/7zip/Common/ProgressUtils.cpp +51 -0
  382. package/android/jni/lzma/CPP/7zip/Common/ProgressUtils.h +35 -0
  383. package/android/jni/lzma/CPP/7zip/Common/PropId.cpp +108 -0
  384. package/android/jni/lzma/CPP/7zip/Common/RegisterArc.h +78 -0
  385. package/android/jni/lzma/CPP/7zip/Common/RegisterCodec.h +106 -0
  386. package/android/jni/lzma/CPP/7zip/Common/StdAfx.h +8 -0
  387. package/android/jni/lzma/CPP/7zip/Common/StreamBinder.cpp +156 -0
  388. package/android/jni/lzma/CPP/7zip/Common/StreamBinder.h +60 -0
  389. package/android/jni/lzma/CPP/7zip/Common/StreamObjects.cpp +285 -0
  390. package/android/jni/lzma/CPP/7zip/Common/StreamObjects.h +157 -0
  391. package/android/jni/lzma/CPP/7zip/Common/StreamUtils.cpp +56 -0
  392. package/android/jni/lzma/CPP/7zip/Common/StreamUtils.h +13 -0
  393. package/android/jni/lzma/CPP/7zip/Common/UniqBlocks.cpp +57 -0
  394. package/android/jni/lzma/CPP/7zip/Common/UniqBlocks.h +26 -0
  395. package/android/jni/lzma/CPP/7zip/Common/VirtThread.cpp +48 -0
  396. package/android/jni/lzma/CPP/7zip/Common/VirtThread.h +24 -0
  397. package/android/jni/lzma/CPP/7zip/Compress/Bcj2Coder.cpp +666 -0
  398. package/android/jni/lzma/CPP/7zip/Compress/Bcj2Coder.h +120 -0
  399. package/android/jni/lzma/CPP/7zip/Compress/Bcj2Register.cpp +24 -0
  400. package/android/jni/lzma/CPP/7zip/Compress/BcjCoder.cpp +24 -0
  401. package/android/jni/lzma/CPP/7zip/Compress/BcjCoder.h +31 -0
  402. package/android/jni/lzma/CPP/7zip/Compress/BcjRegister.cpp +17 -0
  403. package/android/jni/lzma/CPP/7zip/Compress/BranchMisc.cpp +23 -0
  404. package/android/jni/lzma/CPP/7zip/Compress/BranchMisc.h +35 -0
  405. package/android/jni/lzma/CPP/7zip/Compress/BranchRegister.cpp +41 -0
  406. package/android/jni/lzma/CPP/7zip/Compress/ByteSwap.cpp +92 -0
  407. package/android/jni/lzma/CPP/7zip/Compress/CodecExports.cpp +344 -0
  408. package/android/jni/lzma/CPP/7zip/Compress/CopyCoder.cpp +120 -0
  409. package/android/jni/lzma/CPP/7zip/Compress/CopyCoder.h +49 -0
  410. package/android/jni/lzma/CPP/7zip/Compress/CopyRegister.cpp +15 -0
  411. package/android/jni/lzma/CPP/7zip/Compress/DeltaFilter.cpp +128 -0
  412. package/android/jni/lzma/CPP/7zip/Compress/Lzma2Decoder.cpp +265 -0
  413. package/android/jni/lzma/CPP/7zip/Compress/Lzma2Decoder.h +96 -0
  414. package/android/jni/lzma/CPP/7zip/Compress/Lzma2Encoder.cpp +122 -0
  415. package/android/jni/lzma/CPP/7zip/Compress/Lzma2Encoder.h +42 -0
  416. package/android/jni/lzma/CPP/7zip/Compress/Lzma2Register.cpp +22 -0
  417. package/android/jni/lzma/CPP/7zip/Compress/LzmaDecoder.cpp +343 -0
  418. package/android/jni/lzma/CPP/7zip/Compress/LzmaDecoder.h +113 -0
  419. package/android/jni/lzma/CPP/7zip/Compress/LzmaEncoder.cpp +182 -0
  420. package/android/jni/lzma/CPP/7zip/Compress/LzmaEncoder.h +46 -0
  421. package/android/jni/lzma/CPP/7zip/Compress/LzmaRegister.cpp +22 -0
  422. package/android/jni/lzma/CPP/7zip/Compress/PpmdDecoder.cpp +170 -0
  423. package/android/jni/lzma/CPP/7zip/Compress/PpmdDecoder.h +86 -0
  424. package/android/jni/lzma/CPP/7zip/Compress/PpmdEncoder.cpp +152 -0
  425. package/android/jni/lzma/CPP/7zip/Compress/PpmdEncoder.h +58 -0
  426. package/android/jni/lzma/CPP/7zip/Compress/PpmdRegister.cpp +22 -0
  427. package/android/jni/lzma/CPP/7zip/Compress/StdAfx.h +8 -0
  428. package/android/jni/lzma/CPP/7zip/Compress/XzDecoder.cpp +150 -0
  429. package/android/jni/lzma/CPP/7zip/Compress/XzDecoder.h +92 -0
  430. package/android/jni/lzma/CPP/7zip/Compress/XzEncoder.cpp +245 -0
  431. package/android/jni/lzma/CPP/7zip/Compress/XzEncoder.h +46 -0
  432. package/android/jni/lzma/CPP/7zip/Crc.mak +8 -0
  433. package/android/jni/lzma/CPP/7zip/Crc64.mak +8 -0
  434. package/android/jni/lzma/CPP/7zip/Crypto/7zAes.cpp +280 -0
  435. package/android/jni/lzma/CPP/7zip/Crypto/7zAes.h +118 -0
  436. package/android/jni/lzma/CPP/7zip/Crypto/7zAesRegister.cpp +17 -0
  437. package/android/jni/lzma/CPP/7zip/Crypto/MyAes.cpp +112 -0
  438. package/android/jni/lzma/CPP/7zip/Crypto/MyAes.h +57 -0
  439. package/android/jni/lzma/CPP/7zip/Crypto/MyAesReg.cpp +16 -0
  440. package/android/jni/lzma/CPP/7zip/Crypto/RandGen.cpp +233 -0
  441. package/android/jni/lzma/CPP/7zip/Crypto/RandGen.h +40 -0
  442. package/android/jni/lzma/CPP/7zip/Crypto/StdAfx.h +8 -0
  443. package/android/jni/lzma/CPP/7zip/GuiCommon.rc +84 -0
  444. package/android/jni/lzma/CPP/7zip/Guid.txt +220 -0
  445. package/android/jni/lzma/CPP/7zip/ICoder.h +399 -0
  446. package/android/jni/lzma/CPP/7zip/IDecl.h +28 -0
  447. package/android/jni/lzma/CPP/7zip/IPassword.h +23 -0
  448. package/android/jni/lzma/CPP/7zip/IProgress.h +19 -0
  449. package/android/jni/lzma/CPP/7zip/IStream.h +127 -0
  450. package/android/jni/lzma/CPP/7zip/LzmaDec.mak +5 -0
  451. package/android/jni/lzma/CPP/7zip/MyVersion.h +2 -0
  452. package/android/jni/lzma/CPP/7zip/MyVersionInfo.rc +2 -0
  453. package/android/jni/lzma/CPP/7zip/PropID.h +127 -0
  454. package/android/jni/lzma/CPP/7zip/SubBuild.mak +3 -0
  455. package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.cpp +993 -0
  456. package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.dsp +235 -0
  457. package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.dsw +29 -0
  458. package/android/jni/lzma/CPP/7zip/UI/Client7z/StdAfx.cpp +3 -0
  459. package/android/jni/lzma/CPP/7zip/UI/Client7z/StdAfx.h +8 -0
  460. package/android/jni/lzma/CPP/7zip/UI/Client7z/makefile +28 -0
  461. package/android/jni/lzma/CPP/7zip/UI/Client7z/resource.rc +3 -0
  462. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +1295 -0
  463. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h +136 -0
  464. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +1715 -0
  465. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.h +403 -0
  466. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveName.cpp +155 -0
  467. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveName.h +10 -0
  468. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +161 -0
  469. package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.h +112 -0
  470. package/android/jni/lzma/CPP/7zip/UI/Common/Bench.cpp +3618 -0
  471. package/android/jni/lzma/CPP/7zip/UI/Common/Bench.h +77 -0
  472. package/android/jni/lzma/CPP/7zip/UI/Common/DefaultName.cpp +37 -0
  473. package/android/jni/lzma/CPP/7zip/UI/Common/DefaultName.h +11 -0
  474. package/android/jni/lzma/CPP/7zip/UI/Common/DirItem.h +190 -0
  475. package/android/jni/lzma/CPP/7zip/UI/Common/EnumDirItems.cpp +1096 -0
  476. package/android/jni/lzma/CPP/7zip/UI/Common/EnumDirItems.h +42 -0
  477. package/android/jni/lzma/CPP/7zip/UI/Common/ExitCode.h +27 -0
  478. package/android/jni/lzma/CPP/7zip/UI/Common/Extract.cpp +482 -0
  479. package/android/jni/lzma/CPP/7zip/UI/Common/Extract.h +94 -0
  480. package/android/jni/lzma/CPP/7zip/UI/Common/ExtractMode.h +34 -0
  481. package/android/jni/lzma/CPP/7zip/UI/Common/ExtractingFilePath.cpp +280 -0
  482. package/android/jni/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h +31 -0
  483. package/android/jni/lzma/CPP/7zip/UI/Common/HashCalc.cpp +347 -0
  484. package/android/jni/lzma/CPP/7zip/UI/Common/HashCalc.h +110 -0
  485. package/android/jni/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h +114 -0
  486. package/android/jni/lzma/CPP/7zip/UI/Common/LoadCodecs.cpp +1074 -0
  487. package/android/jni/lzma/CPP/7zip/UI/Common/LoadCodecs.h +424 -0
  488. package/android/jni/lzma/CPP/7zip/UI/Common/OpenArchive.cpp +3553 -0
  489. package/android/jni/lzma/CPP/7zip/UI/Common/OpenArchive.h +436 -0
  490. package/android/jni/lzma/CPP/7zip/UI/Common/PropIDUtils.cpp +668 -0
  491. package/android/jni/lzma/CPP/7zip/UI/Common/PropIDUtils.h +18 -0
  492. package/android/jni/lzma/CPP/7zip/UI/Common/Property.h +14 -0
  493. package/android/jni/lzma/CPP/7zip/UI/Common/SetProperties.cpp +80 -0
  494. package/android/jni/lzma/CPP/7zip/UI/Common/SetProperties.h +10 -0
  495. package/android/jni/lzma/CPP/7zip/UI/Common/SortUtils.cpp +25 -0
  496. package/android/jni/lzma/CPP/7zip/UI/Common/SortUtils.h +10 -0
  497. package/android/jni/lzma/CPP/7zip/UI/Common/StdAfx.h +8 -0
  498. package/android/jni/lzma/CPP/7zip/UI/Common/TempFiles.cpp +19 -0
  499. package/android/jni/lzma/CPP/7zip/UI/Common/TempFiles.h +16 -0
  500. package/android/jni/lzma/CPP/7zip/UI/Common/Update.cpp +1704 -0
  501. package/android/jni/lzma/CPP/7zip/UI/Common/Update.h +200 -0
  502. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateAction.cpp +64 -0
  503. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateAction.h +66 -0
  504. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateCallback.cpp +771 -0
  505. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateCallback.h +162 -0
  506. package/android/jni/lzma/CPP/7zip/UI/Common/UpdatePair.cpp +233 -0
  507. package/android/jni/lzma/CPP/7zip/UI/Common/UpdatePair.h +27 -0
  508. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateProduce.cpp +70 -0
  509. package/android/jni/lzma/CPP/7zip/UI/Common/UpdateProduce.h +55 -0
  510. package/android/jni/lzma/CPP/7zip/UI/Common/WorkDir.cpp +94 -0
  511. package/android/jni/lzma/CPP/7zip/UI/Common/WorkDir.h +26 -0
  512. package/android/jni/lzma/CPP/7zip/UI/Common/ZipRegistry.h +130 -0
  513. package/android/jni/lzma/CPP/7zip/UI/Console/BenchCon.cpp +41 -0
  514. package/android/jni/lzma/CPP/7zip/UI/Console/BenchCon.h +14 -0
  515. package/android/jni/lzma/CPP/7zip/UI/Console/Console.mak +43 -0
  516. package/android/jni/lzma/CPP/7zip/UI/Console/Console.manifest +13 -0
  517. package/android/jni/lzma/CPP/7zip/UI/Console/ConsoleClose.cpp +69 -0
  518. package/android/jni/lzma/CPP/7zip/UI/Console/ConsoleClose.h +33 -0
  519. package/android/jni/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +825 -0
  520. package/android/jni/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.h +164 -0
  521. package/android/jni/lzma/CPP/7zip/UI/Console/HashCon.cpp +367 -0
  522. package/android/jni/lzma/CPP/7zip/UI/Console/HashCon.h +48 -0
  523. package/android/jni/lzma/CPP/7zip/UI/Console/List.cpp +1359 -0
  524. package/android/jni/lzma/CPP/7zip/UI/Console/List.h +27 -0
  525. package/android/jni/lzma/CPP/7zip/UI/Console/Main.cpp +1154 -0
  526. package/android/jni/lzma/CPP/7zip/UI/Console/MainAr.cpp +175 -0
  527. package/android/jni/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +115 -0
  528. package/android/jni/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.h +66 -0
  529. package/android/jni/lzma/CPP/7zip/UI/Console/PercentPrinter.cpp +183 -0
  530. package/android/jni/lzma/CPP/7zip/UI/Console/PercentPrinter.h +62 -0
  531. package/android/jni/lzma/CPP/7zip/UI/Console/StdAfx.cpp +3 -0
  532. package/android/jni/lzma/CPP/7zip/UI/Console/StdAfx.h +8 -0
  533. package/android/jni/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +702 -0
  534. package/android/jni/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.h +124 -0
  535. package/android/jni/lzma/CPP/7zip/UI/Console/UserInputUtils.cpp +110 -0
  536. package/android/jni/lzma/CPP/7zip/UI/Console/UserInputUtils.h +27 -0
  537. package/android/jni/lzma/CPP/7zip/UI/Console/makefile +64 -0
  538. package/android/jni/lzma/CPP/7zip/UI/Console/resource.rc +7 -0
  539. package/android/jni/lzma/CPP/7zip/UI/Explorer/MyMessages.cpp +37 -0
  540. package/android/jni/lzma/CPP/7zip/UI/Explorer/MyMessages.h +16 -0
  541. package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialog.cpp +1025 -0
  542. package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialog.h +21 -0
  543. package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialogRes.h +9 -0
  544. package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialog.cpp +64 -0
  545. package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialog.h +28 -0
  546. package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialogRes.h +4 -0
  547. package/android/jni/lzma/CPP/7zip/UI/FileManager/DialogSize.h +16 -0
  548. package/android/jni/lzma/CPP/7zip/UI/FileManager/ExtractCallback.cpp +1037 -0
  549. package/android/jni/lzma/CPP/7zip/UI/FileManager/ExtractCallback.h +328 -0
  550. package/android/jni/lzma/CPP/7zip/UI/FileManager/FormatUtils.cpp +28 -0
  551. package/android/jni/lzma/CPP/7zip/UI/FileManager/FormatUtils.h +14 -0
  552. package/android/jni/lzma/CPP/7zip/UI/FileManager/LangUtils.h +40 -0
  553. package/android/jni/lzma/CPP/7zip/UI/FileManager/MyWindowsNew.h +76 -0
  554. package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +122 -0
  555. package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h +69 -0
  556. package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.rc +91 -0
  557. package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +17 -0
  558. package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.cpp +58 -0
  559. package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.h +28 -0
  560. package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.rc +14 -0
  561. package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialogRes.h +5 -0
  562. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.cpp +196 -0
  563. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.h +170 -0
  564. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.rc +12 -0
  565. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +1337 -0
  566. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.h +351 -0
  567. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.rc +40 -0
  568. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +48 -0
  569. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +80 -0
  570. package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialogRes.h +3 -0
  571. package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyName.cpp +23 -0
  572. package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyName.h +10 -0
  573. package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyNameRes.h +95 -0
  574. package/android/jni/lzma/CPP/7zip/UI/FileManager/SysIconUtils.cpp +255 -0
  575. package/android/jni/lzma/CPP/7zip/UI/FileManager/SysIconUtils.h +62 -0
  576. package/android/jni/lzma/CPP/7zip/UI/FileManager/resource.h +177 -0
  577. package/android/jni/lzma/CPP/7zip/UI/FileManager/resourceGui.h +15 -0
  578. package/android/jni/lzma/CPP/7zip/UI/GUI/Extract.rc +59 -0
  579. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp +418 -0
  580. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.h +113 -0
  581. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.rc +98 -0
  582. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialogRes.h +24 -0
  583. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp +280 -0
  584. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractGUI.h +38 -0
  585. package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractRes.h +51 -0
  586. package/android/jni/lzma/CPP/7zip/UI/GUI/HashGUI.h +27 -0
  587. package/android/jni/lzma/CPP/7zip/UI/GUI/resource2.h +2 -0
  588. package/android/jni/lzma/CPP/Build.mak +156 -0
  589. package/android/jni/lzma/CPP/Common/AutoPtr.h +35 -0
  590. package/android/jni/lzma/CPP/Common/CRC.cpp +7 -0
  591. package/android/jni/lzma/CPP/Common/C_FileIO.cpp +92 -0
  592. package/android/jni/lzma/CPP/Common/C_FileIO.h +53 -0
  593. package/android/jni/lzma/CPP/Common/ComTry.h +21 -0
  594. package/android/jni/lzma/CPP/Common/CommandLineParser.cpp +197 -0
  595. package/android/jni/lzma/CPP/Common/CommandLineParser.h +63 -0
  596. package/android/jni/lzma/CPP/Common/Common.h +43 -0
  597. package/android/jni/lzma/CPP/Common/CrcReg.cpp +98 -0
  598. package/android/jni/lzma/CPP/Common/Defs.h +15 -0
  599. package/android/jni/lzma/CPP/Common/DynamicBuffer.h +64 -0
  600. package/android/jni/lzma/CPP/Common/IntToString.cpp +193 -0
  601. package/android/jni/lzma/CPP/Common/IntToString.h +28 -0
  602. package/android/jni/lzma/CPP/Common/Lang.h +23 -0
  603. package/android/jni/lzma/CPP/Common/ListFileUtils.cpp +132 -0
  604. package/android/jni/lzma/CPP/Common/ListFileUtils.h +18 -0
  605. package/android/jni/lzma/CPP/Common/MyBuffer.h +259 -0
  606. package/android/jni/lzma/CPP/Common/MyBuffer2.h +100 -0
  607. package/android/jni/lzma/CPP/Common/MyCom.h +277 -0
  608. package/android/jni/lzma/CPP/Common/MyException.h +14 -0
  609. package/android/jni/lzma/CPP/Common/MyGuidDef.h +54 -0
  610. package/android/jni/lzma/CPP/Common/MyInitGuid.h +45 -0
  611. package/android/jni/lzma/CPP/Common/MyLinux.h +42 -0
  612. package/android/jni/lzma/CPP/Common/MyString.cpp +1659 -0
  613. package/android/jni/lzma/CPP/Common/MyString.h +868 -0
  614. package/android/jni/lzma/CPP/Common/MyTypes.h +35 -0
  615. package/android/jni/lzma/CPP/Common/MyUnknown.h +17 -0
  616. package/android/jni/lzma/CPP/Common/MyVector.cpp +3 -0
  617. package/android/jni/lzma/CPP/Common/MyVector.h +634 -0
  618. package/android/jni/lzma/CPP/Common/MyWindows.cpp +145 -0
  619. package/android/jni/lzma/CPP/Common/MyWindows.h +231 -0
  620. package/android/jni/lzma/CPP/Common/NewHandler.cpp +163 -0
  621. package/android/jni/lzma/CPP/Common/NewHandler.h +88 -0
  622. package/android/jni/lzma/CPP/Common/Sha256Reg.cpp +40 -0
  623. package/android/jni/lzma/CPP/Common/StdAfx.h +8 -0
  624. package/android/jni/lzma/CPP/Common/StdInStream.cpp +89 -0
  625. package/android/jni/lzma/CPP/Common/StdInStream.h +38 -0
  626. package/android/jni/lzma/CPP/Common/StdOutStream.cpp +163 -0
  627. package/android/jni/lzma/CPP/Common/StdOutStream.h +71 -0
  628. package/android/jni/lzma/CPP/Common/StringConvert.cpp +319 -0
  629. package/android/jni/lzma/CPP/Common/StringConvert.h +88 -0
  630. package/android/jni/lzma/CPP/Common/StringToInt.cpp +144 -0
  631. package/android/jni/lzma/CPP/Common/StringToInt.h +21 -0
  632. package/android/jni/lzma/CPP/Common/TextConfig.cpp +124 -0
  633. package/android/jni/lzma/CPP/Common/TextConfig.h +19 -0
  634. package/android/jni/lzma/CPP/Common/UTFConvert.cpp +288 -0
  635. package/android/jni/lzma/CPP/Common/UTFConvert.h +12 -0
  636. package/android/jni/lzma/CPP/Common/Wildcard.cpp +676 -0
  637. package/android/jni/lzma/CPP/Common/Wildcard.h +149 -0
  638. package/android/jni/lzma/CPP/Common/XzCrc64Init.cpp +7 -0
  639. package/android/jni/lzma/CPP/Common/XzCrc64Reg.cpp +42 -0
  640. package/android/jni/lzma/CPP/Windows/COM.h +70 -0
  641. package/android/jni/lzma/CPP/Windows/CommonDialog.cpp +185 -0
  642. package/android/jni/lzma/CPP/Windows/CommonDialog.h +23 -0
  643. package/android/jni/lzma/CPP/Windows/Control/ComboBox.cpp +66 -0
  644. package/android/jni/lzma/CPP/Windows/Control/ComboBox.h +65 -0
  645. package/android/jni/lzma/CPP/Windows/Control/CommandBar.h +52 -0
  646. package/android/jni/lzma/CPP/Windows/Control/Dialog.cpp +251 -0
  647. package/android/jni/lzma/CPP/Windows/Control/Dialog.h +170 -0
  648. package/android/jni/lzma/CPP/Windows/Control/Edit.h +19 -0
  649. package/android/jni/lzma/CPP/Windows/Control/ImageList.cpp +10 -0
  650. package/android/jni/lzma/CPP/Windows/Control/ImageList.h +87 -0
  651. package/android/jni/lzma/CPP/Windows/Control/ListView.cpp +155 -0
  652. package/android/jni/lzma/CPP/Windows/Control/ListView.h +146 -0
  653. package/android/jni/lzma/CPP/Windows/Control/ProgressBar.h +35 -0
  654. package/android/jni/lzma/CPP/Windows/Control/PropertyPage.cpp +143 -0
  655. package/android/jni/lzma/CPP/Windows/Control/PropertyPage.h +50 -0
  656. package/android/jni/lzma/CPP/Windows/Control/ReBar.h +34 -0
  657. package/android/jni/lzma/CPP/Windows/Control/Static.h +28 -0
  658. package/android/jni/lzma/CPP/Windows/Control/StatusBar.h +42 -0
  659. package/android/jni/lzma/CPP/Windows/Control/StdAfx.h +8 -0
  660. package/android/jni/lzma/CPP/Windows/Control/ToolBar.h +43 -0
  661. package/android/jni/lzma/CPP/Windows/Control/Trackbar.h +27 -0
  662. package/android/jni/lzma/CPP/Windows/Control/Window2.cpp +200 -0
  663. package/android/jni/lzma/CPP/Windows/Control/Window2.h +51 -0
  664. package/android/jni/lzma/CPP/Windows/DLL.cpp +109 -0
  665. package/android/jni/lzma/CPP/Windows/DLL.h +58 -0
  666. package/android/jni/lzma/CPP/Windows/Defs.h +17 -0
  667. package/android/jni/lzma/CPP/Windows/ErrorMsg.cpp +66 -0
  668. package/android/jni/lzma/CPP/Windows/ErrorMsg.h +15 -0
  669. package/android/jni/lzma/CPP/Windows/FileDir.cpp +714 -0
  670. package/android/jni/lzma/CPP/Windows/FileDir.h +117 -0
  671. package/android/jni/lzma/CPP/Windows/FileFind.cpp +749 -0
  672. package/android/jni/lzma/CPP/Windows/FileFind.h +161 -0
  673. package/android/jni/lzma/CPP/Windows/FileIO.cpp +432 -0
  674. package/android/jni/lzma/CPP/Windows/FileIO.h +212 -0
  675. package/android/jni/lzma/CPP/Windows/FileLink.cpp +440 -0
  676. package/android/jni/lzma/CPP/Windows/FileMapping.cpp +12 -0
  677. package/android/jni/lzma/CPP/Windows/FileMapping.h +66 -0
  678. package/android/jni/lzma/CPP/Windows/FileName.cpp +839 -0
  679. package/android/jni/lzma/CPP/Windows/FileName.h +115 -0
  680. package/android/jni/lzma/CPP/Windows/FileSystem.cpp +131 -0
  681. package/android/jni/lzma/CPP/Windows/FileSystem.h +27 -0
  682. package/android/jni/lzma/CPP/Windows/Handle.h +37 -0
  683. package/android/jni/lzma/CPP/Windows/MemoryLock.cpp +112 -0
  684. package/android/jni/lzma/CPP/Windows/MemoryLock.h +40 -0
  685. package/android/jni/lzma/CPP/Windows/NtCheck.h +46 -0
  686. package/android/jni/lzma/CPP/Windows/PropVariant.cpp +347 -0
  687. package/android/jni/lzma/CPP/Windows/PropVariant.h +114 -0
  688. package/android/jni/lzma/CPP/Windows/PropVariantConv.cpp +138 -0
  689. package/android/jni/lzma/CPP/Windows/PropVariantConv.h +37 -0
  690. package/android/jni/lzma/CPP/Windows/Registry.cpp +390 -0
  691. package/android/jni/lzma/CPP/Windows/Registry.h +84 -0
  692. package/android/jni/lzma/CPP/Windows/ResourceString.cpp +103 -0
  693. package/android/jni/lzma/CPP/Windows/ResourceString.h +16 -0
  694. package/android/jni/lzma/CPP/Windows/SecurityUtils.cpp +181 -0
  695. package/android/jni/lzma/CPP/Windows/SecurityUtils.h +167 -0
  696. package/android/jni/lzma/CPP/Windows/Shell.cpp +358 -0
  697. package/android/jni/lzma/CPP/Windows/Shell.h +94 -0
  698. package/android/jni/lzma/CPP/Windows/StdAfx.h +8 -0
  699. package/android/jni/lzma/CPP/Windows/Synchronization.cpp +10 -0
  700. package/android/jni/lzma/CPP/Windows/Synchronization.h +164 -0
  701. package/android/jni/lzma/CPP/Windows/System.cpp +142 -0
  702. package/android/jni/lzma/CPP/Windows/System.h +40 -0
  703. package/android/jni/lzma/CPP/Windows/Thread.h +38 -0
  704. package/android/jni/lzma/CPP/Windows/TimeUtils.cpp +213 -0
  705. package/android/jni/lzma/CPP/Windows/TimeUtils.h +32 -0
  706. package/android/jni/lzma/CPP/Windows/Window.cpp +179 -0
  707. package/android/jni/lzma/CPP/Windows/Window.h +284 -0
  708. package/android/jni/lzma/CS/7zip/Common/CRC.cs +55 -0
  709. package/android/jni/lzma/CS/7zip/Common/CommandLineParser.cs +274 -0
  710. package/android/jni/lzma/CS/7zip/Common/InBuffer.cs +72 -0
  711. package/android/jni/lzma/CS/7zip/Common/OutBuffer.cs +47 -0
  712. package/android/jni/lzma/CS/7zip/Compress/LZ/IMatchFinder.cs +24 -0
  713. package/android/jni/lzma/CS/7zip/Compress/LZ/LzBinTree.cs +367 -0
  714. package/android/jni/lzma/CS/7zip/Compress/LZ/LzInWindow.cs +132 -0
  715. package/android/jni/lzma/CS/7zip/Compress/LZ/LzOutWindow.cs +110 -0
  716. package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaBase.cs +76 -0
  717. package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaDecoder.cs +398 -0
  718. package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaEncoder.cs +1480 -0
  719. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs +364 -0
  720. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.csproj +90 -0
  721. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.sln +20 -0
  722. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaBench.cs +340 -0
  723. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/AssemblyInfo.cs +29 -0
  724. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/Resources.cs +70 -0
  725. package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/Settings.cs +42 -0
  726. package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoder.cs +234 -0
  727. package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBit.cs +117 -0
  728. package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBitTree.cs +157 -0
  729. package/android/jni/lzma/CS/7zip/ICoder.cs +157 -0
  730. package/android/jni/lzma/DOC/7zC.txt +187 -0
  731. package/android/jni/lzma/DOC/7zFormat.txt +469 -0
  732. package/android/jni/lzma/DOC/Methods.txt +173 -0
  733. package/android/jni/lzma/DOC/installer.txt +166 -0
  734. package/android/jni/lzma/DOC/lzma-history.txt +446 -0
  735. package/android/jni/lzma/DOC/lzma-sdk.txt +357 -0
  736. package/android/jni/lzma/DOC/lzma-specification.txt +1176 -0
  737. package/android/jni/lzma/DOC/lzma.txt +328 -0
  738. package/android/jni/lzma/Java/SevenZip/CRC.java +52 -0
  739. package/android/jni/lzma/Java/SevenZip/Compression/LZ/BinTree.java +382 -0
  740. package/android/jni/lzma/Java/SevenZip/Compression/LZ/InWindow.java +131 -0
  741. package/android/jni/lzma/Java/SevenZip/Compression/LZ/OutWindow.java +85 -0
  742. package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Base.java +88 -0
  743. package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Decoder.java +329 -0
  744. package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Encoder.java +1416 -0
  745. package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeDecoder.java +55 -0
  746. package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeEncoder.java +99 -0
  747. package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/Decoder.java +88 -0
  748. package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java +151 -0
  749. package/android/jni/lzma/Java/SevenZip/ICodeProgress.java +6 -0
  750. package/android/jni/lzma/Java/SevenZip/LzmaAlone.java +253 -0
  751. package/android/jni/lzma/Java/SevenZip/LzmaBench.java +392 -0
  752. package/android/jni/lzma/bin/7zS2.sfx +0 -0
  753. package/android/jni/lzma/bin/7zS2con.sfx +0 -0
  754. package/android/jni/lzma/bin/7zSD.sfx +0 -0
  755. package/android/jni/lzma/bin/installer/config.txt +5 -0
  756. package/android/jni/lzma/bin/installer/cr.bat +5 -0
  757. package/android/lib/arm64-v8a/librnupdate.so +0 -0
  758. package/android/lib/armeabi-v7a/librnupdate.so +0 -0
  759. package/android/lib/x86/librnupdate.so +0 -0
  760. package/android/lib/x86_64/librnupdate.so +0 -0
  761. package/android/proguard.pro +83 -0
  762. package/android/src/main/AndroidManifest.xml +14 -0
  763. package/android/src/main/AndroidManifestNew.xml +13 -0
  764. package/android/src/main/java/cn/reactnative/modules/update/ApkInstaller.java +292 -0
  765. package/android/src/main/java/cn/reactnative/modules/update/ArchiveLimits.java +50 -0
  766. package/android/src/main/java/cn/reactnative/modules/update/ArchivePatchPlanResult.java +11 -0
  767. package/android/src/main/java/cn/reactnative/modules/update/BundledResourceCopier.java +394 -0
  768. package/android/src/main/java/cn/reactnative/modules/update/CleanupKeepNames.java +30 -0
  769. package/android/src/main/java/cn/reactnative/modules/update/CopyGroupResult.java +11 -0
  770. package/android/src/main/java/cn/reactnative/modules/update/CrashRescue.java +120 -0
  771. package/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java +954 -0
  772. package/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java +64 -0
  773. package/android/src/main/java/cn/reactnative/modules/update/ErrorCodes.java +32 -0
  774. package/android/src/main/java/cn/reactnative/modules/update/FileOperationException.java +20 -0
  775. package/android/src/main/java/cn/reactnative/modules/update/HttpUtils.java +64 -0
  776. package/android/src/main/java/cn/reactnative/modules/update/InstallRecord.java +156 -0
  777. package/android/src/main/java/cn/reactnative/modules/update/NativeCheckOrchestrator.java +725 -0
  778. package/android/src/main/java/cn/reactnative/modules/update/NativeUpdateCore.java +43 -0
  779. package/android/src/main/java/cn/reactnative/modules/update/NativeUpdateFlow.java +30 -0
  780. package/android/src/main/java/cn/reactnative/modules/update/PackageInstallerStatusReceiver.java +17 -0
  781. package/android/src/main/java/cn/reactnative/modules/update/PatchFailedException.java +21 -0
  782. package/android/src/main/java/cn/reactnative/modules/update/ReactReloadManager.java +274 -0
  783. package/android/src/main/java/cn/reactnative/modules/update/SafeZipFile.java +187 -0
  784. package/android/src/main/java/cn/reactnative/modules/update/StateCoreResult.java +22 -0
  785. package/android/src/main/java/cn/reactnative/modules/update/StateSerialRunner.java +70 -0
  786. package/android/src/main/java/cn/reactnative/modules/update/UiThreadRunner.java +42 -0
  787. package/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java +952 -0
  788. package/android/src/main/java/cn/reactnative/modules/update/UpdateEventEmitter.java +70 -0
  789. package/android/src/main/java/cn/reactnative/modules/update/UpdateFileUtils.java +110 -0
  790. package/android/src/main/java/cn/reactnative/modules/update/UpdateModuleImpl.java +403 -0
  791. package/android/src/main/java/cn/reactnative/modules/update/UpdatePackage.java +51 -0
  792. package/android/src/main/java/expo/modules/pakta/ExpoPaktaModule.kt +15 -0
  793. package/android/src/main/java/expo/modules/pakta/ExpoPaktaPackage.java +29 -0
  794. package/android/src/newarch/cn/reactnative/modules/update/UpdateModule.java +126 -0
  795. package/android/src/oldarch/cn/reactnative/modules/update/UpdateModule.java +130 -0
  796. package/cpp/patch_core/archive_limits.h +49 -0
  797. package/cpp/patch_core/archive_patch_core.cpp +146 -0
  798. package/cpp/patch_core/archive_patch_core.h +69 -0
  799. package/cpp/patch_core/digest.cpp +235 -0
  800. package/cpp/patch_core/digest.h +66 -0
  801. package/cpp/patch_core/error_codes.h +57 -0
  802. package/cpp/patch_core/hbc_transform.cpp +152 -0
  803. package/cpp/patch_core/hbc_transform.h +58 -0
  804. package/cpp/patch_core/hbc_transform_wire.cpp +332 -0
  805. package/cpp/patch_core/hbc_transform_wire.h +57 -0
  806. package/cpp/patch_core/install_record.h +41 -0
  807. package/cpp/patch_core/jni_util.h +65 -0
  808. package/cpp/patch_core/patch_core.cpp +849 -0
  809. package/cpp/patch_core/patch_core.h +103 -0
  810. package/cpp/patch_core/patch_core_android.cpp +102 -0
  811. package/cpp/patch_core/state_core.cpp +122 -0
  812. package/cpp/patch_core/state_core.h +66 -0
  813. package/cpp/patch_core/state_ops.h +29 -0
  814. package/cpp/patch_core/update_core_android.cpp +502 -0
  815. package/cpp/update_flow_core/flow_json.cpp +660 -0
  816. package/cpp/update_flow_core/flow_json.h +121 -0
  817. package/cpp/update_flow_core/update_flow_core.cpp +418 -0
  818. package/cpp/update_flow_core/update_flow_core.h +100 -0
  819. package/cpp/update_flow_core/update_flow_jni.cpp +157 -0
  820. package/expo-module.config.json +13 -0
  821. package/harmony/hvigor-plugin.ts +212 -0
  822. package/harmony/pakta/src/README.md +74 -0
  823. package/harmony/pakta/src/main/cpp/CMakeLists.txt +92 -0
  824. package/harmony/pakta/src/main/cpp/PaktaPackage.h +60 -0
  825. package/harmony/pakta/src/main/cpp/PaktaTurboModule.cpp +123 -0
  826. package/harmony/pakta/src/main/cpp/PaktaTurboModule.h +43 -0
  827. package/harmony/pakta/src/main/cpp/pakta.cpp +1243 -0
  828. package/harmony/pakta/src/main/ets/ArchiveLimits.ts +144 -0
  829. package/harmony/pakta/src/main/ets/DownloadTask.ts +1375 -0
  830. package/harmony/pakta/src/main/ets/DownloadTaskParams.ts +27 -0
  831. package/harmony/pakta/src/main/ets/ErrorCodes.ts +80 -0
  832. package/harmony/pakta/src/main/ets/EventHub.ts +46 -0
  833. package/harmony/pakta/src/main/ets/InstallRecord.ts +192 -0
  834. package/harmony/pakta/src/main/ets/Logger.ts +83 -0
  835. package/harmony/pakta/src/main/ets/MonotonicClock.ts +18 -0
  836. package/harmony/pakta/src/main/ets/NativeCheckOrchestrator.ts +640 -0
  837. package/harmony/pakta/src/main/ets/NativePatchCore.ts +123 -0
  838. package/harmony/pakta/src/main/ets/PaktaFileJSBundleProvider.ets +54 -0
  839. package/harmony/pakta/src/main/ets/PaktaPackage.ets +15 -0
  840. package/harmony/pakta/src/main/ets/PaktaPackageCompat.ts +15 -0
  841. package/harmony/pakta/src/main/ets/PaktaPackageFactory.ts +19 -0
  842. package/harmony/pakta/src/main/ets/PaktaTurboModule.ts +433 -0
  843. package/harmony/pakta/src/main/ets/PathUtils.ts +32 -0
  844. package/harmony/pakta/src/main/ets/SaveFile.ts +39 -0
  845. package/harmony/pakta/src/main/ets/UpdateContext.ts +1059 -0
  846. package/harmony/pakta/src/main/module.json5 +14 -0
  847. package/harmony/pakta/src/main/resources/base/element/string.json +8 -0
  848. package/harmony/pakta/src/main/resources/en_US/element/string.json +8 -0
  849. package/harmony/pakta/src/main/resources/zh_CN/element/string.json +8 -0
  850. package/harmony/pakta.har +0 -0
  851. package/ios/Expo/ExpoPaktaModule.swift +12 -0
  852. package/ios/Expo/ExpoPaktaReactDelegateHandler.swift +25 -0
  853. package/ios/ImportReact.h +7 -0
  854. package/ios/PrivacyInfo.xcprivacy +84 -0
  855. package/ios/RCTPakta/RCTPakta.h +14 -0
  856. package/ios/RCTPakta/RCTPakta.mm +2775 -0
  857. package/ios/RCTPakta/RCTPaktaDownloader.h +29 -0
  858. package/ios/RCTPakta/RCTPaktaDownloader.mm +625 -0
  859. package/ios/pakta_build_time.txt +1 -0
  860. package/package.json +88 -0
  861. package/react-native.config.js +6 -0
  862. package/rn-update.podspec +221 -0
  863. package/src/NativePakta.ts +85 -0
  864. package/src/client.ts +1839 -0
  865. package/src/context.ts +102 -0
  866. package/src/core.ts +190 -0
  867. package/src/endpoint.ts +204 -0
  868. package/src/error.ts +168 -0
  869. package/src/errorReporting.ts +141 -0
  870. package/src/globals.d.ts +6 -0
  871. package/src/i18n.ts +113 -0
  872. package/src/index.ts +46 -0
  873. package/src/locales/en.ts +77 -0
  874. package/src/locales/zh.ts +71 -0
  875. package/src/metadata.ts +175 -0
  876. package/src/provider.tsx +629 -0
  877. package/src/telemetry.ts +104 -0
  878. package/src/type.ts +243 -0
  879. package/src/updateFlowCore.ts +428 -0
  880. package/src/utils.ts +268 -0
@@ -0,0 +1,1243 @@
1
+ /**
2
+ * [INPUT]: 依赖 OpenHarmony NAPI、共享 patch_core/state_core/update_flow_core、摘要/HBC 变换与 Android JNI 补丁适配头
3
+ * [OUTPUT]: 对外导出状态同步/操作及成功确认匹配结果、归档规划/复制、异步补丁/清理、SHA-256/CRC32、diffVersion 和 update-flow JSON 函数
4
+ * [POS]: Harmony NAPI 原生核心,负责 JS 值校验、线程切换和 Promise 结算,算法语义全部委托共享 C++
5
+ */
6
+ #include <napi/native_api.h>
7
+
8
+ #include "flow_json.h"
9
+ #include "update_flow_core.h"
10
+ #include <js_native_api.h>
11
+ #include <js_native_api_types.h>
12
+
13
+ #include <string>
14
+ #include <vector>
15
+
16
+ #include "archive_patch_core.h"
17
+ #include "digest.h"
18
+ #include "hbc_transform_wire.h"
19
+ #include "patch_core.h"
20
+ #include "state_core.h"
21
+ #include "state_ops.h"
22
+
23
+ extern "C" {
24
+ }
25
+
26
+ namespace {
27
+
28
+ using pakta::state_ops::StateOperation;
29
+
30
+ constexpr const char* kDefaultBundlePatchEntryName = "index.bundlejs.patch";
31
+
32
+ void ThrowError(napi_env env, const std::string& message) {
33
+ napi_throw_error(env, nullptr, message.c_str());
34
+ }
35
+
36
+ bool GetArgCount(
37
+ napi_env env,
38
+ napi_callback_info info,
39
+ size_t* argc,
40
+ napi_value* args) {
41
+ return napi_get_cb_info(env, info, argc, args, nullptr, nullptr) == napi_ok;
42
+ }
43
+
44
+ bool GetValueType(
45
+ napi_env env,
46
+ napi_value value,
47
+ napi_valuetype* out_type) {
48
+ return napi_typeof(env, value, out_type) == napi_ok;
49
+ }
50
+
51
+ bool IsNullOrUndefined(napi_env env, napi_value value) {
52
+ napi_valuetype type = napi_undefined;
53
+ if (!GetValueType(env, value, &type)) {
54
+ return true;
55
+ }
56
+ return type == napi_undefined || type == napi_null;
57
+ }
58
+
59
+ std::string GetString(napi_env env, napi_value value, bool* ok) {
60
+ if (ok != nullptr) {
61
+ *ok = false;
62
+ }
63
+ if (value == nullptr || IsNullOrUndefined(env, value)) {
64
+ if (ok != nullptr) {
65
+ *ok = true;
66
+ }
67
+ return std::string();
68
+ }
69
+
70
+ napi_valuetype type = napi_undefined;
71
+ if (!GetValueType(env, value, &type) || type != napi_string) {
72
+ ThrowError(env, "Expected string");
73
+ return std::string();
74
+ }
75
+
76
+ size_t length = 0;
77
+ if (napi_get_value_string_utf8(env, value, nullptr, 0, &length) != napi_ok) {
78
+ ThrowError(env, "Failed to read string");
79
+ return std::string();
80
+ }
81
+
82
+ // length + 1 so NAPI's terminating '\0' lands inside owned storage instead
83
+ // of the string's past-the-end terminator slot (formally UB to write).
84
+ std::string result(length + 1, '\0');
85
+ size_t written = 0;
86
+ if (napi_get_value_string_utf8(
87
+ env, value, result.data(), length + 1, &written) != napi_ok) {
88
+ ThrowError(env, "Failed to read string");
89
+ return std::string();
90
+ }
91
+ result.resize(written);
92
+ if (ok != nullptr) {
93
+ *ok = true;
94
+ }
95
+ return result;
96
+ }
97
+
98
+ bool GetInt32(napi_env env, napi_value value, int32_t* out_value) {
99
+ if (value == nullptr || out_value == nullptr) {
100
+ ThrowError(env, "Expected number");
101
+ return false;
102
+ }
103
+ napi_valuetype type = napi_undefined;
104
+ if (!GetValueType(env, value, &type) || type != napi_number) {
105
+ ThrowError(env, "Expected number");
106
+ return false;
107
+ }
108
+ if (napi_get_value_int32(env, value, out_value) != napi_ok) {
109
+ ThrowError(env, "Failed to read number");
110
+ return false;
111
+ }
112
+ return true;
113
+ }
114
+
115
+ bool GetBoolean(napi_env env, napi_value value, bool* out_value) {
116
+ if (out_value == nullptr) {
117
+ ThrowError(env, "Expected boolean");
118
+ return false;
119
+ }
120
+ if (value == nullptr || IsNullOrUndefined(env, value)) {
121
+ *out_value = false;
122
+ return true;
123
+ }
124
+ napi_valuetype type = napi_undefined;
125
+ if (!GetValueType(env, value, &type) || type != napi_boolean) {
126
+ ThrowError(env, "Expected boolean");
127
+ return false;
128
+ }
129
+ bool result = false;
130
+ if (napi_get_value_bool(env, value, &result) != napi_ok) {
131
+ ThrowError(env, "Failed to read boolean");
132
+ return false;
133
+ }
134
+ *out_value = result;
135
+ return true;
136
+ }
137
+
138
+ bool HasNamedProperty(napi_env env, napi_value object, const char* name, bool* out_has) {
139
+ if (out_has == nullptr) {
140
+ ThrowError(env, "Internal error");
141
+ return false;
142
+ }
143
+ bool has = false;
144
+ if (napi_has_named_property(env, object, name, &has) != napi_ok) {
145
+ ThrowError(env, std::string("Failed to read property ") + name);
146
+ return false;
147
+ }
148
+ *out_has = has;
149
+ return true;
150
+ }
151
+
152
+ bool GetNamedProperty(
153
+ napi_env env,
154
+ napi_value object,
155
+ const char* name,
156
+ napi_value* out_value) {
157
+ if (out_value == nullptr) {
158
+ ThrowError(env, "Internal error");
159
+ return false;
160
+ }
161
+ if (napi_get_named_property(env, object, name, out_value) != napi_ok) {
162
+ ThrowError(env, std::string("Failed to read property ") + name);
163
+ return false;
164
+ }
165
+ return true;
166
+ }
167
+
168
+ bool GetOptionalStringProperty(
169
+ napi_env env,
170
+ napi_value object,
171
+ const char* name,
172
+ std::string* out_value) {
173
+ bool has = false;
174
+ if (!HasNamedProperty(env, object, name, &has)) {
175
+ return false;
176
+ }
177
+ if (!has) {
178
+ out_value->clear();
179
+ return true;
180
+ }
181
+
182
+ napi_value property = nullptr;
183
+ if (!GetNamedProperty(env, object, name, &property)) {
184
+ return false;
185
+ }
186
+
187
+ bool ok = false;
188
+ *out_value = GetString(env, property, &ok);
189
+ return ok;
190
+ }
191
+
192
+ bool GetOptionalBoolProperty(
193
+ napi_env env,
194
+ napi_value object,
195
+ const char* name,
196
+ bool default_value,
197
+ bool* out_value) {
198
+ bool has = false;
199
+ if (!HasNamedProperty(env, object, name, &has)) {
200
+ return false;
201
+ }
202
+ if (!has) {
203
+ *out_value = default_value;
204
+ return true;
205
+ }
206
+
207
+ napi_value property = nullptr;
208
+ if (!GetNamedProperty(env, object, name, &property)) {
209
+ return false;
210
+ }
211
+ return GetBoolean(env, property, out_value);
212
+ }
213
+
214
+ bool GetStringArray(
215
+ napi_env env,
216
+ napi_value value,
217
+ std::vector<std::string>* out_values) {
218
+ out_values->clear();
219
+ if (value == nullptr || IsNullOrUndefined(env, value)) {
220
+ return true;
221
+ }
222
+
223
+ bool is_array = false;
224
+ if (napi_is_array(env, value, &is_array) != napi_ok || !is_array) {
225
+ ThrowError(env, "Expected string array");
226
+ return false;
227
+ }
228
+
229
+ uint32_t length = 0;
230
+ if (napi_get_array_length(env, value, &length) != napi_ok) {
231
+ ThrowError(env, "Failed to read array length");
232
+ return false;
233
+ }
234
+
235
+ out_values->reserve(length);
236
+ for (uint32_t index = 0; index < length; ++index) {
237
+ napi_value item = nullptr;
238
+ if (napi_get_element(env, value, index, &item) != napi_ok) {
239
+ ThrowError(env, "Failed to read array item");
240
+ return false;
241
+ }
242
+ bool ok = false;
243
+ out_values->push_back(GetString(env, item, &ok));
244
+ if (!ok) {
245
+ return false;
246
+ }
247
+ }
248
+ return true;
249
+ }
250
+
251
+ bool GetOptionalStringArrayProperty(
252
+ napi_env env,
253
+ napi_value object,
254
+ const char* name,
255
+ std::vector<std::string>* out_values) {
256
+ bool has = false;
257
+ if (!HasNamedProperty(env, object, name, &has)) {
258
+ return false;
259
+ }
260
+ if (!has) {
261
+ out_values->clear();
262
+ return true;
263
+ }
264
+
265
+ napi_value property = nullptr;
266
+ if (!GetNamedProperty(env, object, name, &property)) {
267
+ return false;
268
+ }
269
+ return GetStringArray(env, property, out_values);
270
+ }
271
+
272
+ bool GetObject(napi_env env, napi_value value) {
273
+ if (value == nullptr || IsNullOrUndefined(env, value)) {
274
+ return true;
275
+ }
276
+ napi_valuetype type = napi_undefined;
277
+ if (!GetValueType(env, value, &type) || type != napi_object) {
278
+ ThrowError(env, "Expected object");
279
+ return false;
280
+ }
281
+ return true;
282
+ }
283
+
284
+ pakta::state::State ReadState(napi_env env, napi_value value, bool* ok) {
285
+ if (ok != nullptr) {
286
+ *ok = false;
287
+ }
288
+ pakta::state::State state;
289
+ if (value == nullptr || IsNullOrUndefined(env, value)) {
290
+ if (ok != nullptr) {
291
+ *ok = true;
292
+ }
293
+ return state;
294
+ }
295
+ if (!GetObject(env, value)) {
296
+ return state;
297
+ }
298
+
299
+ if (!GetOptionalStringProperty(env, value, "packageVersion", &state.package_version) ||
300
+ !GetOptionalStringProperty(env, value, "buildTime", &state.build_time) ||
301
+ !GetOptionalStringProperty(env, value, "currentVersion", &state.current_version) ||
302
+ !GetOptionalStringProperty(env, value, "lastVersion", &state.last_version) ||
303
+ !GetOptionalBoolProperty(env, value, "firstTime", false, &state.first_time) ||
304
+ !GetOptionalBoolProperty(env, value, "firstTimeOk", true, &state.first_time_ok) ||
305
+ !GetOptionalStringProperty(env, value, "rolledBackVersion", &state.rolled_back_version)) {
306
+ return state;
307
+ }
308
+
309
+ if (ok != nullptr) {
310
+ *ok = true;
311
+ }
312
+ return state;
313
+ }
314
+
315
+ napi_value NewBoolean(napi_env env, bool value) {
316
+ napi_value result = nullptr;
317
+ napi_get_boolean(env, value, &result);
318
+ return result;
319
+ }
320
+
321
+ napi_value NewString(napi_env env, const std::string& value) {
322
+ napi_value result = nullptr;
323
+ napi_create_string_utf8(env, value.c_str(), value.size(), &result);
324
+ return result;
325
+ }
326
+
327
+ void SetStringProperty(
328
+ napi_env env,
329
+ napi_value object,
330
+ const char* name,
331
+ const std::string& value) {
332
+ if (value.empty()) {
333
+ return;
334
+ }
335
+ napi_set_named_property(env, object, name, NewString(env, value));
336
+ }
337
+
338
+ void SetBoolProperty(
339
+ napi_env env,
340
+ napi_value object,
341
+ const char* name,
342
+ bool value) {
343
+ napi_set_named_property(env, object, name, NewBoolean(env, value));
344
+ }
345
+
346
+ napi_value NewStateResult(
347
+ napi_env env,
348
+ const pakta::state::State& state,
349
+ bool changed,
350
+ const std::string& stale_version_to_delete,
351
+ const std::string& load_version,
352
+ bool did_rollback,
353
+ bool consumed_first_time,
354
+ bool mark_success_accepted = false) {
355
+ napi_value result = nullptr;
356
+ napi_create_object(env, &result);
357
+
358
+ SetStringProperty(env, result, "packageVersion", state.package_version);
359
+ SetStringProperty(env, result, "buildTime", state.build_time);
360
+ SetStringProperty(env, result, "currentVersion", state.current_version);
361
+ SetStringProperty(env, result, "lastVersion", state.last_version);
362
+ SetBoolProperty(env, result, "firstTime", state.first_time);
363
+ SetBoolProperty(env, result, "firstTimeOk", state.first_time_ok);
364
+ SetStringProperty(env, result, "rolledBackVersion", state.rolled_back_version);
365
+ SetBoolProperty(env, result, "changed", changed);
366
+ SetStringProperty(env, result, "staleVersionToDelete", stale_version_to_delete);
367
+ SetStringProperty(env, result, "loadVersion", load_version);
368
+ SetBoolProperty(env, result, "didRollback", did_rollback);
369
+ SetBoolProperty(env, result, "consumedFirstTime", consumed_first_time);
370
+ SetBoolProperty(env, result, "markSuccessAccepted", mark_success_accepted);
371
+ return result;
372
+ }
373
+
374
+ napi_value NewArchivePatchPlanResult(
375
+ napi_env env,
376
+ const pakta::archive_patch::ArchivePatchPlan& plan) {
377
+ napi_value result = nullptr;
378
+ napi_create_object(env, &result);
379
+ SetStringProperty(env, result, "mergeSourceSubdir", plan.merge_source_subdir);
380
+ SetBoolProperty(env, result, "enableMerge", plan.enable_merge);
381
+ return result;
382
+ }
383
+
384
+ napi_value NewCopyGroupArray(
385
+ napi_env env,
386
+ const std::vector<pakta::archive_patch::CopyGroup>& groups) {
387
+ napi_value result = nullptr;
388
+ napi_create_array_with_length(env, groups.size(), &result);
389
+ for (size_t index = 0; index < groups.size(); ++index) {
390
+ napi_value group = nullptr;
391
+ napi_create_object(env, &group);
392
+ SetStringProperty(env, group, "from", groups[index].from);
393
+
394
+ napi_value to_paths = nullptr;
395
+ napi_create_array_with_length(env, groups[index].to_paths.size(), &to_paths);
396
+ for (size_t target_index = 0; target_index < groups[index].to_paths.size();
397
+ ++target_index) {
398
+ napi_set_element(
399
+ env,
400
+ to_paths,
401
+ target_index,
402
+ NewString(env, groups[index].to_paths[target_index]));
403
+ }
404
+ napi_set_named_property(env, group, "toPaths", to_paths);
405
+ napi_set_element(env, result, index, group);
406
+ }
407
+ return result;
408
+ }
409
+
410
+ pakta::patch::PatchManifest BuildManifest(
411
+ const std::vector<std::string>& copy_froms,
412
+ const std::vector<std::string>& copy_tos,
413
+ const std::vector<std::string>& deletes) {
414
+ pakta::patch::PatchManifest manifest;
415
+ for (size_t index = 0; index < copy_froms.size(); ++index) {
416
+ manifest.copies.push_back(
417
+ pakta::patch::CopyOperation{copy_froms[index], copy_tos[index]});
418
+ }
419
+ manifest.deletes = deletes;
420
+ return manifest;
421
+ }
422
+
423
+ napi_value SyncStateWithBinaryVersion(napi_env env, napi_callback_info info) {
424
+ napi_value args[3] = {nullptr, nullptr, nullptr};
425
+ size_t argc = 3;
426
+ if (!GetArgCount(env, info, &argc, args) || argc < 3) {
427
+ ThrowError(env, "Wrong number of arguments");
428
+ return nullptr;
429
+ }
430
+
431
+ bool ok = false;
432
+ const std::string package_version = GetString(env, args[0], &ok);
433
+ if (!ok) {
434
+ return nullptr;
435
+ }
436
+ const std::string build_time = GetString(env, args[1], &ok);
437
+ if (!ok) {
438
+ return nullptr;
439
+ }
440
+ const pakta::state::State state = ReadState(env, args[2], &ok);
441
+ if (!ok) {
442
+ return nullptr;
443
+ }
444
+
445
+ const pakta::state::BinaryVersionSyncResult result =
446
+ pakta::state::SyncBinaryVersion(state, package_version, build_time);
447
+ return NewStateResult(env, result.state, result.changed, std::string(), std::string(), false, false);
448
+ }
449
+
450
+ napi_value RunStateCore(napi_env env, napi_callback_info info) {
451
+ napi_value args[5] = {nullptr, nullptr, nullptr, nullptr, nullptr};
452
+ size_t argc = 5;
453
+ if (!GetArgCount(env, info, &argc, args) || argc < 2) {
454
+ ThrowError(env, "Wrong number of arguments");
455
+ return nullptr;
456
+ }
457
+
458
+ int32_t operation = 0;
459
+ if (!GetInt32(env, args[0], &operation)) {
460
+ return nullptr;
461
+ }
462
+
463
+ bool ok = false;
464
+ const pakta::state::State state = ReadState(env, args[1], &ok);
465
+ if (!ok) {
466
+ return nullptr;
467
+ }
468
+
469
+ std::string string_arg;
470
+ if (argc >= 3) {
471
+ string_arg = GetString(env, args[2], &ok);
472
+ if (!ok) {
473
+ return nullptr;
474
+ }
475
+ }
476
+
477
+ bool flag_a = false;
478
+ bool flag_b = false;
479
+ if (argc >= 4 && !GetBoolean(env, args[3], &flag_a)) {
480
+ return nullptr;
481
+ }
482
+ if (argc >= 5 && !GetBoolean(env, args[4], &flag_b)) {
483
+ return nullptr;
484
+ }
485
+
486
+ switch (static_cast<StateOperation>(operation)) {
487
+ case StateOperation::kSwitchVersion:
488
+ return NewStateResult(
489
+ env,
490
+ pakta::state::SwitchVersion(state, string_arg),
491
+ false,
492
+ std::string(),
493
+ std::string(),
494
+ false,
495
+ false);
496
+ case StateOperation::kMarkSuccess: {
497
+ const pakta::state::MarkSuccessResult result =
498
+ pakta::state::MarkSuccess(state, string_arg);
499
+ return NewStateResult(
500
+ env,
501
+ result.state,
502
+ false,
503
+ result.stale_version_to_delete,
504
+ std::string(),
505
+ false,
506
+ false,
507
+ result.accepted);
508
+ }
509
+ case StateOperation::kRollback: {
510
+ const pakta::state::State next = pakta::state::Rollback(state);
511
+ return NewStateResult(
512
+ env, next, false, std::string(), next.current_version, true, false);
513
+ }
514
+ case StateOperation::kClearFirstTime:
515
+ return NewStateResult(
516
+ env,
517
+ pakta::state::ClearFirstTime(state),
518
+ false,
519
+ std::string(),
520
+ std::string(),
521
+ false,
522
+ false);
523
+ case StateOperation::kClearRollbackMark:
524
+ return NewStateResult(
525
+ env,
526
+ pakta::state::ClearRollbackMark(state),
527
+ false,
528
+ std::string(),
529
+ std::string(),
530
+ false,
531
+ false);
532
+ case StateOperation::kResolveLaunch: {
533
+ const pakta::state::LaunchDecision decision =
534
+ pakta::state::ResolveLaunchState(state, flag_a, flag_b);
535
+ return NewStateResult(
536
+ env,
537
+ decision.state,
538
+ false,
539
+ std::string(),
540
+ decision.load_version,
541
+ decision.did_rollback,
542
+ decision.consumed_first_time);
543
+ }
544
+ }
545
+
546
+ ThrowError(env, "Unknown state operation");
547
+ return nullptr;
548
+ }
549
+
550
+ napi_value BuildArchivePatchPlan(napi_env env, napi_callback_info info) {
551
+ napi_value args[6] = {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr};
552
+ size_t argc = 6;
553
+ if (!GetArgCount(env, info, &argc, args) || argc < 5) {
554
+ ThrowError(env, "Wrong number of arguments");
555
+ return nullptr;
556
+ }
557
+
558
+ int32_t patch_type = 0;
559
+ if (!GetInt32(env, args[0], &patch_type)) {
560
+ return nullptr;
561
+ }
562
+
563
+ std::vector<std::string> entry_names;
564
+ std::vector<std::string> copy_froms;
565
+ std::vector<std::string> copy_tos;
566
+ std::vector<std::string> deletes;
567
+ if (!GetStringArray(env, args[1], &entry_names) ||
568
+ !GetStringArray(env, args[2], &copy_froms) ||
569
+ !GetStringArray(env, args[3], &copy_tos) ||
570
+ !GetStringArray(env, args[4], &deletes)) {
571
+ return nullptr;
572
+ }
573
+ if (copy_froms.size() != copy_tos.size()) {
574
+ ThrowError(env, "copyFroms and copyTos length mismatch");
575
+ return nullptr;
576
+ }
577
+
578
+ std::string bundle_patch_entry_name = kDefaultBundlePatchEntryName;
579
+ if (argc >= 6) {
580
+ bool ok = false;
581
+ const std::string candidate = GetString(env, args[5], &ok);
582
+ if (!ok) {
583
+ return nullptr;
584
+ }
585
+ if (!candidate.empty()) {
586
+ bundle_patch_entry_name = candidate;
587
+ }
588
+ }
589
+
590
+ const pakta::patch::PatchManifest manifest =
591
+ BuildManifest(copy_froms, copy_tos, deletes);
592
+ pakta::archive_patch::ArchivePatchType archive_type;
593
+ if (!pakta::archive_patch::TryParseArchivePatchType(patch_type, &archive_type)) {
594
+ ThrowError(env, "Unknown archive patch type");
595
+ return nullptr;
596
+ }
597
+ pakta::archive_patch::ArchivePatchPlan plan;
598
+ const pakta::patch::Status status = pakta::archive_patch::BuildArchivePatchPlan(
599
+ archive_type,
600
+ manifest,
601
+ entry_names,
602
+ &plan,
603
+ bundle_patch_entry_name);
604
+ if (!status.ok) {
605
+ ThrowError(env, status.message);
606
+ return nullptr;
607
+ }
608
+
609
+ return NewArchivePatchPlanResult(env, plan);
610
+ }
611
+
612
+ napi_value BuildCopyGroups(napi_env env, napi_callback_info info) {
613
+ napi_value args[2] = {nullptr, nullptr};
614
+ size_t argc = 2;
615
+ if (!GetArgCount(env, info, &argc, args) || argc < 2) {
616
+ ThrowError(env, "Wrong number of arguments");
617
+ return nullptr;
618
+ }
619
+
620
+ std::vector<std::string> copy_froms;
621
+ std::vector<std::string> copy_tos;
622
+ if (!GetStringArray(env, args[0], &copy_froms) ||
623
+ !GetStringArray(env, args[1], &copy_tos)) {
624
+ return nullptr;
625
+ }
626
+ if (copy_froms.size() != copy_tos.size()) {
627
+ ThrowError(env, "copyFroms and copyTos length mismatch");
628
+ return nullptr;
629
+ }
630
+
631
+ const pakta::patch::PatchManifest manifest =
632
+ BuildManifest(copy_froms, copy_tos, std::vector<std::string>());
633
+ std::vector<pakta::archive_patch::CopyGroup> groups;
634
+ const pakta::patch::Status status =
635
+ pakta::archive_patch::BuildCopyGroups(manifest, &groups);
636
+ if (!status.ok) {
637
+ ThrowError(env, status.message);
638
+ return nullptr;
639
+ }
640
+
641
+ return NewCopyGroupArray(env, groups);
642
+ }
643
+
644
+ // ---------------------------------------------------------------------------
645
+ // Async work plumbing for the heavy patch operations.
646
+ //
647
+ // applyPatchFromFileSource and cleanupOldEntries run hdiff / recursive file IO
648
+ // that can take hundreds of ms to seconds. The Pakta TurboModule executes on
649
+ // the UI thread, so running these synchronously froze the UI. These are now
650
+ // wrapped in napi_create_async_work: arguments are parsed on the JS thread, the
651
+ // heavy work runs on a libuv worker thread, and the returned Promise is settled
652
+ // back on the JS thread.
653
+ // ---------------------------------------------------------------------------
654
+
655
+ // Reject an already-created deferred with an Error(message). Used when async
656
+ // work fails to be created/queued, so the Promise never hangs pending.
657
+ void RejectDeferredWithMessage(
658
+ napi_env env,
659
+ napi_deferred deferred,
660
+ const char* message) {
661
+ napi_value error = nullptr;
662
+ napi_value message_value = nullptr;
663
+ napi_create_string_utf8(env, message, NAPI_AUTO_LENGTH, &message_value);
664
+ napi_create_error(env, nullptr, message_value, &error);
665
+ napi_reject_deferred(env, deferred, error);
666
+ }
667
+
668
+ struct ApplyPatchWork {
669
+ napi_async_work work = nullptr;
670
+ napi_deferred deferred = nullptr;
671
+ pakta::patch::FileSourcePatchOptions options;
672
+ pakta::patch::Status status{false, ""};
673
+ };
674
+
675
+ struct CleanupWork {
676
+ napi_async_work work = nullptr;
677
+ napi_deferred deferred = nullptr;
678
+ std::string root_dir;
679
+ // Every version that may still be in use: persisted current/last AND the
680
+ // version this process booted from (two switches without a restart must not
681
+ // evict the running bundle while its on-demand assets are still served).
682
+ std::vector<std::string> keep_names;
683
+ int32_t max_age_days = 0;
684
+ pakta::patch::Status status{false, ""};
685
+ };
686
+
687
+ // Streaming file digest on a worker thread. A full package or bundle is tens
688
+ // of MB; hashing it synchronously on the UI thread (where the TurboModule
689
+ // runs) froze the app for hundreds of ms per archive/bundle/activation.
690
+ struct Sha256FileWork {
691
+ napi_async_work work = nullptr;
692
+ napi_deferred deferred = nullptr;
693
+ std::string path;
694
+ std::string hex;
695
+ };
696
+
697
+ napi_value ApplyPatchFromFileSource(napi_env env, napi_callback_info info) {
698
+ napi_value args[1] = {nullptr};
699
+ size_t argc = 1;
700
+ if (!GetArgCount(env, info, &argc, args) || argc < 1) {
701
+ ThrowError(env, "Wrong number of arguments");
702
+ return nullptr;
703
+ }
704
+ if (!GetObject(env, args[0])) {
705
+ return nullptr;
706
+ }
707
+
708
+ std::vector<std::string> copy_froms;
709
+ std::vector<std::string> copy_tos;
710
+ std::vector<std::string> deletes;
711
+ std::string source_root;
712
+ std::string target_root;
713
+ std::string origin_bundle_path;
714
+ std::string bundle_patch_path;
715
+ std::string bundle_output_path;
716
+ std::string merge_source_subdir;
717
+ std::string bundle_hbc_transform_meta;
718
+ bool enable_merge = true;
719
+
720
+ if (!GetOptionalStringArrayProperty(env, args[0], "copyFroms", &copy_froms) ||
721
+ !GetOptionalStringArrayProperty(env, args[0], "copyTos", &copy_tos) ||
722
+ !GetOptionalStringArrayProperty(env, args[0], "deletes", &deletes) ||
723
+ !GetOptionalStringProperty(env, args[0], "sourceRoot", &source_root) ||
724
+ !GetOptionalStringProperty(env, args[0], "targetRoot", &target_root) ||
725
+ !GetOptionalStringProperty(env, args[0], "originBundlePath", &origin_bundle_path) ||
726
+ !GetOptionalStringProperty(env, args[0], "bundlePatchPath", &bundle_patch_path) ||
727
+ !GetOptionalStringProperty(env, args[0], "bundleOutputPath", &bundle_output_path) ||
728
+ !GetOptionalStringProperty(env, args[0], "mergeSourceSubdir", &merge_source_subdir) ||
729
+ !GetOptionalStringProperty(
730
+ env, args[0], "bundleHbcTransformMeta", &bundle_hbc_transform_meta) ||
731
+ !GetOptionalBoolProperty(env, args[0], "enableMerge", true, &enable_merge)) {
732
+ return nullptr;
733
+ }
734
+ if (copy_froms.size() != copy_tos.size()) {
735
+ ThrowError(env, "copyFroms and copyTos length mismatch");
736
+ return nullptr;
737
+ }
738
+
739
+ auto* work_data = new ApplyPatchWork();
740
+ work_data->options.manifest = BuildManifest(copy_froms, copy_tos, deletes);
741
+ work_data->options.source_root = source_root;
742
+ work_data->options.target_root = target_root;
743
+ work_data->options.origin_bundle_path = origin_bundle_path;
744
+ work_data->options.bundle_patch_path = bundle_patch_path;
745
+ work_data->options.bundle_output_path = bundle_output_path;
746
+ work_data->options.merge_source_subdir = merge_source_subdir;
747
+ work_data->options.bundle_hbc_transform_meta = bundle_hbc_transform_meta;
748
+ work_data->options.enable_merge = enable_merge;
749
+
750
+ napi_value promise = nullptr;
751
+ if (napi_create_promise(env, &work_data->deferred, &promise) != napi_ok) {
752
+ delete work_data;
753
+ ThrowError(env, "Unable to create promise");
754
+ return nullptr;
755
+ }
756
+
757
+ napi_value resource_name = nullptr;
758
+ napi_create_string_utf8(
759
+ env, "applyPatchFromFileSource", NAPI_AUTO_LENGTH, &resource_name);
760
+ if (napi_create_async_work(
761
+ env,
762
+ nullptr,
763
+ resource_name,
764
+ [](napi_env, void* data) {
765
+ auto* w = static_cast<ApplyPatchWork*>(data);
766
+ w->status = pakta::patch::ApplyPatchFromFileSource(w->options);
767
+ },
768
+ [](napi_env cb_env, napi_status status, void* data) {
769
+ auto* w = static_cast<ApplyPatchWork*>(data);
770
+ if (status != napi_ok) {
771
+ // Cancelled/aborted before execute ran: w->status is
772
+ // meaningless; still settle the promise so it never hangs.
773
+ RejectDeferredWithMessage(cb_env, w->deferred, "async work aborted");
774
+ } else if (w->status.ok) {
775
+ napi_value undefined_value = nullptr;
776
+ napi_get_undefined(cb_env, &undefined_value);
777
+ napi_resolve_deferred(cb_env, w->deferred, undefined_value);
778
+ } else {
779
+ napi_value error = nullptr;
780
+ napi_value message = nullptr;
781
+ napi_create_string_utf8(
782
+ cb_env, w->status.message.c_str(), NAPI_AUTO_LENGTH, &message);
783
+ napi_create_error(cb_env, nullptr, message, &error);
784
+ napi_reject_deferred(cb_env, w->deferred, error);
785
+ }
786
+ napi_delete_async_work(cb_env, w->work);
787
+ delete w;
788
+ },
789
+ work_data,
790
+ &work_data->work) != napi_ok) {
791
+ // Work was never created: settle the promise and free the data so it does
792
+ // not leak / hang pending forever.
793
+ RejectDeferredWithMessage(
794
+ env, work_data->deferred, "Unable to create async work");
795
+ delete work_data;
796
+ return promise;
797
+ }
798
+ if (napi_queue_async_work(env, work_data->work) != napi_ok) {
799
+ // Queued failed: the complete callback will never run, so clean up here.
800
+ napi_delete_async_work(env, work_data->work);
801
+ RejectDeferredWithMessage(
802
+ env, work_data->deferred, "Unable to queue async work");
803
+ delete work_data;
804
+ return promise;
805
+ }
806
+ return promise;
807
+ }
808
+
809
+ // cleanupOldEntries(rootDir, keepNames: string[], maxAgeDays)
810
+ napi_value CleanupOldEntries(napi_env env, napi_callback_info info) {
811
+ napi_value args[3] = {nullptr, nullptr, nullptr};
812
+ size_t argc = 3;
813
+ if (!GetArgCount(env, info, &argc, args) || argc < 3) {
814
+ ThrowError(env, "Wrong number of arguments");
815
+ return nullptr;
816
+ }
817
+
818
+ bool ok = false;
819
+ const std::string root_dir = GetString(env, args[0], &ok);
820
+ if (!ok) {
821
+ return nullptr;
822
+ }
823
+ std::vector<std::string> keep_names;
824
+ if (!GetStringArray(env, args[1], &keep_names)) {
825
+ return nullptr;
826
+ }
827
+ int32_t max_age_days = 0;
828
+ if (!GetInt32(env, args[2], &max_age_days)) {
829
+ return nullptr;
830
+ }
831
+
832
+ auto* work_data = new CleanupWork();
833
+ work_data->root_dir = root_dir;
834
+ work_data->keep_names = std::move(keep_names);
835
+ work_data->max_age_days = max_age_days;
836
+
837
+ napi_value promise = nullptr;
838
+ if (napi_create_promise(env, &work_data->deferred, &promise) != napi_ok) {
839
+ delete work_data;
840
+ ThrowError(env, "Unable to create promise");
841
+ return nullptr;
842
+ }
843
+
844
+ napi_value resource_name = nullptr;
845
+ napi_create_string_utf8(
846
+ env, "cleanupOldEntries", NAPI_AUTO_LENGTH, &resource_name);
847
+ if (napi_create_async_work(
848
+ env,
849
+ nullptr,
850
+ resource_name,
851
+ [](napi_env, void* data) {
852
+ auto* w = static_cast<CleanupWork*>(data);
853
+ w->status = pakta::patch::CleanupOldEntries(
854
+ w->root_dir, w->keep_names, w->max_age_days);
855
+ },
856
+ [](napi_env cb_env, napi_status status, void* data) {
857
+ auto* w = static_cast<CleanupWork*>(data);
858
+ if (status != napi_ok) {
859
+ RejectDeferredWithMessage(cb_env, w->deferred, "async work aborted");
860
+ } else if (w->status.ok) {
861
+ napi_value undefined_value = nullptr;
862
+ napi_get_undefined(cb_env, &undefined_value);
863
+ napi_resolve_deferred(cb_env, w->deferred, undefined_value);
864
+ } else {
865
+ napi_value error = nullptr;
866
+ napi_value message = nullptr;
867
+ napi_create_string_utf8(
868
+ cb_env, w->status.message.c_str(), NAPI_AUTO_LENGTH, &message);
869
+ napi_create_error(cb_env, nullptr, message, &error);
870
+ napi_reject_deferred(cb_env, w->deferred, error);
871
+ }
872
+ napi_delete_async_work(cb_env, w->work);
873
+ delete w;
874
+ },
875
+ work_data,
876
+ &work_data->work) != napi_ok) {
877
+ RejectDeferredWithMessage(
878
+ env, work_data->deferred, "Unable to create async work");
879
+ delete work_data;
880
+ return promise;
881
+ }
882
+ if (napi_queue_async_work(env, work_data->work) != napi_ok) {
883
+ napi_delete_async_work(env, work_data->work);
884
+ RejectDeferredWithMessage(
885
+ env, work_data->deferred, "Unable to queue async work");
886
+ delete work_data;
887
+ return promise;
888
+ }
889
+ return promise;
890
+ }
891
+
892
+ // sha256HexFileAsync(path) -> Promise<hex>. Rejects when the file cannot be
893
+ // read (Sha256File returns an empty digest in that case).
894
+ napi_value Sha256HexFileAsync(napi_env env, napi_callback_info info) {
895
+ napi_value args[1] = {nullptr};
896
+ size_t argc = 1;
897
+ if (!GetArgCount(env, info, &argc, args) || argc < 1) {
898
+ ThrowError(env, "sha256HexFileAsync: missing path argument");
899
+ return nullptr;
900
+ }
901
+ bool ok = false;
902
+ std::string path = GetString(env, args[0], &ok);
903
+ if (!ok) {
904
+ return nullptr;
905
+ }
906
+ if (path.empty()) {
907
+ ThrowError(env, "sha256HexFileAsync: path must be a non-empty string");
908
+ return nullptr;
909
+ }
910
+
911
+ auto* work_data = new Sha256FileWork();
912
+ work_data->path = std::move(path);
913
+
914
+ napi_value promise = nullptr;
915
+ if (napi_create_promise(env, &work_data->deferred, &promise) != napi_ok) {
916
+ delete work_data;
917
+ ThrowError(env, "Unable to create promise");
918
+ return nullptr;
919
+ }
920
+
921
+ napi_value resource_name = nullptr;
922
+ napi_create_string_utf8(
923
+ env, "sha256HexFileAsync", NAPI_AUTO_LENGTH, &resource_name);
924
+ if (napi_create_async_work(
925
+ env,
926
+ nullptr,
927
+ resource_name,
928
+ [](napi_env, void* data) {
929
+ auto* w = static_cast<Sha256FileWork*>(data);
930
+ w->hex = pakta::digest::Sha256File(w->path);
931
+ },
932
+ [](napi_env cb_env, napi_status status, void* data) {
933
+ auto* w = static_cast<Sha256FileWork*>(data);
934
+ if (status != napi_ok) {
935
+ RejectDeferredWithMessage(cb_env, w->deferred, "async work aborted");
936
+ } else if (w->hex.empty()) {
937
+ RejectDeferredWithMessage(
938
+ cb_env, w->deferred, "sha256HexFileAsync: cannot read file");
939
+ } else {
940
+ napi_resolve_deferred(cb_env, w->deferred, NewString(cb_env, w->hex));
941
+ }
942
+ napi_delete_async_work(cb_env, w->work);
943
+ delete w;
944
+ },
945
+ work_data,
946
+ &work_data->work) != napi_ok) {
947
+ RejectDeferredWithMessage(
948
+ env, work_data->deferred, "Unable to create async work");
949
+ delete work_data;
950
+ return promise;
951
+ }
952
+ if (napi_queue_async_work(env, work_data->work) != napi_ok) {
953
+ napi_delete_async_work(env, work_data->work);
954
+ RejectDeferredWithMessage(
955
+ env, work_data->deferred, "Unable to queue async work");
956
+ delete work_data;
957
+ return promise;
958
+ }
959
+ return promise;
960
+ }
961
+
962
+ bool ExportFunction(
963
+ napi_env env,
964
+ napi_value exports,
965
+ const char* name,
966
+ napi_callback callback) {
967
+ napi_value fn = nullptr;
968
+ if (napi_create_function(env, name, NAPI_AUTO_LENGTH, callback, nullptr, &fn) !=
969
+ napi_ok) {
970
+ ThrowError(env, std::string("Unable to create function ") + name);
971
+ return false;
972
+ }
973
+
974
+ if (napi_set_named_property(env, exports, name, fn) != napi_ok) {
975
+ ThrowError(env, std::string("Unable to export function ") + name);
976
+ return false;
977
+ }
978
+ return true;
979
+ }
980
+
981
+ } // namespace
982
+
983
+
984
+ // sha256(Uint8Array | ArrayBuffer) -> 小写 hex。同步:bundleHash 的输入是
985
+ // rawfile 里的 bundle(已整体读入内存,与 pdiff 的读法一致),哈希本身毫秒级。
986
+ static napi_value MakeUtf8String(napi_env env, const std::string& value);
987
+
988
+ // Streaming file digest (bounded memory). Synchronous: small files only —
989
+ // archives and bundles go through sha256HexFileAsync.
990
+ static napi_value Sha256HexFile(napi_env env, napi_callback_info info) {
991
+ size_t argc = 1;
992
+ napi_value args[1] = {nullptr};
993
+ if (!GetArgCount(env, info, &argc, args) || argc < 1) {
994
+ ThrowError(env, "sha256HexFile: missing path argument");
995
+ return nullptr;
996
+ }
997
+ bool ok = false;
998
+ std::string path = GetString(env, args[0], &ok);
999
+ if (!ok) {
1000
+ // GetString already raised the pending exception.
1001
+ return nullptr;
1002
+ }
1003
+ return MakeUtf8String(env, pakta::digest::Sha256File(path));
1004
+ }
1005
+
1006
+ static napi_value Sha256Hex(napi_env env, napi_callback_info info) {
1007
+ size_t argc = 1;
1008
+ napi_value args[1] = {nullptr};
1009
+ if (!GetArgCount(env, info, &argc, args) || argc < 1) {
1010
+ ThrowError(env, "sha256Hex: missing data argument");
1011
+ return nullptr;
1012
+ }
1013
+
1014
+ void* data = nullptr;
1015
+ size_t length = 0;
1016
+ bool is_typedarray = false;
1017
+ napi_is_typedarray(env, args[0], &is_typedarray);
1018
+ if (is_typedarray) {
1019
+ napi_typedarray_type type;
1020
+ napi_value arraybuffer = nullptr;
1021
+ size_t offset = 0;
1022
+ if (napi_get_typedarray_info(
1023
+ env, args[0], &type, &length, &data, &arraybuffer, &offset) !=
1024
+ napi_ok) {
1025
+ ThrowError(env, "sha256Hex: cannot read typed array");
1026
+ return nullptr;
1027
+ }
1028
+ } else {
1029
+ bool is_arraybuffer = false;
1030
+ napi_is_arraybuffer(env, args[0], &is_arraybuffer);
1031
+ if (!is_arraybuffer ||
1032
+ napi_get_arraybuffer_info(env, args[0], &data, &length) != napi_ok) {
1033
+ ThrowError(env, "sha256Hex: expected Uint8Array or ArrayBuffer");
1034
+ return nullptr;
1035
+ }
1036
+ }
1037
+
1038
+ pakta::digest::Sha256 hasher;
1039
+ if (length > 0) {
1040
+ hasher.Update(static_cast<const uint8_t*>(data), length);
1041
+ }
1042
+ const std::string hex = hasher.HexDigest();
1043
+
1044
+ napi_value result = nullptr;
1045
+ napi_create_string_utf8(env, hex.c_str(), hex.size(), &result);
1046
+ return result;
1047
+ }
1048
+
1049
+ // CRC32(zip/zlib 多项式)。同步:输入是已在内存的 rawfile 资源字节,用于
1050
+ // pdiff 拷贝前与 __diff.json copiesCrc 比对(不符则整次 patch 失败落 full)。
1051
+ static napi_value Crc32(napi_env env, napi_callback_info info) {
1052
+ size_t argc = 1;
1053
+ napi_value args[1] = {nullptr};
1054
+ if (!GetArgCount(env, info, &argc, args) || argc < 1) {
1055
+ ThrowError(env, "crc32: missing data argument");
1056
+ return nullptr;
1057
+ }
1058
+
1059
+ void* data = nullptr;
1060
+ size_t length = 0;
1061
+ bool is_typedarray = false;
1062
+ napi_is_typedarray(env, args[0], &is_typedarray);
1063
+ if (is_typedarray) {
1064
+ napi_typedarray_type type;
1065
+ napi_value arraybuffer = nullptr;
1066
+ size_t offset = 0;
1067
+ if (napi_get_typedarray_info(
1068
+ env, args[0], &type, &length, &data, &arraybuffer, &offset) !=
1069
+ napi_ok) {
1070
+ ThrowError(env, "crc32: cannot read typed array");
1071
+ return nullptr;
1072
+ }
1073
+ } else {
1074
+ bool is_arraybuffer = false;
1075
+ napi_is_arraybuffer(env, args[0], &is_arraybuffer);
1076
+ if (!is_arraybuffer ||
1077
+ napi_get_arraybuffer_info(env, args[0], &data, &length) != napi_ok) {
1078
+ ThrowError(env, "crc32: expected Uint8Array or ArrayBuffer");
1079
+ return nullptr;
1080
+ }
1081
+ }
1082
+
1083
+ pakta::digest::Crc32 crc;
1084
+ if (length > 0) {
1085
+ crc.Update(static_cast<const uint8_t*>(data), length);
1086
+ }
1087
+
1088
+ napi_value result = nullptr;
1089
+ // CRC32 fits a double exactly (32-bit unsigned), matching the JSON number
1090
+ // representation in the manifest.
1091
+ napi_create_double(env, static_cast<double>(crc.Value()), &result);
1092
+ return result;
1093
+ }
1094
+
1095
+ // 原生 patch 内核可消费的 diff 轨道版本(2 = hdiffv2 轨道)
1096
+ static napi_value GetSupportedDiffVersion(napi_env env, napi_callback_info) {
1097
+ napi_value result = nullptr;
1098
+ napi_create_uint32(
1099
+ env,
1100
+ static_cast<uint32_t>(pakta::hbc::kSupportedDiffVersion),
1101
+ &result);
1102
+ return result;
1103
+ }
1104
+
1105
+ // ---- update-flow decision layer (NATIVE_CHECKUPDATE_DESIGN §10) ----
1106
+ // String-in/string-out JSON, matching the decision layer's own boundary.
1107
+ // Returning undefined (nullptr without a pending exception) means "input did
1108
+ // not parse"; the ArkTS orchestrator skips the check round.
1109
+
1110
+ static napi_value MakeUtf8String(napi_env env, const std::string& value) {
1111
+ napi_value result = nullptr;
1112
+ if (napi_create_string_utf8(env, value.c_str(), value.size(), &result) !=
1113
+ napi_ok) {
1114
+ ThrowError(env, "Failed to create string");
1115
+ return nullptr;
1116
+ }
1117
+ return result;
1118
+ }
1119
+
1120
+ static napi_value FlowBuildCheckRequestBody(napi_env env,
1121
+ napi_callback_info info) {
1122
+ size_t argc = 1;
1123
+ napi_value args[1] = {nullptr};
1124
+ if (!GetArgCount(env, info, &argc, args) || argc < 1) {
1125
+ ThrowError(env, "buildCheckRequestBody: missing input argument");
1126
+ return nullptr;
1127
+ }
1128
+ bool ok = false;
1129
+ std::string input_json = GetString(env, args[0], &ok);
1130
+ if (!ok) {
1131
+ return nullptr;
1132
+ }
1133
+ bool parsed = false;
1134
+ flowjson::Value input = flowjson::Parse(input_json, &parsed);
1135
+ if (!parsed || !input.IsObject()) {
1136
+ return nullptr;
1137
+ }
1138
+ return MakeUtf8String(
1139
+ env, flowjson::Stringify(updateflow::BuildCheckRequestBody(input)));
1140
+ }
1141
+
1142
+ static napi_value FlowOrderEndpointCandidates(napi_env env,
1143
+ napi_callback_info info) {
1144
+ size_t argc = 2;
1145
+ napi_value args[2] = {nullptr, nullptr};
1146
+ if (!GetArgCount(env, info, &argc, args) || argc < 2) {
1147
+ ThrowError(env, "orderEndpointCandidates: missing arguments");
1148
+ return nullptr;
1149
+ }
1150
+ bool ok = false;
1151
+ std::string endpoints_json = GetString(env, args[0], &ok);
1152
+ if (!ok) {
1153
+ return nullptr;
1154
+ }
1155
+ double sample = 0;
1156
+ if (napi_get_value_double(env, args[1], &sample) != napi_ok) {
1157
+ ThrowError(env, "orderEndpointCandidates: expected number sample");
1158
+ return nullptr;
1159
+ }
1160
+ bool parsed = false;
1161
+ flowjson::Value endpoints = flowjson::Parse(endpoints_json, &parsed);
1162
+ if (!parsed || !endpoints.IsArray()) {
1163
+ return nullptr;
1164
+ }
1165
+ return MakeUtf8String(env,
1166
+ flowjson::Stringify(updateflow::OrderEndpointCandidates(
1167
+ endpoints, sample)));
1168
+ }
1169
+
1170
+ static napi_value FlowIsValidCheckResponse(napi_env env,
1171
+ napi_callback_info info) {
1172
+ size_t argc = 1;
1173
+ napi_value args[1] = {nullptr};
1174
+ if (!GetArgCount(env, info, &argc, args) || argc < 1) {
1175
+ ThrowError(env, "isValidCheckResponse: missing arguments");
1176
+ return nullptr;
1177
+ }
1178
+ bool ok = false;
1179
+ std::string response_text = GetString(env, args[0], &ok);
1180
+ if (!ok) {
1181
+ // Exception pending (non-string argument): propagate it as a throw
1182
+ // instead of a boolean that the caller would treat as a verdict.
1183
+ return nullptr;
1184
+ }
1185
+ napi_value result = nullptr;
1186
+ napi_get_boolean(env, updateflow::IsValidCheckResponse(response_text),
1187
+ &result);
1188
+ return result;
1189
+ }
1190
+
1191
+ static napi_value FlowHandleCheckResponse(napi_env env,
1192
+ napi_callback_info info) {
1193
+ size_t argc = 3;
1194
+ napi_value args[3] = {nullptr, nullptr, nullptr};
1195
+ if (!GetArgCount(env, info, &argc, args) || argc < 3) {
1196
+ ThrowError(env, "handleCheckResponse: missing arguments");
1197
+ return nullptr;
1198
+ }
1199
+ bool ok = false;
1200
+ std::string response_text = GetString(env, args[0], &ok);
1201
+ if (!ok) {
1202
+ return nullptr;
1203
+ }
1204
+ std::string identity_json = GetString(env, args[1], &ok);
1205
+ if (!ok) {
1206
+ return nullptr;
1207
+ }
1208
+ std::string after_download = GetString(env, args[2], &ok);
1209
+ if (!ok) {
1210
+ return nullptr;
1211
+ }
1212
+ bool parsed = false;
1213
+ flowjson::Value identity = flowjson::Parse(identity_json, &parsed);
1214
+ if (!parsed || !identity.IsObject()) {
1215
+ return nullptr;
1216
+ }
1217
+ return MakeUtf8String(env,
1218
+ flowjson::Stringify(updateflow::HandleCheckResponse(
1219
+ response_text, identity, false, after_download)));
1220
+ }
1221
+
1222
+ napi_value Init(napi_env env, napi_value exports) {
1223
+ if (!ExportFunction(env, exports, "syncStateWithBinaryVersion", SyncStateWithBinaryVersion) ||
1224
+ !ExportFunction(env, exports, "runStateCore", RunStateCore) ||
1225
+ !ExportFunction(env, exports, "buildArchivePatchPlan", BuildArchivePatchPlan) ||
1226
+ !ExportFunction(env, exports, "buildCopyGroups", BuildCopyGroups) ||
1227
+ !ExportFunction(env, exports, "applyPatchFromFileSource", ApplyPatchFromFileSource) ||
1228
+ !ExportFunction(env, exports, "cleanupOldEntries", CleanupOldEntries) ||
1229
+ !ExportFunction(env, exports, "sha256Hex", Sha256Hex) ||
1230
+ !ExportFunction(env, exports, "sha256HexFile", Sha256HexFile) ||
1231
+ !ExportFunction(env, exports, "sha256HexFileAsync", Sha256HexFileAsync) ||
1232
+ !ExportFunction(env, exports, "crc32", Crc32) ||
1233
+ !ExportFunction(env, exports, "getSupportedDiffVersion", GetSupportedDiffVersion) ||
1234
+ !ExportFunction(env, exports, "buildCheckRequestBody", FlowBuildCheckRequestBody) ||
1235
+ !ExportFunction(env, exports, "orderEndpointCandidates", FlowOrderEndpointCandidates) ||
1236
+ !ExportFunction(env, exports, "isValidCheckResponse", FlowIsValidCheckResponse) ||
1237
+ !ExportFunction(env, exports, "handleCheckResponse", FlowHandleCheckResponse)) {
1238
+ return nullptr;
1239
+ }
1240
+ return exports;
1241
+ }
1242
+
1243
+ NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)