@onekeyfe/react-native-range-downloader 3.0.81-alpha.0 → 3.0.81-alpha.2
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.
- package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactStore.kt +59 -127
- package/android/src/main/java/com/margelo/nitro/reactnativerangedownloader/ReactNativeRangeDownloader.kt +1 -9
- package/android/src/test/java/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactDeadlineTest.kt +26 -0
- package/ios/FirmwareArtifactStore.swift +68 -146
- package/ios/ReactNativeRangeDownloader.swift +15 -29
- package/lib/typescript/src/ReactNativeRangeDownloader.nitro.d.ts +0 -4
- package/lib/typescript/src/ReactNativeRangeDownloader.nitro.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JHybridReactNativeRangeDownloaderSpec.cpp +0 -19
- package/nitrogen/generated/android/c++/JHybridReactNativeRangeDownloaderSpec.hpp +0 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/HybridReactNativeRangeDownloaderSpec.kt +0 -4
- package/nitrogen/generated/ios/ReactNativeRangeDownloader-Swift-Cxx-Umbrella.hpp +0 -3
- package/nitrogen/generated/ios/c++/HybridReactNativeRangeDownloaderSpecSwift.hpp +0 -11
- package/nitrogen/generated/ios/swift/HybridReactNativeRangeDownloaderSpec.swift +0 -1
- package/nitrogen/generated/ios/swift/HybridReactNativeRangeDownloaderSpec_cxx.swift +0 -19
- package/nitrogen/generated/shared/c++/HybridReactNativeRangeDownloaderSpec.cpp +0 -1
- package/nitrogen/generated/shared/c++/HybridReactNativeRangeDownloaderSpec.hpp +0 -4
- package/package.json +2 -2
- package/src/ReactNativeRangeDownloader.nitro.ts +1 -8
- package/nitrogen/generated/android/c++/JFirmwareArtifactLeaseReconcileParams.hpp +0 -76
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativerangedownloader/FirmwareArtifactLeaseReconcileParams.kt +0 -38
- package/nitrogen/generated/ios/swift/FirmwareArtifactLeaseReconcileParams.swift +0 -48
- package/nitrogen/generated/shared/c++/FirmwareArtifactLeaseReconcileParams.hpp +0 -76
|
@@ -2,6 +2,33 @@ import CryptoKit
|
|
|
2
2
|
import Foundation
|
|
3
3
|
import SniConnect
|
|
4
4
|
|
|
5
|
+
func isFirmwareArtifactTLSError(_ error: Error) -> Bool {
|
|
6
|
+
var current: NSError? = error as NSError
|
|
7
|
+
var visited = Set<ObjectIdentifier>()
|
|
8
|
+
while let candidate = current {
|
|
9
|
+
let identifier = ObjectIdentifier(candidate)
|
|
10
|
+
guard visited.insert(identifier).inserted else {
|
|
11
|
+
break
|
|
12
|
+
}
|
|
13
|
+
if candidate.domain == NSURLErrorDomain,
|
|
14
|
+
[
|
|
15
|
+
NSURLErrorSecureConnectionFailed,
|
|
16
|
+
NSURLErrorServerCertificateHasBadDate,
|
|
17
|
+
NSURLErrorServerCertificateUntrusted,
|
|
18
|
+
NSURLErrorServerCertificateHasUnknownRoot,
|
|
19
|
+
NSURLErrorServerCertificateNotYetValid,
|
|
20
|
+
NSURLErrorClientCertificateRejected,
|
|
21
|
+
NSURLErrorClientCertificateRequired,
|
|
22
|
+
NSURLErrorAppTransportSecurityRequiresSecureConnection,
|
|
23
|
+
].contains(candidate.code)
|
|
24
|
+
{
|
|
25
|
+
return true
|
|
26
|
+
}
|
|
27
|
+
current = candidate.userInfo[NSUnderlyingErrorKey] as? NSError
|
|
28
|
+
}
|
|
29
|
+
return false
|
|
30
|
+
}
|
|
31
|
+
|
|
5
32
|
enum FirmwareArtifactStoreError: Error {
|
|
6
33
|
case invalidInput(String)
|
|
7
34
|
case downloadFailed(String)
|
|
@@ -79,8 +106,8 @@ private actor FirmwareArtifactDownloadCoordinator {
|
|
|
79
106
|
final class FirmwareArtifactStore {
|
|
80
107
|
static let shared = FirmwareArtifactStore()
|
|
81
108
|
static let maxReadBytes = 256 * 1024
|
|
82
|
-
private static let
|
|
83
|
-
private static let
|
|
109
|
+
private static let defaultDownloadDeadline: TimeInterval = 180
|
|
110
|
+
private static let maxDownloadDeadline: TimeInterval = 24 * 60 * 60
|
|
84
111
|
private static let finalArtifactGrace: TimeInterval = 24 * 60 * 60
|
|
85
112
|
private static let partialArtifactGrace: TimeInterval = 7 * 24 * 60 * 60
|
|
86
113
|
|
|
@@ -90,16 +117,11 @@ final class FirmwareArtifactStore {
|
|
|
90
117
|
let size: Int64
|
|
91
118
|
}
|
|
92
119
|
|
|
93
|
-
private struct LeaseState
|
|
120
|
+
private struct LeaseState {
|
|
94
121
|
let transactionId: String
|
|
95
122
|
var artifactRefs: Set<String>
|
|
96
123
|
}
|
|
97
124
|
|
|
98
|
-
private struct LeaseEnvelope: Codable {
|
|
99
|
-
let schemaVersion: Int
|
|
100
|
-
var leases: [String: LeaseState]
|
|
101
|
-
}
|
|
102
|
-
|
|
103
125
|
private let fileManager = FileManager.default
|
|
104
126
|
private let downloadCoordinator = FirmwareArtifactDownloadCoordinator()
|
|
105
127
|
private let leaseLock = NSLock()
|
|
@@ -109,6 +131,7 @@ final class FirmwareArtifactStore {
|
|
|
109
131
|
private var cancelledTransactions: Set<String> = []
|
|
110
132
|
private let readerLock = NSLock()
|
|
111
133
|
private var readers: [String: OpenReader] = [:]
|
|
134
|
+
private var leases: [String: LeaseState] = [:]
|
|
112
135
|
|
|
113
136
|
private lazy var rootURL: URL = {
|
|
114
137
|
let base = fileManager.urls(
|
|
@@ -170,6 +193,14 @@ final class FirmwareArtifactStore {
|
|
|
170
193
|
guard params.routeType == "domain" || params.routeType == "pinnedIp" else {
|
|
171
194
|
throw FirmwareArtifactStoreError.invalidInput("Invalid firmware route type")
|
|
172
195
|
}
|
|
196
|
+
let deadline = params.overallDeadlineSeconds ?? defaultDownloadDeadline
|
|
197
|
+
guard
|
|
198
|
+
deadline.isFinite,
|
|
199
|
+
deadline > 0,
|
|
200
|
+
deadline <= maxDownloadDeadline
|
|
201
|
+
else {
|
|
202
|
+
throw FirmwareArtifactStoreError.invalidInput("Invalid firmware download deadline")
|
|
203
|
+
}
|
|
173
204
|
if params.routeType == "pinnedIp" {
|
|
174
205
|
guard let resolvedIp = params.resolvedIp, !resolvedIp.isEmpty else {
|
|
175
206
|
throw FirmwareArtifactStoreError.invalidInput("Pinned route requires resolvedIp")
|
|
@@ -188,8 +219,7 @@ final class FirmwareArtifactStore {
|
|
|
188
219
|
transactionId: params.transactionId,
|
|
189
220
|
artifactRef: "fw:\(expectedSha256)"
|
|
190
221
|
)
|
|
191
|
-
let key =
|
|
192
|
-
"\(params.transactionId):\(expectedSha256):\(Int64(params.expectedSize))"
|
|
222
|
+
let key = "\(expectedSha256):\(Int64(params.expectedSize))"
|
|
193
223
|
markDownloadActive(expectedSha256, delta: 1)
|
|
194
224
|
do {
|
|
195
225
|
let artifact = try await downloadCoordinator.run(
|
|
@@ -202,6 +232,7 @@ final class FirmwareArtifactStore {
|
|
|
202
232
|
expectedSha256: expectedSha256
|
|
203
233
|
)
|
|
204
234
|
}
|
|
235
|
+
try rejectIfCancelled(transactionId: params.transactionId)
|
|
205
236
|
markDownloadActive(expectedSha256, delta: -1)
|
|
206
237
|
return artifact
|
|
207
238
|
} catch {
|
|
@@ -309,17 +340,12 @@ final class FirmwareArtifactStore {
|
|
|
309
340
|
|
|
310
341
|
func acceptBackgroundDownload(
|
|
311
342
|
temporaryURL: URL,
|
|
312
|
-
leaseRef: String,
|
|
313
343
|
transactionId: String,
|
|
314
344
|
expectedSize: Int64,
|
|
315
345
|
expectedSha256: String
|
|
316
346
|
) throws -> StoredFirmwareArtifact {
|
|
317
347
|
let normalizedExpectedSha256 = expectedSha256.lowercased()
|
|
318
|
-
try
|
|
319
|
-
leaseRef: leaseRef,
|
|
320
|
-
transactionId: transactionId,
|
|
321
|
-
artifactRef: "fw:\(normalizedExpectedSha256)"
|
|
322
|
-
)
|
|
348
|
+
try rejectIfCancelled(transactionId: transactionId)
|
|
323
349
|
let finalURL = artifactURL(sha256: normalizedExpectedSha256)
|
|
324
350
|
if let existing = try? validateStoredArtifact(
|
|
325
351
|
fileURL: finalURL,
|
|
@@ -360,14 +386,8 @@ final class FirmwareArtifactStore {
|
|
|
360
386
|
func discard(artifactRef: String) throws {
|
|
361
387
|
let fileURL = try resolveArtifactURL(artifactRef)
|
|
362
388
|
leaseLock.lock()
|
|
363
|
-
let isRetained
|
|
364
|
-
|
|
365
|
-
isRetained = try loadLeasesLocked().leases.values.contains {
|
|
366
|
-
$0.artifactRefs.contains(artifactRef)
|
|
367
|
-
}
|
|
368
|
-
} catch {
|
|
369
|
-
leaseLock.unlock()
|
|
370
|
-
throw error
|
|
389
|
+
let isRetained = leases.values.contains {
|
|
390
|
+
$0.artifactRefs.contains(artifactRef)
|
|
371
391
|
}
|
|
372
392
|
leaseLock.unlock()
|
|
373
393
|
guard !isRetained else {
|
|
@@ -566,18 +586,16 @@ final class FirmwareArtifactStore {
|
|
|
566
586
|
}
|
|
567
587
|
leaseLock.lock()
|
|
568
588
|
defer { leaseLock.unlock() }
|
|
569
|
-
|
|
570
|
-
guard envelope.leases.count < 32 else {
|
|
589
|
+
guard leases.count < 32 else {
|
|
571
590
|
throw FirmwareArtifactStoreError.invalidInput(
|
|
572
591
|
"Too many firmware artifact leases"
|
|
573
592
|
)
|
|
574
593
|
}
|
|
575
594
|
let leaseRef = "fwlease:\(UUID().uuidString.lowercased())"
|
|
576
|
-
|
|
595
|
+
leases[leaseRef] = LeaseState(
|
|
577
596
|
transactionId: transactionId,
|
|
578
597
|
artifactRefs: []
|
|
579
598
|
)
|
|
580
|
-
try saveLeasesLocked(envelope)
|
|
581
599
|
return leaseRef
|
|
582
600
|
}
|
|
583
601
|
|
|
@@ -603,9 +621,8 @@ final class FirmwareArtifactStore {
|
|
|
603
621
|
let transactionId: String = try {
|
|
604
622
|
leaseLock.lock()
|
|
605
623
|
defer { leaseLock.unlock() }
|
|
606
|
-
var envelope = try loadLeasesLocked()
|
|
607
624
|
guard
|
|
608
|
-
let lease =
|
|
625
|
+
let lease = leases.removeValue(
|
|
609
626
|
forKey: try validateLeaseRef(leaseRef)
|
|
610
627
|
)
|
|
611
628
|
else {
|
|
@@ -613,7 +630,6 @@ final class FirmwareArtifactStore {
|
|
|
613
630
|
"Firmware artifact lease is unavailable"
|
|
614
631
|
)
|
|
615
632
|
}
|
|
616
|
-
try saveLeasesLocked(envelope)
|
|
617
633
|
return lease.transactionId
|
|
618
634
|
}()
|
|
619
635
|
cancellationLock.withFirmwareArtifactLock {
|
|
@@ -621,43 +637,13 @@ final class FirmwareArtifactStore {
|
|
|
621
637
|
}
|
|
622
638
|
}
|
|
623
639
|
|
|
624
|
-
func reconcileLeases(activeLeaseRefs: [String]) throws {
|
|
625
|
-
guard activeLeaseRefs.count <= 32 else {
|
|
626
|
-
throw FirmwareArtifactStoreError.invalidInput(
|
|
627
|
-
"Too many active firmware artifact leases"
|
|
628
|
-
)
|
|
629
|
-
}
|
|
630
|
-
let active = try Set(activeLeaseRefs.map(validateLeaseRef))
|
|
631
|
-
guard active.count == activeLeaseRefs.count else {
|
|
632
|
-
throw FirmwareArtifactStoreError.invalidInput(
|
|
633
|
-
"Duplicate active firmware artifact lease"
|
|
634
|
-
)
|
|
635
|
-
}
|
|
636
|
-
leaseLock.lock()
|
|
637
|
-
defer { leaseLock.unlock() }
|
|
638
|
-
var envelope = try loadLeasesLocked()
|
|
639
|
-
guard active.allSatisfy({ envelope.leases[$0] != nil }) else {
|
|
640
|
-
throw FirmwareArtifactStoreError.invalidInput(
|
|
641
|
-
"Firmware artifact lease reconciliation is incomplete"
|
|
642
|
-
)
|
|
643
|
-
}
|
|
644
|
-
envelope.leases = envelope.leases.filter { active.contains($0.key) }
|
|
645
|
-
try saveLeasesLocked(envelope)
|
|
646
|
-
}
|
|
647
|
-
|
|
648
640
|
func sweepOrphans() throws -> (deletedFiles: Int, deletedBytes: Int64) {
|
|
649
641
|
leaseLock.lock()
|
|
650
|
-
let retained
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
.map { String($0.dropFirst(3)) }
|
|
656
|
-
)
|
|
657
|
-
} catch {
|
|
658
|
-
leaseLock.unlock()
|
|
659
|
-
throw error
|
|
660
|
-
}
|
|
642
|
+
let retained = Set(
|
|
643
|
+
leases.values
|
|
644
|
+
.flatMap(\.artifactRefs)
|
|
645
|
+
.map { String($0.dropFirst(3)) }
|
|
646
|
+
)
|
|
661
647
|
leaseLock.unlock()
|
|
662
648
|
activeDownloadLock.lock()
|
|
663
649
|
let active = Set(activeDownloadCounts.filter { $0.value > 0 }.keys)
|
|
@@ -676,7 +662,7 @@ final class FirmwareArtifactStore {
|
|
|
676
662
|
)
|
|
677
663
|
for fileURL in files {
|
|
678
664
|
let name = fileURL.lastPathComponent
|
|
679
|
-
guard name
|
|
665
|
+
guard name.count >= 64 else { continue }
|
|
680
666
|
let sha256 = String(name.prefix(64))
|
|
681
667
|
guard
|
|
682
668
|
sha256.range(of: "^[a-f0-9]{64}$", options: .regularExpression) != nil,
|
|
@@ -714,7 +700,7 @@ final class FirmwareArtifactStore {
|
|
|
714
700
|
private func requireLease(_ leaseRef: String) throws {
|
|
715
701
|
leaseLock.lock()
|
|
716
702
|
defer { leaseLock.unlock() }
|
|
717
|
-
guard try
|
|
703
|
+
guard leases[try validateLeaseRef(leaseRef)] != nil else {
|
|
718
704
|
throw FirmwareArtifactStoreError.invalidInput(
|
|
719
705
|
"Firmware artifact lease is unavailable"
|
|
720
706
|
)
|
|
@@ -736,9 +722,8 @@ final class FirmwareArtifactStore {
|
|
|
736
722
|
}
|
|
737
723
|
leaseLock.lock()
|
|
738
724
|
defer { leaseLock.unlock() }
|
|
739
|
-
var envelope = try loadLeasesLocked()
|
|
740
725
|
let validatedLeaseRef = try validateLeaseRef(leaseRef)
|
|
741
|
-
guard var lease =
|
|
726
|
+
guard var lease = leases[validatedLeaseRef] else {
|
|
742
727
|
throw FirmwareArtifactStoreError.invalidInput(
|
|
743
728
|
"Firmware artifact lease is unavailable"
|
|
744
729
|
)
|
|
@@ -749,8 +734,7 @@ final class FirmwareArtifactStore {
|
|
|
749
734
|
)
|
|
750
735
|
}
|
|
751
736
|
if lease.artifactRefs.insert(artifactRef).inserted {
|
|
752
|
-
|
|
753
|
-
try saveLeasesLocked(envelope)
|
|
737
|
+
leases[validatedLeaseRef] = lease
|
|
754
738
|
}
|
|
755
739
|
}
|
|
756
740
|
|
|
@@ -777,79 +761,6 @@ final class FirmwareArtifactStore {
|
|
|
777
761
|
) != nil
|
|
778
762
|
}
|
|
779
763
|
|
|
780
|
-
private func loadLeasesLocked() throws -> LeaseEnvelope {
|
|
781
|
-
let url = rootURL.appendingPathComponent("leases.json", isDirectory: false)
|
|
782
|
-
guard fileManager.fileExists(atPath: url.path) else {
|
|
783
|
-
return LeaseEnvelope(schemaVersion: 1, leases: [:])
|
|
784
|
-
}
|
|
785
|
-
let fileSize = try url.resourceValues(forKeys: [.fileSizeKey]).fileSize ?? 0
|
|
786
|
-
guard fileSize > 0, Int64(fileSize) <= Self.maxLeaseMetadataBytes else {
|
|
787
|
-
throw FirmwareArtifactStoreError.invalidInput(
|
|
788
|
-
"Firmware lease metadata is too large"
|
|
789
|
-
)
|
|
790
|
-
}
|
|
791
|
-
let envelope = try JSONDecoder().decode(
|
|
792
|
-
LeaseEnvelope.self,
|
|
793
|
-
from: Data(contentsOf: url)
|
|
794
|
-
)
|
|
795
|
-
guard envelope.schemaVersion == 1, envelope.leases.count <= 32 else {
|
|
796
|
-
throw FirmwareArtifactStoreError.invalidInput(
|
|
797
|
-
"Unsupported firmware lease schema"
|
|
798
|
-
)
|
|
799
|
-
}
|
|
800
|
-
guard
|
|
801
|
-
envelope.leases.values.reduce(0, { $0 + $1.artifactRefs.count })
|
|
802
|
-
<= Self.maxTotalLeaseRefs
|
|
803
|
-
else {
|
|
804
|
-
throw FirmwareArtifactStoreError.invalidInput(
|
|
805
|
-
"Firmware lease metadata is too large"
|
|
806
|
-
)
|
|
807
|
-
}
|
|
808
|
-
for (leaseRef, lease) in envelope.leases {
|
|
809
|
-
guard
|
|
810
|
-
Self.isValidLeaseRef(leaseRef),
|
|
811
|
-
Self.isSafeIdentifier(lease.transactionId),
|
|
812
|
-
lease.artifactRefs.count <= 4096,
|
|
813
|
-
lease.artifactRefs.allSatisfy({
|
|
814
|
-
$0.range(
|
|
815
|
-
of: "^fw:[a-f0-9]{64}$",
|
|
816
|
-
options: .regularExpression
|
|
817
|
-
) != nil
|
|
818
|
-
})
|
|
819
|
-
else {
|
|
820
|
-
throw FirmwareArtifactStoreError.invalidInput(
|
|
821
|
-
"Invalid persisted firmware lease"
|
|
822
|
-
)
|
|
823
|
-
}
|
|
824
|
-
}
|
|
825
|
-
return envelope
|
|
826
|
-
}
|
|
827
|
-
|
|
828
|
-
private func saveLeasesLocked(_ envelope: LeaseEnvelope) throws {
|
|
829
|
-
guard
|
|
830
|
-
envelope.schemaVersion == 1,
|
|
831
|
-
envelope.leases.count <= 32,
|
|
832
|
-
envelope.leases.values.allSatisfy({
|
|
833
|
-
$0.artifactRefs.count <= 4096
|
|
834
|
-
}),
|
|
835
|
-
envelope.leases.values.reduce(0, {
|
|
836
|
-
$0 + $1.artifactRefs.count
|
|
837
|
-
}) <= Self.maxTotalLeaseRefs
|
|
838
|
-
else {
|
|
839
|
-
throw FirmwareArtifactStoreError.invalidInput(
|
|
840
|
-
"Firmware lease metadata is too large"
|
|
841
|
-
)
|
|
842
|
-
}
|
|
843
|
-
let data = try JSONEncoder().encode(envelope)
|
|
844
|
-
guard Int64(data.count) <= Self.maxLeaseMetadataBytes else {
|
|
845
|
-
throw FirmwareArtifactStoreError.invalidInput(
|
|
846
|
-
"Firmware lease metadata is too large"
|
|
847
|
-
)
|
|
848
|
-
}
|
|
849
|
-
let url = rootURL.appendingPathComponent("leases.json", isDirectory: false)
|
|
850
|
-
try data.write(to: url, options: [.atomic])
|
|
851
|
-
}
|
|
852
|
-
|
|
853
764
|
private func markDownloadActive(_ sha256: String, delta: Int) {
|
|
854
765
|
activeDownloadLock.lock()
|
|
855
766
|
let next = (activeDownloadCounts[sha256] ?? 0) + delta
|
|
@@ -1008,7 +919,8 @@ final class FirmwareArtifactStore {
|
|
|
1008
919
|
}
|
|
1009
920
|
var request = URLRequest(url: url)
|
|
1010
921
|
request.cachePolicy = .reloadIgnoringLocalCacheData
|
|
1011
|
-
request.timeoutInterval =
|
|
922
|
+
request.timeoutInterval =
|
|
923
|
+
params.overallDeadlineSeconds ?? Self.defaultDownloadDeadline
|
|
1012
924
|
request.setValue("identity", forHTTPHeaderField: "Accept-Encoding")
|
|
1013
925
|
if resumeOffset > 0 {
|
|
1014
926
|
request.setValue("bytes=\(resumeOffset)-", forHTTPHeaderField: "Range")
|
|
@@ -1050,6 +962,11 @@ final class FirmwareArtifactStore {
|
|
|
1050
962
|
"ARTIFACT_CANCELLED: firmware artifact download was cancelled"
|
|
1051
963
|
)
|
|
1052
964
|
}
|
|
965
|
+
if isFirmwareArtifactTLSError(error) {
|
|
966
|
+
throw FirmwareArtifactStoreError.downloadFailed(
|
|
967
|
+
"ARTIFACT_TLS_FAILED: firmware TLS validation failed"
|
|
968
|
+
)
|
|
969
|
+
}
|
|
1053
970
|
throw FirmwareArtifactStoreError.downloadFailed(
|
|
1054
971
|
"ARTIFACT_NETWORK_FAILED: firmware request failed"
|
|
1055
972
|
)
|
|
@@ -1113,6 +1030,11 @@ final class FirmwareArtifactStore {
|
|
|
1113
1030
|
"ARTIFACT_CANCELLED: firmware artifact download was cancelled"
|
|
1114
1031
|
)
|
|
1115
1032
|
}
|
|
1033
|
+
if isFirmwareArtifactTLSError(error) {
|
|
1034
|
+
throw FirmwareArtifactStoreError.downloadFailed(
|
|
1035
|
+
"ARTIFACT_TLS_FAILED: firmware TLS validation failed"
|
|
1036
|
+
)
|
|
1037
|
+
}
|
|
1116
1038
|
throw FirmwareArtifactStoreError.downloadFailed(
|
|
1117
1039
|
"ARTIFACT_NETWORK_FAILED: firmware response stream failed"
|
|
1118
1040
|
)
|
|
@@ -98,7 +98,7 @@ class ReactNativeRangeDownloader: HybridReactNativeRangeDownloaderSpec {
|
|
|
98
98
|
|
|
99
99
|
func getFirmwareArtifactCapabilities() throws -> FirmwareArtifactCapabilities {
|
|
100
100
|
FirmwareArtifactCapabilities(
|
|
101
|
-
firmwareArtifactProtocolVersion:
|
|
101
|
+
firmwareArtifactProtocolVersion: 2,
|
|
102
102
|
supportedRouteTypes: ["domain", "pinnedIp"],
|
|
103
103
|
supportsArchiveMaterialization: true,
|
|
104
104
|
maxReadBytes: Double(FirmwareArtifactStore.maxReadBytes)
|
|
@@ -243,16 +243,6 @@ class ReactNativeRangeDownloader: HybridReactNativeRangeDownloaderSpec {
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
func reconcileFirmwareArtifactLeases(
|
|
247
|
-
params: FirmwareArtifactLeaseReconcileParams
|
|
248
|
-
) throws -> Promise<Void> {
|
|
249
|
-
Promise.async {
|
|
250
|
-
try FirmwareArtifactStore.shared.reconcileLeases(
|
|
251
|
-
activeLeaseRefs: params.activeLeaseRefs
|
|
252
|
-
)
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
246
|
func sweepFirmwareArtifactOrphans() throws -> Promise<FirmwareArtifactSweepResult> {
|
|
257
247
|
Promise.async {
|
|
258
248
|
let result = try FirmwareArtifactStore.shared.sweepOrphans()
|
|
@@ -327,25 +317,20 @@ private struct FirmwareBackgroundTaskDescriptor: Codable, Equatable {
|
|
|
327
317
|
let schemaVersion: Int
|
|
328
318
|
let taskId: String
|
|
329
319
|
let transactionId: String
|
|
330
|
-
let leaseRef: String
|
|
331
320
|
let expectedSize: Int64
|
|
332
321
|
let expectedSha256: String
|
|
333
322
|
let hostname: String
|
|
334
323
|
let deadlineAt: TimeInterval
|
|
335
324
|
|
|
336
325
|
var key: String {
|
|
337
|
-
"\(
|
|
326
|
+
"\(expectedSize)|\(expectedSha256)"
|
|
338
327
|
}
|
|
339
328
|
|
|
340
329
|
func hasSameArtifactIdentity(
|
|
341
330
|
as other: FirmwareBackgroundTaskDescriptor
|
|
342
331
|
) -> Bool {
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
leaseRef == other.leaseRef &&
|
|
346
|
-
expectedSize == other.expectedSize &&
|
|
347
|
-
expectedSha256 == other.expectedSha256 &&
|
|
348
|
-
hostname == other.hostname
|
|
332
|
+
expectedSize == other.expectedSize &&
|
|
333
|
+
expectedSha256 == other.expectedSha256
|
|
349
334
|
}
|
|
350
335
|
}
|
|
351
336
|
|
|
@@ -356,6 +341,7 @@ private enum FirmwareBackgroundDownloadError: LocalizedError {
|
|
|
356
341
|
case redirectRejected
|
|
357
342
|
case responseRejected
|
|
358
343
|
case sizeRejected
|
|
344
|
+
case tlsRejected
|
|
359
345
|
case transferFailed
|
|
360
346
|
|
|
361
347
|
var errorDescription: String? {
|
|
@@ -372,6 +358,8 @@ private enum FirmwareBackgroundDownloadError: LocalizedError {
|
|
|
372
358
|
return "ARTIFACT_PROTOCOL_INVALID: firmware response is invalid"
|
|
373
359
|
case .sizeRejected:
|
|
374
360
|
return "ARTIFACT_PROTOCOL_INVALID: firmware artifact size is invalid"
|
|
361
|
+
case .tlsRejected:
|
|
362
|
+
return "ARTIFACT_TLS_FAILED: firmware TLS validation failed"
|
|
375
363
|
case .transferFailed:
|
|
376
364
|
return "ARTIFACT_NETWORK_FAILED: firmware background transfer failed"
|
|
377
365
|
}
|
|
@@ -694,7 +682,7 @@ public final class RangeDownloader: NSObject, URLSessionDownloadDelegate {
|
|
|
694
682
|
return (r, decoded.segIndex)
|
|
695
683
|
}
|
|
696
684
|
|
|
697
|
-
private static let firmwareTaskDescriptionPrefix = "firmware-
|
|
685
|
+
private static let firmwareTaskDescriptionPrefix = "firmware-v2:"
|
|
698
686
|
|
|
699
687
|
private static func encodeFirmwareTaskDescription(
|
|
700
688
|
_ descriptor: FirmwareBackgroundTaskDescriptor
|
|
@@ -719,7 +707,7 @@ public final class RangeDownloader: NSObject, URLSessionDownloadDelegate {
|
|
|
719
707
|
FirmwareBackgroundTaskDescriptor.self,
|
|
720
708
|
from: data
|
|
721
709
|
),
|
|
722
|
-
descriptor.schemaVersion ==
|
|
710
|
+
descriptor.schemaVersion == 2,
|
|
723
711
|
descriptor.taskId.range(
|
|
724
712
|
of: "^[A-Za-z0-9._-]{1,100}$",
|
|
725
713
|
options: .regularExpression
|
|
@@ -728,10 +716,6 @@ public final class RangeDownloader: NSObject, URLSessionDownloadDelegate {
|
|
|
728
716
|
of: "^[A-Za-z0-9._:-]{1,160}$",
|
|
729
717
|
options: .regularExpression
|
|
730
718
|
) != nil,
|
|
731
|
-
descriptor.leaseRef.range(
|
|
732
|
-
of: "^fwlease:[a-f0-9-]{36}$",
|
|
733
|
-
options: .regularExpression
|
|
734
|
-
) != nil,
|
|
735
719
|
descriptor.expectedSize > 0,
|
|
736
720
|
descriptor.expectedSize <= 512 * 1024 * 1024,
|
|
737
721
|
descriptor.expectedSha256.range(
|
|
@@ -767,10 +751,9 @@ public final class RangeDownloader: NSObject, URLSessionDownloadDelegate {
|
|
|
767
751
|
throw FirmwareBackgroundDownloadError.invalidTask
|
|
768
752
|
}
|
|
769
753
|
let descriptor = FirmwareBackgroundTaskDescriptor(
|
|
770
|
-
schemaVersion:
|
|
754
|
+
schemaVersion: 2,
|
|
771
755
|
taskId: params.taskId,
|
|
772
756
|
transactionId: params.transactionId,
|
|
773
|
-
leaseRef: params.leaseRef,
|
|
774
757
|
expectedSize: Int64(params.expectedSize),
|
|
775
758
|
expectedSha256: params.expectedSha256.lowercased(),
|
|
776
759
|
hostname: hostname,
|
|
@@ -1539,7 +1522,6 @@ public final class RangeDownloader: NSObject, URLSessionDownloadDelegate {
|
|
|
1539
1522
|
}
|
|
1540
1523
|
let artifact = try FirmwareArtifactStore.shared.acceptBackgroundDownload(
|
|
1541
1524
|
temporaryURL: location,
|
|
1542
|
-
leaseRef: descriptor.leaseRef,
|
|
1543
1525
|
transactionId: descriptor.transactionId,
|
|
1544
1526
|
expectedSize: descriptor.expectedSize,
|
|
1545
1527
|
expectedSha256: descriptor.expectedSha256
|
|
@@ -1687,7 +1669,11 @@ public final class RangeDownloader: NSObject, URLSessionDownloadDelegate {
|
|
|
1687
1669
|
? FirmwareBackgroundDownloadError.cancelled
|
|
1688
1670
|
: nil
|
|
1689
1671
|
) ??
|
|
1690
|
-
error
|
|
1672
|
+
error.map {
|
|
1673
|
+
isFirmwareArtifactTLSError($0)
|
|
1674
|
+
? FirmwareBackgroundDownloadError.tlsRejected
|
|
1675
|
+
: FirmwareBackgroundDownloadError.transferFailed
|
|
1676
|
+
} ??
|
|
1691
1677
|
FirmwareBackgroundDownloadError.transferFailed
|
|
1692
1678
|
)
|
|
1693
1679
|
)
|
|
@@ -102,9 +102,6 @@ export interface FirmwareArtifactLeaseReleaseParams {
|
|
|
102
102
|
leaseRef: string;
|
|
103
103
|
disposition: string;
|
|
104
104
|
}
|
|
105
|
-
export interface FirmwareArtifactLeaseReconcileParams {
|
|
106
|
-
activeLeaseRefs: string[];
|
|
107
|
-
}
|
|
108
105
|
export interface FirmwareArtifactSweepResult {
|
|
109
106
|
deletedFiles: number;
|
|
110
107
|
deletedBytes: number;
|
|
@@ -130,7 +127,6 @@ export interface ReactNativeRangeDownloader extends HybridObject<{
|
|
|
130
127
|
createFirmwareArtifactLease(params: FirmwareArtifactLeaseCreateParams): Promise<FirmwareArtifactLease>;
|
|
131
128
|
retainFirmwareArtifact(params: FirmwareArtifactLeaseRetainParams): Promise<void>;
|
|
132
129
|
releaseFirmwareArtifactLease(params: FirmwareArtifactLeaseReleaseParams): Promise<void>;
|
|
133
|
-
reconcileFirmwareArtifactLeases(params: FirmwareArtifactLeaseReconcileParams): Promise<void>;
|
|
134
130
|
sweepFirmwareArtifactOrphans(): Promise<FirmwareArtifactSweepResult>;
|
|
135
131
|
}
|
|
136
132
|
//# sourceMappingURL=ReactNativeRangeDownloader.nitro.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactNativeRangeDownloader.nitro.d.ts","sourceRoot":"","sources":["../../../src/ReactNativeRangeDownloader.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM/D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAI5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAWD,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,mBAAmB,GACnB,mBAAmB,GACnB,UAAU,CAAC;AAKf,MAAM,MAAM,iBAAiB,GACzB,oBAAoB,GACpB,kBAAkB,GAClB,aAAa,GACb,UAAU,GACV,kBAAkB,GAClB,kBAAkB,GAClB,qBAAqB,GACrB,kBAAkB,GAClB,WAAW,GACX,iBAAiB,CAAC;AAEtB,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,4BAA4B;IAC3C,+BAA+B,EAAE,MAAM,CAAC;IACxC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,8BAA8B,EAAE,OAAO,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,4BAA4B,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mCAAmC;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,mCAAmC,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"ReactNativeRangeDownloader.nitro.d.ts","sourceRoot":"","sources":["../../../src/ReactNativeRangeDownloader.nitro.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,8 +53,6 @@ namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLe
|
|
|
53
53
|
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLeaseRetainParams; }
|
|
54
54
|
// Forward declaration of `FirmwareArtifactLeaseReleaseParams` to properly resolve imports.
|
|
55
55
|
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLeaseReleaseParams; }
|
|
56
|
-
// Forward declaration of `FirmwareArtifactLeaseReconcileParams` to properly resolve imports.
|
|
57
|
-
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLeaseReconcileParams; }
|
|
58
56
|
|
|
59
57
|
#include "RangeDownloadResult.hpp"
|
|
60
58
|
#include <NitroModules/Promise.hpp>
|
|
@@ -113,8 +111,6 @@ namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLe
|
|
|
113
111
|
#include "JFirmwareArtifactLeaseRetainParams.hpp"
|
|
114
112
|
#include "FirmwareArtifactLeaseReleaseParams.hpp"
|
|
115
113
|
#include "JFirmwareArtifactLeaseReleaseParams.hpp"
|
|
116
|
-
#include "FirmwareArtifactLeaseReconcileParams.hpp"
|
|
117
|
-
#include "JFirmwareArtifactLeaseReconcileParams.hpp"
|
|
118
114
|
|
|
119
115
|
namespace margelo::nitro::reactnativerangedownloader {
|
|
120
116
|
|
|
@@ -368,21 +364,6 @@ namespace margelo::nitro::reactnativerangedownloader {
|
|
|
368
364
|
return __promise;
|
|
369
365
|
}();
|
|
370
366
|
}
|
|
371
|
-
std::shared_ptr<Promise<void>> JHybridReactNativeRangeDownloaderSpec::reconcileFirmwareArtifactLeases(const FirmwareArtifactLeaseReconcileParams& params) {
|
|
372
|
-
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<JFirmwareArtifactLeaseReconcileParams> /* params */)>("reconcileFirmwareArtifactLeases");
|
|
373
|
-
auto __result = method(_javaPart, JFirmwareArtifactLeaseReconcileParams::fromCpp(params));
|
|
374
|
-
return [&]() {
|
|
375
|
-
auto __promise = Promise<void>::create();
|
|
376
|
-
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& /* unit */) {
|
|
377
|
-
__promise->resolve();
|
|
378
|
-
});
|
|
379
|
-
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
380
|
-
jni::JniException __jniError(__throwable);
|
|
381
|
-
__promise->reject(std::make_exception_ptr(__jniError));
|
|
382
|
-
});
|
|
383
|
-
return __promise;
|
|
384
|
-
}();
|
|
385
|
-
}
|
|
386
367
|
std::shared_ptr<Promise<FirmwareArtifactSweepResult>> JHybridReactNativeRangeDownloaderSpec::sweepFirmwareArtifactOrphans() {
|
|
387
368
|
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>()>("sweepFirmwareArtifactOrphans");
|
|
388
369
|
auto __result = method(_javaPart);
|
|
@@ -71,7 +71,6 @@ namespace margelo::nitro::reactnativerangedownloader {
|
|
|
71
71
|
std::shared_ptr<Promise<FirmwareArtifactLease>> createFirmwareArtifactLease(const FirmwareArtifactLeaseCreateParams& params) override;
|
|
72
72
|
std::shared_ptr<Promise<void>> retainFirmwareArtifact(const FirmwareArtifactLeaseRetainParams& params) override;
|
|
73
73
|
std::shared_ptr<Promise<void>> releaseFirmwareArtifactLease(const FirmwareArtifactLeaseReleaseParams& params) override;
|
|
74
|
-
std::shared_ptr<Promise<void>> reconcileFirmwareArtifactLeases(const FirmwareArtifactLeaseReconcileParams& params) override;
|
|
75
74
|
std::shared_ptr<Promise<FirmwareArtifactSweepResult>> sweepFirmwareArtifactOrphans() override;
|
|
76
75
|
|
|
77
76
|
private:
|
|
@@ -120,10 +120,6 @@ abstract class HybridReactNativeRangeDownloaderSpec: HybridObject() {
|
|
|
120
120
|
@Keep
|
|
121
121
|
abstract fun releaseFirmwareArtifactLease(params: FirmwareArtifactLeaseReleaseParams): Promise<Unit>
|
|
122
122
|
|
|
123
|
-
@DoNotStrip
|
|
124
|
-
@Keep
|
|
125
|
-
abstract fun reconcileFirmwareArtifactLeases(params: FirmwareArtifactLeaseReconcileParams): Promise<Unit>
|
|
126
|
-
|
|
127
123
|
@DoNotStrip
|
|
128
124
|
@Keep
|
|
129
125
|
abstract fun sweepFirmwareArtifactOrphans(): Promise<FirmwareArtifactSweepResult>
|
|
@@ -26,8 +26,6 @@ namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactCa
|
|
|
26
26
|
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactDownloadParams; }
|
|
27
27
|
// Forward declaration of `FirmwareArtifactLeaseCreateParams` to properly resolve imports.
|
|
28
28
|
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLeaseCreateParams; }
|
|
29
|
-
// Forward declaration of `FirmwareArtifactLeaseReconcileParams` to properly resolve imports.
|
|
30
|
-
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLeaseReconcileParams; }
|
|
31
29
|
// Forward declaration of `FirmwareArtifactLeaseReleaseParams` to properly resolve imports.
|
|
32
30
|
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLeaseReleaseParams; }
|
|
33
31
|
// Forward declaration of `FirmwareArtifactLeaseRetainParams` to properly resolve imports.
|
|
@@ -70,7 +68,6 @@ namespace margelo::nitro::reactnativerangedownloader { enum class RangeFallbackK
|
|
|
70
68
|
#include "FirmwareArtifactDownloadParams.hpp"
|
|
71
69
|
#include "FirmwareArtifactLease.hpp"
|
|
72
70
|
#include "FirmwareArtifactLeaseCreateParams.hpp"
|
|
73
|
-
#include "FirmwareArtifactLeaseReconcileParams.hpp"
|
|
74
71
|
#include "FirmwareArtifactLeaseReleaseParams.hpp"
|
|
75
72
|
#include "FirmwareArtifactLeaseRetainParams.hpp"
|
|
76
73
|
#include "FirmwareArtifactReaderCloseParams.hpp"
|
|
@@ -58,8 +58,6 @@ namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLe
|
|
|
58
58
|
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLeaseRetainParams; }
|
|
59
59
|
// Forward declaration of `FirmwareArtifactLeaseReleaseParams` to properly resolve imports.
|
|
60
60
|
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLeaseReleaseParams; }
|
|
61
|
-
// Forward declaration of `FirmwareArtifactLeaseReconcileParams` to properly resolve imports.
|
|
62
|
-
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactLeaseReconcileParams; }
|
|
63
61
|
// Forward declaration of `FirmwareArtifactSweepResult` to properly resolve imports.
|
|
64
62
|
namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactSweepResult; }
|
|
65
63
|
|
|
@@ -92,7 +90,6 @@ namespace margelo::nitro::reactnativerangedownloader { struct FirmwareArtifactSw
|
|
|
92
90
|
#include "FirmwareArtifactLeaseCreateParams.hpp"
|
|
93
91
|
#include "FirmwareArtifactLeaseRetainParams.hpp"
|
|
94
92
|
#include "FirmwareArtifactLeaseReleaseParams.hpp"
|
|
95
|
-
#include "FirmwareArtifactLeaseReconcileParams.hpp"
|
|
96
93
|
#include "FirmwareArtifactSweepResult.hpp"
|
|
97
94
|
|
|
98
95
|
#include "ReactNativeRangeDownloader-Swift-Cxx-Umbrella.hpp"
|
|
@@ -273,14 +270,6 @@ namespace margelo::nitro::reactnativerangedownloader {
|
|
|
273
270
|
auto __value = std::move(__result.value());
|
|
274
271
|
return __value;
|
|
275
272
|
}
|
|
276
|
-
inline std::shared_ptr<Promise<void>> reconcileFirmwareArtifactLeases(const FirmwareArtifactLeaseReconcileParams& params) override {
|
|
277
|
-
auto __result = _swiftPart.reconcileFirmwareArtifactLeases(std::forward<decltype(params)>(params));
|
|
278
|
-
if (__result.hasError()) [[unlikely]] {
|
|
279
|
-
std::rethrow_exception(__result.error());
|
|
280
|
-
}
|
|
281
|
-
auto __value = std::move(__result.value());
|
|
282
|
-
return __value;
|
|
283
|
-
}
|
|
284
273
|
inline std::shared_ptr<Promise<FirmwareArtifactSweepResult>> sweepFirmwareArtifactOrphans() override {
|
|
285
274
|
auto __result = _swiftPart.sweepFirmwareArtifactOrphans();
|
|
286
275
|
if (__result.hasError()) [[unlikely]] {
|
|
@@ -31,7 +31,6 @@ public protocol HybridReactNativeRangeDownloaderSpec_protocol: HybridObject {
|
|
|
31
31
|
func createFirmwareArtifactLease(params: FirmwareArtifactLeaseCreateParams) throws -> Promise<FirmwareArtifactLease>
|
|
32
32
|
func retainFirmwareArtifact(params: FirmwareArtifactLeaseRetainParams) throws -> Promise<Void>
|
|
33
33
|
func releaseFirmwareArtifactLease(params: FirmwareArtifactLeaseReleaseParams) throws -> Promise<Void>
|
|
34
|
-
func reconcileFirmwareArtifactLeases(params: FirmwareArtifactLeaseReconcileParams) throws -> Promise<Void>
|
|
35
34
|
func sweepFirmwareArtifactOrphans() throws -> Promise<FirmwareArtifactSweepResult>
|
|
36
35
|
}
|
|
37
36
|
|