react-native-bspatch 4.1.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/README.md +83 -27
  2. package/android/build.gradle +25 -0
  3. package/android/src/main/AndroidManifest.xml +2 -0
  4. package/android/src/main/java/vn/reactnativebspatch/BsPatchModule.kt +86 -6
  5. package/android/src/main/res/values/bspatch_public_key.xml +5 -0
  6. package/cpp/bsdiff/bspatch_wrapper.c +34 -0
  7. package/cpp/bsdiff/bspatch_wrapper.h +2 -0
  8. package/cpp/bspatch_jni.cpp +18 -0
  9. package/ios/RNBsPatch.mm +142 -1
  10. package/lib/commonjs/NativeBsPatch.js.map +1 -1
  11. package/lib/commonjs/index.js +9 -2
  12. package/lib/commonjs/index.js.map +1 -1
  13. package/lib/commonjs/ota/OtaProvider.js +116 -20
  14. package/lib/commonjs/ota/OtaProvider.js.map +1 -1
  15. package/lib/commonjs/ota/eligibility.js +40 -0
  16. package/lib/commonjs/ota/eligibility.js.map +1 -0
  17. package/lib/commonjs/ota/entrySignature.js +23 -0
  18. package/lib/commonjs/ota/entrySignature.js.map +1 -0
  19. package/lib/commonjs/ota/installId.js +27 -0
  20. package/lib/commonjs/ota/installId.js.map +1 -0
  21. package/lib/commonjs/ota/otaCore.js +96 -21
  22. package/lib/commonjs/ota/otaCore.js.map +1 -1
  23. package/lib/commonjs/ota/storage/{GitHubRawStorage.js → R2Storage.js} +20 -15
  24. package/lib/commonjs/ota/storage/R2Storage.js.map +1 -0
  25. package/lib/commonjs/ota/types.js.map +1 -1
  26. package/lib/module/NativeBsPatch.js.map +1 -1
  27. package/lib/module/index.js +2 -1
  28. package/lib/module/index.js.map +1 -1
  29. package/lib/module/ota/OtaProvider.js +116 -20
  30. package/lib/module/ota/OtaProvider.js.map +1 -1
  31. package/lib/module/ota/eligibility.js +34 -0
  32. package/lib/module/ota/eligibility.js.map +1 -0
  33. package/lib/module/ota/entrySignature.js +17 -0
  34. package/lib/module/ota/entrySignature.js.map +1 -0
  35. package/lib/module/ota/installId.js +22 -0
  36. package/lib/module/ota/installId.js.map +1 -0
  37. package/lib/module/ota/otaCore.js +96 -21
  38. package/lib/module/ota/otaCore.js.map +1 -1
  39. package/lib/module/ota/storage/{GitHubRawStorage.js → R2Storage.js} +18 -14
  40. package/lib/module/ota/storage/R2Storage.js.map +1 -0
  41. package/lib/module/ota/types.js.map +1 -1
  42. package/lib/typescript/NativeBsPatch.d.ts +28 -2
  43. package/lib/typescript/NativeBsPatch.d.ts.map +1 -1
  44. package/lib/typescript/index.d.ts +3 -1
  45. package/lib/typescript/index.d.ts.map +1 -1
  46. package/lib/typescript/ota/OtaProvider.d.ts.map +1 -1
  47. package/lib/typescript/ota/eligibility.d.ts +19 -0
  48. package/lib/typescript/ota/eligibility.d.ts.map +1 -0
  49. package/lib/typescript/ota/entrySignature.d.ts +9 -0
  50. package/lib/typescript/ota/entrySignature.d.ts.map +1 -0
  51. package/lib/typescript/ota/installId.d.ts +3 -0
  52. package/lib/typescript/ota/installId.d.ts.map +1 -0
  53. package/lib/typescript/ota/otaCore.d.ts.map +1 -1
  54. package/lib/typescript/ota/storage/{GitHubRawStorage.d.ts → R2Storage.d.ts} +4 -3
  55. package/lib/typescript/ota/storage/R2Storage.d.ts.map +1 -0
  56. package/lib/typescript/ota/types.d.ts +52 -5
  57. package/lib/typescript/ota/types.d.ts.map +1 -1
  58. package/package.json +3 -2
  59. package/react-native-bspatch.podspec +3 -1
  60. package/src/NativeBsPatch.ts +34 -2
  61. package/src/index.ts +5 -1
  62. package/src/ota/OtaProvider.tsx +115 -24
  63. package/src/ota/eligibility.ts +48 -0
  64. package/src/ota/entrySignature.ts +31 -0
  65. package/src/ota/installId.ts +18 -0
  66. package/src/ota/otaCore.ts +102 -21
  67. package/src/ota/storage/{GitHubRawStorage.ts → R2Storage.ts} +17 -13
  68. package/src/ota/types.ts +49 -5
  69. package/tools/build_ota.sh +343 -116
  70. package/tools/doctor.js +130 -0
  71. package/tools/ensure_signing_key.js +216 -0
  72. package/tools/fingerprint.js +111 -0
  73. package/tools/ios_fingerprint.sh +9 -0
  74. package/tools/ota_admin.js +131 -0
  75. package/tools/setup_project.js +41 -15
  76. package/tools/update_registry.js +111 -11
  77. package/tools/upload_ota.sh +85 -184
  78. package/tools/verify_publish.js +81 -0
  79. package/lib/commonjs/ota/storage/GitHubRawStorage.js.map +0 -1
  80. package/lib/module/ota/storage/GitHubRawStorage.js.map +0 -1
  81. package/lib/typescript/ota/storage/GitHubRawStorage.d.ts.map +0 -1
