@aep-foundation/conformance 0.1.0

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 (62) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +72 -0
  4. package/dist/index.cjs +473 -0
  5. package/dist/index.cjs.map +1 -0
  6. package/dist/index.d.cts +110 -0
  7. package/dist/index.d.ts +110 -0
  8. package/dist/index.js +406 -0
  9. package/dist/index.js.map +1 -0
  10. package/fixtures/aep-specs/manifest.json +61 -0
  11. package/fixtures/aep-specs/schemas/README.md +57 -0
  12. package/fixtures/aep-specs/schemas/api-key-grant-response.schema.json +32 -0
  13. package/fixtures/aep-specs/schemas/basic-grant-response.schema.json +36 -0
  14. package/fixtures/aep-specs/schemas/client-assertion-claims.schema.json +36 -0
  15. package/fixtures/aep-specs/schemas/enroll-request.schema.json +22 -0
  16. package/fixtures/aep-specs/schemas/enroll-response.schema.json +24 -0
  17. package/fixtures/aep-specs/schemas/grant-request.schema.json +20 -0
  18. package/fixtures/aep-specs/schemas/idempotency-metadata.schema.json +26 -0
  19. package/fixtures/aep-specs/schemas/inspect-document.schema.json +136 -0
  20. package/fixtures/aep-specs/schemas/oauth-bearer-grant-response.schema.json +32 -0
  21. package/fixtures/aep-specs/schemas/platform-agent-identity-list-response.schema.json +78 -0
  22. package/fixtures/aep-specs/schemas/platform-agent-identity.schema.json +60 -0
  23. package/fixtures/aep-specs/schemas/platform-discovery.schema.json +107 -0
  24. package/fixtures/aep-specs/schemas/platform-lifecycle-request.schema.json +14 -0
  25. package/fixtures/aep-specs/schemas/platform-lifecycle-response.schema.json +60 -0
  26. package/fixtures/aep-specs/schemas/platform-provision-request.schema.json +18 -0
  27. package/fixtures/aep-specs/schemas/platform-sign-request.schema.json +26 -0
  28. package/fixtures/aep-specs/schemas/platform-sign-response.schema.json +34 -0
  29. package/fixtures/aep-specs/schemas/platform-verification-request.schema.json +22 -0
  30. package/fixtures/aep-specs/schemas/platform-verification-response.schema.json +37 -0
  31. package/fixtures/aep-specs/schemas/problem.schema.json +25 -0
  32. package/fixtures/aep-specs/schemas/revoke-request.schema.json +32 -0
  33. package/fixtures/aep-specs/schemas/revoke-response.schema.json +7 -0
  34. package/fixtures/aep-specs/schemas/status-response.schema.json +28 -0
  35. package/fixtures/aep-specs/test-vectors/README.md +100 -0
  36. package/fixtures/aep-specs/test-vectors/client-assertion/enroll-claims.json +26 -0
  37. package/fixtures/aep-specs/test-vectors/credentials/api-key/grant-response.json +20 -0
  38. package/fixtures/aep-specs/test-vectors/credentials/basic/grant-response.json +21 -0
  39. package/fixtures/aep-specs/test-vectors/credentials/oauth-bearer/grant-response.json +20 -0
  40. package/fixtures/aep-specs/test-vectors/enroll/request-minimal.json +24 -0
  41. package/fixtures/aep-specs/test-vectors/enroll/response-active.json +19 -0
  42. package/fixtures/aep-specs/test-vectors/errors/not-recognized-problem.json +22 -0
  43. package/fixtures/aep-specs/test-vectors/grant-revoke/grant-request-oauth-bearer.json +25 -0
  44. package/fixtures/aep-specs/test-vectors/grant-revoke/revoke-request-all-grant-types.json +23 -0
  45. package/fixtures/aep-specs/test-vectors/grant-revoke/revoke-request-oauth-bearer.json +25 -0
  46. package/fixtures/aep-specs/test-vectors/grant-revoke/revoke-response-empty.json +17 -0
  47. package/fixtures/aep-specs/test-vectors/idempotency/enroll-conflict.json +25 -0
  48. package/fixtures/aep-specs/test-vectors/inspect/minimal-http.json +45 -0
  49. package/fixtures/aep-specs/test-vectors/platform/discovery.json +36 -0
  50. package/fixtures/aep-specs/test-vectors/platform/lifecycle-request.json +13 -0
  51. package/fixtures/aep-specs/test-vectors/platform/lifecycle-response.json +21 -0
  52. package/fixtures/aep-specs/test-vectors/platform/list-response.json +35 -0
  53. package/fixtures/aep-specs/test-vectors/platform/provision-request.json +14 -0
  54. package/fixtures/aep-specs/test-vectors/platform/provision-response-distinct-services.json +44 -0
  55. package/fixtures/aep-specs/test-vectors/platform/provision-response.json +21 -0
  56. package/fixtures/aep-specs/test-vectors/platform/sign-request.json +16 -0
  57. package/fixtures/aep-specs/test-vectors/platform/sign-response.json +18 -0
  58. package/fixtures/aep-specs/test-vectors/platform/verification-request.json +15 -0
  59. package/fixtures/aep-specs/test-vectors/platform/verification-response-recognized.json +19 -0
  60. package/fixtures/aep-specs/test-vectors/platform/verification-response-unrecognized.json +15 -0
  61. package/fixtures/aep-specs/test-vectors/status/response-active.json +22 -0
  62. package/package.json +56 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ # @aep-foundation/conformance
