@procivis/react-native-one-core 1.41710.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 (31) hide show
  1. package/android/src/main/java/ch/procivis/one/core/DeserializeSpecific.kt +1 -1
  2. package/android/src/main/java/ch/procivis/one/core/ProcivisOneCoreModule.kt +37 -4
  3. package/android/src/main/java/ch/procivis/one/core/Serialize.kt +3 -1
  4. package/android/src/main/java/ch/procivis/one/core/SerializeSpecific.kt +13 -0
  5. package/core-sdk.json +6 -6
  6. package/dist/src/config.d.ts +3 -1
  7. package/dist/src/core.d.ts +9 -3
  8. package/dist/src/core.js +5 -0
  9. package/dist/src/credential.d.ts +6 -2
  10. package/dist/src/history.d.ts +5 -2
  11. package/dist/src/history.js +3 -0
  12. package/dist/src/identifier.d.ts +132 -0
  13. package/dist/src/identifier.js +29 -0
  14. package/dist/src/proof.d.ts +9 -4
  15. package/ios/Deserialize.swift +140 -813
  16. package/ios/EventEmitter.swift +84 -72
  17. package/ios/ProcivisOneCoreModule.m +19 -1
  18. package/ios/ProcivisOneCoreModule.swift +986 -806
  19. package/ios/ProcivisRNOneCore.xcodeproj/project.pbxproj +9 -1
  20. package/ios/RNDecoder/RNDecoder.swift +191 -0
  21. package/ios/RNDecoder/RNDecodingStorage.swift +33 -0
  22. package/ios/RNDecoder/RNKeyedDecodingContainer.swift +133 -0
  23. package/ios/RNDecoder/RNUnkeyedDecodingContainer.swift +175 -0
  24. package/ios/RNEncoder/RNAnyCodingKey.swift +31 -0
  25. package/ios/RNEncoder/RNEncoder.swift +95 -0
  26. package/ios/RNEncoder/RNKeyedEncodingContainer.swift +81 -0
  27. package/ios/RNEncoder/RNSingleValueEncodingContainer.swift +78 -0
  28. package/ios/RNEncoder/RNUnkeyedEncodingContainer.swift +84 -0
  29. package/ios/Serialize.swift +43 -613
  30. package/ios/Util.swift +35 -25
  31. package/package.json +2 -2
@@ -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
+ }