@sphereon/ssi-sdk.data-store 0.24.1-next.42 → 0.24.1-next.98

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 (70) hide show
  1. package/LICENSE +1 -1
  2. package/dist/entities/presentationDefinition/PresentationDefinitionItemEntity.d.ts +14 -0
  3. package/dist/entities/presentationDefinition/PresentationDefinitionItemEntity.d.ts.map +1 -0
  4. package/dist/entities/presentationDefinition/PresentationDefinitionItemEntity.js +74 -0
  5. package/dist/entities/presentationDefinition/PresentationDefinitionItemEntity.js.map +1 -0
  6. package/dist/index.d.ts +8 -3
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +13 -2
  9. package/dist/index.js.map +1 -1
  10. package/dist/migrations/generic/10-CreatePresentationDefinitions.d.ts +7 -0
  11. package/dist/migrations/generic/10-CreatePresentationDefinitions.d.ts.map +1 -0
  12. package/dist/migrations/generic/10-CreatePresentationDefinitions.js +78 -0
  13. package/dist/migrations/generic/10-CreatePresentationDefinitions.js.map +1 -0
  14. package/dist/migrations/generic/index.d.ts +2 -0
  15. package/dist/migrations/generic/index.d.ts.map +1 -1
  16. package/dist/migrations/generic/index.js +4 -1
  17. package/dist/migrations/generic/index.js.map +1 -1
  18. package/dist/migrations/index.d.ts +1 -1
  19. package/dist/migrations/index.d.ts.map +1 -1
  20. package/dist/migrations/index.js +2 -1
  21. package/dist/migrations/index.js.map +1 -1
  22. package/dist/migrations/postgres/1716475165345-CreatePresentationDefinitions.d.ts +7 -0
  23. package/dist/migrations/postgres/1716475165345-CreatePresentationDefinitions.d.ts.map +1 -0
  24. package/dist/migrations/postgres/1716475165345-CreatePresentationDefinitions.js +41 -0
  25. package/dist/migrations/postgres/1716475165345-CreatePresentationDefinitions.js.map +1 -0
  26. package/dist/migrations/sqlite/1716475165344-CreatePresentationDefinitions.d.ts +7 -0
  27. package/dist/migrations/sqlite/1716475165344-CreatePresentationDefinitions.d.ts.map +1 -0
  28. package/dist/migrations/sqlite/1716475165344-CreatePresentationDefinitions.js +38 -0
  29. package/dist/migrations/sqlite/1716475165344-CreatePresentationDefinitions.js.map +1 -0
  30. package/dist/presentationDefinition/AbstractPDStore.d.ts +12 -0
  31. package/dist/presentationDefinition/AbstractPDStore.d.ts.map +1 -0
  32. package/dist/presentationDefinition/AbstractPDStore.js +7 -0
  33. package/dist/presentationDefinition/AbstractPDStore.js.map +1 -0
  34. package/dist/presentationDefinition/PDStore.d.ts +19 -0
  35. package/dist/presentationDefinition/PDStore.d.ts.map +1 -0
  36. package/dist/presentationDefinition/PDStore.js +152 -0
  37. package/dist/presentationDefinition/PDStore.js.map +1 -0
  38. package/dist/types/index.d.ts +2 -0
  39. package/dist/types/index.d.ts.map +1 -1
  40. package/dist/types/index.js +2 -0
  41. package/dist/types/index.js.map +1 -1
  42. package/dist/types/presentationDefinition/IAbstractPDStore.d.ts +17 -0
  43. package/dist/types/presentationDefinition/IAbstractPDStore.d.ts.map +1 -0
  44. package/dist/types/presentationDefinition/IAbstractPDStore.js +3 -0
  45. package/dist/types/presentationDefinition/IAbstractPDStore.js.map +1 -0
  46. package/dist/types/presentationDefinition/presentationDefinition.d.ts +16 -0
  47. package/dist/types/presentationDefinition/presentationDefinition.d.ts.map +1 -0
  48. package/dist/types/presentationDefinition/presentationDefinition.js +3 -0
  49. package/dist/types/presentationDefinition/presentationDefinition.js.map +1 -0
  50. package/dist/utils/presentationDefinition/MappingUtils.d.ts +6 -0
  51. package/dist/utils/presentationDefinition/MappingUtils.d.ts.map +1 -0
  52. package/dist/utils/presentationDefinition/MappingUtils.js +48 -0
  53. package/dist/utils/presentationDefinition/MappingUtils.js.map +1 -0
  54. package/package.json +7 -4
  55. package/src/__tests__/pd-manager.entities.test.ts +71 -0
  56. package/src/__tests__/pd-manager.store.test.ts +191 -0
  57. package/src/entities/presentationDefinition/PresentationDefinitionItemEntity.ts +43 -0
  58. package/src/index.ts +10 -0
  59. package/src/migrations/generic/10-CreatePresentationDefinitions.ts +66 -0
  60. package/src/migrations/generic/index.ts +3 -0
  61. package/src/migrations/index.ts +1 -0
  62. package/src/migrations/postgres/1716475165345-CreatePresentationDefinitions.ts +25 -0
  63. package/src/migrations/sqlite/1716475165344-CreatePresentationDefinitions.ts +24 -0
  64. package/src/presentationDefinition/AbstractPDStore.ts +20 -0
  65. package/src/presentationDefinition/PDStore.ts +185 -0
  66. package/src/types/index.ts +2 -0
  67. package/src/types/presentationDefinition/IAbstractPDStore.ts +25 -0
  68. package/src/types/presentationDefinition/presentationDefinition.ts +17 -0
  69. package/src/utils/contact/MappingUtils.ts +1 -1
  70. package/src/utils/presentationDefinition/MappingUtils.ts +52 -0
