@hot-updater/react-native 1.0.0-rc.16 → 1.0.0-rc.17

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 (316) hide show
  1. package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +491 -388
  2. package/android/src/main/java/com/hotupdater/BundleMetadata.kt +5 -11
  3. package/android/src/main/java/com/hotupdater/FileManagerService.kt +45 -0
  4. package/android/src/main/java/com/hotupdater/HotUpdaterException.kt +290 -12
  5. package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +35 -19
  6. package/android/src/main/java/com/hotupdater/InstallIdentityService.kt +37 -0
  7. package/android/src/main/java/com/hotupdater/KeyValueStorageService.kt +86 -0
  8. package/android/src/main/java/com/hotupdater/NetworkState.kt +31 -0
  9. package/android/src/main/java/com/hotupdater/NoBackupStorage.kt +17 -0
  10. package/android/src/main/java/com/hotupdater/OkHttpDownloadService.kt +110 -52
  11. package/android/src/main/java/com/hotupdater/PreviousProcessExit.kt +89 -0
  12. package/android/src/main/java/com/hotupdater/ReactNativeValueConverters.kt +34 -0
  13. package/android/src/newarch/HotUpdaterModule.kt +74 -69
  14. package/android/src/oldarch/HotUpdaterModule.kt +63 -59
  15. package/android/src/oldarch/HotUpdaterSpec.kt +4 -6
  16. package/android/src/test/java/com/hotupdater/BsdiffPatchTest.kt +1 -1
  17. package/android/src/test/java/com/hotupdater/BundleFileStorageServiceTest.kt +446 -61
  18. package/android/src/test/java/com/hotupdater/HotUpdaterExceptionTest.kt +220 -0
  19. package/android/src/test/java/com/hotupdater/HotUpdaterImplTest.kt +19 -27
  20. package/android/src/test/java/com/hotupdater/InstallIdentityServiceTest.kt +71 -0
  21. package/android/src/test/java/com/hotupdater/KeyValueStorageServiceTest.kt +106 -0
  22. package/android/src/test/java/com/hotupdater/NoBackupContext.kt +11 -0
  23. package/android/src/test/java/com/hotupdater/OkHttpDownloadServiceTest.kt +309 -23
  24. package/android/src/test/java/com/hotupdater/PreviousProcessExitTest.kt +57 -0
  25. package/ios/HotUpdater/Internal/BundleFileStorageService.swift +238 -157
  26. package/ios/HotUpdater/Internal/BundleMetadata.swift +3 -53
  27. package/ios/HotUpdater/Internal/FileManagerService.swift +48 -0
  28. package/ios/HotUpdater/Internal/HotUpdater.mm +8 -18
  29. package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +48 -29
  30. package/ios/HotUpdater/Internal/KeyValueStorageService.swift +71 -0
  31. package/ios/HotUpdater/Internal/URLSessionDownloadService.swift +108 -1
  32. package/ios/HotUpdater/Internal/UpdateFailure.swift +390 -0
  33. package/lib/commonjs/appReady.js +111 -0
  34. package/lib/commonjs/appReady.js.map +1 -0
  35. package/lib/commonjs/appReady.spec.js +360 -0
  36. package/lib/commonjs/appReady.spec.js.map +1 -0
  37. package/lib/commonjs/{notifyAppReadyInsights.test-utils.js → appReady.test-utils.js} +4 -3
  38. package/lib/commonjs/appReady.test-utils.js.map +1 -0
  39. package/lib/commonjs/baseURL.js +16 -0
  40. package/lib/commonjs/baseURL.js.map +1 -0
  41. package/lib/commonjs/checkForUpdate.js +104 -56
  42. package/lib/commonjs/checkForUpdate.js.map +1 -1
  43. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js +337 -74
  44. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js.map +1 -1
  45. package/lib/commonjs/clientPlugin.js +49 -0
  46. package/lib/commonjs/clientPlugin.js.map +1 -0
  47. package/lib/commonjs/entryImportGraph.spec.js +50 -0
  48. package/lib/commonjs/entryImportGraph.spec.js.map +1 -0
  49. package/lib/commonjs/fetchJSON.js +2 -6
  50. package/lib/commonjs/fetchJSON.js.map +1 -1
  51. package/lib/commonjs/httpClient.js +18 -165
  52. package/lib/commonjs/httpClient.js.map +1 -1
  53. package/lib/commonjs/httpClient.spec.js +26 -199
  54. package/lib/commonjs/httpClient.spec.js.map +1 -1
  55. package/lib/commonjs/index.js +49 -36
  56. package/lib/commonjs/index.js.map +1 -1
  57. package/lib/commonjs/index.spec.js +108 -123
  58. package/lib/commonjs/index.spec.js.map +1 -1
  59. package/lib/commonjs/native.js +67 -48
  60. package/lib/commonjs/native.js.map +1 -1
  61. package/lib/commonjs/native.spec.js +80 -58
  62. package/lib/commonjs/native.spec.js.map +1 -1
  63. package/lib/commonjs/pluginHost.js +208 -0
  64. package/lib/commonjs/pluginHost.js.map +1 -0
  65. package/lib/commonjs/pluginHost.spec.js +292 -0
  66. package/lib/commonjs/pluginHost.spec.js.map +1 -0
  67. package/lib/commonjs/plugins/insights/eventId.js +129 -0
  68. package/lib/commonjs/plugins/insights/eventId.js.map +1 -0
  69. package/lib/commonjs/plugins/insights/eventId.spec.js +47 -0
  70. package/lib/commonjs/plugins/insights/eventId.spec.js.map +1 -0
  71. package/lib/commonjs/plugins/insights/index.js +272 -0
  72. package/lib/commonjs/plugins/insights/index.js.map +1 -0
  73. package/lib/commonjs/plugins/insights/insights.spec.js +640 -0
  74. package/lib/commonjs/plugins/insights/insights.spec.js.map +1 -0
  75. package/lib/commonjs/plugins/insights/sender.js +128 -0
  76. package/lib/commonjs/plugins/insights/sender.js.map +1 -0
  77. package/lib/commonjs/plugins/insights/sender.spec.js +265 -0
  78. package/lib/commonjs/plugins/insights/sender.spec.js.map +1 -0
  79. package/lib/commonjs/plugins/insights/state.js +145 -0
  80. package/lib/commonjs/plugins/insights/state.js.map +1 -0
  81. package/lib/commonjs/releaseCatalogCache.js +13 -2
  82. package/lib/commonjs/releaseCatalogCache.js.map +1 -1
  83. package/lib/commonjs/releaseCatalogCache.spec.js +18 -0
  84. package/lib/commonjs/releaseCatalogCache.spec.js.map +1 -1
  85. package/lib/commonjs/sdkVersion.js +1 -1
  86. package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
  87. package/lib/commonjs/updateError.js +132 -0
  88. package/lib/commonjs/updateError.js.map +1 -0
  89. package/lib/commonjs/updateError.spec.js +149 -0
  90. package/lib/commonjs/updateError.spec.js.map +1 -0
  91. package/lib/commonjs/wrap.js +43 -25
  92. package/lib/commonjs/wrap.js.map +1 -1
  93. package/lib/commonjs/wrap.progress.spec.js +195 -0
  94. package/lib/commonjs/wrap.progress.spec.js.map +1 -0
  95. package/lib/commonjs/wrap.spec.js +94 -230
  96. package/lib/commonjs/wrap.spec.js.map +1 -1
  97. package/lib/module/appReady.js +103 -0
  98. package/lib/module/appReady.js.map +1 -0
  99. package/lib/module/appReady.spec.js +359 -0
  100. package/lib/module/appReady.spec.js.map +1 -0
  101. package/lib/module/{notifyAppReadyInsights.test-utils.js → appReady.test-utils.js} +4 -3
  102. package/lib/module/appReady.test-utils.js.map +1 -0
  103. package/lib/module/baseURL.js +11 -0
  104. package/lib/module/baseURL.js.map +1 -0
  105. package/lib/module/checkForUpdate.js +103 -57
  106. package/lib/module/checkForUpdate.js.map +1 -1
  107. package/lib/module/checkForUpdate.releaseCatalog.spec.js +337 -74
  108. package/lib/module/checkForUpdate.releaseCatalog.spec.js.map +1 -1
  109. package/lib/module/clientPlugin.js +44 -0
  110. package/lib/module/clientPlugin.js.map +1 -0
  111. package/lib/module/entryImportGraph.spec.js +50 -0
  112. package/lib/module/entryImportGraph.spec.js.map +1 -0
  113. package/lib/module/fetchJSON.js +2 -6
  114. package/lib/module/fetchJSON.js.map +1 -1
  115. package/lib/module/httpClient.js +18 -165
  116. package/lib/module/httpClient.js.map +1 -1
  117. package/lib/module/httpClient.spec.js +27 -200
  118. package/lib/module/httpClient.spec.js.map +1 -1
  119. package/lib/module/index.js +44 -38
  120. package/lib/module/index.js.map +1 -1
  121. package/lib/module/index.spec.js +108 -123
  122. package/lib/module/index.spec.js.map +1 -1
  123. package/lib/module/native.js +63 -44
  124. package/lib/module/native.js.map +1 -1
  125. package/lib/module/native.spec.js +80 -58
  126. package/lib/module/native.spec.js.map +1 -1
  127. package/lib/module/pluginHost.js +200 -0
  128. package/lib/module/pluginHost.js.map +1 -0
  129. package/lib/module/pluginHost.spec.js +291 -0
  130. package/lib/module/pluginHost.spec.js.map +1 -0
  131. package/lib/module/plugins/insights/eventId.js +122 -0
  132. package/lib/module/plugins/insights/eventId.js.map +1 -0
  133. package/lib/module/plugins/insights/eventId.spec.js +47 -0
  134. package/lib/module/plugins/insights/eventId.spec.js.map +1 -0
  135. package/lib/module/plugins/insights/index.js +268 -0
  136. package/lib/module/plugins/insights/index.js.map +1 -0
  137. package/lib/module/plugins/insights/insights.spec.js +639 -0
  138. package/lib/module/plugins/insights/insights.spec.js.map +1 -0
  139. package/lib/module/plugins/insights/sender.js +123 -0
  140. package/lib/module/plugins/insights/sender.js.map +1 -0
  141. package/lib/module/plugins/insights/sender.spec.js +265 -0
  142. package/lib/module/plugins/insights/sender.spec.js.map +1 -0
  143. package/lib/module/plugins/insights/state.js +139 -0
  144. package/lib/module/plugins/insights/state.js.map +1 -0
  145. package/lib/module/releaseCatalogCache.js +13 -2
  146. package/lib/module/releaseCatalogCache.js.map +1 -1
  147. package/lib/module/releaseCatalogCache.spec.js +18 -0
  148. package/lib/module/releaseCatalogCache.spec.js.map +1 -1
  149. package/lib/module/sdkVersion.js +1 -1
  150. package/lib/module/specs/NativeHotUpdater.js.map +1 -1
  151. package/lib/module/updateError.js +126 -0
  152. package/lib/module/updateError.js.map +1 -0
  153. package/lib/module/updateError.spec.js +149 -0
  154. package/lib/module/updateError.spec.js.map +1 -0
  155. package/lib/module/wrap.js +43 -25
  156. package/lib/module/wrap.js.map +1 -1
  157. package/lib/module/wrap.progress.spec.js +196 -0
  158. package/lib/module/wrap.progress.spec.js.map +1 -0
  159. package/lib/module/wrap.spec.js +93 -229
  160. package/lib/module/wrap.spec.js.map +1 -1
  161. package/lib/typescript/commonjs/appReady.d.ts +23 -0
  162. package/lib/typescript/commonjs/appReady.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/appReady.test-utils.d.ts +9 -0
  164. package/lib/typescript/commonjs/appReady.test-utils.d.ts.map +1 -0
  165. package/lib/typescript/commonjs/baseURL.d.ts +4 -0
  166. package/lib/typescript/commonjs/baseURL.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/checkForUpdate.d.ts +15 -2
  168. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  169. package/lib/typescript/commonjs/clientPlugin.d.ts +185 -0
  170. package/lib/typescript/commonjs/clientPlugin.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/fetchJSON.d.ts +2 -3
  172. package/lib/typescript/commonjs/fetchJSON.d.ts.map +1 -1
  173. package/lib/typescript/commonjs/httpClient.d.ts +2 -36
  174. package/lib/typescript/commonjs/httpClient.d.ts.map +1 -1
  175. package/lib/typescript/commonjs/index.d.ts +3 -6
  176. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  177. package/lib/typescript/commonjs/native.d.ts +29 -15
  178. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  179. package/lib/typescript/commonjs/pluginHost.d.ts +29 -0
  180. package/lib/typescript/commonjs/pluginHost.d.ts.map +1 -0
  181. package/lib/typescript/commonjs/plugins/insights/eventId.d.ts +18 -0
  182. package/lib/typescript/commonjs/plugins/insights/eventId.d.ts.map +1 -0
  183. package/lib/typescript/commonjs/plugins/insights/index.d.ts +40 -0
  184. package/lib/typescript/commonjs/plugins/insights/index.d.ts.map +1 -0
  185. package/lib/typescript/commonjs/plugins/insights/sender.d.ts +74 -0
  186. package/lib/typescript/commonjs/plugins/insights/sender.d.ts.map +1 -0
  187. package/lib/typescript/commonjs/plugins/insights/state.d.ts +46 -0
  188. package/lib/typescript/commonjs/plugins/insights/state.d.ts.map +1 -0
  189. package/lib/typescript/commonjs/releaseCatalogCache.d.ts +5 -1
  190. package/lib/typescript/commonjs/releaseCatalogCache.d.ts.map +1 -1
  191. package/lib/typescript/commonjs/sdkVersion.d.ts +1 -1
  192. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +34 -12
  193. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
  194. package/lib/typescript/commonjs/updateError.d.ts +26 -0
  195. package/lib/typescript/commonjs/updateError.d.ts.map +1 -0
  196. package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
  197. package/lib/typescript/commonjs/wrap.types.d.ts +6 -10
  198. package/lib/typescript/commonjs/wrap.types.d.ts.map +1 -1
  199. package/lib/typescript/module/appReady.d.ts +23 -0
  200. package/lib/typescript/module/appReady.d.ts.map +1 -0
  201. package/lib/typescript/module/appReady.test-utils.d.ts +9 -0
  202. package/lib/typescript/module/appReady.test-utils.d.ts.map +1 -0
  203. package/lib/typescript/module/baseURL.d.ts +4 -0
  204. package/lib/typescript/module/baseURL.d.ts.map +1 -0
  205. package/lib/typescript/module/checkForUpdate.d.ts +15 -2
  206. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  207. package/lib/typescript/module/clientPlugin.d.ts +185 -0
  208. package/lib/typescript/module/clientPlugin.d.ts.map +1 -0
  209. package/lib/typescript/module/fetchJSON.d.ts +2 -3
  210. package/lib/typescript/module/fetchJSON.d.ts.map +1 -1
  211. package/lib/typescript/module/httpClient.d.ts +2 -36
  212. package/lib/typescript/module/httpClient.d.ts.map +1 -1
  213. package/lib/typescript/module/index.d.ts +3 -6
  214. package/lib/typescript/module/index.d.ts.map +1 -1
  215. package/lib/typescript/module/native.d.ts +29 -15
  216. package/lib/typescript/module/native.d.ts.map +1 -1
  217. package/lib/typescript/module/pluginHost.d.ts +29 -0
  218. package/lib/typescript/module/pluginHost.d.ts.map +1 -0
  219. package/lib/typescript/module/plugins/insights/eventId.d.ts +18 -0
  220. package/lib/typescript/module/plugins/insights/eventId.d.ts.map +1 -0
  221. package/lib/typescript/module/plugins/insights/index.d.ts +40 -0
  222. package/lib/typescript/module/plugins/insights/index.d.ts.map +1 -0
  223. package/lib/typescript/module/plugins/insights/sender.d.ts +74 -0
  224. package/lib/typescript/module/plugins/insights/sender.d.ts.map +1 -0
  225. package/lib/typescript/module/plugins/insights/state.d.ts +46 -0
  226. package/lib/typescript/module/plugins/insights/state.d.ts.map +1 -0
  227. package/lib/typescript/module/releaseCatalogCache.d.ts +5 -1
  228. package/lib/typescript/module/releaseCatalogCache.d.ts.map +1 -1
  229. package/lib/typescript/module/sdkVersion.d.ts +1 -1
  230. package/lib/typescript/module/specs/NativeHotUpdater.d.ts +34 -12
  231. package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
  232. package/lib/typescript/module/updateError.d.ts +26 -0
  233. package/lib/typescript/module/updateError.d.ts.map +1 -0
  234. package/lib/typescript/module/wrap.d.ts.map +1 -1
  235. package/lib/typescript/module/wrap.types.d.ts +6 -10
  236. package/lib/typescript/module/wrap.types.d.ts.map +1 -1
  237. package/package.json +14 -2
  238. package/plugins/insights/package.json +8 -0
  239. package/src/appReady.spec.ts +393 -0
  240. package/src/{notifyAppReadyInsights.test-utils.ts → appReady.test-utils.ts} +7 -7
  241. package/src/appReady.ts +149 -0
  242. package/src/baseURL.ts +15 -0
  243. package/src/checkForUpdate.releaseCatalog.spec.ts +370 -76
  244. package/src/checkForUpdate.ts +135 -80
  245. package/src/clientPlugin.ts +231 -0
  246. package/src/entryImportGraph.spec.ts +65 -0
  247. package/src/fetchJSON.ts +3 -10
  248. package/src/httpClient.spec.ts +30 -227
  249. package/src/httpClient.ts +20 -256
  250. package/src/index.spec.ts +117 -93
  251. package/src/index.ts +67 -52
  252. package/src/native.spec.ts +98 -72
  253. package/src/native.ts +93 -77
  254. package/src/pluginHost.spec.ts +297 -0
  255. package/src/pluginHost.ts +262 -0
  256. package/src/plugins/insights/eventId.spec.ts +60 -0
  257. package/src/plugins/insights/eventId.ts +171 -0
  258. package/src/plugins/insights/index.ts +367 -0
  259. package/src/plugins/insights/insights.spec.ts +732 -0
  260. package/src/plugins/insights/sender.spec.ts +287 -0
  261. package/src/plugins/insights/sender.ts +221 -0
  262. package/src/plugins/insights/state.ts +184 -0
  263. package/src/releaseCatalogCache.spec.ts +22 -0
  264. package/src/releaseCatalogCache.ts +19 -4
  265. package/src/sdkVersion.ts +1 -1
  266. package/src/specs/NativeHotUpdater.ts +34 -13
  267. package/src/updateError.spec.ts +144 -0
  268. package/src/updateError.ts +153 -0
  269. package/src/wrap.progress.spec.ts +232 -0
  270. package/src/wrap.spec.ts +100 -283
  271. package/src/wrap.tsx +57 -26
  272. package/src/wrap.types.ts +6 -12
  273. package/lib/commonjs/notifyAppReadyInsights.boundary.spec.js +0 -225
  274. package/lib/commonjs/notifyAppReadyInsights.boundary.spec.js.map +0 -1
  275. package/lib/commonjs/notifyAppReadyInsights.js +0 -188
  276. package/lib/commonjs/notifyAppReadyInsights.js.map +0 -1
  277. package/lib/commonjs/notifyAppReadyInsights.spec.js +0 -378
  278. package/lib/commonjs/notifyAppReadyInsights.spec.js.map +0 -1
  279. package/lib/commonjs/notifyAppReadyInsights.test-utils.js.map +0 -1
  280. package/lib/commonjs/notifyAppReadyInsights.transport.spec.js +0 -171
  281. package/lib/commonjs/notifyAppReadyInsights.transport.spec.js.map +0 -1
  282. package/lib/commonjs/uuidv7.js +0 -41
  283. package/lib/commonjs/uuidv7.js.map +0 -1
  284. package/lib/commonjs/uuidv7.spec.js +0 -30
  285. package/lib/commonjs/uuidv7.spec.js.map +0 -1
  286. package/lib/module/notifyAppReadyInsights.boundary.spec.js +0 -224
  287. package/lib/module/notifyAppReadyInsights.boundary.spec.js.map +0 -1
  288. package/lib/module/notifyAppReadyInsights.js +0 -181
  289. package/lib/module/notifyAppReadyInsights.js.map +0 -1
  290. package/lib/module/notifyAppReadyInsights.spec.js +0 -377
  291. package/lib/module/notifyAppReadyInsights.spec.js.map +0 -1
  292. package/lib/module/notifyAppReadyInsights.test-utils.js.map +0 -1
  293. package/lib/module/notifyAppReadyInsights.transport.spec.js +0 -170
  294. package/lib/module/notifyAppReadyInsights.transport.spec.js.map +0 -1
  295. package/lib/module/uuidv7.js +0 -36
  296. package/lib/module/uuidv7.js.map +0 -1
  297. package/lib/module/uuidv7.spec.js +0 -30
  298. package/lib/module/uuidv7.spec.js.map +0 -1
  299. package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts +0 -25
  300. package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts.map +0 -1
  301. package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts +0 -8
  302. package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts.map +0 -1
  303. package/lib/typescript/commonjs/uuidv7.d.ts +0 -10
  304. package/lib/typescript/commonjs/uuidv7.d.ts.map +0 -1
  305. package/lib/typescript/module/notifyAppReadyInsights.d.ts +0 -25
  306. package/lib/typescript/module/notifyAppReadyInsights.d.ts.map +0 -1
  307. package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts +0 -8
  308. package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts.map +0 -1
  309. package/lib/typescript/module/uuidv7.d.ts +0 -10
  310. package/lib/typescript/module/uuidv7.d.ts.map +0 -1
  311. package/src/notifyAppReadyInsights.boundary.spec.ts +0 -242
  312. package/src/notifyAppReadyInsights.spec.ts +0 -362
  313. package/src/notifyAppReadyInsights.transport.spec.ts +0 -196
  314. package/src/notifyAppReadyInsights.ts +0 -293
  315. package/src/uuidv7.spec.ts +0 -25
  316. package/src/uuidv7.ts +0 -38
