@onekeyfe/react-native-range-downloader 3.0.81 → 3.0.82

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 (146) hide show
  1. package/ReactNativeRangeDownloader.podspec +7 -0
  2. package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveRules.kt +291 -0
  3. package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactOrphanSweep.kt +111 -0
  4. package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactStore.kt +822 -0
  5. package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/ReactNativeRangeDownloader.kt +148 -0
  6. package/android/src/test/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveRulesTest.kt +114 -0
  7. package/android/src/test/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactDeadlineTest.kt +26 -0
  8. package/android/src/test/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactOrphanSweepTest.kt +107 -0
  9. package/ios/FirmwareArchiveMinizipBridge.h +33 -0
  10. package/ios/FirmwareArchiveMinizipBridge.mm +213 -0
  11. package/ios/FirmwareArtifactStore.swift +1508 -0
  12. package/ios/RangeDownloadLogic.swift +317 -0
  13. package/ios/ReactNativeRangeDownloader.swift +214 -6
  14. package/lib/module/index.js +2 -1
  15. package/lib/module/index.js.map +1 -1
  16. package/lib/typescript/src/ReactNativeRangeDownloader.nitro.d.ts +92 -1
  17. package/lib/typescript/src/ReactNativeRangeDownloader.nitro.d.ts.map +1 -1
  18. package/lib/typescript/src/index.d.ts +1 -0
  19. package/lib/typescript/src/index.d.ts.map +1 -1
  20. package/nitrogen/generated/android/c++/JDownloadChannel.hpp +8 -6
  21. package/nitrogen/generated/android/c++/JFirmwareArchiveExpectedEntry.hpp +69 -0
  22. package/nitrogen/generated/android/c++/JFirmwareArchiveMaterializeParams.hpp +87 -0
  23. package/nitrogen/generated/android/c++/JFirmwareArchiveMaterializeResult.hpp +80 -0
  24. package/nitrogen/generated/android/c++/JFirmwareArchiveMaterializedArtifact.hpp +63 -0
  25. package/nitrogen/generated/android/c++/JFirmwareArtifactCancelParams.hpp +57 -0
  26. package/nitrogen/generated/android/c++/JFirmwareArtifactCapabilities.hpp +88 -0
  27. package/nitrogen/generated/android/c++/JFirmwareArtifactDownloadParams.hpp +98 -0
  28. package/nitrogen/generated/android/c++/JFirmwareArtifactLease.hpp +57 -0
  29. package/nitrogen/generated/android/c++/JFirmwareArtifactLeaseCreateParams.hpp +57 -0
  30. package/nitrogen/generated/android/c++/JFirmwareArtifactLeaseReleaseParams.hpp +61 -0
  31. package/nitrogen/generated/android/c++/JFirmwareArtifactLeaseRetainParams.hpp +61 -0
  32. package/nitrogen/generated/android/c++/JFirmwareArtifactReaderCloseParams.hpp +57 -0
  33. package/nitrogen/generated/android/c++/JFirmwareArtifactReaderInfo.hpp +61 -0
  34. package/nitrogen/generated/android/c++/JFirmwareArtifactReaderReadParams.hpp +65 -0
  35. package/nitrogen/generated/android/c++/JFirmwareArtifactReceipt.hpp +69 -0
  36. package/nitrogen/generated/android/c++/JFirmwareArtifactRefParams.hpp +57 -0
  37. package/nitrogen/generated/android/c++/JFirmwareArtifactSweepResult.hpp +61 -0
  38. package/nitrogen/generated/android/c++/JFunc_void_RangeDownloadEvent.hpp +3 -3
  39. package/nitrogen/generated/android/c++/JHybridReactNativeRangeDownloaderSpec.cpp +274 -25
  40. package/nitrogen/generated/android/c++/JHybridReactNativeRangeDownloaderSpec.hpp +32 -22
  41. package/nitrogen/generated/android/c++/JRangeDownloadEvent.hpp +2 -2
  42. package/nitrogen/generated/android/c++/JRangeDownloadOutcome.hpp +6 -7
  43. package/nitrogen/generated/android/c++/JRangeDownloadParams.hpp +2 -2
  44. package/nitrogen/generated/android/c++/JRangeDownloadResult.hpp +2 -2
  45. package/nitrogen/generated/android/c++/JRangeFallbackKind.hpp +12 -13
  46. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/DownloadChannel.kt +5 -2
  47. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveExpectedEntry.kt +47 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveMaterializeParams.kt +44 -0
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveMaterializeResult.kt +38 -0
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArchiveMaterializedArtifact.kt +41 -0
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactCancelParams.kt +38 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactCapabilities.kt +47 -0
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactDownloadParams.kt +68 -0
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactLease.kt +38 -0
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactLeaseCreateParams.kt +38 -0
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactLeaseReleaseParams.kt +41 -0
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactLeaseRetainParams.kt +41 -0
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactReaderCloseParams.kt +38 -0
  59. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactReaderInfo.kt +41 -0
  60. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactReaderReadParams.kt +44 -0
  61. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactReceipt.kt +47 -0
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactRefParams.kt +38 -0
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactSweepResult.kt +41 -0
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/Func_void_RangeDownloadEvent.kt +1 -1
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/HybridReactNativeRangeDownloaderSpec.kt +65 -19
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/RangeDownloadEvent.kt +2 -2
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/RangeDownloadOutcome.kt +3 -1
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/RangeDownloadParams.kt +2 -2
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/RangeDownloadResult.kt +2 -2
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/RangeFallbackKind.kt +3 -1
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/reactnativerangedownloaderOnLoad.kt +1 -1
  72. package/nitrogen/generated/android/reactnativerangedownloader+autolinking.cmake +1 -1
  73. package/nitrogen/generated/android/reactnativerangedownloader+autolinking.gradle +1 -1
  74. package/nitrogen/generated/android/reactnativerangedownloaderOnLoad.cpp +28 -18
  75. package/nitrogen/generated/android/reactnativerangedownloaderOnLoad.hpp +14 -5
  76. package/nitrogen/generated/ios/ReactNativeRangeDownloader+autolinking.rb +2 -2
  77. package/nitrogen/generated/ios/ReactNativeRangeDownloader-Swift-Cxx-Bridge.cpp +49 -1
  78. package/nitrogen/generated/ios/ReactNativeRangeDownloader-Swift-Cxx-Bridge.hpp +348 -4
  79. package/nitrogen/generated/ios/ReactNativeRangeDownloader-Swift-Cxx-Umbrella.hpp +54 -1
  80. package/nitrogen/generated/ios/ReactNativeRangeDownloaderAutolinking.mm +1 -1
  81. package/nitrogen/generated/ios/ReactNativeRangeDownloaderAutolinking.swift +9 -8
  82. package/nitrogen/generated/ios/c++/HybridReactNativeRangeDownloaderSpecSwift.cpp +1 -1
  83. package/nitrogen/generated/ios/c++/HybridReactNativeRangeDownloaderSpecSwift.hpp +159 -1
  84. package/nitrogen/generated/ios/swift/DownloadChannel.swift +5 -1
  85. package/nitrogen/generated/ios/swift/FirmwareArchiveExpectedEntry.swift +44 -0
  86. package/nitrogen/generated/ios/swift/FirmwareArchiveMaterializeParams.swift +58 -0
  87. package/nitrogen/generated/ios/swift/FirmwareArchiveMaterializeResult.swift +35 -0
  88. package/nitrogen/generated/ios/swift/FirmwareArchiveMaterializedArtifact.swift +34 -0
  89. package/nitrogen/generated/ios/swift/FirmwareArtifactCancelParams.swift +29 -0
  90. package/nitrogen/generated/ios/swift/FirmwareArtifactCapabilities.swift +50 -0
  91. package/nitrogen/generated/ios/swift/FirmwareArtifactDownloadParams.swift +131 -0
  92. package/nitrogen/generated/ios/swift/FirmwareArtifactLease.swift +29 -0
  93. package/nitrogen/generated/ios/swift/FirmwareArtifactLeaseCreateParams.swift +29 -0
  94. package/nitrogen/generated/ios/swift/FirmwareArtifactLeaseReleaseParams.swift +34 -0
  95. package/nitrogen/generated/ios/swift/FirmwareArtifactLeaseRetainParams.swift +34 -0
  96. package/nitrogen/generated/ios/swift/FirmwareArtifactReaderCloseParams.swift +29 -0
  97. package/nitrogen/generated/ios/swift/FirmwareArtifactReaderInfo.swift +34 -0
  98. package/nitrogen/generated/ios/swift/FirmwareArtifactReaderReadParams.swift +39 -0
  99. package/nitrogen/generated/ios/swift/FirmwareArtifactReceipt.swift +44 -0
  100. package/nitrogen/generated/ios/swift/FirmwareArtifactRefParams.swift +29 -0
  101. package/nitrogen/generated/ios/swift/FirmwareArtifactSweepResult.swift +34 -0
  102. package/nitrogen/generated/ios/swift/Func_void.swift +1 -2
  103. package/nitrogen/generated/ios/swift/Func_void_FirmwareArchiveMaterializeResult.swift +46 -0
  104. package/nitrogen/generated/ios/swift/Func_void_FirmwareArtifactLease.swift +46 -0
  105. package/nitrogen/generated/ios/swift/Func_void_FirmwareArtifactReaderInfo.swift +46 -0
  106. package/nitrogen/generated/ios/swift/Func_void_FirmwareArtifactReceipt.swift +46 -0
  107. package/nitrogen/generated/ios/swift/Func_void_FirmwareArtifactSweepResult.swift +46 -0
  108. package/nitrogen/generated/ios/swift/Func_void_RangeDownloadEvent.swift +1 -2
  109. package/nitrogen/generated/ios/swift/Func_void_RangeDownloadResult.swift +1 -2
  110. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +1 -2
  111. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_ArrayBuffer_.swift +46 -0
  112. package/nitrogen/generated/ios/swift/HybridReactNativeRangeDownloaderSpec.swift +15 -4
  113. package/nitrogen/generated/ios/swift/HybridReactNativeRangeDownloaderSpec_cxx.swift +230 -2
  114. package/nitrogen/generated/ios/swift/RangeDownloadEvent.swift +11 -42
  115. package/nitrogen/generated/ios/swift/RangeDownloadOutcome.swift +1 -1
  116. package/nitrogen/generated/ios/swift/RangeDownloadParams.swift +72 -139
  117. package/nitrogen/generated/ios/swift/RangeDownloadResult.swift +16 -53
  118. package/nitrogen/generated/ios/swift/RangeFallbackKind.swift +1 -1
  119. package/nitrogen/generated/shared/c++/DownloadChannel.hpp +5 -1
  120. package/nitrogen/generated/shared/c++/FirmwareArchiveExpectedEntry.hpp +95 -0
  121. package/nitrogen/generated/shared/c++/FirmwareArchiveMaterializeParams.hpp +95 -0
  122. package/nitrogen/generated/shared/c++/FirmwareArchiveMaterializeResult.hpp +85 -0
  123. package/nitrogen/generated/shared/c++/FirmwareArchiveMaterializedArtifact.hpp +89 -0
  124. package/nitrogen/generated/shared/c++/FirmwareArtifactCancelParams.hpp +83 -0
  125. package/nitrogen/generated/shared/c++/FirmwareArtifactCapabilities.hpp +96 -0
  126. package/nitrogen/generated/shared/c++/FirmwareArtifactDownloadParams.hpp +124 -0
  127. package/nitrogen/generated/shared/c++/FirmwareArtifactLease.hpp +83 -0
  128. package/nitrogen/generated/shared/c++/FirmwareArtifactLeaseCreateParams.hpp +83 -0
  129. package/nitrogen/generated/shared/c++/FirmwareArtifactLeaseReleaseParams.hpp +87 -0
  130. package/nitrogen/generated/shared/c++/FirmwareArtifactLeaseRetainParams.hpp +87 -0
  131. package/nitrogen/generated/shared/c++/FirmwareArtifactReaderCloseParams.hpp +83 -0
  132. package/nitrogen/generated/shared/c++/FirmwareArtifactReaderInfo.hpp +87 -0
  133. package/nitrogen/generated/shared/c++/FirmwareArtifactReaderReadParams.hpp +91 -0
  134. package/nitrogen/generated/shared/c++/FirmwareArtifactReceipt.hpp +95 -0
  135. package/nitrogen/generated/shared/c++/FirmwareArtifactRefParams.hpp +83 -0
  136. package/nitrogen/generated/shared/c++/FirmwareArtifactSweepResult.hpp +87 -0
  137. package/nitrogen/generated/shared/c++/HybridReactNativeRangeDownloaderSpec.cpp +13 -1
  138. package/nitrogen/generated/shared/c++/HybridReactNativeRangeDownloaderSpec.hpp +59 -1
  139. package/nitrogen/generated/shared/c++/RangeDownloadEvent.hpp +25 -17
  140. package/nitrogen/generated/shared/c++/RangeDownloadOutcome.hpp +1 -1
  141. package/nitrogen/generated/shared/c++/RangeDownloadParams.hpp +43 -35
  142. package/nitrogen/generated/shared/c++/RangeDownloadResult.hpp +22 -14
  143. package/nitrogen/generated/shared/c++/RangeFallbackKind.hpp +1 -1
  144. package/package.json +4 -4
  145. package/src/ReactNativeRangeDownloader.nitro.ts +130 -1
  146. package/src/index.tsx +3 -1
