@procivis/react-native-one-core 1.41710.0 → 1.52682.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/ch/procivis/one/core/DeserializeSpecific.kt +4 -2
- package/android/src/main/java/ch/procivis/one/core/ProcivisOneCoreModule.kt +45 -12
- package/android/src/main/java/ch/procivis/one/core/Serialize.kt +3 -1
- package/android/src/main/java/ch/procivis/one/core/SerializeSpecific.kt +13 -0
- package/core-sdk.json +6 -6
- package/dist/src/config.d.ts +17 -2
- package/dist/src/config.js +9 -0
- package/dist/src/core.d.ts +15 -9
- package/dist/src/core.js +6 -1
- package/dist/src/credential.d.ts +6 -6
- package/dist/src/history.d.ts +6 -3
- package/dist/src/history.js +3 -0
- package/dist/src/identifier.d.ts +125 -0
- package/dist/src/identifier.js +29 -0
- package/dist/src/key.d.ts +0 -3
- package/dist/src/organisation.d.ts +2 -1
- package/dist/src/proof.d.ts +11 -9
- package/dist/src/trust.d.ts +44 -4
- package/dist/src/trust.js +5 -0
- package/ios/Deserialize.swift +140 -813
- package/ios/EventEmitter.swift +84 -72
- package/ios/ProcivisOneCoreModule.m +23 -6
- package/ios/ProcivisOneCoreModule.swift +981 -805
- package/ios/ProcivisRNOneCore.xcodeproj/project.pbxproj +9 -1
- package/ios/RNDecoder/RNDecoder.swift +191 -0
- package/ios/RNDecoder/RNDecodingStorage.swift +33 -0
- package/ios/RNDecoder/RNKeyedDecodingContainer.swift +133 -0
- package/ios/RNDecoder/RNUnkeyedDecodingContainer.swift +175 -0
- package/ios/RNEncoder/RNAnyCodingKey.swift +31 -0
- package/ios/RNEncoder/RNEncoder.swift +95 -0
- package/ios/RNEncoder/RNKeyedEncodingContainer.swift +81 -0
- package/ios/RNEncoder/RNSingleValueEncodingContainer.swift +78 -0
- package/ios/RNEncoder/RNUnkeyedEncodingContainer.swift +84 -0
- package/ios/Serialize.swift +46 -615
- package/ios/Util.swift +35 -25
- package/package.json +4 -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
|
+
}
|