@hot-updater/react-native 0.20.14 → 0.21.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 (56) hide show
  1. package/HotUpdater.podspec +7 -4
  2. package/android/build.gradle +3 -0
  3. package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +78 -21
  4. package/android/src/main/java/com/hotupdater/DecompressService.kt +83 -0
  5. package/android/src/main/java/com/hotupdater/DecompressionStrategy.kt +26 -0
  6. package/android/src/main/java/com/hotupdater/HashUtils.kt +47 -0
  7. package/android/src/main/java/com/hotupdater/HotUpdater.kt +3 -0
  8. package/android/src/main/java/com/hotupdater/HotUpdaterFactory.kt +3 -3
  9. package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +3 -1
  10. package/android/src/main/java/com/hotupdater/OkHttpDownloadService.kt +293 -0
  11. package/android/src/main/java/com/hotupdater/TarBrDecompressionStrategy.kt +105 -0
  12. package/android/src/main/java/com/hotupdater/TarGzDecompressionStrategy.kt +117 -0
  13. package/android/src/main/java/com/hotupdater/ZipDecompressionStrategy.kt +175 -0
  14. package/android/src/newarch/HotUpdaterModule.kt +2 -0
  15. package/android/src/oldarch/HotUpdaterModule.kt +2 -0
  16. package/ios/HotUpdater/Internal/BundleFileStorageService.swift +133 -60
  17. package/ios/HotUpdater/Internal/DecompressService.swift +89 -0
  18. package/ios/HotUpdater/Internal/DecompressionStrategy.swift +22 -0
  19. package/ios/HotUpdater/Internal/HashUtils.swift +63 -0
  20. package/ios/HotUpdater/Internal/HotUpdater.mm +5 -2
  21. package/ios/HotUpdater/Internal/HotUpdaterFactory.swift +4 -4
  22. package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +23 -10
  23. package/ios/HotUpdater/Internal/TarBrDecompressionStrategy.swift +229 -0
  24. package/ios/HotUpdater/Internal/TarGzDecompressionStrategy.swift +177 -0
  25. package/ios/HotUpdater/Internal/URLSessionDownloadService.swift +73 -7
  26. package/ios/HotUpdater/Internal/ZipDecompressionStrategy.swift +165 -0
  27. package/lib/commonjs/checkForUpdate.js +1 -0
  28. package/lib/commonjs/checkForUpdate.js.map +1 -1
  29. package/lib/commonjs/fetchUpdateInfo.js +1 -1
  30. package/lib/commonjs/fetchUpdateInfo.js.map +1 -1
  31. package/lib/commonjs/native.js +3 -1
  32. package/lib/commonjs/native.js.map +1 -1
  33. package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
  34. package/lib/module/checkForUpdate.js +1 -0
  35. package/lib/module/checkForUpdate.js.map +1 -1
  36. package/lib/module/fetchUpdateInfo.js +1 -1
  37. package/lib/module/fetchUpdateInfo.js.map +1 -1
  38. package/lib/module/native.js +3 -1
  39. package/lib/module/native.js.map +1 -1
  40. package/lib/module/specs/NativeHotUpdater.js.map +1 -1
  41. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  43. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +5 -0
  44. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
  45. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  46. package/lib/typescript/module/native.d.ts.map +1 -1
  47. package/lib/typescript/module/specs/NativeHotUpdater.d.ts +5 -0
  48. package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
  49. package/package.json +5 -5
  50. package/src/checkForUpdate.ts +1 -0
  51. package/src/fetchUpdateInfo.ts +1 -1
  52. package/src/native.ts +6 -0
  53. package/src/specs/NativeHotUpdater.ts +5 -0
  54. package/android/src/main/java/com/hotupdater/HttpDownloadService.kt +0 -98
  55. package/android/src/main/java/com/hotupdater/ZipFileUnzipService.kt +0 -74
  56. package/ios/HotUpdater/Internal/SSZipArchiveUnzipService.swift +0 -25
