dcql 0.2.2

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 (81) hide show
  1. package/.cache/tsbuildinfo.json +1 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/CHANGELOG.md +7 -0
  4. package/dist/esm/src/claims-query/claims-query-result.d.ts +24 -0
  5. package/dist/esm/src/claims-query/claims-query-result.d.ts.map +1 -0
  6. package/dist/esm/src/claims-query/claims-query-result.js +67 -0
  7. package/dist/esm/src/claims-query/claims-query-result.js.map +1 -0
  8. package/dist/esm/src/claims-query/v-claims-query-result.d.ts +82 -0
  9. package/dist/esm/src/claims-query/v-claims-query-result.d.ts.map +1 -0
  10. package/dist/esm/src/claims-query/v-claims-query-result.js +30 -0
  11. package/dist/esm/src/claims-query/v-claims-query-result.js.map +1 -0
  12. package/dist/esm/src/claims-query/v-claims-query.d.ts +34 -0
  13. package/dist/esm/src/claims-query/v-claims-query.d.ts.map +1 -0
  14. package/dist/esm/src/claims-query/v-claims-query.js +24 -0
  15. package/dist/esm/src/claims-query/v-claims-query.js.map +1 -0
  16. package/dist/esm/src/credential-query/credential-query-result.d.ts +101 -0
  17. package/dist/esm/src/credential-query/credential-query-result.d.ts.map +1 -0
  18. package/dist/esm/src/credential-query/credential-query-result.js +91 -0
  19. package/dist/esm/src/credential-query/credential-query-result.js.map +1 -0
  20. package/dist/esm/src/credential-query/v-credential-query-result.d.ts +696 -0
  21. package/dist/esm/src/credential-query/v-credential-query-result.d.ts.map +1 -0
  22. package/dist/esm/src/credential-query/v-credential-query-result.js +44 -0
  23. package/dist/esm/src/credential-query/v-credential-query-result.js.map +1 -0
  24. package/dist/esm/src/credential-query/v-credential-query.d.ts +109 -0
  25. package/dist/esm/src/credential-query/v-credential-query.d.ts.map +1 -0
  26. package/dist/esm/src/credential-query/v-credential-query.js +57 -0
  27. package/dist/esm/src/credential-query/v-credential-query.js.map +1 -0
  28. package/dist/esm/src/e-base.d.ts +25 -0
  29. package/dist/esm/src/e-base.d.ts.map +1 -0
  30. package/dist/esm/src/e-base.js +83 -0
  31. package/dist/esm/src/e-base.js.map +1 -0
  32. package/dist/esm/src/e-vp-query.d.ts +32 -0
  33. package/dist/esm/src/e-vp-query.d.ts.map +1 -0
  34. package/dist/esm/src/e-vp-query.js +27 -0
  35. package/dist/esm/src/e-vp-query.js.map +1 -0
  36. package/dist/esm/src/index.d.ts +7 -0
  37. package/dist/esm/src/index.d.ts.map +1 -0
  38. package/dist/esm/src/index.js +7 -0
  39. package/dist/esm/src/index.js.map +1 -0
  40. package/dist/esm/src/u-query.d.ts +20 -0
  41. package/dist/esm/src/u-query.d.ts.map +1 -0
  42. package/dist/esm/src/u-query.js +25 -0
  43. package/dist/esm/src/u-query.js.map +1 -0
  44. package/dist/esm/src/vp-query/v-vp-query-result.d.ts +767 -0
  45. package/dist/esm/src/vp-query/v-vp-query-result.d.ts.map +1 -0
  46. package/dist/esm/src/vp-query/v-vp-query-result.js +18 -0
  47. package/dist/esm/src/vp-query/v-vp-query-result.js.map +1 -0
  48. package/dist/esm/src/vp-query/v-vp-query.d.ts +94 -0
  49. package/dist/esm/src/vp-query/v-vp-query.d.ts.map +1 -0
  50. package/dist/esm/src/vp-query/v-vp-query.js +52 -0
  51. package/dist/esm/src/vp-query/v-vp-query.js.map +1 -0
  52. package/dist/esm/src/vp-query/vp-query.d.ts +5 -0
  53. package/dist/esm/src/vp-query/vp-query.d.ts.map +1 -0
  54. package/dist/esm/src/vp-query/vp-query.fixtures.d.ts +7 -0
  55. package/dist/esm/src/vp-query/vp-query.fixtures.d.ts.map +1 -0
  56. package/dist/esm/src/vp-query/vp-query.fixtures.js +172 -0
  57. package/dist/esm/src/vp-query/vp-query.fixtures.js.map +1 -0
  58. package/dist/esm/src/vp-query/vp-query.js +21 -0
  59. package/dist/esm/src/vp-query/vp-query.js.map +1 -0
  60. package/dist/esm/src/vp-query/vp-query.test.d.ts +31 -0
  61. package/dist/esm/src/vp-query/vp-query.test.d.ts.map +1 -0
  62. package/dist/esm/src/vp-query/vp-query.test.js +130 -0
  63. package/dist/esm/src/vp-query/vp-query.test.js.map +1 -0
  64. package/eslint.config.js +10 -0
  65. package/package.json +60 -0
  66. package/src/claims-query/claims-query-result.ts +104 -0
  67. package/src/claims-query/v-claims-query-result.ts +42 -0
  68. package/src/claims-query/v-claims-query.ts +34 -0
  69. package/src/credential-query/credential-query-result.ts +130 -0
  70. package/src/credential-query/v-credential-query-result.ts +71 -0
  71. package/src/credential-query/v-credential-query.ts +85 -0
  72. package/src/e-base.ts +116 -0
  73. package/src/e-vp-query.ts +31 -0
  74. package/src/index.ts +6 -0
  75. package/src/u-query.ts +39 -0
  76. package/src/vp-query/v-vp-query-result.ts +23 -0
  77. package/src/vp-query/v-vp-query.ts +71 -0
  78. package/src/vp-query/vp-query.fixtures.ts +178 -0
  79. package/src/vp-query/vp-query.test.ts +156 -0
  80. package/src/vp-query/vp-query.ts +44 -0
  81. package/tsconfig.json +5 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v-vp-query-result.d.ts","sourceRoot":"","sources":["../../../../src/vp-query/v-vp-query-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAI7B,yBAAiB,aAAa,CAAC;IACtB,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGvB,CAAC;IACH,KAAY,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,YAAY,CAAC,CAAC;IAEtD,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOjB,CAAC;IACH,KAAY,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;IAChD,KAAY,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,MAAM,CAAC,CAAC;CAChD;AACD,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC"}