2
+
3
+ ## 0.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1](https://github.com/aep-foundation/aep-node/pull/1) [`3d4713e`](https://github.com/aep-foundation/aep-node/commit/3d4713e2a9cf85478a415192c7c0abc90c374073) Thanks [@nkavian](https://github.com/nkavian)! - Add the initial AEP Node SDK packages, framework adapters, and conformance helpers.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [[`3d4713e`](https://github.com/aep-foundation/aep-node/commit/3d4713e2a9cf85478a415192c7c0abc90c374073)]:
12
+ - @aep-foundation/core@0.1.0
13
+
14
+ ## 0.0.0
15
+
16
+ Initial development version.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AEP Foundation
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,72 @@
1
+ # @aep-foundation/conformance
2
+
3
+ SDK-facing conformance helpers for checking AEP behavior against schemas,
4
+ examples, and test vectors.
5
+
6
+ Initial responsibilities:
7
+
8
+ - load AEP schemas and test vectors
9
+ - validate SDK-produced Inspect documents
10
+ - validate SDK-produced Enroll request/response and Status response objects
11
+ - validate SDK-produced Grant/Revoke request/response and built-in credential
12
+ response objects
13
+ - validate AEP Problem Details error responses and idempotency conflict fixtures
14
+ - load Platform Hosted Identity schemas and test vectors through stable helpers
15
+
16
+ ## Initial API
17
+
18
+ ```ts
19
+ import {
20
+ assertEnrollResponseConformance,
21
+ assertBuiltInGrantResponseConformance,
22
+ assertInspectConformance,
23
+ assertProblemDetailsConformance,
24
+ loadActiveEnrollResponseTestVector,
25
+ loadEnrollIdempotencyConflictTestVector,
26
+ loadOAuthBearerGrantResponseTestVector,
27
+ loadMinimalInspectTestVector,
28
+ loadNotRecognizedProblemTestVector,
29
+ loadPlatformDiscoveryTestVector,
30
+ loadPlatformProvisionRequestTestVector,
31
+ loadPlatformVerificationResponseRecognizedTestVector
32
+ } from "@aep-foundation/conformance";
33
+
34
+ const vector = await loadMinimalInspectTestVector();
35
+ const inspect = assertInspectConformance(vector.expected);
36
+
37
+ const enrollVector = await loadActiveEnrollResponseTestVector();
38
+ const enroll = assertEnrollResponseConformance(enrollVector.expected.body);
39
+
40
+ const grantVector = await loadOAuthBearerGrantResponseTestVector();
41
+ const grant = assertBuiltInGrantResponseConformance("oauth-bearer", grantVector.expected);
42
+
43
+ const errorVector = await loadNotRecognizedProblemTestVector();
44
+ const problem = assertProblemDetailsConformance(errorVector.expected.body);
45
+
46
+ const conflictVector = await loadEnrollIdempotencyConflictTestVector();
47
+ const conflict = assertProblemDetailsConformance(conflictVector.expected.body);
48
+
49
+ const platformDiscoveryVector = await loadPlatformDiscoveryTestVector();
50
+ const platformProvisionVector = await loadPlatformProvisionRequestTestVector();
51
+ const hostedVerificationVector = await loadPlatformVerificationResponseRecognizedTestVector();
52
+ ```
53
+
54
+ The initial conformance surface loads synced spec artifacts from
55
+ `fixtures/aep-specs`, validates Inspect, Enroll, Status, Grant, Revoke, and
56
+ built-in credential response objects, Problem Details errors, and idempotency
57
+ conflict fixtures through `@aep-foundation/core`, exposes Platform Hosted
58
+ Identity test-vector loaders, and exposes stable fixture path helpers for
59
+ package and SDK tests.
60
+
61
+ ## Spec Artifacts
62
+
63
+ Conformance fixtures are synced from the local `aep-specs` checkout into
64
+ `fixtures/aep-specs`.
65
+
66
+ ```sh
67
+ pnpm sync:spec-artifacts
68
+ ```
69
+
70
+ The script expects `../aep-specs/ietf` relative to the repository root by
71
+ default. Set `AEP_SPECS_DIR` to point at another `aep-specs` checkout or at its
72
+ `ietf` directory.
package/dist/index.cjs ADDED
@@ -0,0 +1,473 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var index_exports = {};
32
+ __export(index_exports, {
33
+ AepConformanceError: () => AepConformanceError,
34
+ assertBuiltInGrantResponseConformance: () => assertBuiltInGrantResponseConformance,
35
+ assertEnrollRequestConformance: () => assertEnrollRequestConformance,
36
+ assertEnrollResponseConformance: () => assertEnrollResponseConformance,
37
+ assertGrantRequestConformance: () => assertGrantRequestConformance,
38
+ assertInspectConformance: () => assertInspectConformance,
39
+ assertProblemDetailsConformance: () => assertProblemDetailsConformance,
40
+ assertRevokeRequestConformance: () => assertRevokeRequestConformance,
41
+ assertRevokeResponseConformance: () => assertRevokeResponseConformance,
42
+ assertStatusResponseConformance: () => assertStatusResponseConformance,
43
+ loadActiveEnrollResponseTestVector: () => loadActiveEnrollResponseTestVector,
44
+ loadActiveStatusResponseTestVector: () => loadActiveStatusResponseTestVector,
45
+ loadAllGrantTypesRevokeRequestTestVector: () => loadAllGrantTypesRevokeRequestTestVector,
46
+ loadApiKeyGrantResponseTestVector: () => loadApiKeyGrantResponseTestVector,
47
+ loadBasicGrantResponseTestVector: () => loadBasicGrantResponseTestVector,
48
+ loadEmptyRevokeResponseTestVector: () => loadEmptyRevokeResponseTestVector,
49
+ loadEnrollIdempotencyConflictTestVector: () => loadEnrollIdempotencyConflictTestVector,
50
+ loadMinimalEnrollRequestTestVector: () => loadMinimalEnrollRequestTestVector,
51
+ loadMinimalInspectTestVector: () => loadMinimalInspectTestVector,
52
+ loadNotRecognizedProblemTestVector: () => loadNotRecognizedProblemTestVector,
53
+ loadOAuthBearerGrantRequestTestVector: () => loadOAuthBearerGrantRequestTestVector,
54
+ loadOAuthBearerGrantResponseTestVector: () => loadOAuthBearerGrantResponseTestVector,
55
+ loadOAuthBearerRevokeRequestTestVector: () => loadOAuthBearerRevokeRequestTestVector,
56
+ loadPlatformDiscoveryTestVector: () => loadPlatformDiscoveryTestVector,
57
+ loadPlatformLifecycleRequestTestVector: () => loadPlatformLifecycleRequestTestVector,
58
+ loadPlatformLifecycleResponseTestVector: () => loadPlatformLifecycleResponseTestVector,
59
+ loadPlatformListResponseTestVector: () => loadPlatformListResponseTestVector,
60
+ loadPlatformProvisionRequestTestVector: () => loadPlatformProvisionRequestTestVector,
61
+ loadPlatformProvisionResponseTestVector: () => loadPlatformProvisionResponseTestVector,
62
+ loadPlatformSignRequestTestVector: () => loadPlatformSignRequestTestVector,
63
+ loadPlatformSignResponseTestVector: () => loadPlatformSignResponseTestVector,
64
+ loadPlatformVerificationRequestTestVector: () => loadPlatformVerificationRequestTestVector,
65
+ loadPlatformVerificationResponseRecognizedTestVector: () => loadPlatformVerificationResponseRecognizedTestVector,
66
+ loadPlatformVerificationResponseUnrecognizedTestVector: () => loadPlatformVerificationResponseUnrecognizedTestVector,
67
+ loadSchemaArtifact: () => loadSchemaArtifact,
68
+ loadSpecArtifactManifest: () => loadSpecArtifactManifest,
69
+ loadTestVector: () => loadTestVector,
70
+ schemaArtifactPath: () => schemaArtifactPath,
71
+ schemaArtifactsRoot: () => schemaArtifactsRoot,
72
+ specArtifactManifestPath: () => specArtifactManifestPath,
73
+ specArtifactsRoot: () => specArtifactsRoot,
74
+ testVectorArtifactPath: () => testVectorArtifactPath,
75
+ testVectorArtifactsRoot: () => testVectorArtifactsRoot,
76
+ validateBuiltInGrantResponseConformance: () => validateBuiltInGrantResponseConformance,
77
+ validateEnrollRequestConformance: () => validateEnrollRequestConformance,
78
+ validateEnrollResponseConformance: () => validateEnrollResponseConformance,
79
+ validateGrantRequestConformance: () => validateGrantRequestConformance,
80
+ validateInspectConformance: () => validateInspectConformance,
81
+ validateProblemDetailsConformance: () => validateProblemDetailsConformance,
82
+ validateRevokeRequestConformance: () => validateRevokeRequestConformance,
83
+ validateRevokeResponseConformance: () => validateRevokeResponseConformance,
84
+ validateStatusResponseConformance: () => validateStatusResponseConformance
85
+ });
86
+ module.exports = __toCommonJS(index_exports);
87
+ var import_promises = require("fs/promises");
88
+ var import_node_module = require("module");
89
+ var import_node_path = __toESM(require("path"), 1);
90
+ var import_core = require("@aep-foundation/core");
91
+ var requireFromCwd = (0, import_node_module.createRequire)(`${process.cwd()}/`);
92
+ var packageRoot = import_node_path.default.dirname(
93
+ requireFromCwd.resolve("@aep-foundation/conformance/package.json")
94
+ );
95
+ var specArtifactsRoot = import_node_path.default.join(packageRoot, "fixtures/aep-specs");
96
+ var schemaArtifactsRoot = import_node_path.default.join(specArtifactsRoot, "schemas");
97
+ var testVectorArtifactsRoot = import_node_path.default.join(specArtifactsRoot, "test-vectors");
98
+ var specArtifactManifestPath = import_node_path.default.join(specArtifactsRoot, "manifest.json");
99
+ var AepConformanceError = class extends Error {
100
+ issues;
101
+ constructor(message, issues) {
102
+ super(message);
103
+ this.name = "AepConformanceError";
104
+ this.issues = issues;
105
+ }
106
+ };
107
+ async function loadSpecArtifactManifest() {
108
+ return readJson(specArtifactManifestPath);
109
+ }
110
+ function schemaArtifactPath(relativePath) {
111
+ return import_node_path.default.join(schemaArtifactsRoot, relativePath);
112
+ }
113
+ function testVectorArtifactPath(relativePath) {
114
+ return import_node_path.default.join(testVectorArtifactsRoot, relativePath);
115
+ }
116
+ async function loadSchemaArtifact(relativePath) {
117
+ return readJson(schemaArtifactPath(relativePath));
118
+ }
119
+ async function loadTestVector(relativePath) {
120
+ return readJson(testVectorArtifactPath(relativePath));
121
+ }
122
+ function validateInspectConformance(value) {
123
+ return (0, import_core.validateInspectDocument)(value);
124
+ }
125
+ function validateEnrollRequestConformance(value) {
126
+ return (0, import_core.validateEnrollRequest)(value);
127
+ }
128
+ function validateEnrollResponseConformance(value) {
129
+ return (0, import_core.validateEnrollResponse)(value);
130
+ }
131
+ function validateStatusResponseConformance(value) {
132
+ return (0, import_core.validateStatusResponse)(value);
133
+ }
134
+ function validateGrantRequestConformance(value) {
135
+ return (0, import_core.validateGrantRequest)(value);
136
+ }
137
+ function validateRevokeRequestConformance(value) {
138
+ return (0, import_core.validateRevokeRequest)(value);
139
+ }
140
+ function validateRevokeResponseConformance(value) {
141
+ return (0, import_core.validateRevokeResponse)(value);
142
+ }
143
+ function validateBuiltInGrantResponseConformance(grantType, value) {
144
+ return (0, import_core.validateBuiltInGrantResponse)(grantType, value);
145
+ }
146
+ function validateProblemDetailsConformance(value) {
147
+ return (0, import_core.validateProblemDetails)(value);
148
+ }
149
+ function assertInspectConformance(value) {
150
+ const result = (0, import_core.validateInspectDocument)(value);
151
+ if (!result.ok) {
152
+ throw new AepConformanceError(
153
+ "Inspect document failed AEP conformance validation.",
154
+ result.issues
155
+ );
156
+ }
157
+ return result.value;
158
+ }
159
+ function assertEnrollRequestConformance(value) {
160
+ const result = (0, import_core.validateEnrollRequest)(value);
161
+ if (!result.ok) {
162
+ throw new AepConformanceError(
163
+ "Enroll request failed AEP conformance validation.",
164
+ result.issues
165
+ );
166
+ }
167
+ return result.value;
168
+ }
169
+ function assertEnrollResponseConformance(value) {
170
+ const result = (0, import_core.validateEnrollResponse)(value);
171
+ if (!result.ok) {
172
+ throw new AepConformanceError(
173
+ "Enroll response failed AEP conformance validation.",
174
+ result.issues
175
+ );
176
+ }
177
+ return result.value;
178
+ }
179
+ function assertStatusResponseConformance(value) {
180
+ const result = (0, import_core.validateStatusResponse)(value);
181
+ if (!result.ok) {
182
+ throw new AepConformanceError(
183
+ "Status response failed AEP conformance validation.",
184
+ result.issues
185
+ );
186
+ }
187
+ return result.value;
188
+ }
189
+ function assertGrantRequestConformance(value) {
190
+ const result = (0, import_core.validateGrantRequest)(value);
191
+ if (!result.ok) {
192
+ throw new AepConformanceError(
193
+ "Grant request failed AEP conformance validation.",
194
+ result.issues
195
+ );
196
+ }
197
+ return result.value;
198
+ }
199
+ function assertRevokeRequestConformance(value) {
200
+ const result = (0, import_core.validateRevokeRequest)(value);
201
+ if (!result.ok) {
202
+ throw new AepConformanceError(
203
+ "Revoke request failed AEP conformance validation.",
204
+ result.issues
205
+ );
206
+ }
207
+ return result.value;
208
+ }
209
+ function assertRevokeResponseConformance(value) {
210
+ const result = (0, import_core.validateRevokeResponse)(value);
211
+ if (!result.ok) {
212
+ throw new AepConformanceError(
213
+ "Revoke response failed AEP conformance validation.",
214
+ result.issues
215
+ );
216
+ }
217
+ return result.value;
218
+ }
219
+ function assertBuiltInGrantResponseConformance(grantType, value) {
220
+ const result = (0, import_core.validateBuiltInGrantResponse)(grantType, value);
221
+ if (!result.ok) {
222
+ throw new AepConformanceError(
223
+ "Grant response failed AEP conformance validation.",
224
+ result.issues
225
+ );
226
+ }
227
+ return result.value;
228
+ }
229
+ function assertProblemDetailsConformance(value) {
230
+ const result = (0, import_core.validateProblemDetails)(value);
231
+ if (!result.ok) {
232
+ throw new AepConformanceError(
233
+ "Problem Details response failed AEP conformance validation.",
234
+ result.issues
235
+ );
236
+ }
237
+ return result.value;
238
+ }
239
+ async function loadMinimalInspectTestVector() {
240
+ const vector = await loadTestVector("inspect/minimal-http.json");
241
+ return {
242
+ ...vector,
243
+ expected: (0, import_core.parseInspectDocument)(vector.expected)
244
+ };
245
+ }
246
+ async function loadMinimalEnrollRequestTestVector() {
247
+ const vector = await loadTestVector(
248
+ "enroll/request-minimal.json"
249
+ );
250
+ return {
251
+ ...vector,
252
+ input: (0, import_core.parseEnrollRequest)(vector.input)
253
+ };
254
+ }
255
+ async function loadActiveEnrollResponseTestVector() {
256
+ const vector = await loadTestVector("enroll/response-active.json");
257
+ return {
258
+ ...vector,
259
+ expected: {
260
+ ...vector.expected,
261
+ body: (0, import_core.parseEnrollResponse)(vector.expected.body)
262
+ }
263
+ };
264
+ }
265
+ async function loadActiveStatusResponseTestVector() {
266
+ const vector = await loadTestVector("status/response-active.json");
267
+ return {
268
+ ...vector,
269
+ expected: {
270
+ ...vector.expected,
271
+ body: (0, import_core.parseStatusResponse)(vector.expected.body)
272
+ }
273
+ };
274
+ }
275
+ async function loadOAuthBearerGrantRequestTestVector() {
276
+ const vector = await loadTestVector(
277
+ "grant-revoke/grant-request-oauth-bearer.json"
278
+ );
279
+ return {
280
+ ...vector,
281
+ input: (0, import_core.parseGrantRequest)(vector.input),
282
+ expected: {
283
+ ...vector.expected,
284
+ body: (0, import_core.parseGrantRequest)(vector.expected.body)
285
+ }
286
+ };
287
+ }
288
+ async function loadOAuthBearerRevokeRequestTestVector() {
289
+ const vector = await loadTestVector(
290
+ "grant-revoke/revoke-request-oauth-bearer.json"
291
+ );
292
+ return {
293
+ ...vector,
294
+ input: (0, import_core.parseRevokeRequest)(vector.input),
295
+ expected: {
296
+ ...vector.expected,
297
+ body: (0, import_core.parseRevokeRequest)(vector.expected.body)
298
+ }
299
+ };
300
+ }
301
+ async function loadAllGrantTypesRevokeRequestTestVector() {
302
+ const vector = await loadTestVector("grant-revoke/revoke-request-all-grant-types.json");
303
+ return {
304
+ ...vector,
305
+ input: (0, import_core.parseRevokeRequest)(vector.input),
306
+ expected: {
307
+ ...vector.expected,
308
+ body: (0, import_core.parseRevokeRequest)(vector.expected.body)
309
+ }
310
+ };
311
+ }
312
+ async function loadEmptyRevokeResponseTestVector() {
313
+ const vector = await loadTestVector("grant-revoke/revoke-response-empty.json");
314
+ return {
315
+ ...vector,
316
+ expected: {
317
+ ...vector.expected,
318
+ body: (0, import_core.parseRevokeResponse)(vector.expected.body)
319
+ }
320
+ };
321
+ }
322
+ async function loadOAuthBearerGrantResponseTestVector() {
323
+ return loadBuiltInGrantResponseTestVector(
324
+ "oauth-bearer",
325
+ "credentials/oauth-bearer/grant-response.json"
326
+ );
327
+ }
328
+ async function loadApiKeyGrantResponseTestVector() {
329
+ return loadBuiltInGrantResponseTestVector("api-key", "credentials/api-key/grant-response.json");
330
+ }
331
+ async function loadBasicGrantResponseTestVector() {
332
+ return loadBuiltInGrantResponseTestVector("basic", "credentials/basic/grant-response.json");
333
+ }
334
+ async function loadNotRecognizedProblemTestVector() {
335
+ return loadProblemDetailsResponseTestVector(
336
+ "errors/not-recognized-problem.json"
337
+ );
338
+ }
339
+ async function loadEnrollIdempotencyConflictTestVector() {
340
+ return loadProblemDetailsResponseTestVector(
341
+ "idempotency/enroll-conflict.json"
342
+ );
343
+ }
344
+ function loadPlatformDiscoveryTestVector() {
345
+ return loadTestVector("platform/discovery.json");
346
+ }
347
+ function loadPlatformProvisionRequestTestVector() {
348
+ return loadTestVector(
349
+ "platform/provision-request.json"
350
+ );
351
+ }
352
+ function loadPlatformProvisionResponseTestVector() {
353
+ return loadTestVector(
354
+ "platform/provision-response.json"
355
+ );
356
+ }
357
+ function loadPlatformListResponseTestVector() {
358
+ return loadTestVector(
359
+ "platform/list-response.json"
360
+ );
361
+ }
362
+ function loadPlatformLifecycleRequestTestVector() {
363
+ return loadTestVector(
364
+ "platform/lifecycle-request.json"
365
+ );
366
+ }
367
+ function loadPlatformLifecycleResponseTestVector() {
368
+ return loadTestVector(
369
+ "platform/lifecycle-response.json"
370
+ );
371
+ }
372
+ function loadPlatformSignRequestTestVector() {
373
+ return loadTestVector(
374
+ "platform/sign-request.json"
375
+ );
376
+ }
377
+ function loadPlatformSignResponseTestVector() {
378
+ return loadTestVector(
379
+ "platform/sign-response.json"
380
+ );
381
+ }
382
+ function loadPlatformVerificationRequestTestVector() {
383
+ return loadTestVector(
384
+ "platform/verification-request.json"
385
+ );
386
+ }
387
+ function loadPlatformVerificationResponseRecognizedTestVector() {
388
+ return loadTestVector(
389
+ "platform/verification-response-recognized.json"
390
+ );
391
+ }
392
+ function loadPlatformVerificationResponseUnrecognizedTestVector() {
393
+ return loadTestVector(
394
+ "platform/verification-response-unrecognized.json"
395
+ );
396
+ }
397
+ async function readJson(file) {
398
+ return JSON.parse(await (0, import_promises.readFile)(file, "utf8"));
399
+ }
400
+ async function loadBuiltInGrantResponseTestVector(grantType, relativePath) {
401
+ const vector = await loadTestVector(relativePath);
402
+ return {
403
+ ...vector,
404
+ input: (0, import_core.parseGrantRequest)(vector.input),
405
+ expected: (0, import_core.parseBuiltInGrantResponse)(grantType, vector.expected)
406
+ };
407
+ }
408
+ async function loadProblemDetailsResponseTestVector(relativePath) {
409
+ const vector = await loadTestVector(relativePath);
410
+ return {
411
+ ...vector,
412
+ expected: {
413
+ ...vector.expected,
414
+ body: (0, import_core.parseProblemDetails)(vector.expected.body)
415
+ }
416
+ };
417
+ }
418
+ // Annotate the CommonJS export names for ESM import in node:
419
+ 0 && (module.exports = {
420
+ AepConformanceError,
421
+ assertBuiltInGrantResponseConformance,
422
+ assertEnrollRequestConformance,
423
+ assertEnrollResponseConformance,
424
+ assertGrantRequestConformance,
425
+ assertInspectConformance,
426
+ assertProblemDetailsConformance,
427
+ assertRevokeRequestConformance,
428
+ assertRevokeResponseConformance,
429
+ assertStatusResponseConformance,
430
+ loadActiveEnrollResponseTestVector,
431
+ loadActiveStatusResponseTestVector,
432
+ loadAllGrantTypesRevokeRequestTestVector,
433
+ loadApiKeyGrantResponseTestVector,
434
+ loadBasicGrantResponseTestVector,
435
+ loadEmptyRevokeResponseTestVector,
436
+ loadEnrollIdempotencyConflictTestVector,
437
+ loadMinimalEnrollRequestTestVector,
438
+ loadMinimalInspectTestVector,
439
+ loadNotRecognizedProblemTestVector,
440
+ loadOAuthBearerGrantRequestTestVector,
441
+ loadOAuthBearerGrantResponseTestVector,
442
+ loadOAuthBearerRevokeRequestTestVector,
443
+ loadPlatformDiscoveryTestVector,
444
+ loadPlatformLifecycleRequestTestVector,
445
+ loadPlatformLifecycleResponseTestVector,
446
+ loadPlatformListResponseTestVector,
447
+ loadPlatformProvisionRequestTestVector,
448
+ loadPlatformProvisionResponseTestVector,
449
+ loadPlatformSignRequestTestVector,
450
+ loadPlatformSignResponseTestVector,
451
+ loadPlatformVerificationRequestTestVector,
452
+ loadPlatformVerificationResponseRecognizedTestVector,
453
+ loadPlatformVerificationResponseUnrecognizedTestVector,
454
+ loadSchemaArtifact,
455
+ loadSpecArtifactManifest,
456
+ loadTestVector,
457
+ schemaArtifactPath,
458
+ schemaArtifactsRoot,
459
+ specArtifactManifestPath,
460
+ specArtifactsRoot,
461
+ testVectorArtifactPath,
462
+ testVectorArtifactsRoot,
463
+ validateBuiltInGrantResponseConformance,
464
+ validateEnrollRequestConformance,
465
+ validateEnrollResponseConformance,
466
+ validateGrantRequestConformance,
467
+ validateInspectConformance,
468
+ validateProblemDetailsConformance,
469
+ validateRevokeRequestConformance,
470
+ validateRevokeResponseConformance,
471
+ validateStatusResponseConformance
472
+ });
473
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { readFile } from \"node:fs/promises\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\n\nimport {\n parseBuiltInGrantResponse,\n parseEnrollRequest,\n parseEnrollResponse,\n parseGrantRequest,\n parseInspectDocument,\n parseProblemDetails,\n parseRevokeRequest,\n parseRevokeResponse,\n parseStatusResponse,\n validateBuiltInGrantResponse,\n validateEnrollRequest,\n validateEnrollResponse,\n validateGrantRequest,\n validateInspectDocument,\n validateProblemDetails,\n validateRevokeRequest,\n validateRevokeResponse,\n validateStatusResponse\n} from \"@aep-foundation/core\";\nimport type {\n AepBuiltInGrantResponse,\n AepGrantType,\n AepProblemDetails,\n EnrollRequest,\n EnrollResponse,\n GrantRequest,\n InspectDocument,\n RevokeRequest,\n RevokeResponse,\n StatusResponse,\n ValidationIssue,\n ValidationResult\n} from \"@aep-foundation/core\";\n\nconst requireFromCwd = createRequire(`${process.cwd()}/`);\nconst packageRoot = path.dirname(\n requireFromCwd.resolve(\"@aep-foundation/conformance/package.json\")\n);\n\nexport const specArtifactsRoot = path.join(packageRoot, \"fixtures/aep-specs\");\nexport const schemaArtifactsRoot = path.join(specArtifactsRoot, \"schemas\");\nexport const testVectorArtifactsRoot = path.join(specArtifactsRoot, \"test-vectors\");\nexport const specArtifactManifestPath = path.join(specArtifactsRoot, \"manifest.json\");\n\nexport interface SpecArtifactManifest {\n source: string;\n generated_by: string;\n artifacts: {\n schemas: string[];\n \"test-vectors\": string[];\n };\n}\n\nexport interface AepTestVector<TInput = unknown, TExpected = unknown> {\n id: string;\n title?: string;\n description?: string;\n drafts?: string[];\n category?: string;\n applies_to?: string[];\n profile?: string;\n input: TInput;\n expected: TExpected;\n [key: string]: unknown;\n}\n\nexport class AepConformanceError extends Error {\n readonly issues: ValidationIssue[];\n\n constructor(message: string, issues: ValidationIssue[]) {\n super(message);\n this.name = \"AepConformanceError\";\n this.issues = issues;\n }\n}\n\nexport async function loadSpecArtifactManifest(): Promise<SpecArtifactManifest> {\n return readJson<SpecArtifactManifest>(specArtifactManifestPath);\n}\n\nexport function schemaArtifactPath(relativePath: string): string {\n return path.join(schemaArtifactsRoot, relativePath);\n}\n\nexport function testVectorArtifactPath(relativePath: string): string {\n return path.join(testVectorArtifactsRoot, relativePath);\n}\n\nexport async function loadSchemaArtifact<T = unknown>(relativePath: string): Promise<T> {\n return readJson<T>(schemaArtifactPath(relativePath));\n}\n\nexport async function loadTestVector<TInput = unknown, TExpected = unknown>(\n relativePath: string\n): Promise<AepTestVector<TInput, TExpected>> {\n return readJson<AepTestVector<TInput, TExpected>>(testVectorArtifactPath(relativePath));\n}\n\nexport function validateInspectConformance(value: unknown): ValidationResult<InspectDocument> {\n return validateInspectDocument(value);\n}\n\nexport function validateEnrollRequestConformance(value: unknown): ValidationResult<EnrollRequest> {\n return validateEnrollRequest(value);\n}\n\nexport function validateEnrollResponseConformance(\n value: unknown\n): ValidationResult<EnrollResponse> {\n return validateEnrollResponse(value);\n}\n\nexport function validateStatusResponseConformance(\n value: unknown\n): ValidationResult<StatusResponse> {\n return validateStatusResponse(value);\n}\n\nexport function validateGrantRequestConformance(value: unknown): ValidationResult<GrantRequest> {\n return validateGrantRequest(value);\n}\n\nexport function validateRevokeRequestConformance(value: unknown): ValidationResult<RevokeRequest> {\n return validateRevokeRequest(value);\n}\n\nexport function validateRevokeResponseConformance(\n value: unknown\n): ValidationResult<RevokeResponse> {\n return validateRevokeResponse(value);\n}\n\nexport function validateBuiltInGrantResponseConformance(\n grantType: AepGrantType,\n value: unknown\n): ValidationResult<AepBuiltInGrantResponse> {\n return validateBuiltInGrantResponse(grantType, value);\n}\n\nexport function validateProblemDetailsConformance(\n value: unknown\n): ValidationResult<AepProblemDetails> {\n return validateProblemDetails(value);\n}\n\nexport function assertInspectConformance(value: unknown): InspectDocument {\n const result = validateInspectDocument(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Inspect document failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertEnrollRequestConformance(value: unknown): EnrollRequest {\n const result = validateEnrollRequest(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Enroll request failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertEnrollResponseConformance(value: unknown): EnrollResponse {\n const result = validateEnrollResponse(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Enroll response failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertStatusResponseConformance(value: unknown): StatusResponse {\n const result = validateStatusResponse(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Status response failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertGrantRequestConformance(value: unknown): GrantRequest {\n const result = validateGrantRequest(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Grant request failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertRevokeRequestConformance(value: unknown): RevokeRequest {\n const result = validateRevokeRequest(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Revoke request failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertRevokeResponseConformance(value: unknown): RevokeResponse {\n const result = validateRevokeResponse(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Revoke response failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertBuiltInGrantResponseConformance(\n grantType: AepGrantType,\n value: unknown\n): AepBuiltInGrantResponse {\n const result = validateBuiltInGrantResponse(grantType, value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Grant response failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport function assertProblemDetailsConformance(value: unknown): AepProblemDetails {\n const result = validateProblemDetails(value);\n\n if (!result.ok) {\n throw new AepConformanceError(\n \"Problem Details response failed AEP conformance validation.\",\n result.issues\n );\n }\n\n return result.value;\n}\n\nexport async function loadMinimalInspectTestVector(): Promise<\n AepTestVector<Record<string, never>, InspectDocument>\n> {\n const vector = await loadTestVector<Record<string, never>, unknown>(\"inspect/minimal-http.json\");\n\n return {\n ...vector,\n expected: parseInspectDocument(vector.expected)\n };\n}\n\nexport async function loadMinimalEnrollRequestTestVector(): Promise<\n AepTestVector<EnrollRequest, Record<string, unknown>>\n> {\n const vector = await loadTestVector<unknown, Record<string, unknown>>(\n \"enroll/request-minimal.json\"\n );\n\n return {\n ...vector,\n input: parseEnrollRequest(vector.input)\n };\n}\n\nexport async function loadActiveEnrollResponseTestVector(): Promise<\n AepTestVector<\n Record<string, unknown>,\n { body: EnrollResponse; content_type: string; status: number }\n >\n> {\n const vector = await loadTestVector<\n Record<string, unknown>,\n { body: unknown; content_type: string; status: number }\n >(\"enroll/response-active.json\");\n\n return {\n ...vector,\n expected: {\n ...vector.expected,\n body: parseEnrollResponse(vector.expected.body)\n }\n };\n}\n\nexport async function loadActiveStatusResponseTestVector(): Promise<\n AepTestVector<\n Record<string, unknown>,\n { body: StatusResponse; content_type: string; status: number }\n >\n> {\n const vector = await loadTestVector<\n Record<string, unknown>,\n { body: unknown; content_type: string; status: number }\n >(\"status/response-active.json\");\n\n return {\n ...vector,\n expected: {\n ...vector.expected,\n body: parseStatusResponse(vector.expected.body)\n }\n };\n}\n\nexport async function loadOAuthBearerGrantRequestTestVector(): Promise<\n AepTestVector<GrantRequest, AepCommandRequestExpectation<GrantRequest>>\n> {\n const vector = await loadTestVector<unknown, AepCommandRequestExpectation<unknown>>(\n \"grant-revoke/grant-request-oauth-bearer.json\"\n );\n\n return {\n ...vector,\n input: parseGrantRequest(vector.input),\n expected: {\n ...vector.expected,\n body: parseGrantRequest(vector.expected.body)\n }\n };\n}\n\nexport async function loadOAuthBearerRevokeRequestTestVector(): Promise<\n AepTestVector<RevokeRequest, AepCommandRequestExpectation<RevokeRequest>>\n> {\n const vector = await loadTestVector<unknown, AepCommandRequestExpectation<unknown>>(\n \"grant-revoke/revoke-request-oauth-bearer.json\"\n );\n\n return {\n ...vector,\n input: parseRevokeRequest(vector.input),\n expected: {\n ...vector.expected,\n body: parseRevokeRequest(vector.expected.body)\n }\n };\n}\n\nexport async function loadAllGrantTypesRevokeRequestTestVector(): Promise<\n AepTestVector<\n RevokeRequest,\n AepCommandRequestExpectation<RevokeRequest> & {\n must_not_contain?: string[];\n }\n >\n> {\n const vector = await loadTestVector<\n unknown,\n AepCommandRequestExpectation<unknown> & {\n must_not_contain?: string[];\n }\n >(\"grant-revoke/revoke-request-all-grant-types.json\");\n\n return {\n ...vector,\n input: parseRevokeRequest(vector.input),\n expected: {\n ...vector.expected,\n body: parseRevokeRequest(vector.expected.body)\n }\n };\n}\n\nexport async function loadEmptyRevokeResponseTestVector(): Promise<\n AepTestVector<Record<string, unknown>, AepCommandResponseExpectation<RevokeResponse>>\n> {\n const vector = await loadTestVector<\n Record<string, unknown>,\n AepCommandResponseExpectation<unknown>\n >(\"grant-revoke/revoke-response-empty.json\");\n\n return {\n ...vector,\n expected: {\n ...vector.expected,\n body: parseRevokeResponse(vector.expected.body)\n }\n };\n}\n\nexport async function loadOAuthBearerGrantResponseTestVector(): Promise<\n AepTestVector<GrantRequest, AepBuiltInGrantResponse>\n> {\n return loadBuiltInGrantResponseTestVector(\n \"oauth-bearer\",\n \"credentials/oauth-bearer/grant-response.json\"\n );\n}\n\nexport async function loadApiKeyGrantResponseTestVector(): Promise<\n AepTestVector<GrantRequest, AepBuiltInGrantResponse>\n> {\n return loadBuiltInGrantResponseTestVector(\"api-key\", \"credentials/api-key/grant-response.json\");\n}\n\nexport async function loadBasicGrantResponseTestVector(): Promise<\n AepTestVector<GrantRequest, AepBuiltInGrantResponse>\n> {\n return loadBuiltInGrantResponseTestVector(\"basic\", \"credentials/basic/grant-response.json\");\n}\n\nexport async function loadNotRecognizedProblemTestVector(): Promise<\n AepTestVector<{ failure_class: string }, AepCommandResponseExpectation<AepProblemDetails>>\n> {\n return loadProblemDetailsResponseTestVector<{ failure_class: string }>(\n \"errors/not-recognized-problem.json\"\n );\n}\n\nexport async function loadEnrollIdempotencyConflictTestVector(): Promise<\n AepTestVector<AepEnrollIdempotencyConflictInput, AepCommandResponseExpectation<AepProblemDetails>>\n> {\n return loadProblemDetailsResponseTestVector<AepEnrollIdempotencyConflictInput>(\n \"idempotency/enroll-conflict.json\"\n );\n}\n\nexport function loadPlatformDiscoveryTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\"platform/discovery.json\");\n}\n\nexport function loadPlatformProvisionRequestTestVector(): Promise<\n AepTestVector<Record<string, unknown>, Record<string, never>>\n> {\n return loadTestVector<Record<string, unknown>, Record<string, never>>(\n \"platform/provision-request.json\"\n );\n}\n\nexport function loadPlatformProvisionResponseTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\n \"platform/provision-response.json\"\n );\n}\n\nexport function loadPlatformListResponseTestVector(): Promise<\n AepTestVector<Record<string, unknown>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, unknown>, Record<string, unknown>>(\n \"platform/list-response.json\"\n );\n}\n\nexport function loadPlatformLifecycleRequestTestVector(): Promise<\n AepTestVector<Record<string, unknown>, Record<string, never>>\n> {\n return loadTestVector<Record<string, unknown>, Record<string, never>>(\n \"platform/lifecycle-request.json\"\n );\n}\n\nexport function loadPlatformLifecycleResponseTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\n \"platform/lifecycle-response.json\"\n );\n}\n\nexport function loadPlatformSignRequestTestVector(): Promise<\n AepTestVector<Record<string, unknown>, Record<string, never>>\n> {\n return loadTestVector<Record<string, unknown>, Record<string, never>>(\n \"platform/sign-request.json\"\n );\n}\n\nexport function loadPlatformSignResponseTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\n \"platform/sign-response.json\"\n );\n}\n\nexport function loadPlatformVerificationRequestTestVector(): Promise<\n AepTestVector<Record<string, unknown>, Record<string, never>>\n> {\n return loadTestVector<Record<string, unknown>, Record<string, never>>(\n \"platform/verification-request.json\"\n );\n}\n\nexport function loadPlatformVerificationResponseRecognizedTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\n \"platform/verification-response-recognized.json\"\n );\n}\n\nexport function loadPlatformVerificationResponseUnrecognizedTestVector(): Promise<\n AepTestVector<Record<string, never>, Record<string, unknown>>\n> {\n return loadTestVector<Record<string, never>, Record<string, unknown>>(\n \"platform/verification-response-unrecognized.json\"\n );\n}\n\nasync function readJson<T>(file: string): Promise<T> {\n return JSON.parse(await readFile(file, \"utf8\")) as T;\n}\n\ninterface AepCommandRequestExpectation<TBody> {\n authorization_scheme: string;\n body: TBody;\n client_assertion_op: string;\n content_type: string;\n method: string;\n path: string;\n}\n\nexport interface AepCommandResponseExpectation<TBody> {\n body: TBody;\n content_type: string;\n status: number;\n}\n\nexport interface AepEnrollIdempotencyConflictInput {\n agent_did: string;\n first_body_hash: string;\n idempotency_key: string;\n second_body_hash: string;\n}\n\nasync function loadBuiltInGrantResponseTestVector(\n grantType: AepGrantType,\n relativePath: string\n): Promise<AepTestVector<GrantRequest, AepBuiltInGrantResponse>> {\n const vector = await loadTestVector<unknown, unknown>(relativePath);\n\n return {\n ...vector,\n input: parseGrantRequest(vector.input),\n expected: parseBuiltInGrantResponse(grantType, vector.expected)\n };\n}\n\nasync function loadProblemDetailsResponseTestVector<TInput>(\n relativePath: string\n): Promise<AepTestVector<TInput, AepCommandResponseExpectation<AepProblemDetails>>> {\n const vector = await loadTestVector<TInput, AepCommandResponseExpectation<unknown>>(relativePath);\n\n return {\n ...vector,\n expected: {\n ...vector.expected,\n body: parseProblemDetails(vector.expected.body)\n }\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;AACzB,yBAA8B;AAC9B,uBAAiB;AAEjB,kBAmBO;AAgBP,IAAM,qBAAiB,kCAAc,GAAG,QAAQ,IAAI,CAAC,GAAG;AACxD,IAAM,cAAc,iBAAAA,QAAK;AAAA,EACvB,eAAe,QAAQ,0CAA0C;AACnE;AAEO,IAAM,oBAAoB,iBAAAA,QAAK,KAAK,aAAa,oBAAoB;AACrE,IAAM,sBAAsB,iBAAAA,QAAK,KAAK,mBAAmB,SAAS;AAClE,IAAM,0BAA0B,iBAAAA,QAAK,KAAK,mBAAmB,cAAc;AAC3E,IAAM,2BAA2B,iBAAAA,QAAK,KAAK,mBAAmB,eAAe;AAwB7E,IAAM,sBAAN,cAAkC,MAAM;AAAA,EACpC;AAAA,EAET,YAAY,SAAiB,QAA2B;AACtD,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAChB;AACF;AAEA,eAAsB,2BAA0D;AAC9E,SAAO,SAA+B,wBAAwB;AAChE;AAEO,SAAS,mBAAmB,cAA8B;AAC/D,SAAO,iBAAAA,QAAK,KAAK,qBAAqB,YAAY;AACpD;AAEO,SAAS,uBAAuB,cAA8B;AACnE,SAAO,iBAAAA,QAAK,KAAK,yBAAyB,YAAY;AACxD;AAEA,eAAsB,mBAAgC,cAAkC;AACtF,SAAO,SAAY,mBAAmB,YAAY,CAAC;AACrD;AAEA,eAAsB,eACpB,cAC2C;AAC3C,SAAO,SAA2C,uBAAuB,YAAY,CAAC;AACxF;AAEO,SAAS,2BAA2B,OAAmD;AAC5F,aAAO,qCAAwB,KAAK;AACtC;AAEO,SAAS,iCAAiC,OAAiD;AAChG,aAAO,mCAAsB,KAAK;AACpC;AAEO,SAAS,kCACd,OACkC;AAClC,aAAO,oCAAuB,KAAK;AACrC;AAEO,SAAS,kCACd,OACkC;AAClC,aAAO,oCAAuB,KAAK;AACrC;AAEO,SAAS,gCAAgC,OAAgD;AAC9F,aAAO,kCAAqB,KAAK;AACnC;AAEO,SAAS,iCAAiC,OAAiD;AAChG,aAAO,mCAAsB,KAAK;AACpC;AAEO,SAAS,kCACd,OACkC;AAClC,aAAO,oCAAuB,KAAK;AACrC;AAEO,SAAS,wCACd,WACA,OAC2C;AAC3C,aAAO,0CAA6B,WAAW,KAAK;AACtD;AAEO,SAAS,kCACd,OACqC;AACrC,aAAO,oCAAuB,KAAK;AACrC;AAEO,SAAS,yBAAyB,OAAiC;AACxE,QAAM,aAAS,qCAAwB,KAAK;AAE5C,MAAI,CAAC,OAAO,IAAI;AACd,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AAEO,SAAS,+BAA+B,OAA+B;AAC5E,QAAM,aAAS,mCAAsB,KAAK;AAE1C,MAAI,CAAC,OAAO,IAAI;AACd,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AAEO,SAAS,gCAAgC,OAAgC;AAC9E,QAAM,aAAS,oCAAuB,KAAK;AAE3C,MAAI,CAAC,OAAO,IAAI;AACd,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AAEO,SAAS,gCAAgC,OAAgC;AAC9E,QAAM,aAAS,oCAAuB,KAAK;AAE3C,MAAI,CAAC,OAAO,IAAI;AACd,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AAEO,SAAS,8BAA8B,OAA8B;AAC1E,QAAM,aAAS,kCAAqB,KAAK;AAEzC,MAAI,CAAC,OAAO,IAAI;AACd,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AAEO,SAAS,+BAA+B,OAA+B;AAC5E,QAAM,aAAS,mCAAsB,KAAK;AAE1C,MAAI,CAAC,OAAO,IAAI;AACd,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AAEO,SAAS,gCAAgC,OAAgC;AAC9E,QAAM,aAAS,oCAAuB,KAAK;AAE3C,MAAI,CAAC,OAAO,IAAI;AACd,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AAEO,SAAS,sCACd,WACA,OACyB;AACzB,QAAM,aAAS,0CAA6B,WAAW,KAAK;AAE5D,MAAI,CAAC,OAAO,IAAI;AACd,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AAEO,SAAS,gCAAgC,OAAmC;AACjF,QAAM,aAAS,oCAAuB,KAAK;AAE3C,MAAI,CAAC,OAAO,IAAI;AACd,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AAEA,eAAsB,+BAEpB;AACA,QAAM,SAAS,MAAM,eAA+C,2BAA2B;AAE/F,SAAO;AAAA,IACL,GAAG;AAAA,IACH,cAAU,kCAAqB,OAAO,QAAQ;AAAA,EAChD;AACF;AAEA,eAAsB,qCAEpB;AACA,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,WAAO,gCAAmB,OAAO,KAAK;AAAA,EACxC;AACF;AAEA,eAAsB,qCAKpB;AACA,QAAM,SAAS,MAAM,eAGnB,6BAA6B;AAE/B,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU;AAAA,MACR,GAAG,OAAO;AAAA,MACV,UAAM,iCAAoB,OAAO,SAAS,IAAI;AAAA,IAChD;AAAA,EACF;AACF;AAEA,eAAsB,qCAKpB;AACA,QAAM,SAAS,MAAM,eAGnB,6BAA6B;AAE/B,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU;AAAA,MACR,GAAG,OAAO;AAAA,MACV,UAAM,iCAAoB,OAAO,SAAS,IAAI;AAAA,IAChD;AAAA,EACF;AACF;AAEA,eAAsB,wCAEpB;AACA,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,WAAO,+BAAkB,OAAO,KAAK;AAAA,IACrC,UAAU;AAAA,MACR,GAAG,OAAO;AAAA,MACV,UAAM,+BAAkB,OAAO,SAAS,IAAI;AAAA,IAC9C;AAAA,EACF;AACF;AAEA,eAAsB,yCAEpB;AACA,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,WAAO,gCAAmB,OAAO,KAAK;AAAA,IACtC,UAAU;AAAA,MACR,GAAG,OAAO;AAAA,MACV,UAAM,gCAAmB,OAAO,SAAS,IAAI;AAAA,IAC/C;AAAA,EACF;AACF;AAEA,eAAsB,2CAOpB;AACA,QAAM,SAAS,MAAM,eAKnB,kDAAkD;AAEpD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,WAAO,gCAAmB,OAAO,KAAK;AAAA,IACtC,UAAU;AAAA,MACR,GAAG,OAAO;AAAA,MACV,UAAM,gCAAmB,OAAO,SAAS,IAAI;AAAA,IAC/C;AAAA,EACF;AACF;AAEA,eAAsB,oCAEpB;AACA,QAAM,SAAS,MAAM,eAGnB,yCAAyC;AAE3C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU;AAAA,MACR,GAAG,OAAO;AAAA,MACV,UAAM,iCAAoB,OAAO,SAAS,IAAI;AAAA,IAChD;AAAA,EACF;AACF;AAEA,eAAsB,yCAEpB;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAsB,oCAEpB;AACA,SAAO,mCAAmC,WAAW,yCAAyC;AAChG;AAEA,eAAsB,mCAEpB;AACA,SAAO,mCAAmC,SAAS,uCAAuC;AAC5F;AAEA,eAAsB,qCAEpB;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEA,eAAsB,0CAEpB;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,kCAEd;AACA,SAAO,eAA+D,yBAAyB;AACjG;AAEO,SAAS,yCAEd;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,0CAEd;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,qCAEd;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,yCAEd;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,0CAEd;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,oCAEd;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,qCAEd;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,4CAEd;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,uDAEd;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,SAAS,yDAEd;AACA,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEA,eAAe,SAAY,MAA0B;AACnD,SAAO,KAAK,MAAM,UAAM,0BAAS,MAAM,MAAM,CAAC;AAChD;AAwBA,eAAe,mCACb,WACA,cAC+D;AAC/D,QAAM,SAAS,MAAM,eAAiC,YAAY;AAElE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,WAAO,+BAAkB,OAAO,KAAK;AAAA,IACrC,cAAU,uCAA0B,WAAW,OAAO,QAAQ;AAAA,EAChE;AACF;AAEA,eAAe,qCACb,cACkF;AAClF,QAAM,SAAS,MAAM,eAA+D,YAAY;AAEhG,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAU;AAAA,MACR,GAAG,OAAO;AAAA,MACV,UAAM,iCAAoB,OAAO,SAAS,IAAI;AAAA,IAChD;AAAA,EACF;AACF;","names":["path"]}