react-native-bspatch 3.1.2 → 4.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 (52) hide show
  1. package/README.md +3 -3
  2. package/android/build.gradle +18 -40
  3. package/android/src/main/java/vn/reactnativebspatch/BsPatchModule.kt +148 -13
  4. package/android/src/main/java/vn/reactnativebspatch/OtaBundleResolver.kt +21 -3
  5. package/cpp/CMakeLists.txt +0 -3
  6. package/cpp/bsdiff/bspatch_wrapper.c +3 -2
  7. package/ios/OtaBundleResolver.swift +22 -5
  8. package/ios/RNBsPatch.mm +220 -32
  9. package/lib/commonjs/NativeBsPatch.js.map +1 -1
  10. package/lib/commonjs/index.js +1 -13
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/ota/OtaProvider.js +21 -21
  13. package/lib/commonjs/ota/OtaProvider.js.map +1 -1
  14. package/lib/commonjs/ota/otaCore.js +50 -88
  15. package/lib/commonjs/ota/otaCore.js.map +1 -1
  16. package/lib/commonjs/ota/otaMetadata.js +46 -23
  17. package/lib/commonjs/ota/otaMetadata.js.map +1 -1
  18. package/lib/commonjs/ota/storage/GitHubRawStorage.js +22 -12
  19. package/lib/commonjs/ota/storage/GitHubRawStorage.js.map +1 -1
  20. package/lib/module/NativeBsPatch.js.map +1 -1
  21. package/lib/module/index.js +0 -8
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/ota/OtaProvider.js +22 -22
  24. package/lib/module/ota/OtaProvider.js.map +1 -1
  25. package/lib/module/ota/otaCore.js +50 -87
  26. package/lib/module/ota/otaCore.js.map +1 -1
  27. package/lib/module/ota/otaMetadata.js +44 -21
  28. package/lib/module/ota/otaMetadata.js.map +1 -1
  29. package/lib/module/ota/storage/GitHubRawStorage.js +20 -10
  30. package/lib/module/ota/storage/GitHubRawStorage.js.map +1 -1
  31. package/lib/typescript/NativeBsPatch.d.ts +36 -1
  32. package/lib/typescript/NativeBsPatch.d.ts.map +1 -1
  33. package/lib/typescript/index.d.ts +0 -7
  34. package/lib/typescript/index.d.ts.map +1 -1
  35. package/lib/typescript/ota/OtaProvider.d.ts.map +1 -1
  36. package/lib/typescript/ota/otaCore.d.ts +2 -1
  37. package/lib/typescript/ota/otaCore.d.ts.map +1 -1
  38. package/lib/typescript/ota/otaMetadata.d.ts +5 -0
  39. package/lib/typescript/ota/otaMetadata.d.ts.map +1 -1
  40. package/lib/typescript/ota/storage/GitHubRawStorage.d.ts +2 -0
  41. package/lib/typescript/ota/storage/GitHubRawStorage.d.ts.map +1 -1
  42. package/package.json +2 -3
  43. package/react-native-bspatch.podspec +3 -25
  44. package/src/NativeBsPatch.ts +44 -1
  45. package/src/index.ts +0 -7
  46. package/src/ota/OtaProvider.tsx +37 -23
  47. package/src/ota/otaCore.ts +55 -94
  48. package/src/ota/otaMetadata.ts +44 -25
  49. package/src/ota/storage/GitHubRawStorage.ts +17 -22
  50. package/tools/build_ota.sh +1 -1
  51. package/tools/upload_ota.sh +3 -2
  52. package/ios/RNBsPatch.h +0 -8
@@ -4,8 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.verifyHash = exports.validateOtaConfig = exports.semverGte = exports.selectUpdate = exports.getLocalPatchPath = exports.getLocalAssetPath = exports.fetchOtaManifest = exports.applyOtaPatchInternal = void 0;
7
- var _reactNative = require("react-native");
8
- var _reactNativeBlobUtil = _interopRequireDefault(require("react-native-blob-util"));
9
7
  var _NativeBsPatch = _interopRequireDefault(require("../NativeBsPatch"));
10
8
  var _otaLogger = require("./otaLogger");
11
9
  var _otaMetadata = require("./otaMetadata");
@@ -25,8 +23,6 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
25
23
  * - Structured telemetry logging
26
24
  */
27
25
 
28
- const OTA_DIR = `${_reactNativeBlobUtil.default.fs.dirs.DocumentDir}/ota`;
29
-
30
26
  // ─── Storage Provider Factory ──────────────────────────────────────────
31
27
 
32
28
  const DEFAULT_STORAGE = new _GitHubRawStorage.GitHubRawStorageProvider();