@@ -2,7 +2,7 @@
2
2
  /// RangeDownloadParams.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -22,6 +22,11 @@
22
22
  #else
23
23
  #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
24
  #endif
25
+ #if __has_include(<NitroModules/PropNameIDCache.hpp>)
26
+ #include <NitroModules/PropNameIDCache.hpp>
27
+ #else
28
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
29
+ #endif
25
30
 
26
31
  // Forward declaration of `DownloadChannel` to properly resolve imports.
27
32
  namespace margelo::nitro::reactnativerangedownloader { enum class DownloadChannel; }
@@ -35,7 +40,7 @@ namespace margelo::nitro::reactnativerangedownloader {
35
40
  /**
36
41
  * A struct which can be represented as a JavaScript object (RangeDownloadParams).
37
42
  */
38
- struct RangeDownloadParams {
43
+ struct RangeDownloadParams final {
39
44
  public:
40
45
  DownloadChannel channel SWIFT_PRIVATE;
41
46
  std::string taskId SWIFT_PRIVATE;
@@ -52,6 +57,9 @@ namespace margelo::nitro::reactnativerangedownloader {
52
57
  public:
53
58
  RangeDownloadParams() = default;
54
59
  explicit RangeDownloadParams(DownloadChannel channel, std::string taskId, std::string url, std::string destFilePath, std::optional<std::string> expectedSha256, std::optional<double> segmentCount, std::optional<double> minConcurrentBytes, std::optional<double> maxSegmentAttempts, std::optional<double> requestTimeoutSeconds, std::optional<double> stallTimeoutSeconds, std::optional<double> overallDeadlineSeconds): channel(channel), taskId(taskId), url(url), destFilePath(destFilePath), expectedSha256(expectedSha256), segmentCount(segmentCount), minConcurrentBytes(minConcurrentBytes), maxSegmentAttempts(maxSegmentAttempts), requestTimeoutSeconds(requestTimeoutSeconds), stallTimeoutSeconds(stallTimeoutSeconds), overallDeadlineSeconds(overallDeadlineSeconds) {}
60
+
61
+ public:
62
+ friend bool operator==(const RangeDownloadParams& lhs, const RangeDownloadParams& rhs) = default;
55
63
  };
56
64
 
57
65
  } // namespace margelo::nitro::reactnativerangedownloader
@@ -64,32 +72,32 @@ namespace margelo::nitro {
64
72
  static inline margelo::nitro::reactnativerangedownloader::RangeDownloadParams fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
65
73
  jsi::Object obj = arg.asObject(runtime);
66
74
  return margelo::nitro::reactnativerangedownloader::RangeDownloadParams(
67
- JSIConverter<margelo::nitro::reactnativerangedownloader::DownloadChannel>::fromJSI(runtime, obj.getProperty(runtime, "channel")),
68
- JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "taskId")),
69
- JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "url")),
70
- JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "destFilePath")),
71
- JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, "expectedSha256")),
72
- JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "segmentCount")),
73
- JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "minConcurrentBytes")),
74
- JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "maxSegmentAttempts")),
75
- JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "requestTimeoutSeconds")),
76
- JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "stallTimeoutSeconds")),
77
- JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, "overallDeadlineSeconds"))
75
+ JSIConverter<margelo::nitro::reactnativerangedownloader::DownloadChannel>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "channel"))),
76
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "taskId"))),
77
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "url"))),
78
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "destFilePath"))),
79
+ JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "expectedSha256"))),
80
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "segmentCount"))),
81
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "minConcurrentBytes"))),
82
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "maxSegmentAttempts"))),
83
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "requestTimeoutSeconds"))),
84
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "stallTimeoutSeconds"))),
85
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "overallDeadlineSeconds")))
78
86
  );
