@sphereon/ssi-sdk.pd-manager 0.34.1-fix.171 → 0.34.1-fix.182

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.
@@ -1,20 +1,21 @@
1
1
  import { IAgentPlugin } from '@veramo/core'
2
2
  import {
3
- DeleteDefinitionItemArgs,
4
- DeleteDefinitionItemsArgs,
5
- GetDefinitionItemArgs,
6
- GetDefinitionItemsArgs,
3
+ DeleteDcqlQueryItemArgs,
4
+ DeleteDcqlQueryItemsArgs,
5
+ GetDcqlQueryItemArgs,
6
+ GetDcqlQueryItemsArgs,
7
7
  HasDefinitionItemArgs,
8
- HasDefinitionItemsArgs,
8
+ HasDcqlQueryItemsArgs,
9
9
  IPDManager,
10
- PersistDefinitionArgs,
10
+ PersistDcqlQueryArgs,
11
11
  schema,
12
12
  } from '../index'
13
13
  import {
14
14
  AbstractPDStore,
15
15
  isPresentationDefinitionEqual,
16
- NonPersistedPresentationDefinitionItem,
17
- PresentationDefinitionItem,
16
+ NonPersistedDcqlQueryItem,
17
+ DcqlQueryItem,
18
+ AddDefinitionArgs,
18
19
  } from '@sphereon/ssi-sdk.data-store'
19
20
  import semver from 'semver/preload'
20
21
  import { ReleaseType } from 'semver'
@@ -58,32 +59,32 @@ export class PDManager implements IAgentPlugin {
58
59
  }
59
60
 
60
61
  /** {@inheritDoc IPDManager.pdmHasDefinitions} */
