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.
- package/README.md +3 -3
- package/android/build.gradle +18 -40
- package/android/src/main/java/vn/reactnativebspatch/BsPatchModule.kt +148 -13
- package/android/src/main/java/vn/reactnativebspatch/OtaBundleResolver.kt +21 -3
- package/cpp/CMakeLists.txt +0 -3
- package/cpp/bsdiff/bspatch_wrapper.c +3 -2
- package/ios/OtaBundleResolver.swift +22 -5
- package/ios/RNBsPatch.mm +220 -32
- package/lib/commonjs/NativeBsPatch.js.map +1 -1
- package/lib/commonjs/index.js +1 -13
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ota/OtaProvider.js +21 -21
- package/lib/commonjs/ota/OtaProvider.js.map +1 -1
- package/lib/commonjs/ota/otaCore.js +50 -88
- package/lib/commonjs/ota/otaCore.js.map +1 -1
- package/lib/commonjs/ota/otaMetadata.js +46 -23
- package/lib/commonjs/ota/otaMetadata.js.map +1 -1
- package/lib/commonjs/ota/storage/GitHubRawStorage.js +22 -12
- package/lib/commonjs/ota/storage/GitHubRawStorage.js.map +1 -1
- package/lib/module/NativeBsPatch.js.map +1 -1
- package/lib/module/index.js +0 -8
- package/lib/module/index.js.map +1 -1
- package/lib/module/ota/OtaProvider.js +22 -22
- package/lib/module/ota/OtaProvider.js.map +1 -1
- package/lib/module/ota/otaCore.js +50 -87
- package/lib/module/ota/otaCore.js.map +1 -1
- package/lib/module/ota/otaMetadata.js +44 -21
- package/lib/module/ota/otaMetadata.js.map +1 -1
- package/lib/module/ota/storage/GitHubRawStorage.js +20 -10
- package/lib/module/ota/storage/GitHubRawStorage.js.map +1 -1
- package/lib/typescript/NativeBsPatch.d.ts +36 -1
- package/lib/typescript/NativeBsPatch.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +0 -7
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/ota/OtaProvider.d.ts.map +1 -1
- package/lib/typescript/ota/otaCore.d.ts +2 -1
- package/lib/typescript/ota/otaCore.d.ts.map +1 -1
- package/lib/typescript/ota/otaMetadata.d.ts +5 -0
- package/lib/typescript/ota/otaMetadata.d.ts.map +1 -1
- package/lib/typescript/ota/storage/GitHubRawStorage.d.ts +2 -0
- package/lib/typescript/ota/storage/GitHubRawStorage.d.ts.map +1 -1
- package/package.json +2 -3
- package/react-native-bspatch.podspec +3 -25
- package/src/NativeBsPatch.ts +44 -1
- package/src/index.ts +0 -7
- package/src/ota/OtaProvider.tsx +37 -23
- package/src/ota/otaCore.ts +55 -94
- package/src/ota/otaMetadata.ts +44 -25
- package/src/ota/storage/GitHubRawStorage.ts +17 -22
- package/tools/build_ota.sh +1 -1
- package/tools/upload_ota.sh +3 -2
- 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
|
|
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
|
-
*
|
|
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
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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 = `${
|
|
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 =
|
|
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
|
|
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
|
-
//
|
|
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.
|
|
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.
|
|
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
|
-
|
|
249
|
-
|
|
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 (
|
|
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
|
|
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 =
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
521
|
-
await fs.
|
|
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
|
|
8
|
+
var _NativeBsPatch = _interopRequireDefault(require("../NativeBsPatch"));
|
|
9
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
-
|
|
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 =
|
|
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
|
-
//
|
|
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
|
|
38
|
-
return JSON.parse(await
|
|
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
|
-
//
|
|
66
|
-
await
|
|
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
|
|
114
|
-
const items = await
|
|
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
|
-
|
|
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
|
|
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
|
|
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","
|
|
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
|
|
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
|
|
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}`);
|