@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.
Files changed (119) hide show
  1. package/HotUpdater.podspec +1 -0
  2. package/android/build.gradle +1 -0
  3. package/android/src/main/java/com/hotupdater/BsdiffPatch.kt +284 -0
  4. package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +885 -5
  5. package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +13 -2
  6. package/android/src/main/java/com/hotupdater/OkHttpDownloadService.kt +37 -8
  7. package/android/src/main/java/com/hotupdater/ReactNativeValueConverters.kt +48 -12
  8. package/android/src/main/java/com/hotupdater/SignatureVerifier.kt +60 -22
  9. package/android/src/newarch/HotUpdater.kt +14 -2
  10. package/android/src/newarch/HotUpdaterModule.kt +112 -1
  11. package/android/src/oldarch/HotUpdater.kt +14 -2
  12. package/android/src/oldarch/HotUpdaterModule.kt +107 -3
  13. package/android/src/test/java/com/hotupdater/BsdiffPatchTest.kt +46 -0
  14. package/android/src/test/java/com/hotupdater/BundleFileStorageServiceTest.kt +29 -1
  15. package/android/src/test/java/com/hotupdater/HotUpdaterImplTest.kt +4 -1
  16. package/ios/HotUpdater/Internal/BsdiffPatchBridge.h +16 -0
  17. package/ios/HotUpdater/Internal/BsdiffPatchBridge.mm +343 -0
  18. package/ios/HotUpdater/Internal/BundleFileStorageService.swift +1093 -47
  19. package/ios/HotUpdater/Internal/HotUpdater-Bridging-Header.h +2 -0
  20. package/ios/HotUpdater/Internal/HotUpdater.mm +12 -2
  21. package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +64 -5
  22. package/ios/HotUpdater/Internal/NotificationExtension.swift +2 -1
  23. package/ios/HotUpdater/Internal/SignatureVerifier.swift +28 -5
  24. package/ios/HotUpdater/Internal/StreamingTarArchiveExtractor.swift +11 -0
  25. package/ios/HotUpdater/Internal/URLSessionDownloadService.swift +11 -5
  26. package/lib/commonjs/DefaultResolver.js +6 -2
  27. package/lib/commonjs/DefaultResolver.js.map +1 -1
  28. package/lib/commonjs/DefaultResolver.spec.js +79 -3
  29. package/lib/commonjs/DefaultResolver.spec.js.map +1 -1
  30. package/lib/commonjs/checkForUpdate.js +6 -0
  31. package/lib/commonjs/checkForUpdate.js.map +1 -1
  32. package/lib/commonjs/index.js +53 -18
  33. package/lib/commonjs/index.js.map +1 -1
  34. package/lib/commonjs/index.spec.js +117 -1
  35. package/lib/commonjs/index.spec.js.map +1 -1
  36. package/lib/commonjs/native.js +40 -16
  37. package/lib/commonjs/native.js.map +1 -1
  38. package/lib/commonjs/native.spec.js +119 -3
  39. package/lib/commonjs/native.spec.js.map +1 -1
  40. package/lib/commonjs/sdkVersion.js +8 -0
  41. package/lib/commonjs/sdkVersion.js.map +1 -0
  42. package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
  43. package/lib/commonjs/store.js +72 -5
  44. package/lib/commonjs/store.js.map +1 -1
  45. package/lib/commonjs/store.spec.js +265 -8
  46. package/lib/commonjs/store.spec.js.map +1 -1
  47. package/lib/commonjs/wrap.js +19 -5
  48. package/lib/commonjs/wrap.js.map +1 -1
  49. package/lib/commonjs/wrap.spec.js +74 -0
  50. package/lib/commonjs/wrap.spec.js.map +1 -1
  51. package/lib/module/DefaultResolver.js +6 -2
  52. package/lib/module/DefaultResolver.js.map +1 -1
  53. package/lib/module/DefaultResolver.spec.js +78 -3
  54. package/lib/module/DefaultResolver.spec.js.map +1 -1
  55. package/lib/module/checkForUpdate.js +6 -0
  56. package/lib/module/checkForUpdate.js.map +1 -1
  57. package/lib/module/index.js +53 -18
  58. package/lib/module/index.js.map +1 -1
  59. package/lib/module/index.spec.js +117 -1
  60. package/lib/module/index.spec.js.map +1 -1
  61. package/lib/module/native.js +40 -16
  62. package/lib/module/native.js.map +1 -1
  63. package/lib/module/native.spec.js +119 -3
  64. package/lib/module/native.spec.js.map +1 -1
  65. package/lib/module/sdkVersion.js +4 -0
  66. package/lib/module/sdkVersion.js.map +1 -0
  67. package/lib/module/specs/NativeHotUpdater.js.map +1 -1
  68. package/lib/module/store.js +72 -5
  69. package/lib/module/store.js.map +1 -1
  70. package/lib/module/store.spec.js +265 -8
  71. package/lib/module/store.spec.js.map +1 -1
  72. package/lib/module/wrap.js +19 -5
  73. package/lib/module/wrap.js.map +1 -1
  74. package/lib/module/wrap.spec.js +74 -0
  75. package/lib/module/wrap.spec.js.map +1 -1
  76. package/lib/typescript/commonjs/DefaultResolver.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/checkForUpdate.d.ts +2 -2
  78. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/index.d.ts +36 -8
  80. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/native.d.ts +56 -3
  82. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  83. package/lib/typescript/commonjs/sdkVersion.d.ts +2 -0
  84. package/lib/typescript/commonjs/sdkVersion.d.ts.map +1 -0
  85. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +27 -0
  86. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/store.d.ts +5 -0
  88. package/lib/typescript/commonjs/store.d.ts.map +1 -1
  89. package/lib/typescript/commonjs/wrap.d.ts +43 -29
  90. package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
  91. package/lib/typescript/module/DefaultResolver.d.ts.map +1 -1
  92. package/lib/typescript/module/checkForUpdate.d.ts +2 -2
  93. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  94. package/lib/typescript/module/index.d.ts +36 -8
  95. package/lib/typescript/module/index.d.ts.map +1 -1
  96. package/lib/typescript/module/native.d.ts +56 -3
  97. package/lib/typescript/module/native.d.ts.map +1 -1
  98. package/lib/typescript/module/sdkVersion.d.ts +2 -0
  99. package/lib/typescript/module/sdkVersion.d.ts.map +1 -0
  100. package/lib/typescript/module/specs/NativeHotUpdater.d.ts +27 -0
  101. package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
  102. package/lib/typescript/module/store.d.ts +5 -0
  103. package/lib/typescript/module/store.d.ts.map +1 -1
  104. package/lib/typescript/module/wrap.d.ts +43 -29
  105. package/lib/typescript/module/wrap.d.ts.map +1 -1
  106. package/package.json +20 -10
  107. package/src/DefaultResolver.spec.ts +103 -3
  108. package/src/DefaultResolver.ts +9 -2
  109. package/src/checkForUpdate.ts +9 -2
  110. package/src/index.spec.ts +149 -1
  111. package/src/index.ts +99 -40
  112. package/src/native.spec.ts +139 -1
  113. package/src/native.ts +145 -31
  114. package/src/sdkVersion.ts +1 -0
  115. package/src/specs/NativeHotUpdater.ts +28 -0
  116. package/src/store.spec.ts +324 -9
  117. package/src/store.ts +133 -7
  118. package/src/wrap.spec.ts +91 -0
  119. package/src/wrap.tsx +79 -42