package/ios/RNBsPatch.mm CHANGED
@@ -1,9 +1,11 @@
1
1
  #import <Foundation/Foundation.h>
2
+ #import <Network/Network.h>
2
3
  #import <QuartzCore/QuartzCore.h>
3
4
  #import <CommonCrypto/CommonDigest.h>
4
5
  #import <Security/Security.h>
5
6
  #import <React/RCTLog.h>
6
7
  #import <React/RCTReloadCommand.h>
8
+ #include <zlib.h>
7
9
 
8
10
  #if __has_include(<react_native_bspatch/react_native_bspatch-Swift.h>)
9
11
  #import <react_native_bspatch/react_native_bspatch-Swift.h>
@@ -29,6 +31,8 @@ extern "C" {
29
31
  /** One download: streams to a system temp file, moved to destPath only on a 2xx response. */
30
32
  @interface RNBsPatchDownload : NSObject <NSURLSessionDownloadDelegate>
31
33
  @property (nonatomic, copy) NSString *destPath;
34
+ /** Where a failed attempt leaves NSURLSession resume data for the next call */
35
+ @property (nonatomic, copy) NSString *resumePath;
32
36
  @property (nonatomic, copy) RCTPromiseResolveBlock resolve;
33
37
  @property (nonatomic, copy) RCTPromiseRejectBlock reject;
34
38
  @property (nonatomic, copy) void (^onProgress)(int64_t received, int64_t total);
@@ -48,6 +52,10 @@ totalBytesExpectedToWrite:(int64_t)expected
48
52
  CFTimeInterval now = CACurrentMediaTime();
49
53
  if (now - self.lastEmit < 0.25) return;
50
54
  self.lastEmit = now;
55
+ // written counts decoded bytes, expected the Content-Length on the wire: with a
56
+ // Content-Encoding they don't compare, so report the total as unknown like Android
57
+ NSString *encoding = [(NSHTTPURLResponse *)task.response valueForHTTPHeaderField:@"Content-Encoding"];
58
+ if (encoding.length > 0 && ![encoding isEqualToString:@"identity"]) expected = -1;
51
59
  self.onProgress(written, expected); // expected is -1 without a Content-Length
52
60
  }
53
61
 
@@ -79,6 +87,10 @@ didFinishDownloadingToURL:(NSURL *)location
79
87
  - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
80
88
  {
81
89
  NSError *e = error ?: self.error;
90
+ NSData *resumeData = error.userInfo[NSURLSessionDownloadTaskResumeData];
91
+ if (resumeData) {
92
+ [resumeData writeToFile:self.resumePath atomically:YES];
93
+ }
82
94
  if (e) {
83
95
  self.reject(@"ERR_DOWNLOAD", e.localizedDescription, e);
84
96
  } else {
@@ -109,6 +121,32 @@ static NSData *RNBsPatchSHA256(NSString *path)
109
121
  return [NSData dataWithBytes:digest length:sizeof(digest)];
110
122
  }
111
123
 
124
+ /** Gunzips src into dst; NO on unreadable, non-gzip or truncated input. */
125
+ static BOOL RNBsPatchGunzip(NSString *src, NSString *dst)
126
+ {
127
+ gzFile in = gzopen(src.fileSystemRepresentation, "rb");
128
+ if (!in) return NO;
129
+ FILE *out = fopen(dst.fileSystemRepresentation, "wb");
130
+ if (!out) {
131
+ gzclose(in);
132
+ return NO;
133
+ }
134
+ char buffer[65536];
135
+ int n;
136
+ BOOL ok = YES;
137
+ while ((n = gzread(in, buffer, sizeof(buffer))) > 0) {
138
+ // gzdirect: zlib copies non-gzip input through as-is
139
+ if (gzdirect(in) || fwrite(buffer, 1, n, out) != (size_t)n) {
140
+ ok = NO;
141
+ break;
142
+ }
143
+ }
144
+ if (n < 0) ok = NO;
145
+ if (gzclose_r(in) != Z_OK) ok = NO; // Z_BUF_ERROR: input ended mid-stream
146
+ if (fclose(out) != 0) ok = NO;
147
+ return ok;
148
+ }
149
+
112
150
  /** Runs block off the JS thread: resolves *result, or rejects with *error when it returns NO. */
113
151
  static void RNBsPatchIO(RCTPromiseResolveBlock resolve, RCTPromiseRejectBlock reject, BOOL (^block)(id *result, NSError **error))
114
152
  {
@@ -152,6 +190,34 @@ RCT_EXPORT_METHOD(applyPatch:(NSString *)oldPath
152
190
  });
153
191
  }
154
192
 
