react-native-bspatch 1.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 (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +471 -0
  3. package/android/build.gradle +100 -0
  4. package/android/src/main/AndroidManifest.xml +3 -0
  5. package/android/src/main/java/vn/reactnativebspatch/BsPatchModule.kt +139 -0
  6. package/android/src/main/java/vn/reactnativebspatch/BsPatchPackage.kt +16 -0
  7. package/android/src/main/java/vn/reactnativebspatch/OtaBundleResolver.kt +227 -0
  8. package/cpp/CMakeLists.txt +43 -0
  9. package/cpp/bsdiff/bspatch.c +194 -0
  10. package/cpp/bsdiff/bspatch.h +41 -0
  11. package/cpp/bsdiff/bspatch_wrapper.c +150 -0
  12. package/cpp/bsdiff/bspatch_wrapper.h +6 -0
  13. package/cpp/bspatch_jni.cpp +41 -0
  14. package/cpp/bzip2/LICENSE +42 -0
  15. package/cpp/bzip2/blocksort.c +1094 -0
  16. package/cpp/bzip2/bzlib.c +1572 -0
  17. package/cpp/bzip2/bzlib.h +282 -0
  18. package/cpp/bzip2/bzlib_private.h +509 -0
  19. package/cpp/bzip2/compress.c +672 -0
  20. package/cpp/bzip2/crctable.c +104 -0
  21. package/cpp/bzip2/decompress.c +652 -0
  22. package/cpp/bzip2/huffman.c +205 -0
  23. package/cpp/bzip2/randtable.c +84 -0
  24. package/ios/OtaBundleResolver.swift +241 -0
  25. package/ios/RNBsPatch.h +8 -0
  26. package/ios/RNBsPatch.mm +198 -0
  27. package/lib/commonjs/NativeBsPatch.js +9 -0
  28. package/lib/commonjs/NativeBsPatch.js.map +1 -0
  29. package/lib/commonjs/crypto-js.d.js +2 -0
  30. package/lib/commonjs/crypto-js.d.js.map +1 -0
  31. package/lib/commonjs/index.js +90 -0
  32. package/lib/commonjs/index.js.map +1 -0
  33. package/lib/commonjs/ota/OtaProvider.js +306 -0
  34. package/lib/commonjs/ota/OtaProvider.js.map +1 -0
  35. package/lib/commonjs/ota/otaAssetResolver.js +145 -0
  36. package/lib/commonjs/ota/otaAssetResolver.js.map +1 -0
  37. package/lib/commonjs/ota/otaCore.js +736 -0
  38. package/lib/commonjs/ota/otaCore.js.map +1 -0
  39. package/lib/commonjs/ota/otaLogger.js +64 -0
  40. package/lib/commonjs/ota/otaLogger.js.map +1 -0
  41. package/lib/commonjs/ota/otaMetadata.js +138 -0
  42. package/lib/commonjs/ota/otaMetadata.js.map +1 -0
  43. package/lib/commonjs/ota/storage/CustomStorage.js +140 -0
  44. package/lib/commonjs/ota/storage/CustomStorage.js.map +1 -0
  45. package/lib/commonjs/ota/storage/GitHubReleaseStorage.js +96 -0
  46. package/lib/commonjs/ota/storage/GitHubReleaseStorage.js.map +1 -0
  47. package/lib/commonjs/ota/types.js +39 -0
  48. package/lib/commonjs/ota/types.js.map +1 -0
  49. package/lib/commonjs/package.json +1 -0
  50. package/lib/module/NativeBsPatch.js +5 -0
  51. package/lib/module/NativeBsPatch.js.map +1 -0
  52. package/lib/module/crypto-js.d.js +2 -0
  53. package/lib/module/crypto-js.d.js.map +1 -0
  54. package/lib/module/index.js +23 -0
  55. package/lib/module/index.js.map +1 -0
  56. package/lib/module/ota/OtaProvider.js +299 -0
  57. package/lib/module/ota/OtaProvider.js.map +1 -0
  58. package/lib/module/ota/otaAssetResolver.js +138 -0
  59. package/lib/module/ota/otaAssetResolver.js.map +1 -0
  60. package/lib/module/ota/otaCore.js +725 -0
  61. package/lib/module/ota/otaCore.js.map +1 -0
  62. package/lib/module/ota/otaLogger.js +59 -0
  63. package/lib/module/ota/otaLogger.js.map +1 -0
  64. package/lib/module/ota/otaMetadata.js +127 -0
  65. package/lib/module/ota/otaMetadata.js.map +1 -0
  66. package/lib/module/ota/storage/CustomStorage.js +134 -0
  67. package/lib/module/ota/storage/CustomStorage.js.map +1 -0
  68. package/lib/module/ota/storage/GitHubReleaseStorage.js +90 -0
  69. package/lib/module/ota/storage/GitHubReleaseStorage.js.map +1 -0
  70. package/lib/module/ota/types.js +38 -0
  71. package/lib/module/ota/types.js.map +1 -0
  72. package/lib/typescript/NativeBsPatch.d.ts +39 -0
  73. package/lib/typescript/NativeBsPatch.d.ts.map +1 -0
  74. package/lib/typescript/index.d.ts +15 -0
  75. package/lib/typescript/index.d.ts.map +1 -0
  76. package/lib/typescript/ota/OtaProvider.d.ts +10 -0
  77. package/lib/typescript/ota/OtaProvider.d.ts.map +1 -0
  78. package/lib/typescript/ota/otaAssetResolver.d.ts +15 -0
  79. package/lib/typescript/ota/otaAssetResolver.d.ts.map +1 -0
  80. package/lib/typescript/ota/otaCore.d.ts +109 -0
  81. package/lib/typescript/ota/otaCore.d.ts.map +1 -0
  82. package/lib/typescript/ota/otaLogger.d.ts +44 -0
  83. package/lib/typescript/ota/otaLogger.d.ts.map +1 -0
  84. package/lib/typescript/ota/otaMetadata.d.ts +46 -0
  85. package/lib/typescript/ota/otaMetadata.d.ts.map +1 -0
  86. package/lib/typescript/ota/storage/CustomStorage.d.ts +12 -0
  87. package/lib/typescript/ota/storage/CustomStorage.d.ts.map +1 -0
  88. package/lib/typescript/ota/storage/GitHubReleaseStorage.d.ts +20 -0
  89. package/lib/typescript/ota/storage/GitHubReleaseStorage.d.ts.map +1 -0
  90. package/lib/typescript/ota/types.d.ts +191 -0
  91. package/lib/typescript/ota/types.d.ts.map +1 -0
  92. package/package.json +89 -0
  93. package/react-native-bspatch.podspec +46 -0
  94. package/src/NativeBsPatch.ts +52 -0
  95. package/src/crypto-js.d.ts +1 -0
  96. package/src/index.ts +29 -0
  97. package/src/ota/OtaProvider.tsx +399 -0
  98. package/src/ota/otaAssetResolver.ts +182 -0
  99. package/src/ota/otaCore.ts +963 -0
  100. package/src/ota/otaLogger.ts +72 -0
  101. package/src/ota/otaMetadata.ts +149 -0
  102. package/src/ota/storage/CustomStorage.ts +143 -0
  103. package/src/ota/storage/GitHubReleaseStorage.ts +98 -0
  104. package/src/ota/types.ts +211 -0
  105. package/tools/bsdiff +0 -0
  106. package/tools/bsdiff.c +445 -0
  107. package/tools/bsdiff.h +45 -0
  108. package/tools/build_ota.sh +457 -0
  109. package/tools/setup_project.js +273 -0
  110. package/tools/update_registry.js +145 -0
  111. package/tools/upload_ota_custom.sh +138 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","ReactNativeBlobUtil","CryptoJS","NativeBsPatch","createOtaLogger","OtaEvent","ensureOtaDir","getBundlePath","loadMetadata","registerNewVersion","saveMetadata","CustomStorageProvider","GitHubReleaseStorageProvider","OtaStatus","OtaStorageType","OTA_DIR","fs","dirs","DocumentDir","DEFAULT_STORAGE","GITHUB_STORAGE","getStorage","config","storage","storageType","GITHUB","semverGte","a","b","pa","split","map","Number","pb","i","va","vb","verifyHash","path","expectedHash","hash","toLowerCase","verifySignature","filePath","signature","publicKey","fileData","readFile","fileWords","enc","Base64","parse","keyWords","signatureWords","hmac","HmacSHA256","isValid","toString","__DEV__","console","warn","error","decompressGzip","endsWith","decompressedPath","replace","success","Error","downloadWithRetry","url","destPath","onProgress","headers","retryLimit","network","retry","timeout","timeoutMs","taskRef","task","fileCache","followRedirect","fetch","progress","received","total","percent","Math","floor","cancel","e","delay","pow","Promise","resolve","setTimeout","fetchOtaManifest","fetchManifest","message","bundledPatches","ASSET_STORE_DIR","downloadAndSyncAssets","assetManifestUrl","version","log","onStatus","SYNCING_ASSETS","versionDir","manifestPath","exists","mkdir","assets","resp","respInfo","status","manifestData","data","JSON","stringify","writeFile","manifest","filter","isBase","length","processed","downloaded","cached","updateProgress","round","maxConcurrency","index","downloadNext","asset","filename","ext","localPath","assetUrl","getAssetUrl","emit","DOWNLOAD_SUCCESS","initialWorkers","min","workers","Array","fill","all","getLocalAssetPath","getLocalPatchPath","patch","docDir","id","applyOtaPatchInternal","onEvent","totalStart","Date","now","finalBundlePath","toVersion","baseAppVersion","tempBundle","localPatchPath","minAppVersion","appVersion","VERSION_INCOMPATIBLE","downloadMs","patchSizeBytes","fromCache","stat","size","DOWNLOAD_START","DOWNLOADING","dlStart","getUpdateFileUrl","durationMs","sizeKB","dlError","DOWNLOAD_FAIL","actualPatchPath","compressed","DECOMPRESS_START","APPLYING","DECOMPRESS_SUCCESS","sigValid","SIGNATURE_INVALID","manifestUrl","metadata","oldBundlePath","currentVersion","bundleFilename","OS","actualOldPath","otaStoredPath","extractBundleFromAssets","oldStat","patchStat","baseHash","HASH_VERIFY_START","actualSourceHash","srcSize","srcStat","fromVersion","HASH_MISMATCH","expected","actual","HASH_VERIFY_SUCCESS","PATCH_START","applyStart","applyPatch","applyMs","PATCH_FAIL","bundleHash","unlink","mv","newMetadata","totalMs","PATCH_SUCCESS","SUCCESS","patchSizeKB","markAsHealthy","reloadBundle","fullBundleUrl","actualHash","fallbackError","ERROR"],"sourceRoot":"../../../src","sources":["ota/otaCore.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * OTA Structured Event Logger
5
+ *
6
+ * Provides a centralized logging system for all OTA operations.
7
+ * Events can be forwarded to external analytics via the `onEvent` callback in OtaConfig.
8
+ */
9
+
10
+ import NativeBsPatch from '../NativeBsPatch';
11
+ export let OtaEvent = /*#__PURE__*/function (OtaEvent) {
12
+ OtaEvent["CHECK_UPDATE"] = "check_update";
13
+ OtaEvent["DOWNLOAD_START"] = "download_start";
14
+ OtaEvent["DOWNLOAD_SUCCESS"] = "download_success";
15
+ OtaEvent["DOWNLOAD_FAIL"] = "download_fail";
16
+ OtaEvent["PATCH_START"] = "patch_start";
17
+ OtaEvent["PATCH_SUCCESS"] = "patch_success";
18
+ OtaEvent["PATCH_FAIL"] = "patch_fail";
19
+ OtaEvent["HASH_VERIFY_START"] = "hash_verify_start";
20
+ OtaEvent["HASH_VERIFY_SUCCESS"] = "hash_verify_success";
21
+ OtaEvent["HASH_MISMATCH"] = "hash_mismatch";
22
+ OtaEvent["ROLLBACK"] = "rollback";
23
+ OtaEvent["FALLBACK_FULL_BUNDLE"] = "fallback_full_bundle";
24
+ OtaEvent["MARK_HEALTHY"] = "mark_healthy";
25
+ OtaEvent["RESET_FACTORY"] = "reset_factory";
26
+ OtaEvent["VERSION_INCOMPATIBLE"] = "version_incompatible";
27
+ OtaEvent["SIGNATURE_INVALID"] = "signature_invalid";
28
+ OtaEvent["DECOMPRESS_START"] = "decompress_start";
29
+ OtaEvent["DECOMPRESS_SUCCESS"] = "decompress_success";
30
+ return OtaEvent;
31
+ }({});
32
+ /**
33
+ * Creates an OTA logger instance bound to an optional external callback.
34
+ */
35
+ export const createOtaLogger = onEvent => {
36
+ const emit = (event, details) => {
37
+ const entry = {
38
+ event,
39
+ timestamp: Date.now(),
40
+ ...details
41
+ };
42
+
43
+ // Always log to console for debugging
44
+ const logStr = `[OTA:${event}] ${JSON.stringify(entry)}`;
45
+ console.log(logStr);
46
+
47
+ // Also log to native for physical device debugging (visible in Xcode)
48
+ if (NativeBsPatch && NativeBsPatch.logNative) {
49
+ NativeBsPatch.logNative(logStr);
50
+ }
51
+
52
+ // Forward to external analytics if configured
53
+ onEvent?.(entry);
54
+ };
55
+ return {
56
+ emit
57
+ };
58
+ };
59
+ //# sourceMappingURL=otaLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeBsPatch","OtaEvent","createOtaLogger","onEvent","emit","event","details","entry","timestamp","Date","now","logStr","JSON","stringify","console","log","logNative"],"sourceRoot":"../../../src","sources":["ota/otaLogger.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,aAAa,MAAM,kBAAkB;AAE5C,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAkCpB;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAIC,OAA0B,IAAK;EAC7D,MAAMC,IAAI,GAAGA,CACXC,KAAe,EACfC,OAAkD,KAC/C;IACH,MAAMC,KAAkB,GAAG;MACzBF,KAAK;MACLG,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;MACrB,GAAGJ;IACL,CAAC;;IAED;IACA,MAAMK,MAAM,GAAG,QAAQN,KAAK,KAAKO,IAAI,CAACC,SAAS,CAACN,KAAK,CAAC,EAAE;IACxDO,OAAO,CAACC,GAAG,CAACJ,MAAM,CAAC;;IAEnB;IACA,IAAIX,aAAa,IAAIA,aAAa,CAACgB,SAAS,EAAE;MAC5ChB,aAAa,CAACgB,SAAS,CAACL,MAAM,CAAC;IACjC;;IAEA;IACAR,OAAO,GAAGI,KAAK,CAAC;EAClB,CAAC;EAED,OAAO;IAAEH;EAAK,CAAC;AACjB,CAAC","ignoreList":[]}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import ReactNativeBlobUtil from 'react-native-blob-util';
5
+ const OTA_DIR = `${ReactNativeBlobUtil.fs.dirs.DocumentDir}/ota`;
6
+ const METADATA_PATH = `${OTA_DIR}/metadata.json`;
7
+
8
+ /** Promise-based lock to prevent concurrent metadata writes (double-tap guard). */
9
+ let saveLock = Promise.resolve();
10
+
11
+ /**
12
+ * Ensures the OTA root directory exists.
13
+ */
14
+ export const ensureOtaDir = async () => {
15
+ if (!(await ReactNativeBlobUtil.fs.exists(OTA_DIR))) {
16
+ await ReactNativeBlobUtil.fs.mkdir(OTA_DIR);
17
+ }
18
+ };
19
+
20
+ /**
21
+ * Loads the current OTA metadata from the local filesystem.
22
+ *
23
+ * @param defaultVersion - The version to return if no metadata exists (usually baseAppVersion).
24
+ * @returns The persisted metadata or a default if loading fails.
25
+ */
26
+ export const loadMetadata = async defaultVersion => {
27
+ try {
28
+ if (await ReactNativeBlobUtil.fs.exists(METADATA_PATH)) {
29
+ const content = await ReactNativeBlobUtil.fs.readFile(METADATA_PATH, 'utf8');
30
+ return JSON.parse(content);
31
+ }
32
+ } catch (e) {
33
+ console.warn('[otaMetadata] Failed to load metadata:', e);
34
+ }
35
+ return {
36
+ currentVersion: defaultVersion,
37
+ previousVersions: [],
38
+ rollbackCount: 0,
39
+ lastLaunchSuccessful: true
40
+ };
41
+ };
42
+
43
+ /**
44
+ * Persists OTA metadata to the local filesystem.
45
+ *
46
+ * @param metadata - The metadata object to save.
47
+ */
48
+ export const saveMetadata = async metadata => {
49
+ // Wait for any in-flight save to complete before starting our own
50
+ const prevLock = saveLock;
51
+ let settleFn;
52
+ saveLock = new Promise(resolve => {
53
+ settleFn = resolve;
54
+ });
55
+ try {
56
+ await prevLock;
57
+ await ensureOtaDir();
58
+ await ReactNativeBlobUtil.fs.writeFile(METADATA_PATH, JSON.stringify(metadata, null, 2), 'utf8');
59
+ } catch (e) {
60
+ console.error('[otaMetadata] Failed to save metadata:', e);
61
+ throw new Error(`Failed to save metadata: ${e.message}`);
62
+ } finally {
63
+ settleFn();
64
+ }
65
+ };
66
+
67
+ /** Maximum number of previous versions kept in history for rollback. */
68
+ export const MAX_VERSION_HISTORY = 3;
69
+
70
+ /**
71
+ * Rotates OTA versions for auditing and rollback capabilities.
72
+ * Pushes the current version to the history and limits history to MAX_VERSION_HISTORY.
73
+ *
74
+ * @param metadata - Current metadata object.
75
+ * @param newVersion - The newly applied OTA version.
76
+ * @returns Updated metadata object.
77
+ */
78
+ export const registerNewVersion = (metadata, newVersion) => {
79
+ const versions = [metadata.currentVersion, ...(metadata.previousVersions || [])];
80
+ // Keep internal history unique and capped
81
+ const uniquePrevious = Array.from(new Set(versions)).filter(v => v !== newVersion).slice(0, MAX_VERSION_HISTORY);
82
+ return {
83
+ ...metadata,
84
+ currentVersion: newVersion,
85
+ previousVersions: uniquePrevious,
86
+ rollbackCount: 0,
87
+ lastLaunchSuccessful: true // Native layer will set to false on next boot until JS marks healthy
88
+ };
89
+ };
90
+
91
+ /**
92
+ * Marks the current session as healthy, indicating a successful boot.
93
+ * This prevents the native bridge from rolling back the version on the next launch.
94
+ *
95
+ * @param defaultVersion - Base version for metadata lookup fallback.
96
+ * @returns The updated metadata.
97
+ */
98
+ export const markHealthy = async defaultVersion => {
99
+ const metadata = await loadMetadata(defaultVersion);
100
+ const updated = {
101
+ ...metadata,
102
+ lastLaunchSuccessful: true,
103
+ rollbackCount: 0
104
+ };
105
+ await saveMetadata(updated);
106
+ return updated;
107
+ };
108
+
109
+ /**
110
+ * Resolves the absolute path to the JS bundle for a specific version.
111
+ *
112
+ * @param version - The OTA version number.
113
+ * @param baseVersion - The app's base version (bundled).
114
+ * @returns Absolute path to the bundle or null if it refers to the base bundle.
115
+ */
116
+ export const getBundlePath = (version, baseVersion) => {
117
+ if (version === baseVersion) {
118
+ return null;
119
+ }
120
+ const filename = Platform.select({
121
+ android: 'index.android.bundle',
122
+ ios: 'main.jsbundle',
123
+ default: 'index.android.bundle'
124
+ });
125
+ return `${OTA_DIR}/v${version}/${filename}`;
126
+ };
127
+ //# sourceMappingURL=otaMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","ReactNativeBlobUtil","OTA_DIR","fs","dirs","DocumentDir","METADATA_PATH","saveLock","Promise","resolve","ensureOtaDir","exists","mkdir","loadMetadata","defaultVersion","content","readFile","JSON","parse","e","console","warn","currentVersion","previousVersions","rollbackCount","lastLaunchSuccessful","saveMetadata","metadata","prevLock","settleFn","writeFile","stringify","error","Error","message","MAX_VERSION_HISTORY","registerNewVersion","newVersion","versions","uniquePrevious","Array","from","Set","filter","v","slice","markHealthy","updated","getBundlePath","version","baseVersion","filename","select","android","ios","default"],"sourceRoot":"../../../src","sources":["ota/otaMetadata.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import ReactNativeBlobUtil from 'react-native-blob-util';
5
+ /** Cache tokens per server endpoint so switching configs invalidates stale tokens. */
6
+ const tokenCache = new Map();
7
+
8
+ /**
9
+ * Implementation for the custom MinIO-based storage server.
10
+ */
11
+ export class CustomStorageProvider {
12
+ getEndpoint(config, key, fallback) {
13
+ return config.customServer?.endpoints?.[key] ?? fallback;
14
+ }
15
+ async getAccessToken(config) {
16
+ if (!config.customServer) {
17
+ throw new Error('customServer configuration missing');
18
+ }
19
+ const {
20
+ baseUrl,
21
+ username,
22
+ password
23
+ } = config.customServer;
24
+ const cacheKey = `${baseUrl}|${username}`;
25
+ const now = Date.now();
26
+ const cached = tokenCache.get(cacheKey);
27
+ if (cached && now < cached.expiresAt - 30000) {
28
+ return cached.token;
29
+ }
30
+ const loginPath = this.getEndpoint(config, 'login', 'public/authen/login');
31
+ const loginUrl = baseUrl.endsWith('/') ? `${baseUrl}${loginPath}` : `${baseUrl}/${loginPath}`;
32
+ try {
33
+ const res = await ReactNativeBlobUtil.fetch('POST', loginUrl, {
34
+ 'Content-Type': 'application/json; charset=utf-8'
35
+ }, JSON.stringify({
36
+ username,
37
+ password
38
+ }));
39
+ const json = JSON.parse(res.data);
40
+ const token = json.data?.accessTokenInfo?.accessToken;
41
+ if (!token) throw new Error('Login failed: token not found');
42
+ tokenCache.set(cacheKey, {
43
+ token,
44
+ expiresAt: now + 3600000
45
+ }); // 1 hour
46
+ return token;
47
+ } catch (error) {
48
+ throw new Error(`Authentication failed: ${error.message}`);
49
+ }
50
+ }
51
+ async fetchManifest(config) {
52
+ if (!config.customServer) return config.bundledPatches || [];
53
+ const {
54
+ baseUrl,
55
+ channel,
56
+ baseFolder = 'bspatch'
57
+ } = config.customServer;
58
+ const registryPath = `${baseFolder}/ota_registry.json`;
59
+ try {
60
+ const token = await this.getAccessToken(config);
61
+ const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
62
+ const genLinkPath = this.getEndpoint(config, 'genDownloadLink', 'api/minio/gen-download-link');
63
+ const genLinkUrl = `${normalizedBaseUrl}/${genLinkPath}?pathFile=${encodeURIComponent(registryPath)}`;
64
+ const linkRes = await ReactNativeBlobUtil.fetch('GET', genLinkUrl, {
65
+ Authorization: `Bearer ${token}`
66
+ });
67
+ const linkJson = JSON.parse(linkRes.data);
68
+ const registryUrl = linkJson.data;
69
+ if (!registryUrl) throw new Error('Failed to generate registry download link');
70
+ const registryRes = await ReactNativeBlobUtil.fetch('GET', registryUrl);
71
+ if (registryRes.respInfo.status !== 200) {
72
+ throw new Error(`Registry fetch failed with status ${registryRes.respInfo.status}`);
73
+ }
74
+ const registry = JSON.parse(registryRes.data);
75
+ const appGroup = registry?.apps?.[config.appVersion];
76
+ const flavorGroup = appGroup?.flavors?.[channel.toLowerCase()];
77
+ if (!flavorGroup || !flavorGroup.patches?.length) {
78
+ return config.bundledPatches || [];
79
+ }
80
+ return (flavorGroup.patches || []).filter(p => p.platform === Platform.OS);
81
+ } catch (error) {
82
+ console.warn('[CustomStorage] Manifest fetch error:', error.message);
83
+ return config.bundledPatches || [];
84
+ }
85
+ }
86
+ async getUpdateFileUrl(filename, config) {
87
+ if (!config.customServer) throw new Error('customServer config missing');
88
+ const {
89
+ baseUrl,
90
+ baseFolder = 'bspatch',
91
+ useMinio
92
+ } = config.customServer;
93
+ const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
94
+ const channel = config.customServer.channel.toLowerCase();
95
+ const remotePath = `${baseFolder}/${config.appVersion}/${channel}/${filename}`;
96
+ if (useMinio) {
97
+ const token = await this.getAccessToken(config);
98
+ const genLinkPath = this.getEndpoint(config, 'genDownloadLink', 'api/minio/gen-download-link');
99
+ const genLinkUrl = `${normalizedBaseUrl}/${genLinkPath}?pathFile=${encodeURIComponent(remotePath)}`;
100
+ const res = await ReactNativeBlobUtil.fetch('GET', genLinkUrl, {
101
+ Authorization: `Bearer ${token}`
102
+ });
103
+ const json = JSON.parse(res.data);
104
+ if (!json.data) throw new Error(`Failed to generate link for: ${filename}`);
105
+ return json.data;
106
+ }
107
+ const downloadPath = this.getEndpoint(config, 'downloadFile', 'files/downloadStreamFile');
108
+ return `${normalizedBaseUrl}/${downloadPath}?filepath=${encodeURIComponent(remotePath)}`;
109
+ }
110
+ async getAssetUrl(hash, ext, config) {
111
+ if (!config.customServer) return '';
112
+ const {
113
+ baseUrl,
114
+ baseFolder = 'bspatch',
115
+ useMinio
116
+ } = config.customServer;
117
+ const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
118
+ const filename = `${hash}.${ext}`;
119
+ const remotePath = `${baseFolder}/assets/${filename}`;
120
+ if (useMinio) {
121
+ const token = await this.getAccessToken(config);
122
+ const genLinkPath = this.getEndpoint(config, 'genDownloadLink', 'api/minio/gen-download-link');
123
+ const genLinkUrl = `${normalizedBaseUrl}/${genLinkPath}?pathFile=${encodeURIComponent(remotePath)}`;
124
+ const res = await ReactNativeBlobUtil.fetch('GET', genLinkUrl, {
125
+ Authorization: `Bearer ${token}`
126
+ });
127
+ const json = JSON.parse(res.data);
128
+ return json.data || '';
129
+ }
130
+ const downloadPath = this.getEndpoint(config, 'downloadFile', 'files/downloadStreamFile');
131
+ return `${normalizedBaseUrl}/${downloadPath}?filepath=${encodeURIComponent(remotePath)}`;
132
+ }
133
+ }
134
+ //# sourceMappingURL=CustomStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","ReactNativeBlobUtil","tokenCache","Map","CustomStorageProvider","getEndpoint","config","key","fallback","customServer","endpoints","getAccessToken","Error","baseUrl","username","password","cacheKey","now","Date","cached","get","expiresAt","token","loginPath","loginUrl","endsWith","res","fetch","JSON","stringify","json","parse","data","accessTokenInfo","accessToken","set","error","message","fetchManifest","bundledPatches","channel","baseFolder","registryPath","normalizedBaseUrl","slice","genLinkPath","genLinkUrl","encodeURIComponent","linkRes","Authorization","linkJson","registryUrl","registryRes","respInfo","status","registry","appGroup","apps","appVersion","flavorGroup","flavors","toLowerCase","patches","length","filter","p","platform","OS","console","warn","getUpdateFileUrl","filename","useMinio","remotePath","downloadPath","getAssetUrl","hash","ext"],"sourceRoot":"../../../../src","sources":["ota/storage/CustomStorage.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,OAAOC,mBAAmB,MAAM,wBAAwB;AAQxD;AACA,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAAqB,CAAC;;AAEhD;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,CAA+B;EACvDC,WAAWA,CAACC,MAAiB,EAAEC,GAAiD,EAAEC,QAAgB,EAAU;IAClH,OAAOF,MAAM,CAACG,YAAY,EAAEC,SAAS,GAAGH,GAAG,CAAC,IAAIC,QAAQ;EAC1D;EAEA,MAAcG,cAAcA,CAACL,MAAiB,EAAmB;IAC/D,IAAI,CAACA,MAAM,CAACG,YAAY,EAAE;MACxB,MAAM,IAAIG,KAAK,CAAC,oCAAoC,CAAC;IACvD;IAEA,MAAM;MAAEC,OAAO;MAAEC,QAAQ;MAAEC;IAAS,CAAC,GAAGT,MAAM,CAACG,YAAY;IAC3D,MAAMO,QAAQ,GAAG,GAAGH,OAAO,IAAIC,QAAQ,EAAE;IACzC,MAAMG,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC,CAAC;IAEtB,MAAME,MAAM,GAAGjB,UAAU,CAACkB,GAAG,CAACJ,QAAQ,CAAC;IACvC,IAAIG,MAAM,IAAIF,GAAG,GAAGE,MAAM,CAACE,SAAS,GAAG,KAAK,EAAE;MAC5C,OAAOF,MAAM,CAACG,KAAK;IACrB;IAEA,MAAMC,SAAS,GAAG,IAAI,CAAClB,WAAW,CAACC,MAAM,EAAE,OAAO,EAAE,qBAAqB,CAAC;IAC1E,MAAMkB,QAAQ,GAAGX,OAAO,CAACY,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAGZ,OAAO,GAAGU,SAAS,EAAE,GAAG,GAAGV,OAAO,IAAIU,SAAS,EAAE;IAE7F,IAAI;MACF,MAAMG,GAAG,GAAG,MAAMzB,mBAAmB,CAAC0B,KAAK,CACzC,MAAM,EACNH,QAAQ,EACR;QAAE,cAAc,EAAE;MAAkC,CAAC,EACrDI,IAAI,CAACC,SAAS,CAAC;QAAEf,QAAQ;QAAEC;MAAS,CAAC,CACvC,CAAC;MAED,MAAMe,IAAI,GAAGF,IAAI,CAACG,KAAK,CAACL,GAAG,CAACM,IAAI,CAAC;MACjC,MAAMV,KAAK,GAAGQ,IAAI,CAACE,IAAI,EAAEC,eAAe,EAAEC,WAAW;MAErD,IAAI,CAACZ,KAAK,EAAE,MAAM,IAAIV,KAAK,CAAC,+BAA+B,CAAC;MAE5DV,UAAU,CAACiC,GAAG,CAACnB,QAAQ,EAAE;QAAEM,KAAK;QAAED,SAAS,EAAEJ,GAAG,GAAG;MAAQ,CAAC,CAAC,CAAC,CAAC;MAC/D,OAAOK,KAAK;IACd,CAAC,CAAC,OAAOc,KAAK,EAAE;MACd,MAAM,IAAIxB,KAAK,CAAC,0BAA2BwB,KAAK,CAAWC,OAAO,EAAE,CAAC;IACvE;EACF;EAEA,MAAMC,aAAaA,CAAChC,MAAiB,EAAuB;IAC1D,IAAI,CAACA,MAAM,CAACG,YAAY,EAAE,OAAOH,MAAM,CAACiC,cAAc,IAAI,EAAE;IAE5D,MAAM;MAAE1B,OAAO;MAAE2B,OAAO;MAAEC,UAAU,GAAG;IAAU,CAAC,GAAGnC,MAAM,CAACG,YAAY;IACxE,MAAMiC,YAAY,GAAG,GAAGD,UAAU,oBAAoB;IAEtD,IAAI;MACF,MAAMnB,KAAK,GAAG,MAAM,IAAI,CAACX,cAAc,CAACL,MAAM,CAAC;MAC/C,MAAMqC,iBAAiB,GAAG9B,OAAO,CAACY,QAAQ,CAAC,GAAG,CAAC,GAAGZ,OAAO,CAAC+B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG/B,OAAO;MAChF,MAAMgC,WAAW,GAAG,IAAI,CAACxC,WAAW,CAACC,MAAM,EAAE,iBAAiB,EAAE,6BAA6B,CAAC;MAC9F,MAAMwC,UAAU,GAAG,GAAGH,iBAAiB,IAAIE,WAAW,aAAaE,kBAAkB,CAACL,YAAY,CAAC,EAAE;MAErG,MAAMM,OAAO,GAAG,MAAM/C,mBAAmB,CAAC0B,KAAK,CAAC,KAAK,EAAEmB,UAAU,EAAE;QACjEG,aAAa,EAAE,UAAU3B,KAAK;MAChC,CAAC,CAAC;MACF,MAAM4B,QAAQ,GAAGtB,IAAI,CAACG,KAAK,CAACiB,OAAO,CAAChB,IAAI,CAAC;MACzC,MAAMmB,WAAW,GAAGD,QAAQ,CAAClB,IAAI;MACjC,IAAI,CAACmB,WAAW,EAAE,MAAM,IAAIvC,KAAK,CAAC,2CAA2C,CAAC;MAE9E,MAAMwC,WAAW,GAAG,MAAMnD,mBAAmB,CAAC0B,KAAK,CAAC,KAAK,EAAEwB,WAAW,CAAC;MACvE,IAAIC,WAAW,CAACC,QAAQ,CAACC,MAAM,KAAK,GAAG,EAAE;QACvC,MAAM,IAAI1C,KAAK,CAAC,qCAAqCwC,WAAW,CAACC,QAAQ,CAACC,MAAM,EAAE,CAAC;MACrF;MAEA,MAAMC,QAAQ,GAAG3B,IAAI,CAACG,KAAK,CAACqB,WAAW,CAACpB,IAAI,CAAC;MAC7C,MAAMwB,QAAQ,GAAGD,QAAQ,EAAEE,IAAI,GAAGnD,MAAM,CAACoD,UAAU,CAAC;MACpD,MAAMC,WAAW,GAAGH,QAAQ,EAAEI,OAAO,GAAGpB,OAAO,CAACqB,WAAW,CAAC,CAAC,CAAC;MAE9D,IAAI,CAACF,WAAW,IAAI,CAACA,WAAW,CAACG,OAAO,EAAEC,MAAM,EAAE;QAChD,OAAOzD,MAAM,CAACiC,cAAc,IAAI,EAAE;MACpC;MAEA,OAAO,CAACoB,WAAW,CAACG,OAAO,IAAI,EAAE,EAAEE,MAAM,CAAEC,CAAW,IAAKA,CAAC,CAACC,QAAQ,KAAKlE,QAAQ,CAACmE,EAAE,CAAC;IACxF,CAAC,CAAC,OAAO/B,KAAK,EAAE;MACdgC,OAAO,CAACC,IAAI,CAAC,uCAAuC,EAAGjC,KAAK,CAAWC,OAAO,CAAC;MAC/E,OAAO/B,MAAM,CAACiC,cAAc,IAAI,EAAE;IACpC;EACF;EAEA,MAAM+B,gBAAgBA,CAACC,QAAgB,EAAEjE,MAAiB,EAAmB;IAC3E,IAAI,CAACA,MAAM,CAACG,YAAY,EAAE,MAAM,IAAIG,KAAK,CAAC,6BAA6B,CAAC;IAExE,MAAM;MAAEC,OAAO;MAAE4B,UAAU,GAAG,SAAS;MAAE+B;IAAS,CAAC,GAAGlE,MAAM,CAACG,YAAY;IACzE,MAAMkC,iBAAiB,GAAG9B,OAAO,CAACY,QAAQ,CAAC,GAAG,CAAC,GAAGZ,OAAO,CAAC+B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG/B,OAAO;IAChF,MAAM2B,OAAO,GAAGlC,MAAM,CAACG,YAAY,CAAC+B,OAAO,CAACqB,WAAW,CAAC,CAAC;IACzD,MAAMY,UAAU,GAAG,GAAGhC,UAAU,IAAInC,MAAM,CAACoD,UAAU,IAAIlB,OAAO,IAAI+B,QAAQ,EAAE;IAE9E,IAAIC,QAAQ,EAAE;MACZ,MAAMlD,KAAK,GAAG,MAAM,IAAI,CAACX,cAAc,CAACL,MAAM,CAAC;MAC/C,MAAMuC,WAAW,GAAG,IAAI,CAACxC,WAAW,CAACC,MAAM,EAAE,iBAAiB,EAAE,6BAA6B,CAAC;MAC9F,MAAMwC,UAAU,GAAG,GAAGH,iBAAiB,IAAIE,WAAW,aAAaE,kBAAkB,CAAC0B,UAAU,CAAC,EAAE;MACnG,MAAM/C,GAAG,GAAG,MAAMzB,mBAAmB,CAAC0B,KAAK,CAAC,KAAK,EAAEmB,UAAU,EAAE;QAC7DG,aAAa,EAAE,UAAU3B,KAAK;MAChC,CAAC,CAAC;MACF,MAAMQ,IAAI,GAAGF,IAAI,CAACG,KAAK,CAACL,GAAG,CAACM,IAAI,CAAC;MACjC,IAAI,CAACF,IAAI,CAACE,IAAI,EAAE,MAAM,IAAIpB,KAAK,CAAC,gCAAgC2D,QAAQ,EAAE,CAAC;MAC3E,OAAOzC,IAAI,CAACE,IAAI;IAClB;IAEA,MAAM0C,YAAY,GAAG,IAAI,CAACrE,WAAW,CAACC,MAAM,EAAE,cAAc,EAAE,0BAA0B,CAAC;IACzF,OAAO,GAAGqC,iBAAiB,IAAI+B,YAAY,aAAa3B,kBAAkB,CAAC0B,UAAU,CAAC,EAAE;EAC1F;EAEA,MAAME,WAAWA,CAACC,IAAY,EAAEC,GAAW,EAAEvE,MAAiB,EAAmB;IAC/E,IAAI,CAACA,MAAM,CAACG,YAAY,EAAE,OAAO,EAAE;IAEnC,MAAM;MAAEI,OAAO;MAAE4B,UAAU,GAAG,SAAS;MAAE+B;IAAS,CAAC,GAAGlE,MAAM,CAACG,YAAY;IACzE,MAAMkC,iBAAiB,GAAG9B,OAAO,CAACY,QAAQ,CAAC,GAAG,CAAC,GAAGZ,OAAO,CAAC+B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG/B,OAAO;IAChF,MAAM0D,QAAQ,GAAG,GAAGK,IAAI,IAAIC,GAAG,EAAE;IACjC,MAAMJ,UAAU,GAAG,GAAGhC,UAAU,WAAW8B,QAAQ,EAAE;IAErD,IAAIC,QAAQ,EAAE;MACZ,MAAMlD,KAAK,GAAG,MAAM,IAAI,CAACX,cAAc,CAACL,MAAM,CAAC;MAC/C,MAAMuC,WAAW,GAAG,IAAI,CAACxC,WAAW,CAACC,MAAM,EAAE,iBAAiB,EAAE,6BAA6B,CAAC;MAC9F,MAAMwC,UAAU,GAAG,GAAGH,iBAAiB,IAAIE,WAAW,aAAaE,kBAAkB,CAAC0B,UAAU,CAAC,EAAE;MACnG,MAAM/C,GAAG,GAAG,MAAMzB,mBAAmB,CAAC0B,KAAK,CAAC,KAAK,EAAEmB,UAAU,EAAE;QAC7DG,aAAa,EAAE,UAAU3B,KAAK;MAChC,CAAC,CAAC;MACF,MAAMQ,IAAI,GAAGF,IAAI,CAACG,KAAK,CAACL,GAAG,CAACM,IAAI,CAAC;MACjC,OAAOF,IAAI,CAACE,IAAI,IAAI,EAAE;IACxB;IAEA,MAAM0C,YAAY,GAAG,IAAI,CAACrE,WAAW,CAACC,MAAM,EAAE,cAAc,EAAE,0BAA0B,CAAC;IACzF,OAAO,GAAGqC,iBAAiB,IAAI+B,YAAY,aAAa3B,kBAAkB,CAAC0B,UAAU,CAAC,EAAE;EAC1F;AACF","ignoreList":[]}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * GitHub Releases Storage Provider
5
+ *
6
+ * Reads the OTA registry from a GitHub Release asset and resolves download URLs
7
+ * directly from the release. Supports both public and token-authenticated repos.
8
+ *
9
+ * Registry format:
10
+ * - Expected at: `https://raw.githubusercontent.com/{owner}/{repo}/{tag}/{registryPath}`
11
+ * - Asset download: `https://github.com/{owner}/{repo}/releases/download/{tag}/{filename}`
12
+ */
13
+
14
+ import { Platform } from 'react-native';
15
+ import ReactNativeBlobUtil from 'react-native-blob-util';
16
+ export class GitHubReleaseStorageProvider {
17
+ getRawRegistryUrl(config) {
18
+ const {
19
+ repo,
20
+ tag,
21
+ registryPath = 'ota_registry.json'
22
+ } = config.githubRelease;
23
+ return `https://raw.githubusercontent.com/${repo}/${tag}/${registryPath}`;
24
+ }
25
+ getAssetDownloadUrl(config, filename) {
26
+ const {
27
+ repo,
28
+ tag
29
+ } = config.githubRelease;
30
+ return `https://github.com/${repo}/releases/download/${tag}/${filename}`;
31
+ }
32
+ authHeaders(token) {
33
+ if (!token) return {};
34
+ return {
35
+ Authorization: `Bearer ${token}`
36
+ };
37
+ }
38
+ async fetchManifest(config) {
39
+ if (!config.githubRelease) return config.bundledPatches || [];
40
+ const {
41
+ token
42
+ } = config.githubRelease;
43
+ const url = this.getRawRegistryUrl(config);
44
+ try {
45
+ const res = await ReactNativeBlobUtil.fetch('GET', url, this.authHeaders(token));
46
+ if (res.respInfo.status !== 200) {
47
+ throw new Error(`Registry fetch failed with status ${res.respInfo.status}`);
48
+ }
49
+ const registry = typeof res.data === 'string' ? JSON.parse(res.data) : JSON.parse(JSON.stringify(res.data));
50
+
51
+ // Support both flat array (legacy) and structured format
52
+ if (Array.isArray(registry)) {
53
+ return registry.filter(p => !p.platform || p.platform === Platform.OS);
54
+ }
55
+
56
+ // Structured: apps["1.0.0"].channels["production"].patches[]
57
+ const appGroup = registry?.apps?.[config.appVersion];
58
+ const channelGroup = appGroup?.channels?.[config.githubRelease.repo] // use repo as channel fallback
59
+ ?? appGroup?.channels?.production ?? appGroup?.flavors?.production;
60
+ if (!channelGroup?.patches?.length) {
61
+ return config.bundledPatches || [];
62
+ }
63
+ return channelGroup.patches.filter(p => !p.platform || p.platform === Platform.OS);
64
+ } catch (error) {
65
+ console.warn('[GitHubStorage] Manifest fetch error:', error.message);
66
+ return config.bundledPatches || [];
67
+ }
68
+ }
69
+ async getUpdateFileUrl(filename, config) {
70
+ if (!config.githubRelease) throw new Error('githubRelease config missing');
71
+ return this.getAssetDownloadUrl(config, filename);
72
+ }
73
+ async getAssetUrl(hash, ext, config) {
74
+ if (!config.githubRelease) return '';
75
+ const {
76
+ assetBaseUrl,
77
+ tag,
78
+ repo
79
+ } = config.githubRelease;
80
+
81
+ // If a custom CDN/base is provided, use it
82
+ if (assetBaseUrl) {
83
+ return `${assetBaseUrl}/${hash}.${ext}`;
84
+ }
85
+
86
+ // Fallback: serve from GitHub raw with optional token
87
+ return `https://raw.githubusercontent.com/${repo}/${tag}/assets/${hash}.${ext}`;
88
+ }
89
+ }
90
+ //# sourceMappingURL=GitHubReleaseStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","ReactNativeBlobUtil","GitHubReleaseStorageProvider","getRawRegistryUrl","config","repo","tag","registryPath","githubRelease","getAssetDownloadUrl","filename","authHeaders","token","Authorization","fetchManifest","bundledPatches","url","res","fetch","respInfo","status","Error","registry","data","JSON","parse","stringify","Array","isArray","filter","p","platform","OS","appGroup","apps","appVersion","channelGroup","channels","production","flavors","patches","length","error","console","warn","message","getUpdateFileUrl","getAssetUrl","hash","ext","assetBaseUrl"],"sourceRoot":"../../../../src","sources":["ota/storage/GitHubReleaseStorage.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * OTA Data Types
5
+ */
6
+
7
+ export let OtaUpdateMode = /*#__PURE__*/function (OtaUpdateMode) {
8
+ OtaUpdateMode["MANUAL"] = "MANUAL";
9
+ OtaUpdateMode["ON_APP_START"] = "ON_APP_START";
10
+ OtaUpdateMode["ON_APP_FOREGROUND"] = "ON_APP_FOREGROUND";
11
+ OtaUpdateMode["BACKGROUND_DOWNLOAD"] = "BACKGROUND_DOWNLOAD";
12
+ return OtaUpdateMode;
13
+ }({});
14
+ export let OtaStorageType = /*#__PURE__*/function (OtaStorageType) {
15
+ /** Custom storage server (primary) */
16
+ OtaStorageType["CUSTOM"] = "CUSTOM";
17
+ /** GitHub Releases — public or token-authenticated */
18
+ OtaStorageType["GITHUB"] = "GITHUB";
19
+ return OtaStorageType;
20
+ }({});
21
+
22
+ /**
23
+ * A single content-addressed asset from the OTA asset store.
24
+ */
25
+
26
+ export let OtaStatus = /*#__PURE__*/function (OtaStatus) {
27
+ OtaStatus["IDLE"] = "IDLE";
28
+ OtaStatus["CHECKING"] = "CHECKING";
29
+ OtaStatus["UPDATE_AVAILABLE"] = "UPDATE_AVAILABLE";
30
+ OtaStatus["UP_TO_DATE"] = "UP_TO_DATE";
31
+ OtaStatus["DOWNLOADING"] = "DOWNLOADING";
32
+ OtaStatus["APPLYING"] = "APPLYING";
33
+ OtaStatus["SYNCING_ASSETS"] = "SYNCING_ASSETS";
34
+ OtaStatus["SUCCESS"] = "SUCCESS";
35
+ OtaStatus["ERROR"] = "ERROR";
36
+ return OtaStatus;
37
+ }({});
38
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OtaUpdateMode","OtaStorageType","OtaStatus"],"sourceRoot":"../../../src","sources":["ota/types.ts"],"mappings":";;AAAA;AACA;AACA;;AAqBA,WAAYA,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAOzB,WAAYC,cAAc,0BAAdA,cAAc;EACtB;EADQA,cAAc;EAGtB;EAHQA,cAAc;EAAA,OAAdA,cAAc;AAAA;;AA0C1B;AACA;AACA;;AA+GA,WAAYC,SAAS,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":[]}
@@ -0,0 +1,39 @@
1
+ import type { TurboModule } from 'react-native';
2
+ export interface Spec extends TurboModule {
3
+ /**
4
+ * Apply a bspatch file to an old bundle to generate a new bundle
5
+ * @param oldPath The absolute path to the existing bundle file
6
+ * @param newPath The absolute path where the new bundle should be saved
7
+ * @param patchPath The absolute path to the patch file
8
+ * @param callback Promise-like callback receiving true if successful, or false on error.
9
+ */
10
+ applyPatch(oldPath: string, newPath: string, patchPath: string): Promise<boolean>;
11
+ /**
12
+ * Unzip a file to a target directory
13
+ * @param source The absolute path to the zip file
14
+ * @param targetDir The absolute path to the destination directory
15
+ */
16
+ unzip(source: string, targetDir: string): Promise<boolean>;
17
+ extractBundleFromAssets(assetName: string, destPath: string): Promise<boolean>;
18
+ /**
19
+ * Decompress a gzip file to the destination path.
20
+ * @param sourcePath Absolute path to the .gz file
21
+ * @param destPath Absolute path to write the decompressed output
22
+ */
23
+ decompressGzip(sourcePath: string, destPath: string): Promise<boolean>;
24
+ /**
25
+ * Mark the current boot as healthy to prevent rollback
26
+ */
27
+ markAsHealthy(): void;
28
+ /**
29
+ * Reload the React Native JS bundle
30
+ */
31
+ reloadBundle(): void;
32
+ /**
33
+ * Log a message to the native console (NSLog on iOS)
34
+ */
35
+ logNative(message: string): void;
36
+ }
37
+ declare const _default: Spec;
38
+ export default _default;
39
+ //# sourceMappingURL=NativeBsPatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeBsPatch.d.ts","sourceRoot":"","sources":["../../src/NativeBsPatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC;;;;;;OAMG;IACH,UAAU,CACR,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,uBAAuB,CACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE;;OAEG;IACH,aAAa,IAAI,IAAI,CAAC;IAEtB;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;;AAED,wBAAiE"}
@@ -0,0 +1,15 @@
1
+ export declare function applyPatch(oldBundlePath: string, newBundlePath: string, patchPath: string): Promise<boolean>;
2
+ export declare function markAsHealthy(): void;
3
+ export declare function reloadBundle(): void;
4
+ export * from './ota/otaLogger';
5
+ export * from './ota/OtaProvider';
6
+ export * from './ota/types';
7
+ export { initOtaAssetResolver, resetOtaAssetResolver } from './ota/otaAssetResolver';
8
+ export { GitHubReleaseStorageProvider } from './ota/storage/GitHubReleaseStorage';
9
+ declare const _default: {
10
+ applyPatch: typeof applyPatch;
11
+ reloadBundle: typeof reloadBundle;
12
+ markAsHealthy: typeof markAsHealthy;
13
+ };
14
+ export default _default;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CACxB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;;;;;;AAElF,wBAIE"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { OtaConfig, OtaState } from './types';
3
+ export declare function OtaProvider({ children, config, loadingView, useLoadingView, }: {
4
+ children: React.ReactNode;
5
+ config: OtaConfig;
6
+ loadingView?: React.ReactNode;
7
+ useLoadingView?: boolean;
8
+ }): React.JSX.Element;
9
+ export declare function useOta(): OtaState;
10
+ //# sourceMappingURL=OtaProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OtaProvider.d.ts","sourceRoot":"","sources":["../../../src/ota/OtaProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAgBf,OAAO,EACL,SAAS,EAGT,QAAQ,EAGT,MAAM,SAAS,CAAC;AAIjB,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,MAAM,EACN,WAAW,EACX,cAAqB,GACtB,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,qBAuUA;AAED,wBAAgB,MAAM,aAMrB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Initializes the OTA asset resolver for a specific version.
3
+ * Loads the asset manifest and prepares an O(1) lookup map for intercepted image requests.
4
+ *
5
+ * @param version - The OTA version number to load assets from.
6
+ */
7
+ export declare const initOtaAssetResolver: (version: number) => Promise<void>;
8
+ /**
9
+ * Resets the OTA asset resolver state.
10
+ * Call this before a major app upgrade or when unmounting the OTA context.
11
+ * Clears cached manifest data and resets the transformer patch guard so
12
+ * `initOtaAssetResolver` can re-patch cleanly on next call.
13
+ */
14
+ export declare const resetOtaAssetResolver: () => void;
15
+ //# sourceMappingURL=otaAssetResolver.d.ts.map