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

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 (306) 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 +102 -0
  48. package/lib/commonjs/appReady.js.map +1 -0
  49. package/lib/commonjs/checkForUpdate.js +120 -68
  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 +4 -13
  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 +63 -94
  60. package/lib/commonjs/httpClient.js.map +1 -1
  61. package/lib/commonjs/index.js +71 -18
  62. package/lib/commonjs/index.js.map +1 -1
  63. package/lib/commonjs/native.js +74 -60
  64. package/lib/commonjs/native.js.map +1 -1
  65. package/lib/commonjs/pluginHost.js +45 -0
  66. package/lib/commonjs/pluginHost.js.map +1 -0
  67. package/lib/commonjs/releaseCatalogCache.js +36 -87
  68. package/lib/commonjs/releaseCatalogCache.js.map +1 -1
  69. package/lib/commonjs/sdkVersion.js +1 -1
  70. package/lib/commonjs/sdkVersion.js.map +1 -1
  71. package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
  72. package/lib/commonjs/store.js +3 -10
  73. package/lib/commonjs/store.js.map +1 -1
  74. package/lib/commonjs/updateError.js +145 -0
  75. package/lib/commonjs/updateError.js.map +1 -0
  76. package/lib/commonjs/wrap.js +43 -26
  77. package/lib/commonjs/wrap.js.map +1 -1
  78. package/lib/module/appReady.js +95 -0
  79. package/lib/module/appReady.js.map +1 -0
  80. package/lib/module/checkForUpdate.js +113 -63
  81. package/lib/module/checkForUpdate.js.map +1 -1
  82. package/lib/module/clientPlugin.js +4 -0
  83. package/lib/module/clientPlugin.js.map +1 -0
  84. package/lib/module/error.js +4 -13
  85. package/lib/module/error.js.map +1 -1
  86. package/lib/module/fetchJSON.js +14 -26
  87. package/lib/module/fetchJSON.js.map +1 -1
  88. package/lib/module/fetchUpdateResponse.js +55 -0
  89. package/lib/module/fetchUpdateResponse.js.map +1 -0
  90. package/lib/module/httpClient.js +62 -93
  91. package/lib/module/httpClient.js.map +1 -1
  92. package/lib/module/index.js +58 -20
  93. package/lib/module/index.js.map +1 -1
  94. package/lib/module/native.js +67 -53
  95. package/lib/module/native.js.map +1 -1
  96. package/lib/module/pluginHost.js +36 -0
  97. package/lib/module/pluginHost.js.map +1 -0
  98. package/lib/module/releaseCatalogCache.js +32 -82
  99. package/lib/module/releaseCatalogCache.js.map +1 -1
  100. package/lib/module/sdkVersion.js +1 -1
  101. package/lib/module/sdkVersion.js.map +1 -1
  102. package/lib/module/specs/NativeHotUpdater.js.map +1 -1
  103. package/lib/module/store.js +3 -10
  104. package/lib/module/store.js.map +1 -1
  105. package/lib/module/updateError.js +139 -0
  106. package/lib/module/updateError.js.map +1 -0
  107. package/lib/module/wrap.js +43 -26
  108. package/lib/module/wrap.js.map +1 -1
  109. package/lib/typescript/commonjs/appReady.d.ts +21 -0
  110. package/lib/typescript/commonjs/appReady.d.ts.map +1 -0
  111. package/lib/typescript/commonjs/checkForUpdate.d.ts +16 -4
  112. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/clientPlugin.d.ts +2 -0
  114. package/lib/typescript/commonjs/clientPlugin.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/error.d.ts +4 -13
  116. package/lib/typescript/commonjs/error.d.ts.map +1 -1
  117. package/lib/typescript/commonjs/fetchJSON.d.ts +5 -5
  118. package/lib/typescript/commonjs/fetchJSON.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/fetchUpdateResponse.d.ts +14 -0
  120. package/lib/typescript/commonjs/fetchUpdateResponse.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/httpClient.d.ts +4 -33
  122. package/lib/typescript/commonjs/httpClient.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/index.d.ts +4 -8
  124. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/native.d.ts +29 -22
  126. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/pluginHost.d.ts +4 -0
  128. package/lib/typescript/commonjs/pluginHost.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/releaseCatalogCache.d.ts +8 -14
  130. package/lib/typescript/commonjs/releaseCatalogCache.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/sdkVersion.d.ts +1 -1
  132. package/lib/typescript/commonjs/sdkVersion.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +35 -47
  134. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/store.d.ts +1 -3
  136. package/lib/typescript/commonjs/store.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/types.d.ts +1 -1
  138. package/lib/typescript/commonjs/types.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/updateError.d.ts +26 -0
  140. package/lib/typescript/commonjs/updateError.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
  142. package/lib/typescript/commonjs/wrap.types.d.ts +6 -7
  143. package/lib/typescript/commonjs/wrap.types.d.ts.map +1 -1
  144. package/lib/typescript/module/appReady.d.ts +21 -0
  145. package/lib/typescript/module/appReady.d.ts.map +1 -0
  146. package/lib/typescript/module/checkForUpdate.d.ts +16 -4
  147. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  148. package/lib/typescript/module/clientPlugin.d.ts +2 -0
  149. package/lib/typescript/module/clientPlugin.d.ts.map +1 -0
  150. package/lib/typescript/module/error.d.ts +4 -13
  151. package/lib/typescript/module/error.d.ts.map +1 -1
  152. package/lib/typescript/module/fetchJSON.d.ts +5 -5
  153. package/lib/typescript/module/fetchJSON.d.ts.map +1 -1
  154. package/lib/typescript/module/fetchUpdateResponse.d.ts +14 -0
  155. package/lib/typescript/module/fetchUpdateResponse.d.ts.map +1 -0
  156. package/lib/typescript/module/httpClient.d.ts +4 -33
  157. package/lib/typescript/module/httpClient.d.ts.map +1 -1
  158. package/lib/typescript/module/index.d.ts +4 -8
  159. package/lib/typescript/module/index.d.ts.map +1 -1
  160. package/lib/typescript/module/native.d.ts +29 -22
  161. package/lib/typescript/module/native.d.ts.map +1 -1
  162. package/lib/typescript/module/pluginHost.d.ts +4 -0
  163. package/lib/typescript/module/pluginHost.d.ts.map +1 -0
  164. package/lib/typescript/module/releaseCatalogCache.d.ts +8 -14
  165. package/lib/typescript/module/releaseCatalogCache.d.ts.map +1 -1
  166. package/lib/typescript/module/sdkVersion.d.ts +1 -1
  167. package/lib/typescript/module/sdkVersion.d.ts.map +1 -1
  168. package/lib/typescript/module/specs/NativeHotUpdater.d.ts +35 -47
  169. package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
  170. package/lib/typescript/module/store.d.ts +1 -3
  171. package/lib/typescript/module/store.d.ts.map +1 -1
  172. package/lib/typescript/module/types.d.ts +1 -1
  173. package/lib/typescript/module/types.d.ts.map +1 -1
  174. package/lib/typescript/module/updateError.d.ts +26 -0
  175. package/lib/typescript/module/updateError.d.ts.map +1 -0
  176. package/lib/typescript/module/wrap.d.ts.map +1 -1
  177. package/lib/typescript/module/wrap.types.d.ts +6 -7
  178. package/lib/typescript/module/wrap.types.d.ts.map +1 -1
  179. package/package.json +7 -4
  180. package/src/appReady.ts +141 -0
  181. package/src/checkForUpdate.ts +145 -86
  182. package/src/clientPlugin.ts +18 -0
  183. package/src/error.ts +4 -14
  184. package/src/fetchJSON.ts +14 -30
  185. package/src/fetchUpdateResponse.ts +60 -0
  186. package/src/httpClient.ts +88 -159
  187. package/src/index.ts +90 -24
  188. package/src/native.ts +98 -102
  189. package/src/pluginHost.ts +47 -0
  190. package/src/releaseCatalogCache.ts +43 -172
  191. package/src/sdkVersion.ts +1 -1
  192. package/src/specs/NativeHotUpdater.ts +34 -48
  193. package/src/store.ts +2 -23
  194. package/src/types.ts +1 -1
  195. package/src/updateError.ts +167 -0
  196. package/src/wrap.tsx +57 -26
  197. package/src/wrap.types.ts +6 -7
  198. package/android/src/main/java/com/hotupdater/DecompressService.kt +0 -89
  199. package/android/src/main/java/com/hotupdater/DecompressionStrategy.kt +0 -26
  200. package/android/src/main/java/com/hotupdater/TarBrDecompressionStrategy.kt +0 -117
  201. package/android/src/main/java/com/hotupdater/TarGzDecompressionStrategy.kt +0 -117
  202. package/android/src/main/java/com/hotupdater/ZipDecompressionStrategy.kt +0 -192
  203. package/android/src/test/java/com/hotupdater/BsdiffPatchTest.kt +0 -46
  204. package/android/src/test/java/com/hotupdater/BundleFileStorageServiceTest.kt +0 -799
  205. package/android/src/test/java/com/hotupdater/HotUpdaterImplTest.kt +0 -273
  206. package/android/src/test/java/com/hotupdater/NativeConfigUtilsTest.kt +0 -20
  207. package/android/src/test/java/com/hotupdater/OkHttpDownloadServiceTest.kt +0 -111
  208. package/android/src/test/java/com/hotupdater/RelativePathResolverTest.kt +0 -41
  209. package/android/src/test/java/com/hotupdater/ReleaseCatalogCacheServiceTest.kt +0 -118
  210. package/android/src/test/java/com/hotupdater/TarArchiveInputStreamTest.kt +0 -68
  211. package/ios/HotUpdater/Internal/ArchiveExtractionUtilities.swift +0 -178
  212. package/ios/HotUpdater/Internal/DecompressService.swift +0 -112
  213. package/ios/HotUpdater/Internal/DecompressionStrategy.swift +0 -22
  214. package/ios/HotUpdater/Internal/StreamingTarArchiveExtractor.swift +0 -370
  215. package/ios/HotUpdater/Internal/TarBrDecompressionStrategy.swift +0 -39
  216. package/ios/HotUpdater/Internal/TarGzDecompressionStrategy.swift +0 -59
  217. package/ios/HotUpdater/Internal/ZipArchiveExtractor.swift +0 -482
  218. package/ios/HotUpdater/Internal/ZipDecompressionStrategy.swift +0 -56
  219. package/lib/commonjs/catalogCacheNative.spec.js +0 -31
  220. package/lib/commonjs/catalogCacheNative.spec.js.map +0 -1
  221. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js +0 -616
  222. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js.map +0 -1
  223. package/lib/commonjs/httpClient.spec.js +0 -102
  224. package/lib/commonjs/httpClient.spec.js.map +0 -1
  225. package/lib/commonjs/index.spec.js +0 -302
  226. package/lib/commonjs/index.spec.js.map +0 -1
  227. package/lib/commonjs/iosInterop.spec.js +0 -18
  228. package/lib/commonjs/iosInterop.spec.js.map +0 -1
  229. package/lib/commonjs/native.spec.js +0 -883
  230. package/lib/commonjs/native.spec.js.map +0 -1
  231. package/lib/commonjs/notifyAppReadyInsights.boundary.spec.js +0 -218
  232. package/lib/commonjs/notifyAppReadyInsights.boundary.spec.js.map +0 -1
  233. package/lib/commonjs/notifyAppReadyInsights.js +0 -133
  234. package/lib/commonjs/notifyAppReadyInsights.js.map +0 -1
  235. package/lib/commonjs/notifyAppReadyInsights.spec.js +0 -246
  236. package/lib/commonjs/notifyAppReadyInsights.spec.js.map +0 -1
  237. package/lib/commonjs/notifyAppReadyInsights.test-utils.js +0 -24
  238. package/lib/commonjs/notifyAppReadyInsights.test-utils.js.map +0 -1
  239. package/lib/commonjs/notifyAppReadyInsights.transport.spec.js +0 -117
  240. package/lib/commonjs/notifyAppReadyInsights.transport.spec.js.map +0 -1
  241. package/lib/commonjs/releaseCatalogCache.spec.js +0 -195
  242. package/lib/commonjs/releaseCatalogCache.spec.js.map +0 -1
  243. package/lib/commonjs/releaseCatalogCacheNativeContract.spec.js +0 -64
  244. package/lib/commonjs/releaseCatalogCacheNativeContract.spec.js.map +0 -1
  245. package/lib/commonjs/store.notification.spec.js +0 -76
  246. package/lib/commonjs/store.notification.spec.js.map +0 -1
  247. package/lib/commonjs/store.spec.js +0 -316
  248. package/lib/commonjs/store.spec.js.map +0 -1
  249. package/lib/commonjs/wrap.spec.js +0 -329
  250. package/lib/commonjs/wrap.spec.js.map +0 -1
  251. package/lib/module/catalogCacheNative.spec.js +0 -31
  252. package/lib/module/catalogCacheNative.spec.js.map +0 -1
  253. package/lib/module/checkForUpdate.releaseCatalog.spec.js +0 -615
  254. package/lib/module/checkForUpdate.releaseCatalog.spec.js.map +0 -1
  255. package/lib/module/httpClient.spec.js +0 -102
  256. package/lib/module/httpClient.spec.js.map +0 -1
  257. package/lib/module/index.spec.js +0 -301
  258. package/lib/module/index.spec.js.map +0 -1
  259. package/lib/module/iosInterop.spec.js +0 -18
  260. package/lib/module/iosInterop.spec.js.map +0 -1
  261. package/lib/module/native.spec.js +0 -882
  262. package/lib/module/native.spec.js.map +0 -1
  263. package/lib/module/notifyAppReadyInsights.boundary.spec.js +0 -217
  264. package/lib/module/notifyAppReadyInsights.boundary.spec.js.map +0 -1
  265. package/lib/module/notifyAppReadyInsights.js +0 -128
  266. package/lib/module/notifyAppReadyInsights.js.map +0 -1
  267. package/lib/module/notifyAppReadyInsights.spec.js +0 -245
  268. package/lib/module/notifyAppReadyInsights.spec.js.map +0 -1
  269. package/lib/module/notifyAppReadyInsights.test-utils.js +0 -18
  270. package/lib/module/notifyAppReadyInsights.test-utils.js.map +0 -1
  271. package/lib/module/notifyAppReadyInsights.transport.spec.js +0 -116
  272. package/lib/module/notifyAppReadyInsights.transport.spec.js.map +0 -1
  273. package/lib/module/releaseCatalogCache.spec.js +0 -195
  274. package/lib/module/releaseCatalogCache.spec.js.map +0 -1
  275. package/lib/module/releaseCatalogCacheNativeContract.spec.js +0 -64
  276. package/lib/module/releaseCatalogCacheNativeContract.spec.js.map +0 -1
  277. package/lib/module/store.notification.spec.js +0 -77
  278. package/lib/module/store.notification.spec.js.map +0 -1
  279. package/lib/module/store.spec.js +0 -315
  280. package/lib/module/store.spec.js.map +0 -1
  281. package/lib/module/wrap.spec.js +0 -330
  282. package/lib/module/wrap.spec.js.map +0 -1
  283. package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts +0 -13
  284. package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts.map +0 -1
  285. package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts +0 -8
  286. package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts.map +0 -1
  287. package/lib/typescript/module/notifyAppReadyInsights.d.ts +0 -13
  288. package/lib/typescript/module/notifyAppReadyInsights.d.ts.map +0 -1
  289. package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts +0 -8
  290. package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts.map +0 -1
  291. package/src/catalogCacheNative.spec.ts +0 -63
  292. package/src/checkForUpdate.releaseCatalog.spec.ts +0 -612
  293. package/src/httpClient.spec.ts +0 -132
  294. package/src/index.spec.ts +0 -337
  295. package/src/iosInterop.spec.ts +0 -30
  296. package/src/native.spec.ts +0 -945
  297. package/src/notifyAppReadyInsights.boundary.spec.ts +0 -234
  298. package/src/notifyAppReadyInsights.spec.ts +0 -243
  299. package/src/notifyAppReadyInsights.test-utils.ts +0 -31
  300. package/src/notifyAppReadyInsights.transport.spec.ts +0 -130
  301. package/src/notifyAppReadyInsights.ts +0 -194
  302. package/src/releaseCatalogCache.spec.ts +0 -282
  303. package/src/releaseCatalogCacheNativeContract.spec.ts +0 -80
  304. package/src/store.notification.spec.ts +0 -92
  305. package/src/store.spec.ts +0 -372
  306. package/src/wrap.spec.ts +0 -406
