@learncard/credential-library 2.0.3 → 2.0.5

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 (74) hide show
  1. package/README.md +2 -1
  2. package/dist/bundles/index.d.ts +5 -0
  3. package/dist/bundles/index.d.ts.map +1 -0
  4. package/dist/bundles/student.d.ts +3 -0
  5. package/dist/bundles/student.d.ts.map +1 -0
  6. package/dist/bundles/types.d.ts +24 -0
  7. package/dist/bundles/types.d.ts.map +1 -0
  8. package/dist/credential-library.cjs.development.js +10865 -611
  9. package/dist/credential-library.cjs.development.js.map +4 -4
  10. package/dist/credential-library.cjs.production.min.js +11 -1
  11. package/dist/credential-library.cjs.production.min.js.map +4 -4
  12. package/dist/credential-library.esm.js +10854 -598
  13. package/dist/credential-library.esm.js.map +4 -4
  14. package/dist/fixtures/clr/achievement-id-associations.d.ts +3 -0
  15. package/dist/fixtures/clr/achievement-id-associations.d.ts.map +1 -0
  16. package/dist/fixtures/clr/employment-record.d.ts +8 -0
  17. package/dist/fixtures/clr/employment-record.d.ts.map +1 -0
  18. package/dist/fixtures/clr/licensing-regulatory-record.d.ts +8 -0
  19. package/dist/fixtures/clr/licensing-regulatory-record.d.ts.map +1 -0
  20. package/dist/fixtures/clr/military-training-record.d.ts +8 -0
  21. package/dist/fixtures/clr/military-training-record.d.ts.map +1 -0
  22. package/dist/fixtures/clr/mixed-career-record.d.ts +8 -0
  23. package/dist/fixtures/clr/mixed-career-record.d.ts.map +1 -0
  24. package/dist/fixtures/clr/professional-organization-record.d.ts +8 -0
  25. package/dist/fixtures/clr/professional-organization-record.d.ts.map +1 -0
  26. package/dist/fixtures/clr/provisional-transcript.d.ts +7 -1
  27. package/dist/fixtures/clr/provisional-transcript.d.ts.map +1 -1
  28. package/dist/fixtures/clr/student-official-academic-transcript.d.ts +3 -0
  29. package/dist/fixtures/clr/student-official-academic-transcript.d.ts.map +1 -0
  30. package/dist/fixtures/clr/training-provider-record.d.ts +8 -0
  31. package/dist/fixtures/clr/training-provider-record.d.ts.map +1 -0
  32. package/dist/fixtures/index.d.ts +12 -1
  33. package/dist/fixtures/index.d.ts.map +1 -1
  34. package/dist/fixtures/obv3/rubric-aligned-badge.d.ts +3 -0
  35. package/dist/fixtures/obv3/rubric-aligned-badge.d.ts.map +1 -0
  36. package/dist/fixtures/obv3/student-additional-credentials.d.ts +3 -0
  37. package/dist/fixtures/obv3/student-additional-credentials.d.ts.map +1 -0
  38. package/dist/fixtures/obv3/student-sample-badges.d.ts +586 -0
  39. package/dist/fixtures/obv3/student-sample-badges.d.ts.map +1 -0
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/prepare.d.ts +0 -18
  43. package/dist/prepare.d.ts.map +1 -1
  44. package/package.json +6 -6
  45. package/src/__tests__/bundles.test.ts +234 -0
  46. package/src/__tests__/clr-non-academic.test.ts +220 -0
  47. package/src/__tests__/registry.test.ts +74 -0
  48. package/src/bundles/index.ts +19 -0
  49. package/src/bundles/student.ts +251 -0
  50. package/src/bundles/types.ts +25 -0
  51. package/src/fixtures/clr/README.md +142 -0
  52. package/src/fixtures/clr/achievement-id-associations.ts +342 -0
  53. package/src/fixtures/clr/employment-record.ts +487 -0
  54. package/src/fixtures/clr/licensing-regulatory-record.ts +388 -0
  55. package/src/fixtures/clr/military-training-record.ts +468 -0
  56. package/src/fixtures/clr/mixed-career-record.ts +814 -0
  57. package/src/fixtures/clr/professional-organization-record.ts +403 -0
  58. package/src/fixtures/clr/provisional-transcript.ts +16 -3
  59. package/src/fixtures/clr/student-official-academic-transcript.ts +3202 -0
  60. package/src/fixtures/clr/training-provider-record.ts +510 -0
  61. package/src/fixtures/index.ts +44 -0
  62. package/src/fixtures/obv3/rubric-aligned-badge.ts +105 -0
  63. package/src/fixtures/obv3/student-additional-credentials.ts +3912 -0
  64. package/src/fixtures/obv3/student-sample-badges.ts +424 -0
  65. package/src/index.ts +2 -0
  66. package/src/prepare.ts +70 -11
  67. package/dist/__tests__/docs-json.test.d.ts +0 -2
  68. package/dist/__tests__/docs-json.test.d.ts.map +0 -1
  69. package/dist/__tests__/issuance.test.d.ts +0 -2
  70. package/dist/__tests__/issuance.test.d.ts.map +0 -1
  71. package/dist/__tests__/registry.test.d.ts +0 -2
  72. package/dist/__tests__/registry.test.d.ts.map +0 -1
  73. package/dist/__tests__/sd-jwt-vc.test.d.ts +0 -2
  74. package/dist/__tests__/sd-jwt-vc.test.d.ts.map +0 -1