@@ -0,0 +1,639 @@
1
+ "use strict";
2
+
3
+ import { isUUIDv7 } from "@hot-updater/core";
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
+ vi.mock("react-native", () => ({
6
+ Platform: {
7
+ OS: "ios"
8
+ }
9
+ }));
10
+ const native = vi.hoisted(() => {
11
+ Reflect.set(globalThis, "HotUpdater", {
12
+ SDK_VERSION: "test-sdk-version"
13
+ });
14
+ const storage = new Map();
15
+ return {
16
+ storage,
17
+ getAppVersion: vi.fn(() => "1.0.0"),
18
+ getBundleId: vi.fn(() => "bundle-a"),
19
+ getChannel: vi.fn(() => "production"),
20
+ getCohort: vi.fn(() => "123"),
21
+ getFingerprintHash: vi.fn(() => "fingerprint-hash"),
22
+ getInstallId: vi.fn(() => "install-id"),
23
+ getStorageItem: vi.fn(key => storage.get(key) ?? null),
24
+ setStorageItem: vi.fn((key, value) => {
25
+ if (value === null) storage.delete(key);else storage.set(key, value);
26
+ })
27
+ };
28
+ });
29
+ vi.mock("../../native", () => native);
30
+ const DAY_MS = 86_400_000;
31
+ const MORNING = Date.UTC(2026, 8, 30, 9);
32
+ let responses = [];
33
+ const fetchMock = vi.fn(async (_url, _init) => {
34
+ const next = responses.shift() ?? 204;
35
+ return typeof next === "number" ? new Response(null, {
36
+ status: next
37
+ }) : next();
38
+ });
39
+ const sentEvents = () => fetchMock.mock.calls.map(([, init]) => JSON.parse(String(init?.body)));
40
+ const sentTypes = () => sentEvents().map(({
41
+ type
42
+ }) => type);
43
+
44
+ /** A server without Insights mounts no `/events`. */
45
+ const disabledResponse = () => new Response(null, {
46
+ status: 404
47
+ });
48
+
49
+ /** Starts a JavaScript runtime with the plugin; native storage persists across launches. */
50
+ const launch = async (options = {}, beforeInit) => {
51
+ vi.resetModules();
52
+ const [{
53
+ configurePlugins,
54
+ emitPluginHook
55
+ }, {
56
+ insights
57
+ }] = await Promise.all([import("../../pluginHost"), import("./index")]);
58
+ const plugin = insights(options);
59
+ beforeInit?.(plugin);
60
+ configurePlugins([plugin], {
61
+ baseURL: "https://updates.example.com/hot-updater",
62
+ requestHeaders: {
63
+ "x-api-key": "client-key"
64
+ }
65
+ });
66
+ const emit = (name, payload) => {
67
+ emitPluginHook(name, () => payload);
68
+ };
69
+ return {
70
+ plugin,
71
+ appReady: result => emit("onAppReady", result),
72
+ updateCheck: result => emit("onUpdateCheck", result),
73
+ downloaded: info => emit("onBundleDownloaded", info),
74
+ updateError: error => emit("onUpdateError", error)
75
+ };
76
+ };
77
+ const unchangedLaunch = (overrides = {}) => ({
78
+ status: "UNCHANGED",
79
+ channel: "production",
80
+ bundleId: "bundle-a",
81
+ releaseId: "release-a",
82
+ previousProcessExit: null,
83
+ ...overrides
84
+ });
85
+ const appliedLaunch = {
86
+ status: "UPDATE_APPLIED",
87
+ channel: "production",
88
+ fromBundleId: "bundle-a",
89
+ fromReleaseId: "release-a",
90
+ toBundleId: "bundle-b",
91
+ toReleaseId: "release-b",
92
+ updateStrategy: "appVersion",
93
+ previousProcessExit: null
94
+ };
95
+ const download = {
96
+ channel: "production",
97
+ fromBundleId: "bundle-a",
98
+ fromReleaseId: "release-a",
99
+ toBundleId: "bundle-b",
100
+ toReleaseId: "release-b",
101
+ updateStrategy: "appVersion",
102
+ delivery: "manifest",
103
+ patchFallback: false
104
+ };
105
+ const downloadFailure = (overrides = {}) => ({
106
+ stage: "download",
107
+ reason: "hash_mismatch",
108
+ targetBundleId: "bundle-b",
109
+ targetReleaseId: "release-b",
110
+ channel: "production",
111
+ bundleId: "bundle-a",
112
+ releaseId: "release-a",
113
+ updateStrategy: "fingerprint",
114
+ cause: new Error("hash mismatch"),
115
+ ...overrides
116
+ });
117
+ const flush = () => vi.runAllTimersAsync();
118
+ describe("insights() client plugin", () => {
119
+ beforeEach(() => {
120
+ vi.useFakeTimers({
121
+ now: MORNING
122
+ });
123
+ vi.spyOn(Math, "random").mockReturnValue(0.5);
124
+ vi.stubGlobal("fetch", fetchMock);
125
+ vi.stubGlobal("__DEV__", false);
126
+ fetchMock.mockClear();
127
+ responses = [];
128
+ native.storage.clear();
129
+ native.getAppVersion.mockReturnValue("1.0.0");
130
+ });
131
+ afterEach(() => {
132
+ vi.useRealTimers();
133
+ vi.unstubAllGlobals();
134
+ vi.restoreAllMocks();
135
+ });
136
+ it("posts a launch as UNCHANGED with the app's identity", async () => {
137
+ const app = await launch();
138
+ app.appReady(unchangedLaunch());
139
+ await flush();
140
+ expect(fetchMock).toHaveBeenCalledOnce();
141
+ const [url, init] = fetchMock.mock.calls[0];
142
+ expect(url).toBe("https://updates.example.com/hot-updater/events");
143
+ expect(new Headers(init?.headers).get("x-api-key")).toBe("client-key");
144
+ const [event] = sentEvents();
145
+ expect(isUUIDv7(event?.eventId)).toBe(true);
146
+ expect(event).toEqual({
147
+ appVersion: "1.0.0",
148
+ channel: "production",
149
+ cohort: "123",
150
+ eventId: event?.eventId,
151
+ fingerprintHash: "fingerprint-hash",
152
+ fromBundleId: null,
153
+ fromReleaseId: null,
154
+ installId: "install-id",
155
+ platform: "ios",
156
+ sdkVersion: "test-sdk-version",
157
+ toBundleId: "bundle-a",
158
+ toReleaseId: "release-a",
159
+ type: "UNCHANGED",
160
+ updateStrategy: null
161
+ });
162
+ });
163
+ describe("daily launch reports", () => {
164
+ it("sends UNCHANGED at most once per UTC day across launches", async () => {
165
+ (await launch()).appReady(unchangedLaunch());
166
+ await flush();
167
+ vi.setSystemTime(Date.UTC(2026, 8, 30, 23, 59));
168
+ (await launch()).appReady(unchangedLaunch());
169
+ await flush();
170
+ expect(fetchMock).toHaveBeenCalledOnce();
171
+ vi.setSystemTime(Date.UTC(2026, 9, 1, 0, 1));
172
+ (await launch()).appReady(unchangedLaunch());
173
+ await flush();
174
+ expect(sentTypes()).toEqual(["UNCHANGED", "UNCHANGED"]);
175
+ });
176
+ it.each([{
177
+ label: "channel",
178
+ change: {
179
+ channel: "beta"
180
+ }
181
+ }, {
182
+ label: "bundle",
183
+ change: {
184
+ bundleId: "bundle-c"
185
+ }
186
+ }, {
187
+ label: "Release",
188
+ change: {
189
+ releaseId: "release-c"
190
+ }
191
+ }])("reports a launch again the same day when its $label changes", async ({
192
+ change
193
+ }) => {
194
+ (await launch()).appReady(unchangedLaunch());
195
+ await flush();
196
+ (await launch()).appReady(unchangedLaunch(change));
197
+ await flush();
198
+ expect(sentTypes()).toEqual(["UNCHANGED", "UNCHANGED"]);
199
+ });
200
+ it("reports a launch again the same day when the app version or user changes", async () => {
201
+ (await launch()).appReady(unchangedLaunch());
202
+ await flush();
203
+ native.getAppVersion.mockReturnValue("1.0.1");
204
+ (await launch()).appReady(unchangedLaunch());
205
+ await flush();
206
+ const app = await launch();
207
+ app.plugin.setUser({
208
+ userId: "user-1"
209
+ });
210
+ app.appReady(unchangedLaunch());
211
+ await flush();
212
+ expect(sentEvents().map(({
213
+ appVersion,
214
+ userId
215
+ }) => [appVersion, userId])).toEqual([["1.0.0", undefined], ["1.0.1", undefined], ["1.0.1", "user-1"]]);
216
+ });
217
+ it("counts a delivered apply as the day's report of its bundle", async () => {
218
+ (await launch()).appReady(appliedLaunch);
219
+ await flush();
220
+ (await launch()).appReady(unchangedLaunch({
221
+ bundleId: "bundle-b",
222
+ releaseId: "release-b"
223
+ }));
224
+ await flush();
225
+ expect(sentTypes()).toEqual(["UPDATE_APPLIED"]);
226
+ });
227
+ it("reports the next launch after a delivered download or failure", async () => {
228
+ const first = await launch();
229
+ first.appReady(unchangedLaunch());
230
+ await flush();
231
+ first.downloaded(download);
232
+ await flush();
233
+ const second = await launch();
234
+ second.appReady(unchangedLaunch());
235
+ await flush();
236
+ second.updateError(downloadFailure());
237
+ await flush();
238
+ (await launch()).appReady(unchangedLaunch());
239
+ await flush();
240
+ expect(sentTypes()).toEqual(["UNCHANGED", "UPDATE_DOWNLOADED", "UNCHANGED", "UPDATE_FAILED", "UNCHANGED"]);
241
+ });
242
+ it("reports the launch again when the server did not store it", async () => {
243
+ responses = [400];
244
+ vi.spyOn(console, "warn").mockImplementation(() => {});
245
+ (await launch()).appReady(unchangedLaunch());
246
+ await flush();
247
+ (await launch()).appReady(unchangedLaunch());
248
+ await flush();
249
+ expect(sentTypes()).toEqual(["UNCHANGED", "UNCHANGED"]);
250
+ });
251
+ it("always sends downloads, applies, and recoveries", async () => {
252
+ const first = await launch();
253
+ first.appReady(unchangedLaunch());
254
+ first.downloaded(download);
255
+ await flush();
256
+ (await launch()).appReady(appliedLaunch);
257
+ (await launch()).appReady({
258
+ ...appliedLaunch,
259
+ status: "RECOVERED",
260
+ fromBundleId: "bundle-b",
261
+ toBundleId: "bundle-a"
262
+ });
263
+ await flush();
264
+ expect(sentTypes()).toEqual(["UNCHANGED", "UPDATE_DOWNLOADED", "UPDATE_APPLIED", "RECOVERED"]);
265
+ });
266
+ it("sends one report when the launch and a no-update check both report", async () => {
267
+ const app = await launch();
268
+ app.appReady(unchangedLaunch());
269
+ app.updateCheck({
270
+ status: "UNCHANGED",
271
+ channel: "production",
272
+ bundleId: "bundle-a",
273
+ releaseId: "release-a",
274
+ previousReleaseId: "release-a"
275
+ });
276
+ await flush();
277
+ expect(sentTypes()).toEqual(["UNCHANGED"]);
278
+ });
279
+ it("reports a same-bundle Release adoption with the Release it replaced", async () => {
280
+ const app = await launch();
281
+ app.appReady(unchangedLaunch());
282
+ await flush();
283
+ app.updateCheck({
284
+ status: "UNCHANGED",
285
+ channel: "production",
286
+ bundleId: "bundle-a",
287
+ releaseId: "release-a2",
288
+ previousReleaseId: "release-a"
289
+ });
290
+ await flush();
291
+ expect(sentEvents()[1]).toMatchObject({
292
+ fromReleaseId: "release-a",
293
+ toBundleId: "bundle-a",
294
+ toReleaseId: "release-a2",
295
+ type: "UNCHANGED"
296
+ });
297
+ });
298
+ it("sends no launch report after a download in the same runtime", async () => {
299
+ const app = await launch();
300
+ app.downloaded(download);
301
+ app.downloaded(download);
302
+ app.updateCheck({
303
+ status: "UNCHANGED",
304
+ channel: "production",
305
+ bundleId: "bundle-b",
306
+ releaseId: "release-b",
307
+ previousReleaseId: "release-b"
308
+ });
309
+ await flush();
310
+ expect(sentTypes()).toEqual(["UPDATE_DOWNLOADED"]);
311
+ });
312
+ });
313
+ describe("when the server runs without Insights", () => {
314
+ it("sends nothing more in this runtime after a 404", async () => {
315
+ responses = [disabledResponse];
316
+ const app = await launch();
317
+ app.appReady(unchangedLaunch());
318
+ await flush();
319
+ app.downloaded(download);
320
+ await flush();
321
+ vi.setSystemTime(MORNING + 2 * DAY_MS);
322
+ app.updateError(downloadFailure());
323
+ await flush();
324
+ expect(sentTypes()).toEqual(["UNCHANGED"]);
325
+ });
326
+ it("pauses later launches for 24 hours, then probes again", async () => {
327
+ responses = [disabledResponse];
328
+ (await launch()).appReady(unchangedLaunch());
329
+ await flush();
330
+ vi.setSystemTime(MORNING + DAY_MS - 1);
331
+ (await launch()).appReady(appliedLaunch);
332
+ await flush();
333
+ expect(fetchMock).toHaveBeenCalledOnce();
334
+ vi.setSystemTime(MORNING + DAY_MS);
335
+ (await launch()).appReady(appliedLaunch);
336
+ await flush();
337
+ expect(sentTypes()).toEqual(["UNCHANGED", "UPDATE_APPLIED"]);
338
+
339
+ // The probe was stored, so Insights is on again.
340
+ (await launch()).appReady({
341
+ ...appliedLaunch,
342
+ toBundleId: "bundle-c"
343
+ });
344
+ await flush();
345
+ expect(sentTypes()).toEqual(["UNCHANGED", "UPDATE_APPLIED", "UPDATE_APPLIED"]);
346
+ });
347
+ it("ends a pause that starts after now, from a clock that went back", async () => {
348
+ native.storage.set("plugins/insights/pausedAt", String(MORNING + 60 * 60 * 1000));
349
+ (await launch()).appReady(unchangedLaunch());
350
+ await flush();
351
+ expect(sentTypes()).toEqual(["UNCHANGED"]);
352
+ });
353
+ });
354
+ describe("update failures", () => {
355
+ it("reports a failure once per UTC day per stage, reason, and target", async () => {
356
+ const app = await launch();
357
+ app.updateError(downloadFailure({
358
+ httpStatus: undefined
359
+ }));
360
+ app.updateError(downloadFailure());
361
+ await flush();
362
+ (await launch()).updateError(downloadFailure());
363
+ await flush();
364
+ expect(fetchMock).toHaveBeenCalledOnce();
365
+ const [event] = sentEvents();
366
+ expect(event).toMatchObject({
367
+ fromBundleId: "bundle-a",
368
+ fromReleaseId: "release-a",
369
+ metadata: {
370
+ failure: {
371
+ reason: "hash_mismatch",
372
+ stage: "download"
373
+ }
374
+ },
375
+ toBundleId: "bundle-b",
376
+ toReleaseId: "release-b",
377
+ type: "UPDATE_FAILED",
378
+ updateStrategy: "fingerprint"
379
+ });
380
+ expect(Object.keys(event?.metadata?.failure ?? {}).sort()).toEqual(["reason", "stage"]);
381
+ // A UUIDv7 led by the UTC day, the same on every device for one failure.
382
+ expect(isUUIDv7(event?.eventId)).toBe(true);
383
+ expect(parseInt(event.eventId.replace(/-/g, "").slice(0, 12), 16)).toBe(Date.UTC(2026, 8, 30));
384
+ (await launch()).updateError(downloadFailure({
385
+ reason: "signature"
386
+ }));
387
+ vi.setSystemTime(MORNING + DAY_MS);
388
+ (await launch()).updateError(downloadFailure());
389
+ await flush();
390
+ const ids = sentEvents().map(({
391
+ eventId
392
+ }) => eventId);
393
+ expect(sentEvents().map(({
394
+ metadata
395
+ }) => metadata?.failure?.reason)).toEqual(["hash_mismatch", "signature", "hash_mismatch"]);
396
+ expect(new Set(ids).size).toBe(3);
397
+ });
398
+ it("gives a failure that was not delivered the same id when it happens again", async () => {
399
+ responses = [500, 500, 500];
400
+ vi.spyOn(console, "warn").mockImplementation(() => {});
401
+ (await launch()).updateError(downloadFailure());
402
+ await flush();
403
+ (await launch()).updateError(downloadFailure());
404
+ await flush();
405
+ const ids = sentEvents().map(({
406
+ eventId
407
+ }) => eventId);
408
+ expect(ids).toHaveLength(4);
409
+ expect(new Set(ids).size).toBe(1);
410
+ });
411
+ it("skips check failures while offline and reports the others against the running bundle", async () => {
412
+ const app = await launch();
413
+ const checkFailure = {
414
+ stage: "check",
415
+ channel: "production",
416
+ bundleId: "bundle-a",
417
+ releaseId: "release-a",
418
+ updateStrategy: "appVersion",
419
+ cause: new Error("check failed")
420
+ };
421
+ app.updateError({
422
+ ...checkFailure,
423
+ reason: "network"
424
+ });
425
+ app.updateError({
426
+ ...checkFailure,
427
+ reason: "http",
428
+ httpStatus: 503
429
+ });
430
+ await flush();
431
+ expect(sentEvents()).toEqual([expect.objectContaining({
432
+ fromBundleId: "bundle-a",
433
+ metadata: {
434
+ failure: {
435
+ httpStatus: 503,
436
+ reason: "http",
437
+ stage: "check"
438
+ }
439
+ },
440
+ toBundleId: "bundle-a",
441
+ toReleaseId: null,
442
+ type: "UPDATE_FAILED"
443
+ })]);
444
+ });
445
+ it("drops a failure an older server refuses, without retrying, warning, or pausing", async () => {
446
+ responses = [400];
447
+ const warn = vi.spyOn(console, "warn").mockImplementation(() => {});
448
+ const app = await launch();
449
+ app.updateError(downloadFailure());
450
+ await flush();
451
+ app.updateError(downloadFailure());
452
+ app.appReady(unchangedLaunch());
453
+ await flush();
454
+ expect(sentTypes()).toEqual(["UPDATE_FAILED", "UNCHANGED"]);
455
+ expect(warn).not.toHaveBeenCalled();
456
+ });
457
+ });
458
+ describe("event details", () => {
459
+ it("says how a download arrived, and when a patch fell back", async () => {
460
+ const app = await launch();
461
+ app.downloaded({
462
+ ...download,
463
+ delivery: "patch",
464
+ patchFallback: false
465
+ });
466
+ app.downloaded({
467
+ ...download,
468
+ toBundleId: "bundle-c",
469
+ delivery: "archive",
470
+ patchFallback: true
471
+ });
472
+ await flush();
473
+ expect(sentEvents().map(({
474
+ metadata
475
+ }) => metadata)).toEqual([{
476
+ delivery: "patch"
477
+ }, {
478
+ delivery: "archive",
479
+ patchFallback: true
480
+ }]);
481
+ });
482
+ it("says why the previous process exited on a recovery only", async () => {
483
+ const app = await launch();
484
+ app.appReady({
485
+ ...appliedLaunch,
486
+ status: "RECOVERED",
487
+ fromBundleId: "bundle-b",
488
+ toBundleId: "bundle-a",
489
+ previousProcessExit: "CRASH"
490
+ });
491
+ await flush();
492
+ (await launch()).appReady({
493
+ ...appliedLaunch,
494
+ toBundleId: "bundle-c",
495
+ previousProcessExit: "USER_REQUESTED"
496
+ });
497
+ await flush();
498
+ expect(sentEvents().map(({
499
+ type,
500
+ metadata
501
+ }) => [type, metadata])).toEqual([["RECOVERED", {
502
+ previousProcessExit: "CRASH"
503
+ }], ["UPDATE_APPLIED", undefined]]);
504
+ });
505
+ it("sends every failure detail it has", async () => {
506
+ const app = await launch();
507
+ app.updateError(downloadFailure({
508
+ reason: "http",
509
+ resource: "archive",
510
+ httpStatus: 403,
511
+ originCode: "ExpiredToken",
512
+ previousProcessExit: "ANR"
513
+ }));
514
+ app.updateError(downloadFailure({
515
+ reason: "network",
516
+ resource: "file",
517
+ transport: "tls"
518
+ }));
519
+ await flush();
520
+ expect(sentEvents().map(({
521
+ metadata
522
+ }) => metadata?.failure)).toEqual([{
523
+ stage: "download",
524
+ reason: "http",
525
+ resource: "archive",
526
+ httpStatus: 403,
527
+ originCode: "ExpiredToken",
528
+ previousProcessExit: "ANR"
529
+ }, {
530
+ stage: "download",
531
+ reason: "network",
532
+ resource: "file",
533
+ transport: "tls"
534
+ }]);
535
+ });
536
+ });
537
+ describe("a success for a failed target", () => {
538
+ it("drops a queued failure for the target a download then staged", async () => {
539
+ responses = [503];
540
+ const app = await launch();
541
+ app.appReady(unchangedLaunch());
542
+ app.updateError(downloadFailure());
543
+ app.downloaded(download);
544
+ await flush();
545
+ expect(sentTypes()).toEqual(["UNCHANGED", "UNCHANGED", "UPDATE_DOWNLOADED"]);
546
+ });
547
+ it("drops a failure waiting out a backoff once its target applies", async () => {
548
+ responses = [503];
549
+ const app = await launch();
550
+ app.updateError(downloadFailure());
551
+ await Promise.resolve();
552
+ await vi.advanceTimersByTimeAsync(0);
553
+ app.appReady(appliedLaunch);
554
+ await flush();
555
+ expect(sentTypes()).toEqual(["UPDATE_FAILED", "UPDATE_APPLIED"]);
556
+ });
557
+ it("keeps a failure for another target", async () => {
558
+ const app = await launch();
559
+ app.updateError(downloadFailure({
560
+ targetBundleId: "bundle-c"
561
+ }));
562
+ app.downloaded(download);
563
+ await flush();
564
+ expect(sentTypes()).toEqual(["UPDATE_FAILED", "UPDATE_DOWNLOADED"]);
565
+ });
566
+ });
567
+ describe("user", () => {
568
+ it("attaches a user set before init and keeps it across launches", async () => {
569
+ (await launch({}, plugin => plugin.setUser({
570
+ userId: 42
571
+ }))).appReady(unchangedLaunch());
572
+ await flush();
573
+ (await launch()).appReady(appliedLaunch);
574
+ await flush();
575
+ const app = await launch();
576
+ app.plugin.setUser(null);
577
+ app.appReady(unchangedLaunch({
578
+ bundleId: "bundle-c"
579
+ }));
580
+ await flush();
581
+ expect(sentEvents().map(({
582
+ userId
583
+ }) => userId)).toEqual(["42", "42", undefined]);
584
+ expect(sentEvents().every(event => !("username" in event))).toBe(true);
585
+ });
586
+ it("takes only a user id", () => {
587
+ const user = {
588
+ userId: "user-1"
589
+ };
590
+ // @ts-expect-error Insights keeps no username.
591
+ const withName = {
592
+ userId: "user-1",
593
+ username: "Alex"
594
+ };
595
+ expect([user, withName]).toHaveLength(2);
596
+ });
597
+ });
598
+ it.each([{
599
+ debug: undefined,
600
+ sends: false
601
+ }, {
602
+ debug: true,
603
+ sends: true
604
+ }])("sends from a debug build only with debug: true ($debug)", async ({
605
+ debug,
606
+ sends
607
+ }) => {
608
+ vi.stubGlobal("__DEV__", true);
609
+ const app = await launch(debug === undefined ? {} : {
610
+ debug
611
+ });
612
+ app.appReady(unchangedLaunch());
613
+ await flush();
614
+ expect(fetchMock).toHaveBeenCalledTimes(sends ? 1 : 0);
615
+ });
616
+ it("reports a failed install id read as a plugin error, not an update failure", async () => {
617
+ native.getInstallId.mockImplementationOnce(() => {
618
+ throw new Error("native install id unavailable");
619
+ });
620
+ const warn = vi.spyOn(console, "warn").mockImplementation(() => {});
621
+ const app = await launch();
622
+ app.appReady(unchangedLaunch());
623
+ await flush();
624
+ expect(fetchMock).not.toHaveBeenCalled();
625
+ expect(warn).toHaveBeenCalledWith('[HotUpdater] Plugin "insights" failed in onAppReady', expect.objectContaining({
626
+ message: "native install id unavailable"
627
+ }));
628
+ });
629
+ it("skips a report without a native app version", async () => {
630
+ native.getAppVersion.mockReturnValue(null);
631
+ const warn = vi.spyOn(console, "warn").mockImplementation(() => {});
632
+ const app = await launch();
633
+ app.appReady(unchangedLaunch());
634
+ await flush();
635
+ expect(fetchMock).not.toHaveBeenCalled();
636
+ expect(warn).toHaveBeenCalledWith("[HotUpdater] Insights needs the native app version; the UNCHANGED event was not sent.");
637
+ });
638
+ });
639
+ //# sourceMappingURL=insights.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isUUIDv7","afterEach","beforeEach","describe","expect","it","vi","mock","Platform","OS","native","hoisted","Reflect","set","globalThis","SDK_VERSION","storage","Map","getAppVersion","fn","getBundleId","getChannel","getCohort","getFingerprintHash","getInstallId","getStorageItem","key","get","setStorageItem","value","delete","DAY_MS","MORNING","Date","UTC","responses","fetchMock","_url","_init","next","shift","Response","status","sentEvents","calls","map","init","JSON","parse","String","body","sentTypes","type","disabledResponse","launch","options","beforeInit","resetModules","configurePlugins","emitPluginHook","insights","Promise","all","plugin","baseURL","requestHeaders","emit","name","payload","appReady","result","updateCheck","downloaded","info","updateError","error","unchangedLaunch","overrides","channel","bundleId","releaseId","previousProcessExit","appliedLaunch","fromBundleId","fromReleaseId","toBundleId","toReleaseId","updateStrategy","download","delivery","patchFallback","downloadFailure","stage","reason","targetBundleId","targetReleaseId","cause","Error","flush","runAllTimersAsync","useFakeTimers","now","spyOn","Math","mockReturnValue","stubGlobal","mockClear","clear","useRealTimers","unstubAllGlobals","restoreAllMocks","app","toHaveBeenCalledOnce","url","toBe","Headers","headers","event","eventId","toEqual","appVersion","cohort","fingerprintHash","installId","platform","sdkVersion","setSystemTime","each","label","change","setUser","userId","undefined","first","second","console","mockImplementation","previousReleaseId","toMatchObject","httpStatus","metadata","failure","Object","keys","sort","parseInt","replace","slice","ids","Set","size","toHaveLength","checkFailure","objectContaining","warn","not","toHaveBeenCalled","resource","originCode","transport","resolve","advanceTimersByTimeAsync","every","user","withName","username","debug","sends","toHaveBeenCalledTimes","mockImplementationOnce","toHaveBeenCalledWith","message"],"sourceRoot":"../../../../src","sources":["plugins/insights/insights.spec.ts"],"mappings":"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","ignoreList":[]}