@sd-jwt/types 0.3.2-next.109 → 0.3.2-next.111

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.
package/dist/index.d.mts CHANGED
@@ -129,5 +129,52 @@ type Frame<Payload> = Payload extends Array<infer U> ? U extends object ? Record
129
129
  [K in keyof Payload]?: Payload[K] extends object ? Frame<Payload[K]> : never;
130
130
  } & SD<Payload> & DECOY> : SD<Payload> & DECOY;
131
131
  type DisclosureFrame<T extends object> = Frame<T>;
132
+ /**
133
+ * This is a presentationFrame type that is used to represent the structure of what is being presented.
134
+ * PresentationFrame is made from the payload type.
135
+ * const claims = {
136
+ firstname: 'John',
137
+ lastname: 'Doe',
138
+ ssn: '123-45-6789',
139
+ id: '1234',
140
+ data: {
141
+ firstname: 'John',
142
+ lastname: 'Doe',
143
+ ssn: '123-45-6789',
144
+ list: [{ r: 'd' }, 'b', 'c'],
145
+ list2: ['1', '2', '3'],
146
+ list3: ['1', null, 2],
147
+ },
148
+ data2: {
149
+ hi: 'bye',
150
+ },
151
+ };
152
+
153
+ Example of a presentationFrame:
154
+ const presentationFrame: PresentationFrame<typeof claims> = {
155
+ firstname: true,
156
+ lastname: true,
157
+ ssn: true,
158
+ id: 'true',
159
+ data: {
160
+ firstname: true,
161
+ list: {
162
+ 1: true,
163
+ 0: {
164
+ r: true,
165
+ },
166
+ },
167
+ list2: {
168
+ 1: true,
169
+ },
170
+ list3: true,
171
+ },
172
+ data2: true,
173
+ };
174
+ */
175
+ type PFrame<Payload> = Payload extends Array<infer U> ? U extends object ? Record<number, PFrame<U> | boolean> | boolean : Record<number, boolean> | boolean : {
176
+ [K in keyof Payload]?: Payload[K] extends object ? PFrame<Payload[K]> | boolean : boolean;
177
+ };
178
+ type PresentationFrame<T extends object> = PFrame<T>;
132
179
 
133
- export { type Base64urlString, type DECOY, type DisclosureData, type DisclosureFrame, type Hasher, type HasherAndAlg, type HasherAndAlgSync, type HasherSync, type JwtPayload, type KBOptions, KB_JWT_TYP, type KbVerifier, type OrPromise, type SD, type SDJWTCompact, type SDJWTConfig, SD_DECOY, SD_DIGEST, SD_LIST_KEY, SD_SEPARATOR, type SaltGenerator, type SaltGeneratorSync, type Signer, type SignerSync, type Verifier, type VerifierSync, type kbHeader, type kbPayload };
180
+ export { type Base64urlString, type DECOY, type DisclosureData, type DisclosureFrame, type Hasher, type HasherAndAlg, type HasherAndAlgSync, type HasherSync, type JwtPayload, type KBOptions, KB_JWT_TYP, type KbVerifier, type OrPromise, type PresentationFrame, type SD, type SDJWTCompact, type SDJWTConfig, SD_DECOY, SD_DIGEST, SD_LIST_KEY, SD_SEPARATOR, type SaltGenerator, type SaltGeneratorSync, type Signer, type SignerSync, type Verifier, type VerifierSync, type kbHeader, type kbPayload };
package/dist/index.d.ts CHANGED
@@ -129,5 +129,52 @@ type Frame<Payload> = Payload extends Array<infer U> ? U extends object ? Record
129
129
  [K in keyof Payload]?: Payload[K] extends object ? Frame<Payload[K]> : never;
130
130
  } & SD<Payload> & DECOY> : SD<Payload> & DECOY;
131
131
  type DisclosureFrame<T extends object> = Frame<T>;