@@ -1,9 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  import { beforeEach, describe, expect, it, vi } from "vitest";
4
- const addListenerMock = vi.hoisted(() => vi.fn());
4
+ const listeners = vi.hoisted(() => new Map());
5
5
  vi.mock("./native", () => ({
6
- addListener: addListenerMock
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 progressListener = addListenerMock.mock.calls[0][1];
41
+ const emitProgress = listeners.get("onProgress");
42
+ expect(emitProgress).toBeTypeOf("function");
37
43
  const unsubscribe = store.subscribe(listener);
38
- progressListener({
44
+ emitProgress?.({
45
+ artifactType: "archive",
39
46
  progress: 0.5
40
47
  });
41
- progressListener({
48
+ emitProgress?.({
49
+ artifactType: "archive",
42
50
  progress: 0.5
43
51
  });
44
- progressListener({
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","addListenerMock","hoisted","fn","mock","addListener","importStore","hotUpdaterStore","resetModules","mockReset","store","listener","unsubscribe","subscribe","setState","progress","isUpdateDownloaded","not","toHaveBeenCalled","progressListener","calls","toHaveBeenCalledTimes","getSnapshot","toEqual"],"sourceRoot":"../../src","sources":["store.spec.ts"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,EAAEC,EAAE,QAAQ,QAAQ;AAE7D,MAAMC,eAAe,GAAGD,EAAE,CAACE,OAAO,CAAC,MAAMF,EAAE,CAACG,EAAE,CAAC,CAAC,CAAC;AAEjDH,EAAE,CAACI,IAAI,CAAC,UAAU,EAAE,OAAO;EACzBC,WAAW,EAAEJ;AACf,CAAC,CAAC,CAAC;AAEH,MAAMK,WAAW,GAAG,MAAAA,CAAA,KAAY;EAC9B,MAAM;IAAEC;EAAgB,CAAC,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC;EACnD,OAAOA,eAAe;AACxB,CAAC;AAEDV,QAAQ,CAAC,iBAAiB,EAAE,MAAM;EAChCD,UAAU,CAAC,MAAM;IACfI,EAAE,CAACQ,YAAY,CAAC,CAAC;IACjBP,eAAe,CAACQ,SAAS,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEFV,EAAE,CAAC,6DAA6D,EAAE,YAAY;IAC5E,MAAMW,KAAK,GAAG,MAAMJ,WAAW,CAAC,CAAC;IACjC,MAAMK,QAAQ,GAAGX,EAAE,CAACG,EAAE,CAAC,CAAC;IAExB,MAAMS,WAAW,GAAGF,KAAK,CAACG,SAAS,CAACF,QAAQ,CAAC;IAE7CD,KAAK,CAACI,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClBJ,KAAK,CAACI,QAAQ,CAAC;MAAEC,QAAQ,EAAE;IAAE,CAAC,CAAC;IAC/BL,KAAK,CAACI,QAAQ,CAAC;MAAEE,kBAAkB,EAAE;IAAM,CAAC,CAAC;IAE7ClB,MAAM,CAACa,QAAQ,CAAC,CAACM,GAAG,CAACC,gBAAgB,CAAC,CAAC;IAEvCN,WAAW,CAAC,CAAC;EACf,CAAC,CAAC;EAEFb,EAAE,CAAC,oEAAoE,EAAE,YAAY;IACnF,MAAMW,KAAK,GAAG,MAAMJ,WAAW,CAAC,CAAC;IACjC,MAAMK,QAAQ,GAAGX,EAAE,CAACG,EAAE,CAAC,CAAC;IACxB,MAAMgB,gBAAgB,GAAGlB,eAAe,CAACG,IAAI,CAACgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAE9C;IAEV,MAAMR,WAAW,GAAGF,KAAK,CAACG,SAAS,CAACF,QAAQ,CAAC;IAE7CQ,gBAAgB,CAAC;MAAEJ,QAAQ,EAAE;IAAI,CAAC,CAAC;IACnCI,gBAAgB,CAAC;MAAEJ,QAAQ,EAAE;IAAI,CAAC,CAAC;IACnCI,gBAAgB,CAAC;MAAEJ,QAAQ,EAAE;IAAE,CAAC,CAAC;IACjCL,KAAK,CAACI,QAAQ,CAAC;MAAEE,kBAAkB,EAAE;IAAK,CAAC,CAAC;IAE5ClB,MAAM,CAACa,QAAQ,CAAC,CAACU,qBAAqB,CAAC,CAAC,CAAC;IACzCvB,MAAM,CAACY,KAAK,CAACY,WAAW,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC;MAClCP,kBAAkB,EAAE,IAAI;MACxBD,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEFH,WAAW,CAAC,CAAC;EACf,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
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":[]}
@@ -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 between auto and manual update modes
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 progress = useHotUpdaterStore(state => state.progress);
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, {
@@ -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","console","warn","onNotifyAppReady","init","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
+ {"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":[]}
@@ -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":"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","ignoreList":[]}
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":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAajB;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,iBAAiB,GACzB,kBAAkB,CAyBpB"}
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 { AppUpdateInfo } from "@hot-updater/core";
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 = AppUpdateInfo & {
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,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAgBvD,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
+ {"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
- export declare const HotUpdater: {
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: import("react").ComponentType<object>) => import("react").ComponentType<object>;
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. It has the same initialization effect as
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