@procivis/react-native-one-core 1.26730.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.
Files changed (51) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +202 -0
  3. package/android/build.gradle +96 -0
  4. package/android/proguard-rules.pro +4 -0
  5. package/android/src/main/AndroidManifest.xml +2 -0
  6. package/android/src/main/java/ch/procivis/one/core/Deserialize.kt +118 -0
  7. package/android/src/main/java/ch/procivis/one/core/DeserializeSpecific.kt +94 -0
  8. package/android/src/main/java/ch/procivis/one/core/ProcivisOneCoreModule.kt +444 -0
  9. package/android/src/main/java/ch/procivis/one/core/ProcivisOneCorePackage.kt +19 -0
  10. package/android/src/main/java/ch/procivis/one/core/Serialize.kt +115 -0
  11. package/android/src/main/java/ch/procivis/one/core/SerializeSpecific.kt +121 -0
  12. package/android/src/main/java/ch/procivis/one/core/Util.kt +23 -0
  13. package/bin/postinstall +12 -0
  14. package/core-sdk.json +16 -0
  15. package/dist/index.d.ts +15 -0
  16. package/dist/index.js +59 -0
  17. package/dist/src/backup.d.ts +22 -0
  18. package/dist/src/backup.js +1 -0
  19. package/dist/src/config.d.ts +100 -0
  20. package/dist/src/config.js +25 -0
  21. package/dist/src/core.d.ts +109 -0
  22. package/dist/src/core.js +11 -0
  23. package/dist/src/credential.d.ts +115 -0
  24. package/dist/src/credential.js +39 -0
  25. package/dist/src/credentialSchema.d.ts +130 -0
  26. package/dist/src/credentialSchema.js +37 -0
  27. package/dist/src/did.d.ts +59 -0
  28. package/dist/src/did.js +27 -0
  29. package/dist/src/error.d.ts +23 -0
  30. package/dist/src/error.js +25 -0
  31. package/dist/src/history.d.ts +66 -0
  32. package/dist/src/history.js +42 -0
  33. package/dist/src/key.d.ts +17 -0
  34. package/dist/src/key.js +1 -0
  35. package/dist/src/list.d.ts +14 -0
  36. package/dist/src/list.js +5 -0
  37. package/dist/src/proof.d.ts +137 -0
  38. package/dist/src/proof.js +30 -0
  39. package/dist/src/proofSchema.d.ts +106 -0
  40. package/dist/src/proofSchema.js +9 -0
  41. package/dist/src/trust.d.ts +46 -0
  42. package/dist/src/trust.js +18 -0
  43. package/ios/Deserialize.swift +655 -0
  44. package/ios/ProcivisOneCoreModule.m +216 -0
  45. package/ios/ProcivisOneCoreModule.swift +600 -0
  46. package/ios/ProcivisRNOneCore.xcodeproj/project.pbxproj +318 -0
  47. package/ios/Serialize.swift +607 -0
  48. package/ios/Util.swift +47 -0
  49. package/ios/react-native-one-core-Bridging-Header.h +1 -0
  50. package/package.json +40 -0
  51. package/react-native-one-core.podspec +46 -0