@@ -50,6 +50,7 @@ async function checkForUpdate(options) {
50
50
  return (0, _native.updateBundle)({
51
51
  bundleId: updateInfo.id,
52
52
  fileUrl: updateInfo.fileUrl,
53
+ fileHash: updateInfo?.fileHash ?? null,
53
54
  status: updateInfo.status
54
55
  });
55
56
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_error","_fetchUpdateInfo","_native","checkForUpdate","options","__DEV__","includes","Platform","OS","onError","HotUpdaterError","currentAppVersion","getAppVersion","platform","currentBundleId","getBundleId","minBundleId","getMinBundleId","channel","getChannel","fingerprintHash","getFingerprintHash","fetchUpdateInfo","source","params","bundleId","appVersion","requestHeaders","requestTimeout","then","updateInfo","updateBundle","id","fileUrl","status","getUpdateSource","baseUrl","updateStrategy","exports"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":";;;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AA4BO,eAAeI,cAAcA,CAClCC,OAA8B,EACQ;EACtC,IAAIC,OAAO,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACC,qBAAQ,CAACC,EAAE,CAAC,EAAE;IAC7CJ,OAAO,CAACK,OAAO,GACb,IAAIC,sBAAe,CAAC,iDAAiD,CACvE,CAAC;IACD,OAAO,IAAI;EACb;EAEA,MAAMC,iBAAiB,GAAG,IAAAC,qBAAa,EAAC,CAAC;EACzC,MAAMC,QAAQ,GAAGN,qBAAQ,CAACC,EAAuB;EACjD,MAAMM,eAAe,GAAG,IAAAC,mBAAW,EAAC,CAAC;EACrC,MAAMC,WAAW,GAAG,IAAAC,sBAAc,EAAC,CAAC;EACpC,MAAMC,OAAO,GAAG,IAAAC,kBAAU,EAAC,CAAC;EAE5B,IAAI,CAACR,iBAAiB,EAAE;IACtBP,OAAO,CAACK,OAAO,GAAG,IAAIC,sBAAe,CAAC,2BAA2B,CAAC,CAAC;IACnE,OAAO,IAAI;EACb;EAEA,MAAMU,eAAe,GAAG,IAAAC,0BAAkB,EAAC,CAAC;EAE5C,OAAO,IAAAC,gCAAe,EAAC;IACrBC,MAAM,EAAEnB,OAAO,CAACmB,MAAM;IACtBC,MAAM,EAAE;MACNC,QAAQ,EAAEX,eAAe;MACzBY,UAAU,EAAEf,iBAAiB;MAC7BE,QAAQ;MACRG,WAAW;MACXE,OAAO;MACPE;IACF,CAAC;IACDO,cAAc,EAAEvB,OAAO,CAACuB,cAAc;IACtClB,OAAO,EAAEL,OAAO,CAACK,OAAO;IACxBmB,cAAc,EAAExB,OAAO,CAACwB;EAC1B,CAAC,CAAC,CAACC,IAAI,CAAEC,UAAU,IAAK;IACtB,IAAI,CAACA,UAAU,EAAE;MACf,OAAO,IAAI;IACb;IAEA,OAAO;MACL,GAAGA,UAAU;MACbC,YAAY,EAAE,MAAAA,CAAA,KAAY;QACxB,OAAO,IAAAA,oBAAY,EAAC;UAClBN,QAAQ,EAAEK,UAAU,CAACE,EAAE;UACvBC,OAAO,EAAEH,UAAU,CAACG,OAAO;UAC3BC,MAAM,EAAEJ,UAAU,CAACI;QACrB,CAAC,CAAC;MACJ;IACF,CAAC;EACH,CAAC,CAAC;AACJ;AAYO,MAAMC,eAAe,GAC1BA,CAACC,OAAe,EAAEhC,OAA+B,KAChDoB,MAA0B,IAAK;EAC9B,QAAQpB,OAAO,CAACiC,cAAc;IAC5B,KAAK,aAAa;MAAE;QAClB,IAAI,CAACb,MAAM,CAACJ,eAAe,EAAE;UAC3B,MAAM,IAAIV,sBAAe,CAAC,8BAA8B,CAAC;QAC3D;QACA,OAAO,GAAG0B,OAAO,gBAAgBZ,MAAM,CAACX,QAAQ,IAAIW,MAAM,CAACJ,eAAe,IAAII,MAAM,CAACN,OAAO,IAAIM,MAAM,CAACR,WAAW,IAAIQ,MAAM,CAACC,QAAQ,EAAE;MACzI;IACA,KAAK,YAAY;MAAE;QACjB,OAAO,GAAGW,OAAO,gBAAgBZ,MAAM,CAACX,QAAQ,IAAIW,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACN,OAAO,IAAIM,MAAM,CAACR,WAAW,IAAIQ,MAAM,CAACC,QAAQ,EAAE;MACpI;IACA;MACE,OAAOW,OAAO;EAClB;AACF,CAAC;AAACE,OAAA,CAAAH,eAAA,GAAAA,eAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_error","_fetchUpdateInfo","_native","checkForUpdate","options","__DEV__","includes","Platform","OS","onError","HotUpdaterError","currentAppVersion","getAppVersion","platform","currentBundleId","getBundleId","minBundleId","getMinBundleId","channel","getChannel","fingerprintHash","getFingerprintHash","fetchUpdateInfo","source","params","bundleId","appVersion","requestHeaders","requestTimeout","then","updateInfo","updateBundle","id","fileUrl","fileHash","status","getUpdateSource","baseUrl","updateStrategy","exports"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":";;;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AA4BO,eAAeI,cAAcA,CAClCC,OAA8B,EACQ;EACtC,IAAIC,OAAO,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACC,qBAAQ,CAACC,EAAE,CAAC,EAAE;IAC7CJ,OAAO,CAACK,OAAO,GACb,IAAIC,sBAAe,CAAC,iDAAiD,CACvE,CAAC;IACD,OAAO,IAAI;EACb;EAEA,MAAMC,iBAAiB,GAAG,IAAAC,qBAAa,EAAC,CAAC;EACzC,MAAMC,QAAQ,GAAGN,qBAAQ,CAACC,EAAuB;EACjD,MAAMM,eAAe,GAAG,IAAAC,mBAAW,EAAC,CAAC;EACrC,MAAMC,WAAW,GAAG,IAAAC,sBAAc,EAAC,CAAC;EACpC,MAAMC,OAAO,GAAG,IAAAC,kBAAU,EAAC,CAAC;EAE5B,IAAI,CAACR,iBAAiB,EAAE;IACtBP,OAAO,CAACK,OAAO,GAAG,IAAIC,sBAAe,CAAC,2BAA2B,CAAC,CAAC;IACnE,OAAO,IAAI;EACb;EAEA,MAAMU,eAAe,GAAG,IAAAC,0BAAkB,EAAC,CAAC;EAE5C,OAAO,IAAAC,gCAAe,EAAC;IACrBC,MAAM,EAAEnB,OAAO,CAACmB,MAAM;IACtBC,MAAM,EAAE;MACNC,QAAQ,EAAEX,eAAe;MACzBY,UAAU,EAAEf,iBAAiB;MAC7BE,QAAQ;MACRG,WAAW;MACXE,OAAO;MACPE;IACF,CAAC;IACDO,cAAc,EAAEvB,OAAO,CAACuB,cAAc;IACtClB,OAAO,EAAEL,OAAO,CAACK,OAAO;IACxBmB,cAAc,EAAExB,OAAO,CAACwB;EAC1B,CAAC,CAAC,CAACC,IAAI,CAAEC,UAAU,IAAK;IACtB,IAAI,CAACA,UAAU,EAAE;MACf,OAAO,IAAI;IACb;IAEA,OAAO;MACL,GAAGA,UAAU;MACbC,YAAY,EAAE,MAAAA,CAAA,KAAY;QACxB,OAAO,IAAAA,oBAAY,EAAC;UAClBN,QAAQ,EAAEK,UAAU,CAACE,EAAE;UACvBC,OAAO,EAAEH,UAAU,CAACG,OAAO;UAC3BC,QAAQ,EAAEJ,UAAU,EAAEI,QAAQ,IAAI,IAAI;UACtCC,MAAM,EAAEL,UAAU,CAACK;QACrB,CAAC,CAAC;MACJ;IACF,CAAC;EACH,CAAC,CAAC;AACJ;AAYO,MAAMC,eAAe,GAC1BA,CAACC,OAAe,EAAEjC,OAA+B,KAChDoB,MAA0B,IAAK;EAC9B,QAAQpB,OAAO,CAACkC,cAAc;IAC5B,KAAK,aAAa;MAAE;QAClB,IAAI,CAACd,MAAM,CAACJ,eAAe,EAAE;UAC3B,MAAM,IAAIV,sBAAe,CAAC,8BAA8B,CAAC;QAC3D;QACA,OAAO,GAAG2B,OAAO,gBAAgBb,MAAM,CAACX,QAAQ,IAAIW,MAAM,CAACJ,eAAe,IAAII,MAAM,CAACN,OAAO,IAAIM,MAAM,CAACR,WAAW,IAAIQ,MAAM,CAACC,QAAQ,EAAE;MACzI;IACA,KAAK,YAAY;MAAE;QACjB,OAAO,GAAGY,OAAO,gBAAgBb,MAAM,CAACX,QAAQ,IAAIW,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACN,OAAO,IAAIM,MAAM,CAACR,WAAW,IAAIQ,MAAM,CAACC,QAAQ,EAAE;MACpI;IACA;MACE,OAAOY,OAAO;EAClB;AACF,CAAC;AAACE,OAAA,CAAAH,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -21,7 +21,7 @@ function buildRequestHeaders(params, requestHeaders) {
21
21
  ...(params.channel && {
22
22
  "x-channel": params.channel
23
23
  }),
24
- ...(requestHeaders ?? {})
24
+ ...requestHeaders
25
25
  };
26
26
  }
