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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["NO_CACHE_HEADERS","fetchJson","url","timeoutMs","controller","AbortController","timer","setTimeout","abort","res","fetch","headers","signal","ok","Error","status","json","clearTimeout","exports","bustCache","Date","now","normalizeChannel","channel","lower","toLowerCase","GitHubRawStorageProvider","fetchManifest","config","customServer","baseUrl","baseFolder","channelName","normalizedBaseUrl","endsWith","slice","registryUrl","registry","appVersion","appGroup","apps","flavorGroup","flavors","patches","error","message","getUpdateFileUrl","filename","getAssetUrl","hash","ext"],"sourceRoot":"../../../../src","sources":["ota/storage/GitHubRawStorage.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeBsPatch.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeBsPatch.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA4FlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -13,14 +13,6 @@ export function reloadBundle() {
|
|
|
13
13
|
export * from './ota/otaLogger';
|
|
14
14
|
export * from './ota/OtaProvider';
|
|
15
15
|
export * from './ota/types';
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* @deprecated No-ops since 3.1: OTA assets are placed next to the bundle, where React
|
|
19
|
-
* Native resolves them by default, so no source transformer is needed.
|
|
20
|
-
*/
|
|
21
|
-
export const initOtaAssetResolver = async _version => {};
|
|
22
|
-
/** @deprecated No-op since 3.1, see initOtaAssetResolver. */
|
|
23
|
-
export const resetOtaAssetResolver = () => {};
|
|
24
16
|
export { GitHubRawStorageProvider } from './ota/storage/GitHubRawStorage';
|
|
25
17
|
export default {
|
|
26
18
|
applyPatch,
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeBsPatch","applyPatch","oldBundlePath","newBundlePath","patchPath","markAsHealthy","reloadBundle","
|
|
1
|
+
{"version":3,"names":["NativeBsPatch","applyPatch","oldBundlePath","newBundlePath","patchPath","markAsHealthy","reloadBundle","GitHubRawStorageProvider"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,OAAOA,aAAa,MAAM,iBAAiB;AAE3C,OAAO,SAASC,UAAUA,CACxBC,aAAqB,EACrBC,aAAqB,EACrBC,SAAiB,EACC;EAClB,OAAOJ,aAAa,CAACC,UAAU,CAACC,aAAa,EAAEC,aAAa,EAAEC,SAAS,CAAC;AAC1E;AAEA,OAAO,SAASC,aAAaA,CAAA,EAAS;EACpC,OAAOL,aAAa,CAACK,aAAa,CAAC,CAAC;AACtC;AAEA,OAAO,SAASC,YAAYA,CAAA,EAAS;EACnC,OAAON,aAAa,CAACM,YAAY,CAAC,CAAC;AACrC;AAEA,cAAc,iBAAiB;AAC/B,cAAc,mBAAmB;AACjC,cAAc,aAAa;AAE3B,SAASC,wBAAwB,QAAQ,gCAAgC;AAEzE,eAAe;EACbN,UAAU;EACVK,YAAY;EACZD;AACF,CAAC","ignoreList":[]}
|
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { ActivityIndicator, AppState, Platform, StyleSheet, Text, View } from 'react-native';
|
|
5
|
-
import ReactNativeBlobUtil from 'react-native-blob-util';
|
|
6
5
|
import NativeBsPatch from '../NativeBsPatch';
|
|
7
6
|
import { applyOtaPatchInternal, fetchOtaManifest, selectUpdate, validateOtaConfig } from './otaCore';
|
|
8
7
|
import { createOtaLogger, OtaEvent } from './otaLogger';
|
|
9
|
-
import { loadMetadata, markHealthy } from './otaMetadata';
|
|
8
|
+
import { DOCUMENT_DIR, loadMetadata, markHealthy, OTA_DIR } from './otaMetadata';
|
|
10
9
|
import { OtaStatus, OtaUpdateMode } from './types';
|
|
11
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
11
|
const OtaContext = /*#__PURE__*/createContext(undefined);
|
|
@@ -73,10 +72,11 @@ export function OtaProvider({
|
|
|
73
72
|
* OR called automatically by checkUpdates()
|
|
74
73
|
*/
|
|
75
74
|
const executeApplyUpdate = useCallback(async (patchList, currentVer, targetVer) => {
|
|
76
|
-
console.log('[OtaProvider] executeApplyUpdate | targetV:', targetVer, 'currentV:', currentVer);
|
|
77
75
|
const directPatch = selectUpdate(patchList, currentVer, targetVer);
|
|
78
76
|
if (!directPatch) {
|
|
79
|
-
|
|
77
|
+
if (__DEV__) {
|
|
78
|
+
console.warn('[OtaProvider] No update entry found for', currentVer, '->', targetVer);
|
|
79
|
+
}
|
|
80
80
|
setStatus(OtaStatus.ERROR);
|
|
81
81
|
setMessage('No upgrade path found.');
|
|
82
82
|
return;
|
|
@@ -94,7 +94,9 @@ export function OtaProvider({
|
|
|
94
94
|
setProgressIfChanged(percent);
|
|
95
95
|
});
|
|
96
96
|
} catch (error) {
|
|
97
|
-
|
|
97
|
+
if (__DEV__) {
|
|
98
|
+
console.error('[OtaProvider] Update error:', error);
|
|
99
|
+
}
|
|
98
100
|
setStatus(OtaStatus.ERROR);
|
|
99
101
|
setMessage(`Update failed: ${error.message}`);
|
|
100
102
|
}
|
|
@@ -161,14 +163,12 @@ export function OtaProvider({
|
|
|
161
163
|
const remotePatches = await fetchOtaManifest(effectiveConfig);
|
|
162
164
|
const metadata = await loadMetadata(config.baseAppVersion);
|
|
163
165
|
const localV = metadata.currentVersion;
|
|
164
|
-
console.log('[OtaProvider] checkUpdates | localV:', localV, 'remotePatches count:', remotePatches.length);
|
|
165
166
|
|
|
166
|
-
//
|
|
167
|
+
// The one platform filter (storage providers return every platform).
|
|
168
|
+
// Also skips versions that crashed on boot and were rolled back natively.
|
|
167
169
|
const failed = metadata.failedVersions ?? [];
|
|
168
|
-
const platformPatches = remotePatches.filter(p => (!p.platform || p.platform === Platform.OS) && !failed.includes(p.toVersion));
|
|
169
|
-
console.log('[OtaProvider] platformPatches count:', platformPatches.length);
|
|
170
|
+
const platformPatches = remotePatches.filter(p => (!p.platform || p.platform.toLowerCase() === Platform.OS) && !failed.includes(p.toVersion));
|
|
170
171
|
const maxV = platformPatches.length > 0 ? Math.max(...platformPatches.map(p => p.toVersion)) : localV;
|
|
171
|
-
console.log('[OtaProvider] latestV determined:', maxV);
|
|
172
172
|
setPatches(platformPatches);
|
|
173
173
|
setCurrentVersion(localV);
|
|
174
174
|
setLatestVersion(maxV);
|
|
@@ -212,10 +212,10 @@ export function OtaProvider({
|
|
|
212
212
|
useEffect(() => {
|
|
213
213
|
const bootstrap = async () => {
|
|
214
214
|
// Clean up any pending trash directories from previous resets (non-blocking)
|
|
215
|
-
|
|
215
|
+
NativeBsPatch.readDir(DOCUMENT_DIR).then(dirs => {
|
|
216
216
|
for (const dir of dirs) {
|
|
217
217
|
if (dir.startsWith('ota_trash_')) {
|
|
218
|
-
|
|
218
|
+
NativeBsPatch.removePath(`${DOCUMENT_DIR}/${dir}`).catch(() => {});
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
221
|
}).catch(() => {});
|
|
@@ -275,23 +275,21 @@ export function OtaProvider({
|
|
|
275
275
|
subscription.remove();
|
|
276
276
|
};
|
|
277
277
|
}, [config.updateMode, checkUpdates]);
|
|
278
|
-
const markAsHealthy = async () => {
|
|
278
|
+
const markAsHealthy = useCallback(async () => {
|
|
279
279
|
const log = createOtaLogger(config.onEvent);
|
|
280
280
|
log.emit(OtaEvent.MARK_HEALTHY);
|
|
281
281
|
const appVersion = await NativeBsPatch.getAppVersion().catch(() => config.appVersion);
|
|
282
282
|
await markHealthy(config.baseAppVersion, runningVersionRef.current, appVersion);
|
|
283
|
-
};
|
|
284
|
-
const resetToFactory = async () => {
|
|
283
|
+
}, [config]);
|
|
284
|
+
const resetToFactory = useCallback(async () => {
|
|
285
285
|
const log = createOtaLogger(config.onEvent);
|
|
286
286
|
try {
|
|
287
287
|
setStatus(OtaStatus.APPLYING);
|
|
288
288
|
setMessage('Executing system wipe...');
|
|
289
289
|
log.emit(OtaEvent.RESET_FACTORY);
|
|
290
|
-
|
|
291
|
-
if (await ReactNativeBlobUtil.fs.exists(otaDir)) {
|
|
290
|
+
if (await NativeBsPatch.exists(OTA_DIR)) {
|
|
292
291
|
// Fast atomic rename to prevent blocking the JS thread during deletion of potentially 1000s of files
|
|
293
|
-
|
|
294
|
-
await ReactNativeBlobUtil.fs.mv(otaDir, trashDir);
|
|
292
|
+
await NativeBsPatch.moveFile(OTA_DIR, `${DOCUMENT_DIR}/ota_trash_${Date.now()}`);
|
|
295
293
|
// Deletion is deferred to the next app bootstrap to prevent blocking the bridge before reload
|
|
296
294
|
}
|
|
297
295
|
setMessage('Reset complete. Core reload initiated...');
|
|
@@ -300,8 +298,10 @@ export function OtaProvider({
|
|
|
300
298
|
setStatus(OtaStatus.ERROR);
|
|
301
299
|
setMessage(`Reset failed: ${error.message}`);
|
|
302
300
|
}
|
|
303
|
-
};
|
|
304
|
-
|
|
301
|
+
}, [config]);
|
|
302
|
+
|
|
303
|
+
// Memoized: consumers re-render only when something they can see changes
|
|
304
|
+
const value = useMemo(() => ({
|
|
305
305
|
status,
|
|
306
306
|
message,
|
|
307
307
|
progress,
|
|
@@ -316,7 +316,7 @@ export function OtaProvider({
|
|
|
316
316
|
markAsHealthy,
|
|
317
317
|
checkUpdate: checkUpdates,
|
|
318
318
|
reloadBundle: () => NativeBsPatch.reloadBundle()
|
|
319
|
-
};
|
|
319
|
+
}), [status, message, progress, currentVersion, latestVersion, pendingCount, isChecking, metrics, isUpdateReady, applyUpdate, resetToFactory, markAsHealthy, checkUpdates]);
|
|
320
320
|
|
|
321
321
|
// Logic to determine if we should block the UI
|
|
322
322
|
const isBlocking = useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","ActivityIndicator","AppState","Platform","StyleSheet","Text","View","ReactNativeBlobUtil","NativeBsPatch","applyOtaPatchInternal","fetchOtaManifest","selectUpdate","validateOtaConfig","createOtaLogger","OtaEvent","loadMetadata","markHealthy","OtaStatus","OtaUpdateMode","jsx","_jsx","jsxs","_jsxs","OtaContext","undefined","OtaProvider","children","config","loadingView","useLoadingView","status","setStatus","IDLE","message","setMessage","progress","setProgress","currentVersion","setCurrentVersion","baseAppVersion","latestVersion","setLatestVersion","pendingCount","setPendingCount","isChecking","setIsChecking","metrics","setMetrics","patches","setPatches","isInitialized","setIsInitialized","isUpdateReady","setIsUpdateReady","appState","currentState","isCheckingRef","pendingReloadRef","bootstrapDone","runningVersionRef","progressRef","isDebugUpdateEnabled","__DEV__","allowDebugUpdates","configError","e","Error","setProgressIfChanged","nextProgress","current","getEffectiveConfig","appVersion","nativeVer","getAppVersion","executeApplyUpdate","patchList","currentVer","targetVer","console","log","directPatch","warn","ERROR","effectiveConfig","DOWNLOADING","s","msg","m","percent","error","applyUpdate","UP_TO_DATE","downloadBackgroundUpdate","localV","targetV","SUCCESS","autoReload","checkUpdates","CHECKING","onEvent","emit","CHECK_UPDATE","remotePatches","metadata","length","failed","failedVersions","platformPatches","filter","p","platform","OS","includes","toVersion","maxV","Math","max","map","UPDATE_AVAILABLE","updateMode","BACKGROUND_DOWNLOAD","ON_APP_START","ON_APP_FOREGROUND","bootstrap","fs","ls","dirs","DocumentDir","then","dir","startsWith","unlink","catch","mode","MANUAL","subscription","addEventListener","nextAppState","reloadBundle","match","remove","markAsHealthy","MARK_HEALTHY","resetToFactory","APPLYING","RESET_FACTORY","otaDir","exists","trashDir","Date","now","mv","value","checkUpdate","isBlocking","healthyMarkedRef","Provider","style","styles","loadingContainer","loadingCard","size","color","loadingTitle","loadingText","progressText","toFixed","useOta","context","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","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","ActivityIndicator","AppState","Platform","StyleSheet","Text","View","NativeBsPatch","applyOtaPatchInternal","fetchOtaManifest","selectUpdate","validateOtaConfig","createOtaLogger","OtaEvent","DOCUMENT_DIR","loadMetadata","markHealthy","OTA_DIR","OtaStatus","OtaUpdateMode","jsx","_jsx","jsxs","_jsxs","OtaContext","undefined","OtaProvider","children","config","loadingView","useLoadingView","status","setStatus","IDLE","message","setMessage","progress","setProgress","currentVersion","setCurrentVersion","baseAppVersion","latestVersion","setLatestVersion","pendingCount","setPendingCount","isChecking","setIsChecking","metrics","setMetrics","patches","setPatches","isInitialized","setIsInitialized","isUpdateReady","setIsUpdateReady","appState","currentState","isCheckingRef","pendingReloadRef","bootstrapDone","runningVersionRef","progressRef","isDebugUpdateEnabled","__DEV__","allowDebugUpdates","configError","e","Error","setProgressIfChanged","nextProgress","current","getEffectiveConfig","appVersion","nativeVer","getAppVersion","executeApplyUpdate","patchList","currentVer","targetVer","directPatch","console","warn","ERROR","effectiveConfig","DOWNLOADING","s","msg","m","percent","error","applyUpdate","UP_TO_DATE","downloadBackgroundUpdate","localV","targetV","SUCCESS","autoReload","checkUpdates","CHECKING","onEvent","emit","CHECK_UPDATE","remotePatches","metadata","failed","failedVersions","platformPatches","filter","p","platform","toLowerCase","OS","includes","toVersion","maxV","length","Math","max","map","UPDATE_AVAILABLE","updateMode","BACKGROUND_DOWNLOAD","ON_APP_START","ON_APP_FOREGROUND","bootstrap","readDir","then","dirs","dir","startsWith","removePath","catch","mode","MANUAL","subscription","addEventListener","nextAppState","reloadBundle","match","remove","markAsHealthy","log","MARK_HEALTHY","resetToFactory","APPLYING","RESET_FACTORY","exists","moveFile","Date","now","value","checkUpdate","isBlocking","healthyMarkedRef","Provider","style","styles","loadingContainer","loadingCard","size","color","loadingTitle","loadingText","progressText","toFixed","useOta","context","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":[]}
|
|
@@ -13,14 +13,11 @@
|
|
|
13
13
|
* - Structured telemetry logging
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
-
import { Platform } from 'react-native';
|
|
17
|
-
import ReactNativeBlobUtil from 'react-native-blob-util';
|
|
18
16
|
import NativeBsPatch from '../NativeBsPatch';
|
|
19
17
|
import { createOtaLogger, OtaEvent } from './otaLogger';
|
|
20
|
-
import { ensureOtaDir, getBundlePath, loadMetadata, registerNewVersion, updateMetadata } from './otaMetadata';
|
|
21
|
-
import { GitHubRawStorageProvider } from './storage/GitHubRawStorage';
|
|
18
|
+
import { ASSET_LIST_FILE, DOCUMENT_DIR, ensureOtaDir, OTA_DIR, getBundlePath, loadMetadata, registerNewVersion, updateMetadata } from './otaMetadata';
|
|
19
|
+
import { fetchJson, GitHubRawStorageProvider } from './storage/GitHubRawStorage';
|
|
22
20
|
import { OtaStatus } from './types';
|
|
23
|
-
const OTA_DIR = `${ReactNativeBlobUtil.fs.dirs.DocumentDir}/ota`;
|
|
24
21
|
|
|
25
22
|
// ─── Storage Provider Factory ──────────────────────────────────────────
|
|
26
23
|
|
|
@@ -84,7 +81,7 @@ export const semverGte = (a, b) => {
|
|
|
84
81
|
export const verifyHash = async (path, expectedHash) => {
|
|
85
82
|
if (!expectedHash) return true;
|
|
86
83
|
try {
|
|
87
|
-
const hash = await
|
|
84
|
+
const hash = await NativeBsPatch.hashFile(path);
|
|
88
85
|
return hash.toLowerCase() === expectedHash.toLowerCase();
|
|
89
86
|
} catch {
|
|
90
87
|
return false;
|
|
@@ -105,53 +102,34 @@ const assertSigned = async (filePath, signature, config, what) => {
|
|
|
105
102
|
|
|
106
103
|
/**
|
|
107
104
|
* Download a file with retry logic using exponential backoff.
|
|
108
|
-
*
|
|
105
|
+
* Native streams to `${destPath}.part` and renames only on a 2xx response, so a
|
|
106
|
+
* cut-off download or an error page never sits at destPath looking complete.
|
|
107
|
+
* @returns Size of the downloaded file in bytes
|
|
109
108
|
*/
|
|
110
|
-
const downloadWithRetry = async (url, destPath, config, onProgress
|
|
111
|
-
const retryLimit = config.network?.retry ?? 3;
|
|
109
|
+
const downloadWithRetry = async (url, destPath, config, onProgress) => {
|
|
110
|
+
const retryLimit = Math.max(1, config.network?.retry ?? 3);
|
|
112
111
|
const timeout = config.network?.timeoutMs ?? 30000;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
});
|
|
131
|
-
taskRef = {
|
|
132
|
-
cancel: () => task.cancel()
|
|
133
|
-
};
|
|
134
|
-
const resp = await task;
|
|
135
|
-
const status = resp.respInfo.status;
|
|
136
|
-
if (status < 200 || status >= 300) {
|
|
137
|
-
throw new Error(`HTTP ${status} for ${url}`);
|
|
138
|
-
}
|
|
139
|
-
if (await ReactNativeBlobUtil.fs.exists(destPath)) {
|
|
140
|
-
await ReactNativeBlobUtil.fs.unlink(destPath);
|
|
141
|
-
}
|
|
142
|
-
await ReactNativeBlobUtil.fs.mv(partPath, destPath);
|
|
143
|
-
return;
|
|
144
|
-
} catch (e) {
|
|
145
|
-
// Cancel any lingering request before retrying
|
|
146
|
-
taskRef?.cancel();
|
|
147
|
-
await ReactNativeBlobUtil.fs.unlink(partPath).catch(() => {});
|
|
148
|
-
if (i === retryLimit - 1) throw e;
|
|
149
|
-
const delay = Math.pow(2, i) * 1000; // Exponential backoff: 1s, 2s, 4s...
|
|
150
|
-
if (__DEV__) {
|
|
151
|
-
console.warn(`[otaCore] Download attempt ${i + 1} failed. Retrying in ${delay}ms...`);
|
|
112
|
+
const subscription = NativeBsPatch.onDownloadProgress(e => {
|
|
113
|
+
// total is -1 without a Content-Length
|
|
114
|
+
if (e.path === destPath && e.total > 0) {
|
|
115
|
+
onProgress(Math.min(100, Math.floor(e.received / e.total * 100)));
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
try {
|
|
119
|
+
for (let i = 0;; i++) {
|
|
120
|
+
try {
|
|
121
|
+
return await NativeBsPatch.downloadFile(url, destPath, timeout);
|
|
122
|
+
} catch (e) {
|
|
123
|
+
if (i >= retryLimit - 1) throw e;
|
|
124
|
+
const delay = Math.pow(2, i) * 1000; // Exponential backoff: 1s, 2s, 4s...
|
|
125
|
+
if (__DEV__) {
|
|
126
|
+
console.warn(`[otaCore] Download attempt ${i + 1} failed. Retrying in ${delay}ms...`);
|
|
127
|
+
}
|
|
128
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
152
129
|
}
|
|
153
|
-
await new Promise(resolve => setTimeout(resolve, delay));
|
|
154
130
|
}
|
|
131
|
+
} finally {
|
|
132
|
+
subscription.remove();
|
|
155
133
|
}
|
|
156
134
|
};
|
|
157
135
|
|
|
@@ -170,7 +148,7 @@ export const fetchOtaManifest = config => getStorage(config).fetchManifest(confi
|
|
|
170
148
|
|
|
171
149
|
// ─── Hashed Asset Store ───────────────────────────────────────────────
|
|
172
150
|
|
|
173
|
-
const ASSET_STORE_DIR = `${
|
|
151
|
+
const ASSET_STORE_DIR = `${OTA_DIR}/assets`;
|
|
174
152
|
|
|
175
153
|
/** Relative path inside the version dir: no absolute paths, no `..` segments. */
|
|
176
154
|
const isSafeRelativePath = p => /^[A-Za-z0-9_\-.@/]+$/.test(p) && !p.startsWith('/') && !p.split('/').includes('..');
|
|
@@ -185,21 +163,12 @@ const isSafeRelativePath = p => /^[A-Za-z0-9_\-.@/]+$/.test(p) && !p.startsWith(
|
|
|
185
163
|
* hash into ota/assets/ and copied from there for later versions.
|
|
186
164
|
*/
|
|
187
165
|
const downloadAndSyncAssets = async (assetManifestUrl, version, config, log, onStatus, onProgress) => {
|
|
188
|
-
const fs =
|
|
166
|
+
const fs = NativeBsPatch;
|
|
189
167
|
onStatus(OtaStatus.SYNCING_ASSETS, 'Syncing assets...');
|
|
190
168
|
const versionDir = `${OTA_DIR}/v${version}`;
|
|
191
169
|
let assets = [];
|
|
192
170
|
try {
|
|
193
|
-
const
|
|
194
|
-
followRedirect: true,
|
|
195
|
-
timeout: 10000
|
|
196
|
-
}).fetch('GET', assetManifestUrl, {
|
|
197
|
-
'Cache-Control': 'no-cache'
|
|
198
|
-
});
|
|
199
|
-
if (resp.respInfo.status !== 200) {
|
|
200
|
-
throw new Error(`status ${resp.respInfo.status}`);
|
|
201
|
-
}
|
|
202
|
-
const manifest = typeof resp.data === 'string' ? JSON.parse(resp.data) : resp.data;
|
|
171
|
+
const manifest = await fetchJson(assetManifestUrl, 10000);
|
|
203
172
|
// Hash/ext/path become file names: reject anything unexpected
|
|
204
173
|
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));
|
|
205
174
|
} catch (e) {
|
|
@@ -207,12 +176,14 @@ const downloadAndSyncAssets = async (assetManifestUrl, version, config, log, onS
|
|
|
207
176
|
throw new Error(`Failed to fetch asset manifest: ${e.message}`);
|
|
208
177
|
}
|
|
209
178
|
if (assets.length === 0) return;
|
|
179
|
+
// Lets cleanupOldVersions keep the store files that retained versions use
|
|
180
|
+
await fs.writeFile(`${versionDir}/${ASSET_LIST_FILE}`, JSON.stringify(assets.map(a => `${a.hash}.${a.ext}`)));
|
|
210
181
|
onStatus(OtaStatus.SYNCING_ASSETS, `Syncing ${assets.length} asset(s)...`);
|
|
211
|
-
//
|
|
182
|
+
// Native mkdir creates parents and tolerates an existing dir; this just skips repeats
|
|
212
183
|
const dirs = new Map();
|
|
213
184
|
const ensureDir = dir => {
|
|
214
185
|
if (!dirs.has(dir)) {
|
|
215
|
-
dirs.set(dir, fs.
|
|
186
|
+
dirs.set(dir, fs.mkdir(dir));
|
|
216
187
|
}
|
|
217
188
|
return dirs.get(dir);
|
|
218
189
|
};
|
|
@@ -231,18 +202,14 @@ const downloadAndSyncAssets = async (assetManifestUrl, version, config, log, onS
|
|
|
231
202
|
if (!url) throw new Error('no URL');
|
|
232
203
|
await downloadWithRetry(url, storePath, config, () => {});
|
|
233
204
|
if (!(await verifyHash(storePath, asset.hash))) {
|
|
234
|
-
await fs.
|
|
205
|
+
await fs.removePath(storePath).catch(() => {});
|
|
235
206
|
throw new Error('hash mismatch');
|
|
236
207
|
}
|
|
237
208
|
downloaded++;
|
|
238
209
|
}
|
|
239
210
|
const dest = `${versionDir}/${asset.originalPath}`;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
await ensureDir(`${versionDir}/${parts.slice(0, i).join('/')}`);
|
|
243
|
-
}
|
|
244
|
-
if (await fs.exists(dest)) await fs.unlink(dest);
|
|
245
|
-
await fs.cp(storePath, dest);
|
|
211
|
+
await ensureDir(dest.slice(0, dest.lastIndexOf('/')));
|
|
212
|
+
await fs.copyFile(storePath, dest);
|
|
246
213
|
} catch (e) {
|
|
247
214
|
if (__DEV__) {
|
|
248
215
|
console.warn(`[otaCore] Asset ${asset.originalPath} failed:`, e);
|
|
@@ -288,7 +255,7 @@ export const getLocalAssetPath = (hash, ext) => `${ASSET_STORE_DIR}/${hash}.${ex
|
|
|
288
255
|
* Gets the local filesystem path for a downloaded patch file.
|
|
289
256
|
*
|
|
290
257
|
* @param patch - Patch metadata object
|
|
291
|
-
* @param docDir - Document directory path (
|
|
258
|
+
* @param docDir - Document directory path (`DOCUMENT_DIR`)
|
|
292
259
|
* @returns Absolute path to the patch file
|
|
293
260
|
*/
|
|
294
261
|
export const getLocalPatchPath = (patch, docDir) => `${docDir}/ota/patch-${patch.appVersion}-${patch.id}.patch`;
|
|
@@ -296,9 +263,10 @@ export const getLocalPatchPath = (patch, docDir) => `${docDir}/ota/patch-${patch
|
|
|
296
263
|
/**
|
|
297
264
|
* Picks the registry entry for `localV → targetV`: a patch from the OTA bundle
|
|
298
265
|
* already on disk, else the full-bundle entry (store build, or outside the patch window).
|
|
266
|
+
* `patchList` is already filtered to this platform (checkUpdates).
|
|
299
267
|
*/
|
|
300
268
|
export const selectUpdate = (patchList, localV, targetV) => {
|
|
301
|
-
const forTarget = patchList.filter(p => p.toVersion === targetV
|
|
269
|
+
const forTarget = patchList.filter(p => p.toVersion === targetV);
|
|
302
270
|
return forTarget.find(p => p.filename && p.fromVersion === localV) ?? forTarget.find(p => !p.filename);
|
|
303
271
|
};
|
|
304
272
|
|
|
@@ -340,11 +308,11 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
|
|
|
340
308
|
const log = createOtaLogger(config.onEvent);
|
|
341
309
|
await ensureOtaDir();
|
|
342
310
|
const totalStart = Date.now();
|
|
343
|
-
const fs =
|
|
311
|
+
const fs = NativeBsPatch;
|
|
344
312
|
const finalBundlePath = getBundlePath(patch.toVersion, config.baseAppVersion) || '';
|
|
345
313
|
const tempBundle = `${finalBundlePath}.tmp`;
|
|
346
314
|
const versionDir = `${OTA_DIR}/v${patch.toVersion}`;
|
|
347
|
-
const localPatchPath = getLocalPatchPath(patch,
|
|
315
|
+
const localPatchPath = getLocalPatchPath(patch, DOCUMENT_DIR);
|
|
348
316
|
|
|
349
317
|
// ── Version Compatibility ──
|
|
350
318
|
// Checked before anything else so an incompatible update can't reach the full-bundle path
|
|
@@ -364,17 +332,16 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
|
|
|
364
332
|
throw new Error(`Native app ${currentAppVer} is too old. Update to ${patch.minAppVersion}+ first.`);
|
|
365
333
|
}
|
|
366
334
|
}
|
|
367
|
-
|
|
368
|
-
await fs.mkdir(versionDir);
|
|
369
|
-
}
|
|
335
|
+
await fs.mkdir(versionDir);
|
|
370
336
|
const download = async (remoteName, dest) => {
|
|
371
337
|
log.emit(OtaEvent.DOWNLOAD_START, {
|
|
372
338
|
version: patch.toVersion
|
|
373
339
|
});
|
|
374
340
|
const dlStart = Date.now();
|
|
341
|
+
let sizeBytes;
|
|
375
342
|
try {
|
|
376
343
|
const url = await getStorage(config).getUpdateFileUrl(remoteName, config);
|
|
377
|
-
await downloadWithRetry(url, dest, config, onProgress);
|
|
344
|
+
sizeBytes = await downloadWithRetry(url, dest, config, onProgress);
|
|
378
345
|
} catch (dlError) {
|
|
379
346
|
log.emit(OtaEvent.DOWNLOAD_FAIL, {
|
|
380
347
|
error: dlError.message,
|
|
@@ -383,7 +350,6 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
|
|
|
383
350
|
throw dlError;
|
|
384
351
|
}
|
|
385
352
|
const downloadMs = Date.now() - dlStart;
|
|
386
|
-
const sizeBytes = Number((await fs.stat(dest)).size);
|
|
387
353
|
log.emit(OtaEvent.DOWNLOAD_SUCCESS, {
|
|
388
354
|
version: patch.toVersion,
|
|
389
355
|
durationMs: downloadMs,
|
|
@@ -396,7 +362,7 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
|
|
|
396
362
|
};
|
|
397
363
|
const assertHash = async (path, expected, what) => {
|
|
398
364
|
if (!expected || (await verifyHash(path, expected))) return;
|
|
399
|
-
const actual = await fs.
|
|
365
|
+
const actual = await fs.hashFile(path).catch(() => '');
|
|
400
366
|
log.emit(OtaEvent.HASH_MISMATCH, {
|
|
401
367
|
message: `${what} hash mismatch`,
|
|
402
368
|
version: patch.toVersion,
|
|
@@ -415,10 +381,7 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
|
|
|
415
381
|
const manifestUrl = await getStorage(config).getUpdateFileUrl(patch.assetManifestUrl, config);
|
|
416
382
|
await downloadAndSyncAssets(manifestUrl, patch.toVersion, config, log, onStatus, onProgress);
|
|
417
383
|
}
|
|
418
|
-
|
|
419
|
-
await fs.unlink(finalBundlePath);
|
|
420
|
-
}
|
|
421
|
-
await fs.mv(tempBundle, finalBundlePath);
|
|
384
|
+
await fs.moveFile(tempBundle, finalBundlePath);
|
|
422
385
|
|
|
423
386
|
// Native version, not config.appVersion: the native resolver compares against it on boot
|
|
424
387
|
const nativeAppVersion = await NativeBsPatch.getAppVersion().catch(() => config.appVersion);
|
|
@@ -468,7 +431,7 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
|
|
|
468
431
|
const applyStart = Date.now();
|
|
469
432
|
const success = await NativeBsPatch.applyPatch(sourcePath, tempBundle, localPatchPath);
|
|
470
433
|
const applyMs = Date.now() - applyStart;
|
|
471
|
-
await fs.
|
|
434
|
+
await fs.removePath(localPatchPath).catch(() => {});
|
|
472
435
|
if (!success) {
|
|
473
436
|
log.emit(OtaEvent.PATCH_FAIL, {
|
|
474
437
|
message: 'BsPatch returned false',
|
|
@@ -505,8 +468,8 @@ const runUpdatePipeline = async (patch, config, onStatus, onProgress, options =
|
|
|
505
468
|
});
|
|
506
469
|
};
|
|
507
470
|
const cleanup = async () => {
|
|
508
|
-
await fs.
|
|
509
|
-
await fs.
|
|
471
|
+
await fs.removePath(localPatchPath).catch(() => {});
|
|
472
|
+
await fs.removePath(tempBundle).catch(() => {});
|
|
510
473
|
};
|
|
511
474
|
|
|
512
475
|
// Patch only from an OTA bundle we installed ourselves (byte-identical to the build output)
|