@sphereon/ssi-sdk.pd-manager 0.34.1-feature.SSISDK.57.uni.client.205 → 0.34.1-feature.SSISDK.58.host.nonce.endpoint.145

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