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.
Files changed (81) hide show
  1. package/README.md +87 -30
  2. package/android/build.gradle +25 -0
  3. package/android/src/main/AndroidManifest.xml +2 -0
  4. package/android/src/main/java/vn/reactnativebspatch/BsPatchModule.kt +86 -6
  5. package/android/src/main/res/values/bspatch_public_key.xml +5 -0
  6. package/cpp/bsdiff/bspatch_wrapper.c +34 -0
  7. package/cpp/bsdiff/bspatch_wrapper.h +2 -0
  8. package/cpp/bspatch_jni.cpp +18 -0
  9. package/ios/RNBsPatch.mm +142 -1
  10. package/lib/commonjs/NativeBsPatch.js.map +1 -1
  11. package/lib/commonjs/index.js +9 -2
  12. package/lib/commonjs/index.js.map +1 -1
  13. package/lib/commonjs/ota/OtaProvider.js +124 -32
  14. package/lib/commonjs/ota/OtaProvider.js.map +1 -1
  15. package/lib/commonjs/ota/eligibility.js +40 -0
  16. package/lib/commonjs/ota/eligibility.js.map +1 -0
  17. package/lib/commonjs/ota/entrySignature.js +23 -0
  18. package/lib/commonjs/ota/entrySignature.js.map +1 -0
  19. package/lib/commonjs/ota/installId.js +27 -0
  20. package/lib/commonjs/ota/installId.js.map +1 -0
  21. package/lib/commonjs/ota/otaCore.js +96 -21
  22. package/lib/commonjs/ota/otaCore.js.map +1 -1
  23. package/lib/commonjs/ota/storage/{GitHubRawStorage.js → R2Storage.js} +20 -15
  24. package/lib/commonjs/ota/storage/R2Storage.js.map +1 -0
  25. package/lib/commonjs/ota/types.js.map +1 -1
  26. package/lib/module/NativeBsPatch.js.map +1 -1
  27. package/lib/module/index.js +2 -1
  28. package/lib/module/index.js.map +1 -1
  29. package/lib/module/ota/OtaProvider.js +124 -32
  30. package/lib/module/ota/OtaProvider.js.map +1 -1
  31. package/lib/module/ota/eligibility.js +34 -0
  32. package/lib/module/ota/eligibility.js.map +1 -0
  33. package/lib/module/ota/entrySignature.js +17 -0
  34. package/lib/module/ota/entrySignature.js.map +1 -0
  35. package/lib/module/ota/installId.js +22 -0
  36. package/lib/module/ota/installId.js.map +1 -0
  37. package/lib/module/ota/otaCore.js +96 -21
  38. package/lib/module/ota/otaCore.js.map +1 -1
  39. package/lib/module/ota/storage/{GitHubRawStorage.js → R2Storage.js} +18 -14
  40. package/lib/module/ota/storage/R2Storage.js.map +1 -0
  41. package/lib/module/ota/types.js.map +1 -1
  42. package/lib/typescript/NativeBsPatch.d.ts +28 -2
  43. package/lib/typescript/NativeBsPatch.d.ts.map +1 -1
  44. package/lib/typescript/index.d.ts +3 -1
  45. package/lib/typescript/index.d.ts.map +1 -1
  46. package/lib/typescript/ota/OtaProvider.d.ts.map +1 -1
  47. package/lib/typescript/ota/eligibility.d.ts +19 -0
  48. package/lib/typescript/ota/eligibility.d.ts.map +1 -0
  49. package/lib/typescript/ota/entrySignature.d.ts +9 -0
  50. package/lib/typescript/ota/entrySignature.d.ts.map +1 -0
  51. package/lib/typescript/ota/installId.d.ts +3 -0
  52. package/lib/typescript/ota/installId.d.ts.map +1 -0
  53. package/lib/typescript/ota/otaCore.d.ts.map +1 -1
  54. package/lib/typescript/ota/storage/{GitHubRawStorage.d.ts → R2Storage.d.ts} +4 -3
  55. package/lib/typescript/ota/storage/R2Storage.d.ts.map +1 -0
  56. package/lib/typescript/ota/types.d.ts +54 -5
  57. package/lib/typescript/ota/types.d.ts.map +1 -1
  58. package/package.json +3 -2
  59. package/react-native-bspatch.podspec +3 -1
  60. package/src/NativeBsPatch.ts +34 -2
  61. package/src/index.ts +5 -1
  62. package/src/ota/OtaProvider.tsx +128 -43
  63. package/src/ota/eligibility.ts +48 -0
  64. package/src/ota/entrySignature.ts +31 -0
  65. package/src/ota/installId.ts +18 -0
  66. package/src/ota/otaCore.ts +102 -21
  67. package/src/ota/storage/{GitHubRawStorage.ts → R2Storage.ts} +17 -13
  68. package/src/ota/types.ts +51 -5
  69. package/tools/build_ota.sh +343 -116
  70. package/tools/doctor.js +130 -0
  71. package/tools/ensure_signing_key.js +216 -0
  72. package/tools/fingerprint.js +111 -0
  73. package/tools/ios_fingerprint.sh +9 -0
  74. package/tools/ota_admin.js +131 -0
  75. package/tools/setup_project.js +41 -15
  76. package/tools/update_registry.js +111 -11
  77. package/tools/upload_ota.sh +85 -184
  78. package/tools/verify_publish.js +81 -0
  79. package/lib/commonjs/ota/storage/GitHubRawStorage.js.map +0 -1
  80. package/lib/module/ota/storage/GitHubRawStorage.js.map +0 -1
  81. 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.GitHubRawStorageProvider = void 0;