193
+ RCT_EXPORT_METHOD(decompressFile:(NSString *)srcPath
194
+ destPath:(NSString *)destPath
195
+ format:(NSString *)format
196
+ resolve:(RCTPromiseResolveBlock)resolve
197
+ reject:(RCTPromiseRejectBlock)reject)
198
+ {
199
+ RNBsPatchIO(resolve, reject, ^BOOL(id *result, NSError **error) {
200
+ NSString *part = [destPath stringByAppendingString:@".part"];
201
+ BOOL ok;
202
+ if ([format isEqualToString:@"gzip"]) {
203
+ ok = RNBsPatchGunzip(srcPath, part);
204
+ } else if ([format isEqualToString:@"bz2"]) {
205
+ ok = decompress_bz2(srcPath.fileSystemRepresentation, part.fileSystemRepresentation) == 0;
206
+ } else {
207
+ *error = [NSError errorWithDomain:@"RNBsPatch" code:1 userInfo:@{NSLocalizedDescriptionKey: [@"Unknown compression format: " stringByAppendingString:format]}];
208
+ return NO;
209
+ }
210
+ if (ok) ok = rename(part.fileSystemRepresentation, destPath.fileSystemRepresentation) == 0;
211
+ if (!ok) {
212
+ NSFileManager *fm = NSFileManager.defaultManager;
213
+ [fm removeItemAtPath:part error:nil];
214
+ [fm removeItemAtPath:destPath error:nil];
215
+ *error = [NSError errorWithDomain:@"RNBsPatch" code:2 userInfo:@{NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Corrupt or unreadable %@ file: %@", format, srcPath]}];
216
+ }
217
+ return ok;
218
+ });
219
+ }
220
+
155
221
  RCT_EXPORT_METHOD(reloadBundle)
156
222
  {
157
223
  dispatch_async(dispatch_get_main_queue(), ^{
@@ -288,9 +354,69 @@ RCT_EXPORT_METHOD(getAppVersion:(RCTPromiseResolveBlock)resolve
288
354
  return NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
289
355
  }
290
356
 
357
+ - (NSString *)getEmbeddedPublicKeys
358
+ {
359
+ id keys = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"BsPatchPublicKey"];
360
+ return [keys isKindOfClass:[NSString class]] ? keys : @"";
361
+ }
362
+
363
+ - (NSString *)getAppBuild
364
+ {
365
+ id build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
366
+ return [build isKindOfClass:[NSString class]] ? build : @"";
367
+ }
368
+
369
+ // Written into the .app by the build phase `setup` adds (tools/fingerprint.js)
370
+ - (NSString *)getRuntimeFingerprint
371
+ {
372
+ NSString *path = [[NSBundle mainBundle] pathForResource:@"bspatch_fingerprint" ofType:@"txt"];
373
+ NSString *fingerprint = path ? [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil] : nil;
374
+ return [fingerprint stringByTrimmingCharactersInSet:NSCharacterSet.whitespaceAndNewlineCharacterSet] ?: @"";
375
+ }
376
+
377
+ - (void)getFreeDiskSpace:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
378
+ {
379
+ RNBsPatchIO(resolve, reject, ^BOOL(id *result, NSError **error) {
380
+ NSString *dir = [self getDocumentDir];
381
+ NSNumber *free = nil;
382
+ [[NSURL fileURLWithPath:dir] getResourceValue:&free forKey:NSURLVolumeAvailableCapacityForImportantUsageKey error:nil];
383
+ if (free.longLongValue <= 0) {
384
+ free = [NSFileManager.defaultManager attributesOfFileSystemForPath:dir error:error][NSFileSystemFreeSize];
385
+ }
386
+ *result = free;
387
+ return free != nil;
388
+ });
389
+ }
390
+
391
+ - (void)getNetworkType:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
392
+ {
393
+ nw_path_monitor_t monitor = nw_path_monitor_create();
394
+ nw_path_monitor_set_queue(monitor, dispatch_get_global_queue(QOS_CLASS_UTILITY, 0));
395
+ __block BOOL done = NO;
396
+ // The first update is the current path; cancelling releases the handler (and the monitor)
397
+ nw_path_monitor_set_update_handler(monitor, ^(nw_path_t path) {
398
+ if (done) return;
399
+ done = YES;
400
+ NSString *type = @"unknown";
401
+ if (nw_path_get_status(path) != nw_path_status_satisfied) {
402
+ type = @"none";
403
+ } else if (nw_path_uses_interface_type(path, nw_interface_type_wifi)) {
404
+ type = @"wifi";
405
+ } else if (nw_path_uses_interface_type(path, nw_interface_type_cellular)) {
406
+ type = @"cellular";
407
+ } else if (nw_path_uses_interface_type(path, nw_interface_type_wired)) {
408
+ type = @"ethernet";
409
+ }
410
+ resolve(type);
411
+ nw_path_monitor_cancel(monitor);
412
+ });
413
+ nw_path_monitor_start(monitor);
414
+ }
415
+
291
416
  - (void)downloadFile:(NSString *)url
292
417
  destPath:(NSString *)destPath
293
418
  timeoutMs:(double)timeoutMs
419
+ headersJson:(NSString *)headersJson
294
420
  resolve:(RCTPromiseResolveBlock)resolve
295
421
  reject:(RCTPromiseRejectBlock)reject
296
422
  {
@@ -299,8 +425,18 @@ RCT_EXPORT_METHOD(getAppVersion:(RCTPromiseResolveBlock)resolve
299
425
  reject(@"ERR_DOWNLOAD", [NSString stringWithFormat:@"Invalid URL: %@", url], nil);
300
426
  return;
301
427
  }
428
+ id headers = [NSJSONSerialization JSONObjectWithData:[headersJson dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
429
+ if (![headers isKindOfClass:[NSDictionary class]]) {
430
+ reject(@"ERR_DOWNLOAD", [@"headersJson must be a JSON object, got: " stringByAppendingString:headersJson], nil);
431
+ return;
432
+ }
433
+ NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:nsurl];
434
+ for (NSString *name in headers) {
435
+ [request setValue:[headers[name] description] forHTTPHeaderField:name];
436
+ }
302
437
  RNBsPatchDownload *download = [RNBsPatchDownload new];
303
438
  download.destPath = destPath;
439
+ download.resumePath = [destPath stringByAppendingString:@".resumedata"];
304
440
  download.resolve = resolve;
305
441
  download.reject = reject;
306
442
  __weak RNBsPatch *weakSelf = self;
@@ -312,7 +448,12 @@ RCT_EXPORT_METHOD(getAppVersion:(RCTPromiseResolveBlock)resolve
312
448
  config.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
313
449
  config.timeoutIntervalForRequest = timeoutMs / 1000.0; // idle timeout, same as Android readTimeout
314
450
  NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:download delegateQueue:nil];
315
- [[session downloadTaskWithURL:nsurl] resume];
451
+ // Single use: a failed attempt writes fresh resume data, invalid data fails this
452
+ // attempt and the next one starts over
453
+ NSData *resumeData = [NSData dataWithContentsOfFile:download.resumePath];
454
+ [NSFileManager.defaultManager removeItemAtPath:download.resumePath error:nil];
455
+ NSURLSessionDownloadTask *task = resumeData ? [session downloadTaskWithResumeData:resumeData] : nil;
456
+ [task ?: [session downloadTaskWithRequest:request] resume];
316
457
  }
317
458
 
318
459
  - (void)hashFile:(NSString *)path resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeBsPatch.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA4FpCC,gCAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeBsPatch.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA4HpCC,gCAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
@@ -7,12 +7,19 @@ var _exportNames = {
7
7
  applyPatch: true,
8
8
  markAsHealthy: true,
9
9
  reloadBundle: true,
10
+ R2StorageProvider: true,
10
11
  GitHubRawStorageProvider: true
11
12
  };
12
13
  Object.defineProperty(exports, "GitHubRawStorageProvider", {
13
14
  enumerable: true,
14
15
  get: function () {
15
- return _GitHubRawStorage.GitHubRawStorageProvider;
16
+ return _R2Storage.R2StorageProvider;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "R2StorageProvider", {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _R2Storage.R2StorageProvider;
16
23
  }
17
24
  });
18
25
  exports.applyPatch = applyPatch;
@@ -56,7 +63,7 @@ Object.keys(_types).forEach(function (key) {
56
63
  }
57
64
  });
58
65
  });
59
- var _GitHubRawStorage = require("./ota/storage/GitHubRawStorage");
66
+ var _R2Storage = require("./ota/storage/R2Storage");
60
67
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
61
68
  function applyPatch(oldBundlePath, newBundlePath, patchPath) {
62
69
  return _NativeBsPatch.default.applyPatch(oldBundlePath, newBundlePath, patchPath);
@@ -1 +1 @@
1
- {"version":3,"names":["_NativeBsPatch","_interopRequireDefault","require","_otaLogger","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_OtaProvider","_types","_GitHubRawStorage","e","__esModule","default","applyPatch","oldBundlePath","newBundlePath","patchPath","NativeBsPatch","markAsHealthy","reloadBundle","_default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AAkBA,IAAAC,UAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,UAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,UAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,UAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,YAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,YAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,YAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,YAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,MAAA,GAAAf,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAY,MAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,MAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,MAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAW,iBAAA,GAAAhB,OAAA;AAA0E,SAAAD,uBAAAkB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AApBnE,SAASG,UAAUA,CACxBC,aAAqB,EACrBC,aAAqB,EACrBC,SAAiB,EACC;EAClB,OAAOC,sBAAa,CAACJ,UAAU,CAACC,aAAa,EAAEC,aAAa,EAAEC,SAAS,CAAC;AAC1E;AAEO,SAASE,aAAaA,CAAA,EAAS;EACpC,OAAOD,sBAAa,CAACC,aAAa,CAAC,CAAC;AACtC;AAEO,SAASC,YAAYA,CAAA,EAAS;EACnC,OAAOF,sBAAa,CAACE,YAAY,CAAC,CAAC;AACrC;AAAC,IAAAC,QAAA,GAAAjB,OAAA,CAAAS,OAAA,GAQc;EACbC,UAAU;EACVM,YAAY;EACZD;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_NativeBsPatch","_interopRequireDefault","require","_otaLogger","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_OtaProvider","_types","_R2Storage","e","__esModule","default","applyPatch","oldBundlePath","newBundlePath","patchPath","NativeBsPatch","markAsHealthy","reloadBundle","_default"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AAkBA,IAAAC,UAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,UAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,UAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,UAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,YAAA,GAAAd,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAW,YAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,YAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,YAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,MAAA,GAAAf,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAY,MAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,MAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,MAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AAEA,IAAAW,UAAA,GAAAhB,OAAA;AAIiC,SAAAD,uBAAAkB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAxB1B,SAASG,UAAUA,CACxBC,aAAqB,EACrBC,aAAqB,EACrBC,SAAiB,EACC;EAClB,OAAOC,sBAAa,CAACJ,UAAU,CAACC,aAAa,EAAEC,aAAa,EAAEC,SAAS,CAAC;AAC1E;AAEO,SAASE,aAAaA,CAAA,EAAS;EACpC,OAAOD,sBAAa,CAACC,aAAa,CAAC,CAAC;AACtC;AAEO,SAASC,YAAYA,CAAA,EAAS;EACnC,OAAOF,sBAAa,CAACE,YAAY,CAAC,CAAC;AACrC;AAAC,IAAAC,QAAA,GAAAjB,OAAA,CAAAS,OAAA,GAYc;EACbC,UAAU;EACVM,YAAY;EACZD;AACF,CAAC","ignoreList":[]}
@@ -8,6 +8,8 @@ exports.useOta = useOta;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactNative = require("react-native");
10
10
  var _NativeBsPatch = _interopRequireDefault(require("../NativeBsPatch"));
11
+ var _eligibility = require("./eligibility");
12
+ var _installId = require("./installId");
11
13
  var _otaCore = require("./otaCore");
12
14
  var _otaLogger = require("./otaLogger");
13
15
  var _otaMetadata = require("./otaMetadata");
@@ -16,6 +18,22 @@ var _jsxRuntime = require("react/jsx-runtime");
16
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
19
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
20
  const OtaContext = /*#__PURE__*/(0, _react.createContext)(undefined);
21
+ const DEFAULT_MIN_CHECK_INTERVAL_MS = 10 * 60 * 1000;
22
+
23
+ /** Sync native getter, '' if it throws */
24
+ const nativeString = get => {
25
+ try {
26
+ return get() ?? '';
27
+ } catch {
28
+ return '';
29
+ }
30
+ };
31
+
32
+ /** Bytecode version the running Hermes reads (undefined off Hermes) */
33
+ const hermesBytecodeVersion = () => {
34
+ const v = globalThis.HermesInternal?.getRuntimeProperties?.()?.['Bytecode Version'];
35
+ return v ? Number(v) : undefined;
36
+ };
19
37
  function OtaProvider({
20
38
  children,
21
39
  config,
@@ -33,12 +51,17 @@ function OtaProvider({
33
51
  const [patches, setPatches] = (0, _react.useState)([]);
34
52
  const [isInitialized, setIsInitialized] = (0, _react.useState)(false);
35
53
  const [isUpdateReady, setIsUpdateReady] = (0, _react.useState)(false);
54
+ const [isMandatory, setIsMandatory] = (0, _react.useState)(false);
55
+ const [installId, setInstallId] = (0, _react.useState)('');
36
56
  const appState = (0, _react.useRef)(_reactNative.AppState.currentState);
37
57
  const isCheckingRef = (0, _react.useRef)(false);
38
58
  const bootstrapDone = (0, _react.useRef)(false);
39
59
  /** Version the native resolver loaded for this JS session */
40
60
  const runningVersionRef = (0, _react.useRef)(config.baseAppVersion);
41
61
  const progressRef = (0, _react.useRef)(0);
62
+ const lastCheckRef = (0, _react.useRef)(0);
63
+ const appVersionRef = (0, _react.useRef)(config.appVersion ?? '');
64
+ const installIdRef = (0, _react.useRef)('');
42
65
  const isDebugUpdateEnabled = !__DEV__ || config.allowDebugUpdates === true;
43
66
 
44
67
  // No fallbacks: a missing env value disables OTA instead of silently pointing elsewhere.
@@ -57,21 +80,53 @@ function OtaProvider({
57
80
  progressRef.current = nextProgress;
58
81
  setProgress(nextProgress);
59
82
  }, []);
83
+
84
+ /** config.onEvent, plus a fire-and-forget POST to config.telemetry.url */
85
+ const onEvent = (0, _react.useCallback)(entry => {
86
+ config.onEvent?.(entry);
87
+ const telemetry = config.telemetry;
88
+ if (!telemetry) return;
89
+ fetch(telemetry.url, {
90
+ method: 'POST',
91
+ headers: {
92
+ 'Content-Type': 'application/json',
93
+ ...telemetry.headers
94
+ },
95
+ body: JSON.stringify({
96
+ ...entry,
97
+ installId: installIdRef.current,
98
+ platform: _reactNative.Platform.OS,
99
+ appVersion: appVersionRef.current,
100
+ appBuild: nativeString(() => _NativeBsPatch.default.getAppBuild()),
101
+ runtimeFingerprint: nativeString(() => _NativeBsPatch.default.getRuntimeFingerprint()),
102
+ flavor: config.customServer?.channel,
103
+ otaVersion: runningVersionRef.current
104
+ })
105
+ }).catch(() => {});
106
+ }, [config]);
60
107
  const getEffectiveConfig = (0, _react.useCallback)(async () => {
61
- if (config.appVersion) return config;
108
+ // The keys `patch` embedded in the app (primary + backup), unless the app passes its own
109
+ const publicKey = config.publicKey || nativeString(() => _NativeBsPatch.default.getEmbeddedPublicKeys()) || undefined;
110
+ const base = {
111
+ ...config,
112
+ publicKey,
113
+ onEvent
114
+ };
115
+ if (config.appVersion) return base;
62
116
  try {
63
117
  const nativeVer = await _NativeBsPatch.default.getAppVersion();
64
118
  if (!nativeVer) {
65
119
  throw new Error('Native appVersion is empty');
66
120
  }
121
+ appVersionRef.current = nativeVer;
67
122
  return {
68
- ...config,
123
+ ...base,
69
124
  appVersion: nativeVer
70
125
  };
71
126
  } catch (e) {
72
127
  throw new Error(`[OtaProvider] Failed to auto-detect appVersion from native: ${e.message}. ` + `Please set versionName (Android) / CFBundleShortVersionString (iOS), or provide config.appVersion explicitly.`);
73
128
  }
74
- }, [config]);
129
+ }, [config, onEvent]);
75
130
 
76
131
  /**
77
132
  * Core apply update logic — separated so it can be mapped to button clicks
@@ -132,6 +187,12 @@ function OtaProvider({
132
187
  setStatus(_types.OtaStatus.UP_TO_DATE);
133
188
  setMessage(`Update V${targetV} ready for next launch`);
134
189
  if (m) setMetrics(m);
190
+ if (directPatch.mandatory) {
191
+ setIsMandatory(true);
192
+ // Only in the foreground: a reload in the background is rolled back (see the
193
+ // AppState effect); the effect reloads once the app comes back
194
+ if (_reactNative.AppState.currentState === 'active') _NativeBsPatch.default.reloadBundle();
195
+ }
135
196
  }
136
197
  }, () => {},
137
198
  // silent: background doesn't spam progress
@@ -149,8 +210,9 @@ function OtaProvider({
149
210
  /**
150
211
  * Check for updates from the manifest.
151
212
  * Uses a ref to guard against concurrent calls (avoids stale closure).
213
+ * Automatic calls are throttled by minCheckIntervalMs; { force: true } always checks.
152
214
  */
153
- const checkUpdates = (0, _react.useCallback)(async () => {
215
+ const checkUpdates = (0, _react.useCallback)(async options => {
154
216
  if (isCheckingRef.current || configError) return;
155
217
  if (!isDebugUpdateEnabled) {
156
218
  setPendingCount(0);
@@ -159,6 +221,9 @@ function OtaProvider({
159
221
  setMessage('OTA updates are disabled while running a debug build.');
160
222
  return;
161
223
  }
224
+ const minInterval = config.minCheckIntervalMs ?? DEFAULT_MIN_CHECK_INTERVAL_MS;
225
+ if (!options?.force && Date.now() - lastCheckRef.current < minInterval) return;
226
+ lastCheckRef.current = Date.now();
162
227
  isCheckingRef.current = true;
163
228
  setIsChecking(true);
164
229
  setStatus(_types.OtaStatus.CHECKING);
@@ -170,10 +235,22 @@ function OtaProvider({
170
235
  const metadata = await (0, _otaMetadata.loadMetadata)(config.baseAppVersion);
171
236
  const localV = metadata.currentVersion;
172
237
 
173
- // The one platform filter (storage providers return every platform).
174
- // Also skips versions that crashed on boot and were rolled back natively.
175
- const failed = metadata.failedVersions ?? [];
176
- const platformPatches = remotePatches.filter(p => (!p.platform || p.platform.toLowerCase() === _reactNative.Platform.OS) && !failed.includes(p.toVersion));
238
+ // Storage providers return every platform: keep what this install may take (platform,
239
+ // native fingerprint, Hermes, rollout/QA lists, kill switch, versions that crashed here)
240
+ const context = {
241
+ platform: _reactNative.Platform.OS,
242
+ failedVersions: metadata.failedVersions ?? [],
243
+ runtimeFingerprint: nativeString(() => _NativeBsPatch.default.getRuntimeFingerprint()),
244
+ hermesBytecodeVersion: hermesBytecodeVersion(),
245
+ installId: await (0, _installId.getInstallId)()
246
+ };
247
+ const platformPatches = remotePatches.filter(p => {
248
+ const reason = (0, _eligibility.ineligibleReason)(p, context);
249
+ if (reason && __DEV__ && p.toVersion > localV) {
250
+ console.log(`[OtaProvider] Skipping V${p.toVersion} (${p.id}): ${reason}`);
251
+ }
252
+ return !reason;
253
+ });
177
254
  const maxV = platformPatches.length > 0 ? Math.max(...platformPatches.map(p => p.toVersion)) : localV;
178
255
  setPatches(platformPatches);
179
256
  setCurrentVersion(localV);
@@ -184,7 +261,10 @@ function OtaProvider({
184
261
  setStatus(_types.OtaStatus.UPDATE_AVAILABLE);
185
262
 
186
263
  // Trigger behaviors based on mode
187
- if (config.updateMode === _types.OtaUpdateMode.BACKGROUND_DOWNLOAD) {
264
+ const network = config.network?.wifiOnly ? await _NativeBsPatch.default.getNetworkType().catch(() => 'unknown') : 'wifi';
265
+ if (network !== 'wifi' && network !== 'ethernet') {
266
+ setMessage(`Update available: V${localV} → V${maxV} (waiting for Wi-Fi)`);
267
+ } else if (config.updateMode === _types.OtaUpdateMode.BACKGROUND_DOWNLOAD) {
188
268
  downloadBackgroundUpdate(platformPatches, localV, maxV);
189
269
  } else if (config.updateMode === _types.OtaUpdateMode.ON_APP_START || config.updateMode === _types.OtaUpdateMode.ON_APP_FOREGROUND) {
190
270
  // Auto-apply immediately!
@@ -217,6 +297,11 @@ function OtaProvider({
217
297
  */
218
298
  (0, _react.useEffect)(() => {
219
299
  const bootstrap = async () => {
300
+ (0, _installId.getInstallId)().then(id => {
301
+ installIdRef.current = id;
302
+ setInstallId(id);
303
+ }).catch(() => {});
304
+
220
305
  // Clean up any pending trash directories from previous resets (non-blocking)
221
306
  _NativeBsPatch.default.readDir(_otaMetadata.DOCUMENT_DIR).then(dirs => {
222
307
  for (const dir of dirs) {
@@ -249,23 +334,32 @@ function OtaProvider({
249
334
  setStatus(_types.OtaStatus.UP_TO_DATE);
250
335
  }
251
336
  };
252
- bootstrap().then(() => setIsInitialized(true)).catch(() => {
253
- // Bootstrap failed: keep UI blocked so user sees the error state.
254
- // setIsInitialized stays false → isBlocking remains true → the error
255
- // message is shown via loadingView instead of a silent blank screen.
256
- });
337
+
338
+ // OTA must never take the app down: if bootstrap fails, render the app with OTA idle
339
+ bootstrap().catch(error => {
340
+ console.warn('[OtaProvider] Bootstrap failed, OTA disabled for this session:', error);
341
+ setMessage(`OTA disabled: ${error.message}`);
342
+ setStatus(_types.OtaStatus.ERROR);
343
+ }).finally(() => setIsInitialized(true));
257
344
  // eslint-disable-next-line react-hooks/exhaustive-deps
258
345
  }, []);
259
346
 
260
347
  /**
261
- * AppState listener for ON_APP_FOREGROUND mode.
348
+ * AppState listener for ON_APP_FOREGROUND mode, and for a mandatory update that got
349
+ * ready while in the background.
262
350
  * A downloaded update is not reloaded on background: iOS suspends JS before the
263
351
  * first render, so the native resolver counts the launch as failed and rolls it back.
264
352
  * metadata already points at the new version, so the next cold start applies it
265
353
  */
354
+ const isMandatoryRef = (0, _react.useRef)(false);
355
+ isMandatoryRef.current = isMandatory && isUpdateReady;
266
356
  (0, _react.useEffect)(() => {
267
357
  const subscription = _reactNative.AppState.addEventListener('change', nextAppState => {
268
358
  if (appState.current.match(/inactive|background/) && nextAppState === 'active' && bootstrapDone.current) {
359
+ if (isMandatoryRef.current) {
360
+ _NativeBsPatch.default.reloadBundle();
361
+ return;
362
+ }
269
363
  const mode = config.updateMode ?? _types.OtaUpdateMode.MANUAL;
270
364
  if (mode === _types.OtaUpdateMode.ON_APP_FOREGROUND) {
271
365
  checkUpdates();
@@ -278,13 +372,13 @@ function OtaProvider({
278
372
  };
279
373
  }, [config.updateMode, checkUpdates]);
280
374
  const markAsHealthy = (0, _react.useCallback)(async () => {
281
- const log = (0, _otaLogger.createOtaLogger)(config.onEvent);
375
+ const log = (0, _otaLogger.createOtaLogger)(onEvent);
282
376
  log.emit(_otaLogger.OtaEvent.MARK_HEALTHY);
283
377
  const appVersion = await _NativeBsPatch.default.getAppVersion().catch(() => config.appVersion);
284
378
  await (0, _otaMetadata.markHealthy)(config.baseAppVersion, runningVersionRef.current, appVersion);
285
- }, [config]);
379
+ }, [config, onEvent]);
286
380
  const resetToFactory = (0, _react.useCallback)(async () => {
287
- const log = (0, _otaLogger.createOtaLogger)(config.onEvent);
381
+ const log = (0, _otaLogger.createOtaLogger)(onEvent);
288
382
  try {
289
383
  setStatus(_types.OtaStatus.APPLYING);
290
384
  setMessage('Executing system wipe...');
@@ -300,7 +394,7 @@ function OtaProvider({
300
394
  setStatus(_types.OtaStatus.ERROR);
301
395
  setMessage(`Reset failed: ${error.message}`);
302
396
  }
303
- }, [config]);
397
+ }, [onEvent]);
304
398
 
305
399
  // Memoized: consumers re-render only when something they can see changes
306
400
  const value = (0, _react.useMemo)(() => ({
@@ -313,13 +407,15 @@ function OtaProvider({
313
407
  isChecking,
314
408
  metrics,
315
409
  isUpdateReady,
410
+ isMandatory,
411
+ installId,
316
412
  applyUpdate,
317
413
  applyVersion,
318
414
  resetToFactory,
319
415
  markAsHealthy,
320
416
  checkUpdate: checkUpdates,
321
417
  reloadBundle: () => _NativeBsPatch.default.reloadBundle()
322
- }), [status, message, progress, currentVersion, latestVersion, pendingCount, isChecking, metrics, isUpdateReady, applyUpdate, applyVersion, resetToFactory, markAsHealthy, checkUpdates]);
418
+ }), [status, message, progress, currentVersion, latestVersion, pendingCount, isChecking, metrics, isUpdateReady, isMandatory, installId, applyUpdate, applyVersion, resetToFactory, markAsHealthy, checkUpdates]);
323
419
 
324
420
  // Logic to determine if we should block the UI
325
421
  const isBlocking = (0, _react.useMemo)(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_NativeBsPatch","_interopRequireDefault","_otaCore","_otaLogger","_otaMetadata","_types","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","OtaContext","createContext","undefined","OtaProvider","children","config","loadingView","useLoadingView","status","setStatus","useState","OtaStatus","IDLE","message","setMessage","progress","setProgress","currentVersion","setCurrentVersion","baseAppVersion","latestVersion","setLatestVersion","pendingCount","setPendingCount","isChecking","setIsChecking","metrics","setMetrics","patches","setPatches","isInitialized","setIsInitialized","isUpdateReady","setIsUpdateReady","appState","useRef","AppState","currentState","isCheckingRef","bootstrapDone","runningVersionRef","progressRef","isDebugUpdateEnabled","__DEV__","allowDebugUpdates","configError","useMemo","validateOtaConfig","Error","setProgressIfChanged","useCallback","nextProgress","current","getEffectiveConfig","appVersion","nativeVer","NativeBsPatch","getAppVersion","executeApplyUpdate","patchList","currentVer","targetVer","directPatch","selectUpdate","console","warn","ERROR","effectiveConfig","DOWNLOADING","applyOtaPatchInternal","s","msg","m","percent","error","applyVersion","targetVersion","UP_TO_DATE","applyUpdate","downloadBackgroundUpdate","localV","targetV","SUCCESS","autoReload","checkUpdates","CHECKING","createOtaLogger","onEvent","emit","OtaEvent","CHECK_UPDATE","remotePatches","fetchOtaManifest","metadata","loadMetadata","failed","failedVersions","platformPatches","filter","p","platform","toLowerCase","Platform","OS","includes","toVersion","maxV","length","Math","max","map","UPDATE_AVAILABLE","updateMode","OtaUpdateMode","BACKGROUND_DOWNLOAD","ON_APP_START","ON_APP_FOREGROUND","useEffect","bootstrap","readDir","DOCUMENT_DIR","then","dirs","dir","startsWith","removePath","catch","mode","MANUAL","subscription","addEventListener","nextAppState","match","remove","markAsHealthy","log","MARK_HEALTHY","markHealthy","resetToFactory","APPLYING","RESET_FACTORY","exists","OTA_DIR","moveFile","Date","now","reloadBundle","value","checkUpdate","isBlocking","healthyMarkedRef","jsx","Provider","View","style","styles","loadingContainer","jsxs","loadingCard","ActivityIndicator","size","color","Text","loadingTitle","loadingText","progressText","toFixed","useOta","context","useContext","StyleSheet","create","flex","justifyContent","alignItems","backgroundColor","paddingHorizontal","width","maxWidth","borderRadius","paddingVertical","borderWidth","borderColor","marginTop","fontSize","fontWeight","lineHeight","textAlign"],"sourceRoot":"../../../src","sources":["ota/OtaProvider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_NativeBsPatch","_interopRequireDefault","_eligibility","_installId","_otaCore","_otaLogger","_otaMetadata","_types","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","OtaContext","createContext","undefined","DEFAULT_MIN_CHECK_INTERVAL_MS","nativeString","hermesBytecodeVersion","v","globalThis","HermesInternal","getRuntimeProperties","Number","OtaProvider","children","config","loadingView","useLoadingView","status","setStatus","useState","OtaStatus","IDLE","message","setMessage","progress","setProgress","currentVersion","setCurrentVersion","baseAppVersion","latestVersion","setLatestVersion","pendingCount","setPendingCount","isChecking","setIsChecking","metrics","setMetrics","patches","setPatches","isInitialized","setIsInitialized","isUpdateReady","setIsUpdateReady","isMandatory","setIsMandatory","installId","setInstallId","appState","useRef","AppState","currentState","isCheckingRef","bootstrapDone","runningVersionRef","progressRef","lastCheckRef","appVersionRef","appVersion","installIdRef","isDebugUpdateEnabled","__DEV__","allowDebugUpdates","configError","useMemo","validateOtaConfig","Error","setProgressIfChanged","useCallback","nextProgress","current","onEvent","entry","telemetry","fetch","url","method","headers","body","JSON","stringify","platform","Platform","OS","appBuild","NativeBsPatch","getAppBuild","runtimeFingerprint","getRuntimeFingerprint","flavor","customServer","channel","otaVersion","catch","getEffectiveConfig","publicKey","getEmbeddedPublicKeys","base","nativeVer","getAppVersion","executeApplyUpdate","patchList","currentVer","targetVer","directPatch","selectUpdate","console","warn","ERROR","effectiveConfig","DOWNLOADING","applyOtaPatchInternal","s","msg","m","percent","error","applyVersion","targetVersion","UP_TO_DATE","applyUpdate","downloadBackgroundUpdate","localV","targetV","SUCCESS","mandatory","reloadBundle","autoReload","checkUpdates","options","minInterval","minCheckIntervalMs","force","Date","now","CHECKING","createOtaLogger","emit","OtaEvent","CHECK_UPDATE","remotePatches","fetchOtaManifest","metadata","loadMetadata","context","failedVersions","getInstallId","platformPatches","filter","p","reason","ineligibleReason","toVersion","log","id","maxV","length","Math","max","map","UPDATE_AVAILABLE","network","wifiOnly","getNetworkType","updateMode","OtaUpdateMode","BACKGROUND_DOWNLOAD","ON_APP_START","ON_APP_FOREGROUND","useEffect","bootstrap","then","readDir","DOCUMENT_DIR","dirs","dir","startsWith","removePath","mode","MANUAL","finally","isMandatoryRef","subscription","addEventListener","nextAppState","match","remove","markAsHealthy","MARK_HEALTHY","markHealthy","resetToFactory","APPLYING","RESET_FACTORY","exists","OTA_DIR","moveFile","value","checkUpdate","isBlocking","healthyMarkedRef","jsx","Provider","View","style","styles","loadingContainer","jsxs","loadingCard","ActivityIndicator","size","color","Text","loadingTitle","loadingText","progressText","toFixed","useOta","useContext","StyleSheet","create","flex","justifyContent","alignItems","backgroundColor","paddingHorizontal","width","maxWidth","borderRadius","paddingVertical","borderWidth","borderColor","marginTop","fontSize","fontWeight","lineHeight","textAlign"],"sourceRoot":"../../../src","sources":["ota/OtaProvider.tsx"],"mappings":"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","ignoreList":[]}