61
- private async pdmHasDefinitions(args: HasDefinitionItemsArgs): Promise<boolean> {
62
+ private async pdmHasDefinitions(args: HasDcqlQueryItemsArgs): Promise<boolean> {
62
63
  const { filter } = args
63
64
  return this.store.hasDefinitions({ filter })
64
65
  }
65
66
 
66
67
  /** {@inheritDoc IPDManager.pdmGetDefinition} */
67
- private async pdmGetDefinition(args: GetDefinitionItemArgs): Promise<PresentationDefinitionItem> {
68
+ private async pdmGetDefinition(args: GetDcqlQueryItemArgs): Promise<DcqlQueryItem> {
68
69
  const { itemId } = args
69
70
  return this.store.getDefinition({ itemId })
70
71
  }
71
72
 
72
73
  /** {@inheritDoc IPDManager.pdmGetDefinitions} */
73
- private async pdmGetDefinitions(args: GetDefinitionItemsArgs): Promise<Array<PresentationDefinitionItem>> {
74
+ private async pdmGetDefinitions(args: GetDcqlQueryItemsArgs): Promise<Array<DcqlQueryItem>> {
74
75
  const { filter, opts } = args
75
76
  const allDefinitions = await this.store.getDefinitions({ filter })
76
- let definitions: PresentationDefinitionItem[] = []
77
+ let definitions: DcqlQueryItem[] = []
77
78
  if (opts == undefined || opts.showVersionHistory !== true) {
78
79
  const groupedByDefinitionId = allDefinitions.reduce(
79
80
  (acc, entity) => {
80
- if (!acc[entity.definitionId]) {
81
- acc[entity.definitionId] = []
81
+ if (!acc[entity.queryId]) {
82
+ acc[entity.queryId] = []
82
83
  }
83
- acc[entity.definitionId].push(entity)
84
+ acc[entity.queryId].push(entity)
84
85
  return acc
85
86
  },
86
- {} as Record<string, PresentationDefinitionItem[]>,
87
+ {} as Record<string, DcqlQueryItem[]>,
87
88
  )
88
89
  definitions = Object.values(groupedByDefinitionId).map((entities) =>
89
90
  entities.reduce((highestVersionItem, baseItem) => {
@@ -99,41 +100,41 @@ export class PDManager implements IAgentPlugin {
99
100
  }
100
101
 
101
102
  /** {@inheritDoc IPDManager.pdmDeleteDefinition} */
102
- private async pdmDeleteDefinition(args: DeleteDefinitionItemArgs): Promise<boolean> {
103
+ private async pdmDeleteDefinition(args: DeleteDcqlQueryItemArgs): Promise<boolean> {
103
104
  return this.store.deleteDefinition(args).then((value) => true)
104
105
  }
105
106
 
106
107
  /** {@inheritDoc IPDManager.pdmDeleteDefinitions} */
107
- private async pdmDeleteDefinitions(args: DeleteDefinitionItemsArgs): Promise<number> {
108
+ private async pdmDeleteDefinitions(args: DeleteDcqlQueryItemsArgs): Promise<number> {
108
109
  return this.store.deleteDefinitions(args)
109
110
  }
110
111
 
111
112
  /** {@inheritDoc IPDManager.pdmPersistDefinition} */
112
- private async pdmPersistDefinition(args: PersistDefinitionArgs): Promise<PresentationDefinitionItem> {
113
+ private async pdmPersistDefinition(args: PersistDcqlQueryArgs): Promise<DcqlQueryItem> {
113
114
  const { definitionItem, opts } = args
114
115
  const { versionControlMode, versionIncrementReleaseType } = opts ?? { versionControlMode: 'AutoIncrement' }
115
116
  const { version, tenantId } = definitionItem
116
- const definitionId = definitionItem.definitionId
117
+ const definitionId = definitionItem.queryId
117
118
 
118
119
  let { id } = definitionItem
119
120
  if (id !== undefined && versionControlMode !== 'Overwrite') {
120
121
  id = undefined
121
122
  }
122
123
 
123
- const nonPersistedDefinitionItem: NonPersistedPresentationDefinitionItem = {
124
+ const nonPersistedDefinitionItem: NonPersistedDcqlQueryItem = {
124
125
  ...definitionItem,
125
126
  version: version ?? '1',
126
127
  }
127
128
 
128
- const existing = await this.store.getDefinitions({ filter: [{ id, definitionId, tenantId, version }] })
129
+ const existing = await this.store.getDefinitions({ filter: [{ id, queryId: definitionId, tenantId, version }] })
129
130
  const existingItem = existing[0]
130
131
 
131
132
  // Always fetch all definitions for the definitionId/tenantId and determine the truly latest version
132
- const allDefinitions = await this.store.getDefinitions({ filter: [{ definitionId, tenantId }] })
133
+ const allDefinitions = await this.store.getDefinitions({ filter: [{ queryId: definitionId, tenantId }] })
133
134
  allDefinitions.sort((a, b) => semver.compare(this.normalizeToSemverVersionFormat(a.version), this.normalizeToSemverVersionFormat(b.version)))
134
135
  const trulyLatestVersionItem = allDefinitions[allDefinitions.length - 1]
135
136
 
136
- let latestVersionItem: PresentationDefinitionItem | undefined = trulyLatestVersionItem
137
+ let latestVersionItem: DcqlQueryItem | undefined = trulyLatestVersionItem
137
138
 
138
139
  // If a specific version exists and matches existingItem, we keep that as a base.
139
140
  // Otherwise we use the trulyLatestVersionItem
@@ -159,64 +160,58 @@ export class PDManager implements IAgentPlugin {
159
160
  }
160
161
 
161
162
  private async handleOverwriteMode(
162
- existingItem: PresentationDefinitionItem | undefined,
163
- definitionItem: NonPersistedPresentationDefinitionItem,
163
+ existingItem: DcqlQueryItem | undefined,
164
+ definitionItem: NonPersistedDcqlQueryItem,
164
165
  version: string | undefined,
165
- ): Promise<PresentationDefinitionItem> {
166
+ ): Promise<DcqlQueryItem> {
166
167
  if (existingItem) {
167
- existingItem.definitionId = definitionItem.definitionId
168
+ existingItem.queryId = definitionItem.queryId
168
169
  existingItem.version = version ?? existingItem.version ?? '1'
169
170
  existingItem.tenantId = definitionItem.tenantId
170
- existingItem.name = definitionItem.dcqlPayload?.name ?? definitionItem.definitionPayload?.name ?? definitionItem.name
171
- existingItem.purpose = definitionItem.dcqlPayload?.defaultPurpose ?? definitionItem.definitionPayload?.purpose ?? definitionItem.purpose
172
- existingItem.dcqlPayload = definitionItem.dcqlPayload
173
- existingItem.definitionPayload = definitionItem.definitionPayload
171
+ existingItem.name = definitionItem.name
172
+ existingItem.purpose = definitionItem.purpose
173
+ existingItem.query = definitionItem.query
174
174
 
175
175
  return await this.store.updateDefinition(existingItem)
176
176
  } else {
177
177
  // Apply the same field extraction logic for new items
178
178
  const newDefinitionItem = {
179
179
  ...definitionItem,
180
- name: definitionItem.name ?? definitionItem.dcqlPayload?.name ?? definitionItem.definitionPayload?.name,
181
- purpose: definitionItem.purpose ?? definitionItem.dcqlPayload?.defaultPurpose ?? definitionItem.definitionPayload?.purpose,
182
- }
180
+ } satisfies AddDefinitionArgs
183
181
  return await this.store.addDefinition(newDefinitionItem)
184
182
  }
185
183
  }
186
184
 
187
185
  private async handleOverwriteLatestMode(
188
- latestVersionItem: PresentationDefinitionItem | undefined,
189
- definitionItem: NonPersistedPresentationDefinitionItem,
190
- ): Promise<PresentationDefinitionItem> {
186
+ latestVersionItem: DcqlQueryItem | undefined,
187
+ definitionItem: NonPersistedDcqlQueryItem,
188
+ ): Promise<DcqlQueryItem> {
191
189
  if (latestVersionItem) {
192
- latestVersionItem.definitionId = definitionItem.definitionId
190
+ latestVersionItem.queryId = definitionItem.queryId
193
191
  latestVersionItem.tenantId = definitionItem.tenantId
194
- latestVersionItem.name = definitionItem.dcqlPayload?.name ?? definitionItem.definitionPayload?.name ?? definitionItem.name
195
- latestVersionItem.purpose = definitionItem.dcqlPayload?.defaultPurpose ?? definitionItem.definitionPayload?.purpose ?? definitionItem.purpose
196
- latestVersionItem.definitionPayload = definitionItem.definitionPayload
197
- latestVersionItem.dcqlPayload = definitionItem.dcqlPayload
192
+ latestVersionItem.name = definitionItem.name
193
+ latestVersionItem.purpose = definitionItem.purpose
194
+ latestVersionItem.query = definitionItem.query
198
195
 
199
196
  return await this.store.updateDefinition(latestVersionItem)
200
197
  } else {
201
198
  // Apply the same field extraction logic for new items
202
199
  const newDefinitionItem = {
203
200
  ...definitionItem,
204
- name: definitionItem.name ?? definitionItem.dcqlPayload?.name ?? definitionItem.definitionPayload?.name,
205
- purpose: definitionItem.purpose ?? definitionItem.dcqlPayload?.defaultPurpose ?? definitionItem.definitionPayload?.purpose,
206
- }
201
+ } satisfies AddDefinitionArgs
207
202
  return await this.store.addDefinition(newDefinitionItem)
208
203
  }
209
204
  }
210
205
 
211
206
  private async handleManualMode(
212
- existingItem: PresentationDefinitionItem | undefined,
213
- definitionItem: NonPersistedPresentationDefinitionItem,
207
+ existingItem: DcqlQueryItem | undefined,
208
+ definitionItem: NonPersistedDcqlQueryItem,
214
209
  tenantId: string | undefined,
215
210
  version: string | undefined,
216
- ): Promise<PresentationDefinitionItem> {
211
+ ): Promise<DcqlQueryItem> {
217
212
  if (existingItem && !isPresentationDefinitionEqual(existingItem, definitionItem)) {
218
213
  throw Error(
219
- `Cannot update definition ${definitionItem.definitionId} for tenant ${tenantId} version ${version} because definition exists and manual version control is enabled.`,
214
+ `Cannot update definition ${definitionItem.queryId} for tenant ${tenantId} version ${version} because definition exists and manual version control is enabled.`,
220
215
  )
221
216
  } else {
222
217
  return await this.store.addDefinition(definitionItem)
@@ -224,10 +219,10 @@ export class PDManager implements IAgentPlugin {
224
219
  }
225
220
 
226
221
  private async handleAutoIncrementMode(
227
- latestVersionItem: PresentationDefinitionItem | undefined,
228
- definitionItem: NonPersistedPresentationDefinitionItem,
222
+ latestVersionItem: DcqlQueryItem | undefined,
223
+ definitionItem: NonPersistedDcqlQueryItem,
229
224
  releaseType: ReleaseType,
230
- ): Promise<PresentationDefinitionItem> {
225
+ ): Promise<DcqlQueryItem> {
231
226
  const defaultVersion = '1'
232
227
  let currentVersion = latestVersionItem?.version ?? definitionItem.version ?? defaultVersion
233
228
  let resultVersion: string
@@ -265,9 +260,7 @@ export class PDManager implements IAgentPlugin {
265
260
  const newDefinitionItem = {
266
261
  ...definitionItem,
267
262
  version: resultVersion,
268
- name: definitionItem.name ?? definitionItem.dcqlPayload?.name ?? definitionItem.definitionPayload?.name,
269
- purpose: definitionItem.purpose ?? definitionItem.dcqlPayload?.defaultPurpose ?? definitionItem.definitionPayload?.purpose,
270
- }
263
+ } satisfies AddDefinitionArgs
271
264
 
272
265
  return await this.store.addDefinition(newDefinitionItem)
273
266
  }
package/src/index.ts CHANGED
@@ -7,3 +7,4 @@ export { PDManager, pdManagerMethods } from './agent/PDManager'
7
7
  export * from './types/IPDManager'
8
8
 
9
9
  export type { ReleaseType } from 'semver'
10
+ export type { ImportDcqlQueryItem } from '@sphereon/ssi-sdk.data-store'
@@ -1,5 +1,5 @@
1
1
  import { IAgentContext, IPluginMethodMap } from '@veramo/core'
2
- import { FindDefinitionArgs, NonPersistedPresentationDefinitionItem, PresentationDefinitionItem } from '@sphereon/ssi-sdk.data-store'
2
+ import { FindDcqlQueryArgs, NonPersistedDcqlQueryItem, DcqlQueryItem } from '@sphereon/ssi-sdk.data-store'
3
3
  import { ReleaseType } from 'semver'
4
4
 
5
5
  export interface IPDManager extends IPluginMethodMap {
@@ -7,13 +7,13 @@ export interface IPDManager extends IPluginMethodMap {
7
7
  * Get a single presentation definition records by primary key
8
8
  * @param args
9
9
  */
10
- pdmGetDefinition(args: GetDefinitionItemArgs): Promise<PresentationDefinitionItem>
10
+ pdmGetDefinition(args: GetDcqlQueryItemArgs): Promise<DcqlQueryItem>
11
11
 
12
12
  /**
13
13
  * Find one or more presentation definition records using filters
14
14
  * @param args
15
15
  */
16
- pdmGetDefinitions(args: GetDefinitionItemsArgs): Promise<Array<PresentationDefinitionItem>>
16
+ pdmGetDefinitions(args: GetDcqlQueryItemsArgs): Promise<Array<DcqlQueryItem>>
17
17
 
18
18
  /**
19
19
  * Checks whether a presentation definition record exists by primary key
@@ -25,54 +25,54 @@ export interface IPDManager extends IPluginMethodMap {
25
25
  * Checks whether one or more presentation definition records exist using filters
26
26
  * @param args
27
27
  */
28
- pdmHasDefinitions(args: HasDefinitionItemsArgs): Promise<boolean>
28
+ pdmHasDefinitions(args: HasDcqlQueryItemsArgs): Promise<boolean>
29
29
 
30
30
  /**
31
31
  * Delete a single presentation definition records by primary key
32
32
  * @param args
33
33
  */
34
- pdmDeleteDefinition(args: DeleteDefinitionItemArgs): Promise<boolean>
34
+ pdmDeleteDefinition(args: DeleteDcqlQueryItemArgs): Promise<boolean>
35
35
 
36
36
  /**
37
37
  * Delete multiple presentation definitions records using filters
38
38
  * @param args
39
39
  */
40
- pdmDeleteDefinitions(args: DeleteDefinitionItemsArgs): Promise<number>
40
+ pdmDeleteDefinitions(args: DeleteDcqlQueryItemsArgs): Promise<number>
41
41
 
42
42
  /**
43
43
  * Check in a presentation definition.
44
44
  * It has version control logic which will add or update presentation definition records and has settings for automatic version numbering.
45
45
  * @param args
46
46
  */
47
- pdmPersistDefinition(args: PersistDefinitionArgs): Promise<PresentationDefinitionItem>
47
+ pdmPersistDefinition(args: PersistDcqlQueryArgs): Promise<DcqlQueryItem>
48
48
  }
49
49
 
50
50
  export type VersionControlMode = 'AutoIncrement' | 'Manual' | 'Overwrite' | 'OverwriteLatest'
51
51
 
52
- export type GetDefinitionItemArgs = {
52
+ export type GetDcqlQueryItemArgs = {
53
53
  itemId: string
54
54
  }
55
55
 
56
- export type HasDefinitionItemArgs = GetDefinitionItemArgs
56
+ export type HasDefinitionItemArgs = GetDcqlQueryItemArgs
57
57
 
58
58
  export type FetchOptions = {
59
59
  showVersionHistory?: boolean
60
60
  }
61
61
 
62
- export type GetDefinitionItemsArgs = {
63
- filter?: FindDefinitionArgs
62
+ export type GetDcqlQueryItemsArgs = {
63
+ filter?: FindDcqlQueryArgs
64
64
  opts?: FetchOptions
65
65
  }
66
66
 
67
- export type HasDefinitionItemsArgs = GetDefinitionItemsArgs
67
+ export type HasDcqlQueryItemsArgs = GetDcqlQueryItemsArgs
68
68
 
69
- export type DeleteDefinitionItemArgs = {
69
+ export type DeleteDcqlQueryItemArgs = {
70
70
  itemId: string
71
71
  }
72
72
 
73
- export type DeleteDefinitionItemsArgs = GetDefinitionItemsArgs
73
+ export type DeleteDcqlQueryItemsArgs = GetDcqlQueryItemsArgs
74
74
 
75
- export type PersistPresentationDefinitionItem = Omit<NonPersistedPresentationDefinitionItem, 'version'> & {
75
+ export type PersistDcqlQueryItem = Omit<NonPersistedDcqlQueryItem, 'version'> & {
76
76
  id?: string
77
77
  version?: string
78
78
  }
@@ -82,8 +82,8 @@ export type PersistOptions = {
82
82
  versionIncrementReleaseType?: ReleaseType
83
83
  }
84
84
 
85
- export type PersistDefinitionArgs = {
86
- definitionItem: PersistPresentationDefinitionItem
85
+ export type PersistDcqlQueryArgs = {
86
+ definitionItem: PersistDcqlQueryItem
87
87
  opts?: PersistOptions
88
88
  }
89
89