react-native-bspatch 1.1.1 → 1.1.3

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 (58) hide show
  1. package/README.md +120 -22
  2. package/android/src/main/java/vn/reactnativebspatch/BsPatchModule.kt +117 -17
  3. package/cpp/CMakeLists.txt +9 -1
  4. package/cpp/bsdiff/bspatch.c +14 -3
  5. package/cpp/bsdiff/bspatch_wrapper.c +124 -40
  6. package/ios/RNBsPatch.mm +142 -1
  7. package/lib/commonjs/NativeBsPatch.js.map +1 -1
  8. package/lib/commonjs/ota/OtaProvider.js +61 -12
  9. package/lib/commonjs/ota/OtaProvider.js.map +1 -1
  10. package/lib/commonjs/ota/otaCore.js +43 -20
  11. package/lib/commonjs/ota/otaCore.js.map +1 -1
  12. package/lib/commonjs/ota/otaMetadata.js +41 -5
  13. package/lib/commonjs/ota/otaMetadata.js.map +1 -1
  14. package/lib/commonjs/ota/storage/CustomStorage.js +23 -3
  15. package/lib/commonjs/ota/storage/CustomStorage.js.map +1 -1
  16. package/lib/commonjs/ota/storage/GitHubRawStorage.js +12 -2
  17. package/lib/commonjs/ota/storage/GitHubRawStorage.js.map +1 -1
  18. package/lib/commonjs/ota/storage/GitHubReleaseStorage.js +3 -0
  19. package/lib/commonjs/ota/storage/GitHubReleaseStorage.js.map +1 -1
  20. package/lib/module/NativeBsPatch.js.map +1 -1
  21. package/lib/module/ota/OtaProvider.js +61 -12
  22. package/lib/module/ota/OtaProvider.js.map +1 -1
  23. package/lib/module/ota/otaCore.js +43 -20
  24. package/lib/module/ota/otaCore.js.map +1 -1
  25. package/lib/module/ota/otaMetadata.js +38 -3
  26. package/lib/module/ota/otaMetadata.js.map +1 -1
  27. package/lib/module/ota/storage/CustomStorage.js +23 -3
  28. package/lib/module/ota/storage/CustomStorage.js.map +1 -1
  29. package/lib/module/ota/storage/GitHubRawStorage.js +12 -2
  30. package/lib/module/ota/storage/GitHubRawStorage.js.map +1 -1
  31. package/lib/module/ota/storage/GitHubReleaseStorage.js +3 -0
  32. package/lib/module/ota/storage/GitHubReleaseStorage.js.map +1 -1
  33. package/lib/typescript/NativeBsPatch.d.ts +11 -0
  34. package/lib/typescript/NativeBsPatch.d.ts.map +1 -1
  35. package/lib/typescript/ota/OtaProvider.d.ts.map +1 -1
  36. package/lib/typescript/ota/otaCore.d.ts +3 -1
  37. package/lib/typescript/ota/otaCore.d.ts.map +1 -1
  38. package/lib/typescript/ota/otaMetadata.d.ts +6 -0
  39. package/lib/typescript/ota/otaMetadata.d.ts.map +1 -1
  40. package/lib/typescript/ota/storage/CustomStorage.d.ts.map +1 -1
  41. package/lib/typescript/ota/storage/GitHubRawStorage.d.ts.map +1 -1
  42. package/lib/typescript/ota/storage/GitHubReleaseStorage.d.ts.map +1 -1
  43. package/lib/typescript/ota/types.d.ts +6 -2
  44. package/lib/typescript/ota/types.d.ts.map +1 -1
  45. package/package.json +3 -1
  46. package/react-native-bspatch.podspec +6 -1
  47. package/src/NativeBsPatch.ts +17 -0
  48. package/src/ota/OtaProvider.tsx +80 -23
  49. package/src/ota/otaCore.ts +54 -24
  50. package/src/ota/otaMetadata.ts +46 -4
  51. package/src/ota/storage/CustomStorage.ts +26 -3
  52. package/src/ota/storage/GitHubRawStorage.ts +15 -4
  53. package/src/ota/storage/GitHubReleaseStorage.ts +5 -0
  54. package/src/ota/types.ts +6 -2
  55. package/tools/build_ota.sh +103 -7
  56. package/tools/bump_version.js +133 -0
  57. package/tools/generate_keys.js +75 -0
  58. package/tools/update_registry.js +51 -1
