@cheqd/studio 3.16.0-develop.1 → 3.16.0-develop.11

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 (83) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/app.js +1 -0
  3. package/dist/app.js.map +1 -1
  4. package/dist/controllers/admin/webhook.js +1 -1
  5. package/dist/controllers/admin/webhook.js.map +1 -1
  6. package/dist/controllers/api/account.d.ts +32 -0
  7. package/dist/controllers/api/account.d.ts.map +1 -1
  8. package/dist/controllers/api/account.js +78 -0
  9. package/dist/controllers/api/account.js.map +1 -1
  10. package/dist/controllers/api/accreditation.d.ts +17 -11
  11. package/dist/controllers/api/accreditation.d.ts.map +1 -1
  12. package/dist/controllers/api/accreditation.js +127 -299
  13. package/dist/controllers/api/accreditation.js.map +1 -1
  14. package/dist/controllers/api/credential-status.d.ts +1 -9
  15. package/dist/controllers/api/credential-status.d.ts.map +1 -1
  16. package/dist/controllers/api/credential-status.js +3 -17
  17. package/dist/controllers/api/credential-status.js.map +1 -1
  18. package/dist/controllers/api/credential.d.ts.map +1 -1
  19. package/dist/controllers/api/credential.js +6 -8
  20. package/dist/controllers/api/credential.js.map +1 -1
  21. package/dist/middleware/auth/routes/api/account-auth.d.ts.map +1 -1
  22. package/dist/middleware/auth/routes/api/account-auth.js +2 -0
  23. package/dist/middleware/auth/routes/api/account-auth.js.map +1 -1
  24. package/dist/middleware/auth/routes/api/credential-auth.js +2 -2
  25. package/dist/middleware/auth/routes/api/credential-auth.js.map +1 -1
  26. package/dist/services/api/accreditation.d.ts +21 -4
  27. package/dist/services/api/accreditation.d.ts.map +1 -1
  28. package/dist/services/api/accreditation.js +439 -16
  29. package/dist/services/api/accreditation.js.map +1 -1
  30. package/dist/services/api/credentials.d.ts +4 -1
  31. package/dist/services/api/credentials.d.ts.map +1 -1
  32. package/dist/services/api/credentials.js +55 -3
  33. package/dist/services/api/credentials.js.map +1 -1
  34. package/dist/services/api/identifier.d.ts +1 -0
  35. package/dist/services/api/identifier.d.ts.map +1 -1
  36. package/dist/services/api/identifier.js +8 -0
  37. package/dist/services/api/identifier.js.map +1 -1
  38. package/dist/services/api/resource.d.ts +5 -0
  39. package/dist/services/api/resource.d.ts.map +1 -1
  40. package/dist/services/api/resource.js +60 -0
  41. package/dist/services/api/resource.js.map +1 -1
  42. package/dist/services/helpers.d.ts.map +1 -1
  43. package/dist/services/helpers.js +2 -3
  44. package/dist/services/helpers.js.map +1 -1
  45. package/dist/services/identity/abstract.d.ts +2 -2
  46. package/dist/services/identity/abstract.d.ts.map +1 -1
  47. package/dist/services/identity/abstract.js +1 -1
  48. package/dist/services/identity/abstract.js.map +1 -1
  49. package/dist/services/identity/default.d.ts +2 -2
  50. package/dist/services/identity/default.d.ts.map +1 -1
  51. package/dist/services/identity/default.js +2 -2
  52. package/dist/services/identity/default.js.map +1 -1
  53. package/dist/services/identity/index.d.ts +3 -2
  54. package/dist/services/identity/index.d.ts.map +1 -1
  55. package/dist/services/identity/index.js.map +1 -1
  56. package/dist/services/identity/providers/dock/identity.d.ts +3 -1
  57. package/dist/services/identity/providers/dock/identity.d.ts.map +1 -1
  58. package/dist/services/identity/providers/dock/identity.js +24 -0
  59. package/dist/services/identity/providers/dock/identity.js.map +1 -1
  60. package/dist/services/identity/providers/studio/agent.d.ts +2 -2
  61. package/dist/services/identity/providers/studio/agent.d.ts.map +1 -1
  62. package/dist/services/identity/providers/studio/agent.js +36 -23
  63. package/dist/services/identity/providers/studio/agent.js.map +1 -1
  64. package/dist/services/identity/providers/studio/postgres.d.ts +13 -0
  65. package/dist/services/identity/providers/studio/postgres.d.ts.map +1 -1
  66. package/dist/services/identity/providers/studio/postgres.js +23 -0
  67. package/dist/services/identity/providers/studio/postgres.js.map +1 -1
  68. package/dist/services/track/admin/account-submitter.d.ts +1 -0
  69. package/dist/services/track/admin/account-submitter.d.ts.map +1 -1
  70. package/dist/services/track/admin/account-submitter.js +26 -4
  71. package/dist/services/track/admin/account-submitter.js.map +1 -1
  72. package/dist/static/swagger-api.json +133 -14
  73. package/dist/types/accreditation.d.ts +7 -2
  74. package/dist/types/accreditation.d.ts.map +1 -1
  75. package/dist/types/accreditation.js.map +1 -1
  76. package/dist/types/credential.d.ts +1 -0
  77. package/dist/types/credential.d.ts.map +1 -1
  78. package/dist/types/credential.js.map +1 -1
  79. package/dist/types/swagger-api-types.d.ts +43 -0
  80. package/dist/types/swagger-api-types.d.ts.map +1 -1
  81. package/dist/types/swagger-api-types.js +43 -0
  82. package/dist/types/swagger-api-types.js.map +1 -1
  83. package/package.json +2 -2
