@hot-updater/react-native 1.0.0-rc.4 → 1.0.0-rc.41

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 (317) hide show
  1. package/android/build.gradle +13 -2
  2. package/android/proguard-rules.pro +8 -2
  3. package/android/src/bridge/BridgeReactInstance.kt +38 -0
  4. package/android/src/bridgeless/BridgeReactInstance.kt +24 -0
  5. package/android/src/main/java/com/hotupdater/ActivityStartGate.kt +94 -0
  6. package/android/src/main/java/com/hotupdater/BuiltInAssetResolver.kt +286 -0
  7. package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +1064 -844
  8. package/android/src/main/java/com/hotupdater/BundleMetadata.kt +50 -11
  9. package/android/src/main/java/com/hotupdater/FileManagerService.kt +45 -0
  10. package/android/src/main/java/com/hotupdater/HotUpdaterException.kt +287 -22
  11. package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +46 -30
  12. package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryManager.kt +75 -192
  13. package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryState.kt +64 -0
  14. package/android/src/main/java/com/hotupdater/InstallIdentityService.kt +37 -0
  15. package/android/src/main/java/com/hotupdater/KeyValueStorageService.kt +86 -0
  16. package/android/src/main/java/com/hotupdater/NetworkState.kt +31 -0
  17. package/android/src/main/java/com/hotupdater/NoBackupStorage.kt +17 -0
  18. package/android/src/main/java/com/hotupdater/OkHttpDownloadService.kt +127 -50
  19. package/android/src/main/java/com/hotupdater/ReactNativeValueConverters.kt +34 -0
  20. package/android/src/main/java/com/hotupdater/TarArchiveInputStream.kt +214 -375
  21. package/android/src/main/java/com/hotupdater/TarBrArchiveExtractor.kt +119 -0
  22. package/android/src/newarch/HotUpdater.kt +7 -9
  23. package/android/src/newarch/HotUpdaterModule.kt +109 -84
  24. package/android/src/newarch/JavaScriptExceptionHooks.kt +48 -0
  25. package/android/src/newarch/ReactIntegrationManager.kt +6 -32
  26. package/android/src/oldarch/HotUpdater.kt +7 -9
  27. package/android/src/oldarch/HotUpdaterModule.kt +98 -74
  28. package/android/src/oldarch/HotUpdaterSpec.kt +4 -6
  29. package/android/src/oldarch/JavaScriptExceptionHooks.kt +71 -0
  30. package/ios/HotUpdater/Internal/BrotliFileDecompressor.swift +167 -0
  31. package/ios/HotUpdater/Internal/BuiltInAssetResolver.swift +196 -0
  32. package/ios/HotUpdater/Internal/BundleFileStorageService.swift +1032 -1116
  33. package/ios/HotUpdater/Internal/BundleMetadata.swift +61 -54
  34. package/ios/HotUpdater/Internal/FileManagerService.swift +48 -0
  35. package/ios/HotUpdater/Internal/FileUtilities.swift +64 -0
  36. package/ios/HotUpdater/Internal/HotUpdater-Bridging-Header.h +0 -1
  37. package/ios/HotUpdater/Internal/HotUpdater.mm +32 -67
  38. package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +229 -73
  39. package/ios/HotUpdater/Internal/KeyValueStorageService.swift +71 -0
  40. package/ios/HotUpdater/Internal/NotificationExtension.swift +0 -2
  41. package/ios/HotUpdater/Internal/TarArchiveExtractor.swift +182 -311
  42. package/ios/HotUpdater/Internal/URLSessionDownloadService.swift +119 -71
  43. package/ios/HotUpdater/Internal/UpdateFailure.swift +390 -0
  44. package/ios/HotUpdater/Recovery/HotUpdaterRecovery.h +16 -0
  45. package/ios/HotUpdater/Recovery/HotUpdaterRecovery.mm +83 -0
  46. package/ios/HotUpdater/Recovery/HotUpdaterRecoveryHooks.mm +49 -0
  47. package/lib/commonjs/appReady.js +96 -0
  48. package/lib/commonjs/appReady.js.map +1 -0
  49. package/lib/commonjs/checkForUpdate.js +121 -69
  50. package/lib/commonjs/checkForUpdate.js.map +1 -1
  51. package/lib/commonjs/clientPlugin.js +13 -0
  52. package/lib/commonjs/clientPlugin.js.map +1 -0
  53. package/lib/commonjs/error.js +5 -14
  54. package/lib/commonjs/error.js.map +1 -1
  55. package/lib/commonjs/fetchJSON.js +16 -27
  56. package/lib/commonjs/fetchJSON.js.map +1 -1
  57. package/lib/commonjs/fetchUpdateResponse.js +60 -0
  58. package/lib/commonjs/fetchUpdateResponse.js.map +1 -0
  59. package/lib/commonjs/httpClient.js +64 -95
  60. package/lib/commonjs/httpClient.js.map +1 -1
  61. package/lib/commonjs/index.js +355 -324
  62. package/lib/commonjs/index.js.map +1 -1
  63. package/lib/commonjs/init.types.js +6 -0
  64. package/lib/commonjs/init.types.js.map +1 -0
  65. package/lib/commonjs/native.js +77 -63
  66. package/lib/commonjs/native.js.map +1 -1
  67. package/lib/commonjs/pluginHost.js +41 -0
  68. package/lib/commonjs/pluginHost.js.map +1 -0
  69. package/lib/commonjs/releaseCatalogCache.js +36 -87
  70. package/lib/commonjs/releaseCatalogCache.js.map +1 -1
  71. package/lib/commonjs/sdkVersion.js +1 -1
  72. package/lib/commonjs/sdkVersion.js.map +1 -1
  73. package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
  74. package/lib/commonjs/store.js +3 -10
  75. package/lib/commonjs/store.js.map +1 -1
  76. package/lib/commonjs/updateError.js +145 -0
  77. package/lib/commonjs/updateError.js.map +1 -0
  78. package/lib/commonjs/wrap.js +46 -38
  79. package/lib/commonjs/wrap.js.map +1 -1
  80. package/lib/module/appReady.js +90 -0
  81. package/lib/module/appReady.js.map +1 -0
  82. package/lib/module/checkForUpdate.js +114 -64
  83. package/lib/module/checkForUpdate.js.map +1 -1
  84. package/lib/module/clientPlugin.js +4 -0
  85. package/lib/module/clientPlugin.js.map +1 -0
  86. package/lib/module/error.js +5 -14
  87. package/lib/module/error.js.map +1 -1
  88. package/lib/module/fetchJSON.js +14 -26
  89. package/lib/module/fetchJSON.js.map +1 -1
  90. package/lib/module/fetchUpdateResponse.js +55 -0
  91. package/lib/module/fetchUpdateResponse.js.map +1 -0
  92. package/lib/module/httpClient.js +63 -94
  93. package/lib/module/httpClient.js.map +1 -1
  94. package/lib/module/index.js +335 -327
  95. package/lib/module/index.js.map +1 -1
  96. package/lib/module/init.types.js +4 -0
  97. package/lib/module/init.types.js.map +1 -0
  98. package/lib/module/native.js +70 -56
  99. package/lib/module/native.js.map +1 -1
  100. package/lib/module/pluginHost.js +36 -0
  101. package/lib/module/pluginHost.js.map +1 -0
  102. package/lib/module/releaseCatalogCache.js +32 -82
  103. package/lib/module/releaseCatalogCache.js.map +1 -1
  104. package/lib/module/sdkVersion.js +1 -1
  105. package/lib/module/sdkVersion.js.map +1 -1
  106. package/lib/module/specs/NativeHotUpdater.js.map +1 -1
  107. package/lib/module/store.js +3 -10
  108. package/lib/module/store.js.map +1 -1
  109. package/lib/module/updateError.js +139 -0
  110. package/lib/module/updateError.js.map +1 -0
  111. package/lib/module/wrap.js +47 -38
  112. package/lib/module/wrap.js.map +1 -1
  113. package/lib/typescript/commonjs/appReady.d.ts +30 -0
  114. package/lib/typescript/commonjs/appReady.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/checkForUpdate.d.ts +20 -6
  116. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  117. package/lib/typescript/commonjs/clientPlugin.d.ts +2 -0
  118. package/lib/typescript/commonjs/clientPlugin.d.ts.map +1 -0
  119. package/lib/typescript/commonjs/error.d.ts +5 -14
  120. package/lib/typescript/commonjs/error.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/fetchJSON.d.ts +5 -5
  122. package/lib/typescript/commonjs/fetchJSON.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/fetchUpdateResponse.d.ts +14 -0
  124. package/lib/typescript/commonjs/fetchUpdateResponse.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/httpClient.d.ts +5 -34
  126. package/lib/typescript/commonjs/httpClient.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/index.d.ts +124 -116
  128. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/init.types.d.ts +21 -0
  130. package/lib/typescript/commonjs/init.types.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/native.d.ts +32 -25
  132. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/pluginHost.d.ts +8 -0
  134. package/lib/typescript/commonjs/pluginHost.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/releaseCatalogCache.d.ts +8 -14
  136. package/lib/typescript/commonjs/releaseCatalogCache.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/sdkVersion.d.ts +1 -1
  138. package/lib/typescript/commonjs/sdkVersion.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +35 -47
  140. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
  141. package/lib/typescript/commonjs/store.d.ts +1 -3
  142. package/lib/typescript/commonjs/store.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/types.d.ts +1 -1
  144. package/lib/typescript/commonjs/types.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/updateError.d.ts +26 -0
  146. package/lib/typescript/commonjs/updateError.d.ts.map +1 -0
  147. package/lib/typescript/commonjs/wrap.d.ts +2 -3
  148. package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/wrap.types.d.ts +13 -41
  150. package/lib/typescript/commonjs/wrap.types.d.ts.map +1 -1
  151. package/lib/typescript/module/appReady.d.ts +30 -0
  152. package/lib/typescript/module/appReady.d.ts.map +1 -0
  153. package/lib/typescript/module/checkForUpdate.d.ts +20 -6
  154. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  155. package/lib/typescript/module/clientPlugin.d.ts +2 -0
  156. package/lib/typescript/module/clientPlugin.d.ts.map +1 -0
  157. package/lib/typescript/module/error.d.ts +5 -14
  158. package/lib/typescript/module/error.d.ts.map +1 -1
  159. package/lib/typescript/module/fetchJSON.d.ts +5 -5
  160. package/lib/typescript/module/fetchJSON.d.ts.map +1 -1
  161. package/lib/typescript/module/fetchUpdateResponse.d.ts +14 -0
  162. package/lib/typescript/module/fetchUpdateResponse.d.ts.map +1 -0
  163. package/lib/typescript/module/httpClient.d.ts +5 -34
  164. package/lib/typescript/module/httpClient.d.ts.map +1 -1
  165. package/lib/typescript/module/index.d.ts +124 -116
  166. package/lib/typescript/module/index.d.ts.map +1 -1
  167. package/lib/typescript/module/init.types.d.ts +21 -0
  168. package/lib/typescript/module/init.types.d.ts.map +1 -0
  169. package/lib/typescript/module/native.d.ts +32 -25
  170. package/lib/typescript/module/native.d.ts.map +1 -1
  171. package/lib/typescript/module/pluginHost.d.ts +8 -0
  172. package/lib/typescript/module/pluginHost.d.ts.map +1 -0
  173. package/lib/typescript/module/releaseCatalogCache.d.ts +8 -14
  174. package/lib/typescript/module/releaseCatalogCache.d.ts.map +1 -1
  175. package/lib/typescript/module/sdkVersion.d.ts +1 -1
  176. package/lib/typescript/module/sdkVersion.d.ts.map +1 -1
  177. package/lib/typescript/module/specs/NativeHotUpdater.d.ts +35 -47
  178. package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
  179. package/lib/typescript/module/store.d.ts +1 -3
  180. package/lib/typescript/module/store.d.ts.map +1 -1
  181. package/lib/typescript/module/types.d.ts +1 -1
  182. package/lib/typescript/module/types.d.ts.map +1 -1
  183. package/lib/typescript/module/updateError.d.ts +26 -0
  184. package/lib/typescript/module/updateError.d.ts.map +1 -0
  185. package/lib/typescript/module/wrap.d.ts +2 -3
  186. package/lib/typescript/module/wrap.d.ts.map +1 -1
  187. package/lib/typescript/module/wrap.types.d.ts +13 -41
  188. package/lib/typescript/module/wrap.types.d.ts.map +1 -1
  189. package/package.json +8 -4
  190. package/src/appReady.ts +147 -0
  191. package/src/checkForUpdate.ts +156 -89
  192. package/src/clientPlugin.ts +21 -0
  193. package/src/error.ts +5 -15
  194. package/src/fetchJSON.ts +14 -30
  195. package/src/fetchUpdateResponse.ts +60 -0
  196. package/src/httpClient.ts +89 -160
  197. package/src/index.ts +413 -425
  198. package/src/init.types.ts +24 -0
  199. package/src/native.ts +101 -105
  200. package/src/pluginHost.ts +52 -0
  201. package/src/releaseCatalogCache.ts +43 -172
  202. package/src/sdkVersion.ts +1 -1
  203. package/src/specs/NativeHotUpdater.ts +34 -48
  204. package/src/store.ts +2 -23
  205. package/src/types.ts +1 -1
  206. package/src/updateError.ts +167 -0
  207. package/src/wrap.tsx +60 -43
  208. package/src/wrap.types.ts +18 -46
  209. package/android/src/main/java/com/hotupdater/DecompressService.kt +0 -89
  210. package/android/src/main/java/com/hotupdater/DecompressionStrategy.kt +0 -26
  211. package/android/src/main/java/com/hotupdater/TarBrDecompressionStrategy.kt +0 -117
  212. package/android/src/main/java/com/hotupdater/TarGzDecompressionStrategy.kt +0 -117
  213. package/android/src/main/java/com/hotupdater/ZipDecompressionStrategy.kt +0 -192
  214. package/android/src/test/java/com/hotupdater/BsdiffPatchTest.kt +0 -46
  215. package/android/src/test/java/com/hotupdater/BundleFileStorageServiceTest.kt +0 -799
  216. package/android/src/test/java/com/hotupdater/HotUpdaterImplTest.kt +0 -273
  217. package/android/src/test/java/com/hotupdater/NativeConfigUtilsTest.kt +0 -20
  218. package/android/src/test/java/com/hotupdater/OkHttpDownloadServiceTest.kt +0 -111
  219. package/android/src/test/java/com/hotupdater/RelativePathResolverTest.kt +0 -41
  220. package/android/src/test/java/com/hotupdater/ReleaseCatalogCacheServiceTest.kt +0 -118
  221. package/android/src/test/java/com/hotupdater/TarArchiveInputStreamTest.kt +0 -68
  222. package/ios/HotUpdater/Internal/ArchiveExtractionUtilities.swift +0 -178
  223. package/ios/HotUpdater/Internal/DecompressService.swift +0 -112
  224. package/ios/HotUpdater/Internal/DecompressionStrategy.swift +0 -22
  225. package/ios/HotUpdater/Internal/StreamingTarArchiveExtractor.swift +0 -370
  226. package/ios/HotUpdater/Internal/TarBrDecompressionStrategy.swift +0 -39
  227. package/ios/HotUpdater/Internal/TarGzDecompressionStrategy.swift +0 -59
  228. package/ios/HotUpdater/Internal/ZipArchiveExtractor.swift +0 -482
  229. package/ios/HotUpdater/Internal/ZipDecompressionStrategy.swift +0 -56
  230. package/lib/commonjs/catalogCacheNative.spec.js +0 -31
  231. package/lib/commonjs/catalogCacheNative.spec.js.map +0 -1
  232. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js +0 -616
  233. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js.map +0 -1
  234. package/lib/commonjs/httpClient.spec.js +0 -102
  235. package/lib/commonjs/httpClient.spec.js.map +0 -1
  236. package/lib/commonjs/index.spec.js +0 -302
  237. package/lib/commonjs/index.spec.js.map +0 -1
  238. package/lib/commonjs/iosInterop.spec.js +0 -18
  239. package/lib/commonjs/iosInterop.spec.js.map +0 -1
  240. package/lib/commonjs/native.spec.js +0 -883
  241. package/lib/commonjs/native.spec.js.map +0 -1
  242. package/lib/commonjs/notifyAppReadyInsights.boundary.spec.js +0 -218
  243. package/lib/commonjs/notifyAppReadyInsights.boundary.spec.js.map +0 -1
  244. package/lib/commonjs/notifyAppReadyInsights.js +0 -133
  245. package/lib/commonjs/notifyAppReadyInsights.js.map +0 -1
  246. package/lib/commonjs/notifyAppReadyInsights.spec.js +0 -246
  247. package/lib/commonjs/notifyAppReadyInsights.spec.js.map +0 -1
  248. package/lib/commonjs/notifyAppReadyInsights.test-utils.js +0 -24
  249. package/lib/commonjs/notifyAppReadyInsights.test-utils.js.map +0 -1
  250. package/lib/commonjs/notifyAppReadyInsights.transport.spec.js +0 -117
  251. package/lib/commonjs/notifyAppReadyInsights.transport.spec.js.map +0 -1
  252. package/lib/commonjs/releaseCatalogCache.spec.js +0 -195
  253. package/lib/commonjs/releaseCatalogCache.spec.js.map +0 -1
  254. package/lib/commonjs/releaseCatalogCacheNativeContract.spec.js +0 -64
  255. package/lib/commonjs/releaseCatalogCacheNativeContract.spec.js.map +0 -1
  256. package/lib/commonjs/store.notification.spec.js +0 -76
  257. package/lib/commonjs/store.notification.spec.js.map +0 -1
  258. package/lib/commonjs/store.spec.js +0 -316
  259. package/lib/commonjs/store.spec.js.map +0 -1
  260. package/lib/commonjs/wrap.spec.js +0 -329
  261. package/lib/commonjs/wrap.spec.js.map +0 -1
  262. package/lib/module/catalogCacheNative.spec.js +0 -31
  263. package/lib/module/catalogCacheNative.spec.js.map +0 -1
  264. package/lib/module/checkForUpdate.releaseCatalog.spec.js +0 -615
  265. package/lib/module/checkForUpdate.releaseCatalog.spec.js.map +0 -1
  266. package/lib/module/httpClient.spec.js +0 -102
  267. package/lib/module/httpClient.spec.js.map +0 -1
  268. package/lib/module/index.spec.js +0 -301
  269. package/lib/module/index.spec.js.map +0 -1
  270. package/lib/module/iosInterop.spec.js +0 -18
  271. package/lib/module/iosInterop.spec.js.map +0 -1
  272. package/lib/module/native.spec.js +0 -882
  273. package/lib/module/native.spec.js.map +0 -1
  274. package/lib/module/notifyAppReadyInsights.boundary.spec.js +0 -217
  275. package/lib/module/notifyAppReadyInsights.boundary.spec.js.map +0 -1
  276. package/lib/module/notifyAppReadyInsights.js +0 -128
  277. package/lib/module/notifyAppReadyInsights.js.map +0 -1
  278. package/lib/module/notifyAppReadyInsights.spec.js +0 -245
  279. package/lib/module/notifyAppReadyInsights.spec.js.map +0 -1
  280. package/lib/module/notifyAppReadyInsights.test-utils.js +0 -18
  281. package/lib/module/notifyAppReadyInsights.test-utils.js.map +0 -1
  282. package/lib/module/notifyAppReadyInsights.transport.spec.js +0 -116
  283. package/lib/module/notifyAppReadyInsights.transport.spec.js.map +0 -1
  284. package/lib/module/releaseCatalogCache.spec.js +0 -195
  285. package/lib/module/releaseCatalogCache.spec.js.map +0 -1
  286. package/lib/module/releaseCatalogCacheNativeContract.spec.js +0 -64
  287. package/lib/module/releaseCatalogCacheNativeContract.spec.js.map +0 -1
  288. package/lib/module/store.notification.spec.js +0 -77
  289. package/lib/module/store.notification.spec.js.map +0 -1
  290. package/lib/module/store.spec.js +0 -315
  291. package/lib/module/store.spec.js.map +0 -1
  292. package/lib/module/wrap.spec.js +0 -330
  293. package/lib/module/wrap.spec.js.map +0 -1
  294. package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts +0 -13
  295. package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts.map +0 -1
  296. package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts +0 -8
  297. package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts.map +0 -1
  298. package/lib/typescript/module/notifyAppReadyInsights.d.ts +0 -13
  299. package/lib/typescript/module/notifyAppReadyInsights.d.ts.map +0 -1
  300. package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts +0 -8
  301. package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts.map +0 -1
  302. package/src/catalogCacheNative.spec.ts +0 -63
  303. package/src/checkForUpdate.releaseCatalog.spec.ts +0 -612
  304. package/src/httpClient.spec.ts +0 -132
  305. package/src/index.spec.ts +0 -337
  306. package/src/iosInterop.spec.ts +0 -30
  307. package/src/native.spec.ts +0 -945
  308. package/src/notifyAppReadyInsights.boundary.spec.ts +0 -234
  309. package/src/notifyAppReadyInsights.spec.ts +0 -243
  310. package/src/notifyAppReadyInsights.test-utils.ts +0 -31
  311. package/src/notifyAppReadyInsights.transport.spec.ts +0 -130
  312. package/src/notifyAppReadyInsights.ts +0 -194
  313. package/src/releaseCatalogCache.spec.ts +0 -282
  314. package/src/releaseCatalogCacheNativeContract.spec.ts +0 -80
  315. package/src/store.notification.spec.ts +0 -92
  316. package/src/store.spec.ts +0 -372
  317. package/src/wrap.spec.ts +0 -406
