@sphereon/ssi-sdk.data-store 0.32.1-next.13 → 0.32.1-next.141
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.
- package/dist/entities/presentationDefinition/PresentationDefinitionItemEntity.d.ts +1 -0
- package/dist/entities/presentationDefinition/PresentationDefinitionItemEntity.d.ts.map +1 -1
- package/dist/entities/presentationDefinition/PresentationDefinitionItemEntity.js +8 -2
- package/dist/entities/presentationDefinition/PresentationDefinitionItemEntity.js.map +1 -1
- package/dist/entities/{statusList2021 → statusList}/StatusList2021EntryEntity.d.ts +1 -1
- package/dist/entities/statusList/StatusList2021EntryEntity.d.ts.map +1 -0
- package/dist/entities/{statusList2021 → statusList}/StatusList2021EntryEntity.js +3 -3
- package/dist/entities/statusList/StatusList2021EntryEntity.js.map +1 -0
- package/dist/entities/statusList/StatusListEntities.d.ts +23 -0
- package/dist/entities/statusList/StatusListEntities.d.ts.map +1 -0
- package/dist/entities/{statusList2021/StatusList2021Entity.js → statusList/StatusListEntities.js} +44 -16
- package/dist/entities/statusList/StatusListEntities.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/migrations/generic/4-CreateStatusList.d.ts.map +1 -1
- package/dist/migrations/generic/4-CreateStatusList.js +22 -12
- package/dist/migrations/generic/4-CreateStatusList.js.map +1 -1
- package/dist/migrations/postgres/1693866470001-CreateStatusList.d.ts.map +1 -1
- package/dist/migrations/postgres/1693866470001-CreateStatusList.js +43 -7
- package/dist/migrations/postgres/1693866470001-CreateStatusList.js.map +1 -1
- package/dist/migrations/postgres/1716475165345-CreatePresentationDefinitions.d.ts.map +1 -1
- package/dist/migrations/postgres/1716475165345-CreatePresentationDefinitions.js +1 -0
- package/dist/migrations/postgres/1716475165345-CreatePresentationDefinitions.js.map +1 -1
- package/dist/migrations/postgres/1737110469001-UpdateStatusList.d.ts +7 -0
- package/dist/migrations/postgres/1737110469001-UpdateStatusList.d.ts.map +1 -0
- package/dist/migrations/postgres/1737110469001-UpdateStatusList.js +39 -0
- package/dist/migrations/postgres/1737110469001-UpdateStatusList.js.map +1 -0
- package/dist/migrations/sqlite/1693866470000-CreateStatusList.d.ts.map +1 -1
- package/dist/migrations/sqlite/1693866470000-CreateStatusList.js +45 -5
- package/dist/migrations/sqlite/1693866470000-CreateStatusList.js.map +1 -1
- package/dist/migrations/sqlite/1716475165344-CreatePresentationDefinitions.d.ts.map +1 -1
- package/dist/migrations/sqlite/1716475165344-CreatePresentationDefinitions.js +1 -0
- package/dist/migrations/sqlite/1716475165344-CreatePresentationDefinitions.js.map +1 -1
- package/dist/migrations/sqlite/1737110469000-UpdateStatusList.d.ts +7 -0
- package/dist/migrations/sqlite/1737110469000-UpdateStatusList.d.ts.map +1 -0
- package/dist/migrations/sqlite/1737110469000-UpdateStatusList.js +88 -0
- package/dist/migrations/sqlite/1737110469000-UpdateStatusList.js.map +1 -0
- package/dist/statusList/IStatusListStore.d.ts +2 -2
- package/dist/statusList/IStatusListStore.d.ts.map +1 -1
- package/dist/statusList/StatusListStore.d.ts +8 -7
- package/dist/statusList/StatusListStore.d.ts.map +1 -1
- package/dist/statusList/StatusListStore.js +53 -31
- package/dist/statusList/StatusListStore.js.map +1 -1
- package/dist/types/presentationDefinition/presentationDefinition.d.ts +3 -1
- package/dist/types/presentationDefinition/presentationDefinition.d.ts.map +1 -1
- package/dist/types/statusList/IAbstractStatusListStore.d.ts +2 -2
- package/dist/types/statusList/IAbstractStatusListStore.d.ts.map +1 -1
- package/dist/types/statusList/statusList.d.ts +9 -4
- package/dist/types/statusList/statusList.d.ts.map +1 -1
- package/dist/utils/presentationDefinition/MappingUtils.d.ts.map +1 -1
- package/dist/utils/presentationDefinition/MappingUtils.js +2 -0
- package/dist/utils/presentationDefinition/MappingUtils.js.map +1 -1
- package/dist/utils/statusList/MappingUtils.d.ts +5 -0
- package/dist/utils/statusList/MappingUtils.d.ts.map +1 -0
- package/dist/utils/statusList/MappingUtils.js +69 -0
- package/dist/utils/statusList/MappingUtils.js.map +1 -0
- package/package.json +6 -5
- package/src/__tests__/pd-manager.entities.test.ts +77 -0
- package/src/__tests__/statusList.entities.test.ts +215 -0
- package/src/__tests__/statusList.store.test.ts +232 -0
- package/src/entities/presentationDefinition/PresentationDefinitionItemEntity.ts +6 -2
- package/src/entities/{statusList2021 → statusList}/StatusList2021EntryEntity.ts +1 -1
- package/src/entities/{statusList2021/StatusList2021Entity.ts → statusList/StatusListEntities.ts} +37 -18
- package/src/index.ts +3 -3
- package/src/migrations/generic/4-CreateStatusList.ts +22 -12
- package/src/migrations/postgres/1693866470001-CreateStatusList.ts +45 -9
- package/src/migrations/postgres/1716475165345-CreatePresentationDefinitions.ts +1 -0
- package/src/migrations/postgres/1737110469001-UpdateStatusList.ts +25 -0
- package/src/migrations/sqlite/1693866470000-CreateStatusList.ts +45 -5
- package/src/migrations/sqlite/1716475165344-CreatePresentationDefinitions.ts +1 -0
- package/src/migrations/sqlite/1737110469000-UpdateStatusList.ts +84 -0
- package/src/statusList/IStatusListStore.ts +2 -2
- package/src/statusList/StatusListStore.ts +66 -40
- package/src/types/presentationDefinition/presentationDefinition.ts +3 -1
- package/src/types/statusList/IAbstractStatusListStore.ts +2 -2
- package/src/types/statusList/statusList.ts +12 -4
- package/src/utils/presentationDefinition/MappingUtils.ts +3 -0
- package/src/utils/statusList/MappingUtils.ts +82 -0
- package/dist/entities/statusList2021/StatusList2021Entity.d.ts +0 -19
- package/dist/entities/statusList2021/StatusList2021Entity.d.ts.map +0 -1
- package/dist/entities/statusList2021/StatusList2021Entity.js.map +0 -1
- package/dist/entities/statusList2021/StatusList2021EntryEntity.d.ts.map +0 -1
- package/dist/entities/statusList2021/StatusList2021EntryEntity.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { OrPromise } from '@sphereon/ssi-types'
|
|
1
|
+
import { OrPromise, StatusListType } from '@sphereon/ssi-types'
|
|
2
2
|
import Debug from 'debug'
|
|
3
3
|
import { DataSource, In, Repository } from 'typeorm'
|
|
4
|
-
import { StatusListEntity } from '../entities/
|
|
5
|
-
import { StatusListEntryEntity } from '../entities/
|
|
4
|
+
import { OAuthStatusListEntity, StatusList2021Entity, StatusListEntity } from '../entities/statusList/StatusListEntities'
|
|
5
|
+
import { StatusListEntryEntity } from '../entities/statusList/StatusList2021EntryEntity'
|
|
6
6
|
import {
|
|
7
7
|
IAddStatusListArgs,
|
|
8
8
|
IAddStatusListEntryArgs,
|
|
@@ -12,12 +12,13 @@ import {
|
|
|
12
12
|
IGetStatusListEntryByIndexArgs,
|
|
13
13
|
IGetStatusListsArgs,
|
|
14
14
|
IRemoveStatusListArgs,
|
|
15
|
-
IStatusListEntryAvailableArgs,
|
|
16
|
-
IUpdateStatusListIndexArgs,
|
|
17
15
|
IStatusListEntity,
|
|
16
|
+
IStatusListEntryAvailableArgs,
|
|
18
17
|
IStatusListEntryEntity,
|
|
18
|
+
IUpdateStatusListIndexArgs,
|
|
19
19
|
} from '../types'
|
|
20
20
|
import { IStatusListStore } from './IStatusListStore'
|
|
21
|
+
import { statusListEntityFrom, statusListFrom } from '../utils/statusList/MappingUtils'
|
|
21
22
|
|
|
22
23
|
const debug = Debug('sphereon:ssi-sdk:data-store:status-list')
|
|
23
24
|
|
|
@@ -73,7 +74,11 @@ export class StatusListStore implements IStatusListStore {
|
|
|
73
74
|
{ conflictPaths: ['statusList', 'statusListIndex'] },
|
|
74
75
|
)
|
|
75
76
|
console.log(updateResult)
|
|
76
|
-
return (await this.getStatusListEntryByIndex({
|
|
77
|
+
return (await this.getStatusListEntryByIndex({
|
|
78
|
+
...args,
|
|
79
|
+
statusListId,
|
|
80
|
+
errorOnNotFound: true,
|
|
81
|
+
})) as IStatusListEntryEntity
|
|
77
82
|
}
|
|
78
83
|
|
|
79
84
|
async getStatusListEntryByIndex(args: IGetStatusListEntryByIndexArgs): Promise<StatusListEntryEntity | undefined> {
|
|
@@ -96,34 +101,15 @@ export class StatusListStore implements IStatusListStore {
|
|
|
96
101
|
return result ?? undefined
|
|
97
102
|
}
|
|
98
103
|
|
|
99
|
-
async removeStatusListEntryByIndex(args: IGetStatusListEntryByIndexArgs): Promise<boolean> {
|
|
100
|
-
let error = false
|
|
101
|
-
try {
|
|
102
|
-
await this.getStatusListEntryByIndex(args) // only used to check it exists
|
|
103
|
-
} catch (error) {
|
|
104
|
-
error = true
|
|
105
|
-
}
|
|
106
|
-
if (error) {
|
|
107
|
-
console.log(`Could not delete statusList ${args.statusListId} entry by index ${args.statusListIndex}`)
|
|
108
|
-
} else {
|
|
109
|
-
const result = await (
|
|
110
|
-
await this.getStatusListEntryRepo()
|
|
111
|
-
).delete({
|
|
112
|
-
...(args.statusListId && { statusList: args.statusListId }),
|
|
113
|
-
...(args.correlationId && { correlationId: args.correlationId }),
|
|
114
|
-
statusListIndex: args.statusListIndex,
|
|
115
|
-
})
|
|
116
|
-
error = !result.affected || result.affected !== 1
|
|
117
|
-
}
|
|
118
|
-
return !error
|
|
119
|
-
}
|
|
120
|
-
|
|
121
104
|
async getStatusListEntryByCredentialId(args: IGetStatusListEntryByCredentialIdArgs): Promise<StatusListEntryEntity | undefined> {
|
|
122
105
|
const credentialId = args.credentialId
|
|
123
106
|
if (!credentialId) {
|
|
124
107
|
throw Error('Can only get a credential by credentialId when a credentialId is supplied')
|
|
125
108
|
}
|
|
126
|
-
const statusList = await this.getStatusList({
|
|
109
|
+
const statusList = await this.getStatusList({
|
|
110
|
+
id: args.statusListId,
|
|
111
|
+
correlationId: args.statusListCorrelationId,
|
|
112
|
+
})
|
|
127
113
|
const where = {
|
|
128
114
|
statusList: statusList.id,
|
|
129
115
|
...(args.entryCorrelationId && { correlationId: args.entryCorrelationId }),
|
|
@@ -158,11 +144,37 @@ export class StatusListStore implements IStatusListStore {
|
|
|
158
144
|
return !error
|
|
159
145
|
}
|
|
160
146
|
|
|
147
|
+
async removeStatusListEntryByIndex(args: IGetStatusListEntryByIndexArgs): Promise<boolean> {
|
|
148
|
+
let error = false
|
|
149
|
+
try {
|
|
150
|
+
await this.getStatusListEntryByIndex(args)
|
|
151
|
+
} catch (error) {
|
|
152
|
+
error = true
|
|
153
|
+
}
|
|
154
|
+
if (error) {
|
|
155
|
+
console.log(`Could not delete statusList ${args.statusListId} entry by index ${args.statusListIndex}`)
|
|
156
|
+
} else {
|
|
157
|
+
const result = await (
|
|
158
|
+
await this.getStatusListEntryRepo()
|
|
159
|
+
).delete({
|
|
160
|
+
...(args.statusListId && { statusList: args.statusListId }),
|
|
161
|
+
...(args.correlationId && { correlationId: args.correlationId }),
|
|
162
|
+
statusListIndex: args.statusListIndex,
|
|
163
|
+
})
|
|
164
|
+
error = !result.affected || result.affected !== 1
|
|
165
|
+
}
|
|
166
|
+
return !error
|
|
167
|
+
}
|
|
168
|
+
|
|
161
169
|
async getStatusListEntries(args: IGetStatusListEntriesArgs): Promise<StatusListEntryEntity[]> {
|
|
162
170
|
return (await this.getStatusListEntryRepo()).find({ where: { ...args?.filter, statusList: args.statusListId } })
|
|
163
171
|
}
|
|
164
172
|
|
|
165
173
|
async getStatusList(args: IGetStatusListArgs): Promise<IStatusListEntity> {
|
|
174
|
+
return statusListFrom(await this.getStatusListEntity(args))
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
private async getStatusListEntity(args: IGetStatusListArgs): Promise<StatusListEntity> {
|
|
166
178
|
if (!args.id && !args.correlationId) {
|
|
167
179
|
throw Error(`At least and 'id' or 'correlationId' needs to be provided to lookup a status list`)
|
|
168
180
|
}
|
|
@@ -189,7 +201,8 @@ export class StatusListStore implements IStatusListStore {
|
|
|
189
201
|
if (!result) {
|
|
190
202
|
return []
|
|
191
203
|
}
|
|
192
|
-
|
|
204
|
+
|
|
205
|
+
return result.map((entity) => statusListFrom(entity))
|
|
193
206
|
}
|
|
194
207
|
|
|
195
208
|
async addStatusList(args: IAddStatusListArgs): Promise<IStatusListEntity> {
|
|
@@ -205,29 +218,42 @@ export class StatusListStore implements IStatusListStore {
|
|
|
205
218
|
}
|
|
206
219
|
|
|
207
220
|
debug('Adding status list ', id)
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
return createdResult
|
|
221
|
+
const entity = statusListEntityFrom(args)
|
|
222
|
+
const createdResult = await (await this.getStatusListRepo(args.type)).save(entity)
|
|
223
|
+
return statusListFrom(createdResult)
|
|
211
224
|
}
|
|
212
225
|
|
|
213
226
|
async updateStatusList(args: IUpdateStatusListIndexArgs): Promise<IStatusListEntity> {
|
|
214
227
|
const result = await this.getStatusList(args)
|
|
215
228
|
debug('Updating status list', result)
|
|
216
|
-
const
|
|
217
|
-
|
|
229
|
+
const entity = statusListEntityFrom(args)
|
|
230
|
+
const updatedResult = await (await this.getStatusListRepo(args.type)).save(entity, { transaction: true })
|
|
231
|
+
return statusListFrom(updatedResult)
|
|
218
232
|
}
|
|
219
233
|
|
|
220
|
-
async removeStatusList(args: IRemoveStatusListArgs): Promise<
|
|
221
|
-
const result = await this.
|
|
222
|
-
|
|
234
|
+
async removeStatusList(args: IRemoveStatusListArgs): Promise<boolean> {
|
|
235
|
+
const result = await this.getStatusListEntity(args)
|
|
236
|
+
|
|
237
|
+
await (await this.getStatusListEntryRepo()).delete({ statusList: result.id })
|
|
238
|
+
const deletedEntity = await (await this.getStatusListRepo()).remove(result)
|
|
239
|
+
|
|
240
|
+
return Boolean(deletedEntity)
|
|
223
241
|
}
|
|
224
242
|
|
|
225
243
|
private async getDS(): Promise<DataSource> {
|
|
226
244
|
return this._dbConnection
|
|
227
245
|
}
|
|
228
246
|
|
|
229
|
-
async getStatusListRepo(): Promise<Repository<StatusListEntity>> {
|
|
230
|
-
|
|
247
|
+
async getStatusListRepo(type?: StatusListType): Promise<Repository<StatusListEntity>> {
|
|
248
|
+
const dataSource = await this.getDS()
|
|
249
|
+
switch (type) {
|
|
250
|
+
case StatusListType.StatusList2021:
|
|
251
|
+
return dataSource.getRepository(StatusList2021Entity)
|
|
252
|
+
case StatusListType.OAuthStatusList:
|
|
253
|
+
return dataSource.getRepository(OAuthStatusListEntity)
|
|
254
|
+
default:
|
|
255
|
+
return dataSource.getRepository(StatusListEntity)
|
|
256
|
+
}
|
|
231
257
|
}
|
|
232
258
|
|
|
233
259
|
async getStatusListEntryRepo(): Promise<Repository<StatusListEntryEntity>> {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IPresentationDefinition } from '@sphereon/pex'
|
|
2
|
+
import { DcqlQueryREST } from '@sphereon/ssi-types'
|
|
2
3
|
|
|
3
4
|
export type PresentationDefinitionItem = {
|
|
4
5
|
id: string
|
|
@@ -8,10 +9,11 @@ export type PresentationDefinitionItem = {
|
|
|
8
9
|
name?: string
|
|
9
10
|
purpose?: string
|
|
10
11
|
definitionPayload: IPresentationDefinition
|
|
12
|
+
dcqlPayload?: DcqlQueryREST
|
|
11
13
|
createdAt: Date
|
|
12
14
|
lastUpdatedAt: Date
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
export type NonPersistedPresentationDefinitionItem = Omit<PresentationDefinitionItem, 'id' | 'createdAt' | 'lastUpdatedAt'>
|
|
16
18
|
export type PartialPresentationDefinitionItem = Partial<PresentationDefinitionItem>
|
|
17
|
-
export type PresentationDefinitionItemFilter = Partial<Omit<PresentationDefinitionItem, 'definitionPayload'
|
|
19
|
+
export type PresentationDefinitionItemFilter = Partial<Omit<PresentationDefinitionItem, 'definitionPayload' | 'dcqlPayload'>>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FindOptionsWhere } from 'typeorm'
|
|
2
|
-
import { IStatusListEntity, IStatusListEntryEntity } from './statusList'
|
|
2
|
+
import { IOAuthStatusListEntity, IStatusList2021Entity, IStatusListEntity, IStatusListEntryEntity } from './statusList'
|
|
3
3
|
|
|
4
|
-
export type FindStatusListArgs = FindOptionsWhere<
|
|
4
|
+
export type FindStatusListArgs = FindOptionsWhere<IStatusList2021Entity | IOAuthStatusListEntity>[]
|
|
5
5
|
export type FindStatusListEntryArgs = FindOptionsWhere<IStatusListEntryEntity>[] | FindOptionsWhere<IStatusListEntryEntity>
|
|
6
6
|
|
|
7
7
|
export interface IStatusListEntryAvailableArgs {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
IIssuer,
|
|
3
|
-
|
|
3
|
+
StatusListCredential,
|
|
4
4
|
StatusListCredentialIdMode,
|
|
5
5
|
StatusListDriverType,
|
|
6
6
|
StatusListIndexingDirection,
|
|
7
7
|
StatusListType,
|
|
8
8
|
StatusPurpose2021,
|
|
9
|
+
ProofFormat,
|
|
9
10
|
} from '@sphereon/ssi-types'
|
|
10
|
-
import {
|
|
11
|
-
import { StatusListEntity } from '../../entities/statusList2021/StatusList2021Entity'
|
|
11
|
+
import { StatusListEntity } from '../../entities/statusList/StatusListEntities'
|
|
12
12
|
|
|
13
13
|
export interface IStatusListEntity {
|
|
14
14
|
id: string
|
|
@@ -19,9 +19,17 @@ export interface IStatusListEntity {
|
|
|
19
19
|
issuer: string | IIssuer
|
|
20
20
|
type: StatusListType
|
|
21
21
|
proofFormat: ProofFormat
|
|
22
|
+
statusListCredential?: StatusListCredential
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface IStatusList2021Entity extends IStatusListEntity {
|
|
22
26
|
indexingDirection: StatusListIndexingDirection
|
|
23
27
|
statusPurpose: StatusPurpose2021
|
|
24
|
-
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface IOAuthStatusListEntity extends IStatusListEntity {
|
|
31
|
+
bitsPerStatus: number
|
|
32
|
+
expiresAt?: Date
|
|
25
33
|
}
|
|
26
34
|
|
|
27
35
|
export interface IStatusListEntryEntity {
|
|
@@ -3,6 +3,7 @@ import { IPresentationDefinition } from '@sphereon/pex'
|
|
|
3
3
|
import { NonPersistedPresentationDefinitionItem, PartialPresentationDefinitionItem, PresentationDefinitionItem } from '../../types'
|
|
4
4
|
import { blake2bHex } from 'blakejs'
|
|
5
5
|
import { replaceNullWithUndefined } from '../FormattingUtils'
|
|
6
|
+
import { DcqlQueryREST } from '@sphereon/ssi-types'
|
|
6
7
|
|
|
7
8
|
export const presentationDefinitionItemFrom = (entity: PresentationDefinitionItemEntity): PresentationDefinitionItem => {
|
|
8
9
|
const result: PresentationDefinitionItem = {
|
|
@@ -13,6 +14,7 @@ export const presentationDefinitionItemFrom = (entity: PresentationDefinitionIte
|
|
|
13
14
|
name: entity.name,
|
|
14
15
|
purpose: entity.purpose,
|
|
15
16
|
definitionPayload: JSON.parse(entity.definitionPayload) as IPresentationDefinition,
|
|
17
|
+
dcqlPayload: JSON.parse(entity.dcqlPayload) as DcqlQueryREST,
|
|
16
18
|
createdAt: entity.createdAt,
|
|
17
19
|
lastUpdatedAt: entity.lastUpdatedAt,
|
|
18
20
|
}
|
|
@@ -29,6 +31,7 @@ export const presentationDefinitionEntityItemFrom = (item: NonPersistedPresentat
|
|
|
29
31
|
entity.name = item.name
|
|
30
32
|
entity.purpose = item.purpose
|
|
31
33
|
entity.definitionPayload = JSON.stringify(item.definitionPayload!)
|
|
34
|
+
entity.dcqlPayload = JSON.stringify(item.dcqlPayload!)
|
|
32
35
|
return entity
|
|
33
36
|
}
|
|
34
37
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { IOAuthStatusListEntity, IStatusList2021Entity, IStatusListEntity } from '../../types'
|
|
2
|
+
import { OAuthStatusListEntity, StatusList2021Entity, StatusListEntity } from '../../entities/statusList/StatusListEntities'
|
|
3
|
+
import { StatusListType } from '@sphereon/ssi-types'
|
|
4
|
+
import { replaceNullWithUndefined } from '../FormattingUtils'
|
|
5
|
+
|
|
6
|
+
export const statusListEntityFrom = (args: IStatusListEntity): StatusListEntity => {
|
|
7
|
+
if (args.type === StatusListType.StatusList2021) {
|
|
8
|
+
const entity = new StatusList2021Entity()
|
|
9
|
+
const sl2021 = args as IStatusList2021Entity
|
|
10
|
+
entity.indexingDirection = sl2021.indexingDirection
|
|
11
|
+
entity.statusPurpose = sl2021.statusPurpose
|
|
12
|
+
setBaseFields(entity, args)
|
|
13
|
+
Object.defineProperty(entity, 'type', {
|
|
14
|
+
value: StatusListType.StatusList2021,
|
|
15
|
+
enumerable: true,
|
|
16
|
+
configurable: true,
|
|
17
|
+
})
|
|
18
|
+
return entity
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (args.type === StatusListType.OAuthStatusList) {
|
|
22
|
+
const entity = new OAuthStatusListEntity()
|
|
23
|
+
const oauthSl = args as IOAuthStatusListEntity
|
|
24
|
+
entity.bitsPerStatus = oauthSl.bitsPerStatus
|
|
25
|
+
entity.expiresAt = oauthSl.expiresAt
|
|
26
|
+
setBaseFields(entity, args)
|
|
27
|
+
Object.defineProperty(entity, 'type', {
|
|
28
|
+
value: StatusListType.OAuthStatusList,
|
|
29
|
+
enumerable: true,
|
|
30
|
+
configurable: true,
|
|
31
|
+
})
|
|
32
|
+
return entity
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
throw new Error(`Invalid status list type ${args.type}`)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export const statusListFrom = (entity: StatusListEntity): IStatusListEntity => {
|
|
39
|
+
if (entity instanceof StatusList2021Entity) {
|
|
40
|
+
const result: IStatusList2021Entity = {
|
|
41
|
+
...getBaseFields(entity),
|
|
42
|
+
type: StatusListType.StatusList2021,
|
|
43
|
+
indexingDirection: entity.indexingDirection,
|
|
44
|
+
statusPurpose: entity.statusPurpose,
|
|
45
|
+
}
|
|
46
|
+
return replaceNullWithUndefined(result)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (entity instanceof OAuthStatusListEntity) {
|
|
50
|
+
const result: IOAuthStatusListEntity = {
|
|
51
|
+
...getBaseFields(entity),
|
|
52
|
+
type: StatusListType.OAuthStatusList,
|
|
53
|
+
bitsPerStatus: entity.bitsPerStatus,
|
|
54
|
+
expiresAt: entity.expiresAt,
|
|
55
|
+
}
|
|
56
|
+
return replaceNullWithUndefined(result)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
throw new Error(`Invalid status list type ${typeof entity}`)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const setBaseFields = (entity: StatusListEntity, args: IStatusListEntity) => {
|
|
63
|
+
entity.id = args.id
|
|
64
|
+
entity.correlationId = args.correlationId
|
|
65
|
+
entity.length = args.length
|
|
66
|
+
entity.issuer = args.issuer
|
|
67
|
+
entity.driverType = args.driverType
|
|
68
|
+
entity.credentialIdMode = args.credentialIdMode
|
|
69
|
+
entity.proofFormat = args.proofFormat
|
|
70
|
+
entity.statusListCredential = args.statusListCredential
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const getBaseFields = (entity: StatusListEntity): Omit<IStatusListEntity, 'type'> => ({
|
|
74
|
+
id: entity.id,
|
|
75
|
+
correlationId: entity.correlationId,
|
|
76
|
+
length: entity.length,
|
|
77
|
+
issuer: entity.issuer,
|
|
78
|
+
driverType: entity.driverType,
|
|
79
|
+
credentialIdMode: entity.credentialIdMode,
|
|
80
|
+
proofFormat: entity.proofFormat,
|
|
81
|
+
statusListCredential: entity.statusListCredential,
|
|
82
|
+
})
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { IIssuer, JwtDecodedVerifiableCredential, StatusListCredentialIdMode, StatusListDriverType, StatusListIndexingDirection, StatusListType, StatusPurpose2021, W3CVerifiableCredential } from '@sphereon/ssi-types';
|
|
2
|
-
import { ProofFormat } from '@veramo/core';
|
|
3
|
-
import { BaseEntity } from 'typeorm';
|
|
4
|
-
import { StatusListEntryEntity } from './StatusList2021EntryEntity';
|
|
5
|
-
export declare class StatusListEntity extends BaseEntity {
|
|
6
|
-
id: string;
|
|
7
|
-
correlationId: string;
|
|
8
|
-
length: number;
|
|
9
|
-
issuer: string | IIssuer;
|
|
10
|
-
type: StatusListType;
|
|
11
|
-
driverType: StatusListDriverType;
|
|
12
|
-
credentialIdMode: StatusListCredentialIdMode;
|
|
13
|
-
proofFormat: ProofFormat;
|
|
14
|
-
indexingDirection: StatusListIndexingDirection;
|
|
15
|
-
statusPurpose: StatusPurpose2021;
|
|
16
|
-
statusListCredential?: W3CVerifiableCredential | JwtDecodedVerifiableCredential;
|
|
17
|
-
statusListEntries: StatusListEntryEntity[];
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=StatusList2021Entity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StatusList2021Entity.d.ts","sourceRoot":"","sources":["../../../src/entities/statusList2021/StatusList2021Entity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,8BAA8B,EAC9B,0BAA0B,EAC1B,oBAAoB,EACpB,2BAA2B,EAC3B,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAoD,MAAM,SAAS,CAAA;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAEnE,qBAEa,gBAAiB,SAAQ,UAAU;IAE9C,EAAE,EAAG,MAAM,CAAA;IAGX,aAAa,EAAG,MAAM,CAAA;IAGtB,MAAM,EAAG,MAAM,CAAA;IAsBf,MAAM,EAAG,MAAM,GAAG,OAAO,CAAA;IAGzB,IAAI,EAAG,cAAc,CAAA;IAGrB,UAAU,EAAG,oBAAoB,CAAA;IAQjC,gBAAgB,EAAG,0BAA0B,CAAA;IAG7C,WAAW,EAAG,WAAW,CAAA;IAGzB,iBAAiB,EAAG,2BAA2B,CAAA;IAG/C,aAAa,EAAG,iBAAiB,CAAA;IAsBjC,oBAAoB,CAAC,EAAE,uBAAuB,GAAG,8BAA8B,CAAA;IAG/E,iBAAiB,EAAG,qBAAqB,EAAE,CAAA;CAC5C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StatusList2021Entity.js","sourceRoot":"","sources":["../../../src/entities/statusList2021/StatusList2021Entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StatusList2021EntryEntity.d.ts","sourceRoot":"","sources":["../../../src/entities/statusList2021/StatusList2021EntryEntity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAA4C,MAAM,SAAS,CAAA;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,qBAGa,qBAAsB,SAAQ,UAAU;IAGnD,UAAU,EAAG,gBAAgB,CAAA;IAI7B,eAAe,EAAG,MAAM,CAAA;IAGxB,YAAY,CAAC,EAAE,MAAM,CAAA;IAGrB,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,aAAa,CAAC,EAAE,MAAM,CAAA;IAGtB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StatusList2021EntryEntity.js","sourceRoot":"","sources":["../../../src/entities/statusList2021/StatusList2021EntryEntity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA0C;AAC1C,qCAA8E;AAC9E,8CAA0D;AAC1D,iEAAyD;AAKlD,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,oBAAU;CAoBpD,CAAA;AApBY,sDAAqB;AAGhC;IAFC,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACxD,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,uCAAgB,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;8BACnE,uCAAgB;yDAAA;AAI7B;IAFC,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3F,IAAA,0BAAQ,EAAC,uCAA0B,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;;8DAC3D;AAGxB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DAC1C;AAGrB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;6DACzE;AAGvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;4DACzE;AAGtB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;oDACxE;gCAnBH,qBAAqB;IAHjC,IAAA,gBAAM,EAAC,iBAAiB,CAAC;IAC1B,+GAA+G;IAC/G,uHAAuH;GAC1G,qBAAqB,CAoBjC"}
|