@sphereon/ssi-sdk.data-store 0.18.2-unstable.97 → 0.19.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 (84) hide show
  1. package/dist/contact/AbstractContactStore.d.ts.map +1 -1
  2. package/dist/contact/AbstractContactStore.js.map +1 -1
  3. package/dist/contact/ContactStore.d.ts.map +1 -1
  4. package/dist/contact/ContactStore.js +12 -6
  5. package/dist/contact/ContactStore.js.map +1 -1
  6. package/dist/index.d.ts +2 -5
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -10
  9. package/dist/index.js.map +1 -1
  10. package/dist/issuanceBranding/IssuanceBrandingStore.d.ts.map +1 -1
  11. package/dist/issuanceBranding/IssuanceBrandingStore.js.map +1 -1
  12. package/dist/migrations/generic/index.d.ts +0 -2
  13. package/dist/migrations/generic/index.d.ts.map +1 -1
  14. package/dist/migrations/generic/index.js +1 -4
  15. package/dist/migrations/generic/index.js.map +1 -1
  16. package/dist/migrations/index.d.ts +1 -1
  17. package/dist/migrations/index.d.ts.map +1 -1
  18. package/dist/migrations/index.js +1 -2
  19. package/dist/migrations/index.js.map +1 -1
  20. package/dist/types/contact/contact.d.ts.map +1 -1
  21. package/dist/types/contact/contact.js.map +1 -1
  22. package/package.json +4 -5
  23. package/src/__tests__/contact.entities.test.ts +32 -15
  24. package/src/__tests__/contact.store.test.ts +71 -28
  25. package/src/contact/AbstractContactStore.ts +3 -2
  26. package/src/contact/ContactStore.ts +15 -9
  27. package/src/entities/contact/PhysicalAddressEntity.ts +1 -1
  28. package/src/index.ts +0 -9
  29. package/src/issuanceBranding/IssuanceBrandingStore.ts +6 -8
  30. package/src/migrations/generic/index.ts +0 -3
  31. package/src/migrations/index.ts +0 -1
  32. package/src/types/contact/contact.ts +13 -2
  33. package/dist/digitalCredential/AbstractDigitalCredentialStore.d.ts +0 -10
  34. package/dist/digitalCredential/AbstractDigitalCredentialStore.d.ts.map +0 -1
  35. package/dist/digitalCredential/AbstractDigitalCredentialStore.js +0 -7
  36. package/dist/digitalCredential/AbstractDigitalCredentialStore.js.map +0 -1
  37. package/dist/digitalCredential/DigitalCredentialStore.d.ts +0 -15
  38. package/dist/digitalCredential/DigitalCredentialStore.d.ts.map +0 -1
  39. package/dist/digitalCredential/DigitalCredentialStore.js +0 -116
  40. package/dist/digitalCredential/DigitalCredentialStore.js.map +0 -1
  41. package/dist/entities/digitalCredential/DigitalCredentialEntity.d.ts +0 -23
  42. package/dist/entities/digitalCredential/DigitalCredentialEntity.d.ts.map +0 -1
  43. package/dist/entities/digitalCredential/DigitalCredentialEntity.js +0 -93
  44. package/dist/entities/digitalCredential/DigitalCredentialEntity.js.map +0 -1
  45. package/dist/migrations/generic/6-CreateDigitalCredential.d.ts +0 -7
  46. package/dist/migrations/generic/6-CreateDigitalCredential.d.ts.map +0 -1
  47. package/dist/migrations/generic/6-CreateDigitalCredential.js +0 -78
  48. package/dist/migrations/generic/6-CreateDigitalCredential.js.map +0 -1
  49. package/dist/migrations/postgres/1708525189001-CreateDigitalCredential.d.ts +0 -7
  50. package/dist/migrations/postgres/1708525189001-CreateDigitalCredential.d.ts.map +0 -1
  51. package/dist/migrations/postgres/1708525189001-CreateDigitalCredential.js +0 -59
  52. package/dist/migrations/postgres/1708525189001-CreateDigitalCredential.js.map +0 -1
  53. package/dist/migrations/sqlite/1708525189002-CreateDigitalCredential.d.ts +0 -7
  54. package/dist/migrations/sqlite/1708525189002-CreateDigitalCredential.d.ts.map +0 -1
  55. package/dist/migrations/sqlite/1708525189002-CreateDigitalCredential.js +0 -50
  56. package/dist/migrations/sqlite/1708525189002-CreateDigitalCredential.js.map +0 -1
  57. package/dist/types/digitalCredential/IAbstractDigitalCredentialStore.d.ts +0 -40
  58. package/dist/types/digitalCredential/IAbstractDigitalCredentialStore.d.ts.map +0 -1
  59. package/dist/types/digitalCredential/IAbstractDigitalCredentialStore.js +0 -3
  60. package/dist/types/digitalCredential/IAbstractDigitalCredentialStore.js.map +0 -1
  61. package/dist/types/digitalCredential/digitalCredential.d.ts +0 -42
  62. package/dist/types/digitalCredential/digitalCredential.d.ts.map +0 -1
  63. package/dist/types/digitalCredential/digitalCredential.js +0 -28
  64. package/dist/types/digitalCredential/digitalCredential.js.map +0 -1
  65. package/dist/utils/SortingUtils.d.ts +0 -3
  66. package/dist/utils/SortingUtils.d.ts.map +0 -1
  67. package/dist/utils/SortingUtils.js +0 -18
  68. package/dist/utils/SortingUtils.js.map +0 -1
  69. package/dist/utils/digitalCredential/MappingUtils.d.ts +0 -7
  70. package/dist/utils/digitalCredential/MappingUtils.d.ts.map +0 -1
  71. package/dist/utils/digitalCredential/MappingUtils.js +0 -99
  72. package/dist/utils/digitalCredential/MappingUtils.js.map +0 -1
  73. package/src/__tests__/digitalCredential.entities.test.ts +0 -251
  74. package/src/__tests__/digitalCredential.store.test.ts +0 -289
  75. package/src/digitalCredential/AbstractDigitalCredentialStore.ts +0 -17
  76. package/src/digitalCredential/DigitalCredentialStore.ts +0 -124
  77. package/src/entities/digitalCredential/DigitalCredentialEntity.ts +0 -64
  78. package/src/migrations/generic/6-CreateDigitalCredential.ts +0 -66
  79. package/src/migrations/postgres/1708525189001-CreateDigitalCredential.ts +0 -44
  80. package/src/migrations/sqlite/1708525189002-CreateDigitalCredential.ts +0 -34
  81. package/src/types/digitalCredential/IAbstractDigitalCredentialStore.ts +0 -35
  82. package/src/types/digitalCredential/digitalCredential.ts +0 -46
  83. package/src/utils/SortingUtils.ts +0 -16
  84. package/src/utils/digitalCredential/MappingUtils.ts +0 -122
