@tsg-dsp/tsg-sdk 0.0.0-stage → 0.20.1

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 (190) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +273 -2
  3. package/dist/.generated/control-plane.d.ts +7882 -0
  4. package/dist/.generated/sso-bridge.d.ts +3062 -0
  5. package/dist/.generated/wallet.d.ts +6350 -0
  6. package/dist/auth/auth.provider.d.ts +45 -0
  7. package/dist/auth/auth.provider.d.ts.map +1 -0
  8. package/dist/auth/auth.provider.js +158 -0
  9. package/dist/auth/auth.provider.js.map +1 -0
  10. package/dist/auth/auth.types.d.ts +27 -0
  11. package/dist/auth/auth.types.d.ts.map +1 -0
  12. package/dist/auth/auth.types.js +2 -0
  13. package/dist/auth/auth.types.js.map +1 -0
  14. package/dist/auth/index.d.ts +3 -0
  15. package/dist/auth/index.d.ts.map +1 -0
  16. package/dist/auth/index.js +3 -0
  17. package/dist/auth/index.js.map +1 -0
  18. package/dist/browser.d.ts +1243 -0
  19. package/dist/browser.d.ts.map +1 -0
  20. package/dist/browser.js +215 -0
  21. package/dist/browser.js.map +1 -0
  22. package/dist/catalog/catalog.sdk.d.ts +149 -0
  23. package/dist/catalog/catalog.sdk.d.ts.map +1 -0
  24. package/dist/catalog/catalog.sdk.js +155 -0
  25. package/dist/catalog/catalog.sdk.js.map +1 -0
  26. package/dist/catalog/index.d.ts +2 -0
  27. package/dist/catalog/index.d.ts.map +1 -0
  28. package/dist/catalog/index.js +2 -0
  29. package/dist/catalog/index.js.map +1 -0
  30. package/dist/client.d.ts +43 -0
  31. package/dist/client.d.ts.map +1 -0
  32. package/dist/client.js +107 -0
  33. package/dist/client.js.map +1 -0
  34. package/dist/config/index.d.ts +2 -0
  35. package/dist/config/index.d.ts.map +1 -0
  36. package/dist/config/index.js +2 -0
  37. package/dist/config/index.js.map +1 -0
  38. package/dist/config/sdk.config.d.ts +81 -0
  39. package/dist/config/sdk.config.d.ts.map +1 -0
  40. package/dist/config/sdk.config.js +2 -0
  41. package/dist/config/sdk.config.js.map +1 -0
  42. package/dist/index.d.ts +17 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +24 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/metadata/index.d.ts +2 -0
  47. package/dist/metadata/index.d.ts.map +1 -0
  48. package/dist/metadata/index.js +2 -0
  49. package/dist/metadata/index.js.map +1 -0
  50. package/dist/metadata/metadata.sdk.d.ts +111 -0
  51. package/dist/metadata/metadata.sdk.d.ts.map +1 -0
  52. package/dist/metadata/metadata.sdk.js +142 -0
  53. package/dist/metadata/metadata.sdk.js.map +1 -0
  54. package/dist/negotiations/index.d.ts +2 -0
  55. package/dist/negotiations/index.d.ts.map +1 -0
  56. package/dist/negotiations/index.js +2 -0
  57. package/dist/negotiations/index.js.map +1 -0
  58. package/dist/negotiations/negotiations.sdk.d.ts +113 -0
  59. package/dist/negotiations/negotiations.sdk.d.ts.map +1 -0
  60. package/dist/negotiations/negotiations.sdk.js +146 -0
  61. package/dist/negotiations/negotiations.sdk.js.map +1 -0
  62. package/dist/requirements/index.d.ts +2 -0
  63. package/dist/requirements/index.d.ts.map +1 -0
  64. package/dist/requirements/index.js +2 -0
  65. package/dist/requirements/index.js.map +1 -0
  66. package/dist/requirements/requirements.sdk.d.ts +52 -0
  67. package/dist/requirements/requirements.sdk.d.ts.map +1 -0
  68. package/dist/requirements/requirements.sdk.js +123 -0
  69. package/dist/requirements/requirements.sdk.js.map +1 -0
  70. package/dist/sso/index.d.ts +3 -0
  71. package/dist/sso/index.d.ts.map +1 -0
  72. package/dist/sso/index.js +3 -0
  73. package/dist/sso/index.js.map +1 -0
  74. package/dist/sso/sso-management.sdk.d.ts +96 -0
  75. package/dist/sso/sso-management.sdk.d.ts.map +1 -0
  76. package/dist/sso/sso-management.sdk.js +152 -0
  77. package/dist/sso/sso-management.sdk.js.map +1 -0
  78. package/dist/sso/sso.sdk.d.ts +75 -0
  79. package/dist/sso/sso.sdk.d.ts.map +1 -0
  80. package/dist/sso/sso.sdk.js +147 -0
  81. package/dist/sso/sso.sdk.js.map +1 -0
  82. package/dist/transfers/index.d.ts +2 -0
  83. package/dist/transfers/index.d.ts.map +1 -0
  84. package/dist/transfers/index.js +2 -0
  85. package/dist/transfers/index.js.map +1 -0
  86. package/dist/transfers/transfers.sdk.d.ts +155 -0
  87. package/dist/transfers/transfers.sdk.d.ts.map +1 -0
  88. package/dist/transfers/transfers.sdk.js +186 -0
  89. package/dist/transfers/transfers.sdk.js.map +1 -0
  90. package/dist/tsg-sdk.d.ts +65 -0
  91. package/dist/tsg-sdk.d.ts.map +1 -0
  92. package/dist/tsg-sdk.js +128 -0
  93. package/dist/tsg-sdk.js.map +1 -0
  94. package/dist/utils/errors.d.ts +67 -0
  95. package/dist/utils/errors.d.ts.map +1 -0
  96. package/dist/utils/errors.js +79 -0
  97. package/dist/utils/errors.js.map +1 -0
  98. package/dist/utils/index.d.ts +4 -0
  99. package/dist/utils/index.d.ts.map +1 -0
  100. package/dist/utils/index.js +4 -0
  101. package/dist/utils/index.js.map +1 -0
  102. package/dist/utils/polling.d.ts +20 -0
  103. package/dist/utils/polling.d.ts.map +1 -0
  104. package/dist/utils/polling.js +35 -0
  105. package/dist/utils/polling.js.map +1 -0
  106. package/dist/utils/shape-validation.d.ts +59 -0
  107. package/dist/utils/shape-validation.d.ts.map +1 -0
  108. package/dist/utils/shape-validation.js +85 -0
  109. package/dist/utils/shape-validation.js.map +1 -0
  110. package/dist/utils/validate.d.ts +47 -0
  111. package/dist/utils/validate.d.ts.map +1 -0
  112. package/dist/utils/validate.js +68 -0
  113. package/dist/utils/validate.js.map +1 -0
  114. package/dist/vendor/common-dtos/abac.policy.d.ts +60 -0
  115. package/dist/vendor/common-dtos/abac.policy.js +2 -0
  116. package/dist/vendor/common-dtos/audit.types.d.ts +74 -0
  117. package/dist/vendor/common-dtos/audit.types.js +9 -0
  118. package/dist/vendor/common-dtos/credential-requirements.d.ts +19 -0
  119. package/dist/vendor/common-dtos/credential-requirements.dto.d.ts +47 -0
  120. package/dist/vendor/common-dtos/credential-requirements.dto.js +251 -0
  121. package/dist/vendor/common-dtos/credential-requirements.js +181 -0
  122. package/dist/vendor/common-dtos/dataplane.dto.d.ts +6 -0
  123. package/dist/vendor/common-dtos/dataplane.dto.js +29 -0
  124. package/dist/vendor/common-dtos/dcp.dto.d.ts +90 -0
  125. package/dist/vendor/common-dtos/dcp.dto.js +490 -0
  126. package/dist/vendor/common-dtos/dcql.dto.d.ts +89 -0
  127. package/dist/vendor/common-dtos/dcql.dto.js +450 -0
  128. package/dist/vendor/common-dtos/did.schemas.d.ts +40 -0
  129. package/dist/vendor/common-dtos/did.schemas.js +260 -0
  130. package/dist/vendor/common-dtos/index.d.ts +19 -0
  131. package/dist/vendor/common-dtos/index.js +19 -0
  132. package/dist/vendor/common-dtos/metadata.dto.d.ts +6 -0
  133. package/dist/vendor/common-dtos/metadata.dto.js +30 -0
  134. package/dist/vendor/common-dtos/negotiations.dto.d.ts +29 -0
  135. package/dist/vendor/common-dtos/negotiations.dto.js +205 -0
  136. package/dist/vendor/common-dtos/permissions.d.ts +237 -0
  137. package/dist/vendor/common-dtos/permissions.js +337 -0
  138. package/dist/vendor/common-dtos/presentation.request.dto.d.ts +9 -0
  139. package/dist/vendor/common-dtos/presentation.request.dto.js +55 -0
  140. package/dist/vendor/common-dtos/presentation.status.dto.d.ts +13 -0
  141. package/dist/vendor/common-dtos/presentation.status.dto.js +83 -0
  142. package/dist/vendor/common-dtos/presentationdefinition.dto.d.ts +75 -0
  143. package/dist/vendor/common-dtos/presentationdefinition.dto.js +448 -0
  144. package/dist/vendor/common-dtos/signatures.dto.d.ts +32 -0
  145. package/dist/vendor/common-dtos/signatures.dto.js +210 -0
  146. package/dist/vendor/common-dtos/transfer.dto.d.ts +17 -0
  147. package/dist/vendor/common-dtos/transfer.dto.js +102 -0
  148. package/dist/vendor/common-dtos/utils.swagger.d.ts +13 -0
  149. package/dist/vendor/common-dtos/utils.swagger.js +63 -0
  150. package/dist/vendor/control-plane-dtos/index.d.ts +5 -0
  151. package/dist/vendor/control-plane-dtos/index.js +5 -0
  152. package/dist/vendor/control-plane-dtos/registry/registry.dto.d.ts +5 -0
  153. package/dist/vendor/control-plane-dtos/registry/registry.dto.js +26 -0
  154. package/dist/vendor/control-plane-dtos/registry/registry.search.dto.d.ts +29 -0
  155. package/dist/vendor/control-plane-dtos/registry/registry.search.dto.js +127 -0
  156. package/dist/vendor/control-plane-dtos/ssi/verifiablePresentations.dto.d.ts +10 -0
  157. package/dist/vendor/control-plane-dtos/ssi/verifiablePresentations.dto.js +44 -0
  158. package/dist/vendor/control-plane-dtos/status/status.dto.d.ts +38 -0
  159. package/dist/vendor/control-plane-dtos/status/status.dto.js +173 -0
  160. package/dist/vendor/sso-bridge-dtos/clients.dto.d.ts +22 -0
  161. package/dist/vendor/sso-bridge-dtos/clients.dto.js +113 -0
  162. package/dist/vendor/sso-bridge-dtos/grants.d.ts +3 -0
  163. package/dist/vendor/sso-bridge-dtos/grants.js +2 -0
  164. package/dist/vendor/sso-bridge-dtos/index.d.ts +5 -0
  165. package/dist/vendor/sso-bridge-dtos/index.js +5 -0
  166. package/dist/vendor/sso-bridge-dtos/users.dto.d.ts +24 -0
  167. package/dist/vendor/sso-bridge-dtos/users.dto.js +90 -0
  168. package/dist/vendor/wallet-dtos/clients.dto.d.ts +22 -0
  169. package/dist/vendor/wallet-dtos/clients.dto.js +14 -0
  170. package/dist/vendor/wallet-dtos/credentials.dto.d.ts +32 -0
  171. package/dist/vendor/wallet-dtos/credentials.dto.js +47 -0
  172. package/dist/vendor/wallet-dtos/index.d.ts +7 -0
  173. package/dist/vendor/wallet-dtos/index.js +7 -0
  174. package/dist/vendor/wallet-dtos/issuance.dto.d.ts +238 -0
  175. package/dist/vendor/wallet-dtos/issuance.dto.js +1140 -0
  176. package/dist/vendor/wallet-dtos/scopes.dto.d.ts +25 -0
  177. package/dist/vendor/wallet-dtos/scopes.dto.js +152 -0
  178. package/dist/vendor/wallet-dtos/status.dto.d.ts +36 -0
  179. package/dist/vendor/wallet-dtos/status.dto.js +170 -0
  180. package/dist/vendor/wallet-dtos/utils/schema-converter.d.ts +14 -0
  181. package/dist/vendor/wallet-dtos/utils/schema-converter.js +43 -0
  182. package/dist/wallet/index.d.ts +2 -0
  183. package/dist/wallet/index.d.ts.map +1 -0
  184. package/dist/wallet/index.js +2 -0
  185. package/dist/wallet/index.js.map +1 -0
  186. package/dist/wallet/wallet.sdk.d.ts +285 -0
  187. package/dist/wallet/wallet.sdk.d.ts.map +1 -0
  188. package/dist/wallet/wallet.sdk.js +384 -0
  189. package/dist/wallet/wallet.sdk.js.map +1 -0
  190. package/package.json +78 -3