@@ -0,0 +1,403 @@
1
+ import type { CredentialFixture } from '../../types';
2
+
3
+ /**
4
+ * LC-2184: synthetic, unsigned CLR display/issuance template.
5
+ * Both the outer record and embedded achievements intentionally have no proof.
6
+ * Sign/rebind children before the outer CLR for cryptographic verification tests.
7
+ */
8
+ export const clrProfessionalOrganizationRecord: CredentialFixture = {
9
+ id: 'clr/professional-organization-record',
10
+ name: 'Membership & Development — Society of Applied Practice',
11
+ description:
12
+ 'Explores membership admission and identifiers, a membership period, volunteer roles, and independently issued professional-development evidence. Unsigned display/issuance template; child proofs must be issued separately for a fully verifiable CLR.',
13
+ spec: 'clr-v2',
14
+ profile: 'learner-record',
15
+ features: [
16
+ 'nested-credentials',
17
+ 'associations',
18
+ 'results',
19
+ 'evidence',
20
+ 'alignment',
21
+ 'source',
22
+ 'expiration',
23
+ ],
24
+ source: 'synthetic',
25
+ signed: false,
26
+ validity: 'valid',
27
+ tags: [
28
+ 'lc-2184',
29
+ 'non-academic',
30
+ 'synthetic',
31
+ 'professional-organization',
32
+ 'membership',
33
+ 'community-service',
34
+ 'professional-development',
35
+ 'multi-issuer',
36
+ ],
37
+ credential: {
38
+ '@context': [
39
+ 'https://www.w3.org/ns/credentials/v2',
40
+ 'https://purl.imsglobal.org/spec/clr/v2p0/context.json',
41
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
42
+ {
43
+ partial: {
44
+ '@id': 'https://purl.imsglobal.org/spec/vc/clr/vocab.html#partial',
45
+ '@type': 'http://www.w3.org/2001/XMLSchema#boolean',
46
+ },
47
+ identifier: {
48
+ '@id': 'https://purl.imsglobal.org/spec/vc/ob/vocab.html#identifier',
49
+ '@container': '@set',
50
+ },
51
+ },
52
+ ],
53
+ id: 'urn:uuid:d9547bd5-c1ed-5049-847a-24fa830bdfee',
54
+ type: ['VerifiableCredential', 'ClrCredential'],
55
+ name: 'Membership & Development — Society of Applied Practice',
56
+ description:
57
+ 'Synthetic demonstration record as of September 1, 2026. Explores membership admission and identifiers, a membership period, volunteer roles, and independently issued professional-development evidence.',
58
+ issuer: {
59
+ id: 'did:example:lc2184-practice-guild',
60
+ type: ['Profile'],
61
+ name: 'Society of Applied Practice (Fictional)',
62
+ url: 'https://practice-guild.example',
63
+ description: 'Fictional organization used only for LearnCard display tests.',
64
+ },
65
+ validFrom: '2026-09-01T12:00:00Z',
66
+ partial: true,
67
+ credentialSubject: {
68
+ id: 'did:example:lc2184-alex-morgan',
69
+ type: ['ClrSubject'],
70
+ identifier: [
71
+ {
72
+ type: 'IdentityObject',
73
+ hashed: false,
74
+ identityType: 'name',
75
+ identityHash: 'Alex Morgan (Synthetic)',
76
+ },
77
+ ],
78
+ verifiableCredential: [
79
+ {
80
+ '@context': [
81
+ 'https://www.w3.org/ns/credentials/v2',
82
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
83
+ ],
84
+ id: 'urn:uuid:6d5e9cdf-41a6-5223-abff-faceaad2f29f',
85
+ type: ['VerifiableCredential', 'AchievementCredential'],
86
+ name: 'Professional Society Membership',
87
+ description:
88
+ 'Admission to a fictional professional organization for a stated period.',
89
+ issuer: {
90
+ id: 'did:example:lc2184-practice-guild',
91
+ type: ['Profile'],
92
+ name: 'Society of Applied Practice (Fictional)',
93
+ url: 'https://practice-guild.example',
94
+ description:
95
+ 'Fictional organization used only for LearnCard display tests.',
96
+ },
97
+ validFrom: '2026-01-01T00:00:00Z',
98
+ credentialSubject: {
99
+ id: 'did:example:lc2184-alex-morgan',
100
+ type: ['AchievementSubject'],
101
+ achievement: {
102
+ id: 'urn:uuid:6ad7f99b-7d9d-59a8-a207-825d1d2bf57e',
103
+ type: ['Achievement'],
104
+ achievementType: 'Membership',
105
+ name: 'Professional Society Membership',
106
+ description:
107
+ 'Admission to a fictional professional organization for a stated period.',
108
+ criteria: {
109
+ narrative:
110
+ 'Meet the society membership criteria and receive an admission decision.',
111
+ },
112
+ creator: {
113
+ id: 'did:example:lc2184-practice-guild',
114
+ type: ['Profile'],
115
+ name: 'Society of Applied Practice (Fictional)',
116
+ url: 'https://practice-guild.example',
117
+ description:
118
+ 'Fictional organization used only for LearnCard display tests.',
119
+ },
120
+ humanCode: 'SYN-PROFESSIONAL-MEMBERSHIP',
121
+ version: '1.0',
122
+ inLanguage: 'en',
123
+ tag: ['synthetic', 'lc-2184'],
124
+ resultDescription: [
125
+ {
126
+ id: 'urn:uuid:ea631e7d-ca45-58ab-85e6-f96da00fa43c',
127
+ type: ['ResultDescription'],
128
+ name: 'Membership admission',
129
+ resultType: 'Status',
130
+ },
131
+ ],
132
+ alignment: [
133
+ {
134
+ type: ['Alignment'],
135
+ targetName: 'Professional practice participation',
136
+ targetCode: 'PRO-101',
137
+ targetFramework: 'Synthetic Workplace Capability Framework',
138
+ targetUrl: 'https://skills.example/framework/pro-101',
139
+ targetDescription:
140
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
141
+ targetType: 'CFItem',
142
+ },
143
+ ],
144
+ },
145
+ activityStartDate: '2026-01-01T00:00:00Z',
146
+ activityEndDate: '2026-12-31T23:59:59Z',
147
+ role: 'Professional Member',
148
+ source: {
149
+ id: 'did:example:lc2184-practice-guild',
150
+ type: ['Profile'],
151
+ name: 'Society of Applied Practice (Fictional)',
152
+ url: 'https://practice-guild.example',
153
+ description:
154
+ 'Fictional organization used only for LearnCard display tests.',
155
+ },
156
+ identifier: [
157
+ {
158
+ type: 'IdentityObject',
159
+ hashed: false,
160
+ identityType: 'ext:membershipId',
161
+ identityHash: 'SYN-MEM-2184-001',
162
+ },
163
+ ],
164
+ result: [
165
+ {
166
+ type: ['Result'],
167
+ resultDescription: 'urn:uuid:ea631e7d-ca45-58ab-85e6-f96da00fa43c',
168
+ status: 'Completed',
169
+ },
170
+ ],
171
+ },
172
+ awardedDate: '2026-01-01T00:00:00Z',
173
+ validUntil: '2026-12-31T23:59:59Z',
174
+ evidence: [
175
+ {
176
+ type: ['Evidence'],
177
+ name: 'Admission record',
178
+ description: 'Synthetic assessment evidence.',
179
+ narrative:
180
+ 'Membership SYN-MEM-2184-001 covers calendar year 2026; admission is not a professional license.',
181
+ genre: 'Assessment record',
182
+ audience: 'Learner and authorized reviewer',
183
+ },
184
+ ],
185
+ },
186
+ {
187
+ '@context': [
188
+ 'https://www.w3.org/ns/credentials/v2',
189
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
190
+ ],
191
+ id: 'urn:uuid:ec9e99e0-7f37-5bba-ab43-f7b121f6784f',
192
+ type: ['VerifiableCredential', 'AchievementCredential'],
193
+ name: 'Community Mentoring Contribution',
194
+ description:
195
+ 'A member contribution with a documented role and activity period.',
196
+ issuer: {
197
+ id: 'did:example:lc2184-practice-guild',
198
+ type: ['Profile'],
199
+ name: 'Society of Applied Practice (Fictional)',
200
+ url: 'https://practice-guild.example',
201
+ description:
202
+ 'Fictional organization used only for LearnCard display tests.',
203
+ },
204
+ validFrom: '2026-07-03T12:00:00Z',
205
+ credentialSubject: {
206
+ id: 'did:example:lc2184-alex-morgan',
207
+ type: ['AchievementSubject'],
208
+ achievement: {
209
+ id: 'urn:uuid:0d94d9bc-0354-5f50-9644-c20495128c8a',
210
+ type: ['Achievement'],
211
+ achievementType: 'CommunityService',
212
+ name: 'Community Mentoring Contribution',
213
+ description:
214
+ 'A member contribution with a documented role and activity period.',
215
+ criteria: {
216
+ narrative: 'Complete the mentoring cycle and submit a reflection.',
217
+ },
218
+ creator: {
219
+ id: 'did:example:lc2184-practice-guild',
220
+ type: ['Profile'],
221
+ name: 'Society of Applied Practice (Fictional)',
222
+ url: 'https://practice-guild.example',
223
+ description:
224
+ 'Fictional organization used only for LearnCard display tests.',
225
+ },
226
+ humanCode: 'SYN-PROFESSIONAL-SERVICE',
227
+ version: '1.0',
228
+ inLanguage: 'en',
229
+ tag: ['synthetic', 'lc-2184'],
230
+ resultDescription: [
231
+ {
232
+ id: 'urn:uuid:1910a1a5-d975-5ec6-926c-5157faef1672',
233
+ type: ['ResultDescription'],
234
+ name: 'Service completion',
235
+ resultType: 'Status',
236
+ },
237
+ ],
238
+ alignment: [
239
+ {
240
+ type: ['Alignment'],
241
+ targetName: 'Facilitates peer development',
242
+ targetCode: 'MENTOR-101',
243
+ targetFramework: 'Synthetic Workplace Capability Framework',
244
+ targetUrl: 'https://skills.example/framework/mentor-101',
245
+ targetDescription:
246
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
247
+ targetType: 'CFItem',
248
+ },
249
+ ],
250
+ },
251
+ activityStartDate: '2026-02-01T09:00:00Z',
252
+ activityEndDate: '2026-06-30T17:00:00Z',
253
+ role: 'Volunteer Mentor',
254
+ narrative:
255
+ 'Supported a synthetic peer-learning cohort and organized four mentoring sessions.',
256
+ source: {
257
+ id: 'did:example:lc2184-practice-guild',
258
+ type: ['Profile'],
259
+ name: 'Society of Applied Practice (Fictional)',
260
+ url: 'https://practice-guild.example',
261
+ description:
262
+ 'Fictional organization used only for LearnCard display tests.',
263
+ },
264
+ result: [
265
+ {
266
+ type: ['Result'],
267
+ resultDescription: 'urn:uuid:1910a1a5-d975-5ec6-926c-5157faef1672',
268
+ status: 'Completed',
269
+ },
270
+ ],
271
+ },
272
+ awardedDate: '2026-07-03T12:00:00Z',
273
+ evidence: [
274
+ {
275
+ type: ['Evidence'],
276
+ name: 'Mentoring reflection',
277
+ description: 'Synthetic assessment evidence.',
278
+ narrative:
279
+ 'The member reflected on four peer-learning sessions without disclosing participants.',
280
+ genre: 'Assessment record',
281
+ audience: 'Learner and authorized reviewer',
282
+ },
283
+ ],
284
+ },
285
+ {
286
+ '@context': [
287
+ 'https://www.w3.org/ns/credentials/v2',
288
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json',
289
+ ],
290
+ id: 'urn:uuid:8c7b258d-3731-587c-8079-72b352edefe4',
291
+ type: ['VerifiableCredential', 'AchievementCredential'],
292
+ name: 'Responsible Practice Development Badge',
293
+ description:
294
+ 'A professional-development activity issued by a provider distinct from the society.',
295
+ issuer: {
296
+ id: 'did:example:lc2184-cedar-training',
297
+ type: ['Profile'],
298
+ name: 'Cedar Technical Training',
299
+ url: 'https://cedar-training.example',
300
+ description:
301
+ 'Fictional organization used only for LearnCard display tests.',
302
+ },
303
+ validFrom: '2026-05-04T12:00:00Z',
304
+ credentialSubject: {
305
+ id: 'did:example:lc2184-alex-morgan',
306
+ type: ['AchievementSubject'],
307
+ achievement: {
308
+ id: 'urn:uuid:34dbdf5a-f88a-5053-9dbd-9b7f0ffc82b2',
309
+ type: ['Achievement'],
310
+ achievementType: 'Badge',
311
+ name: 'Responsible Practice Development Badge',
312
+ description:
313
+ 'A professional-development activity issued by a provider distinct from the society.',
314
+ criteria: {
315
+ narrative:
316
+ 'Participate in at least eight hours of development activities and submit a reflection.',
317
+ },
318
+ creator: {
319
+ id: 'did:example:lc2184-practice-guild',
320
+ type: ['Profile'],
321
+ name: 'Society of Applied Practice (Fictional)',
322
+ url: 'https://practice-guild.example',
323
+ description:
324
+ 'Fictional organization used only for LearnCard display tests.',
325
+ },
326
+ humanCode: 'SYN-PROFESSIONAL-DEVELOPMENT',
327
+ version: '1.0',
328
+ inLanguage: 'en',
329
+ tag: ['synthetic', 'lc-2184'],
330
+ resultDescription: [
331
+ {
332
+ id: 'urn:uuid:5763e2dd-c18e-5070-ac4d-e06fbfeffcb7',
333
+ type: ['ResultDescription'],
334
+ name: 'Professional development participation (hours)',
335
+ resultType: 'RawScore',
336
+ valueMin: '0',
337
+ valueMax: '12',
338
+ requiredValue: '8',
339
+ },
340
+ ],
341
+ alignment: [
342
+ {
343
+ type: ['Alignment'],
344
+ targetName: 'Reflects on professional decisions',
345
+ targetCode: 'ETHICS-101',
346
+ targetFramework: 'Synthetic Workplace Capability Framework',
347
+ targetUrl: 'https://skills.example/framework/ethics-101',
348
+ targetDescription:
349
+ 'Fictional framework node for testing explicit alignment display; not a real qualification equivalence.',
350
+ targetType: 'CFItem',
351
+ },
352
+ ],
353
+ },
354
+ activityStartDate: '2026-04-01T09:00:00Z',
355
+ activityEndDate: '2026-04-30T17:00:00Z',
356
+ role: 'Participant',
357
+ source: {
358
+ id: 'did:example:lc2184-cedar-training',
359
+ type: ['Profile'],
360
+ name: 'Cedar Technical Training',
361
+ url: 'https://cedar-training.example',
362
+ description:
363
+ 'Fictional organization used only for LearnCard display tests.',
364
+ },
365
+ result: [
366
+ {
367
+ type: ['Result'],
368
+ resultDescription: 'urn:uuid:5763e2dd-c18e-5070-ac4d-e06fbfeffcb7',
369
+ value: '10',
370
+ },
371
+ ],
372
+ },
373
+ awardedDate: '2026-05-04T12:00:00Z',
374
+ evidence: [
375
+ {
376
+ type: ['Evidence'],
377
+ name: 'Professional development reflection',
378
+ description: 'Synthetic assessment evidence.',
379
+ narrative:
380
+ 'Ten participation hours were recorded. No conversion to CEUs or regulatory credit is asserted.',
381
+ genre: 'Assessment record',
382
+ audience: 'Learner and authorized reviewer',
383
+ },
384
+ ],
385
+ },
386
+ ],
387
+ association: [
388
+ {
389
+ type: ['Association'],
390
+ associationType: 'isRelatedTo',
391
+ sourceId: 'urn:uuid:6ad7f99b-7d9d-59a8-a207-825d1d2bf57e',
392
+ targetId: 'urn:uuid:0d94d9bc-0354-5f50-9644-c20495128c8a',
393
+ },
394
+ {
395
+ type: ['Association'],
396
+ associationType: 'isRelatedTo',
397
+ sourceId: 'urn:uuid:6ad7f99b-7d9d-59a8-a207-825d1d2bf57e',
398
+ targetId: 'urn:uuid:34dbdf5a-f88a-5053-9dbd-9b7f0ffc82b2',
399
+ },
400
+ ],
401
+ },
402
+ },
403
+ };
@@ -16,8 +16,14 @@ import type { CredentialFixture } from '../../types';
16
16
  * otherwise refuses to sign.