132
+ /**
133
+ * This is a presentationFrame type that is used to represent the structure of what is being presented.
134
+ * PresentationFrame is made from the payload type.
135
+ * const claims = {
136
+ firstname: 'John',
137
+ lastname: 'Doe',
138
+ ssn: '123-45-6789',
139
+ id: '1234',
140
+ data: {
141
+ firstname: 'John',
142
+ lastname: 'Doe',
143
+ ssn: '123-45-6789',
144
+ list: [{ r: 'd' }, 'b', 'c'],
145
+ list2: ['1', '2', '3'],
146
+ list3: ['1', null, 2],
147
+ },
148
+ data2: {
149
+ hi: 'bye',
150
+ },
151
+ };
152
+
153
+ Example of a presentationFrame:
154
+ const presentationFrame: PresentationFrame<typeof claims> = {
155
+ firstname: true,
156
+ lastname: true,
157
+ ssn: true,
158
+ id: 'true',
159
+ data: {
160
+ firstname: true,
161
+ list: {
162
+ 1: true,
163
+ 0: {
164
+ r: true,
165
+ },
166
+ },
167
+ list2: {
168
+ 1: true,
169
+ },
170
+ list3: true,
171
+ },
172
+ data2: true,
173
+ };
174
+ */
175
+ type PFrame<Payload> = Payload extends Array<infer U> ? U extends object ? Record<number, PFrame<U> | boolean> | boolean : Record<number, boolean> | boolean : {
176
+ [K in keyof Payload]?: Payload[K] extends object ? PFrame<Payload[K]> | boolean : boolean;
177
+ };
178
+ type PresentationFrame<T extends object> = PFrame<T>;
132
179
 
133
- export { type Base64urlString, type DECOY, type DisclosureData, type DisclosureFrame, type Hasher, type HasherAndAlg, type HasherAndAlgSync, type HasherSync, type JwtPayload, type KBOptions, KB_JWT_TYP, type KbVerifier, type OrPromise, type SD, type SDJWTCompact, type SDJWTConfig, SD_DECOY, SD_DIGEST, SD_LIST_KEY, SD_SEPARATOR, type SaltGenerator, type SaltGeneratorSync, type Signer, type SignerSync, type Verifier, type VerifierSync, type kbHeader, type kbPayload };
180
+ export { type Base64urlString, type DECOY, type DisclosureData, type DisclosureFrame, type Hasher, type HasherAndAlg, type HasherAndAlgSync, type HasherSync, type JwtPayload, type KBOptions, KB_JWT_TYP, type KbVerifier, type OrPromise, type PresentationFrame, type SD, type SDJWTCompact, type SDJWTConfig, SD_DECOY, SD_DIGEST, SD_LIST_KEY, SD_SEPARATOR, type SaltGenerator, type SaltGeneratorSync, type Signer, type SignerSync, type Verifier, type VerifierSync, type kbHeader, type kbPayload };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sd-jwt/types",
3
- "version": "0.3.2-next.109+f02d6b0",
3
+ "version": "0.3.2-next.111+fae0aef",
4
4
  "description": "sd-jwt draft 7 implementation in typescript",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -53,5 +53,5 @@
53
53
  "esm"
54
54
  ]
55
55
  },
56
- "gitHead": "f02d6b093dd8105560ba327c23c0f383e92d31c7"
56
+ "gitHead": "fae0aefcf7076b31a80cafda42b1ebad2f95ff8c"
57
57
  }
@@ -5,8 +5,28 @@ import {
5
5
  SD_DIGEST,
6
6
  SD_DECOY,
7
7
  KB_JWT_TYP,
8
+ DisclosureFrame,
9
+ PresentationFrame,
8
10
  } from '../index';
9
11
 
