react-native-bspatch 4.0.3 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -30
- package/android/build.gradle +25 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/vn/reactnativebspatch/BsPatchModule.kt +86 -6
- package/android/src/main/res/values/bspatch_public_key.xml +5 -0
- package/cpp/bsdiff/bspatch_wrapper.c +34 -0
- package/cpp/bsdiff/bspatch_wrapper.h +2 -0
- package/cpp/bspatch_jni.cpp +18 -0
- package/ios/RNBsPatch.mm +142 -1
- package/lib/commonjs/NativeBsPatch.js.map +1 -1
- package/lib/commonjs/index.js +9 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ota/OtaProvider.js +124 -32
- package/lib/commonjs/ota/OtaProvider.js.map +1 -1
- package/lib/commonjs/ota/eligibility.js +40 -0
- package/lib/commonjs/ota/eligibility.js.map +1 -0
- package/lib/commonjs/ota/entrySignature.js +23 -0
- package/lib/commonjs/ota/entrySignature.js.map +1 -0
- package/lib/commonjs/ota/installId.js +27 -0
- package/lib/commonjs/ota/installId.js.map +1 -0
- package/lib/commonjs/ota/otaCore.js +96 -21
- package/lib/commonjs/ota/otaCore.js.map +1 -1
- package/lib/commonjs/ota/storage/{GitHubRawStorage.js → R2Storage.js} +20 -15
- package/lib/commonjs/ota/storage/R2Storage.js.map +1 -0
- package/lib/commonjs/ota/types.js.map +1 -1
- package/lib/module/NativeBsPatch.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/ota/OtaProvider.js +124 -32
- package/lib/module/ota/OtaProvider.js.map +1 -1
- package/lib/module/ota/eligibility.js +34 -0
- package/lib/module/ota/eligibility.js.map +1 -0
- package/lib/module/ota/entrySignature.js +17 -0
- package/lib/module/ota/entrySignature.js.map +1 -0
- package/lib/module/ota/installId.js +22 -0
- package/lib/module/ota/installId.js.map +1 -0
- package/lib/module/ota/otaCore.js +96 -21
- package/lib/module/ota/otaCore.js.map +1 -1
- package/lib/module/ota/storage/{GitHubRawStorage.js → R2Storage.js} +18 -14
- package/lib/module/ota/storage/R2Storage.js.map +1 -0
- package/lib/module/ota/types.js.map +1 -1
- package/lib/typescript/NativeBsPatch.d.ts +28 -2
- package/lib/typescript/NativeBsPatch.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +3 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/ota/OtaProvider.d.ts.map +1 -1
- package/lib/typescript/ota/eligibility.d.ts +19 -0
- package/lib/typescript/ota/eligibility.d.ts.map +1 -0
- package/lib/typescript/ota/entrySignature.d.ts +9 -0
- package/lib/typescript/ota/entrySignature.d.ts.map +1 -0
- package/lib/typescript/ota/installId.d.ts +3 -0
- package/lib/typescript/ota/installId.d.ts.map +1 -0
- package/lib/typescript/ota/otaCore.d.ts.map +1 -1
- package/lib/typescript/ota/storage/{GitHubRawStorage.d.ts → R2Storage.d.ts} +4 -3
- package/lib/typescript/ota/storage/R2Storage.d.ts.map +1 -0
- package/lib/typescript/ota/types.d.ts +54 -5
- package/lib/typescript/ota/types.d.ts.map +1 -1
- package/package.json +3 -2
- package/react-native-bspatch.podspec +3 -1
- package/src/NativeBsPatch.ts +34 -2
- package/src/index.ts +5 -1
- package/src/ota/OtaProvider.tsx +128 -43
- package/src/ota/eligibility.ts +48 -0
- package/src/ota/entrySignature.ts +31 -0
- package/src/ota/installId.ts +18 -0
- package/src/ota/otaCore.ts +102 -21
- package/src/ota/storage/{GitHubRawStorage.ts → R2Storage.ts} +17 -13
- package/src/ota/types.ts +51 -5
- package/tools/build_ota.sh +343 -116
- package/tools/doctor.js +130 -0
- package/tools/ensure_signing_key.js +216 -0
- package/tools/fingerprint.js +111 -0
- package/tools/ios_fingerprint.sh +9 -0
- package/tools/ota_admin.js +131 -0
- package/tools/setup_project.js +41 -15
- package/tools/update_registry.js +111 -11
- package/tools/upload_ota.sh +85 -184
- package/tools/verify_publish.js +81 -0
- package/lib/commonjs/ota/storage/GitHubRawStorage.js.map +0 -1
- package/lib/module/ota/storage/GitHubRawStorage.js.map +0 -1
- package/lib/typescript/ota/storage/GitHubRawStorage.d.ts.map +0 -1
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.fetchJson = exports.
|
|
6
|
+
exports.normalizeChannel = exports.fetchJson = exports.R2StorageProvider = void 0;
|
|
7
7
|
/**
|
|
8
|
-
* Storage Provider for
|
|
9
|
-
*
|
|
8
|
+
* Storage Provider for the public URL of a Cloudflare R2 bucket (r2.dev or a custom
|
|
9
|
+
* domain): plain HTTP GETs, so any static host serving the same layout also works.
|
|
10
10
|
*
|
|
11
11
|
* Direct URL mapping:
|
|
12
12
|
* - Manifest: `${baseUrl}/${baseFolder}/ota_registry.json`
|
|
@@ -14,22 +14,25 @@ exports.fetchJson = exports.GitHubRawStorageProvider = void 0;
|
|
|
14
14
|
* - Assets: `${baseUrl}/${baseFolder}/assets/${hash}.${ext}`
|
|
15
15
|
*
|
|
16
16
|
* NOTE: Only the registry is mutable: it is fetched with Cache-Control: no-cache
|
|
17
|
-
* and a timestamp query param (
|
|
17
|
+
* and a timestamp query param (the CDN in front of the bucket may cache it). Bundles,
|
|
18
18
|
* patches, manifests and assets are never overwritten, so they stay cacheable.
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
-
/** Headers to bypass
|
|
21
|
+
/** Headers to bypass the CDN cache on mutable files (registry, manifests) */
|
|
22
22
|
const NO_CACHE_HEADERS = {
|
|
23
23
|
'Cache-Control': 'no-cache'
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
/** GET + JSON.parse with a timeout (fetch has none of its own); rejects on non-2xx. */
|
|
27
|
-
const fetchJson = async (url, timeoutMs) => {
|
|
27
|
+
const fetchJson = async (url, timeoutMs, headers) => {
|
|
28
28
|
const controller = new AbortController();
|
|
29
29
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
30
30
|
try {
|
|
31
31
|
const res = await fetch(url, {
|
|
32
|
-
headers:
|
|
32
|
+
headers: {
|
|
33
|
+
...NO_CACHE_HEADERS,
|
|
34
|
+
...headers
|
|
35
|
+
},
|
|
33
36
|
signal: controller.signal
|
|
34
37
|
});
|
|
35
38
|
if (!res.ok) {
|
|
@@ -50,31 +53,33 @@ const normalizeChannel = channel => {
|
|
|
50
53
|
if (lower === 'prod') return 'production';
|
|
51
54
|
return lower;
|
|
52
55
|
};
|
|
53
|
-
|
|
56
|
+
exports.normalizeChannel = normalizeChannel;
|
|
57
|
+
class R2StorageProvider {
|
|
54
58
|
async fetchManifest(config) {
|
|
55
59
|
if (!config.customServer) {
|
|
56
|
-
throw new Error('[
|
|
60
|
+
throw new Error('[R2Storage] customServer configuration missing');
|
|
57
61
|
}
|
|
58
62
|
const {
|
|
59
63
|
baseUrl,
|
|
60
64
|
channel,
|
|
61
|
-
baseFolder = 'ota'
|
|
65
|
+
baseFolder = 'ota',
|
|
66
|
+
headers
|
|
62
67
|
} = config.customServer;
|
|
63
68
|
const channelName = normalizeChannel(channel);
|
|
64
69
|
const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
|
|
65
70
|
// Cache-bust: registry is mutable; must always fetch the latest version
|
|
66
71
|
const registryUrl = bustCache(`${normalizedBaseUrl}/${baseFolder}/ota_registry.json`);
|
|
67
72
|
try {
|
|
68
|
-
const registry = await fetchJson(registryUrl, 15000);
|
|
73
|
+
const registry = await fetchJson(registryUrl, 15000, headers);
|
|
69
74
|
if (!config.appVersion) {
|
|
70
|
-
throw new Error('[
|
|
75
|
+
throw new Error('[R2Storage] config.appVersion is required to query OTA registry');
|
|
71
76
|
}
|
|
72
77
|
const appGroup = registry?.apps?.[config.appVersion];
|
|
73
78
|
const flavorGroup = appGroup?.flavors?.[channelName];
|
|
74
79
|
return flavorGroup?.patches ?? [];
|
|
75
80
|
} catch (error) {
|
|
76
81
|
// Surface it: "no patches" would report a broken registry as up to date
|
|
77
|
-
throw new Error(`[
|
|
82
|
+
throw new Error(`[R2Storage] Manifest fetch error: ${error.message}`);
|
|
78
83
|
}
|
|
79
84
|
}
|
|
80
85
|
async getUpdateFileUrl(filename, config) {
|
|
@@ -104,5 +109,5 @@ class GitHubRawStorageProvider {
|
|
|
104
109
|
return `${normalizedBaseUrl}/${baseFolder}/assets/${hash}.${ext}`;
|
|
105
110
|
}
|
|
106
111
|
}
|
|
107
|
-
exports.
|
|
108
|
-
//# sourceMappingURL=
|
|
112
|
+
exports.R2StorageProvider = R2StorageProvider;
|
|
113
|
+
//# sourceMappingURL=R2Storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NO_CACHE_HEADERS","fetchJson","url","timeoutMs","headers","controller","AbortController","timer","setTimeout","abort","res","fetch","signal","ok","Error","status","json","clearTimeout","exports","bustCache","Date","now","normalizeChannel","channel","lower","toLowerCase","R2StorageProvider","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/R2Storage.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OtaUpdateMode","exports","OtaStatus"],"sourceRoot":"../../../src","sources":["ota/types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AAFA,IAuBYA,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;
|
|
1
|
+
{"version":3,"names":["OtaUpdateMode","exports","OtaStatus"],"sourceRoot":"../../../src","sources":["ota/types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AAFA,IAuBYA,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAgEzB;AACA;AACA;AAFA,IA8FYE,SAAS,GAAAD,OAAA,CAAAC,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA","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;AA4HlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -13,7 +13,8 @@ export function reloadBundle() {
|
|
|
13
13
|
export * from './ota/otaLogger';
|
|
14
14
|
export * from './ota/OtaProvider';
|
|
15
15
|
export * from './ota/types';
|
|
16
|
-
export {
|
|
16
|
+
export { R2StorageProvider, /** @deprecated Renamed to R2StorageProvider */
|
|
17
|
+
R2StorageProvider as GitHubRawStorageProvider } from './ota/storage/R2Storage';
|
|
17
18
|
export default {
|
|
18
19
|
applyPatch,
|
|
19
20
|
reloadBundle,
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"names":["NativeBsPatch","applyPatch","oldBundlePath","newBundlePath","patchPath","markAsHealthy","reloadBundle","R2StorageProvider","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,SACEC,iBAAiB,EACjB;AACAA,iBAAiB,IAAIC,wBAAwB,QACxC,yBAAyB;AAEhC,eAAe;EACbP,UAAU;EACVK,YAAY;EACZD;AACF,CAAC","ignoreList":[]}
|
|
@@ -3,12 +3,30 @@
|
|
|
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
5
|
import NativeBsPatch from '../NativeBsPatch';
|
|
6
|
+
import { ineligibleReason } from './eligibility';
|
|
7
|
+
import { getInstallId } from './installId';
|
|
6
8
|
import { applyOtaPatchInternal, fetchOtaManifest, selectUpdate, validateOtaConfig } from './otaCore';
|
|
7
9
|
import { createOtaLogger, OtaEvent } from './otaLogger';
|
|
8
10
|
import { DOCUMENT_DIR, loadMetadata, markHealthy, OTA_DIR } from './otaMetadata';
|
|
9
11
|
import { OtaStatus, OtaUpdateMode } from './types';
|
|
10
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
13
|
const OtaContext = /*#__PURE__*/createContext(undefined);
|
|
14
|
+
const DEFAULT_MIN_CHECK_INTERVAL_MS = 10 * 60 * 1000;
|
|
15
|
+
|
|
16
|
+
/** Sync native getter, '' if it throws */
|
|
17
|
+
const nativeString = get => {
|
|
18
|
+
try {
|
|
19
|
+
return get() ?? '';
|
|
20
|
+
} catch {
|
|
21
|
+
return '';
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/** Bytecode version the running Hermes reads (undefined off Hermes) */
|
|
26
|
+
const hermesBytecodeVersion = () => {
|
|
27
|
+
const v = globalThis.HermesInternal?.getRuntimeProperties?.()?.['Bytecode Version'];
|
|
28
|
+
return v ? Number(v) : undefined;
|
|
29
|
+
};
|
|
12
30
|
export function OtaProvider({
|
|
13
31
|
children,
|
|
14
32
|
config,
|
|
@@ -26,13 +44,17 @@ export function OtaProvider({
|
|
|
26
44
|
const [patches, setPatches] = useState([]);
|
|
27
45
|
const [isInitialized, setIsInitialized] = useState(false);
|
|
28
46
|
const [isUpdateReady, setIsUpdateReady] = useState(false);
|
|
47
|
+
const [isMandatory, setIsMandatory] = useState(false);
|
|
48
|
+
const [installId, setInstallId] = useState('');
|
|
29
49
|
const appState = useRef(AppState.currentState);
|
|
30
50
|
const isCheckingRef = useRef(false);
|
|
31
|
-
const pendingReloadRef = useRef(false);
|
|
32
51
|
const bootstrapDone = useRef(false);
|
|
33
52
|
/** Version the native resolver loaded for this JS session */
|
|
34
53
|
const runningVersionRef = useRef(config.baseAppVersion);
|
|
35
54
|
const progressRef = useRef(0);
|
|
55
|
+
const lastCheckRef = useRef(0);
|
|
56
|
+
const appVersionRef = useRef(config.appVersion ?? '');
|
|
57
|
+
const installIdRef = useRef('');
|
|
36
58
|
const isDebugUpdateEnabled = !__DEV__ || config.allowDebugUpdates === true;
|
|
37
59
|
|
|
38
60
|
// No fallbacks: a missing env value disables OTA instead of silently pointing elsewhere.
|
|
@@ -51,21 +73,53 @@ export function OtaProvider({
|
|
|
51
73
|
progressRef.current = nextProgress;
|
|
52
74
|
setProgress(nextProgress);
|
|
53
75
|
}, []);
|
|
76
|
+
|
|
77
|
+
/** config.onEvent, plus a fire-and-forget POST to config.telemetry.url */
|
|
78
|
+
const onEvent = useCallback(entry => {
|
|
79
|
+
config.onEvent?.(entry);
|
|
80
|
+
const telemetry = config.telemetry;
|
|
81
|
+
if (!telemetry) return;
|
|
82
|
+
fetch(telemetry.url, {
|
|
83
|
+
method: 'POST',
|
|
84
|
+
headers: {
|
|
85
|
+
'Content-Type': 'application/json',
|
|
86
|
+
...telemetry.headers
|
|
87
|
+
},
|
|
88
|
+
body: JSON.stringify({
|
|
89
|
+
...entry,
|
|
90
|
+
installId: installIdRef.current,
|
|
91
|
+
platform: Platform.OS,
|
|
92
|
+
appVersion: appVersionRef.current,
|
|
93
|
+
appBuild: nativeString(() => NativeBsPatch.getAppBuild()),
|
|
94
|
+
runtimeFingerprint: nativeString(() => NativeBsPatch.getRuntimeFingerprint()),
|
|
95
|
+
flavor: config.customServer?.channel,
|
|
96
|
+
otaVersion: runningVersionRef.current
|
|
97
|
+
})
|
|
98
|
+
}).catch(() => {});
|
|
99
|
+
}, [config]);
|
|
54
100
|
const getEffectiveConfig = useCallback(async () => {
|
|
55
|
-
|
|
101
|
+
// The keys `patch` embedded in the app (primary + backup), unless the app passes its own
|
|
102
|
+
const publicKey = config.publicKey || nativeString(() => NativeBsPatch.getEmbeddedPublicKeys()) || undefined;
|
|
103
|
+
const base = {
|
|
104
|
+
...config,
|
|
105
|
+
publicKey,
|
|
106
|
+
onEvent
|
|
107
|
+
};
|
|
108
|
+
if (config.appVersion) return base;
|
|
56
109
|
try {
|
|
57
110
|
const nativeVer = await NativeBsPatch.getAppVersion();
|
|
58
111
|
if (!nativeVer) {
|
|
59
112
|
throw new Error('Native appVersion is empty');
|
|
60
113
|
}
|
|
114
|
+
appVersionRef.current = nativeVer;
|
|
61
115
|
return {
|
|
62
|
-
...
|
|
116
|
+
...base,
|
|
63
117
|
appVersion: nativeVer
|
|
64
118
|
};
|
|
65
119
|
} catch (e) {
|
|
66
120
|
throw new Error(`[OtaProvider] Failed to auto-detect appVersion from native: ${e.message}. ` + `Please set versionName (Android) / CFBundleShortVersionString (iOS), or provide config.appVersion explicitly.`);
|
|
67
121
|
}
|
|
68
|
-
}, [config]);
|
|
122
|
+
}, [config, onEvent]);
|
|
69
123
|
|
|
70
124
|
/**
|
|
71
125
|
* Core apply update logic — separated so it can be mapped to button clicks
|
|
@@ -105,15 +159,16 @@ export function OtaProvider({
|
|
|
105
159
|
/**
|
|
106
160
|
* Exposed method for manual trigger
|
|
107
161
|
*/
|
|
108
|
-
const
|
|
162
|
+
const applyVersion = useCallback(async targetVersion => {
|
|
109
163
|
if (!isDebugUpdateEnabled) {
|
|
110
164
|
setPendingCount(0);
|
|
111
165
|
setStatus(OtaStatus.UP_TO_DATE);
|
|
112
166
|
setMessage('OTA updates are disabled while running a debug build.');
|
|
113
167
|
return;
|
|
114
168
|
}
|
|
115
|
-
await executeApplyUpdate(patches, currentVersion,
|
|
116
|
-
}, [currentVersion, executeApplyUpdate, isDebugUpdateEnabled,
|
|
169
|
+
await executeApplyUpdate(patches, currentVersion, targetVersion);
|
|
170
|
+
}, [currentVersion, executeApplyUpdate, isDebugUpdateEnabled, patches]);
|
|
171
|
+
const applyUpdate = useCallback(() => applyVersion(latestVersion), [applyVersion, latestVersion]);
|
|
117
172
|
const downloadBackgroundUpdate = useCallback(async (patchList, localV, targetV) => {
|
|
118
173
|
const directPatch = selectUpdate(patchList, localV, targetV);
|
|
119
174
|
if (!directPatch) return;
|
|
@@ -122,10 +177,15 @@ export function OtaProvider({
|
|
|
122
177
|
await applyOtaPatchInternal(directPatch, effectiveConfig, (s, msg, m) => {
|
|
123
178
|
if (s === OtaStatus.SUCCESS) {
|
|
124
179
|
setIsUpdateReady(true);
|
|
125
|
-
pendingReloadRef.current = true;
|
|
126
180
|
setStatus(OtaStatus.UP_TO_DATE);
|
|
127
181
|
setMessage(`Update V${targetV} ready for next launch`);
|
|
128
182
|
if (m) setMetrics(m);
|
|
183
|
+
if (directPatch.mandatory) {
|
|
184
|
+
setIsMandatory(true);
|
|
185
|
+
// Only in the foreground: a reload in the background is rolled back (see the
|
|
186
|
+
// AppState effect); the effect reloads once the app comes back
|
|
187
|
+
if (AppState.currentState === 'active') NativeBsPatch.reloadBundle();
|
|
188
|
+
}
|
|
129
189
|
}
|
|
130
190
|
}, () => {},
|
|
131
191
|
// silent: background doesn't spam progress
|
|
@@ -143,8 +203,9 @@ export function OtaProvider({
|
|
|
143
203
|
/**
|
|
144
204
|
* Check for updates from the manifest.
|
|
145
205
|
* Uses a ref to guard against concurrent calls (avoids stale closure).
|
|
206
|
+
* Automatic calls are throttled by minCheckIntervalMs; { force: true } always checks.
|
|
146
207
|
*/
|
|
147
|
-
const checkUpdates = useCallback(async
|
|
208
|
+
const checkUpdates = useCallback(async options => {
|
|
148
209
|
if (isCheckingRef.current || configError) return;
|
|
149
210
|
if (!isDebugUpdateEnabled) {
|
|
150
211
|
setPendingCount(0);
|
|
@@ -153,6 +214,9 @@ export function OtaProvider({
|
|
|
153
214
|
setMessage('OTA updates are disabled while running a debug build.');
|
|
154
215
|
return;
|
|
155
216
|
}
|
|
217
|
+
const minInterval = config.minCheckIntervalMs ?? DEFAULT_MIN_CHECK_INTERVAL_MS;
|
|
218
|
+
if (!options?.force && Date.now() - lastCheckRef.current < minInterval) return;
|
|
219
|
+
lastCheckRef.current = Date.now();
|
|
156
220
|
isCheckingRef.current = true;
|
|
157
221
|
setIsChecking(true);
|
|
158
222
|
setStatus(OtaStatus.CHECKING);
|
|
@@ -164,10 +228,22 @@ export function OtaProvider({
|
|
|
164
228
|
const metadata = await loadMetadata(config.baseAppVersion);
|
|
165
229
|
const localV = metadata.currentVersion;
|
|
166
230
|
|
|
167
|
-
//
|
|
168
|
-
//
|
|
169
|
-
const
|
|
170
|
-
|
|
231
|
+
// Storage providers return every platform: keep what this install may take (platform,
|
|
232
|
+
// native fingerprint, Hermes, rollout/QA lists, kill switch, versions that crashed here)
|
|
233
|
+
const context = {
|
|
234
|
+
platform: Platform.OS,
|
|
235
|
+
failedVersions: metadata.failedVersions ?? [],
|
|
236
|
+
runtimeFingerprint: nativeString(() => NativeBsPatch.getRuntimeFingerprint()),
|
|
237
|
+
hermesBytecodeVersion: hermesBytecodeVersion(),
|
|
238
|
+
installId: await getInstallId()
|
|
239
|
+
};
|
|
240
|
+
const platformPatches = remotePatches.filter(p => {
|
|
241
|
+
const reason = ineligibleReason(p, context);
|
|
242
|
+
if (reason && __DEV__ && p.toVersion > localV) {
|
|
243
|
+
console.log(`[OtaProvider] Skipping V${p.toVersion} (${p.id}): ${reason}`);
|
|
244
|
+
}
|
|
245
|
+
return !reason;
|
|
246
|
+
});
|
|
171
247
|
const maxV = platformPatches.length > 0 ? Math.max(...platformPatches.map(p => p.toVersion)) : localV;
|
|
172
248
|
setPatches(platformPatches);
|
|
173
249
|
setCurrentVersion(localV);
|
|
@@ -178,7 +254,10 @@ export function OtaProvider({
|
|
|
178
254
|
setStatus(OtaStatus.UPDATE_AVAILABLE);
|
|
179
255
|
|
|
180
256
|
// Trigger behaviors based on mode
|
|
181
|
-
|
|
257
|
+
const network = config.network?.wifiOnly ? await NativeBsPatch.getNetworkType().catch(() => 'unknown') : 'wifi';
|
|
258
|
+
if (network !== 'wifi' && network !== 'ethernet') {
|
|
259
|
+
setMessage(`Update available: V${localV} → V${maxV} (waiting for Wi-Fi)`);
|
|
260
|
+
} else if (config.updateMode === OtaUpdateMode.BACKGROUND_DOWNLOAD) {
|
|
182
261
|
downloadBackgroundUpdate(platformPatches, localV, maxV);
|
|
183
262
|
} else if (config.updateMode === OtaUpdateMode.ON_APP_START || config.updateMode === OtaUpdateMode.ON_APP_FOREGROUND) {
|
|
184
263
|
// Auto-apply immediately!
|
|
@@ -211,6 +290,11 @@ export function OtaProvider({
|
|
|
211
290
|
*/
|
|
212
291
|
useEffect(() => {
|
|
213
292
|
const bootstrap = async () => {
|
|
293
|
+
getInstallId().then(id => {
|
|
294
|
+
installIdRef.current = id;
|
|
295
|
+
setInstallId(id);
|
|
296
|
+
}).catch(() => {});
|
|
297
|
+
|
|
214
298
|
// Clean up any pending trash directories from previous resets (non-blocking)
|
|
215
299
|
NativeBsPatch.readDir(DOCUMENT_DIR).then(dirs => {
|
|
216
300
|
for (const dir of dirs) {
|
|
@@ -243,27 +327,32 @@ export function OtaProvider({
|
|
|
243
327
|
setStatus(OtaStatus.UP_TO_DATE);
|
|
244
328
|
}
|
|
245
329
|
};
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
330
|
+
|
|
331
|
+
// OTA must never take the app down: if bootstrap fails, render the app with OTA idle
|
|
332
|
+
bootstrap().catch(error => {
|
|
333
|
+
console.warn('[OtaProvider] Bootstrap failed, OTA disabled for this session:', error);
|
|
334
|
+
setMessage(`OTA disabled: ${error.message}`);
|
|
335
|
+
setStatus(OtaStatus.ERROR);
|
|
336
|
+
}).finally(() => setIsInitialized(true));
|
|
251
337
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
252
338
|
}, []);
|
|
253
339
|
|
|
254
340
|
/**
|
|
255
|
-
* AppState listener for ON_APP_FOREGROUND mode and
|
|
341
|
+
* AppState listener for ON_APP_FOREGROUND mode, and for a mandatory update that got
|
|
342
|
+
* ready while in the background.
|
|
343
|
+
* A downloaded update is not reloaded on background: iOS suspends JS before the
|
|
344
|
+
* first render, so the native resolver counts the launch as failed and rolls it back.
|
|
345
|
+
* metadata already points at the new version, so the next cold start applies it
|
|
256
346
|
*/
|
|
347
|
+
const isMandatoryRef = useRef(false);
|
|
348
|
+
isMandatoryRef.current = isMandatory && isUpdateReady;
|
|
257
349
|
useEffect(() => {
|
|
258
350
|
const subscription = AppState.addEventListener('change', nextAppState => {
|
|
259
|
-
// When going into background: if update is downloaded and ready, reload bundle silently
|
|
260
|
-
// Only 'background', not 'inactive' (iOS fires it for Control Center, calls,
|
|
261
|
-
// Face ID). Any previous state: iOS goes active → inactive → background.
|
|
262
|
-
if (nextAppState === 'background' && pendingReloadRef.current) {
|
|
263
|
-
pendingReloadRef.current = false;
|
|
264
|
-
NativeBsPatch.reloadBundle();
|
|
265
|
-
}
|
|
266
351
|
if (appState.current.match(/inactive|background/) && nextAppState === 'active' && bootstrapDone.current) {
|
|
352
|
+
if (isMandatoryRef.current) {
|
|
353
|
+
NativeBsPatch.reloadBundle();
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
267
356
|
const mode = config.updateMode ?? OtaUpdateMode.MANUAL;
|
|
268
357
|
if (mode === OtaUpdateMode.ON_APP_FOREGROUND) {
|
|
269
358
|
checkUpdates();
|
|
@@ -276,13 +365,13 @@ export function OtaProvider({
|
|
|
276
365
|
};
|
|
277
366
|
}, [config.updateMode, checkUpdates]);
|
|
278
367
|
const markAsHealthy = useCallback(async () => {
|
|
279
|
-
const log = createOtaLogger(
|
|
368
|
+
const log = createOtaLogger(onEvent);
|
|
280
369
|
log.emit(OtaEvent.MARK_HEALTHY);
|
|
281
370
|
const appVersion = await NativeBsPatch.getAppVersion().catch(() => config.appVersion);
|
|
282
371
|
await markHealthy(config.baseAppVersion, runningVersionRef.current, appVersion);
|
|
283
|
-
}, [config]);
|
|
372
|
+
}, [config, onEvent]);
|
|
284
373
|
const resetToFactory = useCallback(async () => {
|
|
285
|
-
const log = createOtaLogger(
|
|
374
|
+
const log = createOtaLogger(onEvent);
|
|
286
375
|
try {
|
|
287
376
|
setStatus(OtaStatus.APPLYING);
|
|
288
377
|
setMessage('Executing system wipe...');
|
|
@@ -298,7 +387,7 @@ export function OtaProvider({
|
|
|
298
387
|
setStatus(OtaStatus.ERROR);
|
|
299
388
|
setMessage(`Reset failed: ${error.message}`);
|
|
300
389
|
}
|
|
301
|
-
}, [
|
|
390
|
+
}, [onEvent]);
|
|
302
391
|
|
|
303
392
|
// Memoized: consumers re-render only when something they can see changes
|
|
304
393
|
const value = useMemo(() => ({
|
|
@@ -311,12 +400,15 @@ export function OtaProvider({
|
|
|
311
400
|
isChecking,
|
|
312
401
|
metrics,
|
|
313
402
|
isUpdateReady,
|
|
403
|
+
isMandatory,
|
|
404
|
+
installId,
|
|
314
405
|
applyUpdate,
|
|
406
|
+
applyVersion,
|
|
315
407
|
resetToFactory,
|
|
316
408
|
markAsHealthy,
|
|
317
409
|
checkUpdate: checkUpdates,
|
|
318
410
|
reloadBundle: () => NativeBsPatch.reloadBundle()
|
|
319
|
-
}), [status, message, progress, currentVersion, latestVersion, pendingCount, isChecking, metrics, isUpdateReady, applyUpdate, resetToFactory, markAsHealthy, checkUpdates]);
|
|
411
|
+
}), [status, message, progress, currentVersion, latestVersion, pendingCount, isChecking, metrics, isUpdateReady, isMandatory, installId, applyUpdate, applyVersion, resetToFactory, markAsHealthy, checkUpdates]);
|
|
320
412
|
|
|
321
413
|
// Logic to determine if we should block the UI
|
|
322
414
|
const isBlocking = useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
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":";;AAAA,OAAOA,KAAK,IACVC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SACEC,iBAAiB,EACjBC,QAAQ,EAERC,QAAQ,EACRC,UAAU,EACVC,IAAI,EACJC,IAAI,QACC,cAAc;AACrB,OAAOC,aAAa,MAAM,kBAAkB;AAC5C,SAASC,qBAAqB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,iBAAiB,QAAQ,WAAW;AACpG,SAASC,eAAe,EAAEC,QAAQ,QAAQ,aAAa;AACvD,SAASC,YAAY,EAAEC,YAAY,EAAEC,WAAW,EAAEC,OAAO,QAAQ,eAAe;AAChF,SAKEC,SAAS,EACTC,aAAa,QACR,SAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEjB,MAAMC,UAAU,gBAAG9B,aAAa,CAAuB+B,SAAS,CAAC;AAEjE,OAAO,SAASC,WAAWA,CAAC;EAC1BC,QAAQ;EACRC,MAAM;EACNC,WAAW;EACXC,cAAc,GAAG;AAMnB,CAAC,EAAE;EACD,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGhC,QAAQ,CAAYkB,SAAS,CAACe,IAAI,CAAC;EAC/D,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGnC,QAAQ,CAAS,iBAAiB,CAAC;EACjE,MAAM,CAACoC,QAAQ,EAAEC,WAAW,CAAC,GAAGrC,QAAQ,CAAS,CAAC,CAAC;EAEnD,MAAM,CAACsC,cAAc,EAAEC,iBAAiB,CAAC,GAAGvC,QAAQ,CAClD4B,MAAM,CAACY,cACT,CAAC;EACD,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG1C,QAAQ,CAChD4B,MAAM,CAACY,cACT,CAAC;EACD,MAAM,CAACG,YAAY,EAAEC,eAAe,CAAC,GAAG5C,QAAQ,CAAS,CAAC,CAAC;EAC3D,MAAM,CAAC6C,UAAU,EAAEC,aAAa,CAAC,GAAG9C,QAAQ,CAAU,KAAK,CAAC;EAC5D,MAAM,CAAC+C,OAAO,EAAEC,UAAU,CAAC,GAAGhD,QAAQ,CAAoB,IAAI,CAAC;EAC/D,MAAM,CAACiD,OAAO,EAAEC,UAAU,CAAC,GAAGlD,QAAQ,CAAa,EAAE,CAAC;EACtD,MAAM,CAACmD,aAAa,EAAEC,gBAAgB,CAAC,GAAGpD,QAAQ,CAAU,KAAK,CAAC;EAClE,MAAM,CAACqD,aAAa,EAAEC,gBAAgB,CAAC,GAAGtD,QAAQ,CAAU,KAAK,CAAC;EAElE,MAAMuD,QAAQ,GAAGxD,MAAM,CAACG,QAAQ,CAACsD,YAAY,CAAC;EAC9C,MAAMC,aAAa,GAAG1D,MAAM,CAAC,KAAK,CAAC;EACnC,MAAM2D,gBAAgB,GAAG3D,MAAM,CAAC,KAAK,CAAC;EACtC,MAAM4D,aAAa,GAAG5D,MAAM,CAAC,KAAK,CAAC;EACnC;EACA,MAAM6D,iBAAiB,GAAG7D,MAAM,CAAC6B,MAAM,CAACY,cAAc,CAAC;EACvD,MAAMqB,WAAW,GAAG9D,MAAM,CAAC,CAAC,CAAC;EAC7B,MAAM+D,oBAAoB,GAAG,CAACC,OAAO,IAAInC,MAAM,CAACoC,iBAAiB,KAAK,IAAI;;EAE1E;EACA;EACA,MAAMC,WAAW,GAAGnE,OAAO,CAAC,MAAM;IAChC,MAAMoE,CAAC,GAAGvD,iBAAiB,CAACiB,MAAM,CAAC;IACnC,OAAOsC,CAAC,IAAI,wCAAwCA,CAAC,EAAE;EACzD,CAAC,EAAE,CAACtC,MAAM,CAAC,CAAC;EACZ,IAAImC,OAAO,IAAIE,WAAW,EAAE;IAC1B,MAAM,IAAIE,KAAK,CAACF,WAAW,CAAC;EAC9B;EAEA,MAAMG,oBAAoB,GAAGzE,WAAW,CAAE0E,YAAoB,IAAK;IACjE,IAAIR,WAAW,CAACS,OAAO,KAAKD,YAAY,EAAE;MACxC;IACF;IACAR,WAAW,CAACS,OAAO,GAAGD,YAAY;IAClChC,WAAW,CAACgC,YAAY,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,kBAAkB,GAAG5E,WAAW,CAAC,YAAgC;IACrE,IAAIiC,MAAM,CAAC4C,UAAU,EAAE,OAAO5C,MAAM;IACpC,IAAI;MACF,MAAM6C,SAAS,GAAG,MAAMlE,aAAa,CAACmE,aAAa,CAAC,CAAC;MACrD,IAAI,CAACD,SAAS,EAAE;QACd,MAAM,IAAIN,KAAK,CAAC,4BAA4B,CAAC;MAC/C;MACA,OAAO;QAAE,GAAGvC,MAAM;QAAE4C,UAAU,EAAEC;MAAU,CAAC;IAC7C,CAAC,CAAC,OAAOP,CAAC,EAAE;MACV,MAAM,IAAIC,KAAK,CACb,+DAAgED,CAAC,CAAWhC,OAAO,IAAI,GACvF,+GACF,CAAC;IACH;EACF,CAAC,EAAE,CAACN,MAAM,CAAC,CAAC;;EAEZ;AACF;AACA;AACA;EACE,MAAM+C,kBAAkB,GAAGhF,WAAW,CACpC,OAAOiF,SAAqB,EAAEC,UAAkB,EAAEC,SAAiB,KAAK;IACtE,MAAMC,WAAW,GAAGrE,YAAY,CAACkE,SAAS,EAAEC,UAAU,EAAEC,SAAS,CAAC;IAElE,IAAI,CAACC,WAAW,EAAE;MAChB,IAAIhB,OAAO,EAAE;QACXiB,OAAO,CAACC,IAAI,CAAC,yCAAyC,EAAEJ,UAAU,EAAE,IAAI,EAAEC,SAAS,CAAC;MACtF;MACA9C,SAAS,CAACd,SAAS,CAACgE,KAAK,CAAC;MAC1B/C,UAAU,CAAC,wBAAwB,CAAC;MACpC;IACF;IAEA,IAAI;MACF,MAAMgD,eAAe,GAAG,MAAMZ,kBAAkB,CAAC,CAAC;MAClDvC,SAAS,CAACd,SAAS,CAACkE,WAAW,CAAC;MAChCvB,WAAW,CAACS,OAAO,GAAG,CAAC;MACvBjC,WAAW,CAAC,CAAC,CAAC;MACd,MAAM7B,qBAAqB,CACzBuE,WAAW,EACXI,eAAe,EACf,CAACE,CAAY,EAAEC,GAAW,EAAEC,CAAc,KAAK;QAC7CpD,UAAU,CAACmD,GAAG,CAAC;QACftD,SAAS,CAACqD,CAAC,CAAC;QACZ,IAAIE,CAAC,EAAEvC,UAAU,CAACuC,CAAC,CAAC;MACtB,CAAC,EACAC,OAAe,IAAK;QACnBpB,oBAAoB,CAACoB,OAAO,CAAC;MAC/B,CACF,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd,IAAI1B,OAAO,EAAE;QACXiB,OAAO,CAACS,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;MACrD;MACAzD,SAAS,CAACd,SAAS,CAACgE,KAAK,CAAC;MAC1B/C,UAAU,CAAC,kBAAmBsD,KAAK,CAAWvD,OAAO,EAAE,CAAC;IAC1D;EACF,CAAC,EACD,CAACqC,kBAAkB,EAAEH,oBAAoB,CAC3C,CAAC;;EAED;AACF;AACA;EACE,MAAMsB,WAAW,GAAG/F,WAAW,CAAC,YAAY;IAC1C,IAAI,CAACmE,oBAAoB,EAAE;MACzBlB,eAAe,CAAC,CAAC,CAAC;MAClBZ,SAAS,CAACd,SAAS,CAACyE,UAAU,CAAC;MAC/BxD,UAAU,CAAC,uDAAuD,CAAC;MACnE;IACF;IACA,MAAMwC,kBAAkB,CAAC1B,OAAO,EAAEX,cAAc,EAAEG,aAAa,CAAC;EAClE,CAAC,EAAE,CACDH,cAAc,EACdqC,kBAAkB,EAClBb,oBAAoB,EACpBrB,aAAa,EACbQ,OAAO,CACR,CAAC;EAEF,MAAM2C,wBAAwB,GAAGjG,WAAW,CAC1C,OACEiF,SAAqB,EACrBiB,MAAc,EACdC,OAAe,KACZ;IACH,MAAMf,WAAW,GAAGrE,YAAY,CAACkE,SAAS,EAAEiB,MAAM,EAAEC,OAAO,CAAC;IAC5D,IAAI,CAACf,WAAW,EAAE;IAElB,IAAI;MACF,MAAMI,eAAe,GAAG,MAAMZ,kBAAkB,CAAC,CAAC;MAClD,MAAM/D,qBAAqB,CACzBuE,WAAW,EACXI,eAAe,EACf,CAACE,CAAY,EAAEC,GAAW,EAAEC,CAAc,KAAK;QAC7C,IAAIF,CAAC,KAAKnE,SAAS,CAAC6E,OAAO,EAAE;UAC3BzC,gBAAgB,CAAC,IAAI,CAAC;UACtBI,gBAAgB,CAACY,OAAO,GAAG,IAAI;UAC/BtC,SAAS,CAACd,SAAS,CAACyE,UAAU,CAAC;UAC/BxD,UAAU,CAAC,WAAW2D,OAAO,wBAAwB,CAAC;UACtD,IAAIP,CAAC,EAAEvC,UAAU,CAACuC,CAAC,CAAC;QACtB;MACF,CAAC,EACD,MAAM,CAAC,CAAC;MAAE;MACV;QAAES,UAAU,EAAE;MAAM,CAAC,CAAE;MACzB,CAAC;IACH,CAAC,CAAC,OAAO9B,CAAC,EAAE;MACV,IAAIH,OAAO,EAAE;QACXiB,OAAO,CAACC,IAAI,CAAC,gDAAgD,EAAEf,CAAC,CAAC;MACnE;IACF;EACF,CAAC,EACD,CAACK,kBAAkB,CACrB,CAAC;;EAED;AACF;AACA;AACA;EACE,MAAM0B,YAAY,GAAGtG,WAAW,CAAC,YAAY;IAC3C,IAAI8D,aAAa,CAACa,OAAO,IAAIL,WAAW,EAAE;IAC1C,IAAI,CAACH,oBAAoB,EAAE;MACzBlB,eAAe,CAAC,CAAC,CAAC;MAClBE,aAAa,CAAC,KAAK,CAAC;MACpBd,SAAS,CAACd,SAAS,CAACyE,UAAU,CAAC;MAC/BxD,UAAU,CAAC,uDAAuD,CAAC;MACnE;IACF;IACAsB,aAAa,CAACa,OAAO,GAAG,IAAI;IAC5BxB,aAAa,CAAC,IAAI,CAAC;IACnBd,SAAS,CAACd,SAAS,CAACgF,QAAQ,CAAC;IAC7B/D,UAAU,CAAC,yBAAyB,CAAC;IAErC,IAAI;MACF,MAAMgD,eAAe,GAAG,MAAMZ,kBAAkB,CAAC,CAAC;MAClD3D,eAAe,CAACuE,eAAe,CAACgB,OAAO,CAAC,CAACC,IAAI,CAACvF,QAAQ,CAACwF,YAAY,CAAC;MACpE,MAAMC,aAAa,GAAG,MAAM7F,gBAAgB,CAAC0E,eAAe,CAAC;MAC7D,MAAMoB,QAAQ,GAAG,MAAMxF,YAAY,CAACa,MAAM,CAACY,cAAc,CAAC;MAC1D,MAAMqD,MAAM,GAAGU,QAAQ,CAACjE,cAAc;;MAEtC;MACA;MACA,MAAMkE,MAAM,GAAGD,QAAQ,CAACE,cAAc,IAAI,EAAE;MAC5C,MAAMC,eAAe,GAAGJ,aAAa,CAACK,MAAM,CAC1CC,CAAC,IACC,CAAC,CAACA,CAAC,CAACC,QAAQ,IAAID,CAAC,CAACC,QAAQ,CAACC,WAAW,CAAC,CAAC,KAAK3G,QAAQ,CAAC4G,EAAE,KACxD,CAACP,MAAM,CAACQ,QAAQ,CAACJ,CAAC,CAACK,SAAS,CAChC,CAAC;MAED,MAAMC,IAAI,GACRR,eAAe,CAACS,MAAM,GAAG,CAAC,GACtBC,IAAI,CAACC,GAAG,CAAC,GAAGX,eAAe,CAACY,GAAG,CAACV,CAAC,IAAIA,CAAC,CAACK,SAAS,CAAC,CAAC,GAClDpB,MAAM;MAEZ3C,UAAU,CAACwD,eAAe,CAAC;MAC3BnE,iBAAiB,CAACsD,MAAM,CAAC;MACzBnD,gBAAgB,CAACwE,IAAI,CAAC;MAEtB,IAAIA,IAAI,GAAGrB,MAAM,EAAE;QACjBjD,eAAe,CAAC,CAAC,CAAC;QAClBT,UAAU,CAAC,sBAAsB0D,MAAM,OAAOqB,IAAI,EAAE,CAAC;QACrDlF,SAAS,CAACd,SAAS,CAACqG,gBAAgB,CAAC;;QAErC;QACA,IAAI3F,MAAM,CAAC4F,UAAU,KAAKrG,aAAa,CAACsG,mBAAmB,EAAE;UAC3D7B,wBAAwB,CAACc,eAAe,EAAEb,MAAM,EAAEqB,IAAI,CAAC;QACzD,CAAC,MAAM,IACLtF,MAAM,CAAC4F,UAAU,KAAKrG,aAAa,CAACuG,YAAY,IAChD9F,MAAM,CAAC4F,UAAU,KAAKrG,aAAa,CAACwG,iBAAiB,EACrD;UACA;UACA,MAAMhD,kBAAkB,CAAC+B,eAAe,EAAEb,MAAM,EAAEqB,IAAI,CAAC;QACzD;MACF,CAAC,MAAM;QACLtE,eAAe,CAAC,CAAC,CAAC;QAClBT,UAAU,CAAC,yBAAyB0D,MAAM,GAAG,CAAC;QAC9C7D,SAAS,CAACd,SAAS,CAACyE,UAAU,CAAC;MACjC;IACF,CAAC,CAAC,OAAOF,KAAK,EAAE;MACdtD,UAAU,CAAC,iBAAkBsD,KAAK,CAAWvD,OAAO,EAAE,CAAC;MACvDF,SAAS,CAACd,SAAS,CAACgE,KAAK,CAAC;IAC5B,CAAC,SAAS;MACRzB,aAAa,CAACa,OAAO,GAAG,KAAK;MAC7BxB,aAAa,CAAC,KAAK,CAAC;IACtB;EACF,CAAC,EAAE,CAAClB,MAAM,EAAEqC,WAAW,EAAEU,kBAAkB,EAAEb,oBAAoB,EAAE8B,wBAAwB,EAAErB,kBAAkB,CAAC,CAAC;;EAEjH;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE1E,SAAS,CAAC,MAAM;IACd,MAAM+H,SAAS,GAAG,MAAAA,CAAA,KAAY;MAC5B;MACArH,aAAa,CAACsH,OAAO,CAAC/G,YAAY,CAAC,CAACgH,IAAI,CAACC,IAAI,IAAI;QAC/C,KAAK,MAAMC,GAAG,IAAID,IAAI,EAAE;UACtB,IAAIC,GAAG,CAACC,UAAU,CAAC,YAAY,CAAC,EAAE;YAChC1H,aAAa,CAAC2H,UAAU,CAAC,GAAGpH,YAAY,IAAIkH,GAAG,EAAE,CAAC,CAACG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;UACpE;QACF;MACF,CAAC,CAAC,CAACA,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;MAElB,MAAM5B,QAAQ,GAAG,MAAMxF,YAAY,CAACa,MAAM,CAACY,cAAc,CAAC;MAC1DoB,iBAAiB,CAACU,OAAO,GAAGiC,QAAQ,CAACjE,cAAc;;MAEnD;MACAC,iBAAiB,CAACgE,QAAQ,CAACjE,cAAc,CAAC;;MAE1C;MACA,IAAI2B,WAAW,EAAE;QACfe,OAAO,CAACS,KAAK,CAACxB,WAAW,CAAC;QAC1B9B,UAAU,CAAC8B,WAAW,CAAC;QACvBjC,SAAS,CAACd,SAAS,CAACgE,KAAK,CAAC;QAC1B;MACF;MACAvB,aAAa,CAACW,OAAO,GAAG,IAAI;;MAE5B;MACA,MAAM8D,IAAI,GAAGxG,MAAM,CAAC4F,UAAU,IAAIrG,aAAa,CAACkH,MAAM;MACtD,IACED,IAAI,KAAKjH,aAAa,CAACuG,YAAY,IACnCU,IAAI,KAAKjH,aAAa,CAACsG,mBAAmB,EAC1C;QACAxB,YAAY,CAAC,CAAC;MAChB,CAAC,MAAM;QACL9D,UAAU,CAAC,WAAWoE,QAAQ,CAACjE,cAAc,GAAG,CAAC;QACjDN,SAAS,CAACd,SAAS,CAACyE,UAAU,CAAC;MACjC;IACF,CAAC;IAEDiC,SAAS,CAAC,CAAC,CAACE,IAAI,CAAC,MAAM1E,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC+E,KAAK,CAAC,MAAM;MACzD;MACA;MACA;IAAA,CACD,CAAC;IACF;EACF,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;EACEtI,SAAS,CAAC,MAAM;IACd,MAAMyI,YAAY,GAAGpI,QAAQ,CAACqI,gBAAgB,CAC5C,QAAQ,EACPC,YAA4B,IAAK;MAChC;MACA;MACA;MACA,IAAIA,YAAY,KAAK,YAAY,IAAI9E,gBAAgB,CAACY,OAAO,EAAE;QAC7DZ,gBAAgB,CAACY,OAAO,GAAG,KAAK;QAChC/D,aAAa,CAACkI,YAAY,CAAC,CAAC;MAC9B;MAEA,IACElF,QAAQ,CAACe,OAAO,CAACoE,KAAK,CAAC,qBAAqB,CAAC,IAC7CF,YAAY,KAAK,QAAQ,IACzB7E,aAAa,CAACW,OAAO,EACrB;QACA,MAAM8D,IAAI,GAAGxG,MAAM,CAAC4F,UAAU,IAAIrG,aAAa,CAACkH,MAAM;QACtD,IAAID,IAAI,KAAKjH,aAAa,CAACwG,iBAAiB,EAAE;UAC5C1B,YAAY,CAAC,CAAC;QAChB;MACF;MACA1C,QAAQ,CAACe,OAAO,GAAGkE,YAAY;IACjC,CACF,CAAC;IAED,OAAO,MAAM;MACXF,YAAY,CAACK,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAAC/G,MAAM,CAAC4F,UAAU,EAAEvB,YAAY,CAAC,CAAC;EAErC,MAAM2C,aAAa,GAAGjJ,WAAW,CAAC,YAAY;IAC5C,MAAMkJ,GAAG,GAAGjI,eAAe,CAACgB,MAAM,CAACuE,OAAO,CAAC;IAC3C0C,GAAG,CAACzC,IAAI,CAACvF,QAAQ,CAACiI,YAAY,CAAC;IAC/B,MAAMtE,UAAU,GAAG,MAAMjE,aAAa,CAACmE,aAAa,CAAC,CAAC,CAACyD,KAAK,CAAC,MAAMvG,MAAM,CAAC4C,UAAU,CAAC;IACrF,MAAMxD,WAAW,CAACY,MAAM,CAACY,cAAc,EAAEoB,iBAAiB,CAACU,OAAO,EAAEE,UAAU,CAAC;EACjF,CAAC,EAAE,CAAC5C,MAAM,CAAC,CAAC;EAEZ,MAAMmH,cAAc,GAAGpJ,WAAW,CAAC,YAAY;IAC7C,MAAMkJ,GAAG,GAAGjI,eAAe,CAACgB,MAAM,CAACuE,OAAO,CAAC;IAC3C,IAAI;MACFnE,SAAS,CAACd,SAAS,CAAC8H,QAAQ,CAAC;MAC7B7G,UAAU,CAAC,0BAA0B,CAAC;MACtC0G,GAAG,CAACzC,IAAI,CAACvF,QAAQ,CAACoI,aAAa,CAAC;MAChC,IAAI,MAAM1I,aAAa,CAAC2I,MAAM,CAACjI,OAAO,CAAC,EAAE;QACvC;QACA,MAAMV,aAAa,CAAC4I,QAAQ,CAAClI,OAAO,EAAE,GAAGH,YAAY,cAAcsI,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAAC;QAChF;MACF;MACAlH,UAAU,CAAC,0CAA0C,CAAC;MACtD5B,aAAa,CAACkI,YAAY,CAAC,CAAC;IAC9B,CAAC,CAAC,OAAOhD,KAAK,EAAE;MACdzD,SAAS,CAACd,SAAS,CAACgE,KAAK,CAAC;MAC1B/C,UAAU,CAAC,iBAAkBsD,KAAK,CAAWvD,OAAO,EAAE,CAAC;IACzD;EACF,CAAC,EAAE,CAACN,MAAM,CAAC,CAAC;;EAEZ;EACA,MAAM0H,KAAK,GAAGxJ,OAAO,CAAW,OAAO;IACrCiC,MAAM;IACNG,OAAO;IACPE,QAAQ;IACRE,cAAc;IACdG,aAAa;IACbE,YAAY;IACZE,UAAU;IACVE,OAAO;IACPM,aAAa;IACbqC,WAAW;IACXqD,cAAc;IACdH,aAAa;IACbW,WAAW,EAAEtD,YAAY;IACzBwC,YAAY,EAAEA,CAAA,KAAMlI,aAAa,CAACkI,YAAY,CAAC;EACjD,CAAC,CAAC,EAAE,CACF1G,MAAM,EACNG,OAAO,EACPE,QAAQ,EACRE,cAAc,EACdG,aAAa,EACbE,YAAY,EACZE,UAAU,EACVE,OAAO,EACPM,aAAa,EACbqC,WAAW,EACXqD,cAAc,EACdH,aAAa,EACb3C,YAAY,CACb,CAAC;;EAEF;EACA,MAAMuD,UAAU,GAAG1J,OAAO,CAAC,MAAM;IAC/B,OACEgC,cAAc,KACb,CAACqB,aAAa,IACZvB,MAAM,CAAC4F,UAAU,KAAKrG,aAAa,CAACuG,YAAY,KAC9C3F,MAAM,KAAKb,SAAS,CAACe,IAAI,IACxBF,MAAM,KAAKb,SAAS,CAACgF,QAAQ,IAC7BnE,MAAM,KAAKb,SAAS,CAACkE,WAAW,IAChCrD,MAAM,KAAKb,SAAS,CAAC8H,QAAQ,IAC7BjH,MAAM,KAAKb,SAAS,CAACqG,gBAAgB,CAAE,CAAC;EAElD,CAAC,EAAE,CAACzF,cAAc,EAAEqB,aAAa,EAAEvB,MAAM,CAAC4F,UAAU,EAAEzF,MAAM,CAAC,CAAC;;EAE9D;EACA;EACA;EACA,MAAM0H,gBAAgB,GAAG1J,MAAM,CAAC,KAAK,CAAC;EACtCF,SAAS,CAAC,MAAM;IACd,IAAI2J,UAAU,IAAI,CAACrG,aAAa,IAAIsG,gBAAgB,CAACnF,OAAO,EAAE;IAC9DmF,gBAAgB,CAACnF,OAAO,GAAG,IAAI;IAC/BsE,aAAa,CAAC,CAAC,CAACT,KAAK,CAACjE,CAAC,IAAIc,OAAO,CAACC,IAAI,CAAC,qCAAqC,EAAEf,CAAC,CAAC,CAAC;IAClF;EACF,CAAC,EAAE,CAACsF,UAAU,EAAErG,aAAa,CAAC,CAAC;EAE/B,oBACE9B,IAAA,CAACG,UAAU,CAACkI,QAAQ;IAACJ,KAAK,EAAEA,KAAM;IAAA3H,QAAA,EAC/B,CAAC6H,UAAU,GACV7H,QAAQ,GACNE,WAAW,KAAKJ,SAAS,GAC3BI,WAAW,gBAEXR,IAAA,CAACf,IAAI;MAACqJ,KAAK,EAAEC,MAAM,CAACC,gBAAiB;MAAAlI,QAAA,eACnCJ,KAAA,CAACjB,IAAI;QAACqJ,KAAK,EAAEC,MAAM,CAACE,WAAY;QAAAnI,QAAA,gBAC9BN,IAAA,CAACpB,iBAAiB;UAAC8J,IAAI,EAAC,OAAO;UAACC,KAAK,EAAC;QAAS,CAAE,CAAC,eAClD3I,IAAA,CAAChB,IAAI;UAACsJ,KAAK,EAAEC,MAAM,CAACK,YAAa;UAAAtI,QAAA,EAAC;QAAW,CAAM,CAAC,eACpDN,IAAA,CAAChB,IAAI;UAACsJ,KAAK,EAAEC,MAAM,CAACM,WAAY;UAAAvI,QAAA,EAAEO;QAAO,CAAO,CAAC,EAChDH,MAAM,KAAKb,SAAS,CAACkE,WAAW,IAAIrD,MAAM,KAAKb,SAAS,CAAC8H,QAAQ,gBAChEzH,KAAA,CAAClB,IAAI;UAACsJ,KAAK,EAAEC,MAAM,CAACO,YAAa;UAAAxI,QAAA,GAAES,QAAQ,CAACgI,OAAO,CAAC,CAAC,CAAC,EAAC,GAAC;QAAA,CAAM,CAAC,GAC7D,IAAI;MAAA,CACJ;IAAC,CACH;EACP,CACkB,CAAC;AAE1B;AAEA,OAAO,SAASC,MAAMA,CAAA,EAAG;EACvB,MAAMC,OAAO,GAAG1K,UAAU,CAAC4B,UAAU,CAAC;EACtC,IAAI8I,OAAO,KAAK7I,SAAS,EAAE;IACzB,MAAM,IAAI0C,KAAK,CAAC,2CAA2C,CAAC;EAC9D;EACA,OAAOmG,OAAO;AAChB;AAEA,MAAMV,MAAM,GAAGxJ,UAAU,CAACmK,MAAM,CAAC;EAC/BV,gBAAgB,EAAE;IAChBW,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,SAAS;IAC1BC,iBAAiB,EAAE;EACrB,CAAC;EACDd,WAAW,EAAE;IACXe,KAAK,EAAE,MAAM;IACbC,QAAQ,EAAE,GAAG;IACbH,eAAe,EAAE,SAAS;IAC1BI,YAAY,EAAE,EAAE;IAChBH,iBAAiB,EAAE,EAAE;IACrBI,eAAe,EAAE,EAAE;IACnBN,UAAU,EAAE,QAAQ;IACpBO,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE;EACf,CAAC;EACDjB,YAAY,EAAE;IACZkB,SAAS,EAAE,EAAE;IACbnB,KAAK,EAAE,SAAS;IAChBoB,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDnB,WAAW,EAAE;IACXiB,SAAS,EAAE,CAAC;IACZnB,KAAK,EAAE,SAAS;IAChBoB,QAAQ,EAAE,EAAE;IACZE,UAAU,EAAE,EAAE;IACdC,SAAS,EAAE;EACb,CAAC;EACDpB,YAAY,EAAE;IACZgB,SAAS,EAAE,EAAE;IACbnB,KAAK,EAAE,SAAS;IAChBoB,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","ActivityIndicator","AppState","Platform","StyleSheet","Text","View","NativeBsPatch","ineligibleReason","getInstallId","applyOtaPatchInternal","fetchOtaManifest","selectUpdate","validateOtaConfig","createOtaLogger","OtaEvent","DOCUMENT_DIR","loadMetadata","markHealthy","OTA_DIR","OtaStatus","OtaUpdateMode","jsx","_jsx","jsxs","_jsxs","OtaContext","undefined","DEFAULT_MIN_CHECK_INTERVAL_MS","nativeString","get","hermesBytecodeVersion","v","globalThis","HermesInternal","getRuntimeProperties","Number","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","isMandatory","setIsMandatory","installId","setInstallId","appState","currentState","isCheckingRef","bootstrapDone","runningVersionRef","progressRef","lastCheckRef","appVersionRef","appVersion","installIdRef","isDebugUpdateEnabled","__DEV__","allowDebugUpdates","configError","e","Error","setProgressIfChanged","nextProgress","current","onEvent","entry","telemetry","fetch","url","method","headers","body","JSON","stringify","platform","OS","appBuild","getAppBuild","runtimeFingerprint","getRuntimeFingerprint","flavor","customServer","channel","otaVersion","catch","getEffectiveConfig","publicKey","getEmbeddedPublicKeys","base","nativeVer","getAppVersion","executeApplyUpdate","patchList","currentVer","targetVer","directPatch","console","warn","ERROR","effectiveConfig","DOWNLOADING","s","msg","m","percent","error","applyVersion","targetVersion","UP_TO_DATE","applyUpdate","downloadBackgroundUpdate","localV","targetV","SUCCESS","mandatory","reloadBundle","autoReload","checkUpdates","options","minInterval","minCheckIntervalMs","force","Date","now","CHECKING","emit","CHECK_UPDATE","remotePatches","metadata","context","failedVersions","platformPatches","filter","p","reason","toVersion","log","id","maxV","length","Math","max","map","UPDATE_AVAILABLE","network","wifiOnly","getNetworkType","updateMode","BACKGROUND_DOWNLOAD","ON_APP_START","ON_APP_FOREGROUND","bootstrap","then","readDir","dirs","dir","startsWith","removePath","mode","MANUAL","finally","isMandatoryRef","subscription","addEventListener","nextAppState","match","remove","markAsHealthy","MARK_HEALTHY","resetToFactory","APPLYING","RESET_FACTORY","exists","moveFile","value","checkUpdate","isBlocking","healthyMarkedRef","Provider","style","styles","loadingContainer","loadingCard","size","color","loadingTitle","loadingText","progressText","toFixed","useOta","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":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** Entry `requires` values this client understands */
|
|
4
|
+
export const SUPPORTED_FEATURES = ['gzip', 'bz2'];
|
|
5
|
+
/** FNV-1a: stable 0-99 bucket for an install and version (a different slice of installs per version) */
|
|
6
|
+
export const rolloutBucket = (installId, version) => {
|
|
7
|
+
let h = 0x811c9dc5;
|
|
8
|
+
for (const c of `${installId}:${version}`) {
|
|
9
|
+
h ^= c.charCodeAt(0);
|
|
10
|
+
h = Math.imul(h, 0x01000193) >>> 0;
|
|
11
|
+
}
|
|
12
|
+
return h % 100;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/** Why this client must not install the entry, or null when it may */
|
|
16
|
+
export const ineligibleReason = (e, ctx) => {
|
|
17
|
+
if (e.platform && e.platform.toLowerCase() !== ctx.platform) return 'other platform';
|
|
18
|
+
if (ctx.failedVersions.includes(e.toVersion)) return 'crashed on boot here before';
|
|
19
|
+
if (e.disabled) return 'disabled';
|
|
20
|
+
const missing = (e.requires ?? []).filter(f => !SUPPORTED_FEATURES.includes(f));
|
|
21
|
+
if (missing.length) return `needs a newer client (${missing.join(', ')})`;
|
|
22
|
+
if (e.runtimeFingerprint && e.runtimeFingerprint !== ctx.runtimeFingerprint) {
|
|
23
|
+
return ctx.runtimeFingerprint ? 'built for different native code (needs a store build)' : 'this binary has no runtime fingerprint (run `react-native-bspatch setup` and rebuild)';
|
|
24
|
+
}
|
|
25
|
+
if (e.hermesBytecodeVersion && ctx.hermesBytecodeVersion && e.hermesBytecodeVersion !== ctx.hermesBytecodeVersion) {
|
|
26
|
+
return `Hermes bytecode ${e.hermesBytecodeVersion}, runtime reads ${ctx.hermesBytecodeVersion}`;
|
|
27
|
+
}
|
|
28
|
+
if (e.allowInstallIds?.length && !e.allowInstallIds.includes(ctx.installId)) return 'not in the QA list';
|
|
29
|
+
if (e.rolloutPercent !== undefined && rolloutBucket(ctx.installId, e.toVersion) >= e.rolloutPercent) {
|
|
30
|
+
return `outside the ${e.rolloutPercent}% rollout`;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=eligibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SUPPORTED_FEATURES","rolloutBucket","installId","version","h","c","charCodeAt","Math","imul","ineligibleReason","e","ctx","platform","toLowerCase","failedVersions","includes","toVersion","disabled","missing","requires","filter","f","length","join","runtimeFingerprint","hermesBytecodeVersion","allowInstallIds","rolloutPercent","undefined"],"sourceRoot":"../../../src","sources":["ota/eligibility.ts"],"mappings":";;AAEA;AACA,OAAO,MAAMA,kBAAkB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;AAcjD;AACA,OAAO,MAAMC,aAAa,GAAGA,CAACC,SAAiB,EAAEC,OAAe,KAAa;EACzE,IAAIC,CAAC,GAAG,UAAU;EAClB,KAAK,MAAMC,CAAC,IAAI,GAAGH,SAAS,IAAIC,OAAO,EAAE,EAAE;IACvCC,CAAC,IAAIC,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC;IACpBF,CAAC,GAAGG,IAAI,CAACC,IAAI,CAACJ,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;EACtC;EACA,OAAOA,CAAC,GAAG,GAAG;AAClB,CAAC;;AAED;AACA,OAAO,MAAMK,gBAAgB,GAAGA,CAACC,CAAW,EAAEC,GAAuB,KAAoB;EACrF,IAAID,CAAC,CAACE,QAAQ,IAAIF,CAAC,CAACE,QAAQ,CAACC,WAAW,CAAC,CAAC,KAAKF,GAAG,CAACC,QAAQ,EAAE,OAAO,gBAAgB;EACpF,IAAID,GAAG,CAACG,cAAc,CAACC,QAAQ,CAACL,CAAC,CAACM,SAAS,CAAC,EAAE,OAAO,6BAA6B;EAClF,IAAIN,CAAC,CAACO,QAAQ,EAAE,OAAO,UAAU;EACjC,MAAMC,OAAO,GAAG,CAACR,CAAC,CAACS,QAAQ,IAAI,EAAE,EAAEC,MAAM,CAACC,CAAC,IAAI,CAACrB,kBAAkB,CAACe,QAAQ,CAACM,CAAC,CAAC,CAAC;EAC/E,IAAIH,OAAO,CAACI,MAAM,EAAE,OAAO,yBAAyBJ,OAAO,CAACK,IAAI,CAAC,IAAI,CAAC,GAAG;EACzE,IAAIb,CAAC,CAACc,kBAAkB,IAAId,CAAC,CAACc,kBAAkB,KAAKb,GAAG,CAACa,kBAAkB,EAAE;IACzE,OAAOb,GAAG,CAACa,kBAAkB,GACvB,uDAAuD,GACvD,uFAAuF;EACjG;EACA,IAAId,CAAC,CAACe,qBAAqB,IAAId,GAAG,CAACc,qBAAqB,IAAIf,CAAC,CAACe,qBAAqB,KAAKd,GAAG,CAACc,qBAAqB,EAAE;IAC/G,OAAO,mBAAmBf,CAAC,CAACe,qBAAqB,mBAAmBd,GAAG,CAACc,qBAAqB,EAAE;EACnG;EACA,IAAIf,CAAC,CAACgB,eAAe,EAAEJ,MAAM,IAAI,CAACZ,CAAC,CAACgB,eAAe,CAACX,QAAQ,CAACJ,GAAG,CAACT,SAAS,CAAC,EAAE,OAAO,oBAAoB;EACxG,IAAIQ,CAAC,CAACiB,cAAc,KAAKC,SAAS,IAAI3B,aAAa,CAACU,GAAG,CAACT,SAAS,EAAEQ,CAAC,CAACM,SAAS,CAAC,IAAIN,CAAC,CAACiB,cAAc,EAAE;IACjG,OAAO,eAAejB,CAAC,CAACiB,cAAc,WAAW;EACrD;EACA,OAAO,IAAI;AACf,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* What `entrySignature` signs: the fields that decide which bundle a client installs.
|
|
5
|
+
* Must stay byte-for-byte equal to entryPayload in tools/update_registry.js.
|
|
6
|
+
*/
|
|
7
|
+
export const entryPayload = p => ['bspatch-entry-v2', p.appVersion, p.flavor ?? '', p.platform ?? '', p.fromVersion, p.toVersion, p.bundleHash ?? '', p.assetManifestHash ?? '', p.minAppVersion ?? '', p.runtimeFingerprint ?? '', p.hermesBytecodeVersion ?? ''].join('\n');
|
|
8
|
+
|
|
9
|
+
/** Public keys from config or the embedded list: PEM blocks, or base64 SPKI separated by commas/whitespace */
|
|
10
|
+
export const parsePublicKeys = keys => {
|
|
11
|
+
if (!keys) return [];
|
|
12
|
+
if (keys.includes('-----BEGIN')) {
|
|
13
|
+
return (keys.match(/-----BEGIN PUBLIC KEY-----[\s\S]*?-----END PUBLIC KEY-----/g) ?? []).map(block => block.replace(/-----[A-Z ]+-----|\s+/g, ''));
|
|
14
|
+
}
|
|
15
|
+
return keys.split(/[\s,]+/).filter(Boolean);
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=entrySignature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["entryPayload","p","appVersion","flavor","platform","fromVersion","toVersion","bundleHash","assetManifestHash","minAppVersion","runtimeFingerprint","hermesBytecodeVersion","join","parsePublicKeys","keys","includes","match","map","block","replace","split","filter","Boolean"],"sourceRoot":"../../../src","sources":["ota/entrySignature.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA,OAAO,MAAMA,YAAY,GAAIC,CAAW,IACpC,CACI,kBAAkB,EAClBA,CAAC,CAACC,UAAU,EACZD,CAAC,CAACE,MAAM,IAAI,EAAE,EACdF,CAAC,CAACG,QAAQ,IAAI,EAAE,EAChBH,CAAC,CAACI,WAAW,EACbJ,CAAC,CAACK,SAAS,EACXL,CAAC,CAACM,UAAU,IAAI,EAAE,EAClBN,CAAC,CAACO,iBAAiB,IAAI,EAAE,EACzBP,CAAC,CAACQ,aAAa,IAAI,EAAE,EACrBR,CAAC,CAACS,kBAAkB,IAAI,EAAE,EAC1BT,CAAC,CAACU,qBAAqB,IAAI,EAAE,CAChC,CAACC,IAAI,CAAC,IAAI,CAAC;;AAEhB;AACA,OAAO,MAAMC,eAAe,GAAIC,IAAwB,IAAe;EACnE,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;EACpB,IAAIA,IAAI,CAACC,QAAQ,CAAC,YAAY,CAAC,EAAE;IAC7B,OAAO,CAACD,IAAI,CAACE,KAAK,CAAC,6DAA6D,CAAC,IAAI,EAAE,EAAEC,GAAG,CAACC,KAAK,IAC9FA,KAAK,CAACC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAC9C,CAAC;EACL;EACA,OAAOL,IAAI,CAACM,KAAK,CAAC,QAAQ,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC;AAC/C,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import NativeBsPatch from '../NativeBsPatch';
|
|
4
|
+
import { DOCUMENT_DIR } from './otaMetadata';
|
|
5
|
+
|
|
6
|
+
// Outside ota/: resetToFactory and native rollbacks keep it
|
|
7
|
+
const INSTALL_ID_PATH = `${DOCUMENT_DIR}/bspatch-install-id`;
|
|
8
|
+
let installId;
|
|
9
|
+
|
|
10
|
+
/** Random ID made on first use and kept for the life of the install (rollout bucket, QA lists, telemetry) */
|
|
11
|
+
export const getInstallId = () => installId ??= (async () => {
|
|
12
|
+
try {
|
|
13
|
+
const saved = (await NativeBsPatch.readFile(INSTALL_ID_PATH)).trim();
|
|
14
|
+
if (/^[0-9a-f]{32}$/.test(saved)) return saved;
|
|
15
|
+
} catch {}
|
|
16
|
+
const id = Array.from({
|
|
17
|
+
length: 32
|
|
18
|
+
}, () => Math.floor(Math.random() * 16).toString(16)).join('');
|
|
19
|
+
await NativeBsPatch.writeFile(INSTALL_ID_PATH, id).catch(() => {});
|
|
20
|
+
return id;
|
|
21
|
+
})();
|
|
22
|
+
//# sourceMappingURL=installId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NativeBsPatch","DOCUMENT_DIR","INSTALL_ID_PATH","installId","getInstallId","saved","readFile","trim","test","id","Array","from","length","Math","floor","random","toString","join","writeFile","catch"],"sourceRoot":"../../../src","sources":["ota/installId.ts"],"mappings":";;AAAA,OAAOA,aAAa,MAAM,kBAAkB;AAC5C,SAASC,YAAY,QAAQ,eAAe;;AAE5C;AACA,MAAMC,eAAe,GAAG,GAAGD,YAAY,qBAAqB;AAC5D,IAAIE,SAAsC;;AAE1C;AACA,OAAO,MAAMC,YAAY,GAAGA,CAAA,KACvBD,SAAS,KAAK,CAAC,YAAY;EACxB,IAAI;IACA,MAAME,KAAK,GAAG,CAAC,MAAML,aAAa,CAACM,QAAQ,CAACJ,eAAe,CAAC,EAAEK,IAAI,CAAC,CAAC;IACpE,IAAI,gBAAgB,CAACC,IAAI,CAACH,KAAK,CAAC,EAAE,OAAOA,KAAK;EAClD,CAAC,CAAC,MAAM,CAAC;EACT,MAAMI,EAAE,GAAGC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAE;EAAG,CAAC,EAAE,MAAMC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;EACjG,MAAMjB,aAAa,CAACkB,SAAS,CAAChB,eAAe,EAAEO,EAAE,CAAC,CAACU,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EAClE,OAAOV,EAAE;AACb,CAAC,EAAE,CAAE","ignoreList":[]}
|