17
17
  */
18
18
 
19
- /** Inline JSON-LD context fragment defining the refresh-service terms inline. */
19
+ /**
20
+ * Inline JSON-LD context fragment for terms the published contexts leave undefined.
21
+ * `partial` is in the CLR v2 spec (https://www.imsglobal.org/spec/clr/v2p0/#clrcredential)
22
+ * but the live purl.imsglobal.org CLR context only maps five type names, so without this
23
+ * the signer's data-loss check drops it.
24
+ */
20
25
  export const REFRESH_SERVICE_INLINE_CONTEXT = {
26
+ partial: 'https://purl.imsglobal.org/spec/clr/v2p0#partial',
21
27
  'LearnCardCredentialRefresh2026':
22
28
  'https://learncard.com/refresh#LearnCardCredentialRefresh2026',
23
29
  authorization: {
@@ -71,6 +77,8 @@ export const clrProvisionalTranscript: CredentialFixture = {
71
77
  name: 'Ridgeview Community College — Office of the Registrar',
72
78
  },
73
79
  validFrom: '2026-01-15T00:00:00Z',
80
+ validUntil: '2026-05-31T00:00:00Z',
81
+ partial: true,
74
82
  refreshService: PLACEHOLDER_REFRESH_SERVICE,
75
83
  credentialSubject: {
76
84
  id: 'did:example:student-ridgeview-042',
@@ -92,7 +100,8 @@ export const clrProvisionalTranscript: CredentialFixture = {
92
100
  id: 'urn:uuid:7d2e9f41-3c58-4e21-9b6a-1f0c5d8e2a49',
93
101
  type: ['ResultDescription'],
94
102
  name: 'Course Status',
95
- resultType: 'RawScore',
103
+ resultType: 'Status',
104
+ allowedValue: ['InProgress', 'Provisional', 'Completed'],
96
105
  },
97
106
  ],
98
107
  },
@@ -163,6 +172,8 @@ export const buildFinalTranscriptVariant = (
163
172
  'Final official transcript certified by the registrar. Supersedes the provisional record.';
164
173
 
165
174
  if (options.validFrom) final.validFrom = options.validFrom;
175
+ delete final.validUntil;
176
+ delete final.partial;
166
177
 
167
178
  const subject = final.credentialSubject;
168
179
 
@@ -180,7 +191,9 @@ export const buildFinalTranscriptVariant = (
180
191
  next.credentialSubject = {
181
192
  ...next.credentialSubject,
182
193
  result: next.credentialSubject.result.map((result: unknown) =>
183
- isRecord(result) ? { ...result, status: 'Completed', value: 'A' } : result
194
+ isRecord(result)
195
+ ? { ...result, status: 'Completed', value: 'Completed' }
196
+ : result
184
197
  ),
185
198
  };
186
199
  }