12
+ const claims = {
13
+ firstname: 'John',
14
+ lastname: 'Doe',
15
+ ssn: '123-45-6789',
16
+ id: '1234',
17
+ data: {
18
+ firstname: 'John',
19
+ lastname: 'Doe',
20
+ ssn: '123-45-6789',
21
+ list: [{ r: 'd' }, 'b', 'c'],
22
+ list2: ['1', '2', '3'],
23
+ list3: ['1', null, 2],
24
+ },
25
+ data2: {
26
+ hi: 'bye',
27
+ },
28
+ };
29
+
10
30
  describe('Variable tests', () => {
11
31
  test('SD_SEPARATOR', () => {
12
32
  expect(SD_SEPARATOR).toBe('~');
@@ -27,4 +47,42 @@ describe('Variable tests', () => {
27
47
  test('KB_JWT_TYP', () => {
28
48
  expect(KB_JWT_TYP).toBe('kb+jwt');
29
49
  });
50
+
51
+ test('DisclosureFrameType test', () => {
52
+ const disclosureFrame: DisclosureFrame<typeof claims> = {
53
+ _sd: ['data', 'firstname', 'data2'],
54
+ data: {
55
+ _sd: ['list', 'ssn'],
56
+ _sd_decoy: 2,
57
+ list: {
58
+ _sd: [0, 2],
59
+ 0: {
60
+ _sd: ['r'],
61
+ },
62
+ },
63
+ },
64
+ };
65
+ expect(disclosureFrame).toBeDefined();
66
+ });
67
+
68
+ test('PresentationFrameType test', () => {
69
+ const presentationFrame: PresentationFrame<typeof claims> = {
70
+ firstname: true,
71
+ data: {
72
+ firstname: true,
73
+ list: {
74
+ 1: true,
75
+ 0: {
76
+ r: true,
77
+ },
78
+ },
79
+ list2: {
80
+ 1: true,
81
+ },
82
+ list3: true,
83
+ },
84
+ data2: true,
85
+ };
86
+ expect(presentationFrame).toBeDefined();
87
+ });
30
88
  });
package/src/type.ts CHANGED
@@ -154,3 +154,58 @@ type Frame<Payload> = Payload extends Array<infer U>
154
154
  : SD<Payload> & DECOY;
155
155
 
156
156
  export type DisclosureFrame<T extends object> = Frame<T>;
157
+
158
+ /**
159
+ * This is a presentationFrame type that is used to represent the structure of what is being presented.
160
+ * PresentationFrame is made from the payload type.
161
+ * const claims = {
162
+ firstname: 'John',
163
+ lastname: 'Doe',
164
+ ssn: '123-45-6789',
165
+ id: '1234',
166
+ data: {
167
+ firstname: 'John',
168
+ lastname: 'Doe',
169
+ ssn: '123-45-6789',
170
+ list: [{ r: 'd' }, 'b', 'c'],
171
+ list2: ['1', '2', '3'],
172
+ list3: ['1', null, 2],
173
+ },
174
+ data2: {
175
+ hi: 'bye',
176
+ },
177
+ };
178
+
179
+ Example of a presentationFrame:
180
+ const presentationFrame: PresentationFrame<typeof claims> = {
181
+ firstname: true,
182
+ lastname: true,
183
+ ssn: true,
184
+ id: 'true',
185
+ data: {
186
+ firstname: true,
187
+ list: {
188
+ 1: true,
189
+ 0: {
190
+ r: true,
191
+ },
192
+ },
193
+ list2: {
194
+ 1: true,
195
+ },
196
+ list3: true,
197
+ },
198
+ data2: true,
199
+ };
200
+ */
201
+ type PFrame<Payload> = Payload extends Array<infer U>
202
+ ? U extends object
203
+ ? Record<number, PFrame<U> | boolean> | boolean
204
+ : Record<number, boolean> | boolean
205
+ : {
206
+ [K in keyof Payload]?: Payload[K] extends object
207
+ ? PFrame<Payload[K]> | boolean
208
+ : boolean;
209
+ };
210
+
211
+ export type PresentationFrame<T extends object> = PFrame<T>;