27
27
  async function resolveSource(source, params) {
@@ -1 +1 @@
1
- {"version":3,"names":["buildRequestHeaders","params","requestHeaders","updateStrategy","fingerprintHash","platform","bundleId","appVersion","minBundleId","channel","resolveSource","source","url","result","info","fetchUpdateInfo","onError","requestTimeout","resolvedSource","controller","AbortController","timeoutId","setTimeout","abort","headers","response","fetch","signal","clearTimeout","status","Error","statusText","json","error","name","exports"],"sourceRoot":"../../src","sources":["fetchUpdateInfo.ts"],"mappings":";;;;;;AAWA,SAASA,mBAAmBA,CAC1BC,MAA0B,EAC1BC,cAAuC,EACf;EACxB,MAAMC,cAA8B,GAAGF,MAAM,CAACG,eAAe,GACzD,aAAa,GACb,YAAY;EAEhB,OAAO;IACL,cAAc,EAAE,kBAAkB;IAClC,gBAAgB,EAAEH,MAAM,CAACI,QAAQ;IACjC,aAAa,EAAEJ,MAAM,CAACK,QAAQ;IAC9B,IAAIH,cAAc,KAAK,aAAa,GAChC;MAAE,oBAAoB,EAAEF,MAAM,CAACG;IAAiB,CAAC,GACjD;MAAE,eAAe,EAAEH,MAAM,CAACM;IAAW,CAAC,CAAC;IAC3C,IAAIN,MAAM,CAACO,WAAW,IAAI;MAAE,iBAAiB,EAAEP,MAAM,CAACO;IAAY,CAAC,CAAC;IACpE,IAAIP,MAAM,CAACQ,OAAO,IAAI;MAAE,WAAW,EAAER,MAAM,CAACQ;IAAQ,CAAC,CAAC;IACtD,IAAIP,cAAc,IAAI,CAAC,CAAC;EAC1B,CAAC;AACH;AAEA,eAAeQ,aAAaA,CAC1BC,MAAoB,EACpBV,MAA0B,EACiC;EAC3D,IAAI,OAAOU,MAAM,KAAK,UAAU,EAAE;IAChC,OAAO;MAAEC,GAAG,EAAED;IAAO,CAAC;EACxB;EACA,MAAME,MAAM,GAAGF,MAAM,CAACV,MAAM,CAAC;EAC7B,IAAI,OAAOY,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAO;MAAED,GAAG,EAAEC;IAAO,CAAC;EACxB;EACA,OAAO;IAAEC,IAAI,EAAE,MAAMD;EAAO,CAAC;AAC/B;AAEO,MAAME,eAAe,GAAG,MAAAA,CAAO;EACpCJ,MAAM;EACNV,MAAM;EACNC,cAAc;EACdc,OAAO;EACPC,cAAc,GAAG;AAOnB,CAAC,KAAoC;EACnC,IAAI;IACF,MAAMC,cAAc,GAAG,MAAMR,aAAa,CAACC,MAAM,EAAEV,MAAM,CAAC;IAC1D,IAAI,MAAM,IAAIiB,cAAc,EAAE;MAC5B,OAAOA,cAAc,CAACJ,IAAI;IAC5B;IAEA,MAAMK,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;IACxC,MAAMC,SAAS,GAAGC,UAAU,CAAC,MAAM;MACjCH,UAAU,CAACI,KAAK,CAAC,CAAC;IACpB,CAAC,EAAEN,cAAc,CAAC;IAElB,MAAMO,OAAO,GAAGxB,mBAAmB,CAACC,MAAM,EAAEC,cAAc,CAAC;IAE3D,MAAMuB,QAAQ,GAAG,MAAMC,KAAK,CAACR,cAAc,CAACN,GAAG,EAAE;MAC/Ce,MAAM,EAAER,UAAU,CAACQ,MAAM;MACzBH;IACF,CAAC,CAAC;IACFI,YAAY,CAACP,SAAS,CAAC;IAEvB,IAAII,QAAQ,CAACI,MAAM,KAAK,GAAG,EAAE;MAC3B,MAAM,IAAIC,KAAK,CAACL,QAAQ,CAACM,UAAU,CAAC;IACtC;IACA,OAAON,QAAQ,CAACO,IAAI,CAAC,CAAC;EACxB,CAAC,CAAC,OAAOC,KAAU,EAAE;IACnB,IAAIA,KAAK,CAACC,IAAI,KAAK,YAAY,EAAE;MAC/BlB,OAAO,GAAG,IAAIc,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC3C,CAAC,MAAM;MACLd,OAAO,GAAGiB,KAAc,CAAC;IAC3B;IACA,OAAO,IAAI;EACb;AACF,CAAC;AAACE,OAAA,CAAApB,eAAA,GAAAA,eAAA","ignoreList":[]}
1
+ {"version":3,"names":["buildRequestHeaders","params","requestHeaders","updateStrategy","fingerprintHash","platform","bundleId","appVersion","minBundleId","channel","resolveSource","source","url","result","info","fetchUpdateInfo","onError","requestTimeout","resolvedSource","controller","AbortController","timeoutId","setTimeout","abort","headers","response","fetch","signal","clearTimeout","status","Error","statusText","json","error","name","exports"],"sourceRoot":"../../src","sources":["fetchUpdateInfo.ts"],"mappings":";;;;;;AAWA,SAASA,mBAAmBA,CAC1BC,MAA0B,EAC1BC,cAAuC,EACf;EACxB,MAAMC,cAA8B,GAAGF,MAAM,CAACG,eAAe,GACzD,aAAa,GACb,YAAY;EAEhB,OAAO;IACL,cAAc,EAAE,kBAAkB;IAClC,gBAAgB,EAAEH,MAAM,CAACI,QAAQ;IACjC,aAAa,EAAEJ,MAAM,CAACK,QAAQ;IAC9B,IAAIH,cAAc,KAAK,aAAa,GAChC;MAAE,oBAAoB,EAAEF,MAAM,CAACG;IAAiB,CAAC,GACjD;MAAE,eAAe,EAAEH,MAAM,CAACM;IAAW,CAAC,CAAC;IAC3C,IAAIN,MAAM,CAACO,WAAW,IAAI;MAAE,iBAAiB,EAAEP,MAAM,CAACO;IAAY,CAAC,CAAC;IACpE,IAAIP,MAAM,CAACQ,OAAO,IAAI;MAAE,WAAW,EAAER,MAAM,CAACQ;IAAQ,CAAC,CAAC;IACtD,GAAGP;EACL,CAAC;AACH;AAEA,eAAeQ,aAAaA,CAC1BC,MAAoB,EACpBV,MAA0B,EACiC;EAC3D,IAAI,OAAOU,MAAM,KAAK,UAAU,EAAE;IAChC,OAAO;MAAEC,GAAG,EAAED;IAAO,CAAC;EACxB;EACA,MAAME,MAAM,GAAGF,MAAM,CAACV,MAAM,CAAC;EAC7B,IAAI,OAAOY,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAO;MAAED,GAAG,EAAEC;IAAO,CAAC;EACxB;EACA,OAAO;IAAEC,IAAI,EAAE,MAAMD;EAAO,CAAC;AAC/B;AAEO,MAAME,eAAe,GAAG,MAAAA,CAAO;EACpCJ,MAAM;EACNV,MAAM;EACNC,cAAc;EACdc,OAAO;EACPC,cAAc,GAAG;AAOnB,CAAC,KAAoC;EACnC,IAAI;IACF,MAAMC,cAAc,GAAG,MAAMR,aAAa,CAACC,MAAM,EAAEV,MAAM,CAAC;IAC1D,IAAI,MAAM,IAAIiB,cAAc,EAAE;MAC5B,OAAOA,cAAc,CAACJ,IAAI;IAC5B;IAEA,MAAMK,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;IACxC,MAAMC,SAAS,GAAGC,UAAU,CAAC,MAAM;MACjCH,UAAU,CAACI,KAAK,CAAC,CAAC;IACpB,CAAC,EAAEN,cAAc,CAAC;IAElB,MAAMO,OAAO,GAAGxB,mBAAmB,CAACC,MAAM,EAAEC,cAAc,CAAC;IAE3D,MAAMuB,QAAQ,GAAG,MAAMC,KAAK,CAACR,cAAc,CAACN,GAAG,EAAE;MAC/Ce,MAAM,EAAER,UAAU,CAACQ,MAAM;MACzBH;IACF,CAAC,CAAC;IACFI,YAAY,CAACP,SAAS,CAAC;IAEvB,IAAII,QAAQ,CAACI,MAAM,KAAK,GAAG,EAAE;MAC3B,MAAM,IAAIC,KAAK,CAACL,QAAQ,CAACM,UAAU,CAAC;IACtC;IACA,OAAON,QAAQ,CAACO,IAAI,CAAC,CAAC;EACxB,CAAC,CAAC,OAAOC,KAAU,EAAE;IACnB,IAAIA,KAAK,CAACC,IAAI,KAAK,YAAY,EAAE;MAC/BlB,OAAO,GAAG,IAAIc,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC3C,CAAC,MAAM;MACLd,OAAO,GAAGiB,KAAc,CAAC;IAC3B;IACA,OAAO,IAAI;EACb;AACF,CAAC;AAACE,OAAA,CAAApB,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -55,11 +55,13 @@ async function updateBundle(paramsOrBundleId, fileUrl) {
55
55
  const existing = inflightUpdates.get(updateBundleId);
56
56
  if (existing) return existing;
57
57
  const targetFileUrl = typeof paramsOrBundleId === "string" ? fileUrl ?? null : paramsOrBundleId.fileUrl;
58
+ const targetFileHash = typeof paramsOrBundleId === "string" ? undefined : paramsOrBundleId.fileHash;
58
59
  const promise = (async () => {
59
60
  try {
60
61
  const ok = await _NativeHotUpdater.default.updateBundle({
61
62
  bundleId: updateBundleId,
62
- fileUrl: targetFileUrl
63
+ fileUrl: targetFileUrl,
64
+ fileHash: targetFileHash ?? null
63
65
  });
64
66
  if (ok) {
65
67
  lastInstalledBundleId = updateBundleId;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_NativeHotUpdater","_interopRequireDefault","e","__esModule","default","NIL_UUID","HotUpdaterConstants","exports","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","addListener","eventName","listener","eventEmitter","NativeEventEmitter","HotUpdaterNative","subscription","remove","inflightUpdates","Map","lastInstalledBundleId","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","existing","get","targetFileUrl","promise","ok","delete","set","getAppVersion","constants","getConstants","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_NativeHotUpdater","_interopRequireDefault","e","__esModule","default","NIL_UUID","HotUpdaterConstants","exports","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","addListener","eventName","listener","eventEmitter","NativeEventEmitter","HotUpdaterNative","subscription","remove","inflightUpdates","Map","lastInstalledBundleId","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","existing","get","targetFileUrl","targetFileHash","undefined","fileHash","promise","ok","delete","set","getAppVersion","constants","getConstants","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAuBpCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA4BpCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
@@ -45,6 +45,7 @@ export async function checkForUpdate(options) {
45
45
  return updateBundle({
46
46
  bundleId: updateInfo.id,
47
47
  fileUrl: updateInfo.fileUrl,
48
+ fileHash: updateInfo?.fileHash ?? null,
48
49
  status: updateInfo.status
49
50
  });
50
51
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","HotUpdaterError","fetchUpdateInfo","getAppVersion","getBundleId","getChannel","getFingerprintHash","getMinBundleId","updateBundle","checkForUpdate","options","__DEV__","includes","OS","onError","currentAppVersion","platform","currentBundleId","minBundleId","channel","fingerprintHash","source","params","bundleId","appVersion","requestHeaders","requestTimeout","then","updateInfo","id","fileUrl","status","getUpdateSource","baseUrl","updateStrategy"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,eAAe,QAAQ,YAAS;AACzC,SAASC,eAAe,QAA2B,sBAAmB;AACtE,SACEC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,cAAc,EACdC,YAAY,QACP,aAAU;AAqBjB,OAAO,eAAeC,cAAcA,CAClCC,OAA8B,EACQ;EACtC,IAAIC,OAAO,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACZ,QAAQ,CAACa,EAAE,CAAC,EAAE;IAC7CH,OAAO,CAACI,OAAO,GACb,IAAIb,eAAe,CAAC,iDAAiD,CACvE,CAAC;IACD,OAAO,IAAI;EACb;EAEA,MAAMc,iBAAiB,GAAGZ,aAAa,CAAC,CAAC;EACzC,MAAMa,QAAQ,GAAGhB,QAAQ,CAACa,EAAuB;EACjD,MAAMI,eAAe,GAAGb,WAAW,CAAC,CAAC;EACrC,MAAMc,WAAW,GAAGX,cAAc,CAAC,CAAC;EACpC,MAAMY,OAAO,GAAGd,UAAU,CAAC,CAAC;EAE5B,IAAI,CAACU,iBAAiB,EAAE;IACtBL,OAAO,CAACI,OAAO,GAAG,IAAIb,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACnE,OAAO,IAAI;EACb;EAEA,MAAMmB,eAAe,GAAGd,kBAAkB,CAAC,CAAC;EAE5C,OAAOJ,eAAe,CAAC;IACrBmB,MAAM,EAAEX,OAAO,CAACW,MAAM;IACtBC,MAAM,EAAE;MACNC,QAAQ,EAAEN,eAAe;MACzBO,UAAU,EAAET,iBAAiB;MAC7BC,QAAQ;MACRE,WAAW;MACXC,OAAO;MACPC;IACF,CAAC;IACDK,cAAc,EAAEf,OAAO,CAACe,cAAc;IACtCX,OAAO,EAAEJ,OAAO,CAACI,OAAO;IACxBY,cAAc,EAAEhB,OAAO,CAACgB;EAC1B,CAAC,CAAC,CAACC,IAAI,CAAEC,UAAU,IAAK;IACtB,IAAI,CAACA,UAAU,EAAE;MACf,OAAO,IAAI;IACb;IAEA,OAAO;MACL,GAAGA,UAAU;MACbpB,YAAY,EAAE,MAAAA,CAAA,KAAY;QACxB,OAAOA,YAAY,CAAC;UAClBe,QAAQ,EAAEK,UAAU,CAACC,EAAE;UACvBC,OAAO,EAAEF,UAAU,CAACE,OAAO;UAC3BC,MAAM,EAAEH,UAAU,CAACG;QACrB,CAAC,CAAC;MACJ;IACF,CAAC;EACH,CAAC,CAAC;AACJ;AAYA,OAAO,MAAMC,eAAe,GAC1BA,CAACC,OAAe,EAAEvB,OAA+B,KAChDY,MAA0B,IAAK;EAC9B,QAAQZ,OAAO,CAACwB,cAAc;IAC5B,KAAK,aAAa;MAAE;QAClB,IAAI,CAACZ,MAAM,CAACF,eAAe,EAAE;UAC3B,MAAM,IAAInB,eAAe,CAAC,8BAA8B,CAAC;QAC3D;QACA,OAAO,GAAGgC,OAAO,gBAAgBX,MAAM,CAACN,QAAQ,IAAIM,MAAM,CAACF,eAAe,IAAIE,MAAM,CAACH,OAAO,IAAIG,MAAM,CAACJ,WAAW,IAAII,MAAM,CAACC,QAAQ,EAAE;MACzI;IACA,KAAK,YAAY;MAAE;QACjB,OAAO,GAAGU,OAAO,gBAAgBX,MAAM,CAACN,QAAQ,IAAIM,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACH,OAAO,IAAIG,MAAM,CAACJ,WAAW,IAAII,MAAM,CAACC,QAAQ,EAAE;MACpI;IACA;MACE,OAAOU,OAAO;EAClB;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Platform","HotUpdaterError","fetchUpdateInfo","getAppVersion","getBundleId","getChannel","getFingerprintHash","getMinBundleId","updateBundle","checkForUpdate","options","__DEV__","includes","OS","onError","currentAppVersion","platform","currentBundleId","minBundleId","channel","fingerprintHash","source","params","bundleId","appVersion","requestHeaders","requestTimeout","then","updateInfo","id","fileUrl","fileHash","status","getUpdateSource","baseUrl","updateStrategy"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,eAAe,QAAQ,YAAS;AACzC,SAASC,eAAe,QAA2B,sBAAmB;AACtE,SACEC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,cAAc,EACdC,YAAY,QACP,aAAU;AAqBjB,OAAO,eAAeC,cAAcA,CAClCC,OAA8B,EACQ;EACtC,IAAIC,OAAO,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACZ,QAAQ,CAACa,EAAE,CAAC,EAAE;IAC7CH,OAAO,CAACI,OAAO,GACb,IAAIb,eAAe,CAAC,iDAAiD,CACvE,CAAC;IACD,OAAO,IAAI;EACb;EAEA,MAAMc,iBAAiB,GAAGZ,aAAa,CAAC,CAAC;EACzC,MAAMa,QAAQ,GAAGhB,QAAQ,CAACa,EAAuB;EACjD,MAAMI,eAAe,GAAGb,WAAW,CAAC,CAAC;EACrC,MAAMc,WAAW,GAAGX,cAAc,CAAC,CAAC;EACpC,MAAMY,OAAO,GAAGd,UAAU,CAAC,CAAC;EAE5B,IAAI,CAACU,iBAAiB,EAAE;IACtBL,OAAO,CAACI,OAAO,GAAG,IAAIb,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACnE,OAAO,IAAI;EACb;EAEA,MAAMmB,eAAe,GAAGd,kBAAkB,CAAC,CAAC;EAE5C,OAAOJ,eAAe,CAAC;IACrBmB,MAAM,EAAEX,OAAO,CAACW,MAAM;IACtBC,MAAM,EAAE;MACNC,QAAQ,EAAEN,eAAe;MACzBO,UAAU,EAAET,iBAAiB;MAC7BC,QAAQ;MACRE,WAAW;MACXC,OAAO;MACPC;IACF,CAAC;IACDK,cAAc,EAAEf,OAAO,CAACe,cAAc;IACtCX,OAAO,EAAEJ,OAAO,CAACI,OAAO;IACxBY,cAAc,EAAEhB,OAAO,CAACgB;EAC1B,CAAC,CAAC,CAACC,IAAI,CAAEC,UAAU,IAAK;IACtB,IAAI,CAACA,UAAU,EAAE;MACf,OAAO,IAAI;IACb;IAEA,OAAO;MACL,GAAGA,UAAU;MACbpB,YAAY,EAAE,MAAAA,CAAA,KAAY;QACxB,OAAOA,YAAY,CAAC;UAClBe,QAAQ,EAAEK,UAAU,CAACC,EAAE;UACvBC,OAAO,EAAEF,UAAU,CAACE,OAAO;UAC3BC,QAAQ,EAAEH,UAAU,EAAEG,QAAQ,IAAI,IAAI;UACtCC,MAAM,EAAEJ,UAAU,CAACI;QACrB,CAAC,CAAC;MACJ;IACF,CAAC;EACH,CAAC,CAAC;AACJ;AAYA,OAAO,MAAMC,eAAe,GAC1BA,CAACC,OAAe,EAAExB,OAA+B,KAChDY,MAA0B,IAAK;EAC9B,QAAQZ,OAAO,CAACyB,cAAc;IAC5B,KAAK,aAAa;MAAE;QAClB,IAAI,CAACb,MAAM,CAACF,eAAe,EAAE;UAC3B,MAAM,IAAInB,eAAe,CAAC,8BAA8B,CAAC;QAC3D;QACA,OAAO,GAAGiC,OAAO,gBAAgBZ,MAAM,CAACN,QAAQ,IAAIM,MAAM,CAACF,eAAe,IAAIE,MAAM,CAACH,OAAO,IAAIG,MAAM,CAACJ,WAAW,IAAII,MAAM,CAACC,QAAQ,EAAE;MACzI;IACA,KAAK,YAAY;MAAE;QACjB,OAAO,GAAGW,OAAO,gBAAgBZ,MAAM,CAACN,QAAQ,IAAIM,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACH,OAAO,IAAIG,MAAM,CAACJ,WAAW,IAAII,MAAM,CAACC,QAAQ,EAAE;MACpI;IACA;MACE,OAAOW,OAAO;EAClB;AACF,CAAC","ignoreList":[]}
@@ -17,7 +17,7 @@ function buildRequestHeaders(params, requestHeaders) {
17
17
  ...(params.channel && {
18
18
  "x-channel": params.channel
19
19
  }),
20
- ...(requestHeaders ?? {})
20
+ ...requestHeaders
21
21
  };
22
22
  }
23
23
  async function resolveSource(source, params) {
@@ -1 +1 @@
1
- {"version":3,"names":["buildRequestHeaders","params","requestHeaders","updateStrategy","fingerprintHash","platform","bundleId","appVersion","minBundleId","channel","resolveSource","source","url","result","info","fetchUpdateInfo","onError","requestTimeout","resolvedSource","controller","AbortController","timeoutId","setTimeout","abort","headers","response","fetch","signal","clearTimeout","status","Error","statusText","json","error","name"],"sourceRoot":"../../src","sources":["fetchUpdateInfo.ts"],"mappings":";;AAWA,SAASA,mBAAmBA,CAC1BC,MAA0B,EAC1BC,cAAuC,EACf;EACxB,MAAMC,cAA8B,GAAGF,MAAM,CAACG,eAAe,GACzD,aAAa,GACb,YAAY;EAEhB,OAAO;IACL,cAAc,EAAE,kBAAkB;IAClC,gBAAgB,EAAEH,MAAM,CAACI,QAAQ;IACjC,aAAa,EAAEJ,MAAM,CAACK,QAAQ;IAC9B,IAAIH,cAAc,KAAK,aAAa,GAChC;MAAE,oBAAoB,EAAEF,MAAM,CAACG;IAAiB,CAAC,GACjD;MAAE,eAAe,EAAEH,MAAM,CAACM;IAAW,CAAC,CAAC;IAC3C,IAAIN,MAAM,CAACO,WAAW,IAAI;MAAE,iBAAiB,EAAEP,MAAM,CAACO;IAAY,CAAC,CAAC;IACpE,IAAIP,MAAM,CAACQ,OAAO,IAAI;MAAE,WAAW,EAAER,MAAM,CAACQ;IAAQ,CAAC,CAAC;IACtD,IAAIP,cAAc,IAAI,CAAC,CAAC;EAC1B,CAAC;AACH;AAEA,eAAeQ,aAAaA,CAC1BC,MAAoB,EACpBV,MAA0B,EACiC;EAC3D,IAAI,OAAOU,MAAM,KAAK,UAAU,EAAE;IAChC,OAAO;MAAEC,GAAG,EAAED;IAAO,CAAC;EACxB;EACA,MAAME,MAAM,GAAGF,MAAM,CAACV,MAAM,CAAC;EAC7B,IAAI,OAAOY,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAO;MAAED,GAAG,EAAEC;IAAO,CAAC;EACxB;EACA,OAAO;IAAEC,IAAI,EAAE,MAAMD;EAAO,CAAC;AAC/B;AAEA,OAAO,MAAME,eAAe,GAAG,MAAAA,CAAO;EACpCJ,MAAM;EACNV,MAAM;EACNC,cAAc;EACdc,OAAO;EACPC,cAAc,GAAG;AAOnB,CAAC,KAAoC;EACnC,IAAI;IACF,MAAMC,cAAc,GAAG,MAAMR,aAAa,CAACC,MAAM,EAAEV,MAAM,CAAC;IAC1D,IAAI,MAAM,IAAIiB,cAAc,EAAE;MAC5B,OAAOA,cAAc,CAACJ,IAAI;IAC5B;IAEA,MAAMK,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;IACxC,MAAMC,SAAS,GAAGC,UAAU,CAAC,MAAM;MACjCH,UAAU,CAACI,KAAK,CAAC,CAAC;IACpB,CAAC,EAAEN,cAAc,CAAC;IAElB,MAAMO,OAAO,GAAGxB,mBAAmB,CAACC,MAAM,EAAEC,cAAc,CAAC;IAE3D,MAAMuB,QAAQ,GAAG,MAAMC,KAAK,CAACR,cAAc,CAACN,GAAG,EAAE;MAC/Ce,MAAM,EAAER,UAAU,CAACQ,MAAM;MACzBH;IACF,CAAC,CAAC;IACFI,YAAY,CAACP,SAAS,CAAC;IAEvB,IAAII,QAAQ,CAACI,MAAM,KAAK,GAAG,EAAE;MAC3B,MAAM,IAAIC,KAAK,CAACL,QAAQ,CAACM,UAAU,CAAC;IACtC;IACA,OAAON,QAAQ,CAACO,IAAI,CAAC,CAAC;EACxB,CAAC,CAAC,OAAOC,KAAU,EAAE;IACnB,IAAIA,KAAK,CAACC,IAAI,KAAK,YAAY,EAAE;MAC/BlB,OAAO,GAAG,IAAIc,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC3C,CAAC,MAAM;MACLd,OAAO,GAAGiB,KAAc,CAAC;IAC3B;IACA,OAAO,IAAI;EACb;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["buildRequestHeaders","params","requestHeaders","updateStrategy","fingerprintHash","platform","bundleId","appVersion","minBundleId","channel","resolveSource","source","url","result","info","fetchUpdateInfo","onError","requestTimeout","resolvedSource","controller","AbortController","timeoutId","setTimeout","abort","headers","response","fetch","signal","clearTimeout","status","Error","statusText","json","error","name"],"sourceRoot":"../../src","sources":["fetchUpdateInfo.ts"],"mappings":";;AAWA,SAASA,mBAAmBA,CAC1BC,MAA0B,EAC1BC,cAAuC,EACf;EACxB,MAAMC,cAA8B,GAAGF,MAAM,CAACG,eAAe,GACzD,aAAa,GACb,YAAY;EAEhB,OAAO;IACL,cAAc,EAAE,kBAAkB;IAClC,gBAAgB,EAAEH,MAAM,CAACI,QAAQ;IACjC,aAAa,EAAEJ,MAAM,CAACK,QAAQ;IAC9B,IAAIH,cAAc,KAAK,aAAa,GAChC;MAAE,oBAAoB,EAAEF,MAAM,CAACG;IAAiB,CAAC,GACjD;MAAE,eAAe,EAAEH,MAAM,CAACM;IAAW,CAAC,CAAC;IAC3C,IAAIN,MAAM,CAACO,WAAW,IAAI;MAAE,iBAAiB,EAAEP,MAAM,CAACO;IAAY,CAAC,CAAC;IACpE,IAAIP,MAAM,CAACQ,OAAO,IAAI;MAAE,WAAW,EAAER,MAAM,CAACQ;IAAQ,CAAC,CAAC;IACtD,GAAGP;EACL,CAAC;AACH;AAEA,eAAeQ,aAAaA,CAC1BC,MAAoB,EACpBV,MAA0B,EACiC;EAC3D,IAAI,OAAOU,MAAM,KAAK,UAAU,EAAE;IAChC,OAAO;MAAEC,GAAG,EAAED;IAAO,CAAC;EACxB;EACA,MAAME,MAAM,GAAGF,MAAM,CAACV,MAAM,CAAC;EAC7B,IAAI,OAAOY,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAO;MAAED,GAAG,EAAEC;IAAO,CAAC;EACxB;EACA,OAAO;IAAEC,IAAI,EAAE,MAAMD;EAAO,CAAC;AAC/B;AAEA,OAAO,MAAME,eAAe,GAAG,MAAAA,CAAO;EACpCJ,MAAM;EACNV,MAAM;EACNC,cAAc;EACdc,OAAO;EACPC,cAAc,GAAG;AAOnB,CAAC,KAAoC;EACnC,IAAI;IACF,MAAMC,cAAc,GAAG,MAAMR,aAAa,CAACC,MAAM,EAAEV,MAAM,CAAC;IAC1D,IAAI,MAAM,IAAIiB,cAAc,EAAE;MAC5B,OAAOA,cAAc,CAACJ,IAAI;IAC5B;IAEA,MAAMK,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;IACxC,MAAMC,SAAS,GAAGC,UAAU,CAAC,MAAM;MACjCH,UAAU,CAACI,KAAK,CAAC,CAAC;IACpB,CAAC,EAAEN,cAAc,CAAC;IAElB,MAAMO,OAAO,GAAGxB,mBAAmB,CAACC,MAAM,EAAEC,cAAc,CAAC;IAE3D,MAAMuB,QAAQ,GAAG,MAAMC,KAAK,CAACR,cAAc,CAACN,GAAG,EAAE;MAC/Ce,MAAM,EAAER,UAAU,CAACQ,MAAM;MACzBH;IACF,CAAC,CAAC;IACFI,YAAY,CAACP,SAAS,CAAC;IAEvB,IAAII,QAAQ,CAACI,MAAM,KAAK,GAAG,EAAE;MAC3B,MAAM,IAAIC,KAAK,CAACL,QAAQ,CAACM,UAAU,CAAC;IACtC;IACA,OAAON,QAAQ,CAACO,IAAI,CAAC,CAAC;EACxB,CAAC,CAAC,OAAOC,KAAU,EAAE;IACnB,IAAIA,KAAK,CAACC,IAAI,KAAK,YAAY,EAAE;MAC/BlB,OAAO,GAAG,IAAIc,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC3C,CAAC,MAAM;MACLd,OAAO,GAAGiB,KAAc,CAAC;IAC3B;IACA,OAAO,IAAI;EACb;AACF,CAAC","ignoreList":[]}
@@ -48,11 +48,13 @@ export async function updateBundle(paramsOrBundleId, fileUrl) {
48
48
  const existing = inflightUpdates.get(updateBundleId);
49
49
  if (existing) return existing;
50
50
  const targetFileUrl = typeof paramsOrBundleId === "string" ? fileUrl ?? null : paramsOrBundleId.fileUrl;
51
+ const targetFileHash = typeof paramsOrBundleId === "string" ? undefined : paramsOrBundleId.fileHash;
51
52
  const promise = (async () => {
52
53
  try {
53
54
  const ok = await HotUpdaterNative.updateBundle({
54
55
  bundleId: updateBundleId,
55
- fileUrl: targetFileUrl
56
+ fileUrl: targetFileUrl,
57
+ fileHash: targetFileHash ?? null
56
58
  });
57
59
  if (ok) {
58
60
  lastInstalledBundleId = updateBundleId;
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","HotUpdaterNative","NIL_UUID","HotUpdaterConstants","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","addListener","eventName","listener","eventEmitter","subscription","remove","inflightUpdates","Map","lastInstalledBundleId","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","existing","get","targetFileUrl","promise","ok","delete","set","getAppVersion","constants","getConstants","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","HotUpdaterNative","NIL_UUID","HotUpdaterConstants","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","addListener","eventName","listener","eventEmitter","subscription","remove","inflightUpdates","Map","lastInstalledBundleId","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","existing","get","targetFileUrl","targetFileHash","undefined","fileHash","promise","ok","delete","set","getAppVersion","constants","getConstants","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAuBlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA4BlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUvE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsDtC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;CAC9C;AAED,eAAO,MAAM,eAAe,GACzB,SAAS,MAAM,EAAE,SAAS,sBAAsB,MAChD,QAAQ,kBAAkB,WAc1B,CAAC"}
1
+ {"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUvE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAuDtC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;CAC9C;AAED,eAAO,MAAM,eAAe,GACzB,SAAS,MAAM,EAAE,SAAS,sBAAsB,MAChD,QAAQ,kBAAkB,WAc1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAQ9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAOF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AA0DpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,qBAElB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAG7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAQ9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAOF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AAgEpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,qBAElB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAG7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC"}
@@ -2,6 +2,11 @@ import type { TurboModule } from "react-native";
2
2
  export interface UpdateBundleParams {
3
3
  bundleId: string;
4
4
  fileUrl: string | null;
5
+ /**
6
+ * SHA256 hash of the bundle file for integrity verification.
7
+ * If provided, the native layer will verify the downloaded file's hash.
8
+ */
9
+ fileHash: string | null;
5
10
  }
6
11
  export interface Spec extends TurboModule {
7
12
  reload(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAG3D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;;AAED,wBAAoE"}
1
+ {"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAG3D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;;AAED,wBAAoE"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUvE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsDtC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;CAC9C;AAED,eAAO,MAAM,eAAe,GACzB,SAAS,MAAM,EAAE,SAAS,sBAAsB,MAChD,QAAQ,kBAAkB,WAc1B,CAAC"}
1
+ {"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUvE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAuDtC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;CAC9C;AAED,eAAO,MAAM,eAAe,GACzB,SAAS,MAAM,EAAE,SAAS,sBAAsB,MAChD,QAAQ,kBAAkB,WAc1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAQ9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAOF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AA0DpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,qBAElB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAG7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAQ9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAOF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AAgEpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,qBAElB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAG7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC"}
@@ -2,6 +2,11 @@ import type { TurboModule } from "react-native";
2
2
  export interface UpdateBundleParams {
3
3
  bundleId: string;
4
4
  fileUrl: string | null;
5
+ /**
6
+ * SHA256 hash of the bundle file for integrity verification.
7
+ * If provided, the native layer will verify the downloaded file's hash.
8
+ */
9
+ fileHash: string | null;
5
10
  }
6
11
  export interface Spec extends TurboModule {
7
12
  reload(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAG3D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;;AAED,wBAAoE"}
1
+ {"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAG3D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;;AAED,wBAAoE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hot-updater/react-native",
3
- "version": "0.20.14",
3
+ "version": "0.21.0",
4
4
  "description": "React Native OTA solution for self-hosted",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -119,13 +119,13 @@
119
119
  "react-native": "0.79.1",
120
120
  "react-native-builder-bob": "^0.40.10",
121
121
  "typescript": "^5.8.3",
122
- "hot-updater": "0.20.14"
122
+ "hot-updater": "0.21.0"
123
123
  },
124
124
  "dependencies": {
125
125
  "use-sync-external-store": "1.5.0",
126
- "@hot-updater/core": "0.20.14",
127
- "@hot-updater/js": "0.20.14",
128
- "@hot-updater/plugin-core": "0.20.14"
126
+ "@hot-updater/core": "0.21.0",
127
+ "@hot-updater/plugin-core": "0.21.0",
128
+ "@hot-updater/js": "0.21.0"
129
129
  },
130
130
  "scripts": {
131
131
  "build": "bob build && tsc -p plugin/tsconfig.json",
@@ -81,6 +81,7 @@ export async function checkForUpdate(
81
81
  return updateBundle({
82
82
  bundleId: updateInfo.id,
83
83
  fileUrl: updateInfo.fileUrl,
84
+ fileHash: updateInfo?.fileHash ?? null,
84
85
  status: updateInfo.status,
85
86
  });
86
87
  },
@@ -26,7 +26,7 @@ function buildRequestHeaders(
26
26
  : { "x-app-version": params.appVersion }),
27
27
  ...(params.minBundleId && { "x-min-bundle-id": params.minBundleId }),
28
28
  ...(params.channel && { "x-channel": params.channel }),
29
- ...(requestHeaders ?? {}),
29
+ ...requestHeaders,
30
30
  };
31
31
  }
32
32
 
package/src/native.ts CHANGED
@@ -91,11 +91,17 @@ export async function updateBundle(
91
91
  ? (fileUrl ?? null)
92
92
  : paramsOrBundleId.fileUrl;
93
93
 
94
+ const targetFileHash =
95
+ typeof paramsOrBundleId === "string"
96
+ ? undefined
97
+ : paramsOrBundleId.fileHash;
98
+
94
99
  const promise = (async () => {
95
100
  try {
96
101
  const ok = await HotUpdaterNative.updateBundle({
97
102
  bundleId: updateBundleId,
98
103
  fileUrl: targetFileUrl,
104
+ fileHash: targetFileHash ?? null,
99
105
  });
100
106
  if (ok) {
101
107
  lastInstalledBundleId = updateBundleId;
@@ -4,6 +4,11 @@ import { TurboModuleRegistry } from "react-native";
4
4
  export interface UpdateBundleParams {
5
5
  bundleId: string;
6
6
  fileUrl: string | null;
7
+ /**
8
+ * SHA256 hash of the bundle file for integrity verification.
9
+ * If provided, the native layer will verify the downloaded file's hash.
10
+ */
11
+ fileHash: string | null;
7
12
  }
8
13
 
9
14
  export interface Spec extends TurboModule {
@@ -1,98 +0,0 @@
1
- package com.hotupdater
2
-
3
- import android.util.Log
4
- import kotlinx.coroutines.Dispatchers
5
- import kotlinx.coroutines.withContext
6
- import java.io.File
7
- import java.net.HttpURLConnection
8
- import java.net.URL
9
-
10
- /**
11
- * Result wrapper for download operations
12
- */
13
- sealed class DownloadResult {
14
- data class Success(
15
- val file: File,
16
- ) : DownloadResult()
17
-
18
- data class Error(
19
- val exception: Exception,
20
- ) : DownloadResult()
21
- }
22
-
23
- /**
24
- * Interface for download operations
25
- */
26
- interface DownloadService {
27
- /**
28
- * Downloads a file from a URL
29
- * @param fileUrl The URL to download from
30
- * @param destination The local file to save to
31
- * @param progressCallback Callback for download progress updates
32
- * @return Result indicating success or failure
33
- */
34
- suspend fun downloadFile(
35
- fileUrl: URL,
36
- destination: File,
37
- progressCallback: (Double) -> Unit,
38
- ): DownloadResult
39
- }
40
-
41
- /**
42
- * Implementation of DownloadService using HttpURLConnection
43
- */
44
- class HttpDownloadService : DownloadService {
45
- override suspend fun downloadFile(
46
- fileUrl: URL,
47
- destination: File,
48
- progressCallback: (Double) -> Unit,
49
- ): DownloadResult =
50
- withContext(Dispatchers.IO) {
51
- val conn =
52
- try {
53
- fileUrl.openConnection() as HttpURLConnection
54
- } catch (e: Exception) {
55
- Log.d("DownloadService", "Failed to open connection: ${e.message}")
56
- return@withContext DownloadResult.Error(e)
57
- }
58
-
59
- try {
60
- conn.connect()
61
- val totalSize = conn.contentLength
62
- if (totalSize <= 0) {
63
- Log.d("DownloadService", "Invalid content length: $totalSize")
64
- return@withContext DownloadResult.Error(Exception("Invalid content length: $totalSize"))
65
- }
66
-
67
- // Make sure parent directories exist
68
- destination.parentFile?.mkdirs()
69
-
70
- conn.inputStream.use { input ->
71
- destination.outputStream().use { output ->
72
- val buffer = ByteArray(8 * 1024)
73
- var bytesRead: Int
74
- var totalRead = 0L
75
- var lastProgressTime = System.currentTimeMillis()
76
-
77
- while (input.read(buffer).also { bytesRead = it } != -1) {
78
- output.write(buffer, 0, bytesRead)
79
- totalRead += bytesRead
80
- val currentTime = System.currentTimeMillis()
81
- if (currentTime - lastProgressTime >= 100) {
82
- val progress = totalRead.toDouble() / totalSize
83
- progressCallback.invoke(progress)
84
- lastProgressTime = currentTime
85
- }
86
- }
87
- progressCallback.invoke(1.0)
88
- }
89
- }
90
- DownloadResult.Success(destination)
91
- } catch (e: Exception) {
92
- Log.d("DownloadService", "Failed to download data from URL: $fileUrl, Error: ${e.message}")
93
- DownloadResult.Error(e)
94
- } finally {
95
- conn.disconnect()
96
- }
97
- }
98
- }
@@ -1,74 +0,0 @@
1
- package com.hotupdater
2
-
3
- import android.util.Log
4
- import java.io.BufferedInputStream
5
- import java.io.File
6
- import java.io.FileInputStream
7
- import java.io.FileOutputStream
8
- import java.util.zip.ZipEntry
9
- import java.util.zip.ZipInputStream
10
-
11
- /**
12
- * Interface for unzip operations
13
- */
14
- interface UnzipService {
15
- /**
16
- * Extracts a zip file to a destination directory
17
- * @param filePath Path to the zip file
18
- * @param destinationPath Directory to extract contents to
19
- * @return true if extraction was successful, false otherwise
20
- */
21
- fun extractZipFile(
22
- filePath: String,
23
- destinationPath: String,
24
- ): Boolean
25
- }
26
-
27
- /**
28
- * Implementation of UnzipService using ZipInputStream for 16KB page compatibility
29
- */
30
- class ZipFileUnzipService : UnzipService {
31
- override fun extractZipFile(
32
- filePath: String,
33
- destinationPath: String,
34
- ): Boolean =
35
- try {
36
- val destinationDir = File(destinationPath)
37
- if (!destinationDir.exists()) {
38
- destinationDir.mkdirs()
39
- }
40
-
41
- FileInputStream(filePath).use { fileInputStream ->
42
- BufferedInputStream(fileInputStream).use { bufferedInputStream ->
43
- ZipInputStream(bufferedInputStream).use { zipInputStream ->
44
- var entry: ZipEntry? = zipInputStream.nextEntry
45
- while (entry != null) {
46
- val file = File(destinationPath, entry.name)
47
-
48
- // Validate that the entry path doesn't escape the destination directory
49
- if (!file.canonicalPath.startsWith(destinationDir.canonicalPath)) {
50
- Log.w("UnzipService", "Skipping potentially malicious zip entry: ${entry.name}")
51
- entry = zipInputStream.nextEntry
52
- continue
53
- }
54
-
55
- if (entry.isDirectory) {
56
- file.mkdirs()
57
- } else {
58
- file.parentFile?.mkdirs()
59
- FileOutputStream(file).use { output ->
60
- zipInputStream.copyTo(output)
61
- }
62
- }
63
- zipInputStream.closeEntry()
64
- entry = zipInputStream.nextEntry
65
- }
66
- }
67
- }
68
- }
69
- true
70
- } catch (e: Exception) {
71
- Log.d("UnzipService", "Failed to unzip file: ${e.message}")
72
- false
73
- }
74
- }
@@ -1,25 +0,0 @@
1
- import Foundation
2
- import SSZipArchive
3
-
4
- protocol UnzipService {
5
- /**
6
- * Unzips a file to a destination directory.
7
- * @param file Path to the zip file
8
- * @param destination Directory to extract to
9
- * @throws Error if unzipping fails
10
- */
11
- func unzip(file: String, to destination: String) throws
12
- }
13
-
14
- class SSZipArchiveUnzipService: UnzipService {
15
- func unzip(file: String, to destination: String) throws {
16
- var error: Error?
17
-
18
- do {
19
- try SSZipArchive.unzipFile(atPath: file, toDestination: destination, overwrite: true, password: nil)
20
- } catch let caughtError {
21
- error = caughtError
22
- throw error!
23
- }
24
- }
25
- }