79
87
  }
80
88
  static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::reactnativerangedownloader::RangeDownloadParams& arg) {
81
89
  jsi::Object obj(runtime);
82
- obj.setProperty(runtime, "channel", JSIConverter<margelo::nitro::reactnativerangedownloader::DownloadChannel>::toJSI(runtime, arg.channel));
83
- obj.setProperty(runtime, "taskId", JSIConverter<std::string>::toJSI(runtime, arg.taskId));
84
- obj.setProperty(runtime, "url", JSIConverter<std::string>::toJSI(runtime, arg.url));
85
- obj.setProperty(runtime, "destFilePath", JSIConverter<std::string>::toJSI(runtime, arg.destFilePath));
86
- obj.setProperty(runtime, "expectedSha256", JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.expectedSha256));
87
- obj.setProperty(runtime, "segmentCount", JSIConverter<std::optional<double>>::toJSI(runtime, arg.segmentCount));
88
- obj.setProperty(runtime, "minConcurrentBytes", JSIConverter<std::optional<double>>::toJSI(runtime, arg.minConcurrentBytes));
89
- obj.setProperty(runtime, "maxSegmentAttempts", JSIConverter<std::optional<double>>::toJSI(runtime, arg.maxSegmentAttempts));
90
- obj.setProperty(runtime, "requestTimeoutSeconds", JSIConverter<std::optional<double>>::toJSI(runtime, arg.requestTimeoutSeconds));
91
- obj.setProperty(runtime, "stallTimeoutSeconds", JSIConverter<std::optional<double>>::toJSI(runtime, arg.stallTimeoutSeconds));
92
- obj.setProperty(runtime, "overallDeadlineSeconds", JSIConverter<std::optional<double>>::toJSI(runtime, arg.overallDeadlineSeconds));
90
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "channel"), JSIConverter<margelo::nitro::reactnativerangedownloader::DownloadChannel>::toJSI(runtime, arg.channel));
91
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "taskId"), JSIConverter<std::string>::toJSI(runtime, arg.taskId));
92
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "url"), JSIConverter<std::string>::toJSI(runtime, arg.url));
93
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "destFilePath"), JSIConverter<std::string>::toJSI(runtime, arg.destFilePath));
94
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "expectedSha256"), JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.expectedSha256));
95
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "segmentCount"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.segmentCount));
96
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "minConcurrentBytes"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.minConcurrentBytes));
97
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "maxSegmentAttempts"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.maxSegmentAttempts));
98
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "requestTimeoutSeconds"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.requestTimeoutSeconds));
99
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "stallTimeoutSeconds"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.stallTimeoutSeconds));
100
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "overallDeadlineSeconds"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.overallDeadlineSeconds));
93
101
  return obj;
