@hot-updater/react-native 0.28.0 → 0.29.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 (73) hide show
  1. package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +156 -7
  2. package/android/src/main/java/com/hotupdater/CohortService.kt +73 -0
  3. package/android/src/main/java/com/hotupdater/DecompressService.kt +28 -22
  4. package/android/src/main/java/com/hotupdater/HotUpdaterException.kt +1 -1
  5. package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +12 -0
  6. package/android/src/main/java/com/hotupdater/ReactNativeValueConverters.kt +55 -0
  7. package/android/src/main/java/com/hotupdater/TarBrDecompressionStrategy.kt +19 -7
  8. package/android/src/newarch/HotUpdaterModule.kt +16 -19
  9. package/android/src/oldarch/HotUpdaterModule.kt +20 -20
  10. package/android/src/oldarch/HotUpdaterSpec.kt +12 -2
  11. package/ios/HotUpdater/Internal/BundleFileStorageService.swift +153 -31
  12. package/ios/HotUpdater/Internal/CohortService.swift +63 -0
  13. package/ios/HotUpdater/Internal/DecompressService.swift +53 -30
  14. package/ios/HotUpdater/Internal/HotUpdater.mm +111 -59
  15. package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +28 -0
  16. package/ios/HotUpdater/Internal/TarBrDecompressionStrategy.swift +24 -8
  17. package/lib/commonjs/DefaultResolver.js +3 -5
  18. package/lib/commonjs/DefaultResolver.js.map +1 -1
  19. package/lib/commonjs/checkForUpdate.js +2 -0
  20. package/lib/commonjs/checkForUpdate.js.map +1 -1
  21. package/lib/commonjs/index.js +13 -0
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/commonjs/native.js +193 -18
  24. package/lib/commonjs/native.js.map +1 -1
  25. package/lib/commonjs/native.spec.js +361 -4
  26. package/lib/commonjs/native.spec.js.map +1 -1
  27. package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
  28. package/lib/commonjs/types.js.map +1 -1
  29. package/lib/module/DefaultResolver.js +3 -5
  30. package/lib/module/DefaultResolver.js.map +1 -1
  31. package/lib/module/checkForUpdate.js +3 -1
  32. package/lib/module/checkForUpdate.js.map +1 -1
  33. package/lib/module/index.js +14 -1
  34. package/lib/module/index.js.map +1 -1
  35. package/lib/module/native.js +187 -14
  36. package/lib/module/native.js.map +1 -1
  37. package/lib/module/native.spec.js +361 -4
  38. package/lib/module/native.spec.js.map +1 -1
  39. package/lib/module/specs/NativeHotUpdater.js.map +1 -1
  40. package/lib/module/types.js.map +1 -1
  41. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/index.d.ts +14 -1
  43. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  44. package/lib/typescript/commonjs/native.d.ts +39 -8
  45. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  46. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +28 -0
  47. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
  48. package/lib/typescript/commonjs/types.d.ts +4 -0
  49. package/lib/typescript/commonjs/types.d.ts.map +1 -1
  50. package/lib/typescript/commonjs/wrap.d.ts +1 -1
  51. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  52. package/lib/typescript/module/index.d.ts +14 -1
  53. package/lib/typescript/module/index.d.ts.map +1 -1
  54. package/lib/typescript/module/native.d.ts +39 -8
  55. package/lib/typescript/module/native.d.ts.map +1 -1
  56. package/lib/typescript/module/specs/NativeHotUpdater.d.ts +28 -0
  57. package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
  58. package/lib/typescript/module/types.d.ts +4 -0
  59. package/lib/typescript/module/types.d.ts.map +1 -1
  60. package/lib/typescript/module/wrap.d.ts +1 -1
  61. package/package.json +6 -6
  62. package/src/DefaultResolver.ts +4 -4
  63. package/src/checkForUpdate.ts +4 -0
  64. package/src/index.ts +21 -0
  65. package/src/native.spec.ts +400 -4
  66. package/src/native.ts +265 -20
  67. package/src/specs/NativeHotUpdater.ts +32 -0
  68. package/src/types.ts +5 -0
  69. package/src/wrap.tsx +1 -1
  70. package/lib/typescript/commonjs/native.spec.d.ts +0 -2
  71. package/lib/typescript/commonjs/native.spec.d.ts.map +0 -1
  72. package/lib/typescript/module/native.spec.d.ts +0 -2
  73. package/lib/typescript/module/native.spec.d.ts.map +0 -1
