react-native-bspatch 4.1.0 → 5.0.1
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 +84 -27
- 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 +165 -35
- package/lib/commonjs/ota/OtaProvider.js.map +1 -1
- package/lib/commonjs/ota/eligibility.js +47 -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 +165 -35
- package/lib/module/ota/OtaProvider.js.map +1 -1
- package/lib/module/ota/eligibility.js +41 -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 +25 -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 +58 -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 +167 -42
- package/src/ota/eligibility.ts +57 -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 +55 -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,12 +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
51
|
const bootstrapDone = useRef(false);
|
|
32
52
|
/** Version the native resolver loaded for this JS session */
|
|
33
53
|
const runningVersionRef = useRef(config.baseAppVersion);
|
|
34
54
|
const progressRef = useRef(0);
|
|
55
|
+
const lastCheckRef = useRef(0);
|
|
56
|
+
const appVersionRef = useRef(config.appVersion ?? '');
|
|
57
|
+
const installIdRef = useRef('');
|
|
35
58
|
const isDebugUpdateEnabled = !__DEV__ || config.allowDebugUpdates === true;
|
|
36
59
|
|
|
37
60
|
// No fallbacks: a missing env value disables OTA instead of silently pointing elsewhere.
|
|
@@ -50,36 +73,68 @@ export function OtaProvider({
|
|
|
50
73
|
progressRef.current = nextProgress;
|
|
51
74
|
setProgress(nextProgress);
|
|
52
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]);
|
|
53
100
|
const getEffectiveConfig = useCallback(async () => {
|
|
54
|
-
|
|
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;
|
|
55
109
|
try {
|
|
56
110
|
const nativeVer = await NativeBsPatch.getAppVersion();
|
|
57
111
|
if (!nativeVer) {
|
|
58
112
|
throw new Error('Native appVersion is empty');
|
|
59
113
|
}
|
|
114
|
+
appVersionRef.current = nativeVer;
|
|
60
115
|
return {
|
|
61
|
-
...
|
|
116
|
+
...base,
|
|
62
117
|
appVersion: nativeVer
|
|
63
118
|
};
|
|
64
119
|
} catch (e) {
|
|
65
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.`);
|
|
66
121
|
}
|
|
67
|
-
}, [config]);
|
|
122
|
+
}, [config, onEvent]);
|
|
68
123
|
|
|
69
|
-
/**
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
124
|
+
/** What decides which registry entries this install may take */
|
|
125
|
+
const eligibilityContext = useCallback(async () => {
|
|
126
|
+
const metadata = await loadMetadata(config.baseAppVersion);
|
|
127
|
+
return {
|
|
128
|
+
platform: Platform.OS,
|
|
129
|
+
failedVersions: metadata.failedVersions ?? [],
|
|
130
|
+
runtimeFingerprint: nativeString(() => NativeBsPatch.getRuntimeFingerprint()),
|
|
131
|
+
hermesBytecodeVersion: hermesBytecodeVersion(),
|
|
132
|
+
installId: await getInstallId()
|
|
133
|
+
};
|
|
134
|
+
}, [config.baseAppVersion]);
|
|
135
|
+
|
|
136
|
+
/** Installs one registry entry in the foreground (status + progress), then reloads */
|
|
137
|
+
const installEntry = useCallback(async directPatch => {
|
|
83
138
|
try {
|
|
84
139
|
const effectiveConfig = await getEffectiveConfig();
|
|
85
140
|
setStatus(OtaStatus.DOWNLOADING);
|
|
@@ -101,6 +156,45 @@ export function OtaProvider({
|
|
|
101
156
|
}
|
|
102
157
|
}, [getEffectiveConfig, setProgressIfChanged]);
|
|
103
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Core apply update logic — separated so it can be mapped to button clicks
|
|
161
|
+
* OR called automatically by checkUpdates()
|
|
162
|
+
*/
|
|
163
|
+
const executeApplyUpdate = useCallback(async (patchList, currentVer, targetVer) => {
|
|
164
|
+
const directPatch = selectUpdate(patchList, currentVer, targetVer);
|
|
165
|
+
if (!directPatch) {
|
|
166
|
+
if (__DEV__) {
|
|
167
|
+
console.warn('[OtaProvider] No update entry found for', currentVer, '->', targetVer);
|
|
168
|
+
}
|
|
169
|
+
setStatus(OtaStatus.ERROR);
|
|
170
|
+
setMessage('No upgrade path found.');
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
await installEntry(directPatch);
|
|
174
|
+
}, [installEntry]);
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Installs exactly this registry entry (a version list in a debug/QA screen): the patch
|
|
178
|
+
* when it starts from the running version, else its full bundle. Ignores the kill switch,
|
|
179
|
+
* rollout and QA list; still refuses what would break the app (native code, Hermes, …).
|
|
180
|
+
*/
|
|
181
|
+
const applyEntry = useCallback(async entry => {
|
|
182
|
+
if (!isDebugUpdateEnabled) {
|
|
183
|
+
setStatus(OtaStatus.UP_TO_DATE);
|
|
184
|
+
setMessage('OTA updates are disabled while running a debug build.');
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const reason = ineligibleReason(entry, await eligibilityContext(), {
|
|
188
|
+
ignoreControls: true
|
|
189
|
+
});
|
|
190
|
+
if (reason) {
|
|
191
|
+
setStatus(OtaStatus.ERROR);
|
|
192
|
+
setMessage(`Can't install V${entry.toVersion}: ${reason}`);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
await installEntry(entry);
|
|
196
|
+
}, [eligibilityContext, installEntry, isDebugUpdateEnabled]);
|
|
197
|
+
|
|
104
198
|
/**
|
|
105
199
|
* Exposed method for manual trigger
|
|
106
200
|
*/
|
|
@@ -125,6 +219,12 @@ export function OtaProvider({
|
|
|
125
219
|
setStatus(OtaStatus.UP_TO_DATE);
|
|
126
220
|
setMessage(`Update V${targetV} ready for next launch`);
|
|
127
221
|
if (m) setMetrics(m);
|
|
222
|
+
if (directPatch.mandatory) {
|
|
223
|
+
setIsMandatory(true);
|
|
224
|
+
// Only in the foreground: a reload in the background is rolled back (see the
|
|
225
|
+
// AppState effect); the effect reloads once the app comes back
|
|
226
|
+
if (AppState.currentState === 'active') NativeBsPatch.reloadBundle();
|
|
227
|
+
}
|
|
128
228
|
}
|
|
129
229
|
}, () => {},
|
|
130
230
|
// silent: background doesn't spam progress
|
|
@@ -142,8 +242,9 @@ export function OtaProvider({
|
|
|
142
242
|
/**
|
|
143
243
|
* Check for updates from the manifest.
|
|
144
244
|
* Uses a ref to guard against concurrent calls (avoids stale closure).
|
|
245
|
+
* Automatic calls are throttled by minCheckIntervalMs; { force: true } always checks.
|
|
145
246
|
*/
|
|
146
|
-
const checkUpdates = useCallback(async
|
|
247
|
+
const checkUpdates = useCallback(async options => {
|
|
147
248
|
if (isCheckingRef.current || configError) return;
|
|
148
249
|
if (!isDebugUpdateEnabled) {
|
|
149
250
|
setPendingCount(0);
|
|
@@ -152,6 +253,9 @@ export function OtaProvider({
|
|
|
152
253
|
setMessage('OTA updates are disabled while running a debug build.');
|
|
153
254
|
return;
|
|
154
255
|
}
|
|
256
|
+
const minInterval = config.minCheckIntervalMs ?? DEFAULT_MIN_CHECK_INTERVAL_MS;
|
|
257
|
+
if (!options?.force && Date.now() - lastCheckRef.current < minInterval) return;
|
|
258
|
+
lastCheckRef.current = Date.now();
|
|
155
259
|
isCheckingRef.current = true;
|
|
156
260
|
setIsChecking(true);
|
|
157
261
|
setStatus(OtaStatus.CHECKING);
|
|
@@ -163,10 +267,16 @@ export function OtaProvider({
|
|
|
163
267
|
const metadata = await loadMetadata(config.baseAppVersion);
|
|
164
268
|
const localV = metadata.currentVersion;
|
|
165
269
|
|
|
166
|
-
//
|
|
167
|
-
//
|
|
168
|
-
const
|
|
169
|
-
const platformPatches = remotePatches.filter(p =>
|
|
270
|
+
// Storage providers return every platform: keep what this install may take (platform,
|
|
271
|
+
// native fingerprint, Hermes, rollout/QA lists, kill switch, versions that crashed here)
|
|
272
|
+
const context = await eligibilityContext();
|
|
273
|
+
const platformPatches = remotePatches.filter(p => {
|
|
274
|
+
const reason = ineligibleReason(p, context);
|
|
275
|
+
if (reason && __DEV__ && p.toVersion > localV) {
|
|
276
|
+
console.log(`[OtaProvider] Skipping V${p.toVersion} (${p.id}): ${reason}`);
|
|
277
|
+
}
|
|
278
|
+
return !reason;
|
|
279
|
+
});
|
|
170
280
|
const maxV = platformPatches.length > 0 ? Math.max(...platformPatches.map(p => p.toVersion)) : localV;
|
|
171
281
|
setPatches(platformPatches);
|
|
172
282
|
setCurrentVersion(localV);
|
|
@@ -177,7 +287,10 @@ export function OtaProvider({
|
|
|
177
287
|
setStatus(OtaStatus.UPDATE_AVAILABLE);
|
|
178
288
|
|
|
179
289
|
// Trigger behaviors based on mode
|
|
180
|
-
|
|
290
|
+
const network = config.network?.wifiOnly ? await NativeBsPatch.getNetworkType().catch(() => 'unknown') : 'wifi';
|
|
291
|
+
if (network !== 'wifi' && network !== 'ethernet') {
|
|
292
|
+
setMessage(`Update available: V${localV} → V${maxV} (waiting for Wi-Fi)`);
|
|
293
|
+
} else if (config.updateMode === OtaUpdateMode.BACKGROUND_DOWNLOAD) {
|
|
181
294
|
downloadBackgroundUpdate(platformPatches, localV, maxV);
|
|
182
295
|
} else if (config.updateMode === OtaUpdateMode.ON_APP_START || config.updateMode === OtaUpdateMode.ON_APP_FOREGROUND) {
|
|
183
296
|
// Auto-apply immediately!
|
|
@@ -195,7 +308,7 @@ export function OtaProvider({
|
|
|
195
308
|
isCheckingRef.current = false;
|
|
196
309
|
setIsChecking(false);
|
|
197
310
|
}
|
|
198
|
-
}, [config, configError, executeApplyUpdate, isDebugUpdateEnabled, downloadBackgroundUpdate, getEffectiveConfig]);
|
|
311
|
+
}, [config, configError, eligibilityContext, executeApplyUpdate, isDebugUpdateEnabled, downloadBackgroundUpdate, getEffectiveConfig]);
|
|
199
312
|
|
|
200
313
|
/**
|
|
201
314
|
* Bootstrap: runs once on mount.
|
|
@@ -210,6 +323,11 @@ export function OtaProvider({
|
|
|
210
323
|
*/
|
|
211
324
|
useEffect(() => {
|
|
212
325
|
const bootstrap = async () => {
|
|
326
|
+
getInstallId().then(id => {
|
|
327
|
+
installIdRef.current = id;
|
|
328
|
+
setInstallId(id);
|
|
329
|
+
}).catch(() => {});
|
|
330
|
+
|
|
213
331
|
// Clean up any pending trash directories from previous resets (non-blocking)
|
|
214
332
|
NativeBsPatch.readDir(DOCUMENT_DIR).then(dirs => {
|
|
215
333
|
for (const dir of dirs) {
|
|
@@ -242,23 +360,32 @@ export function OtaProvider({
|
|
|
242
360
|
setStatus(OtaStatus.UP_TO_DATE);
|
|
243
361
|
}
|
|
244
362
|
};
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
363
|
+
|
|
364
|
+
// OTA must never take the app down: if bootstrap fails, render the app with OTA idle
|
|
365
|
+
bootstrap().catch(error => {
|
|
366
|
+
console.warn('[OtaProvider] Bootstrap failed, OTA disabled for this session:', error);
|
|
367
|
+
setMessage(`OTA disabled: ${error.message}`);
|
|
368
|
+
setStatus(OtaStatus.ERROR);
|
|
369
|
+
}).finally(() => setIsInitialized(true));
|
|
250
370
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
251
371
|
}, []);
|
|
252
372
|
|
|
253
373
|
/**
|
|
254
|
-
* AppState listener for ON_APP_FOREGROUND mode
|
|
374
|
+
* AppState listener for ON_APP_FOREGROUND mode, and for a mandatory update that got
|
|
375
|
+
* ready while in the background.
|
|
255
376
|
* A downloaded update is not reloaded on background: iOS suspends JS before the
|
|
256
377
|
* first render, so the native resolver counts the launch as failed and rolls it back.
|
|
257
378
|
* metadata already points at the new version, so the next cold start applies it
|
|
258
379
|
*/
|
|
380
|
+
const isMandatoryRef = useRef(false);
|
|
381
|
+
isMandatoryRef.current = isMandatory && isUpdateReady;
|
|
259
382
|
useEffect(() => {
|
|
260
383
|
const subscription = AppState.addEventListener('change', nextAppState => {
|
|
261
384
|
if (appState.current.match(/inactive|background/) && nextAppState === 'active' && bootstrapDone.current) {
|
|
385
|
+
if (isMandatoryRef.current) {
|
|
386
|
+
NativeBsPatch.reloadBundle();
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
262
389
|
const mode = config.updateMode ?? OtaUpdateMode.MANUAL;
|
|
263
390
|
if (mode === OtaUpdateMode.ON_APP_FOREGROUND) {
|
|
264
391
|
checkUpdates();
|
|
@@ -271,13 +398,13 @@ export function OtaProvider({
|
|
|
271
398
|
};
|
|
272
399
|
}, [config.updateMode, checkUpdates]);
|
|
273
400
|
const markAsHealthy = useCallback(async () => {
|
|
274
|
-
const log = createOtaLogger(
|
|
401
|
+
const log = createOtaLogger(onEvent);
|
|
275
402
|
log.emit(OtaEvent.MARK_HEALTHY);
|
|
276
403
|
const appVersion = await NativeBsPatch.getAppVersion().catch(() => config.appVersion);
|
|
277
404
|
await markHealthy(config.baseAppVersion, runningVersionRef.current, appVersion);
|
|
278
|
-
}, [config]);
|
|
405
|
+
}, [config, onEvent]);
|
|
279
406
|
const resetToFactory = useCallback(async () => {
|
|
280
|
-
const log = createOtaLogger(
|
|
407
|
+
const log = createOtaLogger(onEvent);
|
|
281
408
|
try {
|
|
282
409
|
setStatus(OtaStatus.APPLYING);
|
|
283
410
|
setMessage('Executing system wipe...');
|
|
@@ -293,7 +420,7 @@ export function OtaProvider({
|
|
|
293
420
|
setStatus(OtaStatus.ERROR);
|
|
294
421
|
setMessage(`Reset failed: ${error.message}`);
|
|
295
422
|
}
|
|
296
|
-
}, [
|
|
423
|
+
}, [onEvent]);
|
|
297
424
|
|
|
298
425
|
// Memoized: consumers re-render only when something they can see changes
|
|
299
426
|
const value = useMemo(() => ({
|
|
@@ -306,13 +433,16 @@ export function OtaProvider({
|
|
|
306
433
|
isChecking,
|
|
307
434
|
metrics,
|
|
308
435
|
isUpdateReady,
|
|
436
|
+
isMandatory,
|
|
437
|
+
installId,
|
|
309
438
|
applyUpdate,
|
|
310
439
|
applyVersion,
|
|
440
|
+
applyEntry,
|
|
311
441
|
resetToFactory,
|
|
312
442
|
markAsHealthy,
|
|
313
443
|
checkUpdate: checkUpdates,
|
|
314
444
|
reloadBundle: () => NativeBsPatch.reloadBundle()
|
|
315
|
-
}), [status, message, progress, currentVersion, latestVersion, pendingCount, isChecking, metrics, isUpdateReady, applyUpdate, applyVersion, resetToFactory, markAsHealthy, checkUpdates]);
|
|
445
|
+
}), [status, message, progress, currentVersion, latestVersion, pendingCount, isChecking, metrics, isUpdateReady, isMandatory, installId, applyUpdate, applyVersion, applyEntry, resetToFactory, markAsHealthy, checkUpdates]);
|
|
316
446
|
|
|
317
447
|
// Logic to determine if we should block the UI
|
|
318
448
|
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","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","applyVersion","targetVersion","UP_TO_DATE","applyUpdate","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","match","remove","markAsHealthy","log","MARK_HEALTHY","resetToFactory","APPLYING","RESET_FACTORY","exists","moveFile","Date","now","reloadBundle","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","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","eligibilityContext","metadata","failedVersions","installEntry","directPatch","effectiveConfig","DOWNLOADING","s","msg","m","percent","error","console","ERROR","executeApplyUpdate","patchList","currentVer","targetVer","warn","applyEntry","UP_TO_DATE","reason","ignoreControls","toVersion","applyVersion","targetVersion","applyUpdate","downloadBackgroundUpdate","localV","targetV","SUCCESS","mandatory","reloadBundle","autoReload","checkUpdates","options","minInterval","minCheckIntervalMs","force","Date","now","CHECKING","emit","CHECK_UPDATE","remotePatches","context","platformPatches","filter","p","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":";;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,gBAAgB,QAAiC,eAAe;AACzE,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,qBAAqB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,iBAAiB,QAAQ,WAAW;AACpG,SAASC,eAAe,EAAEC,QAAQ,QAA0B,aAAa;AACzE,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,gBAAGhC,aAAa,CAAuBiC,SAAS,CAAC;AAEjE,MAAMC,6BAA6B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;;AAEpD;AACA,MAAMC,YAAY,GAAIC,GAAiB,IAAa;EAClD,IAAI;IACF,OAAOA,GAAG,CAAC,CAAC,IAAI,EAAE;EACpB,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF,CAAC;;AAED;AACA,MAAMC,qBAAqB,GAAGA,CAAA,KAA0B;EACtD,MAAMC,CAAC,GAAIC,UAAU,CAASC,cAAc,EAAEC,oBAAoB,GAAG,CAAC,GAAG,kBAAkB,CAAC;EAC5F,OAAOH,CAAC,GAAGI,MAAM,CAACJ,CAAC,CAAC,GAAGL,SAAS;AAClC,CAAC;AAED,OAAO,SAASU,WAAWA,CAAC;EAC1BC,QAAQ;EACRC,MAAM;EACNC,WAAW;EACXC,cAAc,GAAG;AAMnB,CAAC,EAAE;EACD,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG3C,QAAQ,CAAYoB,SAAS,CAACwB,IAAI,CAAC;EAC/D,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG9C,QAAQ,CAAS,iBAAiB,CAAC;EACjE,MAAM,CAAC+C,QAAQ,EAAEC,WAAW,CAAC,GAAGhD,QAAQ,CAAS,CAAC,CAAC;EAEnD,MAAM,CAACiD,cAAc,EAAEC,iBAAiB,CAAC,GAAGlD,QAAQ,CAClDuC,MAAM,CAACY,cACT,CAAC;EACD,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGrD,QAAQ,CAChDuC,MAAM,CAACY,cACT,CAAC;EACD,MAAM,CAACG,YAAY,EAAEC,eAAe,CAAC,GAAGvD,QAAQ,CAAS,CAAC,CAAC;EAC3D,MAAM,CAACwD,UAAU,EAAEC,aAAa,CAAC,GAAGzD,QAAQ,CAAU,KAAK,CAAC;EAC5D,MAAM,CAAC0D,OAAO,EAAEC,UAAU,CAAC,GAAG3D,QAAQ,CAAoB,IAAI,CAAC;EAC/D,MAAM,CAAC4D,OAAO,EAAEC,UAAU,CAAC,GAAG7D,QAAQ,CAAa,EAAE,CAAC;EACtD,MAAM,CAAC8D,aAAa,EAAEC,gBAAgB,CAAC,GAAG/D,QAAQ,CAAU,KAAK,CAAC;EAClE,MAAM,CAACgE,aAAa,EAAEC,gBAAgB,CAAC,GAAGjE,QAAQ,CAAU,KAAK,CAAC;EAClE,MAAM,CAACkE,WAAW,EAAEC,cAAc,CAAC,GAAGnE,QAAQ,CAAU,KAAK,CAAC;EAC9D,MAAM,CAACoE,SAAS,EAAEC,YAAY,CAAC,GAAGrE,QAAQ,CAAS,EAAE,CAAC;EAEtD,MAAMsE,QAAQ,GAAGvE,MAAM,CAACG,QAAQ,CAACqE,YAAY,CAAC;EAC9C,MAAMC,aAAa,GAAGzE,MAAM,CAAC,KAAK,CAAC;EACnC,MAAM0E,aAAa,GAAG1E,MAAM,CAAC,KAAK,CAAC;EACnC;EACA,MAAM2E,iBAAiB,GAAG3E,MAAM,CAACwC,MAAM,CAACY,cAAc,CAAC;EACvD,MAAMwB,WAAW,GAAG5E,MAAM,CAAC,CAAC,CAAC;EAC7B,MAAM6E,YAAY,GAAG7E,MAAM,CAAC,CAAC,CAAC;EAC9B,MAAM8E,aAAa,GAAG9E,MAAM,CAACwC,MAAM,CAACuC,UAAU,IAAI,EAAE,CAAC;EACrD,MAAMC,YAAY,GAAGhF,MAAM,CAAC,EAAE,CAAC;EAC/B,MAAMiF,oBAAoB,GAAG,CAACC,OAAO,IAAI1C,MAAM,CAAC2C,iBAAiB,KAAK,IAAI;;EAE1E;EACA;EACA,MAAMC,WAAW,GAAGrF,OAAO,CAAC,MAAM;IAChC,MAAMsF,CAAC,GAAGvE,iBAAiB,CAAC0B,MAAM,CAAC;IACnC,OAAO6C,CAAC,IAAI,wCAAwCA,CAAC,EAAE;EACzD,CAAC,EAAE,CAAC7C,MAAM,CAAC,CAAC;EACZ,IAAI0C,OAAO,IAAIE,WAAW,EAAE;IAC1B,MAAM,IAAIE,KAAK,CAACF,WAAW,CAAC;EAC9B;EAEA,MAAMG,oBAAoB,GAAG3F,WAAW,CAAE4F,YAAoB,IAAK;IACjE,IAAIZ,WAAW,CAACa,OAAO,KAAKD,YAAY,EAAE;MACxC;IACF;IACAZ,WAAW,CAACa,OAAO,GAAGD,YAAY;IAClCvC,WAAW,CAACuC,YAAY,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAME,OAAO,GAAG9F,WAAW,CAAE+F,KAAkB,IAAK;IAClDnD,MAAM,CAACkD,OAAO,GAAGC,KAAK,CAAC;IACvB,MAAMC,SAAS,GAAGpD,MAAM,CAACoD,SAAS;IAClC,IAAI,CAACA,SAAS,EAAE;IAChBC,KAAK,CAACD,SAAS,CAACE,GAAG,EAAE;MACnBC,MAAM,EAAE,MAAM;MACdC,OAAO,EAAE;QAAE,cAAc,EAAE,kBAAkB;QAAE,GAAGJ,SAAS,CAACI;MAAQ,CAAC;MACrEC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;QACnB,GAAGR,KAAK;QACRtB,SAAS,EAAEW,YAAY,CAACS,OAAO;QAC/BW,QAAQ,EAAEhG,QAAQ,CAACiG,EAAE;QACrBtB,UAAU,EAAED,aAAa,CAACW,OAAO;QACjCa,QAAQ,EAAExE,YAAY,CAAC,MAAMtB,aAAa,CAAC+F,WAAW,CAAC,CAAC,CAAC;QACzDC,kBAAkB,EAAE1E,YAAY,CAAC,MAAMtB,aAAa,CAACiG,qBAAqB,CAAC,CAAC,CAAC;QAC7EC,MAAM,EAAElE,MAAM,CAACmE,YAAY,EAAEC,OAAO;QACpCC,UAAU,EAAElC,iBAAiB,CAACc;MAChC,CAAC;IACH,CAAC,CAAC,CAACqB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC,EAAE,CAACtE,MAAM,CAAC,CAAC;EAEZ,MAAMuE,kBAAkB,GAAGnH,WAAW,CAAC,YAAgC;IACrE;IACA,MAAMoH,SAAS,GAAGxE,MAAM,CAACwE,SAAS,IAAIlF,YAAY,CAAC,MAAMtB,aAAa,CAACyG,qBAAqB,CAAC,CAAC,CAAC,IAAIrF,SAAS;IAC5G,MAAMsF,IAAI,GAAG;MAAE,GAAG1E,MAAM;MAAEwE,SAAS;MAAEtB;IAAQ,CAAC;IAC9C,IAAIlD,MAAM,CAACuC,UAAU,EAAE,OAAOmC,IAAI;IAClC,IAAI;MACF,MAAMC,SAAS,GAAG,MAAM3G,aAAa,CAAC4G,aAAa,CAAC,CAAC;MACrD,IAAI,CAACD,SAAS,EAAE;QACd,MAAM,IAAI7B,KAAK,CAAC,4BAA4B,CAAC;MAC/C;MACAR,aAAa,CAACW,OAAO,GAAG0B,SAAS;MACjC,OAAO;QAAE,GAAGD,IAAI;QAAEnC,UAAU,EAAEoC;MAAU,CAAC;IAC3C,CAAC,CAAC,OAAO9B,CAAC,EAAE;MACV,MAAM,IAAIC,KAAK,CACb,+DAAgED,CAAC,CAAWvC,OAAO,IAAI,GACvF,+GACF,CAAC;IACH;EACF,CAAC,EAAE,CAACN,MAAM,EAAEkD,OAAO,CAAC,CAAC;;EAErB;EACA,MAAM2B,kBAAkB,GAAGzH,WAAW,CAAC,YAAyC;IAC9E,MAAM0H,QAAQ,GAAG,MAAMpG,YAAY,CAACsB,MAAM,CAACY,cAAc,CAAC;IAC1D,OAAO;MACLgD,QAAQ,EAAEhG,QAAQ,CAACiG,EAAE;MACrBkB,cAAc,EAAED,QAAQ,CAACC,cAAc,IAAI,EAAE;MAC7Cf,kBAAkB,EAAE1E,YAAY,CAAC,MAAMtB,aAAa,CAACiG,qBAAqB,CAAC,CAAC,CAAC;MAC7EzE,qBAAqB,EAAEA,qBAAqB,CAAC,CAAC;MAC9CqC,SAAS,EAAE,MAAM3D,YAAY,CAAC;IAChC,CAAC;EACH,CAAC,EAAE,CAAC8B,MAAM,CAACY,cAAc,CAAC,CAAC;;EAE3B;EACA,MAAMoE,YAAY,GAAG5H,WAAW,CAC9B,MAAO6H,WAAqB,IAAK;IAC/B,IAAI;MACF,MAAMC,eAAe,GAAG,MAAMX,kBAAkB,CAAC,CAAC;MAClDnE,SAAS,CAACvB,SAAS,CAACsG,WAAW,CAAC;MAChC/C,WAAW,CAACa,OAAO,GAAG,CAAC;MACvBxC,WAAW,CAAC,CAAC,CAAC;MACd,MAAMtC,qBAAqB,CACzB8G,WAAW,EACXC,eAAe,EACf,CAACE,CAAY,EAAEC,GAAW,EAAEC,CAAc,KAAK;QAC7C/E,UAAU,CAAC8E,GAAG,CAAC;QACfjF,SAAS,CAACgF,CAAC,CAAC;QACZ,IAAIE,CAAC,EAAElE,UAAU,CAACkE,CAAC,CAAC;MACtB,CAAC,EACAC,OAAe,IAAK;QACnBxC,oBAAoB,CAACwC,OAAO,CAAC;MAC/B,CACF,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd,IAAI9C,OAAO,EAAE;QACX+C,OAAO,CAACD,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;MACrD;MACApF,SAAS,CAACvB,SAAS,CAAC6G,KAAK,CAAC;MAC1BnF,UAAU,CAAC,kBAAmBiF,KAAK,CAAWlF,OAAO,EAAE,CAAC;IAC1D;EACF,CAAC,EACD,CAACiE,kBAAkB,EAAExB,oBAAoB,CAC3C,CAAC;;EAED;AACF;AACA;AACA;EACE,MAAM4C,kBAAkB,GAAGvI,WAAW,CACpC,OAAOwI,SAAqB,EAAEC,UAAkB,EAAEC,SAAiB,KAAK;IACtE,MAAMb,WAAW,GAAG5G,YAAY,CAACuH,SAAS,EAAEC,UAAU,EAAEC,SAAS,CAAC;IAClE,IAAI,CAACb,WAAW,EAAE;MAChB,IAAIvC,OAAO,EAAE;QACX+C,OAAO,CAACM,IAAI,CAAC,yCAAyC,EAAEF,UAAU,EAAE,IAAI,EAAEC,SAAS,CAAC;MACtF;MACA1F,SAAS,CAACvB,SAAS,CAAC6G,KAAK,CAAC;MAC1BnF,UAAU,CAAC,wBAAwB,CAAC;MACpC;IACF;IACA,MAAMyE,YAAY,CAACC,WAAW,CAAC;EACjC,CAAC,EACD,CAACD,YAAY,CACf,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE,MAAMgB,UAAU,GAAG5I,WAAW,CAAC,MAAO+F,KAAe,IAAK;IACxD,IAAI,CAACV,oBAAoB,EAAE;MACzBrC,SAAS,CAACvB,SAAS,CAACoH,UAAU,CAAC;MAC/B1F,UAAU,CAAC,uDAAuD,CAAC;MACnE;IACF;IACA,MAAM2F,MAAM,GAAGjI,gBAAgB,CAACkF,KAAK,EAAE,MAAM0B,kBAAkB,CAAC,CAAC,EAAE;MAAEsB,cAAc,EAAE;IAAK,CAAC,CAAC;IAC5F,IAAID,MAAM,EAAE;MACV9F,SAAS,CAACvB,SAAS,CAAC6G,KAAK,CAAC;MAC1BnF,UAAU,CAAC,kBAAkB4C,KAAK,CAACiD,SAAS,KAAKF,MAAM,EAAE,CAAC;MAC1D;IACF;IACA,MAAMlB,YAAY,CAAC7B,KAAK,CAAC;EAC3B,CAAC,EAAE,CAAC0B,kBAAkB,EAAEG,YAAY,EAAEvC,oBAAoB,CAAC,CAAC;;EAE5D;AACF;AACA;EACE,MAAM4D,YAAY,GAAGjJ,WAAW,CAAC,MAAOkJ,aAAqB,IAAK;IAChE,IAAI,CAAC7D,oBAAoB,EAAE;MACzBzB,eAAe,CAAC,CAAC,CAAC;MAClBZ,SAAS,CAACvB,SAAS,CAACoH,UAAU,CAAC;MAC/B1F,UAAU,CAAC,uDAAuD,CAAC;MACnE;IACF;IACA,MAAMoF,kBAAkB,CAACtE,OAAO,EAAEX,cAAc,EAAE4F,aAAa,CAAC;EAClE,CAAC,EAAE,CAAC5F,cAAc,EAAEiF,kBAAkB,EAAElD,oBAAoB,EAAEpB,OAAO,CAAC,CAAC;EAEvE,MAAMkF,WAAW,GAAGnJ,WAAW,CAC7B,MAAMiJ,YAAY,CAACxF,aAAa,CAAC,EACjC,CAACwF,YAAY,EAAExF,aAAa,CAC9B,CAAC;EAED,MAAM2F,wBAAwB,GAAGpJ,WAAW,CAC1C,OACEwI,SAAqB,EACrBa,MAAc,EACdC,OAAe,KACZ;IACH,MAAMzB,WAAW,GAAG5G,YAAY,CAACuH,SAAS,EAAEa,MAAM,EAAEC,OAAO,CAAC;IAC5D,IAAI,CAACzB,WAAW,EAAE;IAElB,IAAI;MACF,MAAMC,eAAe,GAAG,MAAMX,kBAAkB,CAAC,CAAC;MAClD,MAAMpG,qBAAqB,CACzB8G,WAAW,EACXC,eAAe,EACf,CAACE,CAAY,EAAEC,GAAW,EAAEC,CAAc,KAAK;QAC7C,IAAIF,CAAC,KAAKvG,SAAS,CAAC8H,OAAO,EAAE;UAC3BjF,gBAAgB,CAAC,IAAI,CAAC;UACtBtB,SAAS,CAACvB,SAAS,CAACoH,UAAU,CAAC;UAC/B1F,UAAU,CAAC,WAAWmG,OAAO,wBAAwB,CAAC;UACtD,IAAIpB,CAAC,EAAElE,UAAU,CAACkE,CAAC,CAAC;UACpB,IAAIL,WAAW,CAAC2B,SAAS,EAAE;YACzBhF,cAAc,CAAC,IAAI,CAAC;YACpB;YACA;YACA,IAAIjE,QAAQ,CAACqE,YAAY,KAAK,QAAQ,EAAEhE,aAAa,CAAC6I,YAAY,CAAC,CAAC;UACtE;QACF;MACF,CAAC,EACD,MAAM,CAAC,CAAC;MAAE;MACV;QAAEC,UAAU,EAAE;MAAM,CAAC,CAAE;MACzB,CAAC;IACH,CAAC,CAAC,OAAOjE,CAAC,EAAE;MACV,IAAIH,OAAO,EAAE;QACX+C,OAAO,CAACM,IAAI,CAAC,gDAAgD,EAAElD,CAAC,CAAC;MACnE;IACF;EACF,CAAC,EACD,CAAC0B,kBAAkB,CACrB,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE,MAAMwC,YAAY,GAAG3J,WAAW,CAAC,MAAO4J,OAA6B,IAAK;IACxE,IAAI/E,aAAa,CAACgB,OAAO,IAAIL,WAAW,EAAE;IAC1C,IAAI,CAACH,oBAAoB,EAAE;MACzBzB,eAAe,CAAC,CAAC,CAAC;MAClBE,aAAa,CAAC,KAAK,CAAC;MACpBd,SAAS,CAACvB,SAAS,CAACoH,UAAU,CAAC;MAC/B1F,UAAU,CAAC,uDAAuD,CAAC;MACnE;IACF;IACA,MAAM0G,WAAW,GAAGjH,MAAM,CAACkH,kBAAkB,IAAI7H,6BAA6B;IAC9E,IAAI,CAAC2H,OAAO,EAAEG,KAAK,IAAIC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGhF,YAAY,CAACY,OAAO,GAAGgE,WAAW,EAAE;IACxE5E,YAAY,CAACY,OAAO,GAAGmE,IAAI,CAACC,GAAG,CAAC,CAAC;IACjCpF,aAAa,CAACgB,OAAO,GAAG,IAAI;IAC5B/B,aAAa,CAAC,IAAI,CAAC;IACnBd,SAAS,CAACvB,SAAS,CAACyI,QAAQ,CAAC;IAC7B/G,UAAU,CAAC,yBAAyB,CAAC;IAErC,IAAI;MACF,MAAM2E,eAAe,GAAG,MAAMX,kBAAkB,CAAC,CAAC;MAClDhG,eAAe,CAAC2G,eAAe,CAAChC,OAAO,CAAC,CAACqE,IAAI,CAAC/I,QAAQ,CAACgJ,YAAY,CAAC;MACpE,MAAMC,aAAa,GAAG,MAAMrJ,gBAAgB,CAAC8G,eAAe,CAAC;MAC7D,MAAMJ,QAAQ,GAAG,MAAMpG,YAAY,CAACsB,MAAM,CAACY,cAAc,CAAC;MAC1D,MAAM6F,MAAM,GAAG3B,QAAQ,CAACpE,cAAc;;MAEtC;MACA;MACA,MAAMgH,OAAO,GAAG,MAAM7C,kBAAkB,CAAC,CAAC;MAC1C,MAAM8C,eAAe,GAAGF,aAAa,CAACG,MAAM,CAACC,CAAC,IAAI;QAChD,MAAM3B,MAAM,GAAGjI,gBAAgB,CAAC4J,CAAC,EAAEH,OAAO,CAAC;QAC3C,IAAIxB,MAAM,IAAIxD,OAAO,IAAImF,CAAC,CAACzB,SAAS,GAAGK,MAAM,EAAE;UAC7ChB,OAAO,CAACqC,GAAG,CAAC,2BAA2BD,CAAC,CAACzB,SAAS,KAAKyB,CAAC,CAACE,EAAE,MAAM7B,MAAM,EAAE,CAAC;QAC5E;QACA,OAAO,CAACA,MAAM;MAChB,CAAC,CAAC;MAEF,MAAM8B,IAAI,GACRL,eAAe,CAACM,MAAM,GAAG,CAAC,GACtBC,IAAI,CAACC,GAAG,CAAC,GAAGR,eAAe,CAACS,GAAG,CAACP,CAAC,IAAIA,CAAC,CAACzB,SAAS,CAAC,CAAC,GAClDK,MAAM;MAEZnF,UAAU,CAACqG,eAAe,CAAC;MAC3BhH,iBAAiB,CAAC8F,MAAM,CAAC;MACzB3F,gBAAgB,CAACkH,IAAI,CAAC;MAEtB,IAAIA,IAAI,GAAGvB,MAAM,EAAE;QACjBzF,eAAe,CAAC,CAAC,CAAC;QAClBT,UAAU,CAAC,sBAAsBkG,MAAM,OAAOuB,IAAI,EAAE,CAAC;QACrD5H,SAAS,CAACvB,SAAS,CAACwJ,gBAAgB,CAAC;;QAErC;QACA,MAAMC,OAAO,GAAGtI,MAAM,CAACsI,OAAO,EAAEC,QAAQ,GACpC,MAAMvK,aAAa,CAACwK,cAAc,CAAC,CAAC,CAAClE,KAAK,CAAC,MAAM,SAAS,CAAC,GAC3D,MAAM;QACV,IAAIgE,OAAO,KAAK,MAAM,IAAIA,OAAO,KAAK,UAAU,EAAE;UAChD/H,UAAU,CAAC,sBAAsBkG,MAAM,OAAOuB,IAAI,sBAAsB,CAAC;QAC3E,CAAC,MAAM,IAAIhI,MAAM,CAACyI,UAAU,KAAK3J,aAAa,CAAC4J,mBAAmB,EAAE;UAClElC,wBAAwB,CAACmB,eAAe,EAAElB,MAAM,EAAEuB,IAAI,CAAC;QACzD,CAAC,MAAM,IACLhI,MAAM,CAACyI,UAAU,KAAK3J,aAAa,CAAC6J,YAAY,IAChD3I,MAAM,CAACyI,UAAU,KAAK3J,aAAa,CAAC8J,iBAAiB,EACrD;UACA;UACA,MAAMjD,kBAAkB,CAACgC,eAAe,EAAElB,MAAM,EAAEuB,IAAI,CAAC;QACzD;MACF,CAAC,MAAM;QACLhH,eAAe,CAAC,CAAC,CAAC;QAClBT,UAAU,CAAC,yBAAyBkG,MAAM,GAAG,CAAC;QAC9CrG,SAAS,CAACvB,SAAS,CAACoH,UAAU,CAAC;MACjC;IACF,CAAC,CAAC,OAAOT,KAAK,EAAE;MACdjF,UAAU,CAAC,iBAAkBiF,KAAK,CAAWlF,OAAO,EAAE,CAAC;MACvDF,SAAS,CAACvB,SAAS,CAAC6G,KAAK,CAAC;IAC5B,CAAC,SAAS;MACRzD,aAAa,CAACgB,OAAO,GAAG,KAAK;MAC7B/B,aAAa,CAAC,KAAK,CAAC;IACtB;EACF,CAAC,EAAE,CAAClB,MAAM,EAAE4C,WAAW,EAAEiC,kBAAkB,EAAEc,kBAAkB,EAAElD,oBAAoB,EAAE+D,wBAAwB,EAAEjC,kBAAkB,CAAC,CAAC;;EAErI;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEjH,SAAS,CAAC,MAAM;IACd,MAAMuL,SAAS,GAAG,MAAAA,CAAA,KAAY;MAC5B3K,YAAY,CAAC,CAAC,CAAC4K,IAAI,CAACf,EAAE,IAAI;QACxBvF,YAAY,CAACS,OAAO,GAAG8E,EAAE;QACzBjG,YAAY,CAACiG,EAAE,CAAC;MAClB,CAAC,CAAC,CAACzD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;;MAElB;MACAtG,aAAa,CAAC+K,OAAO,CAACtK,YAAY,CAAC,CAACqK,IAAI,CAACE,IAAI,IAAI;QAC/C,KAAK,MAAMC,GAAG,IAAID,IAAI,EAAE;UACtB,IAAIC,GAAG,CAACC,UAAU,CAAC,YAAY,CAAC,EAAE;YAChClL,aAAa,CAACmL,UAAU,CAAC,GAAG1K,YAAY,IAAIwK,GAAG,EAAE,CAAC,CAAC3E,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;UACpE;QACF;MACF,CAAC,CAAC,CAACA,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;MAElB,MAAMQ,QAAQ,GAAG,MAAMpG,YAAY,CAACsB,MAAM,CAACY,cAAc,CAAC;MAC1DuB,iBAAiB,CAACc,OAAO,GAAG6B,QAAQ,CAACpE,cAAc;;MAEnD;MACAC,iBAAiB,CAACmE,QAAQ,CAACpE,cAAc,CAAC;;MAE1C;MACA,IAAIkC,WAAW,EAAE;QACf6C,OAAO,CAACD,KAAK,CAAC5C,WAAW,CAAC;QAC1BrC,UAAU,CAACqC,WAAW,CAAC;QACvBxC,SAAS,CAACvB,SAAS,CAAC6G,KAAK,CAAC;QAC1B;MACF;MACAxD,aAAa,CAACe,OAAO,GAAG,IAAI;;MAE5B;MACA,MAAMmG,IAAI,GAAGpJ,MAAM,CAACyI,UAAU,IAAI3J,aAAa,CAACuK,MAAM;MACtD,IACED,IAAI,KAAKtK,aAAa,CAAC6J,YAAY,IACnCS,IAAI,KAAKtK,aAAa,CAAC4J,mBAAmB,EAC1C;QACA3B,YAAY,CAAC,CAAC;MAChB,CAAC,MAAM;QACLxG,UAAU,CAAC,WAAWuE,QAAQ,CAACpE,cAAc,GAAG,CAAC;QACjDN,SAAS,CAACvB,SAAS,CAACoH,UAAU,CAAC;MACjC;IACF,CAAC;;IAED;IACA4C,SAAS,CAAC,CAAC,CACRvE,KAAK,CAACkB,KAAK,IAAI;MACdC,OAAO,CAACM,IAAI,CAAC,gEAAgE,EAAEP,KAAK,CAAC;MACrFjF,UAAU,CAAC,iBAAkBiF,KAAK,CAAWlF,OAAO,EAAE,CAAC;MACvDF,SAAS,CAACvB,SAAS,CAAC6G,KAAK,CAAC;IAC5B,CAAC,CAAC,CACD4D,OAAO,CAAC,MAAM9H,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC;EACF,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAM+H,cAAc,GAAG/L,MAAM,CAAC,KAAK,CAAC;EACpC+L,cAAc,CAACtG,OAAO,GAAGtB,WAAW,IAAIF,aAAa;EACrDnE,SAAS,CAAC,MAAM;IACd,MAAMkM,YAAY,GAAG7L,QAAQ,CAAC8L,gBAAgB,CAC5C,QAAQ,EACPC,YAA4B,IAAK;MAChC,IACE3H,QAAQ,CAACkB,OAAO,CAAC0G,KAAK,CAAC,qBAAqB,CAAC,IAC7CD,YAAY,KAAK,QAAQ,IACzBxH,aAAa,CAACe,OAAO,EACrB;QACA,IAAIsG,cAAc,CAACtG,OAAO,EAAE;UAC1BjF,aAAa,CAAC6I,YAAY,CAAC,CAAC;UAC5B;QACF;QACA,MAAMuC,IAAI,GAAGpJ,MAAM,CAACyI,UAAU,IAAI3J,aAAa,CAACuK,MAAM;QACtD,IAAID,IAAI,KAAKtK,aAAa,CAAC8J,iBAAiB,EAAE;UAC5C7B,YAAY,CAAC,CAAC;QAChB;MACF;MACAhF,QAAQ,CAACkB,OAAO,GAAGyG,YAAY;IACjC,CACF,CAAC;IAED,OAAO,MAAM;MACXF,YAAY,CAACI,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAAC5J,MAAM,CAACyI,UAAU,EAAE1B,YAAY,CAAC,CAAC;EAErC,MAAM8C,aAAa,GAAGzM,WAAW,CAAC,YAAY;IAC5C,MAAM0K,GAAG,GAAGvJ,eAAe,CAAC2E,OAAO,CAAC;IACpC4E,GAAG,CAACP,IAAI,CAAC/I,QAAQ,CAACsL,YAAY,CAAC;IAC/B,MAAMvH,UAAU,GAAG,MAAMvE,aAAa,CAAC4G,aAAa,CAAC,CAAC,CAACN,KAAK,CAAC,MAAMtE,MAAM,CAACuC,UAAU,CAAC;IACrF,MAAM5D,WAAW,CAACqB,MAAM,CAACY,cAAc,EAAEuB,iBAAiB,CAACc,OAAO,EAAEV,UAAU,CAAC;EACjF,CAAC,EAAE,CAACvC,MAAM,EAAEkD,OAAO,CAAC,CAAC;EAErB,MAAM6G,cAAc,GAAG3M,WAAW,CAAC,YAAY;IAC7C,MAAM0K,GAAG,GAAGvJ,eAAe,CAAC2E,OAAO,CAAC;IACpC,IAAI;MACF9C,SAAS,CAACvB,SAAS,CAACmL,QAAQ,CAAC;MAC7BzJ,UAAU,CAAC,0BAA0B,CAAC;MACtCuH,GAAG,CAACP,IAAI,CAAC/I,QAAQ,CAACyL,aAAa,CAAC;MAChC,IAAI,MAAMjM,aAAa,CAACkM,MAAM,CAACtL,OAAO,CAAC,EAAE;QACvC;QACA,MAAMZ,aAAa,CAACmM,QAAQ,CAACvL,OAAO,EAAE,GAAGH,YAAY,cAAc2I,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,CAAC;QAChF;MACF;MACA9G,UAAU,CAAC,0CAA0C,CAAC;MACtDvC,aAAa,CAAC6I,YAAY,CAAC,CAAC;IAC9B,CAAC,CAAC,OAAOrB,KAAK,EAAE;MACdpF,SAAS,CAACvB,SAAS,CAAC6G,KAAK,CAAC;MAC1BnF,UAAU,CAAC,iBAAkBiF,KAAK,CAAWlF,OAAO,EAAE,CAAC;IACzD;EACF,CAAC,EAAE,CAAC4C,OAAO,CAAC,CAAC;;EAEb;EACA,MAAMkH,KAAK,GAAG7M,OAAO,CAAW,OAAO;IACrC4C,MAAM;IACNG,OAAO;IACPE,QAAQ;IACRE,cAAc;IACdG,aAAa;IACbE,YAAY;IACZE,UAAU;IACVE,OAAO;IACPM,aAAa;IACbE,WAAW;IACXE,SAAS;IACT0E,WAAW;IACXF,YAAY;IACZL,UAAU;IACV+D,cAAc;IACdF,aAAa;IACbQ,WAAW,EAAEtD,YAAY;IACzBF,YAAY,EAAEA,CAAA,KAAM7I,aAAa,CAAC6I,YAAY,CAAC;EACjD,CAAC,CAAC,EAAE,CACF1G,MAAM,EACNG,OAAO,EACPE,QAAQ,EACRE,cAAc,EACdG,aAAa,EACbE,YAAY,EACZE,UAAU,EACVE,OAAO,EACPM,aAAa,EACbE,WAAW,EACXE,SAAS,EACT0E,WAAW,EACXF,YAAY,EACZL,UAAU,EACV+D,cAAc,EACdF,aAAa,EACb9C,YAAY,CACb,CAAC;;EAEF;EACA,MAAMuD,UAAU,GAAG/M,OAAO,CAAC,MAAM;IAC/B,OACE2C,cAAc,KACb,CAACqB,aAAa,IACZvB,MAAM,CAACyI,UAAU,KAAK3J,aAAa,CAAC6J,YAAY,KAC9CxI,MAAM,KAAKtB,SAAS,CAACwB,IAAI,IACxBF,MAAM,KAAKtB,SAAS,CAACyI,QAAQ,IAC7BnH,MAAM,KAAKtB,SAAS,CAACsG,WAAW,IAChChF,MAAM,KAAKtB,SAAS,CAACmL,QAAQ,IAC7B7J,MAAM,KAAKtB,SAAS,CAACwJ,gBAAgB,CAAE,CAAC;EAElD,CAAC,EAAE,CAACnI,cAAc,EAAEqB,aAAa,EAAEvB,MAAM,CAACyI,UAAU,EAAEtI,MAAM,CAAC,CAAC;;EAE9D;EACA;EACA;EACA,MAAMoK,gBAAgB,GAAG/M,MAAM,CAAC,KAAK,CAAC;EACtCF,SAAS,CAAC,MAAM;IACd,IAAIgN,UAAU,IAAI,CAAC/I,aAAa,IAAIgJ,gBAAgB,CAACtH,OAAO,EAAE;IAC9DsH,gBAAgB,CAACtH,OAAO,GAAG,IAAI;IAC/B4G,aAAa,CAAC,CAAC,CAACvF,KAAK,CAACzB,CAAC,IAAI4C,OAAO,CAACM,IAAI,CAAC,qCAAqC,EAAElD,CAAC,CAAC,CAAC;IAClF;EACF,CAAC,EAAE,CAACyH,UAAU,EAAE/I,aAAa,CAAC,CAAC;EAE/B,oBACEvC,IAAA,CAACG,UAAU,CAACqL,QAAQ;IAACJ,KAAK,EAAEA,KAAM;IAAArK,QAAA,EAC/B,CAACuK,UAAU,GACVvK,QAAQ,GACNE,WAAW,KAAKb,SAAS,GAC3Ba,WAAW,gBAEXjB,IAAA,CAACjB,IAAI;MAAC0M,KAAK,EAAEC,MAAM,CAACC,gBAAiB;MAAA5K,QAAA,eACnCb,KAAA,CAACnB,IAAI;QAAC0M,KAAK,EAAEC,MAAM,CAACE,WAAY;QAAA7K,QAAA,gBAC9Bf,IAAA,CAACtB,iBAAiB;UAACmN,IAAI,EAAC,OAAO;UAACC,KAAK,EAAC;QAAS,CAAE,CAAC,eAClD9L,IAAA,CAAClB,IAAI;UAAC2M,KAAK,EAAEC,MAAM,CAACK,YAAa;UAAAhL,QAAA,EAAC;QAAW,CAAM,CAAC,eACpDf,IAAA,CAAClB,IAAI;UAAC2M,KAAK,EAAEC,MAAM,CAACM,WAAY;UAAAjL,QAAA,EAAEO;QAAO,CAAO,CAAC,EAChDH,MAAM,KAAKtB,SAAS,CAACsG,WAAW,IAAIhF,MAAM,KAAKtB,SAAS,CAACmL,QAAQ,gBAChE9K,KAAA,CAACpB,IAAI;UAAC2M,KAAK,EAAEC,MAAM,CAACO,YAAa;UAAAlL,QAAA,GAAES,QAAQ,CAAC0K,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,MAAMzD,OAAO,GAAGrK,UAAU,CAAC8B,UAAU,CAAC;EACtC,IAAIuI,OAAO,KAAKtI,SAAS,EAAE;IACzB,MAAM,IAAI0D,KAAK,CAAC,2CAA2C,CAAC;EAC9D;EACA,OAAO4E,OAAO;AAChB;AAEA,MAAMgD,MAAM,GAAG7M,UAAU,CAACuN,MAAM,CAAC;EAC/BT,gBAAgB,EAAE;IAChBU,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,SAAS;IAC1BC,iBAAiB,EAAE;EACrB,CAAC;EACDb,WAAW,EAAE;IACXc,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;EACDhB,YAAY,EAAE;IACZiB,SAAS,EAAE,EAAE;IACblB,KAAK,EAAE,SAAS;IAChBmB,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDlB,WAAW,EAAE;IACXgB,SAAS,EAAE,CAAC;IACZlB,KAAK,EAAE,SAAS;IAChBmB,QAAQ,EAAE,EAAE;IACZE,UAAU,EAAE,EAAE;IACdC,SAAS,EAAE;EACb,CAAC;EACDnB,YAAY,EAAE;IACZe,SAAS,EAAE,EAAE;IACblB,KAAK,EAAE,SAAS;IAChBmB,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
/**
|
|
16
|
+
* Why this client must not install the entry, or null when it may.
|
|
17
|
+
* ignoreControls (installing a chosen entry by hand, e.g. QA): skip the kill switch,
|
|
18
|
+
* rollout and QA list, keep every check that protects the app.
|
|
19
|
+
*/
|
|
20
|
+
export const ineligibleReason = (e, ctx, {
|
|
21
|
+
ignoreControls = false
|
|
22
|
+
} = {}) => {
|
|
23
|
+
if (e.platform && e.platform.toLowerCase() !== ctx.platform) return 'other platform';
|
|
24
|
+
if (ctx.failedVersions.includes(e.toVersion)) return 'crashed on boot here before';
|
|
25
|
+
if (e.disabled && !ignoreControls) return 'disabled';
|
|
26
|
+
const missing = (e.requires ?? []).filter(f => !SUPPORTED_FEATURES.includes(f));
|
|
27
|
+
if (missing.length) return `needs a newer client (${missing.join(', ')})`;
|
|
28
|
+
if (e.runtimeFingerprint && e.runtimeFingerprint !== ctx.runtimeFingerprint) {
|
|
29
|
+
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)';
|
|
30
|
+
}
|
|
31
|
+
if (e.hermesBytecodeVersion && ctx.hermesBytecodeVersion && e.hermesBytecodeVersion !== ctx.hermesBytecodeVersion) {
|
|
32
|
+
return `Hermes bytecode ${e.hermesBytecodeVersion}, runtime reads ${ctx.hermesBytecodeVersion}`;
|
|
33
|
+
}
|
|
34
|
+
if (ignoreControls) return null;
|
|
35
|
+
if (e.allowInstallIds?.length && !e.allowInstallIds.includes(ctx.installId)) return 'not in the QA list';
|
|
36
|
+
if (e.rolloutPercent !== undefined && rolloutBucket(ctx.installId, e.toVersion) >= e.rolloutPercent) {
|
|
37
|
+
return `outside the ${e.rolloutPercent}% rollout`;
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=eligibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SUPPORTED_FEATURES","rolloutBucket","installId","version","h","c","charCodeAt","Math","imul","ineligibleReason","e","ctx","ignoreControls","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;AACA;AACA;AACA;AACA,OAAO,MAAMK,gBAAgB,GAAGA,CAC5BC,CAAW,EACXC,GAAuB,EACvB;EAAEC,cAAc,GAAG;AAAoC,CAAC,GAAG,CAAC,CAAC,KAC7C;EAChB,IAAIF,CAAC,CAACG,QAAQ,IAAIH,CAAC,CAACG,QAAQ,CAACC,WAAW,CAAC,CAAC,KAAKH,GAAG,CAACE,QAAQ,EAAE,OAAO,gBAAgB;EACpF,IAAIF,GAAG,CAACI,cAAc,CAACC,QAAQ,CAACN,CAAC,CAACO,SAAS,CAAC,EAAE,OAAO,6BAA6B;EAClF,IAAIP,CAAC,CAACQ,QAAQ,IAAI,CAACN,cAAc,EAAE,OAAO,UAAU;EACpD,MAAMO,OAAO,GAAG,CAACT,CAAC,CAACU,QAAQ,IAAI,EAAE,EAAEC,MAAM,CAACC,CAAC,IAAI,CAACtB,kBAAkB,CAACgB,QAAQ,CAACM,CAAC,CAAC,CAAC;EAC/E,IAAIH,OAAO,CAACI,MAAM,EAAE,OAAO,yBAAyBJ,OAAO,CAACK,IAAI,CAAC,IAAI,CAAC,GAAG;EACzE,IAAId,CAAC,CAACe,kBAAkB,IAAIf,CAAC,CAACe,kBAAkB,KAAKd,GAAG,CAACc,kBAAkB,EAAE;IACzE,OAAOd,GAAG,CAACc,kBAAkB,GACvB,uDAAuD,GACvD,uFAAuF;EACjG;EACA,IAAIf,CAAC,CAACgB,qBAAqB,IAAIf,GAAG,CAACe,qBAAqB,IAAIhB,CAAC,CAACgB,qBAAqB,KAAKf,GAAG,CAACe,qBAAqB,EAAE;IAC/G,OAAO,mBAAmBhB,CAAC,CAACgB,qBAAqB,mBAAmBf,GAAG,CAACe,qBAAqB,EAAE;EACnG;EACA,IAAId,cAAc,EAAE,OAAO,IAAI;EAC/B,IAAIF,CAAC,CAACiB,eAAe,EAAEJ,MAAM,IAAI,CAACb,CAAC,CAACiB,eAAe,CAACX,QAAQ,CAACL,GAAG,CAACT,SAAS,CAAC,EAAE,OAAO,oBAAoB;EACxG,IAAIQ,CAAC,CAACkB,cAAc,KAAKC,SAAS,IAAI5B,aAAa,CAACU,GAAG,CAACT,SAAS,EAAEQ,CAAC,CAACO,SAAS,CAAC,IAAIP,CAAC,CAACkB,cAAc,EAAE;IACjG,OAAO,eAAelB,CAAC,CAACkB,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
|