@@ -0,0 +1,17 @@
1
+ import { IPresentationDefinition } from '@sphereon/pex'
2
+
3
+ export type PresentationDefinitionItem = {
4
+ id: string
5
+ definitionId: string
6
+ tenantId?: string
7
+ version: string
8
+ name?: string
9
+ purpose?: string
10
+ definitionPayload: IPresentationDefinition
11
+ createdAt: Date
12
+ lastUpdatedAt: Date
13
+ }
14
+
15
+ export type NonPersistedPresentationDefinitionItem = Omit<PresentationDefinitionItem, 'id' | 'createdAt' | 'lastUpdatedAt'>
16
+ export type PartialPresentationDefinitionItem = Partial<PresentationDefinitionItem>
17
+ export type PresentationDefinitionItemFilter = Partial<Omit<PresentationDefinitionItem, 'definitionPayload'>> // TODO add logic to linearize & hash definitionPayload into a separate column so we can filter on it?
@@ -29,7 +29,7 @@ import {
29
29
  Party,
30
30
  PartyRelationship,
31
31
  PartyType,
32
- PhysicalAddress,
32
+ PhysicalAddress
33
33
  } from '../../types'
34
34
  import { PartyEntity } from '../../entities/contact/PartyEntity'
35
35
  import { IdentityEntity } from '../../entities/contact/IdentityEntity'
@@ -0,0 +1,52 @@
1
+ import { PresentationDefinitionItemEntity } from '../../entities/presentationDefinition/PresentationDefinitionItemEntity'
2
+ import { IPresentationDefinition } from '@sphereon/pex'
3
+ import { NonPersistedPresentationDefinitionItem, PartialPresentationDefinitionItem, PresentationDefinitionItem } from '../../types'
4
+ import { blake2bHex } from 'blakejs'
5
+
6
+ export const presentationDefinitionItemFrom = (entity: PresentationDefinitionItemEntity): PresentationDefinitionItem => {
7
+ return {
8
+ id: entity.id,
9
+ tenantId: entity.tenantId,
10
+ definitionId: entity.definitionId,
11
+ version: entity.version,
12
+ name: entity.name,
13
+ purpose: entity.purpose,
14
+ definitionPayload: JSON.parse(entity.definitionPayload) as IPresentationDefinition,
15
+ createdAt: entity.createdAt,
16
+ lastUpdatedAt: entity.lastUpdatedAt,
17
+ }
18
+ }
19
+
20
+ export const presentationDefinitionEntityItemFrom = (item: NonPersistedPresentationDefinitionItem): PresentationDefinitionItemEntity => {
21
+ const entity = new PresentationDefinitionItemEntity()
22
+
23
+ entity.tenantId = item.tenantId
24
+ entity.definitionId = item.definitionId!
25
+ entity.version = item.version
26
+ entity.name = item.name
27
+ entity.purpose = item.purpose
28
+ entity.definitionPayload = JSON.stringify(item.definitionPayload!)
29
+ return entity
30
+ }
31
+
32
+ function hashPayload(payload: IPresentationDefinition): string {
33
+ return blake2bHex(JSON.stringify(payload))
34
+ }
35
+
36
+ export function isPresentationDefinitionEqual(base: PartialPresentationDefinitionItem, compare: PartialPresentationDefinitionItem): boolean {
37
+ if (
38
+ base.definitionId !== compare.definitionId ||
39
+ base.tenantId != compare.tenantId ||
40
+ base.version !== compare.version ||
41
+ base.name != compare.name ||
42
+ base.purpose != compare.purpose
43
+ ) {
44
+ return false
45
+ }
46
+
47
+ if (base.definitionPayload && compare.definitionPayload) {
48
+ return hashPayload(base.definitionPayload) === hashPayload(compare.definitionPayload)
49
+ }
50
+
51
+ return false
52
+ }