@@ -1,21 +1,28 @@
1
1
  "use strict";
2
2
 
3
+ import { INVALID_COHORT_ERROR_MESSAGE } from "@hot-updater/core";
3
4
  import { beforeEach, describe, expect, it, vi } from "vitest";
4
5
  const nativeModuleMock = vi.hoisted(() => {
5
- vi.stubGlobal("__HOT_UPDATER_BUNDLE_ID", "bundle-id");
6
+ const getManifest = vi.fn();
7
+ const getCrashHistory = vi.fn(() => []);
6
8
  return {
7
9
  clearCrashHistory: vi.fn(() => true),
8
10
  getBaseURL: vi.fn(() => null),
11
+ getBundleId: vi.fn(() => "bundle-id"),
12
+ getCohort: vi.fn(() => "123"),
13
+ getManifest,
14
+ getCrashHistory,
9
15
  getConstants: vi.fn(() => ({
10
16
  APP_VERSION: null,
11
17
  CHANNEL: "production",
12
18
  DEFAULT_CHANNEL: "production",
13
- FINGERPRINT_HASH: null
19
+ FINGERPRINT_HASH: null,
20
+ MIN_BUNDLE_ID: "min-bundle-id"
14
21
  })),
15
- getCrashHistory: vi.fn(() => []),
16
22
  notifyAppReady: vi.fn(),
17
23
  reload: vi.fn(),
18
24
  resetChannel: vi.fn(),
25
+ setCohort: vi.fn(),
19
26
  setBundleURL: vi.fn(),
20
27
  switchChannel: vi.fn(),
21
28
  updateBundle: vi.fn()
@@ -40,12 +47,33 @@ describe("notifyAppReady", () => {
40
47
  beforeEach(() => {
41
48
  vi.resetModules();
42
49
  nativeModuleMock.notifyAppReady.mockReset();
50
+ nativeModuleMock.getBaseURL.mockReset();
51
+ nativeModuleMock.getBundleId.mockReset();
52
+ nativeModuleMock.getCrashHistory.mockReset();
43
53
  nativeModuleMock.getConstants.mockReturnValue({
44
54
  APP_VERSION: null,
45
55
  CHANNEL: "production",
46
56
  DEFAULT_CHANNEL: "production",
47
- FINGERPRINT_HASH: null
57
+ FINGERPRINT_HASH: null,
58
+ MIN_BUNDLE_ID: "min-bundle-id"
48
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();
49
77
  });
50
78
  it("normalizes legacy PROMOTED launch reports to STABLE", async () => {
51
79
  nativeModuleMock.notifyAppReady.mockReturnValue(JSON.stringify({
@@ -81,5 +109,334 @@ describe("notifyAppReady", () => {
81
109
  status: "STABLE"
82
110
  });
83
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
+ });
84
441
  });
85
442
  //# sourceMappingURL=native.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["beforeEach","describe","expect","it","vi","nativeModuleMock","hoisted","stubGlobal","clearCrashHistory","fn","getBaseURL","getConstants","APP_VERSION","CHANNEL","DEFAULT_CHANNEL","FINGERPRINT_HASH","getCrashHistory","notifyAppReady","reload","resetChannel","setBundleURL","switchChannel","updateBundle","mock","NativeEventEmitter","addListener","remove","Platform","OS","default","resetModules","mockReset","mockReturnValue","JSON","stringify","status","toEqual","toHaveBeenCalledWith","crashedBundleId"],"sourceRoot":"../../src","sources":["native.spec.ts"],"mappings":"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","ignoreList":[]}
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;AAsHlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
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":[]}
@@ -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;;AAgDA;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":[]}
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":[]}
@@ -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;AAcvD,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,CA2GtC"}
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,EAcL,iBAAiB,EACjB,KAAK,YAAY,EAElB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,QAAQ,CAAC;AAEhF,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,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;AAwX1E,eAAO,MAAM,UAAU;IAxTnB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;oBACa,iBAAiB;IAuCjC;;OAEG;;IAGH;;;;;;;;;OASG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;;;;;;;;;;;OAYG;;IAGH;;;;;;;;;;;OAWG;;IAGH;;;;OAIG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;6BACsB,qBAAqB;IAgB9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;2BACoB,YAAY;IAKnC;;;;OAIG;;IAYH;;;;;;;;;;OAUG;;IAGH;;;;;;;;;;;OAWG;;IAGH;;;;;;;;;;;OAWG;;CAK2C,CAAC"}
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"}
@@ -1,7 +1,14 @@
1
- import type { UpdateStatus } from "@hot-updater/core";
1
+ import { type UpdateStatus } from "@hot-updater/core";
2
2
  import { HotUpdaterErrorCode, isHotUpdaterError } from "./error";
3
3
  import { type UpdateBundleParams } from "./specs/NativeHotUpdater";
4
4
  export { HotUpdaterErrorCode, isHotUpdaterError };
5
+ export interface ManifestAsset {
6
+ fileHash: string;
7
+ }
8
+ export interface Manifest {
9
+ bundleId: string;
10
+ assets: Record<string, ManifestAsset>;
11
+ }
5
12
  /**
6
13
  * Built-in reload behaviors used by `HotUpdater.reload()`.
7
14
  *
@@ -24,9 +31,6 @@ export type CustomReloadHandler = () => void | Promise<void>;
24
31
  * - `custom`: Run a user-provided JS handler on both platforms
25
32
  */
26
33
  export type ReloadBehaviorSetting = ReloadBehavior | "custom";
27
- export declare const HotUpdaterConstants: {
28
- HOT_UPDATER_BUNDLE_ID: string;
29
- };
30
34
  export type HotUpdaterEvent = {
31
35
  onProgress: {
32
36
  progress: number;
@@ -92,10 +96,21 @@ export declare const getMinBundleId: () => string;
92
96
  /**
93
97
  * Fetches the current bundle version id.
94
98
  *
95
- * @async
96
- * @returns {string} Resolves with the current version id or null if not available.
99
+ * JS falls back to MIN_BUNDLE_ID only after native confirms there is no active
100
+ * downloaded bundle. When the native module does not expose `getBundleId()`,
101
+ * treat it as a JS/native SDK mismatch instead of silently reporting the
102
+ * built-in bundle.
103
+ *
104
+ * @returns {string} Resolves with the current version id.
97
105
  */
98
106
  export declare const getBundleId: () => string;
107
+ /**
108
+ * Fetches the current manifest for the active bundle.
109
+ *
110
+ * Returns a normalized manifest with empty assets when manifest.json is missing
111
+ * or invalid.
112
+ */
113
+ export declare const getManifest: () => Manifest;
99
114
  /**
100
115
  * Fetches the channel for the app.
101
116
  *
@@ -138,8 +153,10 @@ export type NotifyAppReadyResult = {
138
153
  * const result = HotUpdater.notifyAppReady();
139
154
  *
140
155
  * if (result.status === "RECOVERED") {
141
- * // Send ROLLBACK analytics event
142
- * analytics.track('bundle_rollback', { crashedBundleId: result.crashedBundleId });
156
+ * // Send ROLLBACK analytics event
157
+ * analytics.track("bundle_rollback", {
158
+ * crashedBundleId: result.crashedBundleId,
159
+ * });
143
160
  * }
144
161
  * ```
145
162
  */
@@ -170,4 +187,18 @@ export declare const getBaseURL: () => string | null;
170
187
  * Clears the runtime channel override and restores the original bundle.
171
188
  */
172
189
  export declare const resetChannel: () => Promise<boolean>;
190
+ /**
191
+ * Sets the persisted cohort used for update checks.
192
+ *
193
+ * HotUpdater only derives a device-based cohort when nothing has been stored
194
+ * yet. If you need to restore that initial value later, read it with
195
+ * `getCohort()` before calling `setCohort()`, then store it yourself.
196
+ */
197
+ export declare const setCohort: (cohort: string) => void;
198
+ /**
199
+ * Gets the persisted cohort used for rollout calculations.
200
+ * If none has been stored yet, native derives the initial value once and
201
+ * persists it before returning.
202
+ */
203
+ export declare const getCohort: () => string;
173
204
  //# sourceMappingURL=native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjE,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AAIlD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG,QAAQ,CAAC;AAI9D,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAsEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAIF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAO9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;IACrB,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AAuEpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,qBAqBlB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,IAAI,EACH,CAAC,QAAQ,EAAE,cAAc,CAAC,GAC1B,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,CAAC,GACrD,IAAI,CAuBN;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAE7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAO,MAEpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAO,OAEpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,QAAO,oBAWjC,CAAC;AAeF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAO,MAAM,EAWxC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAAO,OAEpC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,QAAO,MAAM,GAAG,IAMtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,OAAO,CAUpD,CAAC"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { TurboModule } from "react-native";
2
+ import type { UnsafeObject } from "react-native/Libraries/Types/CodegenTypes";
2
3
  export interface UpdateBundleParams {
3
4
  bundleId: string;
4
5
  channel?: string;
@@ -95,6 +96,33 @@ export interface Spec extends TurboModule {
95
96
  * @returns Base URL string (e.g., "file:///data/.../bundle-store/abc123") or "" if not available
96
97
  */
97
98
  getBaseURL: () => string;
99
+ /**
100
+ * Gets the current active bundle ID from native bundle storage.
101
+ * Native reads the extracted bundle manifest first and falls back to the
102
+ * legacy BUNDLE_ID file when needed. Built-in bundle fallback is handled in JS.
103
+ *
104
+ * @returns Active bundle ID from bundle storage, or null when unavailable
105
+ */
106
+ getBundleId: () => string | null;
107
+ /**
108
+ * Gets the current manifest from native bundle storage.
109
+ * Returns an empty object when manifest.json is missing or invalid.
110
+ */
111
+ getManifest: () => UnsafeObject;
112
+ /**
113
+ * Sets the persisted cohort used for rollout calculations.
114
+ *
115
+ * Native only derives a device-based cohort when nothing has been stored
116
+ * yet. Call `getCohort()` first if the app needs to save that initial value
117
+ * for a later restore.
118
+ */
119
+ setCohort: (cohort: string) => void;
120
+ /**
121
+ * Gets the persisted cohort used for rollout calculations.
122
+ * If none has been stored yet, native derives the initial value once and
123
+ * persists it before returning.
124
+ */
125
+ getCohort: () => string;
98
126
  addListener(eventName: string): void;
99
127
  removeListeners(count: number): void;
100
128
  readonly getConstants: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB;;;;OAIG;IACH,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D;;;;;;;;OAQG;IACH,cAAc,IAAI;QAChB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;QAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAEF;;;;;OAKG;IACH,eAAe,IAAI,MAAM,EAAE,CAAC;IAE5B;;;;;OAKG;IACH,iBAAiB,IAAI,OAAO,CAAC;IAE7B;;;;OAIG;IACH,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,MAAM,CAAC;IAGzB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;;AAED,wBAAoE"}
1
+ {"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB;;;;OAIG;IACH,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D;;;;;;;;OAQG;IACH,cAAc,IAAI;QAChB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;QAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAEF;;;;;OAKG;IACH,eAAe,IAAI,MAAM,EAAE,CAAC;IAE5B;;;;;OAKG;IACH,iBAAiB,IAAI,OAAO,CAAC;IAE7B;;;;OAIG;IACH,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjC;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAEjC;;;OAGG;IACH,WAAW,EAAE,MAAM,YAAY,CAAC;IAEhC;;;;;;OAMG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC;;;;OAIG;IACH,SAAS,EAAE,MAAM,MAAM,CAAC;IAGxB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;;AAED,wBAAoE"}
@@ -24,6 +24,10 @@ export interface ResolverCheckUpdateParams {
24
24
  * The channel name (e.g., "production", "staging")
25
25
  */
26
26
  channel: string;
27
+ /**
28
+ * Cohort identifier used for server-side rollout decisions.
29
+ */
30
+ cohort: string;
27
31
  /**
28
32
  * Update strategy being used
29
33
  */