@@ -91,7 +87,7 @@ exports.semverGte = semverGte;
91
87
  const verifyHash = async (path, expectedHash) => {
92
88
  if (!expectedHash) return true;
93
89
  try {
94
- const hash = await _reactNativeBlobUtil.default.fs.hash(path, 'sha256');
90
+ const hash = await _NativeBsPatch.default.hashFile(path);
95
91
  return hash.toLowerCase() === expectedHash.toLowerCase();
96
92
  } catch {
97
93
  return false;
@@ -113,53 +109,34 @@ const assertSigned = async (filePath, signature, config, what) => {
113
109
 
114
110
  /**
115
111
  * Download a file with retry logic using exponential backoff.
116
- * Cancels any in-flight request before retrying to avoid resource leaks.
112
+ * Native streams to `${destPath}.part` and renames only on a 2xx response, so a
113
+ * cut-off download or an error page never sits at destPath looking complete.
114
+ * @returns Size of the downloaded file in bytes
117
115
  */
118
- const downloadWithRetry = async (url, destPath, config, onProgress, headers = {}) => {
119
- const retryLimit = config.network?.retry ?? 3;
116
+ const downloadWithRetry = async (url, destPath, config, onProgress) => {
117
+ const retryLimit = Math.max(1, config.network?.retry ?? 3);
120
118
  const timeout = config.network?.timeoutMs ?? 30000;
121
- for (let i = 0; i < retryLimit; i++) {
122
- let taskRef = null;
123
- // Download to .part and rename only on a 2xx response, so a cut-off
124
- // download or an error page never sits at destPath looking complete.
125
- const partPath = `${destPath}.part`;
126
- try {
127
- const task = _reactNativeBlobUtil.default.config({
128
- fileCache: true,
129
- path: partPath,
130
- followRedirect: true,
131
- timeout
132
- }).fetch('GET', url, {
133
- 'Cache-Control': 'no-cache',
134
- ...headers
135
- }).progress((received, total) => {
136
- const percent = Math.floor(Number(received) / Number(total) * 100);
137
- onProgress(percent);
138
- });
139
- taskRef = {
140
- cancel: () => task.cancel()
141
- };
142
- const resp = await task;
143
- const status = resp.respInfo.status;
144
- if (status < 200 || status >= 300) {
145
- throw new Error(`HTTP ${status} for ${url}`);
146
- }
147
- if (await _reactNativeBlobUtil.default.fs.exists(destPath)) {
148
- await _reactNativeBlobUtil.default.fs.unlink(destPath);
149
- }
150
- await _reactNativeBlobUtil.default.fs.mv(partPath, destPath);
151
- return;
152
- } catch (e) {
153
- // Cancel any lingering request before retrying
154
- taskRef?.cancel();
155
- await _reactNativeBlobUtil.default.fs.unlink(partPath).catch(() => {});
156
- if (i === retryLimit - 1) throw e;
157
- const delay = Math.pow(2, i) * 1000; // Exponential backoff: 1s, 2s, 4s...
158
- if (__DEV__) {
159
- console.warn(`[otaCore] Download attempt ${i + 1} failed. Retrying in ${delay}ms...`);
119
+ const subscription = _NativeBsPatch.default.onDownloadProgress(e => {
120
+ // total is -1 without a Content-Length
121
+ if (e.path === destPath && e.total > 0) {
122
+ onProgress(Math.min(100, Math.floor(e.received / e.total * 100)));
123
+ }
124
+ });
125
+ try {
126
+ for (let i = 0;; i++) {
127
+ try {
128
+ return await _NativeBsPatch.default.downloadFile(url, destPath, timeout);
129
+ } catch (e) {
130
+ if (i >= retryLimit - 1) throw e;
131
+ const delay = Math.pow(2, i) * 1000; // Exponential backoff: 1s, 2s, 4s...
132
+ if (__DEV__) {
133
+ console.warn(`[otaCore] Download attempt ${i + 1} failed. Retrying in ${delay}ms...`);
134
+ }
135
+ await new Promise(resolve => setTimeout(resolve, delay));
160
136
  }
161
- await new Promise(resolve => setTimeout(resolve, delay));
162
137
  }
138
+ } finally {
139
+ subscription.remove();
163
140
  }
164
141
  };
165
142
 
@@ -178,7 +155,7 @@ const fetchOtaManifest = config => getStorage(config).fetchManifest(config);
178
155
 
179
156
  // ─── Hashed Asset Store ───────────────────────────────────────────────
180
157
  exports.fetchOtaManifest = fetchOtaManifest;
181
- const ASSET_STORE_DIR = `${_reactNativeBlobUtil.default.fs.dirs.DocumentDir}/ota/assets`;
158
+ const ASSET_STORE_DIR = `${_otaMetadata.OTA_DIR}/assets`;
182
159
 
183
160
  /** Relative path inside the version dir: no absolute paths, no `..` segments. */
184
161
  const isSafeRelativePath = p => /^[A-Za-z0-9_\-.@/]+$/.test(p) && !p.startsWith('/') && !p.split('/').includes('..');
@@ -193,21 +170,12 @@ const isSafeRelativePath = p => /^[A-Za-z0-9_\-.@/]+$/.test(p) && !p.startsWith(
193
170
  * hash into ota/assets/ and copied from there for later versions.
194
171
  */
195
172
  const downloadAndSyncAssets = async (assetManifestUrl, version, config, log, onStatus, onProgress) => {
196
- const fs = _reactNativeBlobUtil.default.fs;
173
+ const fs = _NativeBsPatch.default;
197
174
  onStatus(_types.OtaStatus.SYNCING_ASSETS, 'Syncing assets...');
198
- const versionDir = `${OTA_DIR}/v${version}`;
175
+ const versionDir = `${_otaMetadata.OTA_DIR}/v${version}`;
199
176
  let assets = [];
200
177
  try {
201
- const resp = await _reactNativeBlobUtil.default.config({
202
- followRedirect: true,
203
- timeout: 10000
204
- }).fetch('GET', assetManifestUrl, {
205
- 'Cache-Control': 'no-cache'
206
- });
207
- if (resp.respInfo.status !== 200) {
208
- throw new Error(`status ${resp.respInfo.status}`);
209
- }
210
- const manifest = typeof resp.data === 'string' ? JSON.parse(resp.data) : resp.data;
178
+ const manifest = await (0, _GitHubRawStorage.fetchJson)(assetManifestUrl, 10000);
211
179
  // Hash/ext/path become file names: reject anything unexpected
212
180
  assets = (manifest.assets || []).filter(a => /^[a-f0-9]{64}$/i.test(a.hash) && /^[a-z0-9]+$/i.test(a.ext) && typeof a.originalPath === 'string' && isSafeRelativePath(a.originalPath));
213
181
  } catch (e) {
@@ -215,12 +183,14 @@ const downloadAndSyncAssets = async (assetManifestUrl, version, config, log, onS
215
183
  throw new Error(`Failed to fetch asset manifest: ${e.message}`);
216
184
  }
217
185
  if (assets.length === 0) return;
186
+ // Lets cleanupOldVersions keep the store files that retained versions use
187
+ await fs.writeFile(`${versionDir}/${_otaMetadata.ASSET_LIST_FILE}`, JSON.stringify(assets.map(a => `${a.hash}.${a.ext}`)));
218
188
  onStatus(_types.OtaStatus.SYNCING_ASSETS, `Syncing ${assets.length} asset(s)...`);
219
- // One promise per dir: parallel workers would otherwise race mkdir (EEXIST)
189
+ // Native mkdir creates parents and tolerates an existing dir; this just skips repeats
220
190
  const dirs = new Map();
221
191
  const ensureDir = dir => {
222
192
  if (!dirs.has(dir)) {
223
- dirs.set(dir, fs.exists(dir).then(ok => ok ? undefined : fs.mkdir(dir)));
193
+ dirs.set(dir, fs.mkdir(dir));
224
194
  }
225
195
  return dirs.get(dir);
226
196
  };
@@ -239,18 +209,14 @@ const downloadAndSyncAssets = async (assetManifestUrl, version, config, log, onS
239
209
  if (!url) throw new Error('no URL');
240
210
  await downloadWithRetry(url, storePath, config, () => {});
241
211
  if (!(await verifyHash(storePath, asset.hash))) {
242
- await fs.unlink(storePath).catch(() => {});
212
+ await fs.removePath(storePath).catch(() => {});
243
213
  throw new Error('hash mismatch');
244
214
  }
245
215
  downloaded++;
246
216
  }
247
217
  const dest = `${versionDir}/${asset.originalPath}`;
248
- const parts = asset.originalPath.split('/').slice(0, -1);
249
- for (let i = 1; i <= parts.length; i++) {
250
- await ensureDir(`${versionDir}/${parts.slice(0, i).join('/')}`);
251
- }
252
- if (await fs.exists(dest)) await fs.unlink(dest);
253
- await fs.cp(storePath, dest);
218
+ await ensureDir(dest.slice(0, dest.lastIndexOf('/')));
219
+ await fs.copyFile(storePath, dest);
254
220
  } catch (e) {
255
221
  if (__DEV__) {
256
222
  console.warn(`[otaCore] Asset ${asset.originalPath} failed:`, e);
@@ -296,7 +262,7 @@ const getLocalAssetPath = (hash, ext) => `${ASSET_STORE_DIR}/${hash}.${ext}`;
296
262
  * Gets the local filesystem path for a downloaded patch file.
297
263
  *
298
264
  * @param patch - Patch metadata object
299
- * @param docDir - Document directory path (use `ReactNativeBlobUtil.fs.dirs.DocumentDir`)
265
+ * @param docDir - Document directory path (`DOCUMENT_DIR`)
300
266
  * @returns Absolute path to the patch file
301
267
  */
302
268
  exports.getLocalAssetPath = getLocalAssetPath;
@@ -305,10 +271,11 @@ const getLocalPatchPath = (patch, docDir) => `${docDir}/ota/patch-${patch.appVer
305
271
  /**
306
272
  * Picks the registry entry for `localV → targetV`: a patch from the OTA bundle
307
273
  * already on disk, else the full-bundle entry (store build, or outside the patch window).
274
+ * `patchList` is already filtered to this platform (checkUpdates).
308
275
  */
309
276
  exports.getLocalPatchPath = getLocalPatchPath;
310
277
  const selectUpdate = (patchList, localV, targetV) => {
311
- const forTarget = patchList.filter(p => p.toVersion === targetV && (!p.platform || p.platform === _reactNative.Platform.OS));
278
+ const forTarget = patchList.filter(p => p.toVersion === targetV);
312
279
  return forTarget.find(p => p.filename && p.fromVersion === localV) ?? forTarget.find(p => !p.filename);
313
280
  };
314
281
 
@@ -352,11 +319,11 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
352
319
  const log = (0, _otaLogger.createOtaLogger)(config.onEvent);
353
320
  await (0, _otaMetadata.ensureOtaDir)();
354
321
  const totalStart = Date.now();
355
- const fs = _reactNativeBlobUtil.default.fs;
322
+ const fs = _NativeBsPatch.default;
356
323
  const finalBundlePath = (0, _otaMetadata.getBundlePath)(patch.toVersion, config.baseAppVersion) || '';
357
324
  const tempBundle = `${finalBundlePath}.tmp`;
358
- const versionDir = `${OTA_DIR}/v${patch.toVersion}`;
359
- const localPatchPath = getLocalPatchPath(patch, fs.dirs.DocumentDir);
325
+ const versionDir = `${_otaMetadata.OTA_DIR}/v${patch.toVersion}`;
326
+ const localPatchPath = getLocalPatchPath(patch, _otaMetadata.DOCUMENT_DIR);
360
327
 
361
328
  // ── Version Compatibility ──
362
329
  // Checked before anything else so an incompatible update can't reach the full-bundle path
@@ -376,17 +343,16 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
376
343
  throw new Error(`Native app ${currentAppVer} is too old. Update to ${patch.minAppVersion}+ first.`);
377
344
  }
378
345
  }
379
- if (!(await fs.exists(versionDir))) {
380
- await fs.mkdir(versionDir);
381
- }
346
+ await fs.mkdir(versionDir);
382
347
  const download = async (remoteName, dest) => {
383
348
  log.emit(_otaLogger.OtaEvent.DOWNLOAD_START, {
384
349
  version: patch.toVersion
385
350
  });
386
351
  const dlStart = Date.now();
352
+ let sizeBytes;
387
353
  try {
388
354
  const url = await getStorage(config).getUpdateFileUrl(remoteName, config);
389
- await downloadWithRetry(url, dest, config, onProgress);
355
+ sizeBytes = await downloadWithRetry(url, dest, config, onProgress);
390
356
  } catch (dlError) {
391
357
  log.emit(_otaLogger.OtaEvent.DOWNLOAD_FAIL, {
392
358
  error: dlError.message,
@@ -395,7 +361,6 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
395
361
  throw dlError;
396
362
  }
397
363
  const downloadMs = Date.now() - dlStart;
398
- const sizeBytes = Number((await fs.stat(dest)).size);
399
364
  log.emit(_otaLogger.OtaEvent.DOWNLOAD_SUCCESS, {
400
365
  version: patch.toVersion,
401
366
  durationMs: downloadMs,
@@ -408,7 +373,7 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
408
373
  };
409
374
  const assertHash = async (path, expected, what) => {
410
375
  if (!expected || (await verifyHash(path, expected))) return;
411
- const actual = await fs.hash(path, 'sha256').catch(() => '');
376
+ const actual = await fs.hashFile(path).catch(() => '');
412
377
  log.emit(_otaLogger.OtaEvent.HASH_MISMATCH, {
413
378
  message: `${what} hash mismatch`,
414
379
  version: patch.toVersion,
@@ -427,10 +392,7 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
427
392
  const manifestUrl = await getStorage(config).getUpdateFileUrl(patch.assetManifestUrl, config);
428
393
  await downloadAndSyncAssets(manifestUrl, patch.toVersion, config, log, onStatus, onProgress);
429
394
  }
430
- if (await fs.exists(finalBundlePath)) {
431
- await fs.unlink(finalBundlePath);
432
- }
433
- await fs.mv(tempBundle, finalBundlePath);
395
+ await fs.moveFile(tempBundle, finalBundlePath);
434
396
 
435
397
  // Native version, not config.appVersion: the native resolver compares against it on boot
436
398
  const nativeAppVersion = await _NativeBsPatch.default.getAppVersion().catch(() => config.appVersion);
@@ -480,7 +442,7 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
480
442
  const applyStart = Date.now();
481
443
  const success = await _NativeBsPatch.default.applyPatch(sourcePath, tempBundle, localPatchPath);
482
444
  const applyMs = Date.now() - applyStart;
483
- await fs.unlink(localPatchPath).catch(() => {});
445
+ await fs.removePath(localPatchPath).catch(() => {});
484
446
  if (!success) {
485
447
  log.emit(_otaLogger.OtaEvent.PATCH_FAIL, {
486
448
  message: 'BsPatch returned false',
@@ -517,8 +479,8 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
517
479
  });
518
480
  };
519
481
  const cleanup = async () => {
520
- await fs.unlink(localPatchPath).catch(() => {});
521
- await fs.unlink(tempBundle).catch(() => {});
482
+ await fs.removePath(localPatchPath).catch(() => {});
483
+ await fs.removePath(tempBundle).catch(() => {});
522
484
  };
523
485
 
524
486
  // Patch only from an OTA bundle we installed ourselves (byte-identical to the build output)
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeBlobUtil","_interopRequireDefault","_NativeBsPatch","_otaLogger","_otaMetadata","_GitHubRawStorage","_types","e","__esModule","default","OTA_DIR","ReactNativeBlobUtil","fs","dirs","DocumentDir","DEFAULT_STORAGE","GitHubRawStorageProvider","getStorage","config","storage","validateOtaConfig","baseUrl","channel","customServer","test","JSON","stringify","exports","semverGte","a","b","pa","split","map","Number","pb","i","va","vb","verifyHash","path","expectedHash","hash","toLowerCase","assertSigned","filePath","signature","what","publicKey","valid","NativeBsPatch","verifySignature","catch","Error","downloadWithRetry","url","destPath","onProgress","headers","retryLimit","network","retry","timeout","timeoutMs","taskRef","partPath","task","fileCache","followRedirect","fetch","progress","received","total","percent","Math","floor","cancel","resp","status","respInfo","exists","unlink","mv","delay","pow","__DEV__","console","warn","Promise","resolve","setTimeout","fetchOtaManifest","fetchManifest","ASSET_STORE_DIR","isSafeRelativePath","p","startsWith","includes","downloadAndSyncAssets","assetManifestUrl","version","log","onStatus","OtaStatus","SYNCING_ASSETS","versionDir","assets","manifest","data","parse","filter","ext","originalPath","message","length","Map","ensureDir","dir","has","set","then","ok","undefined","mkdir","get","processed","downloaded","failed","index","worker","asset","storePath","getLocalAssetPath","getAssetUrl","dest","parts","slice","join","cp","round","all","Array","from","min","emit","OtaEvent","DOWNLOAD_SUCCESS","getLocalPatchPath","patch","docDir","appVersion","id","selectUpdate","patchList","localV","targetV","forTarget","toVersion","platform","Platform","OS","find","filename","fromVersion","updateInFlight","applyOtaPatchInternal","args","runUpdatePipeline","options","autoReload","allowDebugUpdates","UP_TO_DATE","createOtaLogger","onEvent","ensureOtaDir","totalStart","Date","now","finalBundlePath","getBundlePath","baseAppVersion","tempBundle","localPatchPath","minAppVersion","currentAppVer","getAppVersion","VERSION_INCOMPATIBLE","download","remoteName","DOWNLOAD_START","dlStart","getUpdateFileUrl","dlError","DOWNLOAD_FAIL","error","downloadMs","sizeBytes","stat","size","durationMs","sizeKB","assertHash","expected","actual","HASH_MISMATCH","metadata","commit","metrics","manifestUrl","nativeAppVersion","updateMetadata","registerNewVersion","totalMs","PATCH_SUCCESS","patchSizeKB","SUCCESS","fromCache","reloadBundle","applyPatchFile","sourcePath","DOWNLOADING","APPLYING","sigError","SIGNATURE_INVALID","baseHash","PATCH_START","applyStart","success","applyPatch","applyMs","PATCH_FAIL","bundleHash","bundleSignature","installFullBundle","fullBundleUrl","FALLBACK_FULL_BUNDLE","cleanup","loadMetadata","currentVersion","canPatch","ERROR"],"sourceRoot":"../../../src","sources":["ota/otaCore.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_NativeBsPatch","_interopRequireDefault","require","_otaLogger","_otaMetadata","_GitHubRawStorage","_types","e","__esModule","default","DEFAULT_STORAGE","GitHubRawStorageProvider","getStorage","config","storage","validateOtaConfig","baseUrl","channel","customServer","test","JSON","stringify","exports","semverGte","a","b","pa","split","map","Number","pb","i","va","vb","verifyHash","path","expectedHash","hash","NativeBsPatch","hashFile","toLowerCase","assertSigned","filePath","signature","what","publicKey","valid","verifySignature","catch","Error","downloadWithRetry","url","destPath","onProgress","retryLimit","Math","max","network","retry","timeout","timeoutMs","subscription","onDownloadProgress","total","min","floor","received","downloadFile","delay","pow","__DEV__","console","warn","Promise","resolve","setTimeout","remove","fetchOtaManifest","fetchManifest","ASSET_STORE_DIR","OTA_DIR","isSafeRelativePath","p","startsWith","includes","downloadAndSyncAssets","assetManifestUrl","version","log","onStatus","fs","OtaStatus","SYNCING_ASSETS","versionDir","assets","manifest","fetchJson","filter","ext","originalPath","message","length","writeFile","ASSET_LIST_FILE","dirs","Map","ensureDir","dir","has","set","mkdir","get","processed","downloaded","failed","index","worker","asset","storePath","getLocalAssetPath","exists","getAssetUrl","removePath","dest","slice","lastIndexOf","copyFile","round","all","Array","from","emit","OtaEvent","DOWNLOAD_SUCCESS","getLocalPatchPath","patch","docDir","appVersion","id","selectUpdate","patchList","localV","targetV","forTarget","toVersion","find","filename","fromVersion","updateInFlight","applyOtaPatchInternal","args","runUpdatePipeline","options","autoReload","allowDebugUpdates","UP_TO_DATE","createOtaLogger","onEvent","ensureOtaDir","totalStart","Date","now","finalBundlePath","getBundlePath","baseAppVersion","tempBundle","localPatchPath","DOCUMENT_DIR","minAppVersion","currentAppVer","getAppVersion","undefined","VERSION_INCOMPATIBLE","download","remoteName","DOWNLOAD_START","dlStart","sizeBytes","getUpdateFileUrl","dlError","DOWNLOAD_FAIL","error","downloadMs","durationMs","sizeKB","assertHash","expected","actual","HASH_MISMATCH","metadata","commit","metrics","manifestUrl","moveFile","nativeAppVersion","updateMetadata","registerNewVersion","totalMs","PATCH_SUCCESS","patchSizeKB","SUCCESS","fromCache","reloadBundle","applyPatchFile","sourcePath","DOWNLOADING","APPLYING","sigError","SIGNATURE_INVALID","baseHash","PATCH_START","applyStart","success","applyPatch","applyMs","PATCH_FAIL","bundleHash","bundleSignature","installFullBundle","fullBundleUrl","FALLBACK_FULL_BUNDLE","cleanup","loadMetadata","currentVersion","canPatch","ERROR"],"sourceRoot":"../../../src","sources":["ota/otaCore.ts"],"mappings":"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","ignoreList":[]}
@@ -3,13 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.updateMetadata = exports.registerNewVersion = exports.markHealthy = exports.loadMetadata = exports.getBundlePath = exports.ensureOtaDir = exports.cleanupOldVersions = exports.MAX_VERSION_HISTORY = void 0;
6
+ exports.updateMetadata = exports.registerNewVersion = exports.markHealthy = exports.loadMetadata = exports.getBundlePath = exports.ensureOtaDir = exports.cleanupOldVersions = exports.OTA_DIR = exports.MAX_VERSION_HISTORY = exports.DOCUMENT_DIR = exports.ASSET_LIST_FILE = void 0;
7
7
  var _reactNative = require("react-native");
8
- var _reactNativeBlobUtil = _interopRequireDefault(require("react-native-blob-util"));
8
+ var _NativeBsPatch = _interopRequireDefault(require("../NativeBsPatch"));
9
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- const OTA_DIR = `${_reactNativeBlobUtil.default.fs.dirs.DocumentDir}/ota`;
10
+ /** Same directory the native resolver reads `ota/` from */
11
+ const DOCUMENT_DIR = exports.DOCUMENT_DIR = _NativeBsPatch.default.getDocumentDir();
12
+ const OTA_DIR = exports.OTA_DIR = `${DOCUMENT_DIR}/ota`;
11
13
  const METADATA_PATH = `${OTA_DIR}/metadata.json`;
12
14
  const METADATA_TMP_PATH = `${METADATA_PATH}.tmp`;
15
+ const ASSET_STORE_DIR = `${OTA_DIR}/assets`;
16
+ /** Per-version list of `hash.ext` store files the version uses (written by otaCore) */
17
+ const ASSET_LIST_FILE = exports.ASSET_LIST_FILE = 'assets.json';
13
18
 
14
19
  /** Serializes metadata updates (see updateMetadata). */
15
20
  let saveLock = Promise.resolve();
@@ -17,11 +22,7 @@ let saveLock = Promise.resolve();
17
22
  /**
18
23
  * Ensures the OTA root directory exists.
19
24
  */
20
- const ensureOtaDir = async () => {
21
- if (!(await _reactNativeBlobUtil.default.fs.exists(OTA_DIR))) {
22
- await _reactNativeBlobUtil.default.fs.mkdir(OTA_DIR);
23
- }
24
- };
25
+ const ensureOtaDir = () => _NativeBsPatch.default.mkdir(OTA_DIR);
25
26
 
26
27
  /**
27
28
  * Loads the current OTA metadata from the local filesystem.
@@ -32,10 +33,10 @@ const ensureOtaDir = async () => {
32
33
  exports.ensureOtaDir = ensureOtaDir;
33
34
  const loadMetadata = async defaultVersion => {
34
35
  try {
35
- // A crash between unlink and rename in saveMetadata leaves only the .tmp copy
36
+ // Versions before 4.0 could crash between unlink and rename, leaving only the .tmp copy
36
37
  for (const path of [METADATA_PATH, METADATA_TMP_PATH]) {
37
- if (await _reactNativeBlobUtil.default.fs.exists(path)) {
38
- return JSON.parse(await _reactNativeBlobUtil.default.fs.readFile(path, 'utf8'));
38
+ if (await _NativeBsPatch.default.exists(path)) {
39
+ return JSON.parse(await _NativeBsPatch.default.readFile(path));
39
40
  }
40
41
  }
41
42
  } catch (e) {
@@ -62,12 +63,8 @@ const updateMetadata = async (defaultVersion, fn) => {
62
63
  await prevLock;
63
64
  const metadata = fn(await loadMetadata(defaultVersion));
64
65
  await ensureOtaDir();
65
- // Write-then-rename so a kill mid-write never leaves truncated JSON
66
- await _reactNativeBlobUtil.default.fs.writeFile(METADATA_TMP_PATH, JSON.stringify(metadata, null, 2), 'utf8');
67
- if (await _reactNativeBlobUtil.default.fs.exists(METADATA_PATH)) {
68
- await _reactNativeBlobUtil.default.fs.unlink(METADATA_PATH);
69
- }
70
- await _reactNativeBlobUtil.default.fs.mv(METADATA_TMP_PATH, METADATA_PATH);
66
+ // Native writeFile is atomic: a kill mid-write never leaves truncated JSON
67
+ await _NativeBsPatch.default.writeFile(METADATA_PATH, JSON.stringify(metadata, null, 2));
71
68
  return metadata;
72
69
  } catch (e) {
73
70
  console.error('[otaMetadata] Failed to save metadata:', e);
@@ -110,8 +107,8 @@ const registerNewVersion = (metadata, newVersion, appVersion) => {
110
107
  exports.registerNewVersion = registerNewVersion;
111
108
  const cleanupOldVersions = async (metadata, baseVersion) => {
112
109
  try {
113
- if (!(await _reactNativeBlobUtil.default.fs.exists(OTA_DIR))) return;
114
- const items = await _reactNativeBlobUtil.default.fs.ls(OTA_DIR);
110
+ if (!(await _NativeBsPatch.default.exists(OTA_DIR))) return;
111
+ const items = await _NativeBsPatch.default.readDir(OTA_DIR);
115
112
 
116
113
  // Retain current active version and rollback versions
117
114
  const retainedVersions = new Set([metadata.currentVersion, ...(metadata.previousVersions || [])]);
@@ -120,9 +117,10 @@ const cleanupOldVersions = async (metadata, baseVersion) => {
120
117
  const versionMatch = item.match(/^v(\d+)$/);
121
118
  if (versionMatch) {
122
119
  const ver = parseInt(versionMatch[1], 10);
123
- if (!retainedVersions.has(ver) && ver !== baseVersion) {
120
+ // Higher than current: may be an install in progress, not yet in metadata
121
+ if (!retainedVersions.has(ver) && ver !== baseVersion && ver < metadata.currentVersion) {
124
122
  const dirPath = `${OTA_DIR}/${item}`;
125
- await _reactNativeBlobUtil.default.fs.unlink(dirPath).catch(() => {});
123
+ await _NativeBsPatch.default.removePath(dirPath).catch(() => {});
126
124
  if (__DEV__) {
127
125
  console.log(`[otaMetadata] Cleaned up obsolete OTA version: ${item}`);
128
126
  }
@@ -130,14 +128,40 @@ const cleanupOldVersions = async (metadata, baseVersion) => {
130
128
  }
131
129
  // Clean up leftover temporary bundle files (.tmp)
132
130
  if (item.endsWith('.tmp') && item !== 'metadata.json.tmp') {
133
- await _reactNativeBlobUtil.default.fs.unlink(`${OTA_DIR}/${item}`).catch(() => {});
131
+ await _NativeBsPatch.default.removePath(`${OTA_DIR}/${item}`).catch(() => {});
134
132
  }
135
133
  }
134
+ await cleanupAssetStore();
136
135
  } catch (e) {
137
136
  console.warn('[otaMetadata] Cleanup old versions failed:', e);
138
137
  }
139
138
  };
140
139
 
140
+ /**
141
+ * Deletes store files no remaining version lists. The store is only a download
142
+ * cache (each version holds its own copies), so this never breaks a version.
143
+ * ponytail: an install that reuses a store file between our read of its list and
144
+ * the unlink fails its asset sync; it is retried on the next check.
145
+ */
146
+ exports.cleanupOldVersions = cleanupOldVersions;
147
+ const cleanupAssetStore = async () => {
148
+ const fs = _NativeBsPatch.default;
149
+ if (!(await fs.exists(ASSET_STORE_DIR))) return;
150
+ const keep = new Set();
151
+ for (const item of await fs.readDir(OTA_DIR)) {
152
+ const list = `${OTA_DIR}/${item}/${ASSET_LIST_FILE}`;
153
+ if (/^v\d+$/.test(item) && (await fs.exists(list))) {
154
+ const files = JSON.parse(await fs.readFile(list));
155
+ files.forEach(f => keep.add(f));
156
+ }
157
+ }
158
+ for (const file of await fs.readDir(ASSET_STORE_DIR)) {
159
+ if (!keep.has(file)) {
160
+ await fs.removePath(`${ASSET_STORE_DIR}/${file}`).catch(() => {});
161
+ }
162
+ }
163
+ };
164
+
141
165
  /**
142
166
  * Marks the running version healthy: the native resolver stops treating its
143
167
  * launches as pending, so it is never rolled back afterwards (crash on first
@@ -149,7 +173,6 @@ const cleanupOldVersions = async (metadata, baseVersion) => {
149
173
  * since switched currentVersion, the new version hasn't run yet and is left pending.
150
174
  * @returns The updated metadata.
151
175
  */
152
- exports.cleanupOldVersions = cleanupOldVersions;
153
176
  const markHealthy = async (defaultVersion, runningVersion, appVersion) => {
154
177
  const updated = await updateMetadata(defaultVersion, metadata => metadata.currentVersion !== runningVersion ? metadata : {
155
178
  ...metadata,
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeBlobUtil","_interopRequireDefault","e","__esModule","default","OTA_DIR","ReactNativeBlobUtil","fs","dirs","DocumentDir","METADATA_PATH","METADATA_TMP_PATH","saveLock","Promise","resolve","ensureOtaDir","exists","mkdir","exports","loadMetadata","defaultVersion","path","JSON","parse","readFile","console","warn","currentVersion","previousVersions","rollbackCount","lastLaunchSuccessful","updateMetadata","fn","prevLock","release","metadata","writeFile","stringify","unlink","mv","error","Error","message","MAX_VERSION_HISTORY","registerNewVersion","newVersion","appVersion","versions","uniquePrevious","Array","from","Set","filter","v","slice","cleanupOldVersions","baseVersion","items","ls","retainedVersions","item","versionMatch","match","ver","parseInt","has","dirPath","catch","__DEV__","log","endsWith","markHealthy","runningVersion","updated","verifiedVersion","getBundlePath","version","filename","Platform","select","android","ios"],"sourceRoot":"../../../src","sources":["ota/otaMetadata.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_NativeBsPatch","_interopRequireDefault","e","__esModule","default","DOCUMENT_DIR","exports","NativeBsPatch","getDocumentDir","OTA_DIR","METADATA_PATH","METADATA_TMP_PATH","ASSET_STORE_DIR","ASSET_LIST_FILE","saveLock","Promise","resolve","ensureOtaDir","mkdir","loadMetadata","defaultVersion","path","exists","JSON","parse","readFile","console","warn","currentVersion","previousVersions","rollbackCount","lastLaunchSuccessful","updateMetadata","fn","prevLock","release","metadata","writeFile","stringify","error","Error","message","MAX_VERSION_HISTORY","registerNewVersion","newVersion","appVersion","versions","uniquePrevious","Array","from","Set","filter","v","slice","cleanupOldVersions","baseVersion","items","readDir","retainedVersions","item","versionMatch","match","ver","parseInt","has","dirPath","removePath","catch","__DEV__","log","endsWith","cleanupAssetStore","fs","keep","list","test","files","forEach","f","add","file","markHealthy","runningVersion","updated","verifiedVersion","getBundlePath","version","filename","Platform","select","android","ios"],"sourceRoot":"../../../src","sources":["ota/otaMetadata.ts"],"mappings":"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","ignoreList":[]}
@@ -3,10 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.GitHubRawStorageProvider = void 0;
7
- var _reactNative = require("react-native");
8
- var _reactNativeBlobUtil = _interopRequireDefault(require("react-native-blob-util"));
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
6
+ exports.fetchJson = exports.GitHubRawStorageProvider = void 0;
10
7
  /**
11
8
  * Storage Provider for any static host with this layout: GitHub raw, a public
12
9
  * Cloudflare R2 bucket (r2.dev or custom domain), S3, a CDN...
@@ -26,7 +23,26 @@ const NO_CACHE_HEADERS = {
26
23
  'Cache-Control': 'no-cache'
27
24
  };
28
25
 
26
+ /** GET + JSON.parse with a timeout (fetch has none of its own); rejects on non-2xx. */
27
+ const fetchJson = async (url, timeoutMs) => {
28
+ const controller = new AbortController();
29
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
30
+ try {
31
+ const res = await fetch(url, {
32
+ headers: NO_CACHE_HEADERS,
33
+ signal: controller.signal
34
+ });
35
+ if (!res.ok) {
36
+ throw new Error(`HTTP ${res.status} for ${url}`);
37
+ }
38
+ return await res.json();
39
+ } finally {
40
+ clearTimeout(timer);
41
+ }
42
+ };
43
+
29
44
  /** Append a timestamp query param to defeat CDN caches on mutable URLs */
45
+ exports.fetchJson = fetchJson;
30
46
  const bustCache = url => `${url}?cb=${Date.now()}`;
31
47
  const normalizeChannel = channel => {
32
48
  const lower = channel.toLowerCase();
@@ -49,19 +65,13 @@ class GitHubRawStorageProvider {
49
65
  // Cache-bust: registry is mutable; must always fetch the latest version
50
66
  const registryUrl = bustCache(`${normalizedBaseUrl}/${baseFolder}/ota_registry.json`);
51
67
  try {
52
- const res = await _reactNativeBlobUtil.default.config({
53
- timeout: 15000
54
- }).fetch('GET', registryUrl, NO_CACHE_HEADERS);
55
- if (res.respInfo.status !== 200) {
56
- throw new Error(`Registry fetch failed with status ${res.respInfo.status}`);
57
- }
58
- const registry = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;
68
+ const registry = await fetchJson(registryUrl, 15000);
59
69
  if (!config.appVersion) {
60
70
  throw new Error('[GitHubRawStorage] config.appVersion is required to query OTA registry');
61
71
  }
62
72
  const appGroup = registry?.apps?.[config.appVersion];
63
73
  const flavorGroup = appGroup?.flavors?.[channelName];
64
- return (flavorGroup?.patches ?? []).filter(p => !p.platform || p.platform.toLowerCase() === _reactNative.Platform.OS.toLowerCase());
74
+ return flavorGroup?.patches ?? [];
65
75
  } catch (error) {
66
76
  // Surface it: "no patches" would report a broken registry as up to date
67
77
  throw new Error(`[GitHubRawStorage] Manifest fetch error: ${error.message}`);