@@ -1 +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":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","ReactNativeBlobUtil","tokenCache","Map","registryCache","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","regCacheKey","appVersion","cachedReg","normalizedBaseUrl","slice","genLinkPath","genLinkUrl","encodeURIComponent","linkRes","Authorization","linkJson","registryUrl","reqHeaders","etag","registryRes","respInfo","status","patches","headers","registry","appGroup","apps","flavorGroup","flavors","toLowerCase","length","matchedPatches","filter","p","platform","OS","console","warn","getUpdateFileUrl","filename","useMinio","remotePath","downloadPath","getAssetUrl","hash","ext"],"sourceRoot":"../../../../src","sources":["ota/storage/CustomStorage.ts"],"mappings":"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","ignoreList":[]}
@@ -23,6 +23,12 @@ const NO_CACHE_HEADERS = {
23
23
 
24
24
  /** Append a timestamp query param to defeat CDN caches on mutable URLs */
25
25
  const bustCache = url => `${url}?cb=${Date.now()}`;
26
+ const normalizeChannel = channel => {
27
+ const lower = channel.toLowerCase();
28
+ if (lower === 'dev') return 'development';
29
+ if (lower === 'prod') return 'production';
30
+ return lower;
31
+ };
26
32
  export class GitHubRawStorageProvider {
27
33
  async fetchManifest(config) {
28
34
  if (!config.customServer) return config.bundledPatches || [];
@@ -31,6 +37,7 @@ export class GitHubRawStorageProvider {
31
37
  channel,
32
38
  baseFolder = 'ota'
33
39
  } = config.customServer;
40
+ const channelName = normalizeChannel(channel);
34
41
  const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
35
42
  // Cache-bust: registry is mutable; must always fetch the latest version
36
43
  const registryUrl = bustCache(`${normalizedBaseUrl}/${baseFolder}/ota_registry.json`);
@@ -40,8 +47,11 @@ export class GitHubRawStorageProvider {
40
47
  throw new Error(`Registry fetch failed with status ${res.respInfo.status}`);
41
48
  }
42
49
  const registry = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;
50
+ if (!config.appVersion) {
51
+ throw new Error('[GitHubRawStorage] config.appVersion is required to query OTA registry');
52
+ }
43
53
  const appGroup = registry?.apps?.[config.appVersion];
44
- const flavorGroup = appGroup?.flavors?.[channel.toLowerCase()] || appGroup?.flavors?.development;
54
+ const flavorGroup = appGroup?.flavors?.[channelName];
45
55
  if (!flavorGroup?.patches?.length) {
46
56
  return config.bundledPatches || [];
47
57
  }
@@ -61,7 +71,7 @@ export class GitHubRawStorageProvider {
61
71
  channel
62
72
  } = config.customServer;
63
73
  const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
64
- const channelName = channel.toLowerCase();
74
+ const channelName = normalizeChannel(channel);
65
75
 
66
76
  // Cache-bust: patch files are versioned by name but GitHub CDN may
67
77
  // serve a stale 404 response for newly uploaded files within 5 min.
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","ReactNativeBlobUtil","NO_CACHE_HEADERS","bustCache","url","Date","now","GitHubRawStorageProvider","fetchManifest","config","customServer","bundledPatches","baseUrl","channel","baseFolder","normalizedBaseUrl","endsWith","slice","registryUrl","res","fetch","respInfo","status","Error","registry","data","JSON","parse","appGroup","apps","appVersion","flavorGroup","flavors","toLowerCase","development","patches","length","filter","p","platform","OS","error","console","warn","message","getUpdateFileUrl","filename","channelName","getAssetUrl","hash","ext"],"sourceRoot":"../../../../src","sources":["ota/storage/GitHubRawStorage.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","ReactNativeBlobUtil","NO_CACHE_HEADERS","bustCache","url","Date","now","normalizeChannel","channel","lower","toLowerCase","GitHubRawStorageProvider","fetchManifest","config","customServer","bundledPatches","baseUrl","baseFolder","channelName","normalizedBaseUrl","endsWith","slice","registryUrl","res","fetch","respInfo","status","Error","registry","data","JSON","parse","appVersion","appGroup","apps","flavorGroup","flavors","patches","length","filter","p","platform","OS","error","console","warn","message","getUpdateFileUrl","filename","getAssetUrl","hash","ext"],"sourceRoot":"../../../../src","sources":["ota/storage/GitHubRawStorage.ts"],"mappings":"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","ignoreList":[]}
@@ -54,6 +54,9 @@ export class GitHubReleaseStorageProvider {
54
54
  }
55
55
 
56
56
  // Structured: apps["1.0.0"].channels["production"].patches[]
57
+ if (!config.appVersion) {
58
+ throw new Error('[GitHubReleaseStorage] config.appVersion is required to query OTA registry');
59
+ }
57
60
  const appGroup = registry?.apps?.[config.appVersion];
58
61
  const channelGroup = appGroup?.channels?.[config.githubRelease.repo] // use repo as channel fallback
59
62
  ?? appGroup?.channels?.production ?? appGroup?.flavors?.production;
@@ -1 +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":[]}
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","appVersion","appGroup","apps","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":[]}
@@ -33,6 +33,17 @@ export interface Spec extends TurboModule {
33
33
  * Log a message to the native console (NSLog on iOS)
34
34
  */
35
35
  logNative(message: string): void;
36
+ /**
37
+ * Verify HMAC-SHA256 signature natively with streaming file I/O
38
+ * @param filePath Absolute path to the file to verify
39
+ * @param signature Base64-encoded expected signature
40
+ * @param publicKey Base64-encoded secret key
41
+ */
42
+ verifySignature(filePath: string, signature: string, publicKey: string): Promise<boolean>;
43
+ /**
44
+ * Returns the native app version (versionName on Android, CFBundleShortVersionString on iOS)
45
+ */
46
+ getAppVersion(): Promise<string>;
36
47
  }
37
48
  declare const _default: Spec;
38
49
  export default _default;
@@ -1 +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"}
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;IAEjC;;;;;OAKG;IACH,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC;;AAED,wBAAiE"}
@@ -1 +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,qBAwWA;AAED,wBAAgB,MAAM,aAMrB"}
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,qBAiaA;AAED,wBAAgB,MAAM,aAMrB"}
@@ -105,5 +105,7 @@ export declare const getLocalPatchPath: (patch: OtaPatch, docDir: string) => str
105
105
  *
106
106
  * On failure → fallback to full bundle download if URL available.
107
107
  */
108
- export declare const applyOtaPatchInternal: (patch: OtaPatch, config: OtaConfig, onStatus: (status: OtaStatus, message: string, metrics?: OtaMetrics) => void, onProgress: (percent: number) => void) => Promise<void>;
108
+ export declare const applyOtaPatchInternal: (patch: OtaPatch, config: OtaConfig, onStatus: (status: OtaStatus, message: string, metrics?: OtaMetrics) => void, onProgress: (percent: number) => void, options?: {
109
+ autoReload?: boolean;
110
+ }) => Promise<void>;
109
111
  //# sourceMappingURL=otaCore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"otaCore.d.ts","sourceRoot":"","sources":["../../../src/ota/otaCore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiBH,OAAO,EACH,SAAS,EAGT,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EAEhB,MAAM,SAAS,CAAC;AAuBjB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,OAUhD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GACnB,MAAM,MAAM,EACZ,eAAe,MAAM,KACtB,OAAO,CAAC,OAAO,CAQjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,GACxB,UAAU,MAAM,EAChB,YAAY,MAAM,EAClB,YAAY,MAAM,KACnB,OAAO,CAAC,OAAO,CA4BjB,CAAC;AA0FF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GACzB,QAAQ,SAAS,KAClB,OAAO,CAAC,QAAQ,EAAE,CAWpB,CAAC;AAyLF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,KAAK,MAAM,KAAG,MACvB,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,QAAQ,EAAE,QAAQ,MAAM,KAAG,MACzB,CAAC;AAI5C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,GAC9B,OAAO,QAAQ,EACf,QAAQ,SAAS,EACjB,UAAU,CACN,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,UAAU,KACnB,IAAI,EACT,YAAY,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,kBAidxC,CAAC"}
1
+ {"version":3,"file":"otaCore.d.ts","sourceRoot":"","sources":["../../../src/ota/otaCore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiBH,OAAO,EACH,SAAS,EAGT,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EAEhB,MAAM,SAAS,CAAC;AAuBjB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,OAUhD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GACnB,MAAM,MAAM,EACZ,eAAe,MAAM,KACtB,OAAO,CAAC,OAAO,CAQjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,GACxB,UAAU,MAAM,EAChB,YAAY,MAAM,EAClB,YAAY,MAAM,KACnB,OAAO,CAAC,OAAO,CA+BjB,CAAC;AA0FF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GACzB,QAAQ,SAAS,KAClB,OAAO,CAAC,QAAQ,EAAE,CAWpB,CAAC;AAyLF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,KAAK,MAAM,KAAG,MACvB,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,QAAQ,EAAE,QAAQ,MAAM,KAAG,MACzB,CAAC;AAI5C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,GAC9B,OAAO,QAAQ,EACf,QAAQ,SAAS,EACjB,UAAU,CACN,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,UAAU,KACnB,IAAI,EACT,YAAY,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACrC,UAAS;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAyB,kBA2e3D,CAAC"}
@@ -27,9 +27,15 @@ export declare const MAX_VERSION_HISTORY = 3;
27
27
  * @returns Updated metadata object.
28
28
  */
29
29
  export declare const registerNewVersion: (metadata: OtaMetadata, newVersion: number) => OtaMetadata;
30
+ /**
31
+ * Scans the OTA directory and removes old version directories and leftover temporary files
32
+ * that are no longer referenced in the active metadata.
33
+ */
34
+ export declare const cleanupOldVersions: (metadata: OtaMetadata, baseVersion: number) => Promise<void>;
30
35
  /**
31
36
  * Marks the current session as healthy, indicating a successful boot.
32
37
  * This prevents the native bridge from rolling back the version on the next launch.
38
+ * Also cleans up obsolete version directories from disk.
33
39
  *
34
40
  * @param defaultVersion - Base version for metadata lookup fallback.
35
41
  * @returns The updated metadata.
@@ -1 +1 @@
1
- {"version":3,"file":"otaMetadata.d.ts","sourceRoot":"","sources":["../../../src/ota/otaMetadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQtC;;GAEG;AACH,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,IAAI,CAIjD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACrB,gBAAgB,MAAM,KACvB,OAAO,CAAC,WAAW,CAmBrB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAU,UAAU,WAAW,KAAG,OAAO,CAAC,IAAI,CAoBtE,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UAAU,WAAW,EACrB,YAAY,MAAM,KACnB,WAiBF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACpB,gBAAgB,MAAM,KACvB,OAAO,CAAC,WAAW,CAarB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACtB,SAAS,MAAM,EACf,aAAa,MAAM,KACpB,MAAM,GAAG,IAUX,CAAC"}
1
+ {"version":3,"file":"otaMetadata.d.ts","sourceRoot":"","sources":["../../../src/ota/otaMetadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQtC;;GAEG;AACH,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,IAAI,CAIjD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACrB,gBAAgB,MAAM,KACvB,OAAO,CAAC,WAAW,CAmBrB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAU,UAAU,WAAW,KAAG,OAAO,CAAC,IAAI,CAoBtE,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UAAU,WAAW,EACrB,YAAY,MAAM,KACnB,WAiBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UAAU,WAAW,EACrB,aAAa,MAAM,KACpB,OAAO,CAAC,IAAI,CAgCd,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GACpB,gBAAgB,MAAM,KACvB,OAAO,CAAC,WAAW,CAarB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACtB,SAAS,MAAM,EACf,aAAa,MAAM,KACpB,MAAM,GAAG,IAUX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomStorage.d.ts","sourceRoot":"","sources":["../../../../src/ota/storage/CustomStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAUxE;;GAEG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,OAAO,CAAC,WAAW;YAIL,cAAc;IAqCtB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAuCrD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBtE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;CAsBjF"}
1
+ {"version":3,"file":"CustomStorage.d.ts","sourceRoot":"","sources":["../../../../src/ota/storage/CustomStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAiBxE;;GAEG;AACH,qBAAa,qBAAsB,YAAW,kBAAkB;IAC9D,OAAO,CAAC,WAAW;YAIL,cAAc;IAqCtB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAuDrD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBtE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;CAsBjF"}
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubRawStorage.d.ts","sourceRoot":"","sources":["../../../../src/ota/storage/GitHubRawStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAuBxE,qBAAa,wBAAyB,YAAW,kBAAkB;IACzD,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAoDrD,gBAAgB,CAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAClB,OAAO,CAAC,MAAM,CAAC;IAkBZ,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,GAClB,OAAO,CAAC,MAAM,CAAC;CAWrB"}
1
+ {"version":3,"file":"GitHubRawStorage.d.ts","sourceRoot":"","sources":["../../../../src/ota/storage/GitHubRawStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AA8BxE,qBAAa,wBAAyB,YAAW,kBAAkB;IACzD,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAwDrD,gBAAgB,CAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAClB,OAAO,CAAC,MAAM,CAAC;IAkBZ,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,GAClB,OAAO,CAAC,MAAM,CAAC;CAWrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubReleaseStorage.d.ts","sourceRoot":"","sources":["../../../../src/ota/storage/GitHubReleaseStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAExE,qBAAa,4BAA6B,YAAW,kBAAkB;IACnE,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,WAAW;IAKb,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgDrD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAKtE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;CAanF"}
1
+ {"version":3,"file":"GitHubReleaseStorage.d.ts","sourceRoot":"","sources":["../../../../src/ota/storage/GitHubReleaseStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAExE,qBAAa,4BAA6B,YAAW,kBAAkB;IACnE,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,WAAW;IAKb,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAqDrD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAKtE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;CAanF"}
@@ -104,8 +104,8 @@ export type OtaNetworkStrategy = {
104
104
  wifiOnly?: boolean;
105
105
  };
106
106
  export type OtaConfig = {
107
- /** Current app versionName (e.g. "1.0.0") */
108
- appVersion: string;
107
+ /** Current app versionName (e.g. "1.0.0"). If omitted, auto-detected from native app. */
108
+ appVersion?: string;
109
109
  /** Initial version baked into the APK (usually 1) */
110
110
  baseAppVersion: number;
111
111
  /** Default patches if manifest fetch fails */
@@ -192,9 +192,13 @@ export type OtaState = {
192
192
  pendingCount: number;
193
193
  isChecking: boolean;
194
194
  metrics: OtaMetrics | null;
195
+ /** True if a background update has been downloaded and prepared silently */
196
+ isUpdateReady: boolean;
195
197
  applyUpdate: () => Promise<void>;
196
198
  resetToFactory: () => Promise<void>;
197
199
  markAsHealthy: () => Promise<void>;
198
200
  checkUpdate: () => Promise<void>;
201
+ /** Reload the React Native JS bundle immediately to apply downloaded update */
202
+ reloadBundle: () => void;
199
203
  };
200
204
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ota/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ota/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-bspatch",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "description": "Premium OTA Update Solution for React Native using TurboModules and bsdiff",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -62,6 +62,8 @@
62
62
  },
63
63
  "scripts": {
64
64
  "setup": "node ./tools/setup_project.js",
65
+ "bump-version": "node ./tools/bump_version.js",
66
+ "generate-keys": "node ./tools/generate_keys.js",
65
67
  "typecheck": "tsc --noEmit",
66
68
  "prepare": "bob build"
67
69
  },
@@ -22,6 +22,10 @@ Pod::Spec.new do |s|
22
22
 
23
23
  s.dependency "SSZipArchive"
24
24
 
25
+ s.pod_target_xcconfig = {
26
+ 'OTHER_CFLAGS' => '$(inherited) -O3 -flto'
27
+ }
28
+
25
29
  # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
26
30
  if respond_to?(:install_modules_dependencies, true)
27
31
  install_modules_dependencies(s)
@@ -33,7 +37,8 @@ Pod::Spec.new do |s|
33
37
  s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
34
38
  s.pod_target_xcconfig = {
35
39
  "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
36
- "OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
40
+ "OTHER_CFLAGS" => "$(inherited) -O3 -flto",
41
+ "OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -O3 -flto",
37
42
  "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
38
43
  }
39
44
  s.dependency "React-Codegen"
@@ -47,6 +47,23 @@ export interface Spec extends TurboModule {
47
47
  * Log a message to the native console (NSLog on iOS)
48
48
  */
49
49
  logNative(message: string): void;
50
+
51
+ /**
52
+ * Verify HMAC-SHA256 signature natively with streaming file I/O
53
+ * @param filePath Absolute path to the file to verify
54
+ * @param signature Base64-encoded expected signature
55
+ * @param publicKey Base64-encoded secret key
56
+ */
57
+ verifySignature(
58
+ filePath: string,
59
+ signature: string,
60
+ publicKey: string,
61
+ ): Promise<boolean>;
62
+
63
+ /**
64
+ * Returns the native app version (versionName on Android, CFBundleShortVersionString on iOS)
65
+ */
66
+ getAppVersion(): Promise<string>;
50
67
  }
51
68
 
52
69
  export default TurboModuleRegistry.getEnforcing<Spec>('BsPatch');
@@ -59,9 +59,11 @@ export function OtaProvider({
59
59
  const [metrics, setMetrics] = useState<OtaMetrics | null>(null);
60
60
  const [patches, setPatches] = useState<OtaPatch[]>([]);
61
61
  const [isInitialized, setIsInitialized] = useState<boolean>(false);
62
+ const [isUpdateReady, setIsUpdateReady] = useState<boolean>(false);
62
63
 
63
64
  const appState = useRef(AppState.currentState);
64
65
  const isCheckingRef = useRef(false);
66
+ const pendingReloadRef = useRef(false);
65
67
  const bootstrapDone = useRef(false);
66
68
  const progressRef = useRef(0);
67
69
  const isDebugUpdateEnabled = !__DEV__ || config.allowDebugUpdates === true;
@@ -74,6 +76,22 @@ export function OtaProvider({
74
76
  setProgress(nextProgress);
75
77
  }, []);
76
78
 
79
+ const getEffectiveConfig = useCallback(async (): Promise<OtaConfig> => {
80
+ if (config.appVersion) return config;
81
+ try {
82
+ const nativeVer = await NativeBsPatch.getAppVersion();
83
+ if (!nativeVer) {
84
+ throw new Error('Native appVersion is empty');
85
+ }
86
+ return { ...config, appVersion: nativeVer };
87
+ } catch (e) {
88
+ throw new Error(
89
+ `[OtaProvider] Failed to auto-detect appVersion from native: ${(e as Error).message}. ` +
90
+ `Please set versionName (Android) / CFBundleShortVersionString (iOS), or provide config.appVersion explicitly.`
91
+ );
92
+ }
93
+ }, [config]);
94
+
77
95
  /**
78
96
  * Core apply update logic — separated so it can be mapped to button clicks
79
97
  * OR called automatically by checkUpdates()
@@ -95,12 +113,13 @@ export function OtaProvider({
95
113
  }
96
114
 
97
115
  try {
116
+ const effectiveConfig = await getEffectiveConfig();
98
117
  setStatus(OtaStatus.DOWNLOADING);
99
118
  progressRef.current = 0;
100
119
  setProgress(0);
101
120
  await applyOtaPatchInternal(
102
121
  directPatch,
103
- config,
122
+ effectiveConfig,
104
123
  (s: OtaStatus, msg: string, m?: OtaMetrics) => {
105
124
  setMessage(msg);
106
125
  setStatus(s);
@@ -120,7 +139,7 @@ export function OtaProvider({
120
139
  setMessage(`Update failed: ${(error as Error).message}`);
121
140
  }
122
141
  },
123
- [config, setProgressIfChanged],
142
+ [getEffectiveConfig, setProgressIfChanged],
124
143
  );
125
144
 
126
145
  /**
@@ -142,6 +161,48 @@ export function OtaProvider({
142
161
  patches,
143
162
  ]);
144
163
 
164
+ const downloadBackgroundUpdate = useCallback(
165
+ async (
166
+ patchList: OtaPatch[],
167
+ localV: number,
168
+ targetV: number,
169
+ ) => {
170
+ const directPatch = patchList.find(
171
+ p => p.fromVersion === localV &&
172
+ p.toVersion === targetV &&
173
+ p.platform === Platform.OS,
174
+ );
175
+ if (!directPatch) return;
176
+
177
+ try {
178
+ const effectiveConfig = await getEffectiveConfig();
179
+ await applyOtaPatchInternal(
180
+ directPatch,
181
+ effectiveConfig,
182
+ (s: OtaStatus, msg: string, m?: OtaMetrics) => {
183
+ if (s === OtaStatus.SUCCESS) {
184
+ setIsUpdateReady(true);
185
+ pendingReloadRef.current = true;
186
+ setStatus(OtaStatus.UP_TO_DATE);
187
+ setMessage(`Update V${targetV} ready for next launch`);
188
+ if (m) {
189
+ setMetrics(m);
190
+ initOtaAssetResolver(targetV);
191
+ }
192
+ }
193
+ },
194
+ () => {}, // silent: background doesn't spam progress
195
+ { autoReload: false }, // Do NOT reload immediately
196
+ );
197
+ } catch (e) {
198
+ if (__DEV__) {
199
+ console.warn('[OtaProvider] Silent background update failed:', e);
200
+ }
201
+ }
202
+ },
203
+ [getEffectiveConfig],
204
+ );
205
+
145
206
  /**
146
207
  * Check for updates from the manifest.
147
208
  * Uses a ref to guard against concurrent calls (avoids stale closure).
@@ -160,11 +221,12 @@ export function OtaProvider({
160
221
  setStatus(OtaStatus.CHECKING);
161
222
  setMessage('Checking for updates...');
162
223
 
163
- const log = createOtaLogger(config.onEvent);
224
+ const effectiveConfig = await getEffectiveConfig();
225
+ const log = createOtaLogger(effectiveConfig.onEvent);
164
226
  log.emit(OtaEvent.CHECK_UPDATE);
165
227
 
166
228
  try {
167
- const remotePatches = await fetchOtaManifest(config);
229
+ const remotePatches = await fetchOtaManifest(effectiveConfig);
168
230
  const metadata = await loadMetadata(config.baseAppVersion);
169
231
  const localV = metadata.currentVersion;
170
232
  console.log('[OtaProvider] checkUpdates | localV:', localV, 'remotePatches count:', remotePatches.length);
@@ -210,24 +272,7 @@ export function OtaProvider({
210
272
  isCheckingRef.current = false;
211
273
  setIsChecking(false);
212
274
  }
213
- }, [config, executeApplyUpdate, isDebugUpdateEnabled]);
214
-
215
- const downloadBackgroundUpdate = async (
216
- patchList: OtaPatch[],
217
- localV: number,
218
- targetV: number,
219
- ) => {
220
- const directPatch = patchList.find(
221
- p => p.fromVersion === localV && p.toVersion === targetV,
222
- );
223
- if (!directPatch) return;
224
-
225
- console.warn(
226
- '[OtaProvider] BACKGROUND_DOWNLOAD mode is not yet implemented. ' +
227
- 'Patches were found but no download occurred. ' +
228
- 'Use MANUAL or ON_APP_START mode for now.',
229
- );
230
- };
275
+ }, [config, executeApplyUpdate, isDebugUpdateEnabled, downloadBackgroundUpdate, getEffectiveConfig]);
231
276
 
232
277
  /**
233
278
  * Bootstrap: runs once on mount.
@@ -301,12 +346,22 @@ export function OtaProvider({
301
346
  }, []);
302
347
 
303
348
  /**
304
- * AppState listener for ON_APP_FOREGROUND mode
349
+ * AppState listener for ON_APP_FOREGROUND mode and silent background reload
305
350
  */
306
351
  useEffect(() => {
307
352
  const subscription = AppState.addEventListener(
308
353
  'change',
309
354
  (nextAppState: AppStateStatus) => {
355
+ // When going into background: if update is downloaded and ready, reload bundle silently
356
+ if (
357
+ appState.current === 'active' &&
358
+ nextAppState.match(/inactive|background/) &&
359
+ pendingReloadRef.current
360
+ ) {
361
+ pendingReloadRef.current = false;
362
+ NativeBsPatch.reloadBundle();
363
+ }
364
+
310
365
  if (
311
366
  appState.current.match(/inactive|background/) &&
312
367
  nextAppState === 'active' &&
@@ -363,10 +418,12 @@ export function OtaProvider({
363
418
  pendingCount,
364
419
  isChecking,
365
420
  metrics,
421
+ isUpdateReady,
366
422
  applyUpdate,
367
423
  resetToFactory,
368
424
  markAsHealthy,
369
425
  checkUpdate: checkUpdates,
426
+ reloadBundle: () => NativeBsPatch.reloadBundle(),
370
427
  };
371
428
 
372
429
  // Logic to determine if we should block the UI