@@ -0,0 +1,18 @@
1
+ import * as v from 'valibot';
2
+ import { CredentialQueryResult } from '../credential-query/v-credential-query-result.js';
3
+ import { VpQuery } from './v-vp-query.js';
4
+ export var VpQueryResult;
5
+ (function (VpQueryResult) {
6
+ VpQueryResult.vQueryResult = v.object({
7
+ areRequiredCredentialsPresent: v.boolean(),
8
+ credential_set_result: v.array(CredentialQueryResult.vModel),
9
+ });
10
+ VpQueryResult.vModel = v.object({
11
+ ...VpQuery.vModel.entries,
12
+ credential_sets: VpQuery.vModel.entries.credential_sets,
13
+ // The number of vp_query_results matches the number of credential_sets if provided or
14
+ // is 1 in case credential sets is not present. The indexes match.
15
+ credential_sets_results: v.array(VpQueryResult.vQueryResult),
16
+ });
17
+ })(VpQueryResult || (VpQueryResult = {}));
18
+ //# sourceMappingURL=v-vp-query-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v-vp-query-result.js","sourceRoot":"","sources":["../../../../src/vp-query/v-vp-query-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,KAAW,aAAa,CAiB7B;AAjBD,WAAiB,aAAa;IACf,0BAAY,GAAG,CAAC,CAAC,MAAM,CAAC;QACnC,6BAA6B,EAAE,CAAC,CAAC,OAAO,EAAE;QAC1C,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC;KAC7D,CAAC,CAAC;IAGU,oBAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAC7B,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO;QACzB,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe;QAEvD,sFAAsF;QACtF,kEAAkE;QAClE,uBAAuB,EAAE,CAAC,CAAC,KAAK,CAAC,cAAA,YAAY,CAAC;KAC/C,CAAC,CAAC;AAGL,CAAC,EAjBgB,aAAa,KAAb,aAAa,QAiB7B"}
@@ -0,0 +1,94 @@
1
+ import * as v from 'valibot';
2
+ export declare namespace VpQuery {
3
+ const vModel: v.ObjectSchema<{
4
+ readonly credentials: v.SchemaWithPipe<[v.ArraySchema<v.VariantSchema<"format", [v.ObjectSchema<{
5
+ readonly id: v.SchemaWithPipe<[v.StringSchema<undefined>, v.RegexAction<string, undefined>]>;
6
+ readonly format: v.LiteralSchema<"mso_mdoc", undefined>;
7
+ readonly meta: v.OptionalSchema<v.ObjectSchema<{
8
+ readonly doctype_values: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, never>;
9
+ }, undefined>, never>;
10
+ readonly claims: v.OptionalSchema<v.SchemaWithPipe<[v.ArraySchema<v.ObjectSchema<{
11
+ readonly id: v.OptionalSchema<v.SchemaWithPipe<[v.StringSchema<undefined>, v.RegexAction<string, undefined>]>, never>;
12
+ readonly namespace: v.StringSchema<undefined>;
13
+ readonly claim_name: v.StringSchema<undefined>;
14
+ readonly values: v.OptionalSchema<v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.BooleanSchema<undefined>], undefined>, undefined>, never>;
15
+ }, undefined>, undefined>, v.NonEmptyAction<{
16
+ namespace: string;
17
+ claim_name: string;
18
+ values?: (string | number | boolean)[] | undefined;
19
+ id?: string | undefined;
20
+ }[], undefined>]>, never>;
21
+ readonly claim_sets: v.OptionalSchema<v.SchemaWithPipe<[v.ArraySchema<v.ArraySchema<v.SchemaWithPipe<[v.StringSchema<undefined>, v.RegexAction<string, undefined>]>, undefined>, undefined>, v.NonEmptyAction<string[][], undefined>]>, never>;
22
+ }, undefined>, v.ObjectSchema<{
23
+ readonly format: v.LiteralSchema<"vc+sd-jwt", undefined>;
24
+ readonly meta: v.OptionalSchema<v.ObjectSchema<{
25
+ readonly vct_values: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, never>;
26
+ }, undefined>, never>;
27
+ readonly id: v.SchemaWithPipe<[v.StringSchema<undefined>, v.RegexAction<string, undefined>]>;
28
+ readonly claims: v.OptionalSchema<v.SchemaWithPipe<[v.ArraySchema<v.ObjectSchema<{
29
+ readonly id: v.OptionalSchema<v.SchemaWithPipe<[v.StringSchema<undefined>, v.RegexAction<string, undefined>]>, never>;
30
+ readonly path: v.OptionalSchema<v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.SchemaWithPipe<[v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, v.LiteralSchema<"*", undefined>], undefined>, undefined>, never>;
31
+ readonly values: v.OptionalSchema<v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.BooleanSchema<undefined>], undefined>, undefined>, never>;
32
+ }, undefined>, undefined>, v.NonEmptyAction<{
33
+ values?: (string | number | boolean)[] | undefined;
34
+ id?: string | undefined;
35
+ path?: (string | number)[] | undefined;
36
+ }[], undefined>]>, never>;
37
+ readonly claim_sets: v.OptionalSchema<v.SchemaWithPipe<[v.ArraySchema<v.ArraySchema<v.SchemaWithPipe<[v.StringSchema<undefined>, v.RegexAction<string, undefined>]>, undefined>, undefined>, v.NonEmptyAction<string[][], undefined>]>, never>;
38
+ }, undefined>, v.ObjectSchema<{
39
+ readonly format: v.PicklistSchema<["jwt_vc_json", "jwt_vc_json-ld"], undefined>;
40
+ readonly id: v.SchemaWithPipe<[v.StringSchema<undefined>, v.RegexAction<string, undefined>]>;
41
+ readonly claims: v.OptionalSchema<v.SchemaWithPipe<[v.ArraySchema<v.ObjectSchema<{
42
+ readonly id: v.OptionalSchema<v.SchemaWithPipe<[v.StringSchema<undefined>, v.RegexAction<string, undefined>]>, never>;
43
+ readonly path: v.OptionalSchema<v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.SchemaWithPipe<[v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>, v.LiteralSchema<"*", undefined>], undefined>, undefined>, never>;
44
+ readonly values: v.OptionalSchema<v.ArraySchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>, v.BooleanSchema<undefined>], undefined>, undefined>, never>;
45
+ }, undefined>, undefined>, v.NonEmptyAction<{
46
+ values?: (string | number | boolean)[] | undefined;
47
+ id?: string | undefined;
48
+ path?: (string | number)[] | undefined;
49
+ }[], undefined>]>, never>;
50
+ readonly claim_sets: v.OptionalSchema<v.SchemaWithPipe<[v.ArraySchema<v.ArraySchema<v.SchemaWithPipe<[v.StringSchema<undefined>, v.RegexAction<string, undefined>]>, undefined>, undefined>, v.NonEmptyAction<string[][], undefined>]>, never>;
51
+ }, undefined>], undefined>, undefined>, v.NonEmptyAction<({
52
+ id: string;
53
+ format: "mso_mdoc";
54
+ meta?: {
55
+ doctype_values?: string[] | undefined;
56
+ } | undefined;
57
+ claims?: {
58
+ namespace: string;
59
+ claim_name: string;
60
+ values?: (string | number | boolean)[] | undefined;
61
+ id?: string | undefined;
62
+ }[] | undefined;
63
+ claim_sets?: string[][] | undefined;
64
+ } | {
65
+ id: string;
66
+ format: "vc+sd-jwt";
67
+ meta?: {
68
+ vct_values?: string[] | undefined;
69
+ } | undefined;
70
+ claims?: {
71
+ values?: (string | number | boolean)[] | undefined;
72
+ id?: string | undefined;
73
+ path?: (string | number)[] | undefined;
74
+ }[] | undefined;
75
+ claim_sets?: string[][] | undefined;
76
+ } | {
77
+ id: string;
78
+ format: "jwt_vc_json" | "jwt_vc_json-ld";
79
+ claims?: {
80
+ values?: (string | number | boolean)[] | undefined;
81
+ id?: string | undefined;
82
+ path?: (string | number)[] | undefined;
83
+ }[] | undefined;
84
+ claim_sets?: string[][] | undefined;
85
+ })[], undefined>]>;
86
+ readonly credential_sets: v.OptionalSchema<v.SchemaWithPipe<[v.ArraySchema<v.ArraySchema<v.SchemaWithPipe<[v.StringSchema<undefined>, v.RegexAction<string, undefined>]>, undefined>, undefined>, v.NonEmptyAction<string[][], undefined>]>, never>;
87
+ }, undefined>;
88
+ type Input = v.InferInput<typeof vModel>;
89
+ type Out = v.InferOutput<typeof vModel>;
90
+ const validate: (vpQuery: Out) => void;
91
+ const query: (vpQuery: VpQuery, credentials: import("../u-query.js").Mdoc[]) => import("./v-vp-query-result.js").VpQueryResult;
92
+ }
93
+ export type VpQuery = VpQuery.Out;
94
+ //# sourceMappingURL=v-vp-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v-vp-query.d.ts","sourceRoot":"","sources":["../../../../src/vp-query/v-vp-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAU7B,yBAAiB,OAAO,CAAC;IAChB,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQjB,CAAC;IACH,KAAY,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;IAChD,KAAY,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,MAAM,CAAC,CAAC;IACxC,MAAM,QAAQ,YAAa,GAAG,SAGpC,CAAC;IACK,MAAM,KAAK,mHAA8B,CAAC;CAClD;AACD,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC"}
@@ -0,0 +1,52 @@
1
+ import * as v from 'valibot';
2
+ import { CredentialQuery } from '../credential-query/v-credential-query.js';
3
+ import { InvalidCredentialQueryIdError, VpQueryCredentialSetError, VpQueryNonUniqueCredentialQueryIdsError, } from '../e-vp-query.js';
4
+ import { credentialSetIdRegex, getIdMetadata } from '../u-query.js';
5
+ import { queryVerifiablePresentation } from './vp-query.js';
6
+ export var VpQuery;
7
+ (function (VpQuery) {
8
+ VpQuery.vModel = v.object({
9
+ credentials: v.pipe(v.array(CredentialQuery.vModel), v.nonEmpty()),
10
+ credential_sets: v.optional(v.pipe(v.array(v.array(v.pipe(v.string(), v.regex(credentialSetIdRegex)))), v.nonEmpty())),
11
+ });
12
+ VpQuery.validate = (vpQuery) => {
13
+ validateUniqueCredentialQueryIds(vpQuery);
14
+ validateCredentialSets(vpQuery);
15
+ };
16
+ VpQuery.query = queryVerifiablePresentation;
17
+ })(VpQuery || (VpQuery = {}));
18
+ // --- validations --- //
19
+ const validateUniqueCredentialQueryIds = (query) => {
20
+ const ids = query.credentials.map(c => c.id);
21
+ const duplicates = ids.filter((id, index) => ids.indexOf(id) !== index);
22
+ if (duplicates.length > 0) {
23
+ throw new VpQueryNonUniqueCredentialQueryIdsError({
24
+ message: `Duplicate credential query ids found: ${duplicates.join(', ')}`,
25
+ });
26
+ }
27
+ };
28
+ const validateCredentialSets = (query) => {
29
+ if (!query.credential_sets)
30
+ return;
31
+ const credentialIds = new Set(query.credentials.map(c => c.id));
32
+ const undefinedCredentials = [];
33
+ for (const credential_set of query.credential_sets) {
34
+ for (const credential_id of credential_set) {
35
+ const { baseId, isRequiredIfPresent } = getIdMetadata(credential_id);
36
+ if (isRequiredIfPresent) {
37
+ throw new InvalidCredentialQueryIdError({
38
+ message: 'Invalid credential-query id. Required if present operator can only be applied to credential queries.',
39
+ });
40
+ }
41
+ if (!credentialIds.has(baseId)) {
42
+ undefinedCredentials.push(credential_id);
43
+ }
44
+ }
45
+ }
46
+ if (undefinedCredentials.length > 1) {
47
+ throw new VpQueryCredentialSetError({
48
+ message: `Credential set contains undefined credential id${undefinedCredentials.length === 1 ? '' : '`s'} '${undefinedCredentials.join(', ')}'`,
49
+ });
50
+ }
51
+ };
52
+ //# sourceMappingURL=v-vp-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v-vp-query.js","sourceRoot":"","sources":["../../../../src/vp-query/v-vp-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Mdoc } from '../u-query.js';
2
+ import type { VpQueryResult } from './v-vp-query-result.js';
3
+ import type { VpQuery } from './v-vp-query.js';
4
+ export declare const queryVerifiablePresentation: (vpQuery: VpQuery, credentials: Mdoc[]) => VpQueryResult;
5
+ //# sourceMappingURL=vp-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vp-query.d.ts","sourceRoot":"","sources":["../../../../src/vp-query/vp-query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,eAAO,MAAM,2BAA2B,YAC7B,OAAO,eACH,IAAI,EAAE,KAClB,aAmCF,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { VpQuery } from './v-vp-query.js';
2
+ export declare const simple: VpQuery;
3
+ export declare const matchingSimple: VpQuery;
4
+ export declare const multiCredentials: VpQuery;
5
+ export declare const credentialAlternatives: VpQuery;
6
+ export declare const claimAlternatives: VpQuery;
7
+ //# sourceMappingURL=vp-query.fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vp-query.fixtures.d.ts","sourceRoot":"","sources":["../../../../src/vp-query/vp-query.fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,eAAO,MAAM,MAAM,EAAE,OAepB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,OAsB5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,OAgC9B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,OAmEpC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,OA+B/B,CAAC"}
@@ -0,0 +1,172 @@
1
+ export const simple = {
2
+ credentials: [
3
+ {
4
+ id: 'my_credential',
5
+ format: 'vc+sd-jwt',
6
+ meta: {
7
+ vct_values: ['https://credentials.example.com/identity_credential'],
8
+ },
9
+ claims: [
10
+ { path: ['last_name'] },
11
+ { path: ['first_name'] },
12
+ { path: ['address', 'street_address'] },
13
+ ],
14
+ },
15
+ ],
16
+ };
17
+ export const matchingSimple = {
18
+ credentials: [
19
+ {
20
+ id: 'my_credential',
21
+ format: 'vc+sd-jwt',
22
+ meta: {
23
+ vct_values: ['https://credentials.example.com/identity_credential'],
24
+ },
25
+ claims: [
26
+ {
27
+ path: ['last_name'],
28
+ values: ['Doe'],
29
+ },
30
+ { path: ['first_name'] },
31
+ { path: ['address', 'street_address'] },
32
+ {
33
+ path: ['postal_code'],
34
+ values: ['90210', '90211'],
35
+ },
36
+ ],
37
+ },
38
+ ],
39
+ };
40
+ export const multiCredentials = {
41
+ credentials: [
42
+ {
43
+ id: 'pid',
44
+ format: 'vc+sd-jwt',
45
+ meta: {
46
+ vct_values: ['https://credentials.example.com/identity_credential'],
47
+ },
48
+ claims: [
49
+ { path: ['given_name'] },
50
+ { path: ['family_name'] },
51
+ { path: ['address', 'street_address'] },
52
+ ],
53
+ },
54
+ {
55
+ id: 'mdl',
56
+ format: 'mso_mdoc',
57
+ meta: {
58
+ doctype_values: ['org.iso.7367.1.mVR'],
59
+ },
60
+ claims: [
61
+ {
62
+ namespace: 'org.iso.7367.1',
63
+ claim_name: 'vehicle_holder',
64
+ },
65
+ {
66
+ namespace: 'org.iso.18013.5.1',
67
+ claim_name: 'first_name',
68
+ },
69
+ ],
70
+ },
71
+ ],
72
+ };
73
+ export const credentialAlternatives = {
74
+ credentials: [
75
+ {
76
+ id: 'pid',
77
+ format: 'vc+sd-jwt',
78
+ meta: {
79
+ vct_values: ['https://credentials.example.com/identity_credential'],
80
+ },
81
+ claims: [
82
+ { path: ['given_name'] },
83
+ { path: ['family_name'] },
84
+ { path: ['address', 'street_address'] },
85
+ ],
86
+ },
87
+ {
88
+ id: 'other_pid',
89
+ format: 'vc+sd-jwt',
90
+ meta: {
91
+ vct_values: ['https://othercredentials.example/pid'],
92
+ },
93
+ claims: [
94
+ { path: ['given_name'] },
95
+ { path: ['family_name'] },
96
+ { path: ['address', 'street_address'] },
97
+ ],
98
+ },
99
+ {
100
+ id: 'pid_reduced_cred_1',
101
+ format: 'vc+sd-jwt',
102
+ meta: {
103
+ vct_values: [
104
+ 'https://credentials.example.com/reduced_identity_credential',
105
+ ],
106
+ },
107
+ claims: [{ path: ['family_name'] }, { path: ['given_name'] }],
108
+ },
109
+ {
110
+ id: 'pid_reduced_cred_2',
111
+ format: 'vc+sd-jwt',
112
+ meta: {
113
+ vct_values: ['https://cred.example/residence_credential'],
114
+ },
115
+ claims: [
116
+ { path: ['postal_code'] },
117
+ { path: ['locality'] },
118
+ { path: ['region'] },
119
+ ],
120
+ },
121
+ {
122
+ id: 'nice_to_have',
123
+ format: 'vc+sd-jwt',
124
+ meta: {
125
+ vct_values: ['https://company.example/company_rewards'],
126
+ },
127
+ claims: [
128
+ { id: 'current', path: ['rewards_number'] },
129
+ { id: 'legacy', path: ['legacy_system_rewards_number'] },
130
+ ],
131
+ claim_sets: [['current', 'legacy?']],
132
+ },
133
+ ],
134
+ credential_sets: [
135
+ // deliver the pid, or the other_pid, or both pid_reduced_cred1 + 2; nice_to_have is optional in all cases
136
+ ['pid', 'nice_to_have?'],
137
+ ['other_pid', 'nice_to_have?'],
138
+ ['pid_reduced_cred_1', 'pid_reduced_cred_2', 'nice_to_have?'],
139
+ ],
140
+ };
141
+ export const claimAlternatives = {
142
+ credentials: [
143
+ {
144
+ id: 'pid',
145
+ format: 'vc+sd-jwt',
146
+ meta: {
147
+ vct_values: ['https://credentials.example.com/identity_credential'],
148
+ },
149
+ // Comments in JSON to be removed before merging PR, they are just here to make Brian less sad
150
+ claims: [
151
+ // define claims, may add other properties like a purpose to each claims
152
+ {
153
+ id: 'a', // required for use in claim_sets below; if that is omitted, the id is optional
154
+ path: ['last_name'],
155
+ },
156
+ { id: 'b', path: ['postal_code'] },
157
+ { id: 'c', path: ['locality'] },
158
+ { id: 'd', path: ['region'] },
159
+ { id: 'e', path: ['date_of_birth'] },
160
+ { id: 'f', path: ['email'] },
161
+ ],
162
+ claim_sets: [
163
+ // defines the rules
164
+ // postal code or (locality and region), last_name, and date_of_birth are mandatory; email is optional
165
+ ['a', 'b', 'e', 'f?'],
166
+ ['a', 'c', 'd', 'e', 'f?'],
167
+ // Note: the ? to mark a claim as optional is syntactical sugar; the rules could be rewritten without it, but that would require a lot of repetition
168
+ ],
169
+ },
170
+ ],
171
+ };
172
+ //# sourceMappingURL=vp-query.fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vp-query.fixtures.js","sourceRoot":"","sources":["../../../../src/vp-query/vp-query.fixtures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { queryCredentialSet } from '../credential-query/credential-query-result.js';
2
+ export const queryVerifiablePresentation = (vpQuery, credentials) => {
3
+ const credential_sets_results = (vpQuery.credential_sets ?? [undefined]).map(credential_set => {
4
+ // TODO: SHOULD WE THROW IN CASE AN EMPTY CREDENTIAL_SET IS PASSED?
5
+ if (credential_set?.length === 0) {
6
+ return {
7
+ areRequiredCredentialsPresent: true,
8
+ credential_set_result: [],
9
+ };
10
+ }
11
+ const credentialSetQueryResult = queryCredentialSet(vpQuery.credentials, credentials, credential_set);
12
+ const areRequiredCredentialsPresent = credentialSetQueryResult.every(credentialQueryResult => credentialQueryResult.isOptional ||
13
+ credentialQueryResult.claim_sets_results.some(claimSetResult => claimSetResult.some(claimQueryResult => claimQueryResult.areRequiredClaimsPresent)));
14
+ return {
15
+ areRequiredCredentialsPresent,
16
+ credential_set_result: credentialSetQueryResult,
17
+ };
18
+ });
19
+ return { ...vpQuery, credential_sets_results };
20
+ };
21
+ //# sourceMappingURL=vp-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vp-query.js","sourceRoot":"","sources":["../../../../src/vp-query/vp-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAKpF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAAgB,EAChB,WAAmB,EACJ,EAAE;IACjB,MAAM,uBAAuB,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAC1E,cAAc,CAAC,EAAE;QACf,mEAAmE;QACnE,IAAI,cAAc,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,6BAA6B,EAAE,IAAI;gBACnC,qBAAqB,EAAE,EAAE;aAC1B,CAAC;QACJ,CAAC;QAED,MAAM,wBAAwB,GAAG,kBAAkB,CACjD,OAAO,CAAC,WAAW,EACnB,WAAW,EACX,cAAmD,CACpD,CAAC;QAEF,MAAM,6BAA6B,GAAG,wBAAwB,CAAC,KAAK,CAClE,qBAAqB,CAAC,EAAE,CACtB,qBAAqB,CAAC,UAAU;YAChC,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAC7D,cAAc,CAAC,IAAI,CACjB,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,CAAC,wBAAwB,CAC9D,CACF,CACJ,CAAC;QAEF,OAAO;YACL,6BAA6B;YAC7B,qBAAqB,EAAE,wBAAwB;SAChD,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO,EAAE,GAAG,OAAO,EAAE,uBAAuB,EAAE,CAAC;AACjD,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { VpQueryResult } from './v-vp-query-result.js';
2
+ export declare class ResultBuilder {
3
+ private vpQueryResult;
4
+ private autoComplete;
5
+ constructor(vpQueryResult: VpQueryResult);
6
+ disableAutoComplete(disabled?: boolean): void;
7
+ getSolutionSpace(): {
8
+ credentialSetIndex: number;
9
+ claimSets: {
10
+ claimSetIndex: number;
11
+ credentialIndices: number[];
12
+ }[];
13
+ }[];
14
+ }
15
+ export declare const simpleMdoc: {
16
+ credentials: {
17
+ id: string;
18
+ format: "mso_mdoc";
19
+ meta: {
20
+ doctype_values: string[];
21
+ };
22
+ claims: {
23
+ id: string;
24
+ namespace: string;
25
+ claim_name: string;
26
+ }[];
27
+ claim_sets: string[][];
28
+ }[];
29
+ credential_sets: string[][];
30
+ };
31
+ //# sourceMappingURL=vp-query.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vp-query.test.d.ts","sourceRoot":"","sources":["../../../../src/vp-query/vp-query.test.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,qBAAa,aAAa;IAEZ,OAAO,CAAC,aAAa;IADjC,OAAO,CAAC,YAAY,CAAU;gBACV,aAAa,EAAE,aAAa;IAIhD,mBAAmB,CAAC,QAAQ,CAAC,EAAE,OAAO;IAItC,gBAAgB;4BAEQ,MAAM;mBACf;YACT,aAAa,EAAE,MAAM,CAAC;YACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;SAC7B,EAAE;;CAoCR;AAED,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;CAsDJ,CAAC"}
@@ -0,0 +1,130 @@
1
+ import { describe, it } from 'node:test';
2
+ import * as v from 'valibot';
3
+ import { VpQuery } from './v-vp-query.js';
4
+ export class ResultBuilder {
5
+ vpQueryResult;
6
+ autoComplete;
7
+ constructor(vpQueryResult) {
8
+ this.vpQueryResult = vpQueryResult;
9
+ this.autoComplete = false;
10
+ }
11
+ disableAutoComplete(disabled) {
12
+ this.autoComplete = !(disabled ?? true);
13
+ }
14
+ getSolutionSpace() {
15
+ const solutionSpace = [];
16
+ for (const [credentialSetIndex, credentialSetResults,] of this.vpQueryResult.credential_sets_results.entries()) {
17
+ if (!credentialSetResults.areRequiredCredentialsPresent)
18
+ continue;
19
+ const claimSets = credentialSetResults.credential_set_result.flatMap(credentialSetResultsForCredential => {
20
+ return credentialSetResultsForCredential.claim_sets_results.flatMap((claimSetResults, claimSetIndex) => {
21
+ const credentialIndices = claimSetResults
22
+ .map((claimSetResultForCredential, credentialIndex) => claimSetResultForCredential.areRequiredClaimsPresent
23
+ ? credentialIndex
24
+ : -1)
25
+ .filter(index => index !== -1);
26
+ return credentialIndices.length > 0
27
+ ? [{ claimSetIndex, credentialIndices }]
28
+ : [];
29
+ });
30
+ });
31
+ if (claimSets.length > 0) {
32
+ solutionSpace.push({ credentialSetIndex, claimSets });
33
+ }
34
+ }
35
+ return solutionSpace;
36
+ }
37
+ }
38
+ export const simpleMdoc = {
39
+ credentials: [
40
+ {
41
+ id: 'my_credential',
42
+ format: 'mso_mdoc',
43
+ meta: {
44
+ doctype_values: ['org.iso.7367.1.mVR'],
45
+ },
46
+ claims: [
47
+ {
48
+ id: 'a',
49
+ namespace: 'org.iso.7367.1',
50
+ claim_name: 'vehicle_holder',
51
+ },
52
+ {
53
+ id: 'b',
54
+ namespace: 'org.iso.18013.5.1',
55
+ claim_name: 'first_name',
56
+ },
57
+ {
58
+ id: 'c',
59
+ namespace: 'org.iso.18013.5.1',
60
+ claim_name: 'invalid',
61
+ },
62
+ ],
63
+ claim_sets: [['a'], ['b'], ['c'], ['a', 'b?!']],
64
+ },
65
+ {
66
+ id: 'my_credential2',
67
+ format: 'mso_mdoc',
68
+ meta: {
69
+ doctype_values: ['org.iso.7367.1.mVR'],
70
+ },
71
+ claims: [
72
+ {
73
+ id: 'a',
74
+ namespace: 'org.iso.7367.1',
75
+ claim_name: 'vehicle_holder',
76
+ },
77
+ {
78
+ id: 'b',
79
+ namespace: 'org.iso.18013.5.1',
80
+ claim_name: 'first_name',
81
+ },
82
+ {
83
+ id: 'c',
84
+ namespace: 'org.iso.18013.5.1',
85
+ claim_name: 'invalid',
86
+ },
87
+ ],
88
+ claim_sets: [['a'], ['b'], ['c'], ['a', 'b?!']],
89
+ },
90
+ ],
91
+ credential_sets: [['my_credential?'], ['my_credential']],
92
+ };
93
+ const validMdoc = {
94
+ docType: 'org.iso.7367.1.mVR',
95
+ namespaces: {
96
+ 'org.iso.7367.1': {
97
+ vehicle_holder: 'Martin Auer',
98
+ non_disclosed: 'secret',
99
+ },
100
+ 'org.iso.18013.5.1': {
101
+ first_name: 'Martin Auer',
102
+ },
103
+ },
104
+ };
105
+ await describe('credential-parser', async () => {
106
+ await it('mdoc-credential-parser', _t => {
107
+ const query = v.parse(VpQuery.vModel, simpleMdoc);
108
+ VpQuery.validate(query);
109
+ const res = VpQuery.query(query, [
110
+ validMdoc,
111
+ {
112
+ docType: 'org.iso.7367.1.mVR',
113
+ namespaces: {
114
+ 'org.iso.7367.1': {
115
+ non_disclosed: 'secret',
116
+ },
117
+ 'org.iso.18013.5.1': {
118
+ first_name: 'Martin Auer',
119
+ },
120
+ },
121
+ },
122
+ { docType: 'some', namespaces: {} },
123
+ ]);
124
+ console.log(res);
125
+ const builder = new ResultBuilder(res);
126
+ const solutionSpace = builder.getSolutionSpace();
127
+ console.log(solutionSpace);
128
+ });
129
+ });
130
+ //# sourceMappingURL=vp-query.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vp-query.test.js","sourceRoot":"","sources":["../../../../src/vp-query/vp-query.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import baseConfig, { restrictEnvAccess } from '@ausweis/eslint/base';
2
+
3
+ /** @type {import('typescript-eslint').Config} */
4
+ export default [
5
+ {
6
+ ignores: ['dist/**'],
7
+ },
8
+ ...baseConfig,
9
+ ...restrictEnvAccess,
10
+ ];