@@ -1,18 +1,275 @@
1
- import { DIDAccreditationTypes } from '../../types/accreditation.js';
1
+ import { AccreditationRequestType, DIDAccreditationTypes, DIDAccreditationPolicyTypes, } from '../../types/accreditation.js';
2
2
  import { isCredentialIssuerDidDeactivated } from '../helpers.js';
3
3
  import { IdentityServiceStrategySetup } from '../identity/index.js';
4
4
  import { StatusCodes } from 'http-status-codes';
5
+ import { parseDidFromDidUrl } from '../../helpers/helpers.js';
6
+ import { v4 } from 'uuid';
7
+ import { CredentialCategory, CredentialConnectors } from '../../types/credential.js';
8
+ import { Credentials } from './credentials.js';
9
+ import NodeCache from 'node-cache';
10
+ import { StatusListType } from '../../types/credential-status.js';
11
+ const ACCREDITATION_RESOLVE_CACHE_TTL_MS = 30_000;
12
+ const ACCREDITATION_RESOLVE_CACHE_MAX_ENTRIES = 200;
13
+ const ACCREDITATION_RESOLVE_CONCURRENCY = 8;
14
+ function buildCacheKey(url, customerId) {
15
+ return `${customerId ?? 'anonymous'}::${url}`;
16
+ }
17
+ const accreditationResolveCache = new NodeCache({
18
+ stdTTL: ACCREDITATION_RESOLVE_CACHE_TTL_MS / 1000,
19
+ checkperiod: 0,
20
+ useClones: false,
21
+ deleteOnExpire: true,
22
+ maxKeys: ACCREDITATION_RESOLVE_CACHE_MAX_ENTRIES,
23
+ });
24
+ const inFlightAccreditations = new Map();
25
+ function getCachedAccreditation(key) {
26
+ return accreditationResolveCache.get(key) ?? null;
27
+ }
28
+ function setCachedAccreditation(key, value) {
29
+ accreditationResolveCache.set(key, value);
30
+ }
5
31
  export class AccreditationService {
6
32
  static instance = new AccreditationService();
33
+ async issue_accreditation(accreditationType, issuerDid, subjectDid, schemas, body, customer) {
34
+ // Get strategy e.g. postgres or local
35
+ const identityServiceStrategySetup = new IdentityServiceStrategySetup();
36
+ // Handles string input instead of an array
37
+ let { type, '@context': context, parentAccreditation, rootAuthorization, trustFramework, trustFrameworkId, attributes, accreditationName, format, credentialStatus, } = body;
38
+ if (typeof type === 'string') {
39
+ type = [type];
40
+ }
41
+ if (typeof context === 'string') {
42
+ context = [context];
43
+ }
44
+ try {
45
+ // Validate issuer and subject DIDs in parallel only for authorize
46
+ // For attest, accredit they are validated in verify_accreditation
47
+ const [issuerDidRes, subjectDidRes] = await Promise.all([
48
+ identityServiceStrategySetup.agent.resolveDid(issuerDid),
49
+ identityServiceStrategySetup.agent.resolveDid(subjectDid),
50
+ ]);
51
+ // Validate issuer DID
52
+ if (!issuerDidRes?.didDocument) {
53
+ return {
54
+ success: false,
55
+ status: StatusCodes.BAD_REQUEST,
56
+ error: `DID ${issuerDid} is not resolved because of error from resolver: ${issuerDidRes.didResolutionMetadata.error}.`,
57
+ };
58
+ }
59
+ if (issuerDidRes.didDocumentMetadata.deactivated) {
60
+ return {
61
+ success: false,
62
+ status: StatusCodes.BAD_REQUEST,
63
+ error: `${issuerDid} is deactivated`,
64
+ };
65
+ }
66
+ // Validate subject DID
67
+ if (!subjectDidRes?.didDocument) {
68
+ return {
69
+ success: false,
70
+ status: StatusCodes.BAD_REQUEST,
71
+ error: `DID ${subjectDid} is not resolved because of error from resolver: ${subjectDidRes.didResolutionMetadata.error}.`,
72
+ };
73
+ }
74
+ if (subjectDidRes.didDocumentMetadata.deactivated) {
75
+ return {
76
+ success: false,
77
+ status: StatusCodes.BAD_REQUEST,
78
+ error: `${subjectDid} is deactivated`,
79
+ };
80
+ }
81
+ const resourceId = v4();
82
+ const accreditedFor = schemas.map(({ url, types }) => ({
83
+ schemaId: url,
84
+ types: Array.isArray(types) ? types : [types],
85
+ }));
86
+ // construct credential request
87
+ const credentialRequest = {
88
+ subjectDid,
89
+ attributes: {
90
+ ...attributes,
91
+ accreditedFor,
92
+ id: subjectDid,
93
+ },
94
+ issuerDid,
95
+ format: format || 'jwt',
96
+ connector: CredentialConnectors.Resource,
97
+ credentialId: resourceId,
98
+ credentialName: accreditationName,
99
+ credentialStatus,
100
+ category: CredentialCategory.ACCREDITATION,
101
+ };
102
+ let resourceType;
103
+ switch (accreditationType) {
104
+ case AccreditationRequestType.authorize:
105
+ resourceType = DIDAccreditationTypes.VerifiableAuthorizationForTrustChain;
106
+ credentialRequest.type = [...(type || []), resourceType];
107
+ credentialRequest.termsOfUse = {
108
+ type: DIDAccreditationPolicyTypes.Authorize,
109
+ trustFramework,
110
+ trustFrameworkId,
111
+ };
112
+ break;
113
+ case AccreditationRequestType.accredit:
114
+ resourceType = DIDAccreditationTypes.VerifiableAccreditationToAccredit;
115
+ credentialRequest.type = [...(type || []), resourceType];
116
+ credentialRequest.termsOfUse = {
117
+ type: DIDAccreditationPolicyTypes.Accredit,
118
+ parentAccreditation,
119
+ rootAuthorization,
120
+ };
121
+ break;
122
+ case AccreditationRequestType.attest:
123
+ resourceType = DIDAccreditationTypes.VerifiableAccreditationToAttest;
124
+ credentialRequest.type = [...(type || []), resourceType];
125
+ credentialRequest.termsOfUse = {
126
+ type: DIDAccreditationPolicyTypes.Accredit,
127
+ parentAccreditation,
128
+ rootAuthorization,
129
+ };
130
+ break;
131
+ }
132
+ // validate parent and root accreditations
133
+ if (accreditationType === AccreditationRequestType.accredit ||
134
+ accreditationType === AccreditationRequestType.attest) {
135
+ const result = await this.verify_accreditation(issuerDid, parentAccreditation, accreditedFor, true, false, customer, rootAuthorization);
136
+ if (result.success === false) {
137
+ return {
138
+ success: false,
139
+ status: result.status,
140
+ error: `Invalid Request: Root Authorization or parent Accreditation is not valid: ${result.error}`,
141
+ };
142
+ }
143
+ }
144
+ // issue accreditation
145
+ const accreditation = await Credentials.instance.issue_credential(credentialRequest, customer);
146
+ return {
147
+ success: true,
148
+ status: StatusCodes.OK,
149
+ data: {
150
+ didUrls: [
151
+ `${issuerDid}/resources/${resourceId}`,
152
+ `${issuerDid}?resourceName=${encodeURIComponent(accreditationName)}&resourceType=${resourceType}`,
153
+ ],
154
+ accreditation,
155
+ },
156
+ };
157
+ }
158
+ catch (error) {
159
+ return {
160
+ success: false,
161
+ status: StatusCodes.INTERNAL_SERVER_ERROR,
162
+ error: `Internal error: ${error?.message || error}`,
163
+ };
164
+ }
165
+ }
166
+ async revoke_accreditation(didUrl, publish, symmetricKey, customer) {
167
+ const identityServiceStrategySetup = new IdentityServiceStrategySetup(customer.customerId);
168
+ try {
169
+ const res = await identityServiceStrategySetup.agent.resolve(didUrl);
170
+ const resource = await res.json();
171
+ if (resource.dereferencingMetadata) {
172
+ return {
173
+ success: false,
174
+ status: StatusCodes.NOT_FOUND,
175
+ error: `DID URL ${didUrl} is not found`,
176
+ };
177
+ }
178
+ const accreditation = resource;
179
+ const result = await identityServiceStrategySetup.agent.revokeCredentials(accreditation, StatusListType.Bitstring, publish, customer, symmetricKey);
180
+ return {
181
+ success: true,
182
+ status: StatusCodes.OK,
183
+ data: result,
184
+ };
185
+ }
186
+ catch (error) {
187
+ return {
188
+ success: false,
189
+ status: StatusCodes.INTERNAL_SERVER_ERROR,
190
+ error: `Internal error: ${error?.message || error}`,
191
+ };
192
+ }
193
+ }
194
+ async suspend_accreditation(didUrl, publish, symmetricKey, customer) {
195
+ const identityServiceStrategySetup = new IdentityServiceStrategySetup(customer.customerId);
196
+ try {
197
+ const res = await identityServiceStrategySetup.agent.resolve(didUrl);
198
+ const resource = await res.json();
199
+ if (resource.dereferencingMetadata) {
200
+ return {
201
+ success: false,
202
+ status: StatusCodes.NOT_FOUND,
203
+ error: `DID URL ${didUrl} is not found`,
204
+ };
205
+ }
206
+ const accreditation = resource;
207
+ const result = await identityServiceStrategySetup.agent.suspendCredentials(accreditation, StatusListType.Bitstring, publish, customer, symmetricKey);
208
+ return {
209
+ success: true,
210
+ status: StatusCodes.OK,
211
+ data: result,
212
+ };
213
+ }
214
+ catch (error) {
215
+ return {
216
+ success: false,
217
+ status: StatusCodes.INTERNAL_SERVER_ERROR,
218
+ error: `Internal error: ${error?.message || error}`,
219
+ };
220
+ }
221
+ }
222
+ async reinstate_accreditation(didUrl, publish, symmetricKey, customer) {
223
+ const identityServiceStrategySetup = new IdentityServiceStrategySetup(customer.customerId);
224
+ try {
225
+ const res = await identityServiceStrategySetup.agent.resolve(didUrl);
226
+ const resource = await res.json();
227
+ if (resource.dereferencingMetadata) {
228
+ return {
229
+ success: false,
230
+ status: StatusCodes.NOT_FOUND,
231
+ error: `DID URL ${didUrl} is not found`,
232
+ };
233
+ }
234
+ const accreditation = resource;
235
+ const result = await identityServiceStrategySetup.agent.reinstateCredentials(accreditation, StatusListType.Bitstring, publish, customer, symmetricKey);
236
+ return {
237
+ success: true,
238
+ status: StatusCodes.OK,
239
+ data: result,
240
+ };
241
+ }
242
+ catch (error) {
243
+ return {
244
+ success: false,
245
+ status: StatusCodes.INTERNAL_SERVER_ERROR,
246
+ error: `Internal error: ${error?.message || error}`,
247
+ };
248
+ }
249
+ }
7
250
  async verify_accreditation(subjectDid, didUrl, accreditedFor = [], verifyStatus, allowDeactivatedDid, customer, rootAuthorization, policies) {
8
251
  // Get strategy e.g. postgres or local
9
252
  const identityServiceStrategySetup = new IdentityServiceStrategySetup();
10
253
  let accreditationUrl = didUrl;
11
254
  let accreditedSubject = subjectDid;
12
255
  let initialVerifyResult = undefined;
256
+ let accreditorDids = [];
257
+ let deactivatedDidsCheckPromises = [];
13
258
  while (true) {
14
- const res = await identityServiceStrategySetup.agent.resolve(accreditationUrl);
15
- const result = await res.json();
259
+ const cacheKey = buildCacheKey(accreditationUrl, customer?.customerId);
260
+ const cached = getCachedAccreditation(cacheKey);
261
+ let result;
262
+ if (cached) {
263
+ result = cached;
264
+ }
265
+ else {
266
+ const res = await identityServiceStrategySetup.agent.resolve(accreditationUrl);
267
+ result = await res.json();
268
+ // Cache successful dereferenced results (skip caching not-found / dereferencing metadata)
269
+ if (!result?.dereferencingMetadata) {
270
+ setCachedAccreditation(cacheKey, result);
271
+ }
272
+ }
16
273
  if (result.dereferencingMetadata) {
17
274
  return {
18
275
  success: false,
@@ -23,14 +280,10 @@ export class AccreditationService {
23
280
  }
24
281
  // Create credential object
25
282
  const accreditation = result;
26
- if (!allowDeactivatedDid &&
27
- (await isCredentialIssuerDidDeactivated(accreditation))) {
28
- return {
29
- success: false,
30
- status: StatusCodes.BAD_REQUEST,
31
- data: initialVerifyResult,
32
- error: `Error on verifying accreditation ${accreditationUrl}: Issuer DID is deactivated`,
33
- };
283
+ const accreditorDid = typeof accreditation.issuer === 'string' ? accreditation.issuer : accreditation.issuer.id;
284
+ // Check if issuer DID is deactivated
285
+ if (!allowDeactivatedDid) {
286
+ deactivatedDidsCheckPromises.push(isCredentialIssuerDidDeactivated(accreditation));
34
287
  }
35
288
  // Check if the accreditation is provided for the subjectDid
36
289
  if (accreditation.credentialSubject.id !== accreditedSubject) {
@@ -41,9 +294,6 @@ export class AccreditationService {
41
294
  error: `Error on verifying accreditation ${accreditationUrl}: Expected accreditation to be linked to subject DID ${accreditedSubject}, but found it linked to DID ${accreditation.credentialSubject.id} instead.`,
42
295
  };
43
296
  }
44
- if (verifyStatus && !accreditation.credentialStatus) {
45
- verifyStatus = false;
46
- }
47
297
  // Check if the accreditor has permission for the schema provided
48
298
  if (!accreditedFor.every((schema) => accreditation.credentialSubject.accreditedFor.some((accredited) => schema.types.every((value) => (accredited.types || []).includes(value)) &&
49
299
  accredited.schemaId === schema.schemaId))) {
@@ -69,6 +319,14 @@ export class AccreditationService {
69
319
  error: `Error on verifying accreditation ${accreditationUrl}: ${verifyResult.error.message}`,
70
320
  };
71
321
  }
322
+ if (verifyStatus && verifyResult.valid === false) {
323
+ return {
324
+ success: false,
325
+ status: StatusCodes.OK,
326
+ data: initialVerifyResult,
327
+ error: `Error on verifying accreditation ${accreditationUrl}: ${accreditorDid} is ${verifyResult.message} in the trust chain`,
328
+ };
329
+ }
72
330
  if (!Array.isArray(accreditation.type)) {
73
331
  return {
74
332
  success: false,
@@ -98,7 +356,9 @@ export class AccreditationService {
98
356
  error: `Error on verifying accreditation ${accreditationUrl}: Missing parentAccreditaiton and rootAuthorization in termsOfUse for accreditation: ${accreditationUrl}`,
99
357
  };
100
358
  }
101
- const accreditorDid = typeof accreditation.issuer === 'string' ? accreditation.issuer : accreditation.issuer.id;
359
+ if (isTypeAccreditation === DIDAccreditationTypes.VerifiableAccreditationToAccredit) {
360
+ accreditorDids.push(accreditorDid);
361
+ }
102
362
  accreditationUrl = termsOfUse.parentAccreditation;
103
363
  accreditedSubject = accreditorDid;
104
364
  accreditedFor = accreditation.credentialSubject.accreditedFor;
@@ -113,13 +373,176 @@ export class AccreditationService {
113
373
  rootAuthorization = termsOfUse.rootAuthorization;
114
374
  }
115
375
  else {
376
+ const results = await Promise.all(deactivatedDidsCheckPromises);
377
+ const deactivatedDids = results.filter((r) => r);
378
+ if (rootAuthorization && parseDidFromDidUrl(rootAuthorization) !== accreditation.credentialSubject.id) {
379
+ return {
380
+ status: StatusCodes.OK,
381
+ success: false,
382
+ data: {
383
+ ...initialVerifyResult,
384
+ accreditorDids,
385
+ rootAuthorization: accreditation.credentialSubject.id,
386
+ termsOfUse: accreditation.termsOfUse,
387
+ },
388
+ error: `Error on verifying accreditation ${accreditationUrl}: Expected accreditation to be linked to root accreditation ${rootAuthorization}, but found it linked to DID ${accreditation.credentialSubject.id} instead`,
389
+ };
390
+ }
391
+ if (deactivatedDids.length > 0) {
392
+ return {
393
+ status: StatusCodes.OK,
394
+ success: false,
395
+ data: initialVerifyResult,
396
+ error: `Error on verifying accreditation ${accreditationUrl}: DIDs ${deactivatedDids.join(', ')} are deactivated in the trust chain`,
397
+ };
398
+ }
116
399
  return {
117
400
  status: StatusCodes.OK,
118
401
  success: true,
119
- data: initialVerifyResult,
402
+ data: {
403
+ ...initialVerifyResult,
404
+ accreditorDids,
405
+ rootAuthorization: accreditation.credentialSubject.id,
406
+ termsOfUse: accreditation.termsOfUse,
407
+ },
120
408
  };
121
409
  }
122
410
  }
123
411
  }
412
+ async list_accreditations(customer, accreditationType, network, did, page, limit) {
413
+ const identityServiceStrategySetup = new IdentityServiceStrategySetup(customer.customerId);
414
+ let resourceType;
415
+ switch (accreditationType) {
416
+ case AccreditationRequestType.authorize:
417
+ resourceType = DIDAccreditationTypes.VerifiableAuthorizationForTrustChain;
418
+ break;
419
+ case AccreditationRequestType.accredit:
420
+ resourceType = DIDAccreditationTypes.VerifiableAccreditationToAccredit;
421
+ break;
422
+ case AccreditationRequestType.attest:
423
+ resourceType = DIDAccreditationTypes.VerifiableAccreditationToAttest;
424
+ break;
425
+ default:
426
+ return {
427
+ success: false,
428
+ status: StatusCodes.BAD_REQUEST,
429
+ error: `Invalid accreditationType: ${accreditationType}. Must be one of: authorize, accredit, attest.`,
430
+ };
431
+ }
432
+ try {
433
+ // Fetch resources of accreditation resourceType associated with the account
434
+ const { resources } = await identityServiceStrategySetup.agent.findLatestResourcesVersionsByType(resourceType, customer, network, did, page, limit);
435
+ // Build resource URLs for resolution
436
+ const resourceUrls = resources.map((item) => `${item.did}/resources/${item.resourceId}`);
437
+ // No resources to resolve, return early
438
+ if (resourceUrls.length === 0) {
439
+ return {
440
+ success: true,
441
+ status: StatusCodes.OK,
442
+ data: {
443
+ total: 0,
444
+ accreditations: [],
445
+ },
446
+ };
447
+ }
448
+ // 1. Fetch all tracking records from the issued credentials table
449
+ const { credentials: trackingRecords } = await Credentials.instance.list(customer, {
450
+ category: CredentialCategory.ACCREDITATION,
451
+ providerCredentialId: resources.map((item) => item.resourceId),
452
+ });
453
+ // 2. OPTIMIZATION: Create a Map for O(1) tracking record lookup by providerCredentialId
454
+ const trackingMap = new Map();
455
+ for (const record of trackingRecords) {
456
+ trackingMap.set(record.providerCredentialId, record);
457
+ }
458
+ const resolveAccreditationWithCache = async (url) => {
459
+ const cacheKey = buildCacheKey(url, customer?.customerId);
460
+ const cached = getCachedAccreditation(cacheKey);
461
+ if (cached) {
462
+ return cached;
463
+ }
464
+ const inFlight = inFlightAccreditations.get(cacheKey);
465
+ if (inFlight) {
466
+ return inFlight;
467
+ }
468
+ const resolverPromise = (async () => {
469
+ try {
470
+ const res = await identityServiceStrategySetup.agent.resolve(url, true);
471
+ const credential = await res.json();
472
+ // Skip if the credential doesn't have contentStream
473
+ if (!credential.contentStream) {
474
+ return null;
475
+ }
476
+ const resourceId = credential.contentMetadata.resourceId;
477
+ const trackingRecord = trackingMap.get(resourceId);
478
+ if (trackingRecord) {
479
+ const { issuedCredentialId, providerId, providerCredentialId, status, statusUpdatedAt } = trackingRecord;
480
+ // Merge tracking metadata with credential
481
+ const accreditation = {
482
+ ...credential.contentStream,
483
+ metadata: {
484
+ issuedCredentialId,
485
+ providerId,
486
+ providerCredentialId,
487
+ status,
488
+ statusUpdatedAt,
489
+ },
490
+ };
491
+ setCachedAccreditation(cacheKey, accreditation);
492
+ return accreditation;
493
+ }
494
+ else {
495
+ // No tracking record, return just the credential (legacy)
496
+ setCachedAccreditation(cacheKey, credential.contentStream);
497
+ return credential.contentStream;
498
+ }
499
+ }
500
+ catch (error) {
501
+ console.error(`Failed to process accreditation for URL: ${url}`, error);
502
+ return null;
503
+ }
504
+ finally {
505
+ inFlightAccreditations.delete(cacheKey);
506
+ }
507
+ })();
508
+ inFlightAccreditations.set(cacheKey, resolverPromise);
509
+ return resolverPromise;
510
+ };
511
+ // 3. Resolve resources and enhance with tracking metadata with bounded concurrency
512
+ const resolvedAccreditations = new Array(resourceUrls.length);
513
+ let currentIndex = 0;
514
+ const workers = Array.from({ length: Math.min(ACCREDITATION_RESOLVE_CONCURRENCY, resourceUrls.length) }, async () => {
515
+ // eslint-disable-next-line no-constant-condition
516
+ while (true) {
517
+ const index = currentIndex++;
518
+ if (index >= resourceUrls.length) {
519
+ break;
520
+ }
521
+ const accreditation = await resolveAccreditationWithCache(resourceUrls[index]);
522
+ if (accreditation) {
523
+ resolvedAccreditations[index] = accreditation;
524
+ }
525
+ }
526
+ });
527
+ // 4. Wait for all resolutions to complete and filter out any failed/skipped ones (null)
528
+ await Promise.all(workers);
529
+ const accreditations = resolvedAccreditations.filter(Boolean);
530
+ return {
531
+ success: true,
532
+ status: StatusCodes.OK,
533
+ data: {
534
+ total: accreditations.length,
535
+ accreditations: accreditations,
536
+ },
537
+ };
538
+ }
539
+ catch (error) {
540
+ return {
541
+ success: false,
542
+ status: StatusCodes.INTERNAL_SERVER_ERROR,
543
+ error: `Internal error: ${error?.message || error}`,
544
+ };
545
+ }
546
+ }
124
547
  }
125
548
  //# sourceMappingURL=accreditation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accreditation.js","sourceRoot":"","sources":["../../../src/services/api/accreditation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accreditation.js","sourceRoot":"","sources":["../../../src/services/api/accreditation.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import type { VerifiableCredential } from '@veramo/core';
1
+ import type { IVerifyResult, VerifiableCredential } from '@veramo/core';
2
2
  import { GetIssuedCredentialOptions, IssuedCredentialCreateOptions, IssuedCredentialResponse, ListCredentialRequestOptions, type CredentialRequest } from '../../types/credential.js';
3
3
  import type { CustomerEntity } from '../../database/entities/customer.entity.js';
4
4
  import { IssuedCredentialEntity } from '../../database/entities/issued-credential.entity.js';
5
5
  import { Repository } from 'typeorm';
6
6
  import { StatusRegistryEntity } from '../../database/entities/status-registry.entity.js';
7
+ import { VerificationOptions } from '../../types/shared.js';
7
8
  export declare class Credentials {
8
9
  static instance: Credentials;
9
10
  repository: Repository<IssuedCredentialEntity>;
@@ -55,5 +56,7 @@ export declare class Credentials {
55
56
  * Fetch full credential from provider
56
57
  */
57
58
  private fetchCredentialFromProvider;
59
+ verify_credential(credential: VerifiableCredential | string, verificationOptions: VerificationOptions, customer: CustomerEntity): Promise<IVerifyResult>;
60
+ count(customer: CustomerEntity, where: Record<string, unknown>): Promise<number>;
58
61
  }
59
62
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../src/services/api/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAGN,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,EACxB,4BAA4B,EAC5B,KAAK,iBAAiB,EACtB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAIjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAsBzF,qBAAa,WAAW;IACvB,OAAc,QAAQ,cAAqB;IACpC,UAAU,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAC/C,wBAAwB,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC;;IAO5D,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiO3G;;;;OAIG;YACW,kBAAkB;IA6IhC;;OAEG;IACG,IAAI,CACT,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,4BAAiC,GACxC,OAAO,CAAC;QAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA4DtE;;OAEG;IACG,GAAG,CACR,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,0BAA+B,GACtC,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAiE3C;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmC/G;;OAEG;IACG,YAAY,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1G;;OAEG;IACG,MAAM,CACX,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,EACjG,QAAQ,EAAE,cAAc,GACtB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAgD3C;;OAEG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAkBzF;;OAEG;IACH,OAAO,CAAC,UAAU;IAyClB;;OAEG;YACW,sBAAsB;IA2EpC;;OAEG;YACW,2BAA2B;CAmCzC"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../src/services/api/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAGN,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,EACxB,4BAA4B,EAC5B,KAAK,iBAAiB,EACtB,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAKjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAiBzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D,qBAAa,WAAW;IACvB,OAAc,QAAQ,cAAqB;IACpC,UAAU,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAC/C,wBAAwB,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC;;IAO5D,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiO3G;;;;OAIG;YACW,kBAAkB;IA6IhC;;OAEG;IACG,IAAI,CACT,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,4BAAiC,GACxC,OAAO,CAAC;QAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkEtE;;OAEG;IACG,GAAG,CACR,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,0BAA+B,GACtC,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAiE3C;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmC/G;;OAEG;IACG,YAAY,CAAC,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1G;;OAEG;IACG,MAAM,CACX,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,EACjG,QAAQ,EAAE,cAAc,GACtB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAgD3C;;OAEG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAkBzF;;OAEG;IACH,OAAO,CAAC,UAAU;IAyClB;;OAEG;YACW,sBAAsB;IA2EpC;;OAEG;YACW,2BAA2B;IAoCnC,iBAAiB,CACtB,UAAU,EAAE,oBAAoB,GAAG,MAAM,EACzC,mBAAmB,EAAE,mBAAmB,EACxC,QAAQ,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC;IAoDZ,KAAK,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQ3E"}