6
+ exports.normalizeChannel = exports.fetchJson = exports.R2StorageProvider = void 0;
7
7
  /**
8
- * Storage Provider for any static host with this layout: GitHub raw, a public
9
- * Cloudflare R2 bucket (r2.dev or custom domain), S3, a CDN...
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 (GitHub's CDN caches for 5 minutes). Bundles,
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 GitHub CDN cache on mutable files (registry, manifests) */
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: NO_CACHE_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
- class GitHubRawStorageProvider {
56
+ exports.normalizeChannel = normalizeChannel;
57
+ class R2StorageProvider {
54
58
  async fetchManifest(config) {
55
59
  if (!config.customServer) {
56
- throw new Error('[GitHubRawStorage] customServer configuration missing');
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('[GitHubRawStorage] config.appVersion is required to query OTA registry');
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(`[GitHubRawStorage] Manifest fetch error: ${error.message}`);
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.GitHubRawStorageProvider = GitHubRawStorageProvider;
108
- //# sourceMappingURL=GitHubRawStorage.js.map
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;AAwCzB;AACA;AACA;AAFA,IA+EYE,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
+ {"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;AA4FlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
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":[]}
@@ -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 { GitHubRawStorageProvider } from './ota/storage/GitHubRawStorage';
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,
@@ -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,SAASC,wBAAwB,QAAQ,gCAAgC;AAEzE,eAAe;EACbN,UAAU;EACVK,YAAY;EACZD;AACF,CAAC","ignoreList":[]}
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
- if (config.appVersion) return config;
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
- ...config,
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 applyUpdate = useCallback(async () => {
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, latestVersion);
116
- }, [currentVersion, executeApplyUpdate, isDebugUpdateEnabled, latestVersion, patches]);
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
- // The one platform filter (storage providers return every platform).
168
- // Also skips versions that crashed on boot and were rolled back natively.
169
- const failed = metadata.failedVersions ?? [];
170
- const platformPatches = remotePatches.filter(p => (!p.platform || p.platform.toLowerCase() === Platform.OS) && !failed.includes(p.toVersion));
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
- if (config.updateMode === OtaUpdateMode.BACKGROUND_DOWNLOAD) {
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
- bootstrap().then(() => setIsInitialized(true)).catch(() => {
247
- // Bootstrap failed: keep UI blocked so user sees the error state.
248
- // setIsInitialized stays false → isBlocking remains true → the error
249
- // message is shown via loadingView instead of a silent blank screen.
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 silent background reload
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(config.onEvent);
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(config.onEvent);
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
- }, [config]);
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":[]}