94
102
  }
95
103
  static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
@@ -100,17 +108,17 @@ namespace margelo::nitro {
100
108
  if (!nitro::isPlainObject(runtime, obj)) {
101
109
  return false;
102
110
  }
103
- if (!JSIConverter<margelo::nitro::reactnativerangedownloader::DownloadChannel>::canConvert(runtime, obj.getProperty(runtime, "channel"))) return false;
104
- if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "taskId"))) return false;
105
- if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "url"))) return false;
106
- if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "destFilePath"))) return false;
107
- if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, "expectedSha256"))) return false;
108
- if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "segmentCount"))) return false;
109
- if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "minConcurrentBytes"))) return false;
110
- if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "maxSegmentAttempts"))) return false;
111
- if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "requestTimeoutSeconds"))) return false;
112
- if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "stallTimeoutSeconds"))) return false;
113
- if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, "overallDeadlineSeconds"))) return false;
111
+ if (!JSIConverter<margelo::nitro::reactnativerangedownloader::DownloadChannel>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "channel")))) return false;
112
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "taskId")))) return false;
113
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "url")))) return false;
114
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "destFilePath")))) return false;
115
+ if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "expectedSha256")))) return false;
116
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "segmentCount")))) return false;
117
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "minConcurrentBytes")))) return false;
118
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "maxSegmentAttempts")))) return false;
119
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "requestTimeoutSeconds")))) return false;
120
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "stallTimeoutSeconds")))) return false;
121
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "overallDeadlineSeconds")))) return false;
114
122
  return true;