@@ -0,0 +1,607 @@
1
+ //
2
+ // Serialize.swift
3
+ // react-native-one-core
4
+ //
5
+ // Created by Pavel Zarecky
6
+ //
7
+
8
+ import Foundation
9
+
10
+ // Enum values serialization
11
+ func serializeEnumValue<T>(value: T) -> String {
12
+ return String(describing: value).snakeCased()
13
+ }
14
+
15
+ private let snakeCaseRegex = try! NSRegularExpression(pattern: "([a-z0-9])([A-Z])", options: [])
16
+ extension String {
17
+ func snakeCased() -> String {
18
+ let range = NSRange(location: 0, length: count)
19
+ return snakeCaseRegex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: "$1_$2").uppercased()
20
+ }
21
+ }
22
+
23
+ private func opt<F, T>(_ value: F?, _ serialize: @escaping (_ input: F) -> T) -> T? {
24
+ if (value == nil) {
25
+ return nil;
26
+ }
27
+ return serialize(value!)
28
+ }
29
+
30
+ extension Dictionary where Key: ExpressibleByStringLiteral {
31
+ mutating func addOpt<T>(_ field: String, _ value: T?) {
32
+ if (value != nil) {
33
+ self[field as! Key] = value! as? Value
34
+ }
35
+ }
36
+ }
37
+
38
+ // Business objects serialization
39
+ func serialize(version: VersionBindingDto) -> NSDictionary {
40
+ return [
41
+ "target": version.target,
42
+ "buildTime": version.buildTime,
43
+ "branch": version.branch,
44
+ "tag": version.tag,
45
+ "commit": version.commit,
46
+ "rustVersion": version.rustVersion,
47
+ "pipelineId": version.pipelineId
48
+ ]
49
+ }
50
+
51
+ func serialize(config: ConfigBindingDto) -> NSDictionary {
52
+ return [
53
+ "format": config.format,
54
+ "exchange": config.exchange,
55
+ "transport": config.transport,
56
+ "revocation": config.revocation,
57
+ "did": config.did,
58
+ "datatype": config.datatype,
59
+ "keyAlgorithm": config.keyAlgorithm,
60
+ "keyStorage": config.keyStorage,
61
+ "cacheEntities": config.cacheEntities,
62
+ ]
63
+ }
64
+
65
+ func serialize(credentialSchemaType: CredentialSchemaTypeBindingEnum) -> String {
66
+ switch (credentialSchemaType) {
67
+ case .procivisOneSchema2024:
68
+ return "PROCIVIS_ONE_SCHEMA2024";
69
+ case .fallbackSchema2024:
70
+ return "FALLBACK_SCHEMA2024";
71
+ case .mdoc:
72
+ return "MDOC";
73
+ case let .other(value):
74
+ return value;
75
+ }
76
+ }
77
+
78
+ func serialize(credentialSchema: CredentialSchemaBindingDto) -> NSDictionary {
79
+ var result: [String: Any] = [
80
+ "id": credentialSchema.id,
81
+ "createdDate": credentialSchema.createdDate,
82
+ "lastModified": credentialSchema.lastModified,
83
+ "name": credentialSchema.name,
84
+ "format": credentialSchema.format,
85
+ "revocationMethod": credentialSchema.revocationMethod,
86
+ "schemaId": credentialSchema.schemaId,
87
+ "importedSourceUrl": credentialSchema.importedSourceUrl,
88
+ "schemaType": serialize(credentialSchemaType: credentialSchema.schemaType)
89
+ ]
90
+ result.addOpt("walletStorageType", opt(credentialSchema.walletStorageType, serializeEnumValue))
91
+ result.addOpt("layoutType", opt(credentialSchema.layoutType, serializeEnumValue))
92
+ result.addOpt("layoutProperties", opt(credentialSchema.layoutProperties, {properties in serialize(layoutProperties: properties)}))
93
+ return result as NSDictionary
94
+ }
95
+
96
+ func serialize(credentialSchemaDetail: CredentialSchemaDetailBindingDto) -> NSDictionary {
97
+ var result: [String: Any] = [
98
+ "id": credentialSchemaDetail.id,
99
+ "createdDate": credentialSchemaDetail.createdDate,
100
+ "lastModified": credentialSchemaDetail.lastModified,
101
+ "name": credentialSchemaDetail.name,
102
+ "format": credentialSchemaDetail.format,
103
+ "revocationMethod": credentialSchemaDetail.revocationMethod,
104
+ "schemaId": credentialSchemaDetail.schemaId,
105
+ "importedSourceUrl": credentialSchemaDetail.importedSourceUrl,
106
+ "schemaType": serialize(credentialSchemaType: credentialSchemaDetail.schemaType),
107
+ "claims": credentialSchemaDetail.claims.map { serialize(claimSchema: $0) }
108
+ ]
109
+ result.addOpt("walletStorageType", opt(credentialSchemaDetail.walletStorageType, serializeEnumValue))
110
+ result.addOpt("layoutType", opt(credentialSchemaDetail.layoutType, serializeEnumValue))
111
+ result.addOpt("layoutProperties", opt(credentialSchemaDetail.layoutProperties, {properties in serialize(layoutProperties: properties)}))
112
+
113
+ return result as NSDictionary
114
+ }
115
+
116
+ func serialize(claimSchema: CredentialClaimSchemaBindingDto) -> NSDictionary {
117
+ return [
118
+ "id": claimSchema.id,
119
+ "createdDate": claimSchema.createdDate,
120
+ "lastModified": claimSchema.lastModified,
121
+ "required": claimSchema.required,
122
+ "key": claimSchema.key,
123
+ "array": claimSchema.array,
124
+ "datatype": claimSchema.datatype,
125
+ "claims": claimSchema.claims.map { serialize(claimSchema: $0) }
126
+ ]
127
+ }
128
+
129
+ func serialize(layoutProperties: CredentialSchemaLayoutPropertiesBindingDto) -> NSDictionary {
130
+ var result: [String: Any] = [:]
131
+ result.addOpt("background", opt(layoutProperties.background, {background in serialize(backgroundProperties: background)}))
132
+ result.addOpt("logo", opt(layoutProperties.logo, {logo in serialize(logoProperties: logo)}))
133
+ result.addOpt("primaryAttribute", layoutProperties.primaryAttribute)
134
+ result.addOpt("secondaryAttribute", layoutProperties.secondaryAttribute)
135
+ result.addOpt("pictureAttribute", layoutProperties.pictureAttribute)
136
+ result.addOpt("code", opt(layoutProperties.code, {code in serialize(codeProperties: code)}))
137
+ return result as NSDictionary
138
+ }
139
+
140
+ func serialize(backgroundProperties: CredentialSchemaBackgroundPropertiesBindingDto) -> NSDictionary {
141
+ var result: [String: Any] = [:]
142
+ result.addOpt("color", backgroundProperties.color)
143
+ result.addOpt("image", backgroundProperties.image)
144
+ return result as NSDictionary
145
+ }
146
+
147
+ func serialize(logoProperties: CredentialSchemaLogoPropertiesBindingDto) -> NSDictionary {
148
+ var result: [String: Any] = [:]
149
+ result.addOpt("fontColor", logoProperties.fontColor)
150
+ result.addOpt("backgroundColor", logoProperties.backgroundColor)
151
+ result.addOpt("image", logoProperties.image)
152
+ return result as NSDictionary
153
+ }
154
+
155
+ func serialize(codeProperties: CredentialSchemaCodePropertiesBindingDto) -> NSDictionary {
156
+ return [
157
+ "attribute": codeProperties.attribute,
158
+ "type": serializeEnumValue(value: codeProperties.type),
159
+ ]
160
+ }
161
+
162
+ func serialize(claim: ClaimBindingDto) -> NSDictionary {
163
+ return [
164
+ "id": claim.id,
165
+ "key": claim.key,
166
+ "dataType": claim.dataType,
167
+ "array": claim.array,
168
+ "value": serialize(claimValue: claim.value),
169
+ ]
170
+ }
171
+
172
+ func serialize(claimValue: ClaimValueBindingDto) -> Any {
173
+ switch (claimValue) {
174
+ case let .boolean(value):
175
+ return value;
176
+ case let .float(value):
177
+ return value;
178
+ case let .integer(value):
179
+ return NSNumber(value: value);
180
+ case let .string(value):
181
+ return value;
182
+ case .nested(value: let values):
183
+ return values.map { serialize(claim: $0) }
184
+ }
185
+ }
186
+
187
+ func serialize(credentialListItem: CredentialListItemBindingDto) -> NSDictionary {
188
+ var result: [String: Any] = [
189
+ "id": credentialListItem.id,
190
+ "createdDate": credentialListItem.createdDate,
191
+ "issuanceDate": credentialListItem.issuanceDate,
192
+ "lastModified": credentialListItem.lastModified,
193
+ "state": serializeEnumValue(value: credentialListItem.state),
194
+ "schema": serialize(credentialSchema: credentialListItem.schema),
195
+ "role": serializeEnumValue(value: credentialListItem.role),
196
+ ]
197
+ result.addOpt("revocationDate", credentialListItem.revocationDate)
198
+ result.addOpt("issuerDid", credentialListItem.issuerDid)
199
+ result.addOpt("suspendEndDate", credentialListItem.suspendEndDate)
200
+ return result as NSDictionary
201
+ }
202
+
203
+ func serialize(credentialDetail: CredentialDetailBindingDto) -> NSDictionary {
204
+ var result: [String: Any] = [
205
+ "id": credentialDetail.id,
206
+ "createdDate": credentialDetail.createdDate,
207
+ "issuanceDate": credentialDetail.issuanceDate,
208
+ "lastModified": credentialDetail.lastModified,
209
+ "state": serializeEnumValue(value: credentialDetail.state),
210
+ "claims": credentialDetail.claims.map { serialize(claim: $0) },
211
+ "schema": serialize(credentialSchema: credentialDetail.schema),
212
+ "role": serializeEnumValue(value: credentialDetail.role),
213
+ ]
214
+ result.addOpt("revocationDate", credentialDetail.revocationDate)
215
+ result.addOpt("issuerDid", credentialDetail.issuerDid)
216
+ result.addOpt("redirectUri", credentialDetail.redirectUri)
217
+ result.addOpt("lvvcIssuanceDate", credentialDetail.lvvcIssuanceDate)
218
+ result.addOpt("suspendEndDate", credentialDetail.suspendEndDate)
219
+ result.addOpt("mdocMsoValidity", opt(credentialDetail.mdocMsoValidity, {validity in serialize(mdocMsoValidity: validity)}) )
220
+ return result as NSDictionary
221
+ }
222
+
223
+ func serialize(mdocMsoValidity: MdocMsoValidityResponseBindingDto) -> NSDictionary {
224
+ return [
225
+ "expiration": mdocMsoValidity.expiration,
226
+ "nextUpdate": mdocMsoValidity.nextUpdate,
227
+ "lastUpdate": mdocMsoValidity.lastUpdate,
228
+ ]
229
+ }
230
+
231
+ func serialize(credentialList: CredentialListBindingDto) -> NSDictionary {
232
+ return [
233
+ "totalItems": credentialList.totalItems,
234
+ "totalPages": credentialList.totalPages,
235
+ "values": credentialList.values.map { serialize(credentialListItem: $0) },
236
+ ]
237
+ }
238
+
239
+ func serialize(didList: DidListBindingDto) -> NSDictionary {
240
+ return [
241
+ "totalItems": didList.totalItems,
242
+ "totalPages": didList.totalPages,
243
+ "values": didList.values.map { serialize(didListItem: $0) },
244
+ ]
245
+ }
246
+
247
+ func serialize(credentialSchemaList: CredentialSchemaListBindingDto) -> NSDictionary {
248
+ return [
249
+ "totalItems": credentialSchemaList.totalItems,
250
+ "totalPages": credentialSchemaList.totalPages,
251
+ "values": credentialSchemaList.values.map { serialize(credentialSchema: $0) },
252
+ ]
253
+ }
254
+
255
+ func serialize(proofList: ProofListBindingDto) -> NSDictionary {
256
+ return [
257
+ "totalItems": proofList.totalItems,
258
+ "totalPages": proofList.totalPages,
259
+ "values": proofList.values.map { serialize(proofListItem: $0) },
260
+ ]
261
+ }
262
+
263
+ func serialize(proofListItem: ProofListItemBindingDto) -> NSDictionary {
264
+ var result: [String: Any] = [
265
+ "id": proofListItem.id,
266
+ "createdDate": proofListItem.createdDate,
267
+ "lastModified": proofListItem.lastModified,
268
+ "issuanceDate": proofListItem.issuanceDate,
269
+ "exchange": proofListItem.exchange,
270
+ "transport": proofListItem.transport,
271
+ "state": serializeEnumValue(value: proofListItem.state),
272
+ ]
273
+
274
+ result.addOpt("requestedDate", proofListItem.requestedDate)
275
+ result.addOpt("completedDate", proofListItem.completedDate)
276
+ result.addOpt("schema", opt(proofListItem.schema, {proofSchema in serialize(proofSchemaListItem: proofSchema) }))
277
+ result.addOpt("verifierDid", proofListItem.verifierDid)
278
+
279
+ return result as NSDictionary
280
+ }
281
+
282
+ func serialize(proposeProofResponse: ProposeProofResponseBindingDto) -> NSDictionary {
283
+ return [
284
+ "proofId": proposeProofResponse.proofId,
285
+ "interactionId": proposeProofResponse.interactionId,
286
+ "url": proposeProofResponse.url,
287
+ ]
288
+ }
289
+
290
+ func serialize(proofRequest: ProofRequestBindingDto) -> NSDictionary {
291
+ var result: [String: Any] = [
292
+ "id": proofRequest.id,
293
+ "createdDate": proofRequest.createdDate,
294
+ "lastModified": proofRequest.lastModified,
295
+ "proofInputs": proofRequest.proofInputs.map { serialize(proofInput: $0) },
296
+ "state": serializeEnumValue(value: proofRequest.state),
297
+ "exchange": proofRequest.exchange,
298
+ ]
299
+ result.addOpt("proofSchema", opt(proofRequest.proofSchema, {proofSchema in serialize(proofSchemaListItem: proofSchema) }))
300
+ result.addOpt("verifierDid", proofRequest.verifierDid)
301
+ result.addOpt("redirectUri", proofRequest.redirectUri)
302
+ return result as NSDictionary
303
+ }
304
+
305
+ func serialize(proofSchemaList: ProofSchemaListBindingDto) -> NSDictionary {
306
+ return [
307
+ "totalItems": proofSchemaList.totalItems,
308
+ "totalPages": proofSchemaList.totalPages,
309
+ "values": proofSchemaList.values.map { serialize(proofSchemaListItem: $0) },
310
+ ]
311
+ }
312
+
313
+ func serialize(proofSchemaListItem: GetProofSchemaListItemBindingDto) -> NSDictionary {
314
+ var result: [String: Any] = [
315
+ "id": proofSchemaListItem.id,
316
+ "createdDate": proofSchemaListItem.createdDate,
317
+ "lastModified": proofSchemaListItem.lastModified,
318
+ "name": proofSchemaListItem.name,
319
+ "expireDuration": proofSchemaListItem.expireDuration
320
+ ]
321
+
322
+ result.addOpt("deletedAt", proofSchemaListItem.deletedAt)
323
+ return result as NSDictionary
324
+ }
325
+
326
+ func serialize(proofSchema: GetProofSchemaBindingDto) -> NSDictionary {
327
+ var result: [String: Any] = [
328
+ "id": proofSchema.id,
329
+ "createdDate": proofSchema.createdDate,
330
+ "lastModified": proofSchema.lastModified,
331
+ "name": proofSchema.name,
332
+ "organisationId": proofSchema.organisationId,
333
+ "expireDuration": proofSchema.expireDuration,
334
+ "proofInputSchemas": proofSchema.proofInputSchemas.map { serialize(proofInputSchema: $0) }
335
+ ]
336
+ result.addOpt("importedSourceUrl", proofSchema.importedSourceUrl)
337
+ return result as NSDictionary
338
+ }
339
+
340
+ func serialize(proofInputSchema: ProofInputSchemaBindingDto) -> NSDictionary {
341
+ var result: [String: Any] = [
342
+ "claimSchemas": proofInputSchema.claimSchemas.map { serialize(proofClaimSchema: $0) },
343
+ "credentialSchema": serialize(credentialSchema: proofInputSchema.credentialSchema),
344
+ ]
345
+ result.addOpt("validityConstraint", proofInputSchema.validityConstraint)
346
+
347
+ return result as NSDictionary
348
+ }
349
+
350
+ func serialize(proofInput: ProofInputBindingDto) -> NSDictionary {
351
+ var result: [String: Any] = [
352
+ "claims": proofInput.claims.map { serialize(proofRequestClaim: $0) },
353
+ "credentialSchema": serialize(credentialSchema: proofInput.credentialSchema),
354
+ ]
355
+ result.addOpt("credential", opt(proofInput.credential, { credential in serialize(credentialDetail: credential) }))
356
+ result.addOpt("validityConstraint", proofInput.validityConstraint)
357
+ return result as NSDictionary
358
+ }
359
+
360
+ func serialize(proofRequestClaim: ProofRequestClaimBindingDto) -> NSDictionary {
361
+ var result: [String: Any] = [
362
+ "schema": serialize(proofClaimSchema: proofRequestClaim.schema),
363
+ ]
364
+
365
+ result.addOpt("value", opt(proofRequestClaim.value, { claim in serialize(proofRequestClaimValue: claim) }))
366
+ return result as NSDictionary
367
+ }
368
+
369
+ func serialize(proofRequestClaimValue: ProofRequestClaimValueBindingDto) -> Any {
370
+ switch (proofRequestClaimValue) {
371
+ case let .value(value):
372
+ return value;
373
+ case .claims(value: let values):
374
+ return values.map { serialize(proofRequestClaim: $0)}
375
+ }
376
+ }
377
+
378
+ func serialize(proofClaimSchema: ProofClaimSchemaBindingDto) -> NSDictionary {
379
+ return [
380
+ "id": proofClaimSchema.id,
381
+ "required": proofClaimSchema.required,
382
+ "key": proofClaimSchema.key,
383
+ "dataType": proofClaimSchema.dataType,
384
+ "claims": proofClaimSchema.claims.map { serialize(proofClaimSchema: $0)},
385
+ "array": proofClaimSchema.array,
386
+ ]
387
+ }
388
+
389
+ func serialize(presentationDefinition: PresentationDefinitionBindingDto) -> NSDictionary {
390
+ return [
391
+ "requestGroups": presentationDefinition.requestGroups.map { serialize(presentationDefinitionRequestGroup: $0) },
392
+ ]
393
+ }
394
+
395
+ func serialize(presentationDefinitionRequestGroup: PresentationDefinitionRequestGroupBindingDto) -> NSDictionary {
396
+ var result: [String: Any] = [
397
+ "id": presentationDefinitionRequestGroup.id,
398
+ "rule": serialize(presentationDefinitionRule: presentationDefinitionRequestGroup.rule),
399
+ "requestedCredentials": presentationDefinitionRequestGroup.requestedCredentials.map { serialize(presentationDefinitionRequestedCredential: $0) },
400
+ ]
401
+ result.addOpt("name", presentationDefinitionRequestGroup.name)
402
+ result.addOpt("purpose", presentationDefinitionRequestGroup.purpose)
403
+ return result as NSDictionary
404
+ }
405
+
406
+ func serialize(presentationDefinitionRequestedCredential: PresentationDefinitionRequestedCredentialBindingDto) -> NSDictionary {
407
+ var result: [String: Any] = [
408
+ "id": presentationDefinitionRequestedCredential.id,
409
+ "fields": presentationDefinitionRequestedCredential.fields.map { serialize(presentationDefinitionField: $0) },
410
+ "applicableCredentials": presentationDefinitionRequestedCredential.applicableCredentials,
411
+ "inapplicableCredentials": presentationDefinitionRequestedCredential.inapplicableCredentials,
412
+ ]
413
+ result.addOpt("name", presentationDefinitionRequestedCredential.name)
414
+ result.addOpt("purpose", presentationDefinitionRequestedCredential.purpose)
415
+ result.addOpt("validityCredentialNbf", presentationDefinitionRequestedCredential.validityCredentialNbf)
416
+ return result as NSDictionary
417
+ }
418
+
419
+ func serialize(presentationDefinitionField: PresentationDefinitionFieldBindingDto) -> NSDictionary {
420
+ var result: [String: Any] = [
421
+ "id": presentationDefinitionField.id,
422
+ "required": presentationDefinitionField.required,
423
+ "keyMap": presentationDefinitionField.keyMap,
424
+ ]
425
+ result.addOpt("name", presentationDefinitionField.name)
426
+ result.addOpt("purpose", presentationDefinitionField.purpose)
427
+ return result as NSDictionary
428
+ }
429
+
430
+ func serialize(presentationDefinitionRule: PresentationDefinitionRuleBindingDto) -> NSDictionary {
431
+ var result: [String: Any] = [
432
+ "type": serializeEnumValue(value: presentationDefinitionRule.type),
433
+ ]
434
+ result.addOpt("min", presentationDefinitionRule.min)
435
+ result.addOpt("max", presentationDefinitionRule.max)
436
+ result.addOpt("count", presentationDefinitionRule.count)
437
+ return result as NSDictionary
438
+ }
439
+
440
+ func serialize(credentialRevocationCheckResponse: CredentialRevocationCheckResponseBindingDto) -> NSDictionary {
441
+ var result: [String: Any] = [
442
+ "credentialId": credentialRevocationCheckResponse.credentialId,
443
+ "status": serializeEnumValue(value: credentialRevocationCheckResponse.status),
444
+ "success": credentialRevocationCheckResponse.success,
445
+ ]
446
+ result.addOpt("reason", credentialRevocationCheckResponse.reason)
447
+ return result as NSDictionary
448
+ }
449
+
450
+ func serialize(historyList: HistoryListBindingDto) -> NSDictionary {
451
+ return [
452
+ "totalItems": historyList.totalItems,
453
+ "totalPages": historyList.totalPages,
454
+ "values": historyList.values.map { serialize(historyListItem: $0) },
455
+ ]
456
+ }
457
+
458
+ func serialize(historyListItem: HistoryListItemBindingDto) -> NSDictionary {
459
+ var result = [
460
+ "id": historyListItem.id,
461
+ "createdDate": historyListItem.createdDate,
462
+ "action": serializeEnumValue(value: historyListItem.action),
463
+ "entityType": serializeEnumValue(value: historyListItem.entityType),
464
+ "organisationId": historyListItem.organisationId,
465
+ ]
466
+ result.addOpt("entityId", historyListItem.entityId)
467
+ result.addOpt("metadata", opt(historyListItem.metadata, {data in serialize(historyMetadata: data)}))
468
+ return result as NSDictionary
469
+ }
470
+
471
+ func serialize(historyMetadata: HistoryMetadataBinding) -> NSDictionary {
472
+ switch (historyMetadata) {
473
+ case let .unexportableEntities(value):
474
+ return serialize(unexportableEntities: value);
475
+ }
476
+ }
477
+
478
+ func serialize(keyListItem: KeyListItemBindingDto) -> NSDictionary {
479
+ return [
480
+ "id": keyListItem.id,
481
+ "createdDate": keyListItem.createdDate,
482
+ "lastModified": keyListItem.lastModified,
483
+ "name": keyListItem.name,
484
+ "publicKey": keyListItem.publicKey,
485
+ "storageType": keyListItem.storageType,
486
+ "keyType": keyListItem.keyType,
487
+ ]
488
+ }
489
+
490
+ func serialize(didListItem: DidListItemBindingDto) -> NSDictionary {
491
+ return [
492
+ "id": didListItem.id,
493
+ "createdDate": didListItem.createdDate,
494
+ "lastModified": didListItem.lastModified,
495
+ "name": didListItem.name,
496
+ "did": didListItem.did,
497
+ "didType": serializeEnumValue(value: didListItem.didType),
498
+ "didMethod": didListItem.didMethod,
499
+ "deactivated": didListItem.deactivated,
500
+ ]
501
+ }
502
+
503
+ func serialize(unexportableEntities: UnexportableEntitiesBindingDto) -> NSDictionary {
504
+ return [
505
+ "credentials": unexportableEntities.credentials.map { serialize(credentialDetail: $0) },
506
+ "keys": unexportableEntities.keys.map { serialize(keyListItem: $0) },
507
+ "dids": unexportableEntities.dids.map { serialize(didListItem: $0) },
508
+ "totalCredentials": unexportableEntities.totalCredentials,
509
+ "totalKeys": unexportableEntities.totalKeys,
510
+ "totalDids": unexportableEntities.totalDids,
511
+ ]
512
+ }
513
+
514
+ func serialize(backupCreate: BackupCreateBindingDto) -> NSDictionary {
515
+ return [
516
+ "historyId": backupCreate.historyId,
517
+ "file": backupCreate.file,
518
+ "unexportable": serialize(unexportableEntities: backupCreate.unexportable),
519
+ ]
520
+ }
521
+
522
+ func serialize(importBackupMetadata: MetadataBindingDto) -> NSDictionary {
523
+ return [
524
+ "dbVersion": importBackupMetadata.dbVersion,
525
+ "dbHash": importBackupMetadata.dbHash,
526
+ "createdAt": importBackupMetadata.createdAt,
527
+ ]
528
+ }
529
+
530
+ func serialize(invitationResponse: HandleInvitationResponseBindingEnum) -> NSDictionary {
531
+ switch (invitationResponse) {
532
+ case let .credentialIssuance(interactionId, credentialIds):
533
+ return [
534
+ "interactionId": interactionId,
535
+ "credentialIds": credentialIds
536
+ ];
537
+
538
+ case let .proofRequest(interactionId, proofId):
539
+ return [
540
+ "interactionId": interactionId,
541
+ "proofId": proofId
542
+ ];
543
+ }
544
+ }
545
+
546
+ func serialize(shareProofResponse: ShareProofResponseBindingDto) -> NSDictionary {
547
+ return [
548
+ "url": shareProofResponse.url,
549
+ ]
550
+ }
551
+
552
+ func serialize(proofSchemaShareResponse: ProofSchemaShareResponseBindingDto) -> NSDictionary {
553
+ return [
554
+ "url": proofSchemaShareResponse.url,
555
+ ]
556
+ }
557
+
558
+ func serialize(credentialSchemaShareResponse: CredentialSchemaShareResponseBindingDto) -> NSDictionary {
559
+ return [
560
+ "url": credentialSchemaShareResponse.url,
561
+ ]
562
+ }
563
+
564
+ func serialize(resolveJsonLdContextResponse: ResolveJsonLdContextResponseBindingDto) -> NSDictionary {
565
+ return [
566
+ "context": resolveJsonLdContextResponse.context,
567
+ ]
568
+ }
569
+
570
+ func serialize(trustAnchor: GetTrustAnchorResponseBindingDto) -> NSDictionary {
571
+ var result = [
572
+ "id": trustAnchor.id,
573
+ "createdDate": trustAnchor.createdDate,
574
+ "lastModified": trustAnchor.lastModified,
575
+ "name": trustAnchor.name,
576
+ "type": trustAnchor.type,
577
+ "role": serializeEnumValue(value: trustAnchor.role),
578
+ "organisationId": trustAnchor.organisationId,
579
+ ]
580
+ result.addOpt("publisherReference", trustAnchor.publisherReference)
581
+ result.addOpt("priority", trustAnchor.priority)
582
+ return result as NSDictionary
583
+ }
584
+
585
+ func serialize(trustAnchorList: TrustAnchorsListBindingDto) -> NSDictionary {
586
+ return [
587
+ "totalItems": trustAnchorList.totalItems,
588
+ "totalPages": trustAnchorList.totalPages,
589
+ "values": trustAnchorList.values.map { serialize(trustAnchorListItem: $0) },
590
+ ]
591
+ }
592
+
593
+ func serialize(trustAnchorListItem: TrustAnchorsListItemResponseBindingDto) -> NSDictionary {
594
+ var result: [String: Any] = [
595
+ "id": trustAnchorListItem.id,
596
+ "createdDate": trustAnchorListItem.createdDate,
597
+ "lastModified": trustAnchorListItem.lastModified,
598
+ "name": trustAnchorListItem.name,
599
+ "type": trustAnchorListItem.type,
600
+ "role": serializeEnumValue(value: trustAnchorListItem.role),
601
+ "organisationId": trustAnchorListItem.organisationId,
602
+ "entities": trustAnchorListItem.entities,
603
+ ]
604
+ result.addOpt("publisherReference", trustAnchorListItem.publisherReference)
605
+ result.addOpt("priority", trustAnchorListItem.priority)
606
+ return result as NSDictionary
607
+ }
package/ios/Util.swift ADDED
@@ -0,0 +1,47 @@
1
+ //
2
+ // Util.swift
3
+ // react-native-one-core
4
+ //
5
+ // Created by Pavel Zarecky
6
+ //
7
+
8
+ import Foundation
9
+
10
+ // Error handling
11
+ func asyncCall<Result>(_ resolve: @escaping RCTPromiseResolveBlock,
12
+ _ reject: @escaping RCTPromiseRejectBlock, _ function: () throws -> Result) {
13
+ do {
14
+ resolve(try function());
15
+ } catch {
16
+ handleError(error: error, reject);
17
+ }
18
+ }
19
+
20
+ private let errorMessageRegex = try! NSRegularExpression(pattern: "^([a-zA-Z0-9]+)\\(message\\: \\\"(.*)\\\"\\)$", options: [])
21
+ private func handleError(error: Error, _ reject: @escaping RCTPromiseRejectBlock) {
22
+
23
+ let input = String(describing: error);
24
+ let inputRange = NSMakeRange(0, input.count)
25
+ let result = errorMessageRegex.matches(in: input, options: [], range: inputRange)
26
+
27
+ guard let match = result.first else {
28
+ reject("UnknownError", input, error)
29
+ return
30
+ }
31
+
32
+ if (match.numberOfRanges != 3) {
33
+ reject("UnknownError", input, error)
34
+ return
35
+ }
36
+
37
+ let codeRange = Range(match.range(at: 1), in: input)
38
+ let messageRange = Range(match.range(at: 2), in: input)
39
+ guard let c = codeRange, let m = messageRange else {
40
+ reject("UnknownError", input, error)
41
+ return
42
+ }
43
+
44
+ let code = String(input[c])
45
+ let message = String(input[m])
46
+ reject(code, message, error)
47
+ }
@@ -0,0 +1 @@
1
+ #import <React/RCTBridgeModule.h>
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@procivis/react-native-one-core",
3
+ "version": "1.26730.0",
4
+ "author": "Procivis AG (https://procivis.ch)",
5
+ "license": "Apache-2.0",
6
+ "description": "ONE core bindings for React Native",
7
+ "repository": "https://github.com/procivis/react-native-one-core",
8
+ "homepage": "https://procivis.ch",
9
+ "main": "dist/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "keywords": [
12
+ "react-native",
13
+ "one-core"
14
+ ],
15
+ "files": [
16
+ "dist",
17
+ "core-sdk.json",
18
+ "android",
19
+ "ios",
20
+ "react-native-one-core.podspec",
21
+ "bin"
22
+ ],
23
+ "scripts": {
24
+ "compile": "tsc",
25
+ "postinstall": "node ./bin/postinstall",
26
+ "test": "jest"
27
+ },
28
+ "peerDependencies": {
29
+ "react-native": "*"
30
+ },
31
+ "devDependencies": {
32
+ "@babel/core": "^7.21.0",
33
+ "@babel/preset-env": "^7.20.2",
34
+ "@types/react-native": "0.71.6",
35
+ "babel-jest": "^29.5.0",
36
+ "husky": "^7.0.4",
37
+ "jest": "^29.5.0",
38
+ "typescript": "^5.1.6"
39
+ }
40
+ }