@hot-updater/react-native 0.30.12 → 0.31.1
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/HotUpdater.podspec +1 -0
- package/android/build.gradle +1 -0
- package/android/src/main/java/com/hotupdater/BsdiffPatch.kt +284 -0
- package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +885 -5
- package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +13 -2
- package/android/src/main/java/com/hotupdater/OkHttpDownloadService.kt +37 -8
- package/android/src/main/java/com/hotupdater/ReactNativeValueConverters.kt +48 -12
- package/android/src/main/java/com/hotupdater/SignatureVerifier.kt +60 -22
- package/android/src/newarch/HotUpdater.kt +14 -2
- package/android/src/newarch/HotUpdaterModule.kt +112 -1
- package/android/src/oldarch/HotUpdater.kt +14 -2
- package/android/src/oldarch/HotUpdaterModule.kt +107 -3
- package/android/src/test/java/com/hotupdater/BsdiffPatchTest.kt +46 -0
- package/android/src/test/java/com/hotupdater/BundleFileStorageServiceTest.kt +29 -1
- package/android/src/test/java/com/hotupdater/HotUpdaterImplTest.kt +4 -1
- package/ios/HotUpdater/Internal/BsdiffPatchBridge.h +16 -0
- package/ios/HotUpdater/Internal/BsdiffPatchBridge.mm +343 -0
- package/ios/HotUpdater/Internal/BundleFileStorageService.swift +1093 -47
- package/ios/HotUpdater/Internal/HotUpdater-Bridging-Header.h +2 -0
- package/ios/HotUpdater/Internal/HotUpdater.mm +12 -2
- package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +64 -5
- package/ios/HotUpdater/Internal/NotificationExtension.swift +2 -1
- package/ios/HotUpdater/Internal/SignatureVerifier.swift +28 -5
- package/ios/HotUpdater/Internal/StreamingTarArchiveExtractor.swift +11 -0
- package/ios/HotUpdater/Internal/URLSessionDownloadService.swift +11 -5
- package/lib/commonjs/DefaultResolver.js +6 -2
- package/lib/commonjs/DefaultResolver.js.map +1 -1
- package/lib/commonjs/DefaultResolver.spec.js +79 -3
- package/lib/commonjs/DefaultResolver.spec.js.map +1 -1
- package/lib/commonjs/checkForUpdate.js +6 -0
- package/lib/commonjs/checkForUpdate.js.map +1 -1
- package/lib/commonjs/index.js +53 -18
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.spec.js +117 -1
- package/lib/commonjs/index.spec.js.map +1 -1
- package/lib/commonjs/native.js +40 -16
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/native.spec.js +119 -3
- package/lib/commonjs/native.spec.js.map +1 -1
- package/lib/commonjs/sdkVersion.js +8 -0
- package/lib/commonjs/sdkVersion.js.map +1 -0
- package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
- package/lib/commonjs/store.js +72 -5
- package/lib/commonjs/store.js.map +1 -1
- package/lib/commonjs/store.spec.js +265 -8
- package/lib/commonjs/store.spec.js.map +1 -1
- package/lib/commonjs/wrap.js +19 -5
- package/lib/commonjs/wrap.js.map +1 -1
- package/lib/commonjs/wrap.spec.js +74 -0
- package/lib/commonjs/wrap.spec.js.map +1 -1
- package/lib/module/DefaultResolver.js +6 -2
- package/lib/module/DefaultResolver.js.map +1 -1
- package/lib/module/DefaultResolver.spec.js +78 -3
- package/lib/module/DefaultResolver.spec.js.map +1 -1
- package/lib/module/checkForUpdate.js +6 -0
- package/lib/module/checkForUpdate.js.map +1 -1
- package/lib/module/index.js +53 -18
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.spec.js +117 -1
- package/lib/module/index.spec.js.map +1 -1
- package/lib/module/native.js +40 -16
- package/lib/module/native.js.map +1 -1
- package/lib/module/native.spec.js +119 -3
- package/lib/module/native.spec.js.map +1 -1
- package/lib/module/sdkVersion.js +4 -0
- package/lib/module/sdkVersion.js.map +1 -0
- package/lib/module/specs/NativeHotUpdater.js.map +1 -1
- package/lib/module/store.js +72 -5
- package/lib/module/store.js.map +1 -1
- package/lib/module/store.spec.js +265 -8
- package/lib/module/store.spec.js.map +1 -1
- package/lib/module/wrap.js +19 -5
- package/lib/module/wrap.js.map +1 -1
- package/lib/module/wrap.spec.js +74 -0
- package/lib/module/wrap.spec.js.map +1 -1
- package/lib/typescript/commonjs/DefaultResolver.d.ts.map +1 -1
- package/lib/typescript/commonjs/checkForUpdate.d.ts +2 -2
- package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +36 -8
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/native.d.ts +56 -3
- package/lib/typescript/commonjs/native.d.ts.map +1 -1
- package/lib/typescript/commonjs/sdkVersion.d.ts +2 -0
- package/lib/typescript/commonjs/sdkVersion.d.ts.map +1 -0
- package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +27 -0
- package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
- package/lib/typescript/commonjs/store.d.ts +5 -0
- package/lib/typescript/commonjs/store.d.ts.map +1 -1
- package/lib/typescript/commonjs/wrap.d.ts +43 -29
- package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
- package/lib/typescript/module/DefaultResolver.d.ts.map +1 -1
- package/lib/typescript/module/checkForUpdate.d.ts +2 -2
- package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +36 -8
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/native.d.ts +56 -3
- package/lib/typescript/module/native.d.ts.map +1 -1
- package/lib/typescript/module/sdkVersion.d.ts +2 -0
- package/lib/typescript/module/sdkVersion.d.ts.map +1 -0
- package/lib/typescript/module/specs/NativeHotUpdater.d.ts +27 -0
- package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
- package/lib/typescript/module/store.d.ts +5 -0
- package/lib/typescript/module/store.d.ts.map +1 -1
- package/lib/typescript/module/wrap.d.ts +43 -29
- package/lib/typescript/module/wrap.d.ts.map +1 -1
- package/package.json +20 -10
- package/src/DefaultResolver.spec.ts +103 -3
- package/src/DefaultResolver.ts +9 -2
- package/src/checkForUpdate.ts +9 -2
- package/src/index.spec.ts +149 -1
- package/src/index.ts +99 -40
- package/src/native.spec.ts +139 -1
- package/src/native.ts +145 -31
- package/src/sdkVersion.ts +1 -0
- package/src/specs/NativeHotUpdater.ts +28 -0
- package/src/store.spec.ts +324 -9
- package/src/store.ts +133 -7
- package/src/wrap.spec.ts +91 -0
- package/src/wrap.tsx +79 -42
package/lib/module/store.spec.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
4
|
-
const
|
|
4
|
+
const listeners = vi.hoisted(() => new Map());
|
|
5
5
|
vi.mock("./native", () => ({
|
|
6
|
-
addListener:
|
|
6
|
+
addListener: vi.fn((eventName, listener) => {
|
|
7
|
+
listeners.set(eventName, listener);
|
|
8
|
+
return () => {
|
|
9
|
+
listeners.delete(eventName);
|
|
10
|
+
};
|
|
11
|
+
})
|
|
7
12
|
}));
|
|
8
13
|
const importStore = async () => {
|
|
9
14
|
const {
|
|
@@ -13,8 +18,8 @@ const importStore = async () => {
|
|
|
13
18
|
};
|
|
14
19
|
describe("hotUpdaterStore", () => {
|
|
15
20
|
beforeEach(() => {
|
|
21
|
+
listeners.clear();
|
|
16
22
|
vi.resetModules();
|
|
17
|
-
addListenerMock.mockReset();
|
|
18
23
|
});
|
|
19
24
|
it("does not notify subscribers when state values are unchanged", async () => {
|
|
20
25
|
const store = await importStore();
|
|
@@ -33,15 +38,19 @@ describe("hotUpdaterStore", () => {
|
|
|
33
38
|
it("notifies subscribers only when progress events change the snapshot", async () => {
|
|
34
39
|
const store = await importStore();
|
|
35
40
|
const listener = vi.fn();
|
|
36
|
-
const
|
|
41
|
+
const emitProgress = listeners.get("onProgress");
|
|
42
|
+
expect(emitProgress).toBeTypeOf("function");
|
|
37
43
|
const unsubscribe = store.subscribe(listener);
|
|
38
|
-
|
|
44
|
+
emitProgress?.({
|
|
45
|
+
artifactType: "archive",
|
|
39
46
|
progress: 0.5
|
|
40
47
|
});
|
|
41
|
-
|
|
48
|
+
emitProgress?.({
|
|
49
|
+
artifactType: "archive",
|
|
42
50
|
progress: 0.5
|
|
43
51
|
});
|
|
44
|
-
|
|
52
|
+
emitProgress?.({
|
|
53
|
+
artifactType: "archive",
|
|
45
54
|
progress: 1
|
|
46
55
|
});
|
|
47
56
|
store.setState({
|
|
@@ -49,10 +58,258 @@ describe("hotUpdaterStore", () => {
|
|
|
49
58
|
});
|
|
50
59
|
expect(listener).toHaveBeenCalledTimes(2);
|
|
51
60
|
expect(store.getSnapshot()).toEqual({
|
|
61
|
+
artifactType: "archive",
|
|
62
|
+
details: null,
|
|
63
|
+
downloadedBytes: undefined,
|
|
52
64
|
isUpdateDownloaded: true,
|
|
53
|
-
progress: 1
|
|
65
|
+
progress: 1,
|
|
66
|
+
totalBytes: undefined
|
|
54
67
|
});
|
|
55
68
|
unsubscribe();
|
|
56
69
|
});
|
|
70
|
+
it("stores archive byte metadata and notifies when only bytes change", async () => {
|
|
71
|
+
const store = await importStore();
|
|
72
|
+
const listener = vi.fn();
|
|
73
|
+
const emitProgress = listeners.get("onProgress");
|
|
74
|
+
const unsubscribe = store.subscribe(listener);
|
|
75
|
+
emitProgress?.({
|
|
76
|
+
artifactType: "archive",
|
|
77
|
+
downloadedBytes: 100.4,
|
|
78
|
+
progress: 0.5,
|
|
79
|
+
totalBytes: 1_000
|
|
80
|
+
});
|
|
81
|
+
emitProgress?.({
|
|
82
|
+
artifactType: "archive",
|
|
83
|
+
downloadedBytes: 250,
|
|
84
|
+
progress: 0.5,
|
|
85
|
+
totalBytes: 1_000
|
|
86
|
+
});
|
|
87
|
+
expect(listener).toHaveBeenCalledTimes(2);
|
|
88
|
+
expect(store.getSnapshot()).toEqual({
|
|
89
|
+
artifactType: "archive",
|
|
90
|
+
details: null,
|
|
91
|
+
downloadedBytes: 250,
|
|
92
|
+
isUpdateDownloaded: false,
|
|
93
|
+
progress: 0.5,
|
|
94
|
+
totalBytes: 1_000
|
|
95
|
+
});
|
|
96
|
+
unsubscribe();
|
|
97
|
+
});
|
|
98
|
+
it("stores manifest progress metadata while keeping overall progress", async () => {
|
|
99
|
+
const store = await importStore();
|
|
100
|
+
const emitProgress = listeners.get("onProgress");
|
|
101
|
+
expect(emitProgress).toBeTypeOf("function");
|
|
102
|
+
emitProgress?.({
|
|
103
|
+
artifactType: "diff",
|
|
104
|
+
details: {
|
|
105
|
+
completedFilesCount: 1,
|
|
106
|
+
files: [{
|
|
107
|
+
downloadPath: "index.ios.bundle",
|
|
108
|
+
order: 0,
|
|
109
|
+
path: "index.ios.bundle",
|
|
110
|
+
progress: 1,
|
|
111
|
+
status: "downloaded"
|
|
112
|
+
}, {
|
|
113
|
+
downloadPath: "assets/logo.png",
|
|
114
|
+
order: 1,
|
|
115
|
+
path: "assets/logo.png",
|
|
116
|
+
progress: 0.5,
|
|
117
|
+
status: "downloading"
|
|
118
|
+
}],
|
|
119
|
+
totalFilesCount: 2
|
|
120
|
+
},
|
|
121
|
+
progress: 0.42
|
|
122
|
+
});
|
|
123
|
+
expect(store.getSnapshot()).toEqual({
|
|
124
|
+
artifactType: "diff",
|
|
125
|
+
details: {
|
|
126
|
+
completedFilesCount: 1,
|
|
127
|
+
files: [{
|
|
128
|
+
downloadPath: "index.ios.bundle",
|
|
129
|
+
order: 0,
|
|
130
|
+
path: "index.ios.bundle",
|
|
131
|
+
progress: 1,
|
|
132
|
+
status: "downloaded"
|
|
133
|
+
}, {
|
|
134
|
+
downloadPath: "assets/logo.png",
|
|
135
|
+
order: 1,
|
|
136
|
+
path: "assets/logo.png",
|
|
137
|
+
progress: 0.5,
|
|
138
|
+
status: "downloading"
|
|
139
|
+
}],
|
|
140
|
+
totalFilesCount: 2
|
|
141
|
+
},
|
|
142
|
+
downloadedBytes: undefined,
|
|
143
|
+
isUpdateDownloaded: false,
|
|
144
|
+
progress: 0.42,
|
|
145
|
+
totalBytes: undefined
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
it("preserves patch download metadata for manifest diff files", async () => {
|
|
149
|
+
const store = await importStore();
|
|
150
|
+
const emitProgress = listeners.get("onProgress");
|
|
151
|
+
emitProgress?.({
|
|
152
|
+
artifactType: "diff",
|
|
153
|
+
details: {
|
|
154
|
+
completedFilesCount: 0,
|
|
155
|
+
files: [{
|
|
156
|
+
downloadPath: "index.ios.bundle.bsdiff",
|
|
157
|
+
order: 0,
|
|
158
|
+
path: "index.ios.bundle",
|
|
159
|
+
progress: 0.4,
|
|
160
|
+
status: "downloading"
|
|
161
|
+
}],
|
|
162
|
+
totalFilesCount: 1
|
|
163
|
+
},
|
|
164
|
+
progress: 0.32
|
|
165
|
+
});
|
|
166
|
+
expect(store.getSnapshot().details?.files).toEqual([{
|
|
167
|
+
downloadPath: "index.ios.bundle.bsdiff",
|
|
168
|
+
downloadedBytes: undefined,
|
|
169
|
+
order: 0,
|
|
170
|
+
path: "index.ios.bundle",
|
|
171
|
+
progress: 0.4,
|
|
172
|
+
status: "downloading",
|
|
173
|
+
totalBytes: undefined
|
|
174
|
+
}]);
|
|
175
|
+
});
|
|
176
|
+
it("stores diff snapshot transitions from downloading to downloaded", async () => {
|
|
177
|
+
const store = await importStore();
|
|
178
|
+
const emitProgress = listeners.get("onProgress");
|
|
179
|
+
emitProgress?.({
|
|
180
|
+
artifactType: "diff",
|
|
181
|
+
details: {
|
|
182
|
+
completedFilesCount: 0,
|
|
183
|
+
files: [{
|
|
184
|
+
order: 0,
|
|
185
|
+
path: "index.ios.bundle",
|
|
186
|
+
progress: 0.6,
|
|
187
|
+
status: "downloading"
|
|
188
|
+
}, {
|
|
189
|
+
order: 1,
|
|
190
|
+
path: "assets/logo.png",
|
|
191
|
+
progress: 0,
|
|
192
|
+
status: "pending"
|
|
193
|
+
}],
|
|
194
|
+
totalFilesCount: 2
|
|
195
|
+
},
|
|
196
|
+
progress: 0.4
|
|
197
|
+
});
|
|
198
|
+
emitProgress?.({
|
|
199
|
+
artifactType: "diff",
|
|
200
|
+
details: {
|
|
201
|
+
completedFilesCount: 1,
|
|
202
|
+
files: [{
|
|
203
|
+
downloadPath: "index.ios.bundle",
|
|
204
|
+
order: 0,
|
|
205
|
+
path: "index.ios.bundle",
|
|
206
|
+
progress: 1,
|
|
207
|
+
status: "downloaded"
|
|
208
|
+
}, {
|
|
209
|
+
downloadPath: "assets/logo.png",
|
|
210
|
+
order: 1,
|
|
211
|
+
path: "assets/logo.png",
|
|
212
|
+
progress: 0,
|
|
213
|
+
status: "pending"
|
|
214
|
+
}],
|
|
215
|
+
totalFilesCount: 2
|
|
216
|
+
},
|
|
217
|
+
progress: 0.6
|
|
218
|
+
});
|
|
219
|
+
expect(store.getSnapshot()).toEqual({
|
|
220
|
+
artifactType: "diff",
|
|
221
|
+
details: {
|
|
222
|
+
completedFilesCount: 1,
|
|
223
|
+
files: [{
|
|
224
|
+
downloadPath: "index.ios.bundle",
|
|
225
|
+
order: 0,
|
|
226
|
+
path: "index.ios.bundle",
|
|
227
|
+
progress: 1,
|
|
228
|
+
status: "downloaded"
|
|
229
|
+
}, {
|
|
230
|
+
downloadPath: "assets/logo.png",
|
|
231
|
+
order: 1,
|
|
232
|
+
path: "assets/logo.png",
|
|
233
|
+
progress: 0,
|
|
234
|
+
status: "pending"
|
|
235
|
+
}],
|
|
236
|
+
totalFilesCount: 2
|
|
237
|
+
},
|
|
238
|
+
downloadedBytes: undefined,
|
|
239
|
+
isUpdateDownloaded: false,
|
|
240
|
+
progress: 0.6,
|
|
241
|
+
totalBytes: undefined
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
it("clears manifest metadata when archive progress events arrive", async () => {
|
|
245
|
+
const store = await importStore();
|
|
246
|
+
const emitProgress = listeners.get("onProgress");
|
|
247
|
+
emitProgress?.({
|
|
248
|
+
artifactType: "diff",
|
|
249
|
+
details: {
|
|
250
|
+
completedFilesCount: 2,
|
|
251
|
+
files: [{
|
|
252
|
+
order: 0,
|
|
253
|
+
path: "index.ios.bundle",
|
|
254
|
+
progress: 1,
|
|
255
|
+
status: "downloaded"
|
|
256
|
+
}, {
|
|
257
|
+
order: 1,
|
|
258
|
+
path: "assets/logo.png",
|
|
259
|
+
progress: 1,
|
|
260
|
+
status: "downloaded"
|
|
261
|
+
}, {
|
|
262
|
+
order: 2,
|
|
263
|
+
path: "assets/bg.png",
|
|
264
|
+
progress: 0,
|
|
265
|
+
status: "pending"
|
|
266
|
+
}],
|
|
267
|
+
totalFilesCount: 3
|
|
268
|
+
},
|
|
269
|
+
progress: 0.9
|
|
270
|
+
});
|
|
271
|
+
emitProgress?.({
|
|
272
|
+
artifactType: "archive",
|
|
273
|
+
progress: 0.25
|
|
274
|
+
});
|
|
275
|
+
expect(store.getSnapshot()).toEqual({
|
|
276
|
+
artifactType: "archive",
|
|
277
|
+
details: null,
|
|
278
|
+
downloadedBytes: undefined,
|
|
279
|
+
isUpdateDownloaded: false,
|
|
280
|
+
progress: 0.25,
|
|
281
|
+
totalBytes: undefined
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
it("clears stale manifest metadata even when archive events omit optional fields", async () => {
|
|
285
|
+
const store = await importStore();
|
|
286
|
+
const emitProgress = listeners.get("onProgress");
|
|
287
|
+
emitProgress?.({
|
|
288
|
+
artifactType: "diff",
|
|
289
|
+
details: {
|
|
290
|
+
completedFilesCount: 0,
|
|
291
|
+
files: [{
|
|
292
|
+
order: 0,
|
|
293
|
+
path: "manifest.asset.png",
|
|
294
|
+
progress: 0,
|
|
295
|
+
status: "failed"
|
|
296
|
+
}],
|
|
297
|
+
totalFilesCount: 1
|
|
298
|
+
},
|
|
299
|
+
progress: 0.2
|
|
300
|
+
});
|
|
301
|
+
emitProgress?.({
|
|
302
|
+
artifactType: "archive",
|
|
303
|
+
progress: 0.4
|
|
304
|
+
});
|
|
305
|
+
expect(store.getSnapshot()).toEqual({
|
|
306
|
+
artifactType: "archive",
|
|
307
|
+
details: null,
|
|
308
|
+
downloadedBytes: undefined,
|
|
309
|
+
isUpdateDownloaded: false,
|
|
310
|
+
progress: 0.4,
|
|
311
|
+
totalBytes: undefined
|
|
312
|
+
});
|
|
313
|
+
});
|
|
57
314
|
});
|
|
58
315
|
//# sourceMappingURL=store.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["beforeEach","describe","expect","it","vi","
|
|
1
|
+
{"version":3,"names":["beforeEach","describe","expect","it","vi","listeners","hoisted","Map","mock","addListener","fn","eventName","listener","set","delete","importStore","hotUpdaterStore","clear","resetModules","store","unsubscribe","subscribe","setState","progress","isUpdateDownloaded","not","toHaveBeenCalled","emitProgress","get","toBeTypeOf","artifactType","toHaveBeenCalledTimes","getSnapshot","toEqual","details","downloadedBytes","undefined","totalBytes","completedFilesCount","files","downloadPath","order","path","status","totalFilesCount"],"sourceRoot":"../../src","sources":["store.spec.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/wrap.js
CHANGED
|
@@ -7,7 +7,7 @@ import { getBundleId, notifyAppReady as nativeNotifyAppReady, reload } from "./n
|
|
|
7
7
|
import { useHotUpdaterStore } from "./store.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Common options shared
|
|
10
|
+
* Common options shared by HotUpdater initialization APIs.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -27,6 +27,14 @@ import { useHotUpdaterStore } from "./store.js";
|
|
|
27
27
|
* Always has resolver (never baseURL)
|
|
28
28
|
*/
|
|
29
29
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
30
|
+
let didWarnManualWrapDeprecation = false;
|
|
31
|
+
const warnManualWrapDeprecation = () => {
|
|
32
|
+
if (didWarnManualWrapDeprecation) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
didWarnManualWrapDeprecation = true;
|
|
36
|
+
console.warn('[HotUpdater] HotUpdater.wrap({ updateMode: "manual" }) is deprecated. ' + "Move the same baseURL/resolver options to HotUpdater.init({ ... }), " + "export your root component directly, and call " + "HotUpdater.checkForUpdate(...) from your manual update flow. " + "See https://hot-updater.dev/docs/guides/custom-update");
|
|
37
|
+
};
|
|
30
38
|
const waitForNextFrame = () => new Promise(resolve => {
|
|
31
39
|
const requestAnimationFrame = globalThis?.requestAnimationFrame;
|
|
32
40
|
if (requestAnimationFrame) {
|
|
@@ -52,11 +60,13 @@ const handleNotifyAppReady = async options => {
|
|
|
52
60
|
requestHeaders: options.requestHeaders,
|
|
53
61
|
requestTimeout: options.requestTimeout
|
|
54
62
|
}).catch(e => {
|
|
63
|
+
options.onError?.(e);
|
|
55
64
|
console.warn("[HotUpdater] Resolver notifyAppReady failed:", e);
|
|
56
65
|
});
|
|
57
66
|
}
|
|
58
67
|
options.onNotifyAppReady?.(nativeResult);
|
|
59
68
|
} catch (e) {
|
|
69
|
+
options.onError?.(e);
|
|
60
70
|
console.warn("[HotUpdater] Failed to notify app ready:", e);
|
|
61
71
|
}
|
|
62
72
|
};
|
|
@@ -65,6 +75,7 @@ export function init(options) {
|
|
|
65
75
|
}
|
|
66
76
|
export function wrap(options) {
|
|
67
77
|
if (options.updateMode === "manual") {
|
|
78
|
+
warnManualWrapDeprecation();
|
|
68
79
|
return WrappedComponent => {
|
|
69
80
|
const ManualHOC = props => {
|
|
70
81
|
useEffect(() => {
|
|
@@ -77,15 +88,14 @@ export function wrap(options) {
|
|
|
77
88
|
return ManualHOC;
|
|
78
89
|
};
|
|
79
90
|
}
|
|
80
|
-
|
|
81
|
-
// updateMode: "auto"
|
|
82
91
|
const {
|
|
83
92
|
reloadOnForceUpdate = true,
|
|
84
93
|
...restOptions
|
|
85
94
|
} = options;
|
|
86
95
|
return WrappedComponent => {
|
|
87
96
|
const HotUpdaterHOC = props => {
|
|
88
|
-
const
|
|
97
|
+
const progressState = useHotUpdaterStore(state => state);
|
|
98
|
+
const progress = progressState.progress;
|
|
89
99
|
const [message, setMessage] = useState(null);
|
|
90
100
|
const [updateStatus, setUpdateStatus] = useState("CHECK_FOR_UPDATE");
|
|
91
101
|
const initHotUpdater = useEventCallback(async () => {
|
|
@@ -159,9 +169,13 @@ export function wrap(options) {
|
|
|
159
169
|
if (restOptions.fallbackComponent && updateStatus !== "UPDATE_PROCESS_COMPLETED") {
|
|
160
170
|
const Fallback = restOptions.fallbackComponent;
|
|
161
171
|
return /*#__PURE__*/_jsx(Fallback, {
|
|
172
|
+
artifactType: progressState.artifactType,
|
|
173
|
+
details: progressState.details,
|
|
174
|
+
downloadedBytes: progressState.downloadedBytes,
|
|
162
175
|
progress: progress,
|
|
163
176
|
status: updateStatus,
|
|
164
|
-
message: message
|
|
177
|
+
message: message,
|
|
178
|
+
totalBytes: progressState.totalBytes
|
|
165
179
|
});
|
|
166
180
|
}
|
|
167
181
|
return /*#__PURE__*/_jsx(WrappedComponent, {
|
package/lib/module/wrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","checkForUpdate","useEventCallback","getBundleId","notifyAppReady","nativeNotifyAppReady","reload","useHotUpdaterStore","jsx","_jsx","waitForNextFrame","Promise","resolve","requestAnimationFrame","globalThis","then","handleNotifyAppReady","options","nativeResult","resolver","status","crashedBundleId","requestHeaders","requestTimeout","catch","e","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","checkForUpdate","useEventCallback","getBundleId","notifyAppReady","nativeNotifyAppReady","reload","useHotUpdaterStore","jsx","_jsx","didWarnManualWrapDeprecation","warnManualWrapDeprecation","console","warn","waitForNextFrame","Promise","resolve","requestAnimationFrame","globalThis","then","handleNotifyAppReady","options","nativeResult","resolver","status","crashedBundleId","requestHeaders","requestTimeout","catch","e","onError","onNotifyAppReady","init","wrap","updateMode","WrappedComponent","ManualHOC","props","reloadOnForceUpdate","restOptions","HotUpdaterHOC","progressState","state","progress","message","setMessage","updateStatus","setUpdateStatus","initHotUpdater","updateInfo","updateStrategy","onUpdateProcessCompleted","shouldForceUpdate","id","updateBundle","error","isSuccess","Error","onProgress","fallbackComponent","Fallback","artifactType","details","downloadedBytes","totalBytes"],"sourceRoot":"../../src","sources":["wrap.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/wrap.spec.js
CHANGED
|
@@ -70,5 +70,79 @@ describe("HotUpdater wrap initialization", () => {
|
|
|
70
70
|
requestTimeout: 1000
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
|
+
it("calls init onError when app-ready notification fails", async () => {
|
|
74
|
+
vi.useFakeTimers();
|
|
75
|
+
const warn = vi.spyOn(console, "warn").mockImplementation(() => {});
|
|
76
|
+
const error = new Error("notify failed");
|
|
77
|
+
const onError = vi.fn();
|
|
78
|
+
const requestAnimationFrame = vi.fn(callback => {
|
|
79
|
+
setTimeout(() => callback(0), 0);
|
|
80
|
+
return 1;
|
|
81
|
+
});
|
|
82
|
+
vi.stubGlobal("requestAnimationFrame", requestAnimationFrame);
|
|
83
|
+
const resolver = {
|
|
84
|
+
checkUpdate: vi.fn(),
|
|
85
|
+
notifyAppReady: vi.fn().mockRejectedValue(error)
|
|
86
|
+
};
|
|
87
|
+
const {
|
|
88
|
+
init
|
|
89
|
+
} = await import("./wrap");
|
|
90
|
+
init({
|
|
91
|
+
resolver,
|
|
92
|
+
onError
|
|
93
|
+
});
|
|
94
|
+
await vi.runOnlyPendingTimersAsync();
|
|
95
|
+
expect(onError).toHaveBeenCalledWith(error);
|
|
96
|
+
warn.mockRestore();
|
|
97
|
+
});
|
|
98
|
+
it("warns when the deprecated manual wrap HOC is used", async () => {
|
|
99
|
+
const warn = vi.spyOn(console, "warn").mockImplementation(() => {});
|
|
100
|
+
const {
|
|
101
|
+
wrap
|
|
102
|
+
} = await import("./wrap");
|
|
103
|
+
wrap({
|
|
104
|
+
resolver: {
|
|
105
|
+
checkUpdate: vi.fn(),
|
|
106
|
+
notifyAppReady: vi.fn()
|
|
107
|
+
},
|
|
108
|
+
updateMode: "manual"
|
|
109
|
+
});
|
|
110
|
+
expect(warn).toHaveBeenCalledWith(expect.stringContaining('HotUpdater.wrap({ updateMode: "manual" }) is deprecated'));
|
|
111
|
+
warn.mockRestore();
|
|
112
|
+
});
|
|
113
|
+
it("preserves wrapped component prop inference", async () => {
|
|
114
|
+
const {
|
|
115
|
+
wrap
|
|
116
|
+
} = await import("./wrap");
|
|
117
|
+
const Component = () => null;
|
|
118
|
+
const WrappedComponent = wrap({
|
|
119
|
+
resolver: {
|
|
120
|
+
checkUpdate: vi.fn(),
|
|
121
|
+
notifyAppReady: vi.fn()
|
|
122
|
+
},
|
|
123
|
+
updateMode: "auto",
|
|
124
|
+
updateStrategy: "appVersion"
|
|
125
|
+
})(Component);
|
|
126
|
+
const acceptsTitleProps = WrappedComponent;
|
|
127
|
+
expect(acceptsTitleProps).toBe(WrappedComponent);
|
|
128
|
+
});
|
|
129
|
+
it("types public wrap options as automatic mode by default", () => {
|
|
130
|
+
const autoOptions = {
|
|
131
|
+
baseURL: "https://updates.example.com",
|
|
132
|
+
updateStrategy: "appVersion"
|
|
133
|
+
};
|
|
134
|
+
const explicitAutoOptions = {
|
|
135
|
+
baseURL: "https://updates.example.com",
|
|
136
|
+
updateMode: "auto",
|
|
137
|
+
updateStrategy: "appVersion"
|
|
138
|
+
};
|
|
139
|
+
const manualOptions = {
|
|
140
|
+
baseURL: "https://updates.example.com",
|
|
141
|
+
updateMode: "manual"
|
|
142
|
+
};
|
|
143
|
+
expect(autoOptions.updateStrategy).toBe("appVersion");
|
|
144
|
+
expect(explicitAutoOptions.updateMode).toBe("auto");
|
|
145
|
+
expect(manualOptions.updateMode).toBe("manual");
|
|
146
|
+
});
|
|
73
147
|
});
|
|
74
148
|
//# sourceMappingURL=wrap.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["beforeEach","describe","expect","it","vi","mocks","hoisted","addListener","fn","checkForUpdate","getBundleId","notifyAppReady","status","reload","mock","resetModules","unstubAllGlobals","useRealTimers","Object","values","mockReset","mockResolvedValue","mockReturnValue","useFakeTimers","requestAnimationFrame","callback","setTimeout","stubGlobal","resolver","checkUpdate","undefined","init","result","requestHeaders","Authorization","requestTimeout","toBeUndefined","not","toHaveBeenCalled","runOnlyPendingTimersAsync","toHaveBeenCalledWith","crashedBundleId"],"sourceRoot":"../../src","sources":["wrap.spec.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["beforeEach","describe","expect","it","vi","mocks","hoisted","addListener","fn","checkForUpdate","getBundleId","notifyAppReady","status","reload","mock","resetModules","unstubAllGlobals","useRealTimers","Object","values","mockReset","mockResolvedValue","mockReturnValue","useFakeTimers","requestAnimationFrame","callback","setTimeout","stubGlobal","resolver","checkUpdate","undefined","init","result","requestHeaders","Authorization","requestTimeout","toBeUndefined","not","toHaveBeenCalled","runOnlyPendingTimersAsync","toHaveBeenCalledWith","crashedBundleId","warn","spyOn","console","mockImplementation","error","Error","onError","mockRejectedValue","mockRestore","wrap","updateMode","stringContaining","Component","WrappedComponent","updateStrategy","acceptsTitleProps","toBe","autoOptions","baseURL","explicitAutoOptions","manualOptions"],"sourceRoot":"../../src","sources":["wrap.spec.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultResolver.d.ts","sourceRoot":"","sources":["../../../src/DefaultResolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DefaultResolver.d.ts","sourceRoot":"","sources":["../../../src/DefaultResolver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAajB;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,iBAAiB,GACzB,kBAAkB,CA+BpB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AppUpdateAvailableInfo } from "@hot-updater/core";
|
|
2
2
|
import type { HotUpdaterResolver } from "./types";
|
|
3
3
|
export interface CheckForUpdateOptions {
|
|
4
4
|
/**
|
|
@@ -21,7 +21,7 @@ export interface CheckForUpdateOptions {
|
|
|
21
21
|
*/
|
|
22
22
|
requestTimeout?: number;
|
|
23
23
|
}
|
|
24
|
-
export type CheckForUpdateResult =
|
|
24
|
+
export type CheckForUpdateResult = AppUpdateAvailableInfo & {
|
|
25
25
|
/**
|
|
26
26
|
* Updates the bundle.
|
|
27
27
|
* This method is equivalent to `HotUpdater.updateBundle()` but with all required arguments pre-filled.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAiB,MAAM,mBAAmB,CAAC;AAgB/E,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,sBAAsB,GAAG;IAC1D;;;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,CAqHtC"}
|
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
import { type CheckForUpdateOptions } from "./checkForUpdate";
|
|
2
2
|
import { setReloadBehavior, type UpdateParams } from "./native";
|
|
3
|
-
import { type HotUpdaterInitOptions, type HotUpdaterOptions } from "./wrap";
|
|
4
|
-
export type { CustomReloadHandler, HotUpdaterEvent, Manifest, ManifestAsset, NotifyAppReadyResult, ReloadBehavior, ReloadBehaviorSetting, } from "./native";
|
|
3
|
+
import { type AutoUpdateOptions, type HotUpdaterInitOptions, type HotUpdaterOptions, type ManualUpdateOptions, wrap } from "./wrap";
|
|
4
|
+
export type { CustomReloadHandler, HotUpdaterEvent, HotUpdaterProgressArtifactType, HotUpdaterProgressEvent, Manifest, ManifestAsset, NotifyAppReadyResult, ReloadBehavior, ReloadBehaviorSetting, } from "./native";
|
|
5
5
|
export * from "./store";
|
|
6
6
|
export { extractSignatureFailure, type HotUpdaterBaseURL, type HotUpdaterResolver, isSignatureVerificationError, type ResolverCheckUpdateParams, type ResolverNotifyAppReadyParams, type SignatureVerificationFailure, } from "./types";
|
|
7
|
-
export type { HotUpdaterInitOptions, HotUpdaterOptions, RunUpdateProcessResponse, } from "./wrap";
|
|
8
|
-
|
|
7
|
+
export type { HotUpdaterFallbackComponentProps, HotUpdaterInitOptions, HotUpdaterOptions, ManualUpdateOptions, RunUpdateProcessResponse, } from "./wrap";
|
|
8
|
+
type HotUpdaterWrap = {
|
|
9
|
+
(options: AutoUpdateOptions): ReturnType<typeof wrap>;
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated Replace manual `HotUpdater.wrap` with `HotUpdater.init`.
|
|
12
|
+
*
|
|
13
|
+
* ```tsx
|
|
14
|
+
* import { HotUpdater } from "@hot-updater/react-native";
|
|
15
|
+
*
|
|
16
|
+
* HotUpdater.init({
|
|
17
|
+
* baseURL: "<your-update-server-url>",
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* export default App;
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* Then call `HotUpdater.checkForUpdate(...)` from your manual update flow.
|
|
24
|
+
* See https://hot-updater.dev/docs/guides/custom-update
|
|
25
|
+
*/
|
|
26
|
+
(options: ManualUpdateOptions): ReturnType<typeof wrap>;
|
|
27
|
+
(options: HotUpdaterOptions): ReturnType<typeof wrap>;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Creates a HotUpdater client instance with all update management methods.
|
|
31
|
+
* This function is called once on module initialization to create a singleton instance.
|
|
32
|
+
*/
|
|
33
|
+
declare function createHotUpdaterClient(): {
|
|
9
34
|
/**
|
|
10
35
|
* `HotUpdater.wrap` checks for updates at the entry point, and if there is a bundle to update, it downloads the bundle and applies the update strategy.
|
|
11
36
|
*
|
|
@@ -23,20 +48,19 @@ export declare const HotUpdater: {
|
|
|
23
48
|
* export default HotUpdater.wrap({
|
|
24
49
|
* baseURL: "<your-update-server-url>",
|
|
25
50
|
* updateStrategy: "appVersion",
|
|
26
|
-
* updateMode: "auto",
|
|
27
51
|
* requestHeaders: {
|
|
28
52
|
* "Authorization": "Bearer <your-access-token>",
|
|
29
53
|
* },
|
|
30
54
|
* })(App);
|
|
31
55
|
* ```
|
|
32
56
|
*/
|
|
33
|
-
wrap: (options: HotUpdaterOptions) => (WrappedComponent:
|
|
57
|
+
wrap: (options: HotUpdaterOptions) => <P extends object>(WrappedComponent: React.ComponentType<P>) => React.ComponentType<P>;
|
|
34
58
|
/**
|
|
35
59
|
* Initializes HotUpdater without wrapping a React component.
|
|
36
60
|
*
|
|
37
61
|
* Use this for manual update flows in runtimes where a root component HOC
|
|
38
|
-
* is not convenient.
|
|
39
|
-
* `HotUpdater.wrap({ updateMode: "manual" })(App)
|
|
62
|
+
* is not convenient. Replace deprecated manual
|
|
63
|
+
* `HotUpdater.wrap({ updateMode: "manual" })(App)` usage with this API.
|
|
40
64
|
*
|
|
41
65
|
* @example
|
|
42
66
|
* ```tsx
|
|
@@ -267,4 +291,8 @@ export declare const HotUpdater: {
|
|
|
267
291
|
*/
|
|
268
292
|
clearCrashHistory: () => boolean;
|
|
269
293
|
};
|
|
294
|
+
type HotUpdaterClient = Omit<ReturnType<typeof createHotUpdaterClient>, "wrap"> & {
|
|
295
|
+
wrap: HotUpdaterWrap;
|
|
296
|
+
};
|
|
297
|
+
export declare const HotUpdater: HotUpdaterClient;
|
|
270
298
|
//# sourceMappingURL=index.d.ts.map
|