115
123
  }
116
124
  };
@@ -2,7 +2,7 @@
2
2
  /// RangeDownloadResult.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
@@ -22,6 +22,11 @@
22
22
  #else
23
23
  #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
24
24
  #endif
25
+ #if __has_include(<NitroModules/PropNameIDCache.hpp>)
26
+ #include <NitroModules/PropNameIDCache.hpp>
27
+ #else
28
+ #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
29
+ #endif
25
30
 
26
31
  // Forward declaration of `RangeDownloadOutcome` to properly resolve imports.
27
32
  namespace margelo::nitro::reactnativerangedownloader { enum class RangeDownloadOutcome; }
@@ -38,7 +43,7 @@ namespace margelo::nitro::reactnativerangedownloader {
38
43
  /**
39
44
  * A struct which can be represented as a JavaScript object (RangeDownloadResult).
40
45
  */
41
- struct RangeDownloadResult {
46
+ struct RangeDownloadResult final {
42
47
  public:
43
48
  RangeDownloadOutcome outcome SWIFT_PRIVATE;
44
49
  std::string filePath SWIFT_PRIVATE;
@@ -48,6 +53,9 @@ namespace margelo::nitro::reactnativerangedownloader {
48
53
  public:
49
54
  RangeDownloadResult() = default;
50
55
  explicit RangeDownloadResult(RangeDownloadOutcome outcome, std::string filePath, std::optional<std::string> fallbackReason, std::optional<RangeFallbackKind> fallbackKind): outcome(outcome), filePath(filePath), fallbackReason(fallbackReason), fallbackKind(fallbackKind) {}
56
+
57
+ public:
58
+ friend bool operator==(const RangeDownloadResult& lhs, const RangeDownloadResult& rhs) = default;
51
59
  };
52
60
 
53
61
  } // namespace margelo::nitro::reactnativerangedownloader
@@ -60,18 +68,18 @@ namespace margelo::nitro {
60
68
  static inline margelo::nitro::reactnativerangedownloader::RangeDownloadResult fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
61
69
  jsi::Object obj = arg.asObject(runtime);
62
70
  return margelo::nitro::reactnativerangedownloader::RangeDownloadResult(
63
- JSIConverter<margelo::nitro::reactnativerangedownloader::RangeDownloadOutcome>::fromJSI(runtime, obj.getProperty(runtime, "outcome")),
64
- JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, "filePath")),
65
- JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, "fallbackReason")),
66
- JSIConverter<std::optional<margelo::nitro::reactnativerangedownloader::RangeFallbackKind>>::fromJSI(runtime, obj.getProperty(runtime, "fallbackKind"))
71
+ JSIConverter<margelo::nitro::reactnativerangedownloader::RangeDownloadOutcome>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "outcome"))),
72
+ JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "filePath"))),
73
+ JSIConverter<std::optional<std::string>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "fallbackReason"))),
74
+ JSIConverter<std::optional<margelo::nitro::reactnativerangedownloader::RangeFallbackKind>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "fallbackKind")))
67
75
  );