@@ -1,330 +0,0 @@
1
- "use strict";
2
-
3
- // @vitest-environment jsdom
4
-
5
- import { cleanup, render, waitFor } from "@testing-library/react";
6
- import { createElement } from "react";
7
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
8
- vi.mock("react-native", () => ({
9
- Platform: {
10
- OS: "ios"
11
- }
12
- }));
13
- const createNotifyReadResult = (result = {
14
- status: "UNCHANGED"
15
- }, insightsEvent = null, pending = false) => ({
16
- insightsEvent,
17
- pending,
18
- result
19
- });
20
- const mocks = vi.hoisted(() => ({
21
- addListener: vi.fn(() => () => {}),
22
- checkForUpdate: vi.fn(),
23
- getAppVersion: vi.fn(() => "1.0.0"),
24
- getBundleId: vi.fn(() => "bundle-id"),
25
- getUpdateId: vi.fn(() => "release-id"),
26
- getChannel: vi.fn(() => "production"),
27
- getCohort: vi.fn(() => "123"),
28
- getFingerprintHash: vi.fn(() => "fingerprint-hash"),
29
- getInstallId: vi.fn(() => "install-id"),
30
- getPersistedUserIdentity: vi.fn(() => ({})),
31
- readNotifyAppReady: vi.fn(() => createNotifyReadResult()),
32
- reload: vi.fn()
33
- }));
34
- vi.mock("./checkForUpdate", () => ({
35
- checkForUpdate: mocks.checkForUpdate
36
- }));
37
- vi.mock("./native", () => ({
38
- addListener: mocks.addListener,
39
- getAppVersion: mocks.getAppVersion,
40
- getBundleId: mocks.getBundleId,
41
- getUpdateId: mocks.getUpdateId,
42
- getChannel: mocks.getChannel,
43
- getCohort: mocks.getCohort,
44
- getFingerprintHash: mocks.getFingerprintHash,
45
- getInstallId: mocks.getInstallId,
46
- getPersistedUserIdentity: mocks.getPersistedUserIdentity,
47
- readNotifyAppReady: mocks.readNotifyAppReady,
48
- reload: mocks.reload
49
- }));
50
- const createClient = (sendInsightsEvent = vi.fn().mockResolvedValue(undefined)) => ({
51
- client: {
52
- createSession: vi.fn(async () => ({
53
- fetchReleaseCatalog: vi.fn(),
54
- resolveArtifact: vi.fn(),
55
- sendInsightsEvent
56
- }))
57
- },
58
- sendInsightsEvent
59
- });
60
- describe("HotUpdater wrap initialization", () => {
61
- beforeEach(() => {
62
- vi.resetModules();
63
- vi.unstubAllGlobals();
64
- vi.useRealTimers();
65
- for (const mock of Object.values(mocks)) {
66
- mock.mockReset();
67
- }
68
- mocks.checkForUpdate.mockResolvedValue(null);
69
- mocks.addListener.mockReturnValue(() => {});
70
- mocks.getAppVersion.mockReturnValue("1.0.0");
71
- mocks.getPersistedUserIdentity.mockReturnValue({});
72
- mocks.getBundleId.mockReturnValue("bundle-id");
73
- mocks.getUpdateId.mockReturnValue("release-id");
74
- mocks.getChannel.mockReturnValue("production");
75
- mocks.getCohort.mockReturnValue("123");
76
- mocks.getFingerprintHash.mockReturnValue("fingerprint-hash");
77
- mocks.getInstallId.mockReturnValue("install-id");
78
- mocks.readNotifyAppReady.mockReturnValue(createNotifyReadResult());
79
- });
80
- afterEach(cleanup);
81
- it("reports the console ID when up to date while retaining file IDs in insights", async () => {
82
- const onUpdateProcessCompleted = vi.fn();
83
- const {
84
- client,
85
- sendInsightsEvent
86
- } = createClient();
87
- const {
88
- wrap
89
- } = await import("./wrap");
90
- const WrappedComponent = wrap({
91
- insights: true,
92
- client,
93
- onUpdateProcessCompleted,
94
- updateStrategy: "appVersion"
95
- })(() => null);
96
- render(/*#__PURE__*/createElement(WrappedComponent));
97
- await waitFor(() => expect(onUpdateProcessCompleted).toHaveBeenCalledWith({
98
- id: "release-id",
99
- message: null,
100
- shouldForceUpdate: false,
101
- status: "UP_TO_DATE"
102
- }));
103
- await waitFor(() => expect(sendInsightsEvent).toHaveBeenCalledWith(expect.objectContaining({
104
- toBundleId: "bundle-id",
105
- type: "UNCHANGED"
106
- })));
107
- });
108
- it("returns void from init and defers notifyAppReady to the next frame", async () => {
109
- vi.useFakeTimers();
110
- const requestAnimationFrame = vi.fn(callback => {
111
- setTimeout(() => callback(0), 0);
112
- return 1;
113
- });
114
- vi.stubGlobal("requestAnimationFrame", requestAnimationFrame);
115
- const {
116
- client,
117
- sendInsightsEvent
118
- } = createClient();
119
- const {
120
- init
121
- } = await import("./wrap");
122
- const result = init({
123
- client,
124
- requestHeaders: {
125
- Authorization: "Bearer token"
126
- },
127
- requestTimeout: 1000
128
- });
129
- expect(result).toBeUndefined();
130
- expect(mocks.readNotifyAppReady).not.toHaveBeenCalled();
131
- expect(sendInsightsEvent).not.toHaveBeenCalled();
132
- expect(requestAnimationFrame).toHaveBeenCalled();
133
- await vi.runOnlyPendingTimersAsync();
134
- expect(mocks.readNotifyAppReady).toHaveBeenCalledWith();
135
- expect(sendInsightsEvent).not.toHaveBeenCalled();
136
- });
137
- it("waits for native launch verification before sending insights", async () => {
138
- vi.useFakeTimers();
139
- vi.stubGlobal("requestAnimationFrame", vi.fn(callback => {
140
- setTimeout(() => callback(0), 0);
141
- return 1;
142
- }));
143
- mocks.readNotifyAppReady.mockReturnValueOnce(createNotifyReadResult(undefined, null, true)).mockReturnValueOnce(createNotifyReadResult({
144
- fromBundleId: "bundle-a",
145
- status: "UPDATE_APPLIED",
146
- toBundleId: "bundle-b"
147
- }, {
148
- fromBundleId: "bundle-a",
149
- toBundleId: "bundle-b",
150
- type: "UPDATE_APPLIED",
151
- updateStrategy: "appVersion"
152
- }));
153
- const {
154
- client,
155
- sendInsightsEvent
156
- } = createClient();
157
- const {
158
- init
159
- } = await import("./wrap");
160
- init({
161
- insights: true,
162
- client
163
- });
164
- await vi.runAllTimersAsync();
165
- expect(mocks.readNotifyAppReady).toHaveBeenCalledTimes(2);
166
- expect(sendInsightsEvent).toHaveBeenCalledTimes(1);
167
- });
168
- it("sends automatic insights only from init when enabled", async () => {
169
- vi.useFakeTimers();
170
- vi.stubGlobal("requestAnimationFrame", vi.fn(callback => {
171
- setTimeout(() => callback(0), 0);
172
- return 1;
173
- }));
174
- mocks.readNotifyAppReady.mockReturnValue(createNotifyReadResult({
175
- fromBundleId: "bundle-a",
176
- status: "UPDATE_APPLIED",
177
- toBundleId: "bundle-b"
178
- }, {
179
- fromBundleId: "bundle-a",
180
- toBundleId: "bundle-b",
181
- type: "UPDATE_APPLIED",
182
- updateStrategy: "fingerprint"
183
- }));
184
- mocks.getPersistedUserIdentity.mockReturnValue({
185
- userId: "user-123",
186
- username: "alice"
187
- });
188
- const {
189
- client,
190
- sendInsightsEvent
191
- } = createClient();
192
- const {
193
- init
194
- } = await import("./wrap");
195
- init({
196
- insights: true,
197
- requestHeaders: {
198
- Authorization: "Bearer token"
199
- },
200
- requestTimeout: 1000,
201
- client
202
- });
203
- await vi.runOnlyPendingTimersAsync();
204
- expect(sendInsightsEvent).toHaveBeenCalledWith({
205
- appVersion: "1.0.0",
206
- channel: "production",
207
- cohort: "123",
208
- fingerprintHash: "fingerprint-hash",
209
- fromBundleId: "bundle-a",
210
- fromReleaseId: null,
211
- installId: "install-id",
212
- platform: "ios",
213
- requestHeaders: {
214
- Authorization: "Bearer token"
215
- },
216
- requestTimeout: 1000,
217
- toBundleId: "bundle-b",
218
- toReleaseId: null,
219
- type: "UPDATE_APPLIED",
220
- updateStrategy: "fingerprint",
221
- userId: "user-123",
222
- username: "alice"
223
- });
224
- });
225
- it("guards automatic insights to a single delivery attempt per runtime", async () => {
226
- vi.useFakeTimers();
227
- vi.stubGlobal("requestAnimationFrame", vi.fn(callback => {
228
- setTimeout(() => callback(0), 0);
229
- return 1;
230
- }));
231
- mocks.readNotifyAppReady.mockReturnValue(createNotifyReadResult({
232
- fromBundleId: "bundle-a",
233
- status: "RECOVERED",
234
- toBundleId: "bundle-b"
235
- }, {
236
- fromBundleId: "bundle-a",
237
- toBundleId: "bundle-b",
238
- type: "RECOVERED",
239
- updateStrategy: "appVersion"
240
- }));
241
- const {
242
- client,
243
- sendInsightsEvent
244
- } = createClient();
245
- const {
246
- init
247
- } = await import("./wrap");
248
- init({
249
- insights: true,
250
- client
251
- });
252
- init({
253
- insights: true,
254
- client
255
- });
256
- await vi.runOnlyPendingTimersAsync();
257
- expect(sendInsightsEvent).toHaveBeenCalledTimes(1);
258
- });
259
- it("warns without interrupting app readiness when insights transport fails", async () => {
260
- vi.useFakeTimers();
261
- const warn = vi.spyOn(console, "warn").mockImplementation(() => {});
262
- const error = new Error("Expected HTTP 204 from /events, received 404");
263
- const onError = vi.fn();
264
- const onNotifyAppReady = vi.fn();
265
- vi.stubGlobal("requestAnimationFrame", vi.fn(callback => {
266
- setTimeout(() => callback(0), 0);
267
- return 1;
268
- }));
269
- mocks.readNotifyAppReady.mockReturnValue(createNotifyReadResult({
270
- fromBundleId: "bundle-a",
271
- status: "UPDATE_APPLIED",
272
- toBundleId: "bundle-b"
273
- }, {
274
- fromBundleId: "bundle-a",
275
- toBundleId: "bundle-b",
276
- type: "UPDATE_APPLIED",
277
- updateStrategy: "appVersion"
278
- }));
279
- const {
280
- client
281
- } = createClient(vi.fn().mockRejectedValue(error));
282
- const {
283
- init
284
- } = await import("./wrap");
285
- init({
286
- insights: true,
287
- onError,
288
- onNotifyAppReady,
289
- client
290
- });
291
- await vi.runOnlyPendingTimersAsync();
292
- expect(onError).not.toHaveBeenCalled();
293
- expect(warn).toHaveBeenCalledWith("[HotUpdater] Automatic notifyAppReady insights failed:", error);
294
- expect(onNotifyAppReady).toHaveBeenCalledWith({
295
- fromBundleId: "bundle-a",
296
- status: "UPDATE_APPLIED",
297
- toBundleId: "bundle-b"
298
- });
299
- warn.mockRestore();
300
- });
301
- it("does not accept a manual wrap HOC", async () => {
302
- const {
303
- wrap
304
- } = await import("./wrap");
305
- wrap({
306
- client: createClient().client,
307
- updateStrategy: "appVersion"
308
- });
309
- });
310
- it("preserves wrapped component prop inference", async () => {
311
- const {
312
- wrap
313
- } = await import("./wrap");
314
- const Component = () => null;
315
- const WrappedComponent = wrap({
316
- client: createClient().client,
317
- updateStrategy: "appVersion"
318
- })(Component);
319
- const acceptsTitleProps = WrappedComponent;
320
- expect(acceptsTitleProps).toBe(WrappedComponent);
321
- });
322
- it("types public wrap options as automatic mode by default", () => {
323
- const autoOptions = {
324
- baseURL: "https://updates.example.com",
325
- updateStrategy: "appVersion"
326
- };
327
- expect(autoOptions.updateStrategy).toBe("appVersion");
328
- });
329
- });
330
- //# sourceMappingURL=wrap.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["cleanup","render","waitFor","createElement","afterEach","beforeEach","describe","expect","it","vi","mock","Platform","OS","createNotifyReadResult","result","status","insightsEvent","pending","mocks","hoisted","addListener","fn","checkForUpdate","getAppVersion","getBundleId","getUpdateId","getChannel","getCohort","getFingerprintHash","getInstallId","getPersistedUserIdentity","readNotifyAppReady","reload","createClient","sendInsightsEvent","mockResolvedValue","undefined","client","createSession","fetchReleaseCatalog","resolveArtifact","resetModules","unstubAllGlobals","useRealTimers","Object","values","mockReset","mockReturnValue","onUpdateProcessCompleted","wrap","WrappedComponent","insights","updateStrategy","toHaveBeenCalledWith","id","message","shouldForceUpdate","objectContaining","toBundleId","type","useFakeTimers","requestAnimationFrame","callback","setTimeout","stubGlobal","init","requestHeaders","Authorization","requestTimeout","toBeUndefined","not","toHaveBeenCalled","runOnlyPendingTimersAsync","mockReturnValueOnce","fromBundleId","runAllTimersAsync","toHaveBeenCalledTimes","userId","username","appVersion","channel","cohort","fingerprintHash","fromReleaseId","installId","platform","toReleaseId","warn","spyOn","console","mockImplementation","error","Error","onError","onNotifyAppReady","mockRejectedValue","mockRestore","Component","acceptsTitleProps","toBe","autoOptions","baseURL"],"sourceRoot":"../../src","sources":["wrap.spec.ts"],"mappings":"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","ignoreList":[]}
@@ -1,13 +0,0 @@
1
- import type { HotUpdaterError } from "./error";
2
- import type { HotUpdaterHttpClient } from "./httpClient";
3
- import { type NotifyAppReadyResult } from "./native";
4
- export type NotifyAppReadyOptions = {
5
- insights?: boolean;
6
- client: HotUpdaterHttpClient;
7
- requestHeaders?: Record<string, string>;
8
- requestTimeout?: number;
9
- onNotifyAppReady?: (result: NotifyAppReadyResult) => void;
10
- onError?: (error: HotUpdaterError | Error | unknown) => void;
11
- };
12
- export declare const handleNotifyAppReady: (options: NotifyAppReadyOptions) => Promise<void>;
13
- //# sourceMappingURL=notifyAppReadyInsights.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifyAppReadyInsights.d.ts","sourceRoot":"","sources":["../../../src/notifyAppReadyInsights.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAuB,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EASL,KAAK,oBAAoB,EAE1B,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;CAC9D,CAAC;AA4IF,eAAO,MAAM,oBAAoB,YACtB,qBAAqB,KAC7B,OAAO,CAAC,IAAI,CA2Bd,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { NotifyAppReadyInsightsEvent, NotifyAppReadyResult } from "./native";
2
- export declare const createNotifyReadResult: (result?: NotifyAppReadyResult, insightsEvent?: NotifyAppReadyInsightsEvent | null, pending?: boolean) => {
3
- insightsEvent: NotifyAppReadyInsightsEvent | null;
4
- pending: boolean;
5
- result: NotifyAppReadyResult;
6
- };
7
- export declare const stubNotifyFrame: () => void;
8
- //# sourceMappingURL=notifyAppReadyInsights.test-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifyAppReadyInsights.test-utils.d.ts","sourceRoot":"","sources":["../../../src/notifyAppReadyInsights.test-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,sBAAsB,YACzB,oBAAoB,kBACb,2BAA2B,GAAG,IAAI,wBAEhD;IACD,aAAa,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;CAK7B,CAAC;AAEH,eAAO,MAAM,eAAe,YAS3B,CAAC"}
@@ -1,13 +0,0 @@
1
- import type { HotUpdaterError } from "./error";
2
- import type { HotUpdaterHttpClient } from "./httpClient";
3
- import { type NotifyAppReadyResult } from "./native";
4
- export type NotifyAppReadyOptions = {
5
- insights?: boolean;
6
- client: HotUpdaterHttpClient;
7
- requestHeaders?: Record<string, string>;
8
- requestTimeout?: number;
9
- onNotifyAppReady?: (result: NotifyAppReadyResult) => void;
10
- onError?: (error: HotUpdaterError | Error | unknown) => void;
11
- };
12
- export declare const handleNotifyAppReady: (options: NotifyAppReadyOptions) => Promise<void>;
13
- //# sourceMappingURL=notifyAppReadyInsights.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifyAppReadyInsights.d.ts","sourceRoot":"","sources":["../../../src/notifyAppReadyInsights.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAuB,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EASL,KAAK,oBAAoB,EAE1B,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;CAC9D,CAAC;AA4IF,eAAO,MAAM,oBAAoB,YACtB,qBAAqB,KAC7B,OAAO,CAAC,IAAI,CA2Bd,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { NotifyAppReadyInsightsEvent, NotifyAppReadyResult } from "./native";
2
- export declare const createNotifyReadResult: (result?: NotifyAppReadyResult, insightsEvent?: NotifyAppReadyInsightsEvent | null, pending?: boolean) => {
3
- insightsEvent: NotifyAppReadyInsightsEvent | null;
4
- pending: boolean;
5
- result: NotifyAppReadyResult;
6
- };
7
- export declare const stubNotifyFrame: () => void;
8
- //# sourceMappingURL=notifyAppReadyInsights.test-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifyAppReadyInsights.test-utils.d.ts","sourceRoot":"","sources":["../../../src/notifyAppReadyInsights.test-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,sBAAsB,YACzB,oBAAoB,kBACb,2BAA2B,GAAG,IAAI,wBAEhD;IACD,aAAa,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;CAK7B,CAAC;AAEH,eAAO,MAAM,eAAe,YAS3B,CAAC"}
@@ -1,63 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from "vitest";
2
-
3
- const nativeModule = vi.hoisted(
4
- () => ({}) as Record<string, ReturnType<typeof vi.fn>>,
5
- );
6
-
7
- vi.mock("./specs/NativeHotUpdater", () => ({ default: nativeModule }));
8
-
9
- import {
10
- readNativeReleaseCatalogCache,
11
- removeNativeReleaseCatalogCache,
12
- writeNativeReleaseCatalogCache,
13
- } from "./catalogCacheNative";
14
-
15
- describe("Release Catalog native cache", () => {
16
- beforeEach(() => {
17
- for (const key of Object.keys(nativeModule)) delete nativeModule[key];
18
- });
19
-
20
- it("fails fast when the v1 native cache API is missing", async () => {
21
- await expect(readNativeReleaseCatalogCache("partition")).rejects.toThrow(
22
- "Native module is missing 'getReleaseCatalogCache()'. Rebuild the native app before using Release catalogs.",
23
- );
24
- await expect(
25
- writeNativeReleaseCatalogCache("partition", "payload"),
26
- ).rejects.toThrow(
27
- "Native module is missing 'setReleaseCatalogCache()'. Rebuild the native app before using Release catalogs.",
28
- );
29
- await expect(removeNativeReleaseCatalogCache("partition")).rejects.toThrow(
30
- "Native module is missing 'removeReleaseCatalogCache()'. Rebuild the native app before using Release catalogs.",
31
- );
32
- });
33
-
34
- it("normalizes an undefined iOS TurboModule cache miss to null", async () => {
35
- nativeModule.getReleaseCatalogCache = vi.fn().mockResolvedValue(undefined);
36
-
37
- await expect(
38
- readNativeReleaseCatalogCache("partition"),
39
- ).resolves.toBeNull();
40
- });
41
-
42
- it("treats native cache I/O failures as misses without hiding network work", async () => {
43
- nativeModule.getReleaseCatalogCache = vi
44
- .fn()
45
- .mockRejectedValue(new Error("read"));
46
- nativeModule.setReleaseCatalogCache = vi
47
- .fn()
48
- .mockRejectedValue(new Error("write"));
49
- nativeModule.removeReleaseCatalogCache = vi
50
- .fn()
51
- .mockRejectedValue(new Error("remove"));
52
-
53
- await expect(
54
- readNativeReleaseCatalogCache("partition"),
55
- ).resolves.toBeNull();
56
- await expect(
57
- writeNativeReleaseCatalogCache("partition", "payload"),
58
- ).resolves.toBe(false);
59
- await expect(
60
- removeNativeReleaseCatalogCache("partition"),
61
- ).resolves.toBeUndefined();
62
- });
63
- });