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":["_reactNative","require","_reactNativeBlobUtil","_interopRequireDefault","_cryptoJs","_NativeBsPatch","_otaLogger","_otaMetadata","_CustomStorage","_GitHubReleaseStorage","_types","e","__esModule","default","OTA_DIR","ReactNativeBlobUtil","fs","dirs","DocumentDir","DEFAULT_STORAGE","CustomStorageProvider","GITHUB_STORAGE","GitHubReleaseStorageProvider","getStorage","config","storage","storageType","OtaStorageType","GITHUB","semverGte","a","b","pa","split","map","Number","pb","i","va","vb","exports","verifyHash","path","expectedHash","hash","toLowerCase","verifySignature","filePath","signature","publicKey","fileData","readFile","fileWords","CryptoJS","enc","Base64","parse","keyWords","signatureWords","hmac","HmacSHA256","isValid","toString","__DEV__","console","warn","error","decompressGzip","endsWith","decompressedPath","replace","success","NativeBsPatch","Error","downloadWithRetry","url","destPath","onProgress","headers","retryLimit","network","retry","timeout","timeoutMs","taskRef","task","fileCache","followRedirect","fetch","progress","received","total","percent","Math","floor","cancel","delay","pow","Promise","resolve","setTimeout","fetchOtaManifest","fetchManifest","message","bundledPatches","ASSET_STORE_DIR","downloadAndSyncAssets","assetManifestUrl","version","log","onStatus","OtaStatus","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","OtaEvent","DOWNLOAD_SUCCESS","initialWorkers","min","workers","Array","fill","all","getLocalAssetPath","getLocalPatchPath","patch","docDir","id","applyOtaPatchInternal","createOtaLogger","onEvent","ensureOtaDir","totalStart","Date","now","finalBundlePath","getBundlePath","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","loadMetadata","oldBundlePath","currentVersion","bundleFilename","Platform","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","registerNewVersion","saveMetadata","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,64 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createOtaLogger = exports.OtaEvent = void 0;
7
+ var _NativeBsPatch = _interopRequireDefault(require("../NativeBsPatch"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /**
10
+ * OTA Structured Event Logger
11
+ *
12
+ * Provides a centralized logging system for all OTA operations.
13
+ * Events can be forwarded to external analytics via the `onEvent` callback in OtaConfig.
14
+ */
15
+ let OtaEvent = exports.OtaEvent = /*#__PURE__*/function (OtaEvent) {
16
+ OtaEvent["CHECK_UPDATE"] = "check_update";
17
+ OtaEvent["DOWNLOAD_START"] = "download_start";
18
+ OtaEvent["DOWNLOAD_SUCCESS"] = "download_success";
19
+ OtaEvent["DOWNLOAD_FAIL"] = "download_fail";
20
+ OtaEvent["PATCH_START"] = "patch_start";
21
+ OtaEvent["PATCH_SUCCESS"] = "patch_success";
22
+ OtaEvent["PATCH_FAIL"] = "patch_fail";
23
+ OtaEvent["HASH_VERIFY_START"] = "hash_verify_start";
24
+ OtaEvent["HASH_VERIFY_SUCCESS"] = "hash_verify_success";
25
+ OtaEvent["HASH_MISMATCH"] = "hash_mismatch";
26
+ OtaEvent["ROLLBACK"] = "rollback";
27
+ OtaEvent["FALLBACK_FULL_BUNDLE"] = "fallback_full_bundle";
28
+ OtaEvent["MARK_HEALTHY"] = "mark_healthy";
29
+ OtaEvent["RESET_FACTORY"] = "reset_factory";
30
+ OtaEvent["VERSION_INCOMPATIBLE"] = "version_incompatible";
31
+ OtaEvent["SIGNATURE_INVALID"] = "signature_invalid";
32
+ OtaEvent["DECOMPRESS_START"] = "decompress_start";
33
+ OtaEvent["DECOMPRESS_SUCCESS"] = "decompress_success";
34
+ return OtaEvent;
35
+ }({});
36
+ /**
37
+ * Creates an OTA logger instance bound to an optional external callback.
38
+ */
39
+ const createOtaLogger = onEvent => {
40
+ const emit = (event, details) => {
41
+ const entry = {
42
+ event,
43
+ timestamp: Date.now(),
44
+ ...details
45
+ };
46
+
47
+ // Always log to console for debugging
48
+ const logStr = `[OTA:${event}] ${JSON.stringify(entry)}`;
49
+ console.log(logStr);
50
+
51
+ // Also log to native for physical device debugging (visible in Xcode)
52
+ if (_NativeBsPatch.default && _NativeBsPatch.default.logNative) {
53
+ _NativeBsPatch.default.logNative(logStr);
54
+ }
55
+
56
+ // Forward to external analytics if configured
57
+ onEvent?.(entry);
58
+ };
59
+ return {
60
+ emit
61
+ };
62
+ };
63
+ exports.createOtaLogger = createOtaLogger;
64
+ //# sourceMappingURL=otaLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_NativeBsPatch","_interopRequireDefault","require","e","__esModule","default","OtaEvent","exports","createOtaLogger","onEvent","emit","event","details","entry","timestamp","Date","now","logStr","JSON","stringify","console","log","NativeBsPatch","logNative"],"sourceRoot":"../../../src","sources":["ota/otaLogger.ts"],"mappings":";;;;;;AAOA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6C,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAP7C;AACA;AACA;AACA;AACA;AACA;AALA,IASYG,QAAQ,GAAAC,OAAA,CAAAD,QAAA,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;AACO,MAAME,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,IAAIK,sBAAa,IAAIA,sBAAa,CAACC,SAAS,EAAE;MAC5CD,sBAAa,CAACC,SAAS,CAACN,MAAM,CAAC;IACjC;;IAEA;IACAR,OAAO,GAAGI,KAAK,CAAC;EAClB,CAAC;EAED,OAAO;IAAEH;EAAK,CAAC;AACjB,CAAC;AAACH,OAAA,CAAAC,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.saveMetadata = exports.registerNewVersion = exports.markHealthy = exports.loadMetadata = exports.getBundlePath = exports.ensureOtaDir = exports.MAX_VERSION_HISTORY = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _reactNativeBlobUtil = _interopRequireDefault(require("react-native-blob-util"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const OTA_DIR = `${_reactNativeBlobUtil.default.fs.dirs.DocumentDir}/ota`;
11
+ const METADATA_PATH = `${OTA_DIR}/metadata.json`;
12
+
13
+ /** Promise-based lock to prevent concurrent metadata writes (double-tap guard). */
14
+ let saveLock = Promise.resolve();
15
+
16
+ /**
17
+ * Ensures the OTA root directory exists.
18
+ */
19
+ const ensureOtaDir = async () => {
20
+ if (!(await _reactNativeBlobUtil.default.fs.exists(OTA_DIR))) {
21
+ await _reactNativeBlobUtil.default.fs.mkdir(OTA_DIR);
22
+ }
23
+ };
24
+
25
+ /**
26
+ * Loads the current OTA metadata from the local filesystem.
27
+ *
28
+ * @param defaultVersion - The version to return if no metadata exists (usually baseAppVersion).
29
+ * @returns The persisted metadata or a default if loading fails.
30
+ */
31
+ exports.ensureOtaDir = ensureOtaDir;
32
+ const loadMetadata = async defaultVersion => {
33
+ try {
34
+ if (await _reactNativeBlobUtil.default.fs.exists(METADATA_PATH)) {
35
+ const content = await _reactNativeBlobUtil.default.fs.readFile(METADATA_PATH, 'utf8');
36
+ return JSON.parse(content);
37
+ }
38
+ } catch (e) {
39
+ console.warn('[otaMetadata] Failed to load metadata:', e);
40
+ }
41
+ return {
42
+ currentVersion: defaultVersion,
43
+ previousVersions: [],
44
+ rollbackCount: 0,
45
+ lastLaunchSuccessful: true
46
+ };
47
+ };
48
+
49
+ /**
50
+ * Persists OTA metadata to the local filesystem.
51
+ *
52
+ * @param metadata - The metadata object to save.
53
+ */
54
+ exports.loadMetadata = loadMetadata;
55
+ const saveMetadata = async metadata => {
56
+ // Wait for any in-flight save to complete before starting our own
57
+ const prevLock = saveLock;
58
+ let settleFn;
59
+ saveLock = new Promise(resolve => {
60
+ settleFn = resolve;
61
+ });
62
+ try {
63
+ await prevLock;
64
+ await ensureOtaDir();
65
+ await _reactNativeBlobUtil.default.fs.writeFile(METADATA_PATH, JSON.stringify(metadata, null, 2), 'utf8');
66
+ } catch (e) {
67
+ console.error('[otaMetadata] Failed to save metadata:', e);
68
+ throw new Error(`Failed to save metadata: ${e.message}`);
69
+ } finally {
70
+ settleFn();
71
+ }
72
+ };
73
+
74
+ /** Maximum number of previous versions kept in history for rollback. */
75
+ exports.saveMetadata = saveMetadata;
76
+ const MAX_VERSION_HISTORY = exports.MAX_VERSION_HISTORY = 3;
77
+
78
+ /**
79
+ * Rotates OTA versions for auditing and rollback capabilities.
80
+ * Pushes the current version to the history and limits history to MAX_VERSION_HISTORY.
81
+ *
82
+ * @param metadata - Current metadata object.
83
+ * @param newVersion - The newly applied OTA version.
84
+ * @returns Updated metadata object.
85
+ */
86
+ const registerNewVersion = (metadata, newVersion) => {
87
+ const versions = [metadata.currentVersion, ...(metadata.previousVersions || [])];
88
+ // Keep internal history unique and capped
89
+ const uniquePrevious = Array.from(new Set(versions)).filter(v => v !== newVersion).slice(0, MAX_VERSION_HISTORY);
90
+ return {
91
+ ...metadata,
92
+ currentVersion: newVersion,
93
+ previousVersions: uniquePrevious,
94
+ rollbackCount: 0,
95
+ lastLaunchSuccessful: true // Native layer will set to false on next boot until JS marks healthy
96
+ };
97
+ };
98
+
99
+ /**
100
+ * Marks the current session as healthy, indicating a successful boot.
101
+ * This prevents the native bridge from rolling back the version on the next launch.
102
+ *
103
+ * @param defaultVersion - Base version for metadata lookup fallback.
104
+ * @returns The updated metadata.
105
+ */
106
+ exports.registerNewVersion = registerNewVersion;
107
+ const markHealthy = async defaultVersion => {
108
+ const metadata = await loadMetadata(defaultVersion);
109
+ const updated = {
110
+ ...metadata,
111
+ lastLaunchSuccessful: true,
112
+ rollbackCount: 0
113
+ };
114
+ await saveMetadata(updated);
115
+ return updated;
116
+ };
117
+
118
+ /**
119
+ * Resolves the absolute path to the JS bundle for a specific version.
120
+ *
121
+ * @param version - The OTA version number.
122
+ * @param baseVersion - The app's base version (bundled).
123
+ * @returns Absolute path to the bundle or null if it refers to the base bundle.
124
+ */
125
+ exports.markHealthy = markHealthy;
126
+ const getBundlePath = (version, baseVersion) => {
127
+ if (version === baseVersion) {
128
+ return null;
129
+ }
130
+ const filename = _reactNative.Platform.select({
131
+ android: 'index.android.bundle',
132
+ ios: 'main.jsbundle',
133
+ default: 'index.android.bundle'
134
+ });
135
+ return `${OTA_DIR}/v${version}/${filename}`;
136
+ };
137
+ exports.getBundlePath = getBundlePath;
138
+ //# sourceMappingURL=otaMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_reactNativeBlobUtil","_interopRequireDefault","e","__esModule","default","OTA_DIR","ReactNativeBlobUtil","fs","dirs","DocumentDir","METADATA_PATH","saveLock","Promise","resolve","ensureOtaDir","exists","mkdir","exports","loadMetadata","defaultVersion","content","readFile","JSON","parse","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","Platform","select","android","ios"],"sourceRoot":"../../../src","sources":["ota/otaMetadata.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CustomStorageProvider = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _reactNativeBlobUtil = _interopRequireDefault(require("react-native-blob-util"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ /** Cache tokens per server endpoint so switching configs invalidates stale tokens. */
11
+ const tokenCache = new Map();
12
+
13
+ /**
14
+ * Implementation for the custom MinIO-based storage server.
15
+ */
16
+ class CustomStorageProvider {
17
+ getEndpoint(config, key, fallback) {
18
+ return config.customServer?.endpoints?.[key] ?? fallback;
19
+ }
20
+ async getAccessToken(config) {
21
+ if (!config.customServer) {
22
+ throw new Error('customServer configuration missing');
23
+ }
24
+ const {
25
+ baseUrl,
26
+ username,
27
+ password
28
+ } = config.customServer;
29
+ const cacheKey = `${baseUrl}|${username}`;
30
+ const now = Date.now();
31
+ const cached = tokenCache.get(cacheKey);
32
+ if (cached && now < cached.expiresAt - 30000) {
33
+ return cached.token;
34
+ }
35
+ const loginPath = this.getEndpoint(config, 'login', 'public/authen/login');
36
+ const loginUrl = baseUrl.endsWith('/') ? `${baseUrl}${loginPath}` : `${baseUrl}/${loginPath}`;
37
+ try {
38
+ const res = await _reactNativeBlobUtil.default.fetch('POST', loginUrl, {
39
+ 'Content-Type': 'application/json; charset=utf-8'
40
+ }, JSON.stringify({
41
+ username,
42
+ password
43
+ }));
44
+ const json = JSON.parse(res.data);
45
+ const token = json.data?.accessTokenInfo?.accessToken;
46
+ if (!token) throw new Error('Login failed: token not found');
47
+ tokenCache.set(cacheKey, {
48
+ token,
49
+ expiresAt: now + 3600000
50
+ }); // 1 hour
51
+ return token;
52
+ } catch (error) {
53
+ throw new Error(`Authentication failed: ${error.message}`);
54
+ }
55
+ }
56
+ async fetchManifest(config) {
57
+ if (!config.customServer) return config.bundledPatches || [];
58
+ const {
59
+ baseUrl,
60
+ channel,
61
+ baseFolder = 'bspatch'
62
+ } = config.customServer;
63
+ const registryPath = `${baseFolder}/ota_registry.json`;
64
+ try {
65
+ const token = await this.getAccessToken(config);
66
+ const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
67
+ const genLinkPath = this.getEndpoint(config, 'genDownloadLink', 'api/minio/gen-download-link');
68
+ const genLinkUrl = `${normalizedBaseUrl}/${genLinkPath}?pathFile=${encodeURIComponent(registryPath)}`;
69
+ const linkRes = await _reactNativeBlobUtil.default.fetch('GET', genLinkUrl, {
70
+ Authorization: `Bearer ${token}`
71
+ });
72
+ const linkJson = JSON.parse(linkRes.data);
73
+ const registryUrl = linkJson.data;
74
+ if (!registryUrl) throw new Error('Failed to generate registry download link');
75
+ const registryRes = await _reactNativeBlobUtil.default.fetch('GET', registryUrl);
76
+ if (registryRes.respInfo.status !== 200) {
77
+ throw new Error(`Registry fetch failed with status ${registryRes.respInfo.status}`);
78
+ }
79
+ const registry = JSON.parse(registryRes.data);
80
+ const appGroup = registry?.apps?.[config.appVersion];
81
+ const flavorGroup = appGroup?.flavors?.[channel.toLowerCase()];
82
+ if (!flavorGroup || !flavorGroup.patches?.length) {
83
+ return config.bundledPatches || [];
84
+ }
85
+ return (flavorGroup.patches || []).filter(p => p.platform === _reactNative.Platform.OS);
86
+ } catch (error) {
87
+ console.warn('[CustomStorage] Manifest fetch error:', error.message);
88
+ return config.bundledPatches || [];
89
+ }
90
+ }
91
+ async getUpdateFileUrl(filename, config) {
92
+ if (!config.customServer) throw new Error('customServer config missing');
93
+ const {
94
+ baseUrl,
95
+ baseFolder = 'bspatch',
96
+ useMinio
97
+ } = config.customServer;
98
+ const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
99
+ const channel = config.customServer.channel.toLowerCase();
100
+ const remotePath = `${baseFolder}/${config.appVersion}/${channel}/${filename}`;
101
+ if (useMinio) {
102
+ const token = await this.getAccessToken(config);
103
+ const genLinkPath = this.getEndpoint(config, 'genDownloadLink', 'api/minio/gen-download-link');
104
+ const genLinkUrl = `${normalizedBaseUrl}/${genLinkPath}?pathFile=${encodeURIComponent(remotePath)}`;
105
+ const res = await _reactNativeBlobUtil.default.fetch('GET', genLinkUrl, {
106
+ Authorization: `Bearer ${token}`
107
+ });
108
+ const json = JSON.parse(res.data);
109
+ if (!json.data) throw new Error(`Failed to generate link for: ${filename}`);
110
+ return json.data;
111
+ }
112
+ const downloadPath = this.getEndpoint(config, 'downloadFile', 'files/downloadStreamFile');
113
+ return `${normalizedBaseUrl}/${downloadPath}?filepath=${encodeURIComponent(remotePath)}`;
114
+ }
115
+ async getAssetUrl(hash, ext, config) {
116
+ if (!config.customServer) return '';
117
+ const {
118
+ baseUrl,
119
+ baseFolder = 'bspatch',
120
+ useMinio
121
+ } = config.customServer;
122
+ const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
123
+ const filename = `${hash}.${ext}`;
124
+ const remotePath = `${baseFolder}/assets/${filename}`;
125
+ if (useMinio) {
126
+ const token = await this.getAccessToken(config);
127
+ const genLinkPath = this.getEndpoint(config, 'genDownloadLink', 'api/minio/gen-download-link');
128
+ const genLinkUrl = `${normalizedBaseUrl}/${genLinkPath}?pathFile=${encodeURIComponent(remotePath)}`;
129
+ const res = await _reactNativeBlobUtil.default.fetch('GET', genLinkUrl, {
130
+ Authorization: `Bearer ${token}`
131
+ });
132
+ const json = JSON.parse(res.data);
133
+ return json.data || '';
134
+ }
135
+ const downloadPath = this.getEndpoint(config, 'downloadFile', 'files/downloadStreamFile');
136
+ return `${normalizedBaseUrl}/${downloadPath}?filepath=${encodeURIComponent(remotePath)}`;
137
+ }
138
+ }
139
+ exports.CustomStorageProvider = CustomStorageProvider;
140
+ //# sourceMappingURL=CustomStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_reactNativeBlobUtil","_interopRequireDefault","e","__esModule","default","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","ReactNativeBlobUtil","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","Platform","OS","console","warn","getUpdateFileUrl","filename","useMinio","remotePath","downloadPath","getAssetUrl","hash","ext","exports"],"sourceRoot":"../../../../src","sources":["ota/storage/CustomStorage.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.GitHubReleaseStorageProvider = void 0;
7
+ var _reactNative = require("react-native");
8
+ var _reactNativeBlobUtil = _interopRequireDefault(require("react-native-blob-util"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ /**
11
+ * GitHub Releases Storage Provider
12
+ *
13
+ * Reads the OTA registry from a GitHub Release asset and resolves download URLs
14
+ * directly from the release. Supports both public and token-authenticated repos.
15
+ *
16
+ * Registry format:
17
+ * - Expected at: `https://raw.githubusercontent.com/{owner}/{repo}/{tag}/{registryPath}`
18
+ * - Asset download: `https://github.com/{owner}/{repo}/releases/download/{tag}/{filename}`
19
+ */
20
+
21
+ class GitHubReleaseStorageProvider {
22
+ getRawRegistryUrl(config) {
23
+ const {
24
+ repo,
25
+ tag,
26
+ registryPath = 'ota_registry.json'
27
+ } = config.githubRelease;
28
+ return `https://raw.githubusercontent.com/${repo}/${tag}/${registryPath}`;
29
+ }
30
+ getAssetDownloadUrl(config, filename) {
31
+ const {
32
+ repo,
33
+ tag
34
+ } = config.githubRelease;
35
+ return `https://github.com/${repo}/releases/download/${tag}/${filename}`;
36
+ }
37
+ authHeaders(token) {
38
+ if (!token) return {};
39
+ return {
40
+ Authorization: `Bearer ${token}`
41
+ };
42
+ }
43
+ async fetchManifest(config) {
44
+ if (!config.githubRelease) return config.bundledPatches || [];
45
+ const {
46
+ token
47
+ } = config.githubRelease;
48
+ const url = this.getRawRegistryUrl(config);
49
+ try {
50
+ const res = await _reactNativeBlobUtil.default.fetch('GET', url, this.authHeaders(token));
51
+ if (res.respInfo.status !== 200) {
52
+ throw new Error(`Registry fetch failed with status ${res.respInfo.status}`);
53
+ }
54
+ const registry = typeof res.data === 'string' ? JSON.parse(res.data) : JSON.parse(JSON.stringify(res.data));
55
+
56
+ // Support both flat array (legacy) and structured format
57
+ if (Array.isArray(registry)) {
58
+ return registry.filter(p => !p.platform || p.platform === _reactNative.Platform.OS);
59
+ }
60
+
61
+ // Structured: apps["1.0.0"].channels["production"].patches[]
62
+ const appGroup = registry?.apps?.[config.appVersion];
63
+ const channelGroup = appGroup?.channels?.[config.githubRelease.repo] // use repo as channel fallback
64
+ ?? appGroup?.channels?.production ?? appGroup?.flavors?.production;
65
+ if (!channelGroup?.patches?.length) {
66
+ return config.bundledPatches || [];
67
+ }
68
+ return channelGroup.patches.filter(p => !p.platform || p.platform === _reactNative.Platform.OS);
69
+ } catch (error) {
70
+ console.warn('[GitHubStorage] Manifest fetch error:', error.message);
71
+ return config.bundledPatches || [];
72
+ }
73
+ }
74
+ async getUpdateFileUrl(filename, config) {
75
+ if (!config.githubRelease) throw new Error('githubRelease config missing');
76
+ return this.getAssetDownloadUrl(config, filename);
77
+ }
78
+ async getAssetUrl(hash, ext, config) {
79
+ if (!config.githubRelease) return '';
80
+ const {
81
+ assetBaseUrl,
82
+ tag,
83
+ repo
84
+ } = config.githubRelease;
85
+
86
+ // If a custom CDN/base is provided, use it
87
+ if (assetBaseUrl) {
88
+ return `${assetBaseUrl}/${hash}.${ext}`;
89
+ }
90
+
91
+ // Fallback: serve from GitHub raw with optional token
92
+ return `https://raw.githubusercontent.com/${repo}/${tag}/assets/${hash}.${ext}`;
93
+ }
94
+ }
95
+ exports.GitHubReleaseStorageProvider = GitHubReleaseStorageProvider;
96
+ //# sourceMappingURL=GitHubReleaseStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_reactNativeBlobUtil","_interopRequireDefault","e","__esModule","default","GitHubReleaseStorageProvider","getRawRegistryUrl","config","repo","tag","registryPath","githubRelease","getAssetDownloadUrl","filename","authHeaders","token","Authorization","fetchManifest","bundledPatches","url","res","ReactNativeBlobUtil","fetch","respInfo","status","Error","registry","data","JSON","parse","stringify","Array","isArray","filter","p","platform","Platform","OS","appGroup","apps","appVersion","channelGroup","channels","production","flavors","patches","length","error","console","warn","message","getUpdateFileUrl","getAssetUrl","hash","ext","assetBaseUrl","exports"],"sourceRoot":"../../../../src","sources":["ota/storage/GitHubReleaseStorage.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OtaUpdateMode = exports.OtaStorageType = exports.OtaStatus = void 0;
7
+ /**
8
+ * OTA Data Types
9
+ */
10
+ let OtaUpdateMode = exports.OtaUpdateMode = /*#__PURE__*/function (OtaUpdateMode) {
11
+ OtaUpdateMode["MANUAL"] = "MANUAL";
12
+ OtaUpdateMode["ON_APP_START"] = "ON_APP_START";
13
+ OtaUpdateMode["ON_APP_FOREGROUND"] = "ON_APP_FOREGROUND";
14
+ OtaUpdateMode["BACKGROUND_DOWNLOAD"] = "BACKGROUND_DOWNLOAD";
15
+ return OtaUpdateMode;
16
+ }({});
17
+ let OtaStorageType = exports.OtaStorageType = /*#__PURE__*/function (OtaStorageType) {
18
+ /** Custom storage server (primary) */
19
+ OtaStorageType["CUSTOM"] = "CUSTOM";
20
+ /** GitHub Releases — public or token-authenticated */
21
+ OtaStorageType["GITHUB"] = "GITHUB";
22
+ return OtaStorageType;
23
+ }({});
24
+ /**
25
+ * A single content-addressed asset from the OTA asset store.
26
+ */
27
+ let OtaStatus = exports.OtaStatus = /*#__PURE__*/function (OtaStatus) {
28
+ OtaStatus["IDLE"] = "IDLE";
29
+ OtaStatus["CHECKING"] = "CHECKING";
30
+ OtaStatus["UPDATE_AVAILABLE"] = "UPDATE_AVAILABLE";
31
+ OtaStatus["UP_TO_DATE"] = "UP_TO_DATE";
32
+ OtaStatus["DOWNLOADING"] = "DOWNLOADING";
33
+ OtaStatus["APPLYING"] = "APPLYING";
34
+ OtaStatus["SYNCING_ASSETS"] = "SYNCING_ASSETS";
35
+ OtaStatus["SUCCESS"] = "SUCCESS";
36
+ OtaStatus["ERROR"] = "ERROR";
37
+ return OtaStatus;
38
+ }({});
39
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["OtaUpdateMode","exports","OtaStorageType","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;AAAA,IAObE,cAAc,GAAAD,OAAA,CAAAC,cAAA,0BAAdA,cAAc;EACtB;EADQA,cAAc;EAGtB;EAHQA,cAAc;EAAA,OAAdA,cAAc;AAAA;AA0C1B;AACA;AACA;AAFA,IAiHYC,SAAS,GAAAF,OAAA,CAAAE,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":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ export default TurboModuleRegistry.getEnforcing('BsPatch');
5
+ //# sourceMappingURL=NativeBsPatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeBsPatch.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAkDlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=crypto-js.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["crypto-js.d.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import NativeBsPatch from './NativeBsPatch';
4
+ export function applyPatch(oldBundlePath, newBundlePath, patchPath) {
5
+ return NativeBsPatch.applyPatch(oldBundlePath, newBundlePath, patchPath);
6
+ }
7
+ export function markAsHealthy() {
8
+ return NativeBsPatch.markAsHealthy();
9
+ }
10
+ export function reloadBundle() {
11
+ return NativeBsPatch.reloadBundle();
12
+ }
13
+ export * from './ota/otaLogger';
14
+ export * from './ota/OtaProvider';
15
+ export * from './ota/types';
16
+ export { initOtaAssetResolver, resetOtaAssetResolver } from './ota/otaAssetResolver';
17
+ export { GitHubReleaseStorageProvider } from './ota/storage/GitHubReleaseStorage';
18
+ export default {
19
+ applyPatch,
20
+ reloadBundle,
21
+ markAsHealthy
22
+ };
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeBsPatch","applyPatch","oldBundlePath","newBundlePath","patchPath","markAsHealthy","reloadBundle","initOtaAssetResolver","resetOtaAssetResolver","GitHubReleaseStorageProvider"],"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;AAC3B,SAASC,oBAAoB,EAAEC,qBAAqB,QAAQ,wBAAwB;AACpF,SAASC,4BAA4B,QAAQ,oCAAoC;AAEjF,eAAe;EACbR,UAAU;EACVK,YAAY;EACZD;AACF,CAAC","ignoreList":[]}