68
76
  }
69
77
  static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::reactnativerangedownloader::RangeDownloadResult& arg) {
70
78
  jsi::Object obj(runtime);
71
- obj.setProperty(runtime, "outcome", JSIConverter<margelo::nitro::reactnativerangedownloader::RangeDownloadOutcome>::toJSI(runtime, arg.outcome));
72
- obj.setProperty(runtime, "filePath", JSIConverter<std::string>::toJSI(runtime, arg.filePath));
73
- obj.setProperty(runtime, "fallbackReason", JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.fallbackReason));
74
- obj.setProperty(runtime, "fallbackKind", JSIConverter<std::optional<margelo::nitro::reactnativerangedownloader::RangeFallbackKind>>::toJSI(runtime, arg.fallbackKind));
79
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "outcome"), JSIConverter<margelo::nitro::reactnativerangedownloader::RangeDownloadOutcome>::toJSI(runtime, arg.outcome));
80
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "filePath"), JSIConverter<std::string>::toJSI(runtime, arg.filePath));
81
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "fallbackReason"), JSIConverter<std::optional<std::string>>::toJSI(runtime, arg.fallbackReason));
82
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "fallbackKind"), JSIConverter<std::optional<margelo::nitro::reactnativerangedownloader::RangeFallbackKind>>::toJSI(runtime, arg.fallbackKind));
75
83
  return obj;
76
84
  }
77
85
  static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
@@ -82,10 +90,10 @@ namespace margelo::nitro {
82
90
  if (!nitro::isPlainObject(runtime, obj)) {
83
91
  return false;
84
92
  }
85
- if (!JSIConverter<margelo::nitro::reactnativerangedownloader::RangeDownloadOutcome>::canConvert(runtime, obj.getProperty(runtime, "outcome"))) return false;
86
- if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, "filePath"))) return false;
87
- if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, "fallbackReason"))) return false;
88
- if (!JSIConverter<std::optional<margelo::nitro::reactnativerangedownloader::RangeFallbackKind>>::canConvert(runtime, obj.getProperty(runtime, "fallbackKind"))) return false;
93
+ if (!JSIConverter<margelo::nitro::reactnativerangedownloader::RangeDownloadOutcome>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "outcome")))) return false;
94
+ if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "filePath")))) return false;
95
+ if (!JSIConverter<std::optional<std::string>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "fallbackReason")))) return false;
96
+ if (!JSIConverter<std::optional<margelo::nitro::reactnativerangedownloader::RangeFallbackKind>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "fallbackKind")))) return false;
89
97
  return true;
