@hot-updater/react-native 0.27.1 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +12 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +3 -0
- package/android/src/main/cpp/CMakeLists.txt +9 -0
- package/android/src/main/cpp/HotUpdaterRecovery.cpp +143 -0
- package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +325 -210
- package/android/src/main/java/com/hotupdater/BundleMetadata.kt +73 -16
- package/android/src/main/java/com/hotupdater/CohortService.kt +73 -0
- package/android/src/main/java/com/hotupdater/DecompressService.kt +28 -22
- package/android/src/main/java/com/hotupdater/HotUpdaterException.kt +1 -1
- package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +51 -13
- package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryManager.kt +533 -0
- package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryReceiver.kt +14 -0
- package/android/src/main/java/com/hotupdater/ReactNativeValueConverters.kt +55 -0
- package/android/src/main/java/com/hotupdater/TarBrDecompressionStrategy.kt +19 -7
- package/android/src/newarch/HotUpdaterModule.kt +16 -25
- package/android/src/oldarch/HotUpdaterModule.kt +20 -26
- package/android/src/oldarch/HotUpdaterSpec.kt +12 -2
- package/ios/HotUpdater/Internal/BundleFileStorageService.swift +340 -232
- package/ios/HotUpdater/Internal/BundleMetadata.swift +61 -8
- package/ios/HotUpdater/Internal/CohortService.swift +63 -0
- package/ios/HotUpdater/Internal/DecompressService.swift +53 -30
- package/ios/HotUpdater/Internal/HotUpdater-Bridging-Header.h +9 -1
- package/ios/HotUpdater/Internal/HotUpdater.mm +376 -70
- package/ios/HotUpdater/Internal/HotUpdaterCrashHandler.h +7 -0
- package/ios/HotUpdater/Internal/HotUpdaterCrashHandler.mm +4 -0
- package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +321 -9
- package/ios/HotUpdater/Internal/TarBrDecompressionStrategy.swift +24 -8
- package/lib/commonjs/DefaultResolver.js +3 -5
- package/lib/commonjs/DefaultResolver.js.map +1 -1
- package/lib/commonjs/checkForUpdate.js +2 -0
- package/lib/commonjs/checkForUpdate.js.map +1 -1
- package/lib/commonjs/index.js +13 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/native.js +211 -39
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/native.spec.js +443 -0
- package/lib/commonjs/native.spec.js.map +1 -0
- package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/wrap.js +4 -5
- package/lib/commonjs/wrap.js.map +1 -1
- package/lib/module/DefaultResolver.js +3 -5
- package/lib/module/DefaultResolver.js.map +1 -1
- package/lib/module/checkForUpdate.js +3 -1
- package/lib/module/checkForUpdate.js.map +1 -1
- package/lib/module/index.js +14 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/native.js +204 -34
- package/lib/module/native.js.map +1 -1
- package/lib/module/native.spec.js +442 -0
- package/lib/module/native.spec.js.map +1 -0
- package/lib/module/specs/NativeHotUpdater.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/wrap.js +5 -6
- package/lib/module/wrap.js.map +1 -1
- package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +14 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/native.d.ts +43 -23
- package/lib/typescript/commonjs/native.d.ts.map +1 -1
- package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +32 -8
- package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
- package/lib/typescript/commonjs/types.d.ts +6 -3
- package/lib/typescript/commonjs/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/wrap.d.ts +3 -6
- package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
- package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +14 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/native.d.ts +43 -23
- package/lib/typescript/module/native.d.ts.map +1 -1
- package/lib/typescript/module/specs/NativeHotUpdater.d.ts +32 -8
- package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
- package/lib/typescript/module/types.d.ts +6 -3
- package/lib/typescript/module/types.d.ts.map +1 -1
- package/lib/typescript/module/wrap.d.ts +3 -6
- package/lib/typescript/module/wrap.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/DefaultResolver.ts +4 -4
- package/src/checkForUpdate.ts +4 -0
- package/src/index.ts +21 -0
- package/src/native.spec.ts +480 -0
- package/src/native.ts +285 -39
- package/src/specs/NativeHotUpdater.ts +36 -6
- package/src/types.ts +7 -3
- package/src/wrap.tsx +8 -12
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { INVALID_COHORT_ERROR_MESSAGE } from "@hot-updater/core";
|
|
4
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
const nativeModuleMock = vi.hoisted(() => {
|
|
6
|
+
const getManifest = vi.fn();
|
|
7
|
+
const getCrashHistory = vi.fn(() => []);
|
|
8
|
+
return {
|
|
9
|
+
clearCrashHistory: vi.fn(() => true),
|
|
10
|
+
getBaseURL: vi.fn(() => null),
|
|
11
|
+
getBundleId: vi.fn(() => "bundle-id"),
|
|
12
|
+
getCohort: vi.fn(() => "123"),
|
|
13
|
+
getManifest,
|
|
14
|
+
getCrashHistory,
|
|
15
|
+
getConstants: vi.fn(() => ({
|
|
16
|
+
APP_VERSION: null,
|
|
17
|
+
CHANNEL: "production",
|
|
18
|
+
DEFAULT_CHANNEL: "production",
|
|
19
|
+
FINGERPRINT_HASH: null,
|
|
20
|
+
MIN_BUNDLE_ID: "min-bundle-id"
|
|
21
|
+
})),
|
|
22
|
+
notifyAppReady: vi.fn(),
|
|
23
|
+
reload: vi.fn(),
|
|
24
|
+
resetChannel: vi.fn(),
|
|
25
|
+
setCohort: vi.fn(),
|
|
26
|
+
setBundleURL: vi.fn(),
|
|
27
|
+
switchChannel: vi.fn(),
|
|
28
|
+
updateBundle: vi.fn()
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
vi.mock("react-native", () => ({
|
|
32
|
+
NativeEventEmitter: class {
|
|
33
|
+
addListener() {
|
|
34
|
+
return {
|
|
35
|
+
remove: () => {}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
Platform: {
|
|
40
|
+
OS: "ios"
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
vi.mock("./specs/NativeHotUpdater", () => ({
|
|
44
|
+
default: nativeModuleMock
|
|
45
|
+
}));
|
|
46
|
+
describe("notifyAppReady", () => {
|
|
47
|
+
beforeEach(() => {
|
|
48
|
+
vi.resetModules();
|
|
49
|
+
nativeModuleMock.notifyAppReady.mockReset();
|
|
50
|
+
nativeModuleMock.getBaseURL.mockReset();
|
|
51
|
+
nativeModuleMock.getBundleId.mockReset();
|
|
52
|
+
nativeModuleMock.getCrashHistory.mockReset();
|
|
53
|
+
nativeModuleMock.getConstants.mockReturnValue({
|
|
54
|
+
APP_VERSION: null,
|
|
55
|
+
CHANNEL: "production",
|
|
56
|
+
DEFAULT_CHANNEL: "production",
|
|
57
|
+
FINGERPRINT_HASH: null,
|
|
58
|
+
MIN_BUNDLE_ID: "min-bundle-id"
|
|
59
|
+
});
|
|
60
|
+
nativeModuleMock.getBundleId.mockReturnValue("bundle-id");
|
|
61
|
+
nativeModuleMock.getBaseURL.mockReturnValue(null);
|
|
62
|
+
nativeModuleMock.getCrashHistory.mockReturnValue([]);
|
|
63
|
+
nativeModuleMock.getCohort.mockReset();
|
|
64
|
+
nativeModuleMock.getCohort.mockReturnValue("123");
|
|
65
|
+
nativeModuleMock.getManifest.mockReset();
|
|
66
|
+
nativeModuleMock.getManifest.mockReturnValue({
|
|
67
|
+
assets: {
|
|
68
|
+
"index.android.bundle": {
|
|
69
|
+
fileHash: "hash-123"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
bundleId: "bundle-id"
|
|
73
|
+
});
|
|
74
|
+
nativeModuleMock.resetChannel.mockReset();
|
|
75
|
+
nativeModuleMock.setCohort.mockReset();
|
|
76
|
+
nativeModuleMock.updateBundle.mockReset();
|
|
77
|
+
});
|
|
78
|
+
it("normalizes legacy PROMOTED launch reports to STABLE", async () => {
|
|
79
|
+
nativeModuleMock.notifyAppReady.mockReturnValue(JSON.stringify({
|
|
80
|
+
status: "PROMOTED"
|
|
81
|
+
}));
|
|
82
|
+
const {
|
|
83
|
+
notifyAppReady
|
|
84
|
+
} = await import("./native");
|
|
85
|
+
expect(notifyAppReady()).toEqual({
|
|
86
|
+
status: "STABLE"
|
|
87
|
+
});
|
|
88
|
+
expect(nativeModuleMock.notifyAppReady).toHaveBeenCalledWith();
|
|
89
|
+
});
|
|
90
|
+
it("returns RECOVERED launch reports unchanged", async () => {
|
|
91
|
+
nativeModuleMock.notifyAppReady.mockReturnValue({
|
|
92
|
+
crashedBundleId: "bundle-123",
|
|
93
|
+
status: "RECOVERED"
|
|
94
|
+
});
|
|
95
|
+
const {
|
|
96
|
+
notifyAppReady
|
|
97
|
+
} = await import("./native");
|
|
98
|
+
expect(notifyAppReady()).toEqual({
|
|
99
|
+
crashedBundleId: "bundle-123",
|
|
100
|
+
status: "RECOVERED"
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
it("falls back to STABLE for malformed old-arch payloads", async () => {
|
|
104
|
+
nativeModuleMock.notifyAppReady.mockReturnValue("{");
|
|
105
|
+
const {
|
|
106
|
+
notifyAppReady
|
|
107
|
+
} = await import("./native");
|
|
108
|
+
expect(notifyAppReady()).toEqual({
|
|
109
|
+
status: "STABLE"
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
it("returns the native bundle id when available", async () => {
|
|
113
|
+
nativeModuleMock.getBundleId.mockReturnValue("bundle-123");
|
|
114
|
+
const {
|
|
115
|
+
getBundleId
|
|
116
|
+
} = await import("./native");
|
|
117
|
+
expect(getBundleId()).toBe("bundle-123");
|
|
118
|
+
});
|
|
119
|
+
it("throws when native SDK does not expose getBundleId", async () => {
|
|
120
|
+
const nativeModule = nativeModuleMock;
|
|
121
|
+
const originalGetBundleId = nativeModule.getBundleId;
|
|
122
|
+
nativeModule.getBundleId = null;
|
|
123
|
+
try {
|
|
124
|
+
const {
|
|
125
|
+
getBundleId
|
|
126
|
+
} = await import("./native");
|
|
127
|
+
expect(() => getBundleId()).toThrow("Native module is missing 'getBundleId()'");
|
|
128
|
+
} finally {
|
|
129
|
+
nativeModule.getBundleId = originalGetBundleId;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
it("falls back to MIN_BUNDLE_ID when native reports an empty bundle id", async () => {
|
|
133
|
+
nativeModuleMock.getBundleId.mockReturnValue("");
|
|
134
|
+
const {
|
|
135
|
+
getBundleId
|
|
136
|
+
} = await import("./native");
|
|
137
|
+
expect(getBundleId()).toBe("min-bundle-id");
|
|
138
|
+
});
|
|
139
|
+
it("falls back to MIN_BUNDLE_ID when native bundle id is null", async () => {
|
|
140
|
+
nativeModuleMock.getBundleId.mockReturnValue(null);
|
|
141
|
+
const {
|
|
142
|
+
getBundleId
|
|
143
|
+
} = await import("./native");
|
|
144
|
+
expect(getBundleId()).toBe("min-bundle-id");
|
|
145
|
+
});
|
|
146
|
+
it("falls back to MIN_BUNDLE_ID for legacy NIL_UUID bundle ids", async () => {
|
|
147
|
+
nativeModuleMock.getBundleId.mockReturnValue("00000000-0000-0000-0000-000000000000");
|
|
148
|
+
const {
|
|
149
|
+
getBundleId
|
|
150
|
+
} = await import("./native");
|
|
151
|
+
expect(getBundleId()).toBe("min-bundle-id");
|
|
152
|
+
});
|
|
153
|
+
it("returns manifest from native objects", async () => {
|
|
154
|
+
nativeModuleMock.getManifest.mockReturnValue({
|
|
155
|
+
assets: {
|
|
156
|
+
"assets/logo.png": {
|
|
157
|
+
fileHash: "hash-logo"
|
|
158
|
+
},
|
|
159
|
+
"index.android.bundle": {
|
|
160
|
+
fileHash: "hash-bundle"
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
bundleId: "bundle-123"
|
|
164
|
+
});
|
|
165
|
+
const {
|
|
166
|
+
getManifest
|
|
167
|
+
} = await import("./native");
|
|
168
|
+
expect(getManifest()).toEqual({
|
|
169
|
+
assets: {
|
|
170
|
+
"assets/logo.png": {
|
|
171
|
+
fileHash: "hash-logo"
|
|
172
|
+
},
|
|
173
|
+
"index.android.bundle": {
|
|
174
|
+
fileHash: "hash-bundle"
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
bundleId: "bundle-123"
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
it("normalizes legacy manifest asset entries from native objects", async () => {
|
|
181
|
+
nativeModuleMock.getManifest.mockReturnValue({
|
|
182
|
+
assets: {
|
|
183
|
+
"assets/logo.png": "hash-logo"
|
|
184
|
+
},
|
|
185
|
+
bundleId: "bundle-123"
|
|
186
|
+
});
|
|
187
|
+
const {
|
|
188
|
+
getManifest
|
|
189
|
+
} = await import("./native");
|
|
190
|
+
expect(getManifest()).toEqual({
|
|
191
|
+
assets: {
|
|
192
|
+
"assets/logo.png": {
|
|
193
|
+
fileHash: "hash-logo"
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
bundleId: "bundle-123"
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
it("parses manifest from old-arch JSON payloads", async () => {
|
|
200
|
+
nativeModuleMock.getManifest.mockReturnValue(JSON.stringify({
|
|
201
|
+
assets: {
|
|
202
|
+
"assets/logo.png": {
|
|
203
|
+
fileHash: "hash-logo"
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
bundleId: "bundle-123"
|
|
207
|
+
}));
|
|
208
|
+
const {
|
|
209
|
+
getManifest
|
|
210
|
+
} = await import("./native");
|
|
211
|
+
expect(getManifest()).toEqual({
|
|
212
|
+
assets: {
|
|
213
|
+
"assets/logo.png": {
|
|
214
|
+
fileHash: "hash-logo"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
bundleId: "bundle-123"
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
it("normalizes legacy manifest asset entries from old-arch JSON payloads", async () => {
|
|
221
|
+
nativeModuleMock.getManifest.mockReturnValue(JSON.stringify({
|
|
222
|
+
assets: {
|
|
223
|
+
"assets/logo.png": "hash-logo"
|
|
224
|
+
},
|
|
225
|
+
bundleId: "bundle-123"
|
|
226
|
+
}));
|
|
227
|
+
const {
|
|
228
|
+
getManifest
|
|
229
|
+
} = await import("./native");
|
|
230
|
+
expect(getManifest()).toEqual({
|
|
231
|
+
assets: {
|
|
232
|
+
"assets/logo.png": {
|
|
233
|
+
fileHash: "hash-logo"
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
bundleId: "bundle-123"
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
it("returns an empty-assets manifest for malformed payloads", async () => {
|
|
240
|
+
nativeModuleMock.getManifest.mockReturnValue("{");
|
|
241
|
+
const {
|
|
242
|
+
getManifest
|
|
243
|
+
} = await import("./native");
|
|
244
|
+
expect(getManifest()).toEqual({
|
|
245
|
+
assets: {},
|
|
246
|
+
bundleId: "bundle-id"
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
it("caches active bundle getters within a JS runtime", async () => {
|
|
250
|
+
nativeModuleMock.getBundleId.mockReturnValue("bundle-123");
|
|
251
|
+
nativeModuleMock.getManifest.mockReturnValue({
|
|
252
|
+
assets: {
|
|
253
|
+
"assets/logo.png": {
|
|
254
|
+
fileHash: "hash-logo"
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
bundleId: "bundle-123"
|
|
258
|
+
});
|
|
259
|
+
nativeModuleMock.getBaseURL.mockReturnValue("file:///bundle-123");
|
|
260
|
+
const {
|
|
261
|
+
getBaseURL,
|
|
262
|
+
getBundleId,
|
|
263
|
+
getManifest
|
|
264
|
+
} = await import("./native");
|
|
265
|
+
expect(getBundleId()).toBe("bundle-123");
|
|
266
|
+
expect(getBundleId()).toBe("bundle-123");
|
|
267
|
+
expect(nativeModuleMock.getBundleId).toHaveBeenCalledTimes(1);
|
|
268
|
+
const firstManifest = getManifest();
|
|
269
|
+
firstManifest.assets["assets/logo.png"] = {
|
|
270
|
+
fileHash: "mutated-hash"
|
|
271
|
+
};
|
|
272
|
+
expect(getManifest()).toEqual({
|
|
273
|
+
assets: {
|
|
274
|
+
"assets/logo.png": {
|
|
275
|
+
fileHash: "hash-logo"
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
bundleId: "bundle-123"
|
|
279
|
+
});
|
|
280
|
+
expect(nativeModuleMock.getManifest).toHaveBeenCalledTimes(1);
|
|
281
|
+
expect(getBaseURL()).toBe("file:///bundle-123");
|
|
282
|
+
expect(getBaseURL()).toBe("file:///bundle-123");
|
|
283
|
+
expect(nativeModuleMock.getBaseURL).toHaveBeenCalledTimes(1);
|
|
284
|
+
});
|
|
285
|
+
it("invalidates cached bundle getters after updateBundle succeeds", async () => {
|
|
286
|
+
nativeModuleMock.getBundleId.mockReturnValue("bundle-123");
|
|
287
|
+
nativeModuleMock.getManifest.mockReturnValue({
|
|
288
|
+
assets: {},
|
|
289
|
+
bundleId: "bundle-123"
|
|
290
|
+
});
|
|
291
|
+
nativeModuleMock.getBaseURL.mockReturnValue("file:///bundle-123");
|
|
292
|
+
nativeModuleMock.updateBundle.mockResolvedValue(true);
|
|
293
|
+
const {
|
|
294
|
+
getBaseURL,
|
|
295
|
+
getBundleId,
|
|
296
|
+
getManifest,
|
|
297
|
+
updateBundle
|
|
298
|
+
} = await import("./native");
|
|
299
|
+
expect(getBundleId()).toBe("bundle-123");
|
|
300
|
+
expect(getManifest()).toEqual({
|
|
301
|
+
assets: {},
|
|
302
|
+
bundleId: "bundle-123"
|
|
303
|
+
});
|
|
304
|
+
expect(getBaseURL()).toBe("file:///bundle-123");
|
|
305
|
+
nativeModuleMock.getBundleId.mockReturnValue("bundle-456");
|
|
306
|
+
nativeModuleMock.getManifest.mockReturnValue({
|
|
307
|
+
assets: {},
|
|
308
|
+
bundleId: "bundle-456"
|
|
309
|
+
});
|
|
310
|
+
nativeModuleMock.getBaseURL.mockReturnValue("file:///bundle-456");
|
|
311
|
+
await updateBundle({
|
|
312
|
+
bundleId: "bundle-456",
|
|
313
|
+
fileHash: null,
|
|
314
|
+
fileUrl: "https://example.com/bundle.zip",
|
|
315
|
+
status: "UPDATE"
|
|
316
|
+
});
|
|
317
|
+
expect(getBundleId()).toBe("bundle-456");
|
|
318
|
+
expect(getManifest()).toEqual({
|
|
319
|
+
assets: {},
|
|
320
|
+
bundleId: "bundle-456"
|
|
321
|
+
});
|
|
322
|
+
expect(getBaseURL()).toBe("file:///bundle-456");
|
|
323
|
+
expect(nativeModuleMock.getBundleId).toHaveBeenCalledTimes(2);
|
|
324
|
+
expect(nativeModuleMock.getManifest).toHaveBeenCalledTimes(2);
|
|
325
|
+
expect(nativeModuleMock.getBaseURL).toHaveBeenCalledTimes(2);
|
|
326
|
+
});
|
|
327
|
+
it("invalidates cached bundle getters after resetChannel succeeds", async () => {
|
|
328
|
+
nativeModuleMock.getConstants.mockReturnValue({
|
|
329
|
+
APP_VERSION: null,
|
|
330
|
+
CHANNEL: "beta",
|
|
331
|
+
DEFAULT_CHANNEL: "production",
|
|
332
|
+
FINGERPRINT_HASH: null,
|
|
333
|
+
MIN_BUNDLE_ID: "min-bundle-id"
|
|
334
|
+
});
|
|
335
|
+
nativeModuleMock.getBundleId.mockReturnValue("bundle-beta");
|
|
336
|
+
nativeModuleMock.getManifest.mockReturnValue({
|
|
337
|
+
assets: {},
|
|
338
|
+
bundleId: "bundle-beta"
|
|
339
|
+
});
|
|
340
|
+
nativeModuleMock.getBaseURL.mockReturnValue("file:///bundle-beta");
|
|
341
|
+
nativeModuleMock.resetChannel.mockResolvedValue(true);
|
|
342
|
+
const {
|
|
343
|
+
getBaseURL,
|
|
344
|
+
getBundleId,
|
|
345
|
+
getManifest,
|
|
346
|
+
resetChannel
|
|
347
|
+
} = await import("./native");
|
|
348
|
+
expect(getBundleId()).toBe("bundle-beta");
|
|
349
|
+
expect(getManifest()).toEqual({
|
|
350
|
+
assets: {},
|
|
351
|
+
bundleId: "bundle-beta"
|
|
352
|
+
});
|
|
353
|
+
expect(getBaseURL()).toBe("file:///bundle-beta");
|
|
354
|
+
nativeModuleMock.getBundleId.mockReturnValue(null);
|
|
355
|
+
nativeModuleMock.getManifest.mockReturnValue({});
|
|
356
|
+
nativeModuleMock.getBaseURL.mockReturnValue("");
|
|
357
|
+
await expect(resetChannel()).resolves.toBe(true);
|
|
358
|
+
expect(getBundleId()).toBe("min-bundle-id");
|
|
359
|
+
expect(getManifest()).toEqual({
|
|
360
|
+
assets: {},
|
|
361
|
+
bundleId: "min-bundle-id"
|
|
362
|
+
});
|
|
363
|
+
expect(getBaseURL()).toBeNull();
|
|
364
|
+
expect(nativeModuleMock.getBundleId).toHaveBeenCalledTimes(2);
|
|
365
|
+
expect(nativeModuleMock.getManifest).toHaveBeenCalledTimes(2);
|
|
366
|
+
expect(nativeModuleMock.getBaseURL).toHaveBeenCalledTimes(2);
|
|
367
|
+
});
|
|
368
|
+
it("parses crash history from legacy JSON payloads", async () => {
|
|
369
|
+
nativeModuleMock.getCrashHistory.mockReturnValue(JSON.stringify(["bundle-1", "bundle-2"]));
|
|
370
|
+
const {
|
|
371
|
+
getCrashHistory
|
|
372
|
+
} = await import("./native");
|
|
373
|
+
expect(getCrashHistory()).toEqual(["bundle-1", "bundle-2"]);
|
|
374
|
+
});
|
|
375
|
+
it("falls back to an empty crash history for malformed payloads", async () => {
|
|
376
|
+
nativeModuleMock.getCrashHistory.mockReturnValue("{");
|
|
377
|
+
const {
|
|
378
|
+
getCrashHistory
|
|
379
|
+
} = await import("./native");
|
|
380
|
+
expect(getCrashHistory()).toEqual([]);
|
|
381
|
+
});
|
|
382
|
+
it("passes normalized cohort overrides to native", async () => {
|
|
383
|
+
const {
|
|
384
|
+
setCohort
|
|
385
|
+
} = await import("./native");
|
|
386
|
+
setCohort(" QA-Group ");
|
|
387
|
+
expect(nativeModuleMock.setCohort).toHaveBeenCalledWith("qa-group");
|
|
388
|
+
});
|
|
389
|
+
it("returns the most recently set cohort before native reads catch up", async () => {
|
|
390
|
+
nativeModuleMock.getCohort.mockReturnValue("123");
|
|
391
|
+
const {
|
|
392
|
+
getCohort,
|
|
393
|
+
setCohort
|
|
394
|
+
} = await import("./native");
|
|
395
|
+
setCohort(" QA-Group ");
|
|
396
|
+
expect(getCohort()).toBe("qa-group");
|
|
397
|
+
expect(nativeModuleMock.getCohort).not.toHaveBeenCalled();
|
|
398
|
+
});
|
|
399
|
+
it("throws when attempting to clear the cohort with an empty value", async () => {
|
|
400
|
+
const {
|
|
401
|
+
setCohort
|
|
402
|
+
} = await import("./native");
|
|
403
|
+
expect(() => setCohort("")).toThrow(INVALID_COHORT_ERROR_MESSAGE);
|
|
404
|
+
expect(nativeModuleMock.setCohort).not.toHaveBeenCalled();
|
|
405
|
+
});
|
|
406
|
+
it("throws for invalid cohort overrides", async () => {
|
|
407
|
+
const {
|
|
408
|
+
setCohort
|
|
409
|
+
} = await import("./native");
|
|
410
|
+
expect(() => setCohort("Bad Cohort")).toThrow(INVALID_COHORT_ERROR_MESSAGE);
|
|
411
|
+
expect(nativeModuleMock.setCohort).not.toHaveBeenCalled();
|
|
412
|
+
});
|
|
413
|
+
it("throws for cohort overrides longer than the limit", async () => {
|
|
414
|
+
const {
|
|
415
|
+
setCohort
|
|
416
|
+
} = await import("./native");
|
|
417
|
+
expect(() => setCohort("a".repeat(65))).toThrow(INVALID_COHORT_ERROR_MESSAGE);
|
|
418
|
+
expect(nativeModuleMock.setCohort).not.toHaveBeenCalled();
|
|
419
|
+
});
|
|
420
|
+
it("returns the cohort reported by native", async () => {
|
|
421
|
+
nativeModuleMock.getCohort.mockReturnValue("qa-group");
|
|
422
|
+
const {
|
|
423
|
+
getCohort
|
|
424
|
+
} = await import("./native");
|
|
425
|
+
expect(getCohort()).toBe("qa-group");
|
|
426
|
+
});
|
|
427
|
+
it("normalizes the cohort reported by native", async () => {
|
|
428
|
+
nativeModuleMock.getCohort.mockReturnValue(" QA-GROUP ");
|
|
429
|
+
const {
|
|
430
|
+
getCohort
|
|
431
|
+
} = await import("./native");
|
|
432
|
+
expect(getCohort()).toBe("qa-group");
|
|
433
|
+
});
|
|
434
|
+
it("throws when native reports an invalid cohort", async () => {
|
|
435
|
+
nativeModuleMock.getCohort.mockReturnValue("1001");
|
|
436
|
+
const {
|
|
437
|
+
getCohort
|
|
438
|
+
} = await import("./native");
|
|
439
|
+
expect(() => getCohort()).toThrow(INVALID_COHORT_ERROR_MESSAGE);
|
|
440
|
+
});
|
|
441
|
+
});
|
|
442
|
+
//# sourceMappingURL=native.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["INVALID_COHORT_ERROR_MESSAGE","beforeEach","describe","expect","it","vi","nativeModuleMock","hoisted","getManifest","fn","getCrashHistory","clearCrashHistory","getBaseURL","getBundleId","getCohort","getConstants","APP_VERSION","CHANNEL","DEFAULT_CHANNEL","FINGERPRINT_HASH","MIN_BUNDLE_ID","notifyAppReady","reload","resetChannel","setCohort","setBundleURL","switchChannel","updateBundle","mock","NativeEventEmitter","addListener","remove","Platform","OS","default","resetModules","mockReset","mockReturnValue","assets","fileHash","bundleId","JSON","stringify","status","toEqual","toHaveBeenCalledWith","crashedBundleId","toBe","nativeModule","originalGetBundleId","toThrow","toHaveBeenCalledTimes","firstManifest","mockResolvedValue","fileUrl","resolves","toBeNull","not","toHaveBeenCalled","repeat"],"sourceRoot":"../../src","sources":["native.spec.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAsJlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isSignatureVerificationError","error","Error","message","toLowerCase","includes","extractSignatureFailure","bundleId","normalizedError","String"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAGA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["isSignatureVerificationError","error","Error","message","toLowerCase","includes","extractSignatureFailure","bundleId","normalizedError","String"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAGA;AACA;AACA;;AAqDA;AACA;AACA;;AAyBA;AACA;AACA;;AAoDA;AACA;AACA;AACA;AACA;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,4BAA4BA,CAACC,KAAc,EAAW;EACpE,IAAI,EAAEA,KAAK,YAAYC,KAAK,CAAC,EAAE;IAC7B,OAAO,KAAK;EACd;EAEA,MAAMC,OAAO,GAAGF,KAAK,CAACE,OAAO,CAACC,WAAW,CAAC,CAAC;;EAE3C;EACA;EACA,OACED,OAAO,CAACE,QAAQ,CAAC,wBAAwB,CAAC,IAC1CF,OAAO,CAACE,QAAQ,CAAC,2BAA2B,CAAC,IAC7CF,OAAO,CAACE,QAAQ,CAAC,8BAA8B,CAAC,IAChDF,OAAO,CAACE,QAAQ,CAAC,6BAA6B,CAAC,IAC/CF,OAAO,CAACE,QAAQ,CAAC,qCAAqC,CAAC;AAE3D;;AAEA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CACrCL,KAAc,EACdM,QAAgB,EACc;EAC9B,MAAMC,eAAe,GACnBP,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAG,IAAIC,KAAK,CAACO,MAAM,CAACR,KAAK,CAAC,CAAC;EAE3D,OAAO;IACLM,QAAQ;IACRJ,OAAO,EAAEK,eAAe,CAACL,OAAO;IAChCF,KAAK,EAAEO;EACT,CAAC;AACH","ignoreList":[]}
|
package/lib/module/wrap.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { useEffect,
|
|
3
|
+
import React, { useEffect, useState } from "react";
|
|
4
4
|
import { checkForUpdate } from "./checkForUpdate.js";
|
|
5
5
|
import { useEventCallback } from "./hooks/useEventCallback.js";
|
|
6
6
|
import { getBundleId, notifyAppReady as nativeNotifyAppReady, reload } from "./native.js";
|
|
@@ -32,7 +32,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
32
32
|
*/
|
|
33
33
|
const handleNotifyAppReady = async options => {
|
|
34
34
|
try {
|
|
35
|
-
// Always call native notifyAppReady for bundle promotion
|
|
36
35
|
const nativeResult = nativeNotifyAppReady();
|
|
37
36
|
|
|
38
37
|
// If resolver.notifyAppReady exists, call it with simplified params
|
|
@@ -55,7 +54,7 @@ export function wrap(options) {
|
|
|
55
54
|
if (options.updateMode === "manual") {
|
|
56
55
|
return WrappedComponent => {
|
|
57
56
|
const ManualHOC = props => {
|
|
58
|
-
|
|
57
|
+
useEffect(() => {
|
|
59
58
|
void handleNotifyAppReady(options);
|
|
60
59
|
}, []);
|
|
61
60
|
return /*#__PURE__*/_jsx(WrappedComponent, {
|
|
@@ -135,13 +134,13 @@ export function wrap(options) {
|
|
|
135
134
|
restOptions.onProgress?.(progress);
|
|
136
135
|
}, [progress]);
|
|
137
136
|
|
|
138
|
-
//
|
|
139
|
-
|
|
137
|
+
// Read the native launch report after the first render commit.
|
|
138
|
+
useEffect(() => {
|
|
140
139
|
void handleNotifyAppReady(restOptions);
|
|
141
140
|
}, []);
|
|
142
141
|
|
|
143
142
|
// Start update check
|
|
144
|
-
|
|
143
|
+
useEffect(() => {
|
|
145
144
|
initHotUpdater();
|
|
146
145
|
}, []);
|
|
147
146
|
if (restOptions.fallbackComponent && updateStatus !== "UPDATE_PROCESS_COMPLETED") {
|
package/lib/module/wrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","checkForUpdate","useEventCallback","getBundleId","notifyAppReady","nativeNotifyAppReady","reload","useHotUpdaterStore","jsx","_jsx","handleNotifyAppReady","options","nativeResult","resolver","status","crashedBundleId","requestHeaders","requestTimeout","catch","e","console","warn","onNotifyAppReady","wrap","updateMode","WrappedComponent","ManualHOC","props","reloadOnForceUpdate","restOptions","HotUpdaterHOC","progress","state","message","setMessage","updateStatus","setUpdateStatus","initHotUpdater","updateInfo","updateStrategy","onError","onUpdateProcessCompleted","shouldForceUpdate","id","updateBundle","error","isSuccess","Error","onProgress","fallbackComponent","Fallback"],"sourceRoot":"../../src","sources":["wrap.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAevD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;IAE7C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAGF,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC1E,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAUD,wBAAsB,cAAc,CAClC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA8GtC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type CheckForUpdateOptions } from "./checkForUpdate";
|
|
2
2
|
import { setReloadBehavior, type UpdateParams } from "./native";
|
|
3
3
|
import { type HotUpdaterOptions } from "./wrap";
|
|
4
|
-
export type { CustomReloadHandler, HotUpdaterEvent, NotifyAppReadyResult, ReloadBehavior, ReloadBehaviorSetting, } from "./native";
|
|
4
|
+
export type { CustomReloadHandler, HotUpdaterEvent, Manifest, ManifestAsset, NotifyAppReadyResult, ReloadBehavior, ReloadBehaviorSetting, } from "./native";
|
|
5
5
|
export * from "./store";
|
|
6
6
|
export { extractSignatureFailure, type HotUpdaterResolver, isSignatureVerificationError, type ResolverCheckUpdateParams, type ResolverNotifyAppReadyParams, type SignatureVerificationFailure, } from "./types";
|
|
7
7
|
export type { HotUpdaterOptions, RunUpdateProcessResponse } from "./wrap";
|
|
@@ -76,6 +76,10 @@ export declare const HotUpdater: {
|
|
|
76
76
|
* Retrieves the initial bundle ID based on the build time of the native app.
|
|
77
77
|
*/
|
|
78
78
|
getMinBundleId: () => string;
|
|
79
|
+
/**
|
|
80
|
+
* Fetches the current manifest for the active bundle.
|
|
81
|
+
*/
|
|
82
|
+
getManifest: () => import("./native").Manifest;
|
|
79
83
|
/**
|
|
80
84
|
* Fetches the current channel of the app.
|
|
81
85
|
*
|
|
@@ -109,6 +113,15 @@ export declare const HotUpdater: {
|
|
|
109
113
|
* @returns {boolean} true when a non-default channel has been applied
|
|
110
114
|
*/
|
|
111
115
|
isChannelSwitched: () => boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Sets the persisted cohort used for rollout calculations.
|
|
118
|
+
* Call `getCohort()` first if you need to restore the initial value later.
|
|
119
|
+
*/
|
|
120
|
+
setCohort: (cohort: string) => void;
|
|
121
|
+
/**
|
|
122
|
+
* Gets the persisted cohort used for rollout calculations.
|
|
123
|
+
*/
|
|
124
|
+
getCohort: () => string;
|
|
112
125
|
/**
|
|
113
126
|
* Adds a listener to HotUpdater events.
|
|
114
127
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAiBL,iBAAiB,EACjB,KAAK,YAAY,EAElB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,QAAQ,CAAC;AAEhF,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,GAClC,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAwY1E,eAAO,MAAM,UAAU;IAxUnB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;oBACa,iBAAiB;IAuCjC;;OAEG;;IAGH;;;;;;;;;OASG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;;;;;;;;;;;OAYG;;IAGH;;;;;;;;;;;OAWG;;IAGH;;;;OAIG;;IAGH;;;OAGG;;IAGH;;OAEG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;6BACsB,qBAAqB;IAgB9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;2BACoB,YAAY;IAKnC;;;;OAIG;;IAYH;;;;;;;;;;OAUG;;IAGH;;;;;;;;;;;OAWG;;IAGH;;;;;;;;;;;OAWG;;CAK2C,CAAC"}
|