@@ -1,35 +0,0 @@
1
- import { CredentialCorrelationType, CredentialStateType, DigitalCredential } from './digitalCredential'
2
- import { Hasher } from '@sphereon/ssi-types'
3
-
4
- export type GetCredentialArgs = { id: string } | { hash: string }
5
-
6
- export type FindDigitalCredentialArgs = Array<Partial<DigitalCredential>>
7
-
8
- export type GetCredentialsArgs = {
9
- filter?: FindDigitalCredentialArgs
10
- offset?: number
11
- limit?: number
12
- order?: string
13
- }
14
-
15
- export type GetCredentialsResponse = {
16
- data: Array<DigitalCredential>
17
- total: number
18
- }
19
-
20
- export type AddCredentialArgs = {
21
- raw: string
22
- issuerCorrelationType: CredentialCorrelationType
23
- subjectCorrelationType?: CredentialCorrelationType
24
- issuerCorrelationId: string
25
- subjectCorrelationId?: string
26
- tenantId?: string
27
- state?: CredentialStateType
28
- verifiedAt?: Date
29
- revokedAt?: Date
30
- opts?: { maxTimeSkewInMS?: number; hasher?: Hasher }
31
- }
32
-
33
- export type UpdateCredentialStateArgs = GetCredentialArgs & { verifiedState: CredentialStateType; verifiedAt?: Date; revokedAt?: Date }
34
-
35
- export type RemoveCredentialArgs = GetCredentialArgs
@@ -1,46 +0,0 @@
1
- export type NonPersistedDigitalCredential = Omit<DigitalCredential, 'id'>
2
-
3
- export type DigitalCredential = {
4
- id: string
5
- credentialType: CredentialType
6
- documentFormat: CredentialDocumentFormat
7
- raw: string
8
- uniformDocument: string
9
- hash: string
10
- issuerCorrelationType: CredentialCorrelationType
11
- subjectCorrelationType?: CredentialCorrelationType
12
- issuerCorrelationId: string
13
- subjectCorrelationId?: string
14
- verifiedState?: CredentialStateType
15
- tenantId?: string
16
- createdAt: Date
17
- lastUpdatedAt: Date
18
- validUntil?: Date
19
- validFrom?: Date
20
- verifiedAt?: Date
21
- revokedAt?: Date
22
- }
23
-
24
- export enum CredentialType {
25
- VC = 'VC',
26
- VP = 'VP',
27
- P = 'P',
28
- C = 'C',
29
- }
30
-
31
- export enum CredentialDocumentFormat {
32
- JSON_LD = 'JSON_LD',
33
- JWT = 'JWT',
34
- SD_JWT = 'SD_JWT',
35
- MDOC = 'MDOC',
36
- }
37
-
38
- export enum CredentialCorrelationType {
39
- DID = 'DID',
40
- }
41
-
42
- export enum CredentialStateType {
43
- REVOKED = 'REVOKED',
44
- VERIFIED = 'VERIFIED',
45
- EXPIRED = 'EXPIRED',
46
- }
@@ -1,16 +0,0 @@
1
- import { BaseEntity, FindOptionsOrder } from 'typeorm'
2
-
3
- export const parseAndValidateOrderOptions = <T extends BaseEntity>(order: string): FindOptionsOrder<T> => {
4
- const orderPairs = order.split(',').map((pair) => pair.trim().split('.'))
5
- const orderOptions: FindOptionsOrder<T> = {}
6
-
7
- orderPairs.forEach(([field, direction]) => {
8
- const dir = direction.toUpperCase()
9
- if (dir !== 'ASC' && dir !== 'DESC') {
10
- throw new Error(`Invalid order direction: '${direction}'. Must be 'asc' or 'desc'.`)
11
- }
12
- ;(orderOptions as any)[field] = dir
13
- })
14
-
15
- return orderOptions
16
- }
@@ -1,122 +0,0 @@
1
- import { AddCredentialArgs } from '../../types/digitalCredential/IAbstractDigitalCredentialStore'
2
- import { DigitalCredentialEntity } from '../../entities/digitalCredential/DigitalCredentialEntity'
3
- import {
4
- CredentialMapper,
5
- decodeSdJwtVc,
6
- DocumentFormat,
7
- IVerifiableCredential,
8
- IVerifiablePresentation,
9
- OriginalVerifiableCredential,
10
- OriginalVerifiablePresentation,
11
- SdJwtDecodedVerifiableCredentialPayload,
12
- } from '@sphereon/ssi-types'
13
- import {
14
- CredentialDocumentFormat,
15
- CredentialType,
16
- DigitalCredential,
17
- NonPersistedDigitalCredential,
18
- } from '../../types/digitalCredential/digitalCredential'
19
- import { computeEntryHash } from '@veramo/utils'
20
-
21
- function determineCredentialType(raw: string): CredentialType {
22
- const rawDocument = parseRawDocument(raw)
23
- if (!rawDocument) {
24
- throw new Error(`Couldn't parse the credential: ${raw}`)
25
- }
26
-
27
- const hasProof = CredentialMapper.hasProof(rawDocument)
28
- const isCredential = CredentialMapper.isCredential(rawDocument)
29
- const isPresentation = CredentialMapper.isPresentation(rawDocument)
30
-
31
- if (isCredential) {
32
- return hasProof ? CredentialType.VC : CredentialType.C
33
- } else if (isPresentation) {
34
- return hasProof ? CredentialType.VP : CredentialType.P
35
- }
36
- throw new Error(`Couldn't determine the type of the credential: ${raw}`)
37
- }
38
-
39
- function parseRawDocument(raw: string): OriginalVerifiableCredential | OriginalVerifiablePresentation {
40
- if (CredentialMapper.isJwtEncoded(raw) || CredentialMapper.isSdJwtEncoded(raw)) {
41
- return raw
42
- }
43
- try {
44
- return JSON.parse(raw)
45
- } catch (e) {
46
- throw new Error(`Can't parse the raw credential: ${raw}`)
47
- }
48
- }
49
-
50
- function determineCredentialDocumentFormat(documentFormat: DocumentFormat): CredentialDocumentFormat {
51
- switch (documentFormat) {
52
- case DocumentFormat.JSONLD:
53
- return CredentialDocumentFormat.JSON_LD
54
- case DocumentFormat.JWT:
55
- return CredentialDocumentFormat.JWT
56
- case DocumentFormat.SD_JWT_VC:
57
- return CredentialDocumentFormat.SD_JWT
58
- default:
59
- throw new Error(`Not supported document format: ${documentFormat}`)
60
- }
61
- }
62
-
63
- function getValidUntil(uniformDocument: IVerifiableCredential | IVerifiablePresentation | SdJwtDecodedVerifiableCredentialPayload): Date | undefined {
64
- if ('expirationDate' in uniformDocument) {
65
- return new Date(uniformDocument.expirationDate)
66
- } else if ('validUntil' in uniformDocument) {
67
- return new Date(uniformDocument.validUntil)
68
- } else if ('exp' in uniformDocument) {
69
- return new Date(uniformDocument.exp)
70
- }
71
- return undefined
72
- }
73
-
74
- function getValidFrom(uniformDocument: IVerifiableCredential | IVerifiablePresentation | SdJwtDecodedVerifiableCredentialPayload): Date | undefined {
75
- if ('issuanceDate' in uniformDocument) {
76
- return new Date(uniformDocument.issuanceDate)
77
- } else if ('validFrom' in uniformDocument) {
78
- return new Date(uniformDocument['validFrom'])
79
- } else if ('nbf' in uniformDocument) {
80
- return new Date(uniformDocument['nbf'] * 1000)
81
- } else if ('iat' in uniformDocument) {
82
- return new Date(uniformDocument['iat'] * 1000)
83
- }
84
- return undefined
85
- }
86
-
87
- export const nonPersistedDigitalCredentialEntityFromAddArgs = (addCredentialArgs: AddCredentialArgs): NonPersistedDigitalCredential => {
88
- const credentialType: CredentialType = determineCredentialType(addCredentialArgs.raw)
89
- const documentFormat: DocumentFormat = CredentialMapper.detectDocumentType(addCredentialArgs.raw)
90
- if (documentFormat === DocumentFormat.SD_JWT_VC && !addCredentialArgs.opts?.hasher) {
91
- throw new Error('No hasher function is provided for SD_JWT credential.')
92
- }
93
- const uniformDocument =
94
- documentFormat === DocumentFormat.SD_JWT_VC
95
- ? decodeSdJwtVc(addCredentialArgs.raw, addCredentialArgs.opts!.hasher!).decodedPayload
96
- : credentialType === CredentialType.VC || credentialType === CredentialType.C
97
- ? CredentialMapper.toUniformCredential(addCredentialArgs.raw)
98
- : CredentialMapper.toUniformPresentation(addCredentialArgs.raw)
99
- const validFrom: Date | undefined = getValidFrom(uniformDocument)
100
- const validUntil: Date | undefined = getValidUntil(uniformDocument)
101
- return {
102
- ...addCredentialArgs,
103
- credentialType,
104
- documentFormat: determineCredentialDocumentFormat(documentFormat),
105
- createdAt: new Date(),
106
- hash: computeEntryHash(addCredentialArgs.raw),
107
- uniformDocument: JSON.stringify(uniformDocument),
108
- validFrom,
109
- validUntil,
110
- lastUpdatedAt: new Date(),
111
- }
112
- }
113
-
114
- export const digitalCredentialFrom = (credentialEntity: DigitalCredentialEntity): DigitalCredential => {
115
- return {
116
- ...credentialEntity,
117
- }
118
- }
119
-
120
- export const digitalCredentialsFrom = (credentialEntities: Array<DigitalCredentialEntity>): DigitalCredential[] => {
121
- return credentialEntities.map((credentialEntity) => digitalCredentialFrom(credentialEntity))
122
- }