90
98
  }
91
99
  };
@@ -2,7 +2,7 @@
2
2
  /// RangeFallbackKind.hpp
3
3
  /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
4
  /// https://github.com/mrousavy/nitro
5
- /// Copyright © 2026 Marc Rousavy @ Margelo
5
+ /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
8
  #pragma once
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/react-native-range-downloader",
3
- "version": "3.0.81",
3
+ "version": "3.0.82",
4
4
  "description": "react-native-range-downloader",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -77,12 +77,12 @@
77
77
  "eslint-plugin-prettier": "^5.5.4",
78
78
  "jest": "^29.7.0",
79
79
  "lefthook": "^2.0.3",
80
- "nitrogen": "0.31.10",
80
+ "nitrogen": "0.35.2",
81
81
  "prettier": "^2.8.8",
82
82
  "react": "19.2.0",
83
83
  "react-native": "patch:react-native@npm%3A0.83.0#~/.yarn/patches/react-native-npm-0.83.0-577d0f2d83.patch",
84
84
  "react-native-builder-bob": "^0.40.13",
85
- "react-native-nitro-modules": "0.33.2",
85
+ "react-native-nitro-modules": "0.35.2",
86
86
  "release-it": "^19.0.4",
87
87
  "turbo": "^2.5.6",
88
88
  "typescript": "^5.9.2"
@@ -90,7 +90,7 @@
90
90
  "peerDependencies": {
91
91
  "react": "*",
92
92
  "react-native": "*",
93
- "react-native-nitro-modules": "0.33.2"
93
+ "react-native-nitro-modules": "0.35.2"
94
94
  },
