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

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 (240) hide show
  1. package/lib/commonjs/checkForUpdate.js +7 -9
  2. package/lib/commonjs/checkForUpdate.js.map +1 -1
  3. package/lib/commonjs/clientPlugin.js +7 -43
  4. package/lib/commonjs/clientPlugin.js.map +1 -1
  5. package/lib/commonjs/httpClient.js +7 -9
  6. package/lib/commonjs/httpClient.js.map +1 -1
  7. package/lib/commonjs/index.js +10 -0
  8. package/lib/commonjs/index.js.map +1 -1
  9. package/lib/commonjs/native.js +4 -4
  10. package/lib/commonjs/native.js.map +1 -1
  11. package/lib/commonjs/pluginHost.js +26 -190
  12. package/lib/commonjs/pluginHost.js.map +1 -1
  13. package/lib/commonjs/releaseCatalogCache.js +7 -59
  14. package/lib/commonjs/releaseCatalogCache.js.map +1 -1
  15. package/lib/commonjs/sdkVersion.js +1 -1
  16. package/lib/module/checkForUpdate.js +1 -3
  17. package/lib/module/checkForUpdate.js.map +1 -1
  18. package/lib/module/clientPlugin.js +1 -41
  19. package/lib/module/clientPlugin.js.map +1 -1
  20. package/lib/module/httpClient.js +1 -3
  21. package/lib/module/httpClient.js.map +1 -1
  22. package/lib/module/index.js +2 -0
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/module/native.js +1 -1
  25. package/lib/module/native.js.map +1 -1
  26. package/lib/module/pluginHost.js +22 -187
  27. package/lib/module/pluginHost.js.map +1 -1
  28. package/lib/module/releaseCatalogCache.js +3 -54
  29. package/lib/module/releaseCatalogCache.js.map +1 -1
  30. package/lib/module/sdkVersion.js +1 -1
  31. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/clientPlugin.d.ts +1 -184
  33. package/lib/typescript/commonjs/clientPlugin.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/httpClient.d.ts +1 -2
  35. package/lib/typescript/commonjs/httpClient.d.ts.map +1 -1
  36. package/lib/typescript/commonjs/index.d.ts +1 -0
  37. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  38. package/lib/typescript/commonjs/native.d.ts +1 -1
  39. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  40. package/lib/typescript/commonjs/pluginHost.d.ts +3 -28
  41. package/lib/typescript/commonjs/pluginHost.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/releaseCatalogCache.d.ts +1 -13
  43. package/lib/typescript/commonjs/releaseCatalogCache.d.ts.map +1 -1
  44. package/lib/typescript/commonjs/sdkVersion.d.ts +1 -1
  45. package/lib/typescript/commonjs/types.d.ts +1 -1
  46. package/lib/typescript/commonjs/types.d.ts.map +1 -1
  47. package/lib/typescript/commonjs/wrap.types.d.ts +2 -2
  48. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  49. package/lib/typescript/module/clientPlugin.d.ts +1 -184
  50. package/lib/typescript/module/clientPlugin.d.ts.map +1 -1
  51. package/lib/typescript/module/httpClient.d.ts +1 -2
  52. package/lib/typescript/module/httpClient.d.ts.map +1 -1
  53. package/lib/typescript/module/index.d.ts +1 -0
  54. package/lib/typescript/module/index.d.ts.map +1 -1
  55. package/lib/typescript/module/native.d.ts +1 -1
  56. package/lib/typescript/module/native.d.ts.map +1 -1
  57. package/lib/typescript/module/pluginHost.d.ts +3 -28
  58. package/lib/typescript/module/pluginHost.d.ts.map +1 -1
  59. package/lib/typescript/module/releaseCatalogCache.d.ts +1 -13
  60. package/lib/typescript/module/releaseCatalogCache.d.ts.map +1 -1
  61. package/lib/typescript/module/sdkVersion.d.ts +1 -1
  62. package/lib/typescript/module/types.d.ts +1 -1
  63. package/lib/typescript/module/types.d.ts.map +1 -1
  64. package/lib/typescript/module/wrap.types.d.ts +2 -2
  65. package/package.json +7 -16
  66. package/src/checkForUpdate.ts +4 -6
  67. package/src/clientPlugin.ts +17 -231
  68. package/src/httpClient.ts +4 -4
  69. package/src/index.ts +7 -0
  70. package/src/native.ts +1 -1
  71. package/src/pluginHost.ts +24 -241
  72. package/src/releaseCatalogCache.ts +7 -136
  73. package/src/sdkVersion.ts +1 -1
  74. package/src/types.ts +1 -1
  75. package/src/wrap.types.ts +2 -2
  76. package/android/src/test/java/com/hotupdater/BsdiffPatchTest.kt +0 -46
  77. package/android/src/test/java/com/hotupdater/BundleFileStorageServiceTest.kt +0 -2236
  78. package/android/src/test/java/com/hotupdater/HotUpdaterExceptionTest.kt +0 -220
  79. package/android/src/test/java/com/hotupdater/HotUpdaterImplTest.kt +0 -264
  80. package/android/src/test/java/com/hotupdater/HotUpdaterRecoveryStateTest.kt +0 -97
  81. package/android/src/test/java/com/hotupdater/InstallIdentityServiceTest.kt +0 -71
  82. package/android/src/test/java/com/hotupdater/KeyValueStorageServiceTest.kt +0 -106
  83. package/android/src/test/java/com/hotupdater/NativeConfigUtilsTest.kt +0 -20
  84. package/android/src/test/java/com/hotupdater/NoBackupContext.kt +0 -11
  85. package/android/src/test/java/com/hotupdater/OkHttpDownloadServiceTest.kt +0 -397
  86. package/android/src/test/java/com/hotupdater/PendingCrashRecoveryTest.kt +0 -44
  87. package/android/src/test/java/com/hotupdater/PreviousProcessExitTest.kt +0 -57
  88. package/android/src/test/java/com/hotupdater/RelativePathResolverTest.kt +0 -41
  89. package/android/src/test/java/com/hotupdater/ReleaseCatalogCacheServiceTest.kt +0 -118
  90. package/android/src/test/java/com/hotupdater/TarBrArchiveExtractorTest.kt +0 -206
  91. package/lib/commonjs/appReady.spec.js +0 -360
  92. package/lib/commonjs/appReady.spec.js.map +0 -1
  93. package/lib/commonjs/appReady.test-utils.js +0 -25
  94. package/lib/commonjs/appReady.test-utils.js.map +0 -1
  95. package/lib/commonjs/baseURL.js +0 -16
  96. package/lib/commonjs/baseURL.js.map +0 -1
  97. package/lib/commonjs/catalogCacheNative.spec.js +0 -31
  98. package/lib/commonjs/catalogCacheNative.spec.js.map +0 -1
  99. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js +0 -936
  100. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js.map +0 -1
  101. package/lib/commonjs/entryImportGraph.spec.js +0 -50
  102. package/lib/commonjs/entryImportGraph.spec.js.map +0 -1
  103. package/lib/commonjs/httpClient.spec.js +0 -171
  104. package/lib/commonjs/httpClient.spec.js.map +0 -1
  105. package/lib/commonjs/index.spec.js +0 -395
  106. package/lib/commonjs/index.spec.js.map +0 -1
  107. package/lib/commonjs/iosInterop.spec.js +0 -18
  108. package/lib/commonjs/iosInterop.spec.js.map +0 -1
  109. package/lib/commonjs/native.spec.js +0 -910
  110. package/lib/commonjs/native.spec.js.map +0 -1
  111. package/lib/commonjs/pluginHost.spec.js +0 -292
  112. package/lib/commonjs/pluginHost.spec.js.map +0 -1
  113. package/lib/commonjs/plugins/insights/eventId.js +0 -129
  114. package/lib/commonjs/plugins/insights/eventId.js.map +0 -1
  115. package/lib/commonjs/plugins/insights/eventId.spec.js +0 -47
  116. package/lib/commonjs/plugins/insights/eventId.spec.js.map +0 -1
  117. package/lib/commonjs/plugins/insights/index.js +0 -272
  118. package/lib/commonjs/plugins/insights/index.js.map +0 -1
  119. package/lib/commonjs/plugins/insights/insights.spec.js +0 -640
  120. package/lib/commonjs/plugins/insights/insights.spec.js.map +0 -1
  121. package/lib/commonjs/plugins/insights/sender.js +0 -128
  122. package/lib/commonjs/plugins/insights/sender.js.map +0 -1
  123. package/lib/commonjs/plugins/insights/sender.spec.js +0 -265
  124. package/lib/commonjs/plugins/insights/sender.spec.js.map +0 -1
  125. package/lib/commonjs/plugins/insights/state.js +0 -145
  126. package/lib/commonjs/plugins/insights/state.js.map +0 -1
  127. package/lib/commonjs/releaseCatalogCache.spec.js +0 -213
  128. package/lib/commonjs/releaseCatalogCache.spec.js.map +0 -1
  129. package/lib/commonjs/releaseCatalogCacheNativeContract.spec.js +0 -64
  130. package/lib/commonjs/releaseCatalogCacheNativeContract.spec.js.map +0 -1
  131. package/lib/commonjs/store.notification.spec.js +0 -84
  132. package/lib/commonjs/store.notification.spec.js.map +0 -1
  133. package/lib/commonjs/store.spec.js +0 -182
  134. package/lib/commonjs/store.spec.js.map +0 -1
  135. package/lib/commonjs/updateError.spec.js +0 -149
  136. package/lib/commonjs/updateError.spec.js.map +0 -1
  137. package/lib/commonjs/wrap.progress.spec.js +0 -195
  138. package/lib/commonjs/wrap.progress.spec.js.map +0 -1
  139. package/lib/commonjs/wrap.spec.js +0 -232
  140. package/lib/commonjs/wrap.spec.js.map +0 -1
  141. package/lib/module/appReady.spec.js +0 -359
  142. package/lib/module/appReady.spec.js.map +0 -1
  143. package/lib/module/appReady.test-utils.js +0 -19
  144. package/lib/module/appReady.test-utils.js.map +0 -1
  145. package/lib/module/baseURL.js +0 -11
  146. package/lib/module/baseURL.js.map +0 -1
  147. package/lib/module/catalogCacheNative.spec.js +0 -31
  148. package/lib/module/catalogCacheNative.spec.js.map +0 -1
  149. package/lib/module/checkForUpdate.releaseCatalog.spec.js +0 -935
  150. package/lib/module/checkForUpdate.releaseCatalog.spec.js.map +0 -1
  151. package/lib/module/entryImportGraph.spec.js +0 -50
  152. package/lib/module/entryImportGraph.spec.js.map +0 -1
  153. package/lib/module/httpClient.spec.js +0 -171
  154. package/lib/module/httpClient.spec.js.map +0 -1
  155. package/lib/module/index.spec.js +0 -394
  156. package/lib/module/index.spec.js.map +0 -1
  157. package/lib/module/iosInterop.spec.js +0 -18
  158. package/lib/module/iosInterop.spec.js.map +0 -1
  159. package/lib/module/native.spec.js +0 -909
  160. package/lib/module/native.spec.js.map +0 -1
  161. package/lib/module/pluginHost.spec.js +0 -291
  162. package/lib/module/pluginHost.spec.js.map +0 -1
  163. package/lib/module/plugins/insights/eventId.js +0 -122
  164. package/lib/module/plugins/insights/eventId.js.map +0 -1
  165. package/lib/module/plugins/insights/eventId.spec.js +0 -47
  166. package/lib/module/plugins/insights/eventId.spec.js.map +0 -1
  167. package/lib/module/plugins/insights/index.js +0 -268
  168. package/lib/module/plugins/insights/index.js.map +0 -1
  169. package/lib/module/plugins/insights/insights.spec.js +0 -639
  170. package/lib/module/plugins/insights/insights.spec.js.map +0 -1
  171. package/lib/module/plugins/insights/sender.js +0 -123
  172. package/lib/module/plugins/insights/sender.js.map +0 -1
  173. package/lib/module/plugins/insights/sender.spec.js +0 -265
  174. package/lib/module/plugins/insights/sender.spec.js.map +0 -1
  175. package/lib/module/plugins/insights/state.js +0 -139
  176. package/lib/module/plugins/insights/state.js.map +0 -1
  177. package/lib/module/releaseCatalogCache.spec.js +0 -213
  178. package/lib/module/releaseCatalogCache.spec.js.map +0 -1
  179. package/lib/module/releaseCatalogCacheNativeContract.spec.js +0 -64
  180. package/lib/module/releaseCatalogCacheNativeContract.spec.js.map +0 -1
  181. package/lib/module/store.notification.spec.js +0 -85
  182. package/lib/module/store.notification.spec.js.map +0 -1
  183. package/lib/module/store.spec.js +0 -181
  184. package/lib/module/store.spec.js.map +0 -1
  185. package/lib/module/updateError.spec.js +0 -149
  186. package/lib/module/updateError.spec.js.map +0 -1
  187. package/lib/module/wrap.progress.spec.js +0 -196
  188. package/lib/module/wrap.progress.spec.js.map +0 -1
  189. package/lib/module/wrap.spec.js +0 -233
  190. package/lib/module/wrap.spec.js.map +0 -1
  191. package/lib/typescript/commonjs/appReady.test-utils.d.ts +0 -9
  192. package/lib/typescript/commonjs/appReady.test-utils.d.ts.map +0 -1
  193. package/lib/typescript/commonjs/baseURL.d.ts +0 -4
  194. package/lib/typescript/commonjs/baseURL.d.ts.map +0 -1
  195. package/lib/typescript/commonjs/plugins/insights/eventId.d.ts +0 -18
  196. package/lib/typescript/commonjs/plugins/insights/eventId.d.ts.map +0 -1
  197. package/lib/typescript/commonjs/plugins/insights/index.d.ts +0 -40
  198. package/lib/typescript/commonjs/plugins/insights/index.d.ts.map +0 -1
  199. package/lib/typescript/commonjs/plugins/insights/sender.d.ts +0 -74
  200. package/lib/typescript/commonjs/plugins/insights/sender.d.ts.map +0 -1
  201. package/lib/typescript/commonjs/plugins/insights/state.d.ts +0 -46
  202. package/lib/typescript/commonjs/plugins/insights/state.d.ts.map +0 -1
  203. package/lib/typescript/module/appReady.test-utils.d.ts +0 -9
  204. package/lib/typescript/module/appReady.test-utils.d.ts.map +0 -1
  205. package/lib/typescript/module/baseURL.d.ts +0 -4
  206. package/lib/typescript/module/baseURL.d.ts.map +0 -1
  207. package/lib/typescript/module/plugins/insights/eventId.d.ts +0 -18
  208. package/lib/typescript/module/plugins/insights/eventId.d.ts.map +0 -1
  209. package/lib/typescript/module/plugins/insights/index.d.ts +0 -40
  210. package/lib/typescript/module/plugins/insights/index.d.ts.map +0 -1
  211. package/lib/typescript/module/plugins/insights/sender.d.ts +0 -74
  212. package/lib/typescript/module/plugins/insights/sender.d.ts.map +0 -1
  213. package/lib/typescript/module/plugins/insights/state.d.ts +0 -46
  214. package/lib/typescript/module/plugins/insights/state.d.ts.map +0 -1
  215. package/plugins/insights/package.json +0 -8
  216. package/src/appReady.spec.ts +0 -393
  217. package/src/appReady.test-utils.ts +0 -31
  218. package/src/baseURL.ts +0 -15
  219. package/src/catalogCacheNative.spec.ts +0 -63
  220. package/src/checkForUpdate.releaseCatalog.spec.ts +0 -966
  221. package/src/entryImportGraph.spec.ts +0 -65
  222. package/src/httpClient.spec.ts +0 -216
  223. package/src/index.spec.ts +0 -434
  224. package/src/iosInterop.spec.ts +0 -30
  225. package/src/native.spec.ts +0 -978
  226. package/src/pluginHost.spec.ts +0 -297
  227. package/src/plugins/insights/eventId.spec.ts +0 -60
  228. package/src/plugins/insights/eventId.ts +0 -171
  229. package/src/plugins/insights/index.ts +0 -367
  230. package/src/plugins/insights/insights.spec.ts +0 -732
  231. package/src/plugins/insights/sender.spec.ts +0 -287
  232. package/src/plugins/insights/sender.ts +0 -221
  233. package/src/plugins/insights/state.ts +0 -184
  234. package/src/releaseCatalogCache.spec.ts +0 -304
  235. package/src/releaseCatalogCacheNativeContract.spec.ts +0 -80
  236. package/src/store.notification.spec.ts +0 -102
  237. package/src/store.spec.ts +0 -215
  238. package/src/updateError.spec.ts +0 -144
  239. package/src/wrap.progress.spec.ts +0 -232
  240. package/src/wrap.spec.ts +0 -262
@@ -1,639 +0,0 @@
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
@@ -1 +0,0 @@
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":[]}