@@ -14,7 +14,7 @@ exports.isHotUpdaterError = isHotUpdaterError;
14
14
  *
15
15
  * Error Classification:
16
16
  * - Parameter Validation: Invalid or missing function parameters
17
- * - Bundle Storage: Errors during download, extraction, and storage
17
+ * - Bundle Storage: Errors during download, verification, and storage
18
18
  * - Signature Verification: Cryptographic verification failures (collapsed to a single public code)
19
19
  * - Internal: Platform-specific or unexpected errors
20
20
  *
@@ -31,8 +31,7 @@ let HotUpdaterErrorCode = exports.HotUpdaterErrorCode = /*#__PURE__*/function (H
31
31
  */
32
32
  HotUpdaterErrorCode["MISSING_BUNDLE_ID"] = "MISSING_BUNDLE_ID";
33
33
  /**
34
- * File URL is invalid or malformed.
35
- * Thrown when fileUrl parameter cannot be parsed as a valid URL.
34
+ * Manifest or asset URL is invalid or malformed.
36
35
  * @retryable false
37
36
  */
38
37
  HotUpdaterErrorCode["INVALID_FILE_URL"] = "INVALID_FILE_URL";
@@ -57,23 +56,15 @@ let HotUpdaterErrorCode = exports.HotUpdaterErrorCode = /*#__PURE__*/function (H
57
56
  * @retryable true - Download may succeed on retry
58
57
  */
59
58
  HotUpdaterErrorCode["INCOMPLETE_DOWNLOAD"] = "INCOMPLETE_DOWNLOAD";
60
- /**
61
- * Bundle archive format is invalid or corrupted.
62
- * Thrown when ZIP file has wrong magic bytes, invalid structure, or unsupported format.
63
- * Also thrown for path traversal attempts during extraction.
64
- * @retryable false - Indicates corrupted or malicious bundle
65
- */
66
- HotUpdaterErrorCode["EXTRACTION_FORMAT_ERROR"] = "EXTRACTION_FORMAT_ERROR";
67
59
  /**
68
60
  * Bundle missing required platform files.
69
- * Thrown when extracted bundle doesn't contain index.android.bundle (Android)
61
+ * Thrown when the staged bundle doesn't contain index.android.bundle (Android)
70
62
  * or main.jsbundle (iOS).
71
63
  * @retryable false - Indicates incorrectly built bundle
72
64
  */
73
65
  HotUpdaterErrorCode["INVALID_BUNDLE"] = "INVALID_BUNDLE";
74
66
  /**
75
- * Insufficient disk space for bundle download and extraction.
76
- * Thrown when available disk space is less than required (file size * 2).
67
+ * Insufficient disk space for bundle staging.
77
68
  * Error message includes required and available bytes.
78
69
  * @retryable false - User must free up disk space
79
70
  */
@@ -96,7 +87,7 @@ let HotUpdaterErrorCode = exports.HotUpdaterErrorCode = /*#__PURE__*/function (H
96
87
  /**
97
88
  * Bundle is in crashed history and cannot be applied.
98
89
  * Thrown when attempting to install a bundle that previously caused a crash.
99
- * Use HotUpdater.clearCrashHistory() to allow retrying this bundle.
90
+ * Use hotUpdater.clearCrashHistory() to allow retrying this bundle.
100
91
  * @retryable false - Bundle was marked as crashed for safety
101
92
  */
102
93
  HotUpdaterErrorCode["BUNDLE_IN_CRASHED_HISTORY"] = "BUNDLE_IN_CRASHED_HISTORY";
@@ -1 +1 @@
1
- {"version":3,"names":["HotUpdaterErrorCode","exports","isHotUpdaterError","error","code","Object","values","includes","HotUpdaterError","Error","constructor","message","name","StaleReleaseCatalogError"],"sourceRoot":"../../src","sources":["error.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA,IAkBYA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,0BAAnBA,mBAAmB;EAC7B;EAEA;AACF;AACA;AACA;AACA;EAPYA,mBAAmB;EAU7B;AACF;AACA;AACA;AACA;EAdYA,mBAAmB;EAiB7B;EAEA;AACF;AACA;AACA;AACA;EAvBYA,mBAAmB;EA0B7B;AACF;AACA;AACA;AACA;AACA;EA/BYA,mBAAmB;EAkC7B;AACF;AACA;AACA;AACA;AACA;EAvCYA,mBAAmB;EA0C7B;AACF;AACA;AACA;AACA;AACA;EA/CYA,mBAAmB;EAkD7B;AACF;AACA;AACA;AACA;AACA;EAvDYA,mBAAmB;EA0D7B;AACF;AACA;AACA;AACA;AACA;EA/DYA,mBAAmB;EAkE7B;AACF;AACA;AACA;AACA;AACA;EAvEYA,mBAAmB;EA0E7B;AACF;AACA;AACA;AACA;AACA;AACA;EAhFYA,mBAAmB;EAmF7B;AACF;AACA;AACA;AACA;AACA;EAxFYA,mBAAmB;EA2F7B;EACA;EAEA;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAvGYA,mBAAmB;EA0G7B;AACF;AACA;AACA;AACA;AACA;EA/GYA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAmH/B;AACA;AACA;AACO,SAASE,iBAAiBA,CAC/BC,KAAc,EAC2C;EACzD,OACE,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,MAAM,IAAIA,KAAK,IACf,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ,IAC9BC,MAAM,CAACC,MAAM,CAACN,mBAAmB,CAAC,CAACO,QAAQ,CACzCJ,KAAK,CAACC,IACR,CAAC;AAEL;;AAEA;AACA;AACA;AACO,MAAMI,eAAe,SAASC,KAAK,CAAC;EACzCC,WAAWA,CAACC,OAAe,EAAE;IAC3B,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,iBAAiB;EAC/B;AACF;AAACX,OAAA,CAAAO,eAAA,GAAAA,eAAA;AAEM,MAAMK,wBAAwB,SAASL,eAAe,CAAC;EAC5DE,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,gEAAgE,CAAC;IACvE,IAAI,CAACE,IAAI,GAAG,0BAA0B;EACxC;AACF;AAACX,OAAA,CAAAY,wBAAA,GAAAA,wBAAA","ignoreList":[]}
1
+ {"version":3,"names":["HotUpdaterErrorCode","exports","isHotUpdaterError","error","code","Object","values","includes","HotUpdaterError","Error","constructor","message","name","StaleReleaseCatalogError"],"sourceRoot":"../../src","sources":["error.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA,IAkBYA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,0BAAnBA,mBAAmB;EAC7B;EAEA;AACF;AACA;AACA;AACA;EAPYA,mBAAmB;EAU7B;AACF;AACA;AACA;EAbYA,mBAAmB;EAgB7B;EAEA;AACF;AACA;AACA;AACA;EAtBYA,mBAAmB;EAyB7B;AACF;AACA;AACA;AACA;AACA;EA9BYA,mBAAmB;EAiC7B;AACF;AACA;AACA;AACA;AACA;EAtCYA,mBAAmB;EAyC7B;AACF;AACA;AACA;AACA;AACA;EA9CYA,mBAAmB;EAiD7B;AACF;AACA;AACA;AACA;EArDYA,mBAAmB;EAwD7B;AACF;AACA;AACA;AACA;AACA;EA7DYA,mBAAmB;EAgE7B;AACF;AACA;AACA;AACA;AACA;AACA;EAtEYA,mBAAmB;EAyE7B;AACF;AACA;AACA;AACA;AACA;EA9EYA,mBAAmB;EAiF7B;EACA;EAEA;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EA7FYA,mBAAmB;EAgG7B;AACF;AACA;AACA;AACA;AACA;EArGYA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAyG/B;AACA;AACA;AACO,SAASE,iBAAiBA,CAC/BC,KAAc,EAC2C;EACzD,OACE,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,MAAM,IAAIA,KAAK,IACf,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ,IAC9BC,MAAM,CAACC,MAAM,CAACN,mBAAmB,CAAC,CAACO,QAAQ,CACzCJ,KAAK,CAACC,IACR,CAAC;AAEL;;AAEA;AACA;AACA;AACO,MAAMI,eAAe,SAASC,KAAK,CAAC;EACzCC,WAAWA,CAACC,OAAe,EAAE;IAC3B,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,iBAAiB;EAC/B;AACF;AAACX,OAAA,CAAAO,eAAA,GAAAA,eAAA;AAEM,MAAMK,wBAAwB,SAASL,eAAe,CAAC;EAC5DE,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,gEAAgE,CAAC;IACvE,IAAI,CAACE,IAAI,GAAG,0BAA0B;EACxC;AACF;AAACX,OAAA,CAAAY,wBAAA,GAAAA,wBAAA","ignoreList":[]}
@@ -3,34 +3,23 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.fetchJSON = void 0;
7
- const fetchJSON = async ({
8
- url,
9
- requestHeaders,
10
- requestTimeout = 5000
11
- }) => {
12
- const controller = new AbortController();
13
- const timeoutId = setTimeout(() => controller.abort(), requestTimeout);
14
- try {
15
- const response = await fetch(url, {
16
- headers: {
17
- Accept: "application/json",
18
- ...requestHeaders
19
- },
20
- signal: controller.signal
21
- });
22
- if (response.status !== 200) {
23
- throw new Error(response.statusText);
24
- }
25
- return await response.json();
26
- } catch (error) {
27
- if (error instanceof Error && error.name === "AbortError") {
28
- throw new Error("Request timed out");
29
- }
30
- throw error;
31
- } finally {
32
- clearTimeout(timeoutId);
6
+ exports.fetchJSON = exports.FetchJSONResponseError = void 0;
7
+ var _fetchUpdateResponse = require("./fetchUpdateResponse.js");
8
+ var _updateError = require("./updateError.js");
9
+ class FetchJSONResponseError extends _updateError.UpdateHttpError {}
10
+ exports.FetchJSONResponseError = FetchJSONResponseError;
11
+ const fetchJSON = async input => {
12
+ const {
13
+ response,
14
+ body
15
+ } = await (0, _fetchUpdateResponse.fetchUpdateResponse)({
16
+ ...input,
17
+ resource: "artifact"
18
+ });
19
+ if (response.status !== 200) {
20
+ throw new FetchJSONResponseError(response.status, response.statusText);
33
21
  }
22
+ return JSON.parse(body);
34
23
  };
35
24
  exports.fetchJSON = fetchJSON;
36
25
  //# sourceMappingURL=fetchJSON.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["fetchJSON","url","requestHeaders","requestTimeout","controller","AbortController","timeoutId","setTimeout","abort","response","fetch","headers","Accept","signal","status","Error","statusText","json","error","name","clearTimeout","exports"],"sourceRoot":"../../src","sources":["fetchJSON.ts"],"mappings":";;;;;;AAAO,MAAMA,SAAS,GAAG,MAAAA,CAAU;EACjCC,GAAG;EACHC,cAAc;EACdC,cAAc,GAAG;AAKnB,CAAC,KAAiB;EAChB,MAAMC,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;EACxC,MAAMC,SAAS,GAAGC,UAAU,CAAC,MAAMH,UAAU,CAACI,KAAK,CAAC,CAAC,EAAEL,cAAc,CAAC;EAEtE,IAAI;IACF,MAAMM,QAAQ,GAAG,MAAMC,KAAK,CAACT,GAAG,EAAE;MAChCU,OAAO,EAAE;QACPC,MAAM,EAAE,kBAAkB;QAC1B,GAAGV;MACL,CAAC;MACDW,MAAM,EAAET,UAAU,CAACS;IACrB,CAAC,CAAC;IACF,IAAIJ,QAAQ,CAACK,MAAM,KAAK,GAAG,EAAE;MAC3B,MAAM,IAAIC,KAAK,CAACN,QAAQ,CAACO,UAAU,CAAC;IACtC;IACA,OAAQ,MAAMP,QAAQ,CAACQ,IAAI,CAAC,CAAC;EAC/B,CAAC,CAAC,OAAOC,KAAc,EAAE;IACvB,IAAIA,KAAK,YAAYH,KAAK,IAAIG,KAAK,CAACC,IAAI,KAAK,YAAY,EAAE;MACzD,MAAM,IAAIJ,KAAK,CAAC,mBAAmB,CAAC;IACtC;IACA,MAAMG,KAAK;EACb,CAAC,SAAS;IACRE,YAAY,CAACd,SAAS,CAAC;EACzB;AACF,CAAC;AAACe,OAAA,CAAArB,SAAA,GAAAA,SAAA","ignoreList":[]}
1
+ {"version":3,"names":["_fetchUpdateResponse","require","_updateError","FetchJSONResponseError","UpdateHttpError","exports","fetchJSON","input","response","body","fetchUpdateResponse","resource","status","statusText","JSON","parse"],"sourceRoot":"../../src","sources":["fetchJSON.ts"],"mappings":";;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEO,MAAME,sBAAsB,SAASC,4BAAe,CAAC;AAAEC,OAAA,CAAAF,sBAAA,GAAAA,sBAAA;AAEvD,MAAMG,SAAS,GAAG,MACvBC,KAAsC,IACvB;EACf,MAAM;IAAEC,QAAQ;IAAEC;EAAK,CAAC,GAAG,MAAM,IAAAC,wCAAmB,EAAC;IACnD,GAAGH,KAAK;IACRI,QAAQ,EAAE;EACZ,CAAC,CAAC;EACF,IAAIH,QAAQ,CAACI,MAAM,KAAK,GAAG,EAAE;IAC3B,MAAM,IAAIT,sBAAsB,CAACK,QAAQ,CAACI,MAAM,EAAEJ,QAAQ,CAACK,UAAU,CAAC;EACxE;EACA,OAAOC,IAAI,CAACC,KAAK,CAACN,IAAK,CAAC;AAC1B,CAAC;AAACJ,OAAA,CAAAC,SAAA,GAAAA,SAAA","ignoreList":[]}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fetchUpdateResponse = void 0;
7
+ /** Read once for parsing and diagnostics, under the same request timeout. */
8
+ const fetchUpdateResponse = async ({
9
+ url,
10
+ resource,
11
+ requestHeaders,
12
+ requestTimeout = 5000,
13
+ onResponse
14
+ }) => {
15
+ const controller = new AbortController();
16
+ let timedOut = false;
17
+ const timeoutId = setTimeout(() => {
18
+ timedOut = true;
19
+ controller.abort();
20
+ }, requestTimeout);
21
+ try {
22
+ const headers = new Headers(requestHeaders);
23
+ if (!headers.has("Accept")) headers.set("Accept", "application/json");
24
+ const response = await fetch(url, {
25
+ headers,
26
+ signal: controller.signal
27
+ });
28
+ let body = null;
29
+ try {
30
+ body = await response.text();
31
+ } catch (error) {
32
+ // A broken error body must not hide an HTTP error already received.
33
+ if (response.status === 200) throw error;
34
+ } finally {
35
+ onResponse?.({
36
+ resource,
37
+ // React Native URL implementations do not all expose pathname.
38
+ path: url.replace(/^https?:\/\/[^/?#]*/i, "").split(/[?#]/, 1)[0] || "/",
39
+ status: response.status,
40
+ body,
41
+ bodyTruncated: false
42
+ });
43
+ }
44
+ return {
45
+ response,
46
+ body
47
+ };
48
+ } catch (error) {
49
+ // Whatever the fetch rejects with once its timeout aborts it: an
50
+ // AbortError, or Expo's "fetch failed: FetchRequestCanceledException".
51
+ if (timedOut || error instanceof Error && error.name === "AbortError") {
52
+ throw new Error("Request timed out");
53
+ }
54
+ throw error;
55
+ } finally {
56
+ clearTimeout(timeoutId);
57
+ }
58
+ };
59
+ exports.fetchUpdateResponse = fetchUpdateResponse;
60
+ //# sourceMappingURL=fetchUpdateResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fetchUpdateResponse","url","resource","requestHeaders","requestTimeout","onResponse","controller","AbortController","timedOut","timeoutId","setTimeout","abort","headers","Headers","has","set","response","fetch","signal","body","text","error","status","path","replace","split","bodyTruncated","Error","name","clearTimeout","exports"],"sourceRoot":"../../src","sources":["fetchUpdateResponse.ts"],"mappings":";;;;;;AAUA;AACO,MAAMA,mBAAmB,GAAG,MAAAA,CAAO;EACxCC,GAAG;EACHC,QAAQ;EACRC,cAAc;EACdC,cAAc,GAAG,IAAI;EACrBC;AACa,CAAC,KAA2D;EACzE,MAAMC,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;EACxC,IAAIC,QAAQ,GAAG,KAAK;EACpB,MAAMC,SAAS,GAAGC,UAAU,CAAC,MAAM;IACjCF,QAAQ,GAAG,IAAI;IACfF,UAAU,CAACK,KAAK,CAAC,CAAC;EACpB,CAAC,EAAEP,cAAc,CAAC;EAClB,IAAI;IACF,MAAMQ,OAAO,GAAG,IAAIC,OAAO,CAACV,cAAc,CAAC;IAC3C,IAAI,CAACS,OAAO,CAACE,GAAG,CAAC,QAAQ,CAAC,EAAEF,OAAO,CAACG,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACrE,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAAChB,GAAG,EAAE;MAChCW,OAAO;MACPM,MAAM,EAAEZ,UAAU,CAACY;IACrB,CAAC,CAAC;IACF,IAAIC,IAAmB,GAAG,IAAI;IAC9B,IAAI;MACFA,IAAI,GAAG,MAAMH,QAAQ,CAACI,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd;MACA,IAAIL,QAAQ,CAACM,MAAM,KAAK,GAAG,EAAE,MAAMD,KAAK;IAC1C,CAAC,SAAS;MACRhB,UAAU,GAAG;QACXH,QAAQ;QACR;QACAqB,IAAI,EACFtB,GAAG,CAACuB,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAACC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;QACpEH,MAAM,EAAEN,QAAQ,CAACM,MAAM;QACvBH,IAAI;QACJO,aAAa,EAAE;MACjB,CAAC,CAAC;IACJ;IACA,OAAO;MAAEV,QAAQ;MAAEG;IAAK,CAAC;EAC3B,CAAC,CAAC,OAAOE,KAAc,EAAE;IACvB;IACA;IACA,IAAIb,QAAQ,IAAKa,KAAK,YAAYM,KAAK,IAAIN,KAAK,CAACO,IAAI,KAAK,YAAa,EAAE;MACvE,MAAM,IAAID,KAAK,CAAC,mBAAmB,CAAC;IACtC;IACA,MAAMN,KAAK;EACb,CAAC,SAAS;IACRQ,YAAY,CAACpB,SAAS,CAAC;EACzB;AACF,CAAC;AAACqB,OAAA,CAAA9B,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -4,106 +4,60 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createHttpClient = void 0;
7
- var _core = require("@hot-updater/core");
8
- var _pluginCore = require("@hot-updater/plugin-core");
7
+ var _protocol = require("@hot-updater/protocol");
9
8
  var _fetchJSON = require("./fetchJSON.js");
10
9
  var _releaseCatalogCache = require("./releaseCatalogCache.js");
11
- var _sdkVersion = require("./sdkVersion.js");
12
- const resolveBaseURL = async baseURL => {
13
- const resolvedBaseURL = typeof baseURL === "function" ? await baseURL() : baseURL;
14
- if (!resolvedBaseURL) {
15
- throw new Error("baseURL function must return a non-empty string");
16
- }
17
- return resolvedBaseURL.replace(/\/+$/, "");
18
- };
10
+ var _updateError = require("./updateError.js");
19
11
  const resolveArtifactUrl = (baseURL, value) => {
20
12
  if (/^https?:\/\//i.test(value)) {
21
- new URL(value);
13
+ try {
14
+ new URL(value);
15
+ } catch (error) {
16
+ throw new _updateError.InvalidUpdateResponseError(`Invalid artifact URL: ${value}`, {
17
+ cause: error
18
+ });
19
+ }
22
20
  return value;
23
21
  }
24
22
  if (!value.startsWith("/storage/")) {
25
- throw new Error("Artifact URLs must be absolute HTTP(S) URLs or client-relative storage paths.");
23
+ throw new _updateError.InvalidUpdateResponseError("Artifact URLs must be absolute HTTP(S) URLs or client-relative storage paths.");
26
24
  }
27
25
  return `${baseURL}/${value.slice(1)}`;
28
26
  };
29
27
  const resolveArtifactUrls = (baseURL, info) => ({
30
28
  ...info,
31
- fileUrl: info.fileUrl === null ? null : resolveArtifactUrl(baseURL, info.fileUrl),
32
- ...(info.manifestUrl === undefined ? {} : {
33
- manifestUrl: info.manifestUrl === null ? null : resolveArtifactUrl(baseURL, info.manifestUrl)
34
- }),
35
- ...(info.changedAssets === undefined ? {} : {
36
- changedAssets: info.changedAssets === null ? null : Object.fromEntries(Object.entries(info.changedAssets).map(([path, asset]) => [path, {
37
- ...asset,
38
- ...(asset.file ? {
39
- file: {
40
- ...asset.file,
41
- url: resolveArtifactUrl(baseURL, asset.file.url)
42
- }
43
- } : {}),
44
- ...(asset.patch ? {
45
- patch: {
46
- ...asset.patch,
47
- patchUrl: resolveArtifactUrl(baseURL, asset.patch.patchUrl)
48
- }
49
- } : {})
50
- }]))
51
- })
29
+ manifestUrl: resolveArtifactUrl(baseURL, info.manifestUrl),
30
+ ...(info.archiveUrl ? {
31
+ archiveUrl: resolveArtifactUrl(baseURL, info.archiveUrl)
32
+ } : {}),
33
+ assets: Object.fromEntries(Object.entries(info.assets).map(([path, asset]) => [path, {
34
+ ...asset,
35
+ file: {
36
+ ...asset.file,
37
+ url: resolveArtifactUrl(baseURL, asset.file.url)
38
+ },
39
+ ...(asset.patch ? {
40
+ patch: {
41
+ ...asset.patch,
42
+ patchUrl: resolveArtifactUrl(baseURL, asset.patch.patchUrl)
43
+ }
44
+ } : {})
45
+ }]))
52
46
  });
53
- const sendInsightsEvent = async (baseURL, params) => {
54
- const controller = new AbortController();
55
- const timeoutId = setTimeout(() => {
56
- controller.abort();
57
- }, params.requestTimeout ?? 5000);
58
- try {
59
- const response = await fetch(`${baseURL}/events`, {
60
- body: JSON.stringify({
61
- appVersion: params.appVersion,
62
- channel: params.channel,
63
- cohort: params.cohort,
64
- fingerprintHash: params.fingerprintHash,
65
- fromBundleId: params.fromBundleId,
66
- ...(params.fromReleaseId === undefined ? {} : {
67
- fromReleaseId: params.fromReleaseId
68
- }),
69
- installId: params.installId,
70
- platform: params.platform,
71
- sdkVersion: _sdkVersion.HOT_UPDATER_SDK_VERSION,
72
- toBundleId: params.toBundleId,
73
- ...(params.toReleaseId === undefined ? {} : {
74
- toReleaseId: params.toReleaseId
75
- }),
76
- type: params.type,
77
- updateStrategy: params.updateStrategy,
78
- ...(params.userId != null ? {
79
- userId: params.userId
80
- } : {}),
81
- ...(params.username != null ? {
82
- username: params.username
83
- } : {})
84
- }),
85
- headers: {
86
- "Content-Type": "application/json",
87
- ...params.requestHeaders
88
- },
89
- method: "POST",
90
- signal: controller.signal
91
- });
92
- if (response.status !== 204) {
93
- throw new Error(`Expected HTTP 204 from /events, received ${response.status}`);
94
- }
95
- } catch (error) {
96
- if (error instanceof Error && error.name === "AbortError") {
97
- throw new Error("Request timed out");
47
+ const requireArtifactProtocolV1 = info => {
48
+ if (info.artifactProtocolVersion !== _protocol.ARTIFACT_PROTOCOL_VERSION || !info.assets || !info.manifestUrl || !info.manifestFileHash || info.archiveUrl !== undefined && typeof info.archiveUrl !== "string") {
49
+ throw new _updateError.InvalidUpdateResponseError(`Server does not support artifact protocol ${_protocol.ARTIFACT_PROTOCOL_VERSION}.`);
50
+ }
51
+ for (const asset of Object.values(info.assets)) {
52
+ if (!asset.file?.url || !asset.fileHash) {
53
+ throw new _updateError.InvalidUpdateResponseError("Artifact protocol 1 requires an original file for every asset.");
98
54
  }
99
- throw error;
100
- } finally {
101
- clearTimeout(timeoutId);
102
55
  }
56
+ return info;
103
57
  };
104
- const createSession = baseURL => ({
58
+ const createSession = (baseURL, onResponse) => ({
105
59
  fetchReleaseCatalog: async params => {
106
- const channelKey = (0, _core.encodeChannelKey)(params.channel);
60
+ const channelKey = (0, _protocol.encodeChannelKey)(params.channel);
107
61
  let strategyValue;
108
62
  if (params.updateStrategy === "fingerprint") {
109
63
  if (!params.fingerprintHash) {
@@ -111,7 +65,7 @@ const createSession = baseURL => ({
111
65
  }
112
66
  strategyValue = params.fingerprintHash;
113
67
  } else {
114
- const appVersion = (0, _pluginCore.canonicalizeAppVersion)(params.appVersion);
68
+ const appVersion = (0, _protocol.canonicalizeAppVersion)(params.appVersion);
115
69
  if (appVersion === null) throw new Error("Invalid app version");
116
70
  strategyValue = appVersion;
117
71
  }
@@ -119,6 +73,9 @@ const createSession = baseURL => ({
119
73
  const url = `${baseURL}/release-catalogs/${strategyPath}/${params.platform}/${channelKey}/${encodeURIComponent(strategyValue)}`;
120
74
  return (0, _releaseCatalogCache.fetchReleaseCatalogWithCache)({
121
75
  baseURL,
76
+ ...(onResponse ? {
77
+ onResponse
78
+ } : {}),
122
79
  expectedScope: params.updateStrategy === "fingerprint" ? {
123
80
  channelKey,
124
81
  fingerprintHash: strategyValue,
@@ -135,19 +92,31 @@ const createSession = baseURL => ({
135
92
  });
136
93
  },
137
94
  resolveArtifact: async params => {
138
- const info = await (0, _fetchJSON.fetchJSON)({
139
- requestHeaders: params.requestHeaders,
140
- requestTimeout: params.requestTimeout,
141
- url: `${baseURL}/artifacts/${encodeURIComponent(params.targetBundleId)}/from/${encodeURIComponent(params.currentBundleId)}`
142
- });
143
- return resolveArtifactUrls(baseURL, info);
144
- },
145
- sendInsightsEvent: params => sendInsightsEvent(baseURL, params)
95
+ let info;
96
+ try {
97
+ info = await (0, _fetchJSON.fetchJSON)({
98
+ ...(onResponse ? {
99
+ onResponse
100
+ } : {}),
101
+ requestHeaders: params.requestHeaders,
102
+ requestTimeout: params.requestTimeout,
103
+ url: `${baseURL}/artifacts/v1/${encodeURIComponent(params.targetBundleId)}/from/${encodeURIComponent(params.currentBundleId)}`
104
+ });
105
+ } catch (error) {
106
+ if (error instanceof _fetchJSON.FetchJSONResponseError && error.status === 404) {
107
+ throw new _updateError.InvalidUpdateResponseError(`Server does not support artifact protocol ${_protocol.ARTIFACT_PROTOCOL_VERSION}.`, {
108
+ cause: error
109
+ });
110
+ }
111
+ throw error;
112
+ }
113
+ return resolveArtifactUrls(baseURL, requireArtifactProtocolV1(info));
114
+ }
146
115
  });
147
116
 
148
- /** Creates the private HTTP client used by HotUpdater.init and HotUpdater.wrap. */
149
- const createHttpClient = baseURL => ({
150
- createSession: async () => createSession(await resolveBaseURL(baseURL))
117
+ /** Creates the private HTTP client HotUpdater.init configures. */
118
+ const createHttpClient = (baseURL, onResponse) => ({
119
+ createSession: async () => createSession(await (0, _protocol.resolveBaseURL)(baseURL), onResponse)
151
120
  });
152
121
  exports.createHttpClient = createHttpClient;
153
122
  //# sourceMappingURL=httpClient.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_pluginCore","_fetchJSON","_releaseCatalogCache","_sdkVersion","resolveBaseURL","baseURL","resolvedBaseURL","Error","replace","resolveArtifactUrl","value","test","URL","startsWith","slice","resolveArtifactUrls","info","fileUrl","manifestUrl","undefined","changedAssets","Object","fromEntries","entries","map","path","asset","file","url","patch","patchUrl","sendInsightsEvent","params","controller","AbortController","timeoutId","setTimeout","abort","requestTimeout","response","fetch","body","JSON","stringify","appVersion","channel","cohort","fingerprintHash","fromBundleId","fromReleaseId","installId","platform","sdkVersion","HOT_UPDATER_SDK_VERSION","toBundleId","toReleaseId","type","updateStrategy","userId","username","headers","requestHeaders","method","signal","status","error","name","clearTimeout","createSession","fetchReleaseCatalog","channelKey","encodeChannelKey","strategyValue","canonicalizeAppVersion","strategyPath","encodeURIComponent","fetchReleaseCatalogWithCache","expectedScope","strategy","resolveArtifact","fetchJSON","targetBundleId","currentBundleId","createHttpClient","exports"],"sourceRoot":"../../src","sources":["httpClient.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_protocol","require","_fetchJSON","_releaseCatalogCache","_updateError","resolveArtifactUrl","baseURL","value","test","URL","error","InvalidUpdateResponseError","cause","startsWith","slice","resolveArtifactUrls","info","manifestUrl","archiveUrl","assets","Object","fromEntries","entries","map","path","asset","file","url","patch","patchUrl","requireArtifactProtocolV1","artifactProtocolVersion","ARTIFACT_PROTOCOL_VERSION","manifestFileHash","undefined","values","fileHash","createSession","onResponse","fetchReleaseCatalog","params","channelKey","encodeChannelKey","channel","strategyValue","updateStrategy","fingerprintHash","Error","appVersion","canonicalizeAppVersion","strategyPath","platform","encodeURIComponent","fetchReleaseCatalogWithCache","expectedScope","strategy","requestHeaders","requestTimeout","resolveArtifact","fetchJSON","targetBundleId","currentBundleId","FetchJSONResponseError","status","createHttpClient","resolveBaseURL","exports"],"sourceRoot":"../../src","sources":["httpClient.ts"],"mappings":"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","ignoreList":[]}