95
95
  "react-native-builder-bob": {
96
96
  "source": "src",
@@ -4,7 +4,7 @@ import type { HybridObject } from 'react-native-nitro-modules';
4
4
  // The channel decides the iOS background URLSession identifier suffix and the
5
5
  // event-routing key, so different consumers never cross-talk. Closed set per
6
6
  // design decision 10.1 (constant enum, not a bare string).
7
- export type DownloadChannel = 'bundle' | 'apk' | 'chart';
7
+ export type DownloadChannel = 'bundle' | 'apk' | 'chart' | 'firmware';
8
8
 
9
9
  export interface RangeDownloadParams {
10
10
  channel: DownloadChannel;
@@ -68,6 +68,104 @@ export interface RangeDownloadEvent {
68
68
  message: string;
69
69
  }
70
70
 
71
+ export interface FirmwareArtifactDownloadParams {
72
+ taskId: string;
73
+ transactionId: string;
74
+ leaseRef: string;
75
+ artifactId: string;
76
+ url: string;
77
+ routeType: string;
78
+ resolvedIp?: string;
79
+ expectedSize?: number;
80
+ expectedSha256?: string;
81
+ maxBytes: number;
82
+ overallDeadlineSeconds?: number; // defaults to 180; must be > 0 and <= 24 hours
83
+ }
84
+
85
+ export interface FirmwareArtifactReceipt {
86
+ artifactRef: string;
87
+ size: number;
88
+ sha256: string;
89
+ // True only when sha256 was compared with expectedSha256 supplied by the caller.
90
+ // A locally computed content-address digest without that expectation is not trusted integrity.
91
+ expectedSha256Verified: boolean;
92
+ }
93
+
94
+ export interface FirmwareArtifactCapabilities {
95
+ firmwareArtifactProtocolVersion: number;
96
+ supportedRouteTypes: string[];
97
+ supportsArchiveMaterialization: boolean;
98
+ maxReadBytes: number;
99
+ }
100
+
101
+ export interface FirmwareArtifactRefParams {
102
+ artifactRef: string;
103
+ }
104
+
105
+ export interface FirmwareArtifactCancelParams {
106
+ transactionId: string;
107
+ }
108
+
109
+ export interface FirmwareArtifactReaderInfo {
110
+ readerId: string;
111
+ size: number;
112
+ }
113
+
114
+ export interface FirmwareArtifactReaderReadParams {
115
+ readerId: string;
116
+ offset: number;
117
+ length: number;
118
+ }
119
+
120
+ export interface FirmwareArtifactReaderCloseParams {
121
+ readerId: string;
122
+ }
123
+
124
+ export interface FirmwareArchiveMaterializeParams {
125
+ leaseRef: string;
126
+ archiveArtifactRef: string;
127
+ expectedEntries?: FirmwareArchiveExpectedEntry[];
128
+ }
129
+
130
+ export interface FirmwareArchiveExpectedEntry {
131
+ artifactId: string;
132
+ entryName: string;
133
+ expectedSize: number;
134
+ expectedSha256: string;
135
+ }
136
+
137
+ export interface FirmwareArchiveMaterializedArtifact {
138
+ entryName: string;
139
+ receipt: FirmwareArtifactReceipt;
140
+ }
141
+
142
+ export interface FirmwareArchiveMaterializeResult {
143
+ artifacts: FirmwareArchiveMaterializedArtifact[];
144
+ }
145
+
146
+ export interface FirmwareArtifactLeaseCreateParams {
147
+ transactionId: string;
148
+ }
149
+
150
+ export interface FirmwareArtifactLease {
151
+ leaseRef: string;
152
+ }
153
+
154
+ export interface FirmwareArtifactLeaseRetainParams {
155
+ leaseRef: string;
156
+ artifactRef: string;
157
+ }
158
+
159
+ export interface FirmwareArtifactLeaseReleaseParams {
160
+ leaseRef: string;
161
+ disposition: string;
162
+ }
163
+
164
+ export interface FirmwareArtifactSweepResult {
165
+ deletedFiles: number;
166
+ deletedBytes: number;
167
+ }
168
+
71
169
  export interface ReactNativeRangeDownloader
72
170
  extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> {
73
171
  // Main entry: concurrent ranged download (iOS background session / Android thread pool).
@@ -102,4 +200,35 @@ export interface ReactNativeRangeDownloader
102
200
  // not own directory layout for real consumers, but exposes this so demos/simple
103
201
  // callers have a valid absolute destination without hardcoding sandbox paths.
104
202
  getDownloadsDir(): string;
203
+
204
+ getFirmwareArtifactCapabilities(): FirmwareArtifactCapabilities;
205
+ downloadFirmwareArtifact(
206
+ params: FirmwareArtifactDownloadParams
207
+ ): Promise<FirmwareArtifactReceipt>;
208
+ cancelFirmwareArtifactDownloads(
209
+ params: FirmwareArtifactCancelParams
210
+ ): Promise<void>;
211
+ discardFirmwareArtifact(params: FirmwareArtifactRefParams): Promise<void>;
212
+ openFirmwareArtifact(
213
+ params: FirmwareArtifactRefParams
214
+ ): Promise<FirmwareArtifactReaderInfo>;
215
+ readFirmwareArtifact(
216
+ params: FirmwareArtifactReaderReadParams
217
+ ): Promise<ArrayBuffer>;
218
+ closeFirmwareArtifact(
219
+ params: FirmwareArtifactReaderCloseParams
220
+ ): Promise<void>;
221
+ materializeFirmwareArchive(
222
+ params: FirmwareArchiveMaterializeParams
223
+ ): Promise<FirmwareArchiveMaterializeResult>;
224
+ createFirmwareArtifactLease(
225
+ params: FirmwareArtifactLeaseCreateParams
226
+ ): Promise<FirmwareArtifactLease>;
227
+ retainFirmwareArtifact(
228
+ params: FirmwareArtifactLeaseRetainParams
229
+ ): Promise<void>;
230
+ releaseFirmwareArtifactLease(
231
+ params: FirmwareArtifactLeaseReleaseParams
232
+ ): Promise<void>;
233
+ sweepFirmwareArtifactOrphans(): Promise<FirmwareArtifactSweepResult>;
105
234
  }
package/src/index.tsx CHANGED
@@ -6,7 +6,8 @@ const ReactNativeRangeDownloaderHybridObject =
6
6
  'ReactNativeRangeDownloader'
7
7
  );
8
8
 
9
- export const ReactNativeRangeDownloader = ReactNativeRangeDownloaderHybridObject;
9
+ export const ReactNativeRangeDownloader =
10
+ ReactNativeRangeDownloaderHybridObject;
10
11
 
11
12
  // Closed set of download channels (design decision 10.1). The native side builds the
12
13
  // background session identifier as `so.onekey.rangedownloader.bg.<channel>`. New channels
@@ -15,6 +16,7 @@ export const RangeDownloadChannel = {
15
16
  Bundle: 'bundle',
16
17
  Apk: 'apk',
17
18
  Chart: 'chart',
19
+ Firmware: 'firmware',
18
20
  } as const;
19
21
 
20
22
  export type * from './ReactNativeRangeDownloader.nitro';