@@ -0,0 +1,251 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
11
+ import { Type } from "class-transformer";
12
+ import { ArrayMinSize, IsArray, IsBoolean, IsIn, IsInt, IsOptional, IsString, Matches, Min, MinLength, ValidateNested } from "class-validator";
13
+ import { PresentationDefinition } from "./presentationdefinition.dto.js";
14
+ export class ProfileRef {
15
+ id;
16
+ version;
17
+ digest;
18
+ }
19
+ __decorate([
20
+ ApiProperty(),
21
+ IsString(),
22
+ MinLength(1),
23
+ __metadata("design:type", String)
24
+ ], ProfileRef.prototype, "id", void 0);
25
+ __decorate([
26
+ ApiProperty(),
27
+ IsString(),
28
+ MinLength(1),
29
+ __metadata("design:type", String)
30
+ ], ProfileRef.prototype, "version", void 0);
31
+ __decorate([
32
+ ApiPropertyOptional(),
33
+ IsOptional(),
34
+ IsString(),
35
+ __metadata("design:type", String)
36
+ ], ProfileRef.prototype, "digest", void 0);
37
+ export class VersionedRef {
38
+ id;
39
+ revision;
40
+ digest;
41
+ }
42
+ __decorate([
43
+ ApiProperty(),
44
+ IsString(),
45
+ MinLength(1),
46
+ __metadata("design:type", String)
47
+ ], VersionedRef.prototype, "id", void 0);
48
+ __decorate([
49
+ ApiProperty({ minimum: 1 }),
50
+ IsInt(),
51
+ Min(1),
52
+ __metadata("design:type", Number)
53
+ ], VersionedRef.prototype, "revision", void 0);
54
+ __decorate([
55
+ ApiProperty(),
56
+ IsString(),
57
+ MinLength(1),
58
+ __metadata("design:type", String)
59
+ ], VersionedRef.prototype, "digest", void 0);
60
+ export class CredentialClaimConstraint {
61
+ path;
62
+ operator;
63
+ value;
64
+ }
65
+ __decorate([
66
+ ApiProperty({ type: [String] }),
67
+ IsArray(),
68
+ ArrayMinSize(1),
69
+ IsString({ each: true }),
70
+ __metadata("design:type", Array)
71
+ ], CredentialClaimConstraint.prototype, "path", void 0);
72
+ __decorate([
73
+ ApiProperty({ enum: ["eq", "in", "exists"] }),
74
+ IsIn(["eq", "in", "exists"]),
75
+ __metadata("design:type", String)
76
+ ], CredentialClaimConstraint.prototype, "operator", void 0);
77
+ __decorate([
78
+ ApiPropertyOptional({
79
+ oneOf: [
80
+ { type: "string" },
81
+ { type: "number" },
82
+ { type: "boolean" },
83
+ {
84
+ type: "array",
85
+ items: {
86
+ oneOf: [{ type: "string" }, { type: "number" }, { type: "boolean" }]
87
+ }
88
+ }
89
+ ]
90
+ }),
91
+ IsOptional(),
92
+ __metadata("design:type", Object)
93
+ ], CredentialClaimConstraint.prototype, "value", void 0);
94
+ export class CredentialRequirement {
95
+ id;
96
+ credentialTypes;
97
+ acceptedIssuers;
98
+ holderBinding;
99
+ subjectBinding;
100
+ claimConstraints;
101
+ status;
102
+ }
103
+ __decorate([
104
+ ApiProperty(),
105
+ IsString(),
106
+ MinLength(1),
107
+ __metadata("design:type", String)
108
+ ], CredentialRequirement.prototype, "id", void 0);
109
+ __decorate([
110
+ ApiProperty({ type: [String] }),
111
+ IsArray(),
112
+ ArrayMinSize(1),
113
+ IsString({ each: true }),
114
+ __metadata("design:type", Array)
115
+ ], CredentialRequirement.prototype, "credentialTypes", void 0);
116
+ __decorate([
117
+ ApiPropertyOptional({ type: [String] }),
118
+ IsOptional(),
119
+ IsArray(),
120
+ IsString({ each: true }),
121
+ __metadata("design:type", Array)
122
+ ], CredentialRequirement.prototype, "acceptedIssuers", void 0);
123
+ __decorate([
124
+ ApiPropertyOptional({ enum: ["required", "not-required"] }),
125
+ IsOptional(),
126
+ IsIn(["required", "not-required"]),
127
+ __metadata("design:type", String)
128
+ ], CredentialRequirement.prototype, "holderBinding", void 0);
129
+ __decorate([
130
+ ApiPropertyOptional({
131
+ enum: ["remoteParticipant", "localParticipant", "none"]
132
+ }),
133
+ IsOptional(),
134
+ IsIn(["remoteParticipant", "localParticipant", "none"]),
135
+ __metadata("design:type", String)
136
+ ], CredentialRequirement.prototype, "subjectBinding", void 0);
137
+ __decorate([
138
+ ApiPropertyOptional({ type: () => [CredentialClaimConstraint] }),
139
+ IsOptional(),
140
+ ValidateNested({ each: true }),
141
+ Type(() => CredentialClaimConstraint),
142
+ __metadata("design:type", Array)
143
+ ], CredentialRequirement.prototype, "claimConstraints", void 0);
144
+ __decorate([
145
+ ApiPropertyOptional({ enum: ["valid"] }),
146
+ IsOptional(),
147
+ IsIn(["valid"]),
148
+ __metadata("design:type", String)
149
+ ], CredentialRequirement.prototype, "status", void 0);
150
+ export class CredentialRequirementSetCreate {
151
+ id;
152
+ profile;
153
+ logic;
154
+ requirements;
155
+ }
156
+ __decorate([
157
+ ApiProperty(),
158
+ IsString(),
159
+ MinLength(1),
160
+ Matches(/^[A-Za-z0-9._-]+$/, {
161
+ message: "id may only contain letters, numbers, dots, underscores, and hyphens"
162
+ }),
163
+ __metadata("design:type", String)
164
+ ], CredentialRequirementSetCreate.prototype, "id", void 0);
165
+ __decorate([
166
+ ApiProperty({ type: () => ProfileRef }),
167
+ ValidateNested(),
168
+ Type(() => ProfileRef),
169
+ __metadata("design:type", ProfileRef)
170
+ ], CredentialRequirementSetCreate.prototype, "profile", void 0);
171
+ __decorate([
172
+ ApiProperty({ enum: ["all", "any"] }),
173
+ IsIn(["all", "any"]),
174
+ __metadata("design:type", String)
175
+ ], CredentialRequirementSetCreate.prototype, "logic", void 0);
176
+ __decorate([
177
+ ApiProperty({ type: () => [CredentialRequirement] }),
178
+ IsArray(),
179
+ ArrayMinSize(1),
180
+ ValidateNested({ each: true }),
181
+ Type(() => CredentialRequirement),
182
+ __metadata("design:type", Array)
183
+ ], CredentialRequirementSetCreate.prototype, "requirements", void 0);
184
+ export class CredentialRequirementSet extends CredentialRequirementSetCreate {
185
+ revision;
186
+ presentationDefinition;
187
+ digest;
188
+ }
189
+ __decorate([
190
+ ApiProperty({ minimum: 1 }),
191
+ IsInt(),
192
+ Min(1),
193
+ __metadata("design:type", Number)
194
+ ], CredentialRequirementSet.prototype, "revision", void 0);
195
+ __decorate([
196
+ ApiProperty({ type: () => PresentationDefinition }),
197
+ ValidateNested(),
198
+ Type(() => PresentationDefinition),
199
+ __metadata("design:type", PresentationDefinition)
200
+ ], CredentialRequirementSet.prototype, "presentationDefinition", void 0);
201
+ __decorate([
202
+ ApiProperty(),
203
+ IsString(),
204
+ __metadata("design:type", String)
205
+ ], CredentialRequirementSet.prototype, "digest", void 0);
206
+ export class CredentialRequirementSetPage {
207
+ data;
208
+ total;
209
+ }
210
+ __decorate([
211
+ ApiProperty({ type: () => [CredentialRequirementSet] }),
212
+ IsArray(),
213
+ ValidateNested({ each: true }),
214
+ Type(() => CredentialRequirementSet),
215
+ __metadata("design:type", Array)
216
+ ], CredentialRequirementSetPage.prototype, "data", void 0);
217
+ __decorate([
218
+ ApiProperty({ minimum: 0 }),
219
+ IsInt(),
220
+ Min(0),
221
+ __metadata("design:type", Number)
222
+ ], CredentialRequirementSetPage.prototype, "total", void 0);
223
+ export class RequirementEvaluation {
224
+ id;
225
+ satisfied;
226
+ matchedCredentialIds;
227
+ reason;
228
+ }
229
+ __decorate([
230
+ ApiProperty(),
231
+ IsString(),
232
+ __metadata("design:type", String)
233
+ ], RequirementEvaluation.prototype, "id", void 0);
234
+ __decorate([
235
+ ApiProperty(),
236
+ IsBoolean(),
237
+ __metadata("design:type", Boolean)
238
+ ], RequirementEvaluation.prototype, "satisfied", void 0);
239
+ __decorate([
240
+ ApiProperty({ type: [String] }),
241
+ IsArray(),
242
+ IsString({ each: true }),
243
+ __metadata("design:type", Array)
244
+ ], RequirementEvaluation.prototype, "matchedCredentialIds", void 0);
245
+ __decorate([
246
+ ApiPropertyOptional(),
247
+ IsOptional(),
248
+ IsString(),
249
+ __metadata("design:type", String)
250
+ ], RequirementEvaluation.prototype, "reason", void 0);
251
+ //# sourceMappingURL=credential-requirements.dto.js.map
@@ -0,0 +1,181 @@
1
+ export function lintCredentialRequirementSet(requirementSet) {
2
+ const errors = [];
3
+ if (!requirementSet.id.trim())
4
+ errors.push("Requirement set id is required");
5
+ else if (!/^[A-Za-z0-9._-]+$/.test(requirementSet.id)) {
6
+ errors.push("Requirement set id may only contain letters, numbers, dots, underscores, and hyphens");
7
+ }
8
+ if (!requirementSet.profile.id.trim() ||
9
+ !requirementSet.profile.version.trim()) {
10
+ errors.push("A pinned profile id and version are required");
11
+ }
12
+ if (requirementSet.requirements.length === 0) {
13
+ errors.push("At least one credential requirement is required");
14
+ }
15
+ const ids = requirementSet.requirements.map((requirement) => requirement.id);
16
+ if (new Set(ids).size !== ids.length) {
17
+ errors.push("Credential requirement ids must be unique");
18
+ }
19
+ for (const requirement of requirementSet.requirements) {
20
+ if (!requirement.id.trim())
21
+ errors.push("Credential requirement id is required");
22
+ if (requirement.credentialTypes.length === 0) {
23
+ errors.push(`${requirement.id}: at least one credential type is required`);
24
+ }
25
+ for (const constraint of requirement.claimConstraints ?? []) {
26
+ if (constraint.path.length === 0) {
27
+ errors.push(`${requirement.id}: claim path must not be empty`);
28
+ }
29
+ if (constraint.operator === "in" &&
30
+ (!Array.isArray(constraint.value) || constraint.value.length === 0)) {
31
+ errors.push(`${requirement.id}: in comparison requires a non-empty array value`);
32
+ }
33
+ else if (constraint.operator !== "exists" &&
34
+ constraint.value === undefined) {
35
+ errors.push(`${requirement.id}: claim comparison requires a value`);
36
+ }
37
+ }
38
+ }
39
+ return errors;
40
+ }
41
+ export function credentialMismatch(requirement, credential, context = {}) {
42
+ const subjects = credentialSubjects(credential);
43
+ const types = strings(credential.type).concat(subjects.flatMap((subject) => strings(subject.type ?? subject["@type"])));
44
+ if (!requirement.credentialTypes.some((type) => types.includes(type))) {
45
+ return `Credential type does not satisfy ${requirement.id}`;
46
+ }
47
+ const issuer = typeof credential.issuer === "string"
48
+ ? credential.issuer
49
+ : record(credential.issuer)?.id;
50
+ if (requirement.acceptedIssuers?.length &&
51
+ (typeof issuer !== "string" ||
52
+ !requirement.acceptedIssuers.includes(issuer))) {
53
+ return `Credential issuer is not accepted for ${requirement.id}`;
54
+ }
55
+ const now = (context.now ?? new Date()).getTime();
56
+ const validFrom = credential.validFrom ?? credential.issuanceDate;
57
+ const validUntil = credential.validUntil ?? credential.expirationDate;
58
+ const validFromTime = date(validFrom);
59
+ const validUntilTime = date(validUntil);
60
+ if (typeof validFrom === "string" && validFromTime === undefined) {
61
+ return "Credential has an invalid valid-from date";
62
+ }
63
+ if (typeof validUntil === "string" && validUntilTime === undefined) {
64
+ return "Credential has an invalid expiry date";
65
+ }
66
+ if (validFromTime !== undefined && validFromTime > now) {
67
+ return "Credential is not valid yet";
68
+ }
69
+ if (validUntilTime !== undefined && validUntilTime <= now) {
70
+ return "Credential is expired";
71
+ }
72
+ if (requirement.status === "valid" && isRevoked(credential)) {
73
+ return "Credential status is revoked or suspended";
74
+ }
75
+ const subjectIds = subjects
76
+ .map((subject) => subject.id)
77
+ .filter((id) => typeof id === "string");
78
+ const expectedSubject = requirement.subjectBinding === "remoteParticipant"
79
+ ? context.remoteParticipant
80
+ : requirement.subjectBinding === "localParticipant"
81
+ ? context.localParticipant
82
+ : undefined;
83
+ if (requirement.subjectBinding && requirement.subjectBinding !== "none") {
84
+ if (!expectedSubject) {
85
+ return `${requirement.subjectBinding} binding context is required`;
86
+ }
87
+ if (!subjectIds.includes(expectedSubject)) {
88
+ return `Credential subject is not bound to ${expectedSubject}`;
89
+ }
90
+ }
91
+ if (requirement.holderBinding === "required") {
92
+ if (!context.holder)
93
+ return "Holder binding context is required";
94
+ if (!subjectIds.includes(context.holder)) {
95
+ return `Credential is not bound to holder ${context.holder}`;
96
+ }
97
+ }
98
+ for (const constraint of requirement.claimConstraints ?? []) {
99
+ if (!subjects.some((subject) => claimMatches(subject, constraint))) {
100
+ return `Claim ${constraint.path.join(".")} does not satisfy ${constraint.operator}`;
101
+ }
102
+ }
103
+ return undefined;
104
+ }
105
+ export function findCandidateCredentials(requirement, credentials, context = {}) {
106
+ return credentials.filter((credential) => credentialMismatch(requirement, credential, context) === undefined);
107
+ }
108
+ export function matchCredentialRequirements(requirementSet, credentials, context = {}) {
109
+ const requirements = requirementSet.requirements.map((requirement) => {
110
+ const matches = credentials
111
+ .map((credential, index) => ({ credential, index }))
112
+ .filter(({ credential }) => credentialMismatch(requirement, credential, context) === undefined);
113
+ return {
114
+ id: requirement.id,
115
+ satisfied: matches.length > 0,
116
+ matchedCredentialIds: matches.map(({ credential, index }) => typeof credential.id === "string"
117
+ ? credential.id
118
+ : `credential-${index + 1}`),
119
+ reason: matches.length > 0
120
+ ? undefined
121
+ : `No valid credential satisfies ${requirement.id}`
122
+ };
123
+ });
124
+ const satisfied = requirementSet.logic === "all"
125
+ ? requirements.every((requirement) => requirement.satisfied)
126
+ : requirements.some((requirement) => requirement.satisfied);
127
+ return {
128
+ satisfied,
129
+ requirements,
130
+ usableCredentialIds: [
131
+ ...new Set(requirements.flatMap((requirement) => requirement.matchedCredentialIds))
132
+ ],
133
+ missingRequirementIds: requirements
134
+ .filter((requirement) => !requirement.satisfied)
135
+ .map((requirement) => requirement.id)
136
+ };
137
+ }
138
+ function claimMatches(subject, constraint) {
139
+ let current = subject;
140
+ for (const segment of constraint.path)
141
+ current = record(current)?.[segment];
142
+ if (constraint.operator === "exists")
143
+ return current !== undefined;
144
+ if (constraint.operator === "eq")
145
+ return Object.is(current, constraint.value);
146
+ return (Array.isArray(constraint.value) &&
147
+ constraint.value.some((value) => Object.is(value, current)));
148
+ }
149
+ function isRevoked(credential) {
150
+ const statuses = Array.isArray(credential.credentialStatus)
151
+ ? credential.credentialStatus
152
+ : [credential.credentialStatus];
153
+ return (credential.revoked === true ||
154
+ statuses.some((status) => {
155
+ const value = record(status);
156
+ return ["revoked", "suspended", "invalid"].includes(String(value?.status ?? value?.state ?? "").toLowerCase());
157
+ }));
158
+ }
159
+ function credentialSubjects(credential) {
160
+ const subjects = Array.isArray(credential.credentialSubject)
161
+ ? credential.credentialSubject
162
+ : [credential.credentialSubject];
163
+ return subjects
164
+ .map(record)
165
+ .filter((subject) => subject !== undefined);
166
+ }
167
+ function strings(value) {
168
+ return (Array.isArray(value) ? value : [value]).filter((entry) => typeof entry === "string");
169
+ }
170
+ function record(value) {
171
+ return value !== null && typeof value === "object"
172
+ ? value
173
+ : undefined;
174
+ }
175
+ function date(value) {
176
+ if (typeof value !== "string")
177
+ return undefined;
178
+ const parsed = Date.parse(value);
179
+ return Number.isNaN(parsed) ? undefined : parsed;
180
+ }
181
+ //# sourceMappingURL=credential-requirements.js.map
@@ -0,0 +1,6 @@
1
+ import { DataPlaneDetailsDto } from "@tsg-dsp/common-dsp";
2
+ export declare class DataPlaneStateDto {
3
+ id: string;
4
+ details: DataPlaneDetailsDto;
5
+ }
6
+ //# sourceMappingURL=dataplane.dto.d.ts.map
@@ -0,0 +1,29 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { ApiProperty } from "@nestjs/swagger";
11
+ import { DataPlaneDetailsDto } from "@tsg-dsp/common-dsp";
12
+ import { Type } from "class-transformer";
13
+ import { IsString, ValidateNested } from "class-validator";
14
+ export class DataPlaneStateDto {
15
+ id;
16
+ details;
17
+ }
18
+ __decorate([
19
+ ApiProperty({ example: "44d1f3d6-f65d-4a7c-84db-f92ba826305e" }),
20
+ IsString(),
21
+ __metadata("design:type", String)
22
+ ], DataPlaneStateDto.prototype, "id", void 0);
23
+ __decorate([
24
+ ApiProperty({ type: () => DataPlaneDetailsDto }),
25
+ ValidateNested(),
26
+ Type(() => DataPlaneDetailsDto),
27
+ __metadata("design:type", DataPlaneDetailsDto)
28
+ ], DataPlaneStateDto.prototype, "details", void 0);
29
+ //# sourceMappingURL=dataplane.dto.js.map
@@ -0,0 +1,90 @@
1
+ import { PresentationDefinition, PresentationSubmission } from "./presentationdefinition.dto.js";
2
+ export declare enum PresentationQueryMode {
3
+ PRESENTATION_DEFINITION = "presentation-definition",
4
+ SCOPE = "scope"
5
+ }
6
+ export declare class VerificationRequest {
7
+ presentationDefinition?: PresentationDefinition;
8
+ scope?: string[];
9
+ queryMode?: PresentationQueryMode;
10
+ holderIdToken: string;
11
+ }
12
+ export declare class PresentationQueryMessage {
13
+ "@context": string[];
14
+ type: "PresentationQueryMessage";
15
+ presentationDefinition?: PresentationDefinition;
16
+ scope?: string[];
17
+ }
18
+ export declare class PresentationResponseMessage {
19
+ "@context": string[];
20
+ type: "PresentationResponseMessage";
21
+ presentation: (string | object)[];
22
+ presentationSubmission?: PresentationSubmission;
23
+ }
24
+ export declare class CredentialRequestCredential {
25
+ id: string;
26
+ }
27
+ export declare class CredentialRequestMessage {
28
+ "@context": string[];
29
+ type: "CredentialRequestMessage";
30
+ holderPid: string;
31
+ credentials: CredentialRequestCredential[];
32
+ }
33
+ export declare class CredentialContainer {
34
+ payload: string;
35
+ credentialType: string;
36
+ format: string;
37
+ }
38
+ export declare class CredentialMessage {
39
+ "@context": string[];
40
+ type: "CredentialMessage";
41
+ issuerPid: string;
42
+ holderPid: string;
43
+ status: "ISSUED" | "REJECTED";
44
+ rejectionReason?: string;
45
+ credentials?: CredentialContainer[];
46
+ }
47
+ export declare class CredentialObject {
48
+ id: string;
49
+ type: "CredentialObject";
50
+ credentialType: string;
51
+ credentialSchema?: string;
52
+ offerReason?: string;
53
+ bindingMethods: string[];
54
+ profile: string;
55
+ issuancePolicy?: PresentationDefinition;
56
+ }
57
+ /**
58
+ * A credential offer may contain a sparse CredentialObject. In that case the
59
+ * holder resolves its remaining properties using the issuer's metadata.
60
+ */
61
+ export declare class CredentialOfferObject {
62
+ id: string;
63
+ type?: "CredentialObject";
64
+ credentialType?: string;
65
+ credentialSchema?: string;
66
+ bindingMethods?: string[];
67
+ profile?: string;
68
+ offerReason?: string;
69
+ issuancePolicy?: PresentationDefinition;
70
+ }
71
+ export declare class CredentialOfferMessage {
72
+ "@context": string[];
73
+ type: "CredentialOfferMessage";
74
+ issuer: string;
75
+ credentials: CredentialOfferObject[];
76
+ }
77
+ export declare class IssuerMetadata {
78
+ "@context": string[];
79
+ type: "IssuerMetadata";
80
+ issuer: string;
81
+ credentialsSupported: CredentialObject[];
82
+ }
83
+ export declare class CredentialStatus {
84
+ "@context": string[];
85
+ type: "CredentialStatus";
86
+ issuerPid: string;
87
+ holderPid: string;
88
+ status: "RECEIVED" | "REJECTED" | "ISSUED";
89
+ }
90
+ //# sourceMappingURL=dcp.dto.d.ts.map