@truvity/sdk 0.28.9 → 0.30.7

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 (142) hide show
  1. package/api/resources/apiKeys/client/Client.js +9 -9
  2. package/api/resources/apiKeys/client/Client.js.map +1 -1
  3. package/api/resources/credentials/client/Client.js +12 -12
  4. package/api/resources/credentials/client/Client.js.map +1 -1
  5. package/api/resources/desk/client/Client.js +2 -2
  6. package/api/resources/desk/client/Client.js.map +1 -1
  7. package/api/resources/didcommMessages/client/Client.js +9 -9
  8. package/api/resources/didcommMessages/client/Client.js.map +1 -1
  9. package/api/resources/dids/client/Client.js +1 -1
  10. package/api/resources/dids/client/Client.js.map +1 -1
  11. package/api/resources/drafts/client/Client.js +12 -12
  12. package/api/resources/drafts/client/Client.js.map +1 -1
  13. package/api/resources/files/client/Client.js +12 -12
  14. package/api/resources/files/client/Client.js.map +1 -1
  15. package/api/resources/gdpr/client/Client.js +1 -1
  16. package/api/resources/gdpr/client/Client.js.map +1 -1
  17. package/api/resources/keys/client/Client.js +13 -13
  18. package/api/resources/keys/client/Client.js.map +1 -1
  19. package/api/resources/presentations/client/Client.js +14 -14
  20. package/api/resources/presentations/client/Client.js.map +1 -1
  21. package/api/types/Credential.d.ts +1 -1
  22. package/api/types/Credential.d.ts.map +1 -1
  23. package/api/types/Credential.js.map +1 -1
  24. package/api/types/File_.d.ts +1 -1
  25. package/api/types/File_.d.ts.map +1 -1
  26. package/api/types/File_.js.map +1 -1
  27. package/api/types/Presentation.d.ts +1 -1
  28. package/api/types/Presentation.d.ts.map +1 -1
  29. package/api/types/Presentation.js.map +1 -1
  30. package/documents/credential/claims.d.ts +29 -0
  31. package/documents/credential/claims.d.ts.map +1 -0
  32. package/documents/credential/claims.js +228 -0
  33. package/documents/credential/claims.js.map +1 -0
  34. package/documents/credential/claims.spec.d.ts +2 -0
  35. package/documents/credential/claims.spec.d.ts.map +1 -0
  36. package/documents/credential/{document.spec.js → claims.spec.js} +77 -129
  37. package/documents/credential/claims.spec.js.map +1 -0
  38. package/documents/credential/document/vcdm.d.ts +50 -0
  39. package/documents/credential/document/vcdm.d.ts.map +1 -0
  40. package/documents/credential/document/vcdm.js +76 -0
  41. package/documents/credential/document/vcdm.js.map +1 -0
  42. package/documents/credential/document.d.ts +6 -24
  43. package/documents/credential/document.d.ts.map +1 -1
  44. package/documents/credential/document.js +15 -137
  45. package/documents/credential/document.js.map +1 -1
  46. package/documents/credential/draft.d.ts +7 -5
  47. package/documents/credential/draft.d.ts.map +1 -1
  48. package/documents/credential/draft.js +15 -14
  49. package/documents/credential/draft.js.map +1 -1
  50. package/documents/credential/flavor/vcdm1_1.d.ts +76 -0
  51. package/documents/credential/flavor/vcdm1_1.d.ts.map +1 -0
  52. package/documents/credential/flavor/vcdm1_1.js +148 -0
  53. package/documents/credential/flavor/vcdm1_1.js.map +1 -0
  54. package/documents/credential/flavor/vcdm2_0.d.ts +83 -0
  55. package/documents/credential/flavor/vcdm2_0.d.ts.map +1 -0
  56. package/documents/credential/flavor/vcdm2_0.js +76 -0
  57. package/documents/credential/flavor/vcdm2_0.js.map +1 -0
  58. package/documents/credential/flavor.d.ts +8 -32
  59. package/documents/credential/flavor.d.ts.map +1 -1
  60. package/documents/credential/flavor.js +22 -99
  61. package/documents/credential/flavor.js.map +1 -1
  62. package/documents/credential/flavor.spec.js +31 -102
  63. package/documents/credential/flavor.spec.js.map +1 -1
  64. package/documents/credential/testdata/udt.d.ts +53 -0
  65. package/documents/credential/testdata/udt.d.ts.map +1 -0
  66. package/documents/credential/testdata/udt.js +243 -0
  67. package/documents/credential/testdata/udt.js.map +1 -0
  68. package/documents/credential/types.d.ts +39 -0
  69. package/documents/credential/types.d.ts.map +1 -0
  70. package/documents/credential/types.js +3 -0
  71. package/documents/credential/types.js.map +1 -0
  72. package/documents/credential/unknown.d.ts +5 -5
  73. package/documents/credential/unknown.d.ts.map +1 -1
  74. package/documents/credential/unknown.js +3 -4
  75. package/documents/credential/unknown.js.map +1 -1
  76. package/documents/credential/unknown.spec.js +12 -9
  77. package/documents/credential/unknown.spec.js.map +1 -1
  78. package/documents/credential/{baseVerifiableCredential.d.ts → verifiable.d.ts} +8 -5
  79. package/documents/credential/verifiable.d.ts.map +1 -0
  80. package/documents/credential/{baseVerifiableCredential.js → verifiable.js} +11 -7
  81. package/documents/credential/verifiable.js.map +1 -0
  82. package/documents/credential/with-claims.d.ts +15 -0
  83. package/documents/credential/with-claims.d.ts.map +1 -0
  84. package/documents/credential/{issued.js → with-claims.js} +12 -12
  85. package/documents/credential/with-claims.js.map +1 -0
  86. package/documents/credential.d.ts +13 -15
  87. package/documents/credential.d.ts.map +1 -1
  88. package/documents/credential.js +21 -102
  89. package/documents/credential.js.map +1 -1
  90. package/documents/index.d.ts +1 -0
  91. package/documents/index.d.ts.map +1 -1
  92. package/documents/index.js +1 -0
  93. package/documents/index.js.map +1 -1
  94. package/documents/models.d.ts +13 -13
  95. package/documents/models.d.ts.map +1 -1
  96. package/documents/models.js +4 -4
  97. package/documents/models.js.map +1 -1
  98. package/documents/presentation/issued.d.ts +1 -1
  99. package/documents/presentation/issued.d.ts.map +1 -1
  100. package/documents/presentation/issued.js +2 -2
  101. package/documents/presentation/issued.js.map +1 -1
  102. package/documents/presentation.d.ts +5 -5
  103. package/documents/presentation.d.ts.map +1 -1
  104. package/documents/presentation.js +4 -4
  105. package/documents/presentation.js.map +1 -1
  106. package/documents/types.d.ts +12 -32
  107. package/documents/types.d.ts.map +1 -1
  108. package/documents/types.js +25 -1
  109. package/documents/types.js.map +1 -1
  110. package/documents/utils/converters.d.ts +1 -1
  111. package/documents/utils/converters.d.ts.map +1 -1
  112. package/documents/utils/converters.js +1 -1
  113. package/documents/utils/converters.js.map +1 -1
  114. package/documents/utils/idempotency.d.ts +2 -0
  115. package/documents/utils/idempotency.d.ts.map +1 -0
  116. package/documents/utils/idempotency.js +9 -0
  117. package/documents/utils/idempotency.js.map +1 -0
  118. package/documents/utils/stream.d.ts +1 -0
  119. package/documents/utils/stream.d.ts.map +1 -1
  120. package/documents/utils/stream.js +3 -2
  121. package/documents/utils/stream.js.map +1 -1
  122. package/package.json +1 -1
  123. package/documents/credential/baseVerifiableCredential.d.ts.map +0 -1
  124. package/documents/credential/baseVerifiableCredential.js.map +0 -1
  125. package/documents/credential/document.spec.d.ts +0 -7
  126. package/documents/credential/document.spec.d.ts.map +0 -1
  127. package/documents/credential/document.spec.js.map +0 -1
  128. package/documents/credential/issued.d.ts +0 -13
  129. package/documents/credential/issued.d.ts.map +0 -1
  130. package/documents/credential/issued.js.map +0 -1
  131. package/documents/credential.spec.d.ts +0 -8
  132. package/documents/credential.spec.d.ts.map +0 -1
  133. package/documents/credential.spec.js +0 -246
  134. package/documents/credential.spec.js.map +0 -1
  135. package/documents/guards.d.ts +0 -6
  136. package/documents/guards.d.ts.map +0 -1
  137. package/documents/guards.js +0 -32
  138. package/documents/guards.js.map +0 -1
  139. package/documents/helpers.d.ts +0 -2
  140. package/documents/helpers.d.ts.map +0 -1
  141. package/documents/helpers.js +0 -9
  142. package/documents/helpers.js.map +0 -1
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -18,122 +9,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
18
9
  });
19
10
  };
20
11
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.TestCredentialDocument = void 0;
22
- const decorators_1 = require("../decorators");
23
12
  const models_1 = require("../models");
24
- const document_1 = require("./document");
25
- const flavor_1 = require("./flavor");
26
- const NAMESPACE = 'https://docs.truvity.com/vocab';
27
- let Foo = class Foo {
28
- };
29
- __decorate([
30
- decorators_1.VcNotEmptyClaim,
31
- __metadata("design:type", String)
32
- ], Foo.prototype, "foo", void 0);
33
- Foo = __decorate([
34
- (0, decorators_1.VcContext)({ name: 'Foo', namespace: NAMESPACE })
35
- ], Foo);
36
- let Bar = class Bar {
37
- };
38
- __decorate([
39
- decorators_1.VcNotEmptyClaim,
40
- __metadata("design:type", String)
41
- ], Bar.prototype, "bar", void 0);
42
- Bar = __decorate([
43
- (0, decorators_1.VcContext)({ name: 'Bar', namespace: NAMESPACE })
44
- ], Bar);
45
- let NestedStruct = class NestedStruct {
46
- };
47
- __decorate([
48
- decorators_1.VcLinkedCredentialClaim,
49
- __metadata("design:type", models_1.LinkedCredential)
50
- ], NestedStruct.prototype, "linkedProp", void 0);
51
- NestedStruct = __decorate([
52
- (0, decorators_1.VcContext)({ name: 'NestedStruct', namespace: NAMESPACE })
53
- ], NestedStruct);
54
- let Baz = class Baz {
55
- };
56
- __decorate([
57
- decorators_1.VcLinkedCredentialClaim,
58
- __metadata("design:type", models_1.LinkedCredential)
59
- ], Baz.prototype, "field1", void 0);
60
- __decorate([
61
- decorators_1.VcLinkedFileClaim,
62
- decorators_1.VcNotEmptyClaim,
63
- __metadata("design:type", models_1.LinkedFile)
64
- ], Baz.prototype, "field2", void 0);
65
- __decorate([
66
- decorators_1.VcNotEmptyClaim,
67
- __metadata("design:type", Bar)
68
- ], Baz.prototype, "field3", void 0);
69
- __decorate([
70
- (0, decorators_1.VcStringEnumClaim)([
71
- { value: 'option1', title: 'Option 1' },
72
- { value: 'option2', title: 'Option 2' },
73
- ]),
74
- decorators_1.VcNotEmptyClaim,
75
- __metadata("design:type", String)
76
- ], Baz.prototype, "field4", void 0);
77
- __decorate([
78
- decorators_1.VcLinkedCredentialClaim,
79
- decorators_1.VcNotEmptyClaim,
80
- __metadata("design:type", Array)
81
- ], Baz.prototype, "field5", void 0);
82
- __decorate([
83
- decorators_1.VcNotEmptyClaim,
84
- __metadata("design:type", NestedStruct)
85
- ], Baz.prototype, "field6", void 0);
86
- __decorate([
87
- decorators_1.VcNotEmptyClaim,
88
- __metadata("design:type", models_1.Rfc3339DateTime)
89
- ], Baz.prototype, "field7", void 0);
90
- __decorate([
91
- decorators_1.VcNotEmptyClaim,
92
- __metadata("design:type", models_1.Rfc3339Date)
93
- ], Baz.prototype, "field8", void 0);
94
- __decorate([
95
- (0, decorators_1.VcArrayClaim)(String),
96
- __metadata("design:type", Array)
97
- ], Baz.prototype, "field11_1", void 0);
98
- __decorate([
99
- (0, decorators_1.VcArrayClaim)(String),
100
- decorators_1.VcClaim,
101
- __metadata("design:type", Array)
102
- ], Baz.prototype, "field11_2", void 0);
103
- __decorate([
104
- decorators_1.VcClaim,
105
- (0, decorators_1.VcArrayClaim)(String),
106
- __metadata("design:type", Array)
107
- ], Baz.prototype, "field11_3", void 0);
108
- __decorate([
109
- (0, decorators_1.VcArrayClaim)(Bar),
110
- __metadata("design:type", Array)
111
- ], Baz.prototype, "field12_1", void 0);
112
- __decorate([
113
- (0, decorators_1.VcArrayClaim)(Bar),
114
- decorators_1.VcClaim,
115
- __metadata("design:type", Array)
116
- ], Baz.prototype, "field12_2", void 0);
117
- __decorate([
118
- decorators_1.VcClaim,
119
- (0, decorators_1.VcArrayClaim)(Bar),
120
- __metadata("design:type", Array)
121
- ], Baz.prototype, "field12_3", void 0);
122
- Baz = __decorate([
123
- (0, decorators_1.VcContext)({ name: 'Baz', namespace: NAMESPACE })
124
- ], Baz);
13
+ const claims_1 = require("./claims");
14
+ const udt_1 = require("./testdata/udt");
125
15
  const createDummyApiClient = () => ({});
126
- class TestCredentialDocument extends document_1.CredentialDocument {
127
- constructor(model) {
128
- super(createDummyApiClient(), new flavor_1.CredentialFlavor(model));
129
- this.model = model;
130
- }
131
- }
132
- exports.TestCredentialDocument = TestCredentialDocument;
133
- describe('CredentialDocument', () => {
16
+ describe('UdtClaims', () => {
134
17
  it('should enhance linkable fields with corresponding class instances', () => __awaiter(void 0, void 0, void 0, function* () {
135
18
  var _a, _b, _c, _d, _e, _f;
136
- const document = new TestCredentialDocument(Baz);
19
+ const claims = new claims_1.UdtClaims(createDummyApiClient(), udt_1.Baz);
137
20
  const apiReceivedClaims = {
138
21
  field1: {
139
22
  id: 'urn:credential:111',
@@ -166,7 +49,7 @@ describe('CredentialDocument', () => {
166
49
  field12_2: [{ bar: 'field12_2_value0' }],
167
50
  field12_3: [{ bar: 'field12_3_value0' }],
168
51
  };
169
- const enhancedClaims = document.unmarshalValuesToCredential(apiReceivedClaims);
52
+ const enhancedClaims = claims.unmarshalValuesToCredential(apiReceivedClaims);
170
53
  expect(enhancedClaims.field1).toBeInstanceOf(models_1.LinkedCredential);
171
54
  expect((_a = enhancedClaims.field1) === null || _a === void 0 ? void 0 : _a.id).toBe('urn:credential:111');
172
55
  expect((_b = enhancedClaims.field1) === null || _b === void 0 ? void 0 : _b.type).toBe('LinkedCredential');
@@ -195,8 +78,8 @@ describe('CredentialDocument', () => {
195
78
  expect(enhancedClaims.field12_3).toEqual([{ bar: 'field12_3_value0' }]);
196
79
  }));
197
80
  it('should properly serialize linked entities', () => __awaiter(void 0, void 0, void 0, function* () {
198
- var _g, _h, _j;
199
- const document = new TestCredentialDocument(Baz);
81
+ var _g;
82
+ const claims = new claims_1.UdtClaims(createDummyApiClient(), udt_1.Baz);
200
83
  const userSentClaims = {
201
84
  field1: {
202
85
  id: '111',
@@ -224,12 +107,12 @@ describe('CredentialDocument', () => {
224
107
  field12_2: [{ bar: 'field12_2_value0' }],
225
108
  field12_3: [{ bar: 'field12_3_value0' }],
226
109
  };
227
- const enhancedClaims = document.marshalValues(userSentClaims);
228
- expect((_g = enhancedClaims.field1) === null || _g === void 0 ? void 0 : _g.type).toBe('LinkedCredential');
229
- expect((_h = enhancedClaims.field1) === null || _h === void 0 ? void 0 : _h.digestMultibase).toBe('digestMultibase');
110
+ const enhancedClaims = claims.marshalValues(userSentClaims);
111
+ expect(enhancedClaims.field1.type).toBe('LinkedCredential');
112
+ expect(enhancedClaims.field1.digestMultibase).toBe('digestMultibase');
230
113
  expect(enhancedClaims.field2.type).toBe('LinkedFile');
231
114
  expect(enhancedClaims.field5[0].type).toBe('LinkedCredential');
232
- expect((_j = enhancedClaims.field6.linkedProp) === null || _j === void 0 ? void 0 : _j.type).toBe('LinkedCredential');
115
+ expect((_g = enhancedClaims.field6.linkedProp) === null || _g === void 0 ? void 0 : _g.type).toBe('LinkedCredential');
233
116
  expect(enhancedClaims.field7).toBeInstanceOf(models_1.Rfc3339DateTime);
234
117
  expect(enhancedClaims.field8).toBeInstanceOf(models_1.Rfc3339Date);
235
118
  expect(enhancedClaims.field11_1).toEqual(['field11_1_value0']);
@@ -239,5 +122,70 @@ describe('CredentialDocument', () => {
239
122
  expect(enhancedClaims.field12_2).toEqual([{ bar: 'field12_2_value0' }]);
240
123
  expect(enhancedClaims.field12_3).toEqual([{ bar: 'field12_3_value0' }]);
241
124
  }));
125
+ it('should map registered claims to api', () => __awaiter(void 0, void 0, void 0, function* () {
126
+ const claims = new claims_1.UdtClaims(createDummyApiClient(), udt_1.Qux);
127
+ const schema = claims.getDraftSchema();
128
+ expect(schema).toEqual({
129
+ fields: [
130
+ { name: 'field1_1', kind: 'LINK', notEmpty: true },
131
+ { name: 'field1_2', kind: 'LINK', notEmpty: true },
132
+ { name: 'field1_3', kind: 'LINK' },
133
+ { name: 'field1_4', kind: 'LINK' },
134
+ { name: 'field2_1', notEmpty: true, kind: 'FILE' },
135
+ { name: 'field2_2', notEmpty: true, kind: 'FILE' },
136
+ {
137
+ name: 'field3_1',
138
+ notEmpty: true,
139
+ kind: 'STRING',
140
+ enum: [
141
+ { value: 'option1', title: 'Option 1' },
142
+ { value: 'option2', title: 'Option 2' },
143
+ ],
144
+ },
145
+ {
146
+ name: 'field3_2',
147
+ notEmpty: true,
148
+ kind: 'STRING',
149
+ enum: [
150
+ { value: 'option1', title: 'Option 1' },
151
+ { value: 'option2', title: 'Option 2' },
152
+ ],
153
+ },
154
+ { name: 'field4_1', kind: 'NUMBER', notEmpty: true, isArray: true },
155
+ { name: 'field4_2', kind: 'NUMBER', notEmpty: true, isArray: true },
156
+ { name: 'field5_1', kind: 'NUMBER', notEmpty: true, title: 'Field title' },
157
+ { name: 'field5_2', kind: 'NUMBER', notEmpty: true, title: 'Field title' },
158
+ { name: 'field6_1', kind: 'NUMBER', notEmpty: true },
159
+ { name: 'field6_2', kind: 'NUMBER', notEmpty: true },
160
+ { name: 'field7_1', kind: 'DATETIME', notEmpty: true, isArray: true },
161
+ { name: 'field7_2', kind: 'DATETIME', notEmpty: true, isArray: true },
162
+ { name: 'field8_1', kind: 'DATE', notEmpty: true, isArray: true },
163
+ { name: 'field8_2', kind: 'DATE', notEmpty: true, isArray: true },
164
+ {
165
+ name: 'field9',
166
+ notEmpty: true,
167
+ kind: 'STRUCT',
168
+ fields: [{ name: 'bar', notEmpty: true, kind: 'STRING' }],
169
+ vocabNamespace: udt_1.VOCAB_NAMESPACE,
170
+ vocabName: 'Bar',
171
+ },
172
+ {
173
+ name: 'field10',
174
+ title: 'Field 10',
175
+ isArray: true,
176
+ kind: 'STRUCT',
177
+ fields: [{ name: 'bar', notEmpty: true, kind: 'STRING' }],
178
+ vocabNamespace: udt_1.VOCAB_NAMESPACE,
179
+ vocabName: 'Bar',
180
+ },
181
+ { name: 'field11_1', kind: 'STRING', isArray: true },
182
+ { name: 'field11_2', kind: 'STRING', isArray: true },
183
+ { name: 'field11_3', kind: 'STRING', isArray: true },
184
+ ],
185
+ vocabNamespace: udt_1.VOCAB_NAMESPACE,
186
+ vocabName: 'Qux',
187
+ vcType: ['BazCredential'],
188
+ });
189
+ }));
242
190
  });
243
- //# sourceMappingURL=document.spec.js.map
191
+ //# sourceMappingURL=claims.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claims.spec.js","sourceRoot":"","sources":["../../../src/documents/credential/claims.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { ApiClient, UserUpdateClaims } from '../types';\nimport { LinkedCredential, LinkedFile, Rfc3339Date, Rfc3339DateTime } from '../models';\n\nimport { UdtClaims } from './claims';\nimport { Baz, Qux, VOCAB_NAMESPACE } from './testdata/udt';\nimport { Json } from './types';\n\nconst createDummyApiClient = () => ({}) as ApiClient;\n\ndescribe('UdtClaims', () => {\n it('should enhance linkable fields with corresponding class instances', async () => {\n const claims = new UdtClaims(createDummyApiClient(), Baz);\n const apiReceivedClaims: Json = {\n field1: {\n id: 'urn:credential:111',\n type: 'LinkedCredential',\n digestMultibase: 'digestMultibase',\n },\n field2: {\n id: 'urn:file:222',\n type: 'LinkedFile',\n digestMultibase: 'digestMultibase',\n },\n field3: {\n bar: '333',\n },\n field4: 'option2',\n field5: [{ id: 'urn:credential:111', type: 'LinkedCredential' }],\n field6: {\n linkedProp: {\n id: 'urn:credential:111',\n type: 'LinkedCredential',\n digestMultibase: 'digestMultibase',\n },\n },\n field7: new Rfc3339DateTime().toJSON(),\n field8: new Rfc3339Date().toJSON(),\n field11_1: ['field11_1_value0'],\n field11_2: ['field11_2_value0'],\n field11_3: ['field11_3_value0'],\n field12_1: [{ bar: 'field12_1_value0' }],\n field12_2: [{ bar: 'field12_2_value0' }],\n field12_3: [{ bar: 'field12_3_value0' }],\n };\n const enhancedClaims = claims.unmarshalValuesToCredential(apiReceivedClaims);\n\n expect(enhancedClaims.field1).toBeInstanceOf(LinkedCredential);\n expect(enhancedClaims.field1?.id).toBe('urn:credential:111');\n expect(enhancedClaims.field1?.type).toBe('LinkedCredential');\n expect(enhancedClaims.field1?.digestMultibase).toBe('digestMultibase');\n\n expect(enhancedClaims.field2).toBeInstanceOf(LinkedFile);\n expect(enhancedClaims.field2.id).toBe('urn:file:222');\n expect(enhancedClaims.field2.type).toBe('LinkedFile');\n expect(enhancedClaims.field2.digestMultibase).toBe('digestMultibase');\n\n // Non-linkable fields should be resolved as-is\n expect(enhancedClaims.field3).toEqual({\n bar: '333',\n });\n\n expect(enhancedClaims.field4).toEqual('option2');\n\n expect(enhancedClaims.field5[0]).toBeInstanceOf(LinkedCredential);\n\n expect(enhancedClaims.field6.linkedProp).toBeInstanceOf(LinkedCredential);\n expect(enhancedClaims.field6.linkedProp?.id).toBe('urn:credential:111');\n expect(enhancedClaims.field6.linkedProp?.type).toBe('LinkedCredential');\n expect(enhancedClaims.field6.linkedProp?.digestMultibase).toBe('digestMultibase');\n\n expect(enhancedClaims.field7).toBeInstanceOf(Rfc3339DateTime);\n expect(enhancedClaims.field8).toBeInstanceOf(Rfc3339Date);\n\n expect(enhancedClaims.field11_1).toEqual(['field11_1_value0']);\n expect(enhancedClaims.field11_2).toEqual(['field11_2_value0']);\n expect(enhancedClaims.field11_3).toEqual(['field11_3_value0']);\n\n expect(enhancedClaims.field12_1).toEqual([{ bar: 'field12_1_value0' }]);\n expect(enhancedClaims.field12_2).toEqual([{ bar: 'field12_2_value0' }]);\n expect(enhancedClaims.field12_3).toEqual([{ bar: 'field12_3_value0' }]);\n });\n\n it('should properly serialize linked entities', async () => {\n const claims = new UdtClaims(createDummyApiClient(), Baz);\n const userSentClaims: UserUpdateClaims<Baz> = {\n field1: {\n id: '111',\n digestMultibase: 'digestMultibase',\n },\n field2: {\n id: '222',\n },\n field5: [\n {\n id: '111',\n },\n ],\n field6: {\n linkedProp: {\n id: '111',\n },\n },\n field7: new Rfc3339DateTime(),\n field8: new Rfc3339Date(),\n field11_1: ['field11_1_value0'],\n field11_2: ['field11_2_value0'],\n field11_3: ['field11_3_value0'],\n field12_1: [{ bar: 'field12_1_value0' }],\n field12_2: [{ bar: 'field12_2_value0' }],\n field12_3: [{ bar: 'field12_3_value0' }],\n };\n const enhancedClaims = claims.marshalValues(userSentClaims);\n\n expect(enhancedClaims.field1.type).toBe('LinkedCredential');\n expect(enhancedClaims.field1.digestMultibase).toBe('digestMultibase');\n\n expect(enhancedClaims.field2.type).toBe('LinkedFile');\n\n expect(enhancedClaims.field5[0].type).toBe('LinkedCredential');\n\n expect(enhancedClaims.field6.linkedProp?.type).toBe('LinkedCredential');\n\n expect(enhancedClaims.field7).toBeInstanceOf(Rfc3339DateTime);\n expect(enhancedClaims.field8).toBeInstanceOf(Rfc3339Date);\n\n expect(enhancedClaims.field11_1).toEqual(['field11_1_value0']);\n expect(enhancedClaims.field11_2).toEqual(['field11_2_value0']);\n expect(enhancedClaims.field11_3).toEqual(['field11_3_value0']);\n\n expect(enhancedClaims.field12_1).toEqual([{ bar: 'field12_1_value0' }]);\n expect(enhancedClaims.field12_2).toEqual([{ bar: 'field12_2_value0' }]);\n expect(enhancedClaims.field12_3).toEqual([{ bar: 'field12_3_value0' }]);\n });\n\n it('should map registered claims to api', async () => {\n const claims = new UdtClaims(createDummyApiClient(), Qux);\n const schema = claims.getDraftSchema();\n\n expect(schema).toEqual({\n fields: [\n { name: 'field1_1', kind: 'LINK', notEmpty: true },\n { name: 'field1_2', kind: 'LINK', notEmpty: true },\n { name: 'field1_3', kind: 'LINK' },\n { name: 'field1_4', kind: 'LINK' },\n\n { name: 'field2_1', notEmpty: true, kind: 'FILE' },\n { name: 'field2_2', notEmpty: true, kind: 'FILE' },\n\n {\n name: 'field3_1',\n notEmpty: true,\n kind: 'STRING',\n enum: [\n { value: 'option1', title: 'Option 1' },\n { value: 'option2', title: 'Option 2' },\n ],\n },\n {\n name: 'field3_2',\n notEmpty: true,\n kind: 'STRING',\n enum: [\n { value: 'option1', title: 'Option 1' },\n { value: 'option2', title: 'Option 2' },\n ],\n },\n\n { name: 'field4_1', kind: 'NUMBER', notEmpty: true, isArray: true },\n { name: 'field4_2', kind: 'NUMBER', notEmpty: true, isArray: true },\n\n { name: 'field5_1', kind: 'NUMBER', notEmpty: true, title: 'Field title' },\n { name: 'field5_2', kind: 'NUMBER', notEmpty: true, title: 'Field title' },\n\n { name: 'field6_1', kind: 'NUMBER', notEmpty: true },\n { name: 'field6_2', kind: 'NUMBER', notEmpty: true },\n\n { name: 'field7_1', kind: 'DATETIME', notEmpty: true, isArray: true },\n { name: 'field7_2', kind: 'DATETIME', notEmpty: true, isArray: true },\n\n { name: 'field8_1', kind: 'DATE', notEmpty: true, isArray: true },\n { name: 'field8_2', kind: 'DATE', notEmpty: true, isArray: true },\n\n {\n name: 'field9',\n notEmpty: true,\n kind: 'STRUCT',\n fields: [{ name: 'bar', notEmpty: true, kind: 'STRING' }],\n vocabNamespace: VOCAB_NAMESPACE,\n vocabName: 'Bar',\n },\n\n {\n name: 'field10',\n title: 'Field 10',\n isArray: true,\n kind: 'STRUCT',\n fields: [{ name: 'bar', notEmpty: true, kind: 'STRING' }],\n vocabNamespace: VOCAB_NAMESPACE,\n vocabName: 'Bar',\n },\n\n { name: 'field11_1', kind: 'STRING', isArray: true },\n { name: 'field11_2', kind: 'STRING', isArray: true },\n { name: 'field11_3', kind: 'STRING', isArray: true },\n ],\n vocabNamespace: VOCAB_NAMESPACE,\n vocabName: 'Qux',\n vcType: ['BazCredential'],\n });\n });\n});\n"]}
@@ -0,0 +1,50 @@
1
+ import * as core from '../../../core';
2
+ import { inferParsedObject } from '../../../core/schemas';
3
+ import type { CredentialBlob, Json } from '../types';
4
+ import { CredentialDocument } from '../document';
5
+ export declare const jsonldVocabSchema: core.serialization.Schema<string | core.serialization.inferRawObjectFromPropertySchemas<{}>, string | core.serialization.inferParsedObjectFromPropertySchemas<{}>>;
6
+ export declare const jsonldContextSchema: core.serialization.Schema<string | core.serialization.inferRawObjectFromPropertySchemas<{}> | (string | core.serialization.inferRawObjectFromPropertySchemas<{}>)[], string | core.serialization.inferParsedObjectFromPropertySchemas<{}> | (string | core.serialization.inferParsedObjectFromPropertySchemas<{}>)[]>;
7
+ export declare const credentialSchemaSchema: core.serialization.inferObjectSchemaFromPropertySchemas<{
8
+ id: core.serialization.Schema<string, string>;
9
+ type: core.serialization.Schema<string | string[], string | string[]>;
10
+ }>;
11
+ export declare const vcdmProofSchema: core.serialization.inferObjectSchemaFromPropertySchemas<{
12
+ type: core.serialization.Schema<string, string>;
13
+ }>;
14
+ export declare const vcdmProofSetSchema: core.serialization.Schema<core.serialization.inferRawObjectFromPropertySchemas<{
15
+ type: core.serialization.Schema<string, string>;
16
+ }> | core.serialization.inferRawObjectFromPropertySchemas<{
17
+ type: core.serialization.Schema<string, string>;
18
+ }>[], core.serialization.inferParsedObjectFromPropertySchemas<{
19
+ type: core.serialization.Schema<string, string>;
20
+ }> | core.serialization.inferParsedObjectFromPropertySchemas<{
21
+ type: core.serialization.Schema<string, string>;
22
+ }>[]>;
23
+ export declare const jsonSchemaCredentialSubjectSchema: core.serialization.inferObjectSchemaFromPropertySchemas<{
24
+ id: core.serialization.Schema<string, string>;
25
+ type: core.serialization.Schema<"JsonSchema", "JsonSchema">;
26
+ jsonSchema: core.serialization.inferObjectSchemaFromPropertySchemas<{
27
+ $schema: core.serialization.Schema<"https://json-schema.org/draft/2020-12/schema", "https://json-schema.org/draft/2020-12/schema">;
28
+ }>;
29
+ }>;
30
+ export declare const vcdmDocumentSchema: core.serialization.inferObjectSchemaFromPropertySchemas<{
31
+ '@context': core.serialization.Schema<string | core.serialization.inferRawObjectFromPropertySchemas<{}> | (string | core.serialization.inferRawObjectFromPropertySchemas<{}>)[], string | core.serialization.inferParsedObjectFromPropertySchemas<{}> | (string | core.serialization.inferParsedObjectFromPropertySchemas<{}>)[]>;
32
+ type: core.serialization.Schema<string[], string[]>;
33
+ credentialSubject: core.serialization.inferObjectSchemaFromPropertySchemas<{
34
+ id: core.serialization.Schema<string | null | undefined, string | undefined>;
35
+ type: core.serialization.Schema<string | null | undefined, string | undefined>;
36
+ }>;
37
+ credentialSchema: core.serialization.Schema<core.serialization.inferRawObjectFromPropertySchemas<{
38
+ id: core.serialization.Schema<string, string>;
39
+ type: core.serialization.Schema<string | string[], string | string[]>;
40
+ }> | null | undefined, core.serialization.inferParsedObjectFromPropertySchemas<{
41
+ id: core.serialization.Schema<string, string>;
42
+ type: core.serialization.Schema<string | string[], string | string[]>;
43
+ }> | undefined>;
44
+ }>;
45
+ export declare type VcdmDocument = inferParsedObject<typeof vcdmDocumentSchema>;
46
+ export declare class VcdmCredentialDocument extends CredentialDocument {
47
+ protected jsonToVcdm(input: Json): VcdmDocument;
48
+ protected blobToVcdm(input: CredentialBlob): VcdmDocument;
49
+ }
50
+ //# sourceMappingURL=vcdm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcdm.d.ts","sourceRoot":"","sources":["../../../../src/documents/credential/document/vcdm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,iBAAiB,oKAG5B,CAAC;AAEH,eAAO,MAAM,mBAAmB,uTAG9B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;EAMjC,CAAC;AAEH,eAAO,MAAM,eAAe;;EAE1B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;KAG7B,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;EAM5C,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;EAQ7B,CAAC;AAEH,oBAAY,YAAY,GAAG,iBAAiB,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAExE,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC1D,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,YAAY;IAI/C,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY;CAG5D"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.VcdmCredentialDocument = exports.vcdmDocumentSchema = exports.jsonSchemaCredentialSubjectSchema = exports.vcdmProofSetSchema = exports.vcdmProofSchema = exports.credentialSchemaSchema = exports.jsonldContextSchema = exports.jsonldVocabSchema = void 0;
27
+ const core = __importStar(require("../../../core"));
28
+ const document_1 = require("../document");
29
+ exports.jsonldVocabSchema = core.serialization.undiscriminatedUnion([
30
+ core.serialization.string(),
31
+ core.serialization.object({}),
32
+ ]);
33
+ exports.jsonldContextSchema = core.serialization.undiscriminatedUnion([
34
+ exports.jsonldVocabSchema,
35
+ core.serialization.list(exports.jsonldVocabSchema),
36
+ ]);
37
+ exports.credentialSchemaSchema = core.serialization.object({
38
+ id: core.serialization.string(),
39
+ type: core.serialization.undiscriminatedUnion([
40
+ core.serialization.string(),
41
+ core.serialization.list(core.serialization.string()),
42
+ ]),
43
+ });
44
+ exports.vcdmProofSchema = core.serialization.object({
45
+ type: core.serialization.string(),
46
+ });
47
+ exports.vcdmProofSetSchema = core.serialization.undiscriminatedUnion([
48
+ exports.vcdmProofSchema,
49
+ core.serialization.list(exports.vcdmProofSchema),
50
+ ]);
51
+ exports.jsonSchemaCredentialSubjectSchema = core.serialization.object({
52
+ id: core.serialization.string(),
53
+ type: core.serialization.stringLiteral('JsonSchema'),
54
+ jsonSchema: core.serialization.object({
55
+ $schema: core.serialization.stringLiteral('https://json-schema.org/draft/2020-12/schema'),
56
+ }),
57
+ });
58
+ exports.vcdmDocumentSchema = core.serialization.object({
59
+ '@context': exports.jsonldContextSchema,
60
+ type: core.serialization.list(core.serialization.string()),
61
+ credentialSubject: core.serialization.object({
62
+ id: core.serialization.string().optional(),
63
+ type: core.serialization.string().optional(),
64
+ }),
65
+ credentialSchema: exports.credentialSchemaSchema.optional(),
66
+ });
67
+ class VcdmCredentialDocument extends document_1.CredentialDocument {
68
+ jsonToVcdm(input) {
69
+ return this.parseJson(exports.vcdmDocumentSchema, input);
70
+ }
71
+ blobToVcdm(input) {
72
+ return this.parseBlob(exports.vcdmDocumentSchema, input);
73
+ }
74
+ }
75
+ exports.VcdmCredentialDocument = VcdmCredentialDocument;
76
+ //# sourceMappingURL=vcdm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcdm.js","sourceRoot":"","sources":["../../../../src/documents/credential/document/vcdm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAsC;AAGtC,0CAAiD;AAEpC,QAAA,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;IACrE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;IAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;CAChC,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;IACvE,yBAAiB;IACjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAiB,CAAC;CAC7C,CAAC,CAAC;AAEU,QAAA,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IAC5D,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;IAC/B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;KACvD,CAAC;CACL,CAAC,CAAC;AAEU,QAAA,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IACrD,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;CACpC,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;IACtE,uBAAe;IACf,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAe,CAAC;CAC3C,CAAC,CAAC;AAEU,QAAA,iCAAiC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IACvE,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;IAC/B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC;IACpD,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAClC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,8CAA8C,CAAC;KAC5F,CAAC;CACL,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;IACxD,UAAU,EAAE,2BAAmB;IAC/B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;IAC1D,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QACzC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC/C,CAAC;IACF,gBAAgB,EAAE,8BAAsB,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAIH,MAAa,sBAAuB,SAAQ,6BAAkB;IAChD,UAAU,CAAC,KAAW;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,0BAAkB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAES,UAAU,CAAC,KAAqB;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,0BAAkB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;CACJ;AARD,wDAQC","sourcesContent":["import * as core from '../../../core';\nimport { inferParsedObject } from '../../../core/schemas';\nimport type { CredentialBlob, Json } from '../types';\nimport { CredentialDocument } from '../document';\n\nexport const jsonldVocabSchema = core.serialization.undiscriminatedUnion([\n core.serialization.string(),\n core.serialization.object({}),\n]);\n\nexport const jsonldContextSchema = core.serialization.undiscriminatedUnion([\n jsonldVocabSchema,\n core.serialization.list(jsonldVocabSchema),\n]);\n\nexport const credentialSchemaSchema = core.serialization.object({\n id: core.serialization.string(),\n type: core.serialization.undiscriminatedUnion([\n core.serialization.string(),\n core.serialization.list(core.serialization.string()),\n ]),\n});\n\nexport const vcdmProofSchema = core.serialization.object({\n type: core.serialization.string(),\n});\n\nexport const vcdmProofSetSchema = core.serialization.undiscriminatedUnion([\n vcdmProofSchema,\n core.serialization.list(vcdmProofSchema),\n]);\n\nexport const jsonSchemaCredentialSubjectSchema = core.serialization.object({\n id: core.serialization.string(),\n type: core.serialization.stringLiteral('JsonSchema'),\n jsonSchema: core.serialization.object({\n $schema: core.serialization.stringLiteral('https://json-schema.org/draft/2020-12/schema'),\n }),\n});\n\nexport const vcdmDocumentSchema = core.serialization.object({\n '@context': jsonldContextSchema,\n type: core.serialization.list(core.serialization.string()),\n credentialSubject: core.serialization.object({\n id: core.serialization.string().optional(),\n type: core.serialization.string().optional(),\n }),\n credentialSchema: credentialSchemaSchema.optional(),\n});\n\nexport type VcdmDocument = inferParsedObject<typeof vcdmDocumentSchema>;\n\nexport class VcdmCredentialDocument extends CredentialDocument {\n protected jsonToVcdm(input: Json): VcdmDocument {\n return this.parseJson(vcdmDocumentSchema, input);\n }\n\n protected blobToVcdm(input: CredentialBlob): VcdmDocument {\n return this.parseBlob(vcdmDocumentSchema, input);\n }\n}\n"]}
@@ -1,26 +1,8 @@
1
- import type { ApiClient, Claims, Ctor, ReadClaims, ReadDraftClaims, UserUpdateClaims } from '../types';
2
- import { CredentialFlavor } from './flavor';
3
- export declare type Json = Record<string, any>;
4
- export declare class CredentialDocument<T extends Claims> {
5
- protected client: ApiClient;
6
- protected flavor: CredentialFlavor<T>;
7
- constructor(client: ApiClient, flavor: CredentialFlavor<T>);
8
- private processValues;
9
- private getClaimTypeInfo;
10
- /** convertApiValuesToUdt maps and converts the API received claims values to the UDT claims model */
11
- protected convertApiValuesToUdt<K extends Claims>(model: Ctor<any>, input: Json): K;
12
- /** convertUdtToApiValues maps and converts the user received claims values onto UDT claims model */
13
- protected convertUdtToApiValues<K extends Claims>(model: Ctor<any>, input: K): Json;
14
- /**
15
- * Marshalling is the process of transforming the internal representation of values to a data format suitable
16
- * for transmission.
17
- */
18
- marshalValues(input: UserUpdateClaims<T>): Json;
19
- /**
20
- * Unmarshalling is the reverse process of marshalling. It involves converting data from a serialized format back
21
- * into an internal representation.
22
- */
23
- unmarshalValuesToDraft(input: Json): ReadDraftClaims<T>;
24
- unmarshalValuesToCredential(input: Json): ReadClaims<T>;
1
+ import { inferParsed, Schema } from '../../core/schemas';
2
+ import type { CredentialBlob, Json } from './types';
3
+ export declare class CredentialDocument {
4
+ protected blobToJson(input: CredentialBlob): Json;
5
+ protected parseJson<T extends Schema<any, any>>(schema: T, input: Json): inferParsed<T>;
6
+ protected parseBlob<T extends Schema<any, any>>(schema: T, input: CredentialBlob): inferParsed<T>;
25
7
  }
26
8
  //# sourceMappingURL=document.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/documents/credential/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAWvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI5C,oBAAY,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEvC,qBAAa,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAExC,SAAS,CAAC,MAAM,EAAE,SAAS;IAC3B,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBAD3B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAGzC,OAAO,CAAC,aAAa;IAkCrB,OAAO,CAAC,gBAAgB;IAYxB,qGAAqG;IACrG,SAAS,CAAC,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC;IAgEnF,oGAAoG;IACpG,SAAS,CAAC,qBAAqB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IA0DnF;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;IAI/C;;;OAGG;IACH,sBAAsB,CAAC,KAAK,EAAE,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC;IAIvD,2BAA2B,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;CAG1D"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/documents/credential/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpD,qBAAa,kBAAkB;IAC3B,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IASjD,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;IAQvF,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC;CAGpG"}
@@ -1,147 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CredentialDocument = void 0;
4
- const guards_1 = require("../guards");
5
- const decorators_1 = require("../decorators");
6
- const models_1 = require("../models");
7
- const issued_1 = require("./issued");
8
- const unknown_1 = require("./unknown");
9
4
  class CredentialDocument {
10
- constructor(client, flavor) {
11
- this.client = client;
12
- this.flavor = flavor;
13
- }
14
- processValues(model, input, processValue, initialValue) {
15
- return (0, decorators_1.getRegisteredClaimsList)(model).reduce((result, descriptor) => {
16
- if (descriptor.name in input) {
17
- const value = input[descriptor.name];
18
- let processedValue;
19
- if (descriptor.isArray) {
20
- if (value == null) {
21
- processedValue = null;
22
- }
23
- if (Array.isArray(value)) {
24
- processedValue = value.map((item) => {
25
- return processValue(descriptor, item);
26
- });
27
- }
28
- else {
29
- throw new Error(`Can't convert received value as it has an unexpected type. The value is defined in UDT as "Array". Please reach out to support for assistance.`);
30
- }
31
- }
32
- else {
33
- processedValue = processValue(descriptor, value);
34
- }
35
- Reflect.set(result, descriptor.name, processedValue);
36
- }
37
- return result;
38
- }, initialValue);
39
- }
40
- getClaimTypeInfo(model, descriptor) {
41
- const typeInfo = descriptor.nestedType ? descriptor.nestedType : (0, decorators_1.getTsDataTypeMetadata)(model, descriptor.name);
42
- if (typeInfo == null) {
43
- throw new Error(`Can't convert received value. Inconsistent data definition. Please reach out to support for assistance.`);
5
+ blobToJson(input) {
6
+ try {
7
+ return JSON.parse(input.toString('utf8'));
8
+ }
9
+ catch (err) {
10
+ console.error(err);
11
+ throw new Error('Invalid JSON in Credential Blob');
44
12
  }
45
- return typeInfo;
46
- }
47
- /** convertApiValuesToUdt maps and converts the API received claims values to the UDT claims model */
48
- convertApiValuesToUdt(model, input) {
49
- const processValue = (descriptor, value) => {
50
- if (value == null) {
51
- return null;
52
- }
53
- if ((0, guards_1.isLinkedEntityDescriptor)(value)) {
54
- const isLinkedCredential = (0, decorators_1.getClaimLinkedCredentialMetadata)(model, descriptor.name);
55
- if (isLinkedCredential) {
56
- return new models_1.LinkedCredential(this.client, value.id, value.digestMultibase);
57
- }
58
- const isLinkedFile = (0, decorators_1.getClaimLinkedFileMetadata)(model, descriptor.name);
59
- if (isLinkedFile) {
60
- return new models_1.LinkedFile(this.client, value.id, value.digestMultibase);
61
- }
62
- }
63
- const typeInfo = this.getClaimTypeInfo(model, descriptor);
64
- if (typeInfo === Date) {
65
- if (typeof value !== 'string') {
66
- throw new Error(`Can't convert received value as it has an unexpected type. The value is defined in UDT as "Date". Please reach out to support for assistance.`);
67
- }
68
- return new Date(value);
69
- }
70
- if (typeInfo === models_1.Rfc3339DateTime) {
71
- if (typeof value !== 'string') {
72
- throw new Error(`Can't convert received value as it has an unexpected type. The value is defined in UDT as "Rfc3339DateTime". Please reach out to support for assistance.`);
73
- }
74
- return new models_1.Rfc3339DateTime(value);
75
- }
76
- if (typeInfo === models_1.Rfc3339Date) {
77
- if (typeof value !== 'string') {
78
- throw new Error(`Can't convert received value as it has an unexpected type. The value is defined in UDT as "Rfc3339Date". Please reach out to support for assistance.`);
79
- }
80
- return new models_1.Rfc3339Date(value);
81
- }
82
- // Primitive values should be returned as-is
83
- if (Array.of(String, Number, Boolean, Object).includes(typeInfo)) {
84
- return value;
85
- }
86
- if (!(value instanceof Object)) {
87
- throw new Error(`Can't convert received value as it has an unexpected type. The value is defined in UDT as "${typeInfo.name}". Please reach out to support for assistance.`);
88
- }
89
- return this.convertApiValuesToUdt(typeInfo, value);
90
- };
91
- return this.processValues(model, input, processValue, new model());
92
- }
93
- /** convertUdtToApiValues maps and converts the user received claims values onto UDT claims model */
94
- convertUdtToApiValues(model, input) {
95
- const processValue = (descriptor, value) => {
96
- if (value == null) {
97
- return null;
98
- }
99
- const typeInfo = this.getClaimTypeInfo(model, descriptor);
100
- if ((0, decorators_1.getClaimLinkedCredentialMetadata)(model, descriptor.name)) {
101
- if (value instanceof models_1.LinkedCredential) {
102
- return value.toJSON();
103
- }
104
- if (value instanceof issued_1.VerifiableCredential || value instanceof unknown_1.UnknownVerifiableCredential) {
105
- return value.toLinkedCredential().toJSON();
106
- }
107
- if ((0, guards_1.isValueWithId)(value)) {
108
- return models_1.LinkedCredential.createLinkedEntityDescriptor(value.id, value.digestMultibase);
109
- }
110
- }
111
- if ((0, decorators_1.getClaimLinkedFileMetadata)(model, descriptor.name)) {
112
- if (value instanceof models_1.LinkedFile) {
113
- return value.toJSON();
114
- }
115
- if ((0, guards_1.isValueWithId)(value)) {
116
- return models_1.LinkedFile.createLinkedEntityDescriptor(value.id, value.digestMultibase);
117
- }
118
- }
119
- if (Array.of(String, Number, Date, models_1.Rfc3339DateTime, models_1.Rfc3339Date, Boolean, Object, Function).includes(typeInfo)) {
120
- return value;
121
- }
122
- if (!(value instanceof Object)) {
123
- throw new Error(`Can't convert received value as it has an unexpected type. The value is defined in UDT as "${typeInfo.name}". Please reach out to support for assistance.`);
124
- }
125
- return this.convertUdtToApiValues(typeInfo, value);
126
- };
127
- return this.processValues(model, input, processValue, {});
128
- }
129
- /**
130
- * Marshalling is the process of transforming the internal representation of values to a data format suitable
131
- * for transmission.
132
- */
133
- marshalValues(input) {
134
- return this.convertUdtToApiValues(this.flavor.claimsModel, input);
135
13
  }
136
- /**
137
- * Unmarshalling is the reverse process of marshalling. It involves converting data from a serialized format back
138
- * into an internal representation.
139
- */
140
- unmarshalValuesToDraft(input) {
141
- return this.convertApiValuesToUdt(this.flavor.claimsModel, input);
14
+ parseJson(schema, input) {
15
+ return schema.parseOrThrow(input, {
16
+ unrecognizedObjectKeys: 'passthrough',
17
+ allowUnrecognizedUnionMembers: true,
18
+ allowUnrecognizedEnumValues: true,
19
+ });
142
20
  }
143
- unmarshalValuesToCredential(input) {
144
- return this.convertApiValuesToUdt(this.flavor.claimsModel, input);
21
+ parseBlob(schema, input) {
22
+ return this.parseJson(schema, this.blobToJson(input));
145
23
  }
146
24
  }
147
25
  exports.CredentialDocument = CredentialDocument;