@procivis/react-native-one-core 1.33398.0 → 1.43299.1

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 (167) hide show
  1. package/README.md +8 -26
  2. package/android/build.gradle +27 -3
  3. package/android/build.gradle_opensource +121 -0
  4. package/android/libs/core-reactnative-compatible-2025.0305.1.aar +0 -0
  5. package/android/src/main/AndroidManifest.xml +5 -2
  6. package/android/src/main/java/ch/procivis/one/core/Deserialize.kt +5 -5
  7. package/android/src/main/java/ch/procivis/one/core/DeserializeSpecific.kt +4 -3
  8. package/android/src/main/java/ch/procivis/one/core/ProcivisOneCoreModule.kt +136 -16
  9. package/android/src/main/java/ch/procivis/one/core/ProcivisOneCorePackage.kt +3 -4
  10. package/android/src/main/java/ch/procivis/one/core/Serialize.kt +3 -1
  11. package/android/src/main/java/ch/procivis/one/core/SerializeSpecific.kt +19 -0
  12. package/android/src/main/java/ch/procivis/one/core/ubiqu/PinPadRunner.kt +123 -0
  13. package/android/src/main/java/ch/procivis/one/core/ubiqu/PinPadViewManager.kt +23 -0
  14. package/android/src/main/java/ch/procivis/one/core/ubiqu/PinPadViewManager.kt_opensource +20 -0
  15. package/android/src/main/java/ch/procivis/one/core/ubiqu/PinPadWrapper.kt +396 -0
  16. package/android/src/main/java/ch/procivis/one/core/ubiqu/RegistrationManager.kt +59 -0
  17. package/android/src/main/java/ch/procivis/one/core/ubiqu/TokenManager.kt +48 -0
  18. package/android/src/main/java/ch/procivis/one/core/ubiqu/UbiquKeyStorage.kt +256 -0
  19. package/android/src/main/java/ch/procivis/one/core/ubiqu/UbiquKeyStorage.kt_opensource +51 -0
  20. package/android/src/main/java/ch/procivis/one/core/ubiqu/Util.kt +74 -0
  21. package/android/src/main/java/ch/procivis/one/core/ubiqu/dataformats/CreateIdentityRequest.kt +9 -0
  22. package/android/src/main/java/ch/procivis/one/core/ubiqu/dataformats/CreateIdentityResponse.kt +9 -0
  23. package/android/src/main/java/ch/procivis/one/core/ubiqu/dataformats/RegisterRSEResponse.kt +10 -0
  24. package/core-sdk.json +6 -6
  25. package/dist/index.d.ts +7 -0
  26. package/dist/index.js +10 -4
  27. package/dist/src/cache.d.ts +0 -4
  28. package/dist/src/cache.js +0 -5
  29. package/dist/src/config.d.ts +14 -4
  30. package/dist/src/core.d.ts +16 -6
  31. package/dist/src/core.js +72 -0
  32. package/dist/src/credential.d.ts +7 -2
  33. package/dist/src/credentialSchema.d.ts +5 -2
  34. package/dist/src/credentialSchema.js +2 -0
  35. package/dist/src/history.d.ts +23 -5
  36. package/dist/src/history.js +13 -1
  37. package/dist/src/identifier.d.ts +132 -0
  38. package/dist/src/identifier.js +29 -0
  39. package/dist/src/organisation.d.ts +8 -0
  40. package/dist/src/organisation.js +1 -0
  41. package/dist/src/proof.d.ts +26 -6
  42. package/dist/src/proof.js +13 -5
  43. package/dist/src/trust.d.ts +1 -1
  44. package/dist/src/ubiqu.d.ts +49 -0
  45. package/dist/src/ubiqu.js +69 -0
  46. package/ios/Deserialize.swift +141 -776
  47. package/ios/EventEmitter.swift +91 -0
  48. package/ios/ProcivisOneCoreModule.m +49 -5
  49. package/ios/ProcivisOneCoreModule.swift +994 -687
  50. package/ios/ProcivisRNOneCore.xcodeproj/project.pbxproj +37 -27
  51. package/ios/RNDecoder/RNDecoder.swift +191 -0
  52. package/ios/RNDecoder/RNDecodingStorage.swift +33 -0
  53. package/ios/RNDecoder/RNKeyedDecodingContainer.swift +133 -0
  54. package/ios/RNDecoder/RNUnkeyedDecodingContainer.swift +175 -0
  55. package/ios/RNEncoder/RNAnyCodingKey.swift +31 -0
  56. package/ios/RNEncoder/RNEncoder.swift +95 -0
  57. package/ios/RNEncoder/RNKeyedEncodingContainer.swift +81 -0
  58. package/ios/RNEncoder/RNSingleValueEncodingContainer.swift +78 -0
  59. package/ios/RNEncoder/RNUnkeyedEncodingContainer.swift +84 -0
  60. package/ios/RSEKeyStorage.swift +587 -0
  61. package/ios/RSEKeyStorage.swift_opensource +49 -0
  62. package/ios/RSEPinPad.swift +74 -0
  63. package/ios/RSEPinPad.swift_opensource +21 -0
  64. package/ios/RSEPinPadManager.m +19 -0
  65. package/ios/Serialize.swift +46 -596
  66. package/ios/UBQKit.xcframework/Info.plist +44 -0
  67. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Assets.car +0 -0
  68. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/AFCompatibilityMacros.h +37 -0
  69. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/AFHTTPSessionManager.h +304 -0
  70. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/AFNetworkReachabilityManager.h +216 -0
  71. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/AFNetworking.h +41 -0
  72. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/AFPlainTextRequestSerializer.h +16 -0
  73. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/AFSecurityPolicy.h +156 -0
  74. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/AFURLRequestSerialization.h +479 -0
  75. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/AFURLResponseSerialization.h +310 -0
  76. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/AFURLSessionManager.h +501 -0
  77. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/CardRequestProtocol.h +72 -0
  78. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/Constants.h +222 -0
  79. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/DeviceBindProtocol.h +38 -0
  80. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/DomainSecurityModule.h +43 -0
  81. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/ErrorDomains.h +68 -0
  82. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/FreeAssetProtocol.h +40 -0
  83. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/GDataXMLNode.h +214 -0
  84. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/NSDictionary+Utilities.h +23 -0
  85. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/NSFileManager+Utilities.h +20 -0
  86. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/NSString+Utilities.h +23 -0
  87. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/NSURL+Utilities.h +12 -0
  88. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/ProtocolBase.h +38 -0
  89. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/ResetPinProtocol.h +45 -0
  90. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/Settings.h +120 -0
  91. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/UBQCardRequest.h +58 -0
  92. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/UBQCardRequestBaseProcessor.h +37 -0
  93. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/UBQCardRequestBindProcessor.h +34 -0
  94. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/UBQCardRequestNullProcessor.h +28 -0
  95. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/UBQCardRequestResetPinProcessor.h +35 -0
  96. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/UBQCardRequestUnlockProcessor.h +31 -0
  97. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/UBQCardRequestUseProcessor.h +34 -0
  98. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/UBQKit-Swift.h +761 -0
  99. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/UBQKit.h +56 -0
  100. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Headers/UBQPacket.h +38 -0
  101. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Info.plist +0 -0
  102. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Modules/UBQKit.swiftmodule/arm64-apple-ios.abi.json +89006 -0
  103. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Modules/UBQKit.swiftmodule/arm64-apple-ios.private.swiftinterface +1099 -0
  104. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Modules/UBQKit.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  105. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Modules/UBQKit.swiftmodule/arm64-apple-ios.swiftinterface +1099 -0
  106. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/Modules/module.modulemap +11 -0
  107. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/UBQKit +0 -0
  108. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/_CodeSignature/CodeResources +597 -0
  109. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/certs +0 -0
  110. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/checksums +0 -0
  111. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/pinning_pub +0 -0
  112. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/static +0 -0
  113. package/ios/UBQKit.xcframework/ios-arm64/UBQKit.framework/stream +0 -0
  114. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Assets.car +0 -0
  115. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/AFCompatibilityMacros.h +37 -0
  116. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/AFHTTPSessionManager.h +304 -0
  117. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/AFNetworkReachabilityManager.h +216 -0
  118. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/AFNetworking.h +41 -0
  119. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/AFPlainTextRequestSerializer.h +16 -0
  120. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/AFSecurityPolicy.h +156 -0
  121. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/AFURLRequestSerialization.h +479 -0
  122. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/AFURLResponseSerialization.h +310 -0
  123. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/AFURLSessionManager.h +501 -0
  124. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/CardRequestProtocol.h +72 -0
  125. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/Constants.h +222 -0
  126. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/DeviceBindProtocol.h +38 -0
  127. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/DomainSecurityModule.h +43 -0
  128. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/ErrorDomains.h +68 -0
  129. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/FreeAssetProtocol.h +40 -0
  130. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/GDataXMLNode.h +214 -0
  131. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/NSDictionary+Utilities.h +23 -0
  132. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/NSFileManager+Utilities.h +20 -0
  133. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/NSString+Utilities.h +23 -0
  134. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/NSURL+Utilities.h +12 -0
  135. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/ProtocolBase.h +38 -0
  136. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/ResetPinProtocol.h +45 -0
  137. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/Settings.h +120 -0
  138. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/UBQCardRequest.h +58 -0
  139. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/UBQCardRequestBaseProcessor.h +37 -0
  140. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/UBQCardRequestBindProcessor.h +34 -0
  141. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/UBQCardRequestNullProcessor.h +28 -0
  142. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/UBQCardRequestResetPinProcessor.h +35 -0
  143. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/UBQCardRequestUnlockProcessor.h +31 -0
  144. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/UBQCardRequestUseProcessor.h +34 -0
  145. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/UBQKit-Swift.h +1522 -0
  146. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/UBQKit.h +56 -0
  147. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Headers/UBQPacket.h +38 -0
  148. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Info.plist +0 -0
  149. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Modules/UBQKit.swiftmodule/arm64-apple-ios-simulator.abi.json +89006 -0
  150. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Modules/UBQKit.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +1099 -0
  151. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Modules/UBQKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  152. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Modules/UBQKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface +1099 -0
  153. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Modules/UBQKit.swiftmodule/x86_64-apple-ios-simulator.abi.json +89006 -0
  154. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Modules/UBQKit.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +1099 -0
  155. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Modules/UBQKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  156. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Modules/UBQKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +1099 -0
  157. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/Modules/module.modulemap +11 -0
  158. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/UBQKit +0 -0
  159. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/_CodeSignature/CodeResources +652 -0
  160. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/certs +0 -0
  161. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/checksums +0 -0
  162. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/pinning_pub +0 -0
  163. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/static +0 -0
  164. package/ios/UBQKit.xcframework/ios-arm64_x86_64-simulator/UBQKit.framework/stream +0 -0
  165. package/ios/Util.swift +36 -25
  166. package/package.json +5 -4
  167. package/react-native-one-core.podspec +4 -5
@@ -0,0 +1,31 @@
1
+ struct RNAnyCodingKey: CodingKey, Equatable {
2
+ var stringValue: String
3
+ var intValue: Int?
4
+
5
+ init(stringValue: String) {
6
+ self.stringValue = stringValue
7
+ self.intValue = nil
8
+ }
9
+
10
+ init(intValue: Int) {
11
+ self.stringValue = "\(intValue)"
12
+ self.intValue = intValue
13
+ }
14
+
15
+ init<Key>(_ base: Key) where Key: CodingKey {
16
+ if let intValue = base.intValue {
17
+ self.init(intValue: intValue)
18
+ } else {
19
+ self.init(stringValue: base.stringValue)
20
+ }
21
+ }
22
+ }
23
+
24
+ extension RNAnyCodingKey: Hashable {
25
+ public func hash(into hasher: inout Hasher) {
26
+ if intValue != nil {
27
+ hasher.combine(intValue)
28
+ }
29
+ hasher.combine(stringValue)
30
+ }
31
+ }
@@ -0,0 +1,95 @@
1
+ import Foundation
2
+
3
+ public typealias CustomEncoder = (_ value: Encodable) throws -> Any?
4
+ public let customEncoderKey = CodingUserInfoKey(rawValue: "customEncoder")!
5
+
6
+ final public class RNEncoder {
7
+ public init() {}
8
+
9
+ /**
10
+ A dictionary you use to customize the encoding process
11
+ by providing contextual information.
12
+ */
13
+ public var userInfo: [CodingUserInfoKey: Any] = [:]
14
+
15
+ public func encode<T>(_ value: T) throws -> Any where T: Encodable {
16
+ if let customEncoder = self.userInfo[customEncoderKey] {
17
+ if let result = try (customEncoder as! CustomEncoder)(value) {
18
+ return result
19
+ }
20
+ }
21
+
22
+ let encoder = RNObjectEncoder(userInfo: self.userInfo)
23
+ try value.encode(to: encoder)
24
+ return encoder.data
25
+ }
26
+ }
27
+
28
+ // MARK: - TopLevelEncoder
29
+
30
+ #if canImport(Combine)
31
+ import Combine
32
+
33
+ extension RNEncoder: TopLevelEncoder {}
34
+ #endif
35
+
36
+ // MARK: -
37
+
38
+ protocol RNEncodingContainer {
39
+ var data: Any? { get }
40
+ }
41
+
42
+ class RNObjectEncoder {
43
+ var codingPath: [CodingKey] = []
44
+
45
+ var userInfo: [CodingUserInfoKey: Any] = [:]
46
+
47
+ fileprivate var container: RNEncodingContainer?
48
+
49
+ var data: Any {
50
+ return container?.data ?? NSDictionary()
51
+ }
52
+
53
+ init(userInfo: [CodingUserInfoKey: Any]) {
54
+ self.userInfo = userInfo
55
+ }
56
+ }
57
+
58
+ extension RNObjectEncoder: Encoder {
59
+ fileprivate func assertCanCreateContainer() {
60
+ precondition(self.container == nil)
61
+ }
62
+
63
+ func container<Key>(keyedBy type: Key.Type) -> KeyedEncodingContainer<Key> where Key: CodingKey {
64
+ assertCanCreateContainer()
65
+
66
+ let container = RNKeyedEncodingContainer<Key>(
67
+ codingPath: self.codingPath,
68
+ userInfo: self.userInfo
69
+ )
70
+ self.container = container
71
+
72
+ return KeyedEncodingContainer(container)
73
+ }
74
+
75
+ func unkeyedContainer() -> UnkeyedEncodingContainer {
76
+ assertCanCreateContainer()
77
+
78
+ let container = RNUnkeyedEncodingContainer(codingPath: self.codingPath, userInfo: self.userInfo)
79
+ self.container = container
80
+
81
+ return container
82
+ }
83
+
84
+ func singleValueContainer() -> SingleValueEncodingContainer {
85
+ assertCanCreateContainer()
86
+
87
+ let container = RNSingleValueEncodingContainer(
88
+ codingPath: self.codingPath,
89
+ userInfo: self.userInfo
90
+ )
91
+ self.container = container
92
+
93
+ return container
94
+ }
95
+ }
@@ -0,0 +1,81 @@
1
+ import Foundation
2
+
3
+ final class RNKeyedEncodingContainer<Key> where Key: CodingKey {
4
+ private var storage: [RNAnyCodingKey: RNEncodingContainer] = [:]
5
+
6
+ var codingPath: [CodingKey]
7
+ var userInfo: [CodingUserInfoKey: Any]
8
+
9
+ func nestedCodingPath(forKey key: CodingKey) -> [CodingKey] {
10
+ return self.codingPath + [key]
11
+ }
12
+
13
+ init(codingPath: [CodingKey], userInfo: [CodingUserInfoKey: Any]) {
14
+ self.codingPath = codingPath
15
+ self.userInfo = userInfo
16
+ }
17
+ }
18
+
19
+ extension RNKeyedEncodingContainer: KeyedEncodingContainerProtocol {
20
+ func encodeNil(forKey key: Key) throws {
21
+ var container = self.nestedSingleValueContainer(forKey: key)
22
+ try container.encodeNil()
23
+ }
24
+
25
+ func encode<T>(_ value: T, forKey key: Key) throws where T: Encodable {
26
+ var container = self.nestedSingleValueContainer(forKey: key)
27
+ try container.encode(value)
28
+ }
29
+
30
+ private func nestedSingleValueContainer(forKey key: Key) -> SingleValueEncodingContainer {
31
+ let container = RNSingleValueEncodingContainer(
32
+ codingPath: self.nestedCodingPath(forKey: key),
33
+ userInfo: self.userInfo
34
+ )
35
+ self.storage[RNAnyCodingKey(key)] = container
36
+ return container
37
+ }
38
+
39
+ func nestedUnkeyedContainer(forKey key: Key) -> UnkeyedEncodingContainer {
40
+ let container = RNUnkeyedEncodingContainer(
41
+ codingPath: self.nestedCodingPath(forKey: key),
42
+ userInfo: self.userInfo
43
+ )
44
+ self.storage[RNAnyCodingKey(key)] = container
45
+
46
+ return container
47
+ }
48
+
49
+ func nestedContainer<NestedKey>(keyedBy keyType: NestedKey.Type, forKey key: Key)
50
+ -> KeyedEncodingContainer<NestedKey> where NestedKey: CodingKey
51
+ {
52
+ let container = RNKeyedEncodingContainer<NestedKey>(
53
+ codingPath: self.nestedCodingPath(forKey: key),
54
+ userInfo: self.userInfo
55
+ )
56
+ self.storage[RNAnyCodingKey(key)] = container
57
+
58
+ return KeyedEncodingContainer(container)
59
+ }
60
+
61
+ func superEncoder() -> Encoder {
62
+ fatalError("Unimplemented")
63
+ }
64
+
65
+ func superEncoder(forKey key: Key) -> Encoder {
66
+ fatalError("Unimplemented")
67
+ }
68
+ }
69
+
70
+ extension RNKeyedEncodingContainer: RNEncodingContainer {
71
+ var data: Any? {
72
+ var result: [String: Any] = [:]
73
+ for (key, container) in self.storage {
74
+ let data = container.data
75
+ if data != nil {
76
+ result[key.stringValue] = data
77
+ }
78
+ }
79
+ return result
80
+ }
81
+ }
@@ -0,0 +1,78 @@
1
+ import Foundation
2
+
3
+ final class RNSingleValueEncodingContainer {
4
+ private var storage: Any? = nil
5
+
6
+ fileprivate var canEncodeNewValue = true
7
+ fileprivate func checkCanEncode(value: Any?) throws {
8
+ guard self.canEncodeNewValue else {
9
+ let context = EncodingError.Context(
10
+ codingPath: self.codingPath,
11
+ debugDescription:
12
+ "Attempt to encode value through single value container when previously value already encoded."
13
+ )
14
+ throw EncodingError.invalidValue(value as Any, context)
15
+ }
16
+ }
17
+
18
+ var codingPath: [CodingKey]
19
+ var userInfo: [CodingUserInfoKey: Any]
20
+
21
+ init(codingPath: [CodingKey], userInfo: [CodingUserInfoKey: Any]) {
22
+ self.codingPath = codingPath
23
+ self.userInfo = userInfo
24
+ }
25
+ }
26
+
27
+ extension RNSingleValueEncodingContainer: SingleValueEncodingContainer {
28
+ func encodeNil() throws {
29
+ try checkCanEncode(value: nil)
30
+ defer { self.canEncodeNewValue = false }
31
+
32
+ self.storage = nil
33
+ }
34
+
35
+ func encode<T>(_ value: T) throws where T: Encodable {
36
+ try checkCanEncode(value: value)
37
+ defer { self.canEncodeNewValue = false }
38
+ self.storage = try encodeSingle(value)
39
+ }
40
+
41
+ private func encodeSingle<T>(_ value: T) throws -> Any where T: Encodable {
42
+ if let customEncoder = self.userInfo[customEncoderKey] {
43
+ if let result = try (customEncoder as! CustomEncoder)(value) {
44
+ return result
45
+ }
46
+ }
47
+
48
+ switch value {
49
+ case let data as String:
50
+ return data
51
+ case let data as Double:
52
+ return data
53
+ case let data as Float:
54
+ return Double(data)
55
+ case let data as Bool:
56
+ return data
57
+ case let data as any BinaryInteger:
58
+ return data
59
+ case let data as any CaseIterable:
60
+ return serializeEnumValue(value: data)
61
+ case let data as [any Encodable]:
62
+ return try data.map { try encodeSingle($0) }
63
+ default:
64
+ break
65
+ }
66
+
67
+ // Object
68
+ let encoder = RNObjectEncoder(userInfo: self.userInfo)
69
+ try value.encode(to: encoder)
70
+ return encoder.data
71
+ }
72
+ }
73
+
74
+ extension RNSingleValueEncodingContainer: RNEncodingContainer {
75
+ var data: Any? {
76
+ return storage
77
+ }
78
+ }
@@ -0,0 +1,84 @@
1
+ import Foundation
2
+
3
+ final class RNUnkeyedEncodingContainer {
4
+ private var storage: [RNEncodingContainer] = []
5
+
6
+ var count: Int {
7
+ return storage.count
8
+ }
9
+
10
+ var codingPath: [CodingKey]
11
+
12
+ var nestedCodingPath: [CodingKey] {
13
+ return self.codingPath + [RNAnyCodingKey(intValue: self.count)]
14
+ }
15
+
16
+ var userInfo: [CodingUserInfoKey: Any]
17
+
18
+ init(codingPath: [CodingKey], userInfo: [CodingUserInfoKey: Any]) {
19
+ self.codingPath = codingPath
20
+ self.userInfo = userInfo
21
+ }
22
+ }
23
+
24
+ extension RNUnkeyedEncodingContainer: UnkeyedEncodingContainer {
25
+ func encodeNil() throws {
26
+ var container = self.nestedSingleValueContainer()
27
+ try container.encodeNil()
28
+ }
29
+
30
+ func encode<T>(_ value: T) throws where T: Encodable {
31
+ var container = self.nestedSingleValueContainer()
32
+ try container.encode(value)
33
+ }
34
+
35
+ private func nestedSingleValueContainer() -> SingleValueEncodingContainer {
36
+ let container = RNSingleValueEncodingContainer(
37
+ codingPath: self.nestedCodingPath,
38
+ userInfo: self.userInfo
39
+ )
40
+ self.storage.append(container)
41
+
42
+ return container
43
+ }
44
+
45
+ func nestedContainer<NestedKey>(keyedBy keyType: NestedKey.Type) -> KeyedEncodingContainer<
46
+ NestedKey
47
+ > where NestedKey: CodingKey {
48
+ let container = RNKeyedEncodingContainer<NestedKey>(
49
+ codingPath: self.nestedCodingPath,
50
+ userInfo: self.userInfo
51
+ )
52
+ self.storage.append(container)
53
+
54
+ return KeyedEncodingContainer(container)
55
+ }
56
+
57
+ func nestedUnkeyedContainer() -> UnkeyedEncodingContainer {
58
+ let container = RNUnkeyedEncodingContainer(
59
+ codingPath: self.nestedCodingPath,
60
+ userInfo: self.userInfo
61
+ )
62
+ self.storage.append(container)
63
+
64
+ return container
65
+ }
66
+
67
+ func superEncoder() -> Encoder {
68
+ fatalError("Unimplemented")
69
+ }
70
+ }
71
+
72
+ extension RNUnkeyedEncodingContainer: RNEncodingContainer {
73
+ var data: Any? {
74
+ var result: [Any] = []
75
+
76
+ for container in storage {
77
+ if let data = container.data {
78
+ result.append(data)
79
+ }
80
+ }
81
+
82
+ return result
83
+ }
84
+ }