@pagopa/io-react-native-wallet 2.0.0 → 2.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.
- package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js +42 -128
- package/lib/commonjs/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
- package/lib/commonjs/sd-jwt/__test__/types.test.js +40 -0
- package/lib/commonjs/sd-jwt/__test__/types.test.js.map +1 -1
- package/lib/commonjs/sd-jwt/types.js +2 -1
- package/lib/commonjs/sd-jwt/types.js.map +1 -1
- package/lib/commonjs/utils/nestedProperty.js +142 -0
- package/lib/commonjs/utils/nestedProperty.js.map +1 -0
- package/lib/module/credential/issuance/07-verify-and-parse-credential.js +41 -127
- package/lib/module/credential/issuance/07-verify-and-parse-credential.js.map +1 -1
- package/lib/module/sd-jwt/__test__/types.test.js +41 -1
- package/lib/module/sd-jwt/__test__/types.test.js.map +1 -1
- package/lib/module/sd-jwt/types.js +2 -1
- package/lib/module/sd-jwt/types.js.map +1 -1
- package/lib/module/utils/nestedProperty.js +136 -0
- package/lib/module/utils/nestedProperty.js.map +1 -0
- package/lib/typescript/credential/issuance/07-verify-and-parse-credential.d.ts.map +1 -1
- package/lib/typescript/sd-jwt/types.d.ts +5 -5
- package/lib/typescript/sd-jwt/types.d.ts.map +1 -1
- package/lib/typescript/utils/nestedProperty.d.ts +23 -0
- package/lib/typescript/utils/nestedProperty.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/credential/issuance/07-verify-and-parse-credential.ts +2 -113
- package/src/sd-jwt/__test__/types.test.ts +49 -1
- package/src/sd-jwt/types.ts +2 -1
- package/src/utils/nestedProperty.ts +198 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { isObject } from "../../utils/misc";
|
|
2
1
|
import { IoWalletError } from "../../utils/errors";
|
|
3
2
|
import { SdJwt4VC, verify as verifySdJwt } from "../../sd-jwt";
|
|
4
3
|
import { getValueFromDisclosures } from "../../sd-jwt/converters";
|
|
@@ -8,102 +7,17 @@ import { MDOC_DEFAULT_NAMESPACE } from "../../mdoc/const";
|
|
|
8
7
|
import { getParsedCredentialClaimKey } from "../../mdoc/utils";
|
|
9
8
|
import { LogLevel, Logger } from "../../utils/logging";
|
|
10
9
|
import { extractElementValueAsDate } from "../../mdoc/converter";
|
|
10
|
+
import { createNestedProperty } from "../../utils/nestedProperty";
|
|
11
11
|
|
|
12
12
|
// The credential as a collection of attributes in plain value
|
|
13
13
|
|
|
14
14
|
// handy alias
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// The resulting object of localized names { en: "Name", it: "Nome" }
|
|
19
|
-
|
|
20
|
-
// The core structure being built: a node containing the actual value and its localized names
|
|
21
|
-
|
|
22
|
-
// A path can consist of object keys, array indices, or null for mapping
|
|
23
|
-
|
|
24
|
-
// A union of all possible shapes. It can be a custom PropertyNode or a standard object/array structure
|
|
25
|
-
|
|
26
|
-
// Helper to build localized names from the display data.
|
|
27
|
-
const buildName = display => display.reduce((names, _ref) => {
|
|
28
|
-
let {
|
|
29
|
-
locale,
|
|
30
|
-
name
|
|
31
|
-
} = _ref;
|
|
32
|
-
return {
|
|
33
|
-
...names,
|
|
34
|
-
[locale]: name
|
|
35
|
-
};
|
|
36
|
-
}, {});
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Recursively constructs a nested object with descriptive properties from a path.
|
|
40
|
-
*
|
|
41
|
-
* @param currentObject - The object or array being built upon.
|
|
42
|
-
* @param path - The path segments to follow.
|
|
43
|
-
* @param sourceValue - The raw value to place at the end of the path.
|
|
44
|
-
* @param displayData - The data for generating localized names.
|
|
45
|
-
* @returns The new object or array structure.
|
|
46
|
-
*/
|
|
47
|
-
const createNestedProperty = (currentObject, path, sourceValue, displayData) => {
|
|
48
|
-
const [key, ...rest] = path;
|
|
49
|
-
|
|
50
|
-
// Case 1: Map over an array (key is null)
|
|
51
|
-
if (key === null) {
|
|
52
|
-
if (!Array.isArray(sourceValue)) return currentObject;
|
|
53
|
-
|
|
54
|
-
// We assert the type here because we know this branch handles PropertyNodes
|
|
55
|
-
const node = currentObject;
|
|
56
|
-
const existingValue = Array.isArray(node.value) ? node.value : [];
|
|
57
|
-
const mappedArray = sourceValue.map((item, idx) => createNestedProperty(existingValue[idx] || {}, rest, item, displayData));
|
|
58
|
-
return {
|
|
59
|
-
...node,
|
|
60
|
-
value: mappedArray,
|
|
61
|
-
name: node.name ?? buildName(displayData)
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Case 2: Handle an object key (key is a string)
|
|
66
|
-
if (typeof key === "string") {
|
|
67
|
-
let nextSourceValue = sourceValue;
|
|
68
|
-
if (isObject(sourceValue)) {
|
|
69
|
-
// Skip processing when the key is not found within the claim object
|
|
70
|
-
if (!(key in sourceValue)) return currentObject;
|
|
71
|
-
nextSourceValue = sourceValue[key];
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// base case
|
|
75
|
-
if (rest.length === 0) {
|
|
76
|
-
return {
|
|
77
|
-
...currentObject,
|
|
78
|
-
[key]: {
|
|
79
|
-
value: nextSourceValue,
|
|
80
|
-
name: buildName(displayData)
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// recursive step
|
|
86
|
-
const nextObject = currentObject[key] || {};
|
|
87
|
-
return {
|
|
88
|
-
...currentObject,
|
|
89
|
-
[key]: createNestedProperty(nextObject, rest, nextSourceValue, displayData)
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Case 3: Handle a specific array index (key is a number)
|
|
94
|
-
if (typeof key === "number") {
|
|
95
|
-
const newArray = Array.isArray(currentObject) ? [...currentObject] : [];
|
|
96
|
-
const nextValue = Array.isArray(sourceValue) ? sourceValue[key] : undefined;
|
|
97
|
-
newArray[key] = createNestedProperty(newArray[key] || {}, rest, nextValue, displayData);
|
|
98
|
-
return newArray;
|
|
99
|
-
}
|
|
100
|
-
return currentObject;
|
|
101
|
-
};
|
|
102
|
-
const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
|
16
|
+
const parseCredentialSdJwt = function (credentialConfig, _ref) {
|
|
103
17
|
let {
|
|
104
18
|
sdJwt,
|
|
105
19
|
disclosures
|
|
106
|
-
} =
|
|
20
|
+
} = _ref;
|
|
107
21
|
let ignoreMissingAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
108
22
|
let includeUndefinedAttributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
109
23
|
if (credentialConfig.format !== sdJwt.header.typ) {
|
|
@@ -119,8 +33,8 @@ const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
|
|
119
33
|
const attrDefinitions = credentialConfig.claims;
|
|
120
34
|
|
|
121
35
|
// Validate that all attributes from the config exist in the disclosures
|
|
122
|
-
const attrsNotInDisclosures = attrDefinitions.filter(definition => !disclosures.some(
|
|
123
|
-
let [, name] =
|
|
36
|
+
const attrsNotInDisclosures = attrDefinitions.filter(definition => !disclosures.some(_ref2 => {
|
|
37
|
+
let [, name] = _ref2;
|
|
124
38
|
return name === definition.path[0];
|
|
125
39
|
}));
|
|
126
40
|
if (attrsNotInDisclosures.length > 0 && !ignoreMissingAttributes) {
|
|
@@ -137,8 +51,8 @@ const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
|
|
137
51
|
} of attrDefinitions) {
|
|
138
52
|
var _disclosures$find;
|
|
139
53
|
const attrKey = path[0];
|
|
140
|
-
const disclosureValue = (_disclosures$find = disclosures.find(
|
|
141
|
-
let [, name] =
|
|
54
|
+
const disclosureValue = (_disclosures$find = disclosures.find(_ref3 => {
|
|
55
|
+
let [, name] = _ref3;
|
|
142
56
|
return name === attrKey;
|
|
143
57
|
})) === null || _disclosures$find === void 0 ? void 0 : _disclosures$find[2];
|
|
144
58
|
if (disclosureValue !== undefined) {
|
|
@@ -149,8 +63,8 @@ const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
|
|
149
63
|
if (includeUndefinedAttributes) {
|
|
150
64
|
// attributes that are in the disclosure set
|
|
151
65
|
// but are not defined in the issuer configuration
|
|
152
|
-
const undefinedValues = Object.fromEntries(disclosures.filter(_ => !Object.keys(definedValues).includes(_[1])).map(
|
|
153
|
-
let [, key, value] =
|
|
66
|
+
const undefinedValues = Object.fromEntries(disclosures.filter(_ => !Object.keys(definedValues).includes(_[1])).map(_ref4 => {
|
|
67
|
+
let [, key, value] = _ref4;
|
|
154
68
|
return [key, {
|
|
155
69
|
value,
|
|
156
70
|
name: key
|
|
@@ -163,10 +77,10 @@ const parseCredentialSdJwt = function (credentialConfig, _ref2) {
|
|
|
163
77
|
}
|
|
164
78
|
return definedValues;
|
|
165
79
|
};
|
|
166
|
-
const parseCredentialMDoc = function (credentialConfig,
|
|
80
|
+
const parseCredentialMDoc = function (credentialConfig, _ref5) {
|
|
167
81
|
let {
|
|
168
82
|
issuerSigned
|
|
169
|
-
} =
|
|
83
|
+
} = _ref5;
|
|
170
84
|
let ignoreMissingAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
171
85
|
let includeUndefinedAttributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
172
86
|
if (!credentialConfig) {
|
|
@@ -175,37 +89,37 @@ const parseCredentialMDoc = function (credentialConfig, _ref6) {
|
|
|
175
89
|
if (!credentialConfig.claims) {
|
|
176
90
|
throw new IoWalletError("Missing claims in the credential subject");
|
|
177
91
|
}
|
|
178
|
-
const attrDefinitions = credentialConfig.claims.map(
|
|
92
|
+
const attrDefinitions = credentialConfig.claims.map(_ref6 => {
|
|
179
93
|
let {
|
|
180
94
|
path: [namespace, attribute],
|
|
181
95
|
display
|
|
182
|
-
} =
|
|
96
|
+
} = _ref6;
|
|
183
97
|
return [namespace, attribute, display];
|
|
184
98
|
});
|
|
185
99
|
if (!issuerSigned.nameSpaces) {
|
|
186
100
|
throw new IoWalletError("Missing claims in the credential");
|
|
187
101
|
}
|
|
188
|
-
const flatNamespaces = Object.entries(issuerSigned.nameSpaces).flatMap(
|
|
189
|
-
let [namespace, values] =
|
|
102
|
+
const flatNamespaces = Object.entries(issuerSigned.nameSpaces).flatMap(_ref7 => {
|
|
103
|
+
let [namespace, values] = _ref7;
|
|
190
104
|
return values.map(v => [namespace, v.elementIdentifier, v.elementValue]);
|
|
191
105
|
});
|
|
192
106
|
|
|
193
107
|
// Check that all mandatory attributes defined in the issuer configuration are present in the disclosure set
|
|
194
108
|
// and filter the non present ones
|
|
195
|
-
const attrsNotInDisclosures = attrDefinitions.filter(
|
|
196
|
-
let [attrDefNamespace, attrKey] =
|
|
197
|
-
return !flatNamespaces.some(
|
|
198
|
-
let [namespace, claim] =
|
|
109
|
+
const attrsNotInDisclosures = attrDefinitions.filter(_ref8 => {
|
|
110
|
+
let [attrDefNamespace, attrKey] = _ref8;
|
|
111
|
+
return !flatNamespaces.some(_ref9 => {
|
|
112
|
+
let [namespace, claim] = _ref9;
|
|
199
113
|
return attrDefNamespace === namespace && attrKey === claim;
|
|
200
114
|
});
|
|
201
115
|
});
|
|
202
116
|
if (attrsNotInDisclosures.length > 0) {
|
|
203
|
-
const missing = attrsNotInDisclosures.map(
|
|
204
|
-
let [, attrKey] =
|
|
117
|
+
const missing = attrsNotInDisclosures.map(_ref10 => {
|
|
118
|
+
let [, attrKey] = _ref10;
|
|
205
119
|
return attrKey;
|
|
206
120
|
}).join(", ");
|
|
207
|
-
const received = flatNamespaces.map(
|
|
208
|
-
let [, attrKey] =
|
|
121
|
+
const received = flatNamespaces.map(_ref11 => {
|
|
122
|
+
let [, attrKey] = _ref11;
|
|
209
123
|
return attrKey;
|
|
210
124
|
}).join(", ");
|
|
211
125
|
if (!ignoreMissingAttributes) {
|
|
@@ -216,38 +130,38 @@ const parseCredentialMDoc = function (credentialConfig, _ref6) {
|
|
|
216
130
|
// Attributes defined in the issuer configuration and present in the disclosure set
|
|
217
131
|
const definedValues = attrDefinitions
|
|
218
132
|
// Retrieve the value from the corresponding disclosure
|
|
219
|
-
.map(
|
|
133
|
+
.map(_ref12 => {
|
|
220
134
|
var _flatNamespaces$find;
|
|
221
|
-
let [attrDefNamespace, attrKey, display] =
|
|
135
|
+
let [attrDefNamespace, attrKey, display] = _ref12;
|
|
222
136
|
return [attrDefNamespace, attrKey, {
|
|
223
137
|
display,
|
|
224
|
-
value: (_flatNamespaces$find = flatNamespaces.find(
|
|
225
|
-
let [namespace, name] =
|
|
138
|
+
value: (_flatNamespaces$find = flatNamespaces.find(_ref13 => {
|
|
139
|
+
let [namespace, name] = _ref13;
|
|
226
140
|
return attrDefNamespace === namespace && name === attrKey;
|
|
227
141
|
})) === null || _flatNamespaces$find === void 0 ? void 0 : _flatNamespaces$find[2]
|
|
228
142
|
}];
|
|
229
143
|
})
|
|
230
144
|
//filter the not found elements
|
|
231
|
-
.filter(
|
|
232
|
-
let [_, __, definition] =
|
|
145
|
+
.filter(_ref14 => {
|
|
146
|
+
let [_, __, definition] = _ref14;
|
|
233
147
|
return definition.value !== undefined;
|
|
234
148
|
})
|
|
235
149
|
// Add a human-readable attribute name, with i18n, in the form { locale: name }
|
|
236
150
|
// Example: { "it-IT": "Nome", "en-EN": "Name", "es-ES": "Nombre" }
|
|
237
|
-
.reduce((acc,
|
|
151
|
+
.reduce((acc, _ref15) => {
|
|
238
152
|
let [attrDefNamespace, attrKey, {
|
|
239
153
|
display,
|
|
240
154
|
value
|
|
241
|
-
}] =
|
|
155
|
+
}] = _ref15;
|
|
242
156
|
return {
|
|
243
157
|
...acc,
|
|
244
158
|
[getParsedCredentialClaimKey(attrDefNamespace, attrKey)]: {
|
|
245
159
|
value,
|
|
246
|
-
name: display.reduce((names,
|
|
160
|
+
name: display.reduce((names, _ref16) => {
|
|
247
161
|
let {
|
|
248
162
|
locale,
|
|
249
163
|
name
|
|
250
|
-
} =
|
|
164
|
+
} = _ref16;
|
|
251
165
|
return {
|
|
252
166
|
...names,
|
|
253
167
|
[locale]: name
|
|
@@ -257,11 +171,11 @@ const parseCredentialMDoc = function (credentialConfig, _ref6) {
|
|
|
257
171
|
};
|
|
258
172
|
}, {});
|
|
259
173
|
if (includeUndefinedAttributes) {
|
|
260
|
-
const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(
|
|
261
|
-
let [namespace, key] =
|
|
174
|
+
const undefinedValues = Object.fromEntries(Object.values(flatNamespaces).filter(_ref17 => {
|
|
175
|
+
let [namespace, key] = _ref17;
|
|
262
176
|
return !definedValues[getParsedCredentialClaimKey(namespace, key)];
|
|
263
|
-
}).map(
|
|
264
|
-
let [namespace, key, value] =
|
|
177
|
+
}).map(_ref18 => {
|
|
178
|
+
let [namespace, key, value] = _ref18;
|
|
265
179
|
return [getParsedCredentialClaimKey(namespace, key), {
|
|
266
180
|
value,
|
|
267
181
|
name: key
|
|
@@ -331,12 +245,12 @@ async function verifyCredentialMDoc(rawCredential, x509CertRoot, holderBindingCo
|
|
|
331
245
|
}
|
|
332
246
|
return decodedCredential;
|
|
333
247
|
}
|
|
334
|
-
const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId,
|
|
248
|
+
const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialConfigurationId, _ref19) => {
|
|
335
249
|
let {
|
|
336
250
|
credentialCryptoContext,
|
|
337
251
|
ignoreMissingAttributes,
|
|
338
252
|
includeUndefinedAttributes
|
|
339
|
-
} =
|
|
253
|
+
} = _ref19;
|
|
340
254
|
const decoded = await verifyCredentialSdJwt(credential, issuerConf.openid_credential_issuer.jwks.keys, credentialCryptoContext);
|
|
341
255
|
Logger.log(LogLevel.DEBUG, `Decoded credential: ${JSON.stringify(decoded)}`);
|
|
342
256
|
const credentialConfig = issuerConf.openid_credential_issuer.credential_configurations_supported[credentialConfigurationId];
|
|
@@ -353,12 +267,12 @@ const verifyAndParseCredentialSdJwt = async (issuerConf, credential, credentialC
|
|
|
353
267
|
issuedAt: typeof maybeIssuedAt === "number" ? new Date(maybeIssuedAt * 1000) : undefined
|
|
354
268
|
};
|
|
355
269
|
};
|
|
356
|
-
const verifyAndParseCredentialMDoc = async (issuerConf, credential, credentialConfigurationId,
|
|
270
|
+
const verifyAndParseCredentialMDoc = async (issuerConf, credential, credentialConfigurationId, _ref20, x509CertRoot) => {
|
|
357
271
|
var _parsedCredential$get, _parsedCredential$get2;
|
|
358
272
|
let {
|
|
359
273
|
credentialCryptoContext,
|
|
360
274
|
ignoreMissingAttributes
|
|
361
|
-
} =
|
|
275
|
+
} = _ref20;
|
|
362
276
|
if (!x509CertRoot) {
|
|
363
277
|
throw new IoWalletError("Missing x509CertRoot");
|
|
364
278
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isObject","IoWalletError","SdJwt4VC","verify","verifySdJwt","getValueFromDisclosures","isSameThumbprint","verifyMdoc","MDOC_DEFAULT_NAMESPACE","getParsedCredentialClaimKey","LogLevel","Logger","extractElementValueAsDate","buildName","display","reduce","names","_ref","locale","name","createNestedProperty","currentObject","path","sourceValue","displayData","key","rest","Array","isArray","node","existingValue","value","mappedArray","map","item","idx","nextSourceValue","length","nextObject","newArray","nextValue","undefined","parseCredentialSdJwt","credentialConfig","_ref2","sdJwt","disclosures","ignoreMissingAttributes","arguments","includeUndefinedAttributes","format","header","typ","message","log","ERROR","claims","attrDefinitions","attrsNotInDisclosures","filter","definition","some","_ref3","missing","_","join","received","definedValues","_disclosures$find","attrKey","disclosureValue","find","_ref4","enriched","Object","assign","undefinedValues","fromEntries","keys","includes","_ref5","parseCredentialMDoc","_ref6","issuerSigned","_ref7","namespace","attribute","nameSpaces","flatNamespaces","entries","flatMap","_ref8","values","v","elementIdentifier","elementValue","_ref9","attrDefNamespace","_ref10","claim","_ref11","_ref12","_ref13","_flatNamespaces$find","_ref14","_ref15","__","acc","_ref16","_ref17","_ref18","_ref19","verifyCredentialSdJwt","rawCredential","issuerKeys","holderBindingContext","decodedCredential","holderBindingKey","Promise","all","getPublicKey","cnf","payload","jwk","kid","verifyCredentialMDoc","x509CertRoot","issuerAuth","deviceKeyInfo","deviceKey","verifyAndParseCredentialSdJwt","issuerConf","credential","credentialConfigurationId","_ref20","credentialCryptoContext","decoded","openid_credential_issuer","jwks","DEBUG","JSON","stringify","credential_configurations_supported","parsedCredential","maybeIssuedAt","expiration","Date","exp","issuedAt","verifyAndParseCredentialMDoc","_ref21","_parsedCredential$get","_parsedCredential$get2","expirationDate","setDate","getDate","verifyAndParseCredential","context","_issuerConf$openid_cr"],"sourceRoot":"../../../../src","sources":["credential/issuance/07-verify-and-parse-credential.ts"],"mappings":"AACA,SAASA,QAAQ,QAAkB,kBAAkB;AAErD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,QAAQ,EAAEC,MAAM,IAAIC,WAAW,QAAQ,cAAc;AAC9D,SAASC,uBAAuB,QAAQ,yBAAyB;AACjE,SAASC,gBAAgB,QAAkB,iBAAiB;AAE5D,SAASH,MAAM,IAAII,UAAU,QAAQ,YAAY;AACjD,SAASC,sBAAsB,QAAQ,kBAAkB;AACzD,SAASC,2BAA2B,QAAQ,kBAAkB;AAC9D,SAASC,QAAQ,EAAEC,MAAM,QAAQ,qBAAqB;AACtD,SAASC,yBAAyB,QAAQ,sBAAsB;;AAkChE;;AAeA;;AAKA;;AAGA;;AAGA;;AAMA;;AAGA;;AAGA;AACA,MAAMC,SAAS,GAAIC,OAAoB,IACrCA,OAAO,CAACC,MAAM,CACZ,CAACC,KAAK,EAAAC,IAAA;EAAA,IAAE;IAAEC,MAAM;IAAEC;EAAK,CAAC,GAAAF,IAAA;EAAA,OAAM;IAAE,GAAGD,KAAK;IAAE,CAACE,MAAM,GAAGC;EAAK,CAAC;AAAA,CAAC,EAC3D,CAAC,CACH,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,GAAGA,CAC3BC,aAA8B,EAC9BC,IAAU,EACVC,WAAoB,EACpBC,WAAwB,KACJ;EACpB,MAAM,CAACC,GAAG,EAAE,GAAGC,IAAI,CAAC,GAAGJ,IAAI;;EAE3B;EACA,IAAIG,GAAG,KAAK,IAAI,EAAE;IAChB,IAAI,CAACE,KAAK,CAACC,OAAO,CAACL,WAAW,CAAC,EAAE,OAAOF,aAAa;;IAErD;IACA,MAAMQ,IAAI,GAAGR,aAAiD;IAC9D,MAAMS,aAAa,GAAGH,KAAK,CAACC,OAAO,CAACC,IAAI,CAACE,KAAK,CAAC,GAAGF,IAAI,CAACE,KAAK,GAAG,EAAE;IAEjE,MAAMC,WAAW,GAAGT,WAAW,CAACU,GAAG,CAAC,CAACC,IAAI,EAAEC,GAAG,KAC5Cf,oBAAoB,CAACU,aAAa,CAACK,GAAG,CAAC,IAAI,CAAC,CAAC,EAAET,IAAI,EAAEQ,IAAI,EAAEV,WAAW,CACxE,CAAC;IAED,OAAO;MACL,GAAGK,IAAI;MACPE,KAAK,EAAEC,WAAW;MAClBb,IAAI,EAAEU,IAAI,CAACV,IAAI,IAAIN,SAAS,CAACW,WAAW;IAC1C,CAAC;EACH;;EAEA;EACA,IAAI,OAAOC,GAAG,KAAK,QAAQ,EAAE;IAC3B,IAAIW,eAAe,GAAGb,WAAW;IAEjC,IAAIvB,QAAQ,CAACuB,WAAW,CAAC,EAAE;MACzB;MACA,IAAI,EAAEE,GAAG,IAAIF,WAAW,CAAC,EAAE,OAAOF,aAAa;MAE/Ce,eAAe,GAAGb,WAAW,CAACE,GAAG,CAAC;IACpC;;IAEA;IACA,IAAIC,IAAI,CAACW,MAAM,KAAK,CAAC,EAAE;MACrB,OAAO;QACL,GAAGhB,aAAa;QAChB,CAACI,GAAG,GAAG;UAAEM,KAAK,EAAEK,eAAe;UAAEjB,IAAI,EAAEN,SAAS,CAACW,WAAW;QAAE;MAChE,CAAC;IACH;;IAEA;IACA,MAAMc,UAAU,GACbjB,aAAa,CAAqCI,GAAG,CAAC,IAAI,CAAC,CAAC;IAE/D,OAAO;MACL,GAAGJ,aAAa;MAChB,CAACI,GAAG,GAAGL,oBAAoB,CACzBkB,UAAU,EACVZ,IAAI,EACJU,eAAe,EACfZ,WACF;IACF,CAAC;EACH;;EAEA;EACA,IAAI,OAAOC,GAAG,KAAK,QAAQ,EAAE;IAC3B,MAAMc,QAAQ,GAAGZ,KAAK,CAACC,OAAO,CAACP,aAAa,CAAC,GAAG,CAAC,GAAGA,aAAa,CAAC,GAAG,EAAE;IACvE,MAAMmB,SAAS,GAAGb,KAAK,CAACC,OAAO,CAACL,WAAW,CAAC,GAAGA,WAAW,CAACE,GAAG,CAAC,GAAGgB,SAAS;IAE3EF,QAAQ,CAACd,GAAG,CAAC,GAAGL,oBAAoB,CAClCmB,QAAQ,CAACd,GAAG,CAAC,IAAI,CAAC,CAAC,EACnBC,IAAI,EACJc,SAAS,EACThB,WACF,CAAC;IACD,OAAOe,QAAQ;EACjB;EAEA,OAAOlB,aAAa;AACtB,CAAC;AAED,MAAMqB,oBAAoB,GAAG,SAAAA,CAE3BC,gBAAgC,EAAAC,KAAA,EAIX;EAAA,IAHrB;IAAEC,KAAK;IAAEC;EAAoC,CAAC,GAAAF,KAAA;EAAA,IAC9CG,uBAAgC,GAAAC,SAAA,CAAAX,MAAA,QAAAW,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IACxCC,0BAAmC,GAAAD,SAAA,CAAAX,MAAA,QAAAW,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAE3C,IAAIL,gBAAgB,CAACO,MAAM,KAAKL,KAAK,CAACM,MAAM,CAACC,GAAG,EAAE;IAChD,MAAMC,OAAO,GAAI,+DAA8DV,gBAAgB,CAACO,MAAO,gBAAeL,KAAK,CAACM,MAAM,CAACC,GAAI,GAAE;IACzIzC,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAAC6C,KAAK,EAAEF,OAAO,CAAC;IACnC,MAAM,IAAIpD,aAAa,CAACoD,OAAO,CAAC;EAClC;EAEA,IAAI,CAACV,gBAAgB,CAACa,MAAM,EAAE;IAC5B7C,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAAC6C,KAAK,EAAE,0CAA0C,CAAC;IACtE,MAAM,IAAItD,aAAa,CAAC,0CAA0C,CAAC,CAAC,CAAC;EACvE;;EAEA,MAAMwD,eAAe,GAAGd,gBAAgB,CAACa,MAAM;;EAE/C;EACA,MAAME,qBAAqB,GAAGD,eAAe,CAACE,MAAM,CACjDC,UAAU,IAAK,CAACd,WAAW,CAACe,IAAI,CAACC,KAAA;IAAA,IAAC,GAAG3C,IAAI,CAAC,GAAA2C,KAAA;IAAA,OAAK3C,IAAI,KAAKyC,UAAU,CAACtC,IAAI,CAAC,CAAC,CAAC;EAAA,EAC7E,CAAC;EAED,IAAIoC,qBAAqB,CAACrB,MAAM,GAAG,CAAC,IAAI,CAACU,uBAAuB,EAAE;IAChE,MAAMgB,OAAO,GAAGL,qBAAqB,CAACzB,GAAG,CAAE+B,CAAC,IAAKA,CAAC,CAAC1C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC2C,IAAI,CAAC,IAAI,CAAC;IACtE,MAAMC,QAAQ,GAAGpB,WAAW,CAACb,GAAG,CAAE+B,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACxD,MAAMZ,OAAO,GAAI,4DAA2DU,OAAQ,iBAAgBG,QAAS,GAAE;IAC/GvD,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAAC6C,KAAK,EAAEF,OAAO,CAAC;IACnC,MAAM,IAAIpD,aAAa,CAACoD,OAAO,CAAC;EAClC;EAEA,MAAMc,aAA+B,GAAG,CAAC,CAAC;EAE1C,KAAK,MAAM;IAAE7C,IAAI;IAAER;EAAQ,CAAC,IAAI2C,eAAe,EAAE;IAAA,IAAAW,iBAAA;IAC/C,MAAMC,OAAO,GAAG/C,IAAI,CAAC,CAAC,CAAC;IACvB,MAAMgD,eAAe,IAAAF,iBAAA,GAAGtB,WAAW,CAACyB,IAAI,CACtCC,KAAA;MAAA,IAAC,GAAGrD,IAAI,CAAC,GAAAqD,KAAA;MAAA,OAAKrD,IAAI,KAAKkD,OAAO;IAAA,CAChC,CAAC,cAAAD,iBAAA,uBAFuBA,iBAAA,CAEpB,CAAC,CAAC;IAEN,IAAIE,eAAe,KAAK7B,SAAS,EAAE;MACjC,MAAMgC,QAAQ,GAAGrD,oBAAoB,CACnC+C,aAAa,EACb7C,IAAI,EACJgD,eAAe,EACfxD,OACF,CAAC;MACD4D,MAAM,CAACC,MAAM,CAACR,aAAa,EAAEM,QAAQ,CAAC;IACxC;EACF;EAEA,IAAIxB,0BAA0B,EAAE;IAC9B;IACA;IACA,MAAM2B,eAAe,GAAGF,MAAM,CAACG,WAAW,CACxC/B,WAAW,CACRa,MAAM,CAAEK,CAAC,IAAK,CAACU,MAAM,CAACI,IAAI,CAACX,aAAa,CAAC,CAACY,QAAQ,CAACf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD/B,GAAG,CAAC+C,KAAA;MAAA,IAAC,GAAGvD,GAAG,EAAEM,KAAK,CAAC,GAAAiD,KAAA;MAAA,OAAK,CAACvD,GAAG,EAAE;QAAEM,KAAK;QAAEZ,IAAI,EAAEM;MAAI,CAAC,CAAC;IAAA,EACxD,CAAC;IAED,OAAO;MACL,GAAG0C,aAAa;MAChB,GAAGS;IACL,CAAC;EACH;EAEA,OAAOT,aAAa;AACtB,CAAC;AACD,MAAMc,mBAAmB,GAAG,SAAAA,CAE1BtC,gBAAgC,EAAAuC,KAAA,EAKX;EAAA,IAHrB;IAAEC;EAAoC,CAAC,GAAAD,KAAA;EAAA,IACvCnC,uBAAgC,GAAAC,SAAA,CAAAX,MAAA,QAAAW,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAAA,IACxCC,0BAAmC,GAAAD,SAAA,CAAAX,MAAA,QAAAW,SAAA,QAAAP,SAAA,GAAAO,SAAA,MAAG,KAAK;EAE3C,IAAI,CAACL,gBAAgB,EAAE;IACrB,MAAM,IAAI1C,aAAa,CAAC,6CAA6C,CAAC;EACxE;EAEA,IAAI,CAAC0C,gBAAgB,CAACa,MAAM,EAAE;IAC5B,MAAM,IAAIvD,aAAa,CAAC,0CAA0C,CAAC;EACrE;EAEA,MAAMwD,eAAe,GAAGd,gBAAgB,CAACa,MAAM,CAACvB,GAAG,CAEjDmD,KAAA;IAAA,IAAC;MAAE9D,IAAI,EAAE,CAAC+D,SAAS,EAAEC,SAAS,CAAC;MAAExE;IAAQ,CAAC,GAAAsE,KAAA;IAAA,OAAK,CAC/CC,SAAS,EACTC,SAAS,EACTxE,OAAO,CACR;EAAA,EAAC;EAEF,IAAI,CAACqE,YAAY,CAACI,UAAU,EAAE;IAC5B,MAAM,IAAItF,aAAa,CAAC,kCAAkC,CAAC;EAC7D;EAEA,MAAMuF,cAAc,GAAGd,MAAM,CAACe,OAAO,CAACN,YAAY,CAACI,UAAU,CAAC,CAACG,OAAO,CACpEC,KAAA;IAAA,IAAC,CAACN,SAAS,EAAEO,MAAM,CAAC,GAAAD,KAAA;IAAA,OAClBC,MAAM,CAAC3D,GAAG,CAA4B4D,CAAC,IAAK,CAC1CR,SAAS,EACTQ,CAAC,CAACC,iBAAiB,EACnBD,CAAC,CAACE,YAAY,CACf,CAAC;EAAA,CACN,CAAC;;EAED;EACA;EACA,MAAMrC,qBAAqB,GAAGD,eAAe,CAACE,MAAM,CAClDqC,KAAA;IAAA,IAAC,CAACC,gBAAgB,EAAE5B,OAAO,CAAC,GAAA2B,KAAA;IAAA,OAC1B,CAACR,cAAc,CAAC3B,IAAI,CAClBqC,MAAA;MAAA,IAAC,CAACb,SAAS,EAAEc,KAAK,CAAC,GAAAD,MAAA;MAAA,OACjBD,gBAAgB,KAAKZ,SAAS,IAAIhB,OAAO,KAAK8B,KAAK;IAAA,CACvD,CAAC;EAAA,CACL,CAAC;EAED,IAAIzC,qBAAqB,CAACrB,MAAM,GAAG,CAAC,EAAE;IACpC,MAAM0B,OAAO,GAAGL,qBAAqB,CAClCzB,GAAG,CAACmE,MAAA;MAAA,IAAC,GAAG/B,OAAO,CAAC,GAAA+B,MAAA;MAAA,OAAK/B,OAAO;IAAA,EAAC,CAC7BJ,IAAI,CAAC,IAAI,CAAC;IACb,MAAMC,QAAQ,GAAGsB,cAAc,CAACvD,GAAG,CAACoE,MAAA;MAAA,IAAC,GAAGhC,OAAO,CAAC,GAAAgC,MAAA;MAAA,OAAKhC,OAAO;IAAA,EAAC,CAACJ,IAAI,CAAC,IAAI,CAAC;IAExE,IAAI,CAAClB,uBAAuB,EAAE;MAC5B,MAAM,IAAI9C,aAAa,CACpB,4DAA2D8D,OAAQ,iBAAgBG,QAAS,GAC/F,CAAC;IACH;EACF;;EAEA;EACA,MAAMC,aAAa,GAAGV;EACpB;EAAA,CACCxB,GAAG,CACFqE,MAAA;IAAA,IAAAC,oBAAA;IAAA,IAAC,CAACN,gBAAgB,EAAE5B,OAAO,EAAEvD,OAAO,CAAC,GAAAwF,MAAA;IAAA,OACnC,CACEL,gBAAgB,EAChB5B,OAAO,EACP;MACEvD,OAAO;MACPiB,KAAK,GAAAwE,oBAAA,GAAEf,cAAc,CAACjB,IAAI,CACxBiC,MAAA;QAAA,IAAC,CAACnB,SAAS,EAAElE,IAAI,CAAC,GAAAqF,MAAA;QAAA,OAChBP,gBAAgB,KAAKZ,SAAS,IAAIlE,IAAI,KAAKkD,OAAO;MAAA,CACtD,CAAC,cAAAkC,oBAAA,uBAHMA,oBAAA,CAGH,CAAC;IACP,CAAC,CACF;EAAA,CACL;EACA;EAAA,CACC5C,MAAM,CAAC8C,MAAA;IAAA,IAAC,CAACzC,CAAC,EAAE0C,EAAE,EAAE9C,UAAU,CAAC,GAAA6C,MAAA;IAAA,OAAK7C,UAAU,CAAC7B,KAAK,KAAKU,SAAS;EAAA;EAC/D;EACA;EAAA,CACC1B,MAAM,CACL,CAAC4F,GAAG,EAAAC,MAAA;IAAA,IAAE,CAACX,gBAAgB,EAAE5B,OAAO,EAAE;MAAEvD,OAAO;MAAEiB;IAAM,CAAC,CAAC,GAAA6E,MAAA;IAAA,OAAM;MACzD,GAAGD,GAAG;MACN,CAAClG,2BAA2B,CAACwF,gBAAgB,EAAE5B,OAAO,CAAC,GAAG;QACxDtC,KAAK;QACLZ,IAAI,EAAEL,OAAO,CAACC,MAAM,CAClB,CAACC,KAAK,EAAA6F,MAAA;UAAA,IAAE;YAAE3F,MAAM;YAAEC;UAAK,CAAC,GAAA0F,MAAA;UAAA,OAAM;YAC5B,GAAG7F,KAAK;YACR,CAACE,MAAM,GAAGC;UACZ,CAAC;QAAA,CAAC,EACF,CAAC,CACH;MACF;IACF,CAAC;EAAA,CAAC,EACF,CAAC,CACH,CAAC;EAEH,IAAI8B,0BAA0B,EAAE;IAC9B,MAAM2B,eAAiC,GAAGF,MAAM,CAACG,WAAW,CAC1DH,MAAM,CAACkB,MAAM,CAACJ,cAAc,CAAC,CAC1B7B,MAAM,CACLmD,MAAA;MAAA,IAAC,CAACzB,SAAS,EAAE5D,GAAG,CAAC,GAAAqF,MAAA;MAAA,OACf,CAAC3C,aAAa,CAAC1D,2BAA2B,CAAC4E,SAAS,EAAE5D,GAAG,CAAC,CAAC;IAAA,CAC/D,CAAC,CACAQ,GAAG,CAAC8E,MAAA;MAAA,IAAC,CAAC1B,SAAS,EAAE5D,GAAG,EAAEM,KAAK,CAAC,GAAAgF,MAAA;MAAA,OAAK,CAChCtG,2BAA2B,CAAC4E,SAAS,EAAE5D,GAAG,CAAC,EAC3C;QAAEM,KAAK;QAAEZ,IAAI,EAAEM;MAAI,CAAC,CACrB;IAAA,EACL,CAAC;IACD,OAAO;MACL,GAAG0C,aAAa;MAChB,GAAGS;IACL,CAAC;EACH;EAEA,OAAOT,aAAa;AACtB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe6C,qBAAqBA,CAClCC,aAAqB,EACrBC,UAAiB,EACjBC,oBAAmC,EACF;EACjC,MAAM,CAACC,iBAAiB,EAAEC,gBAAgB,CAAC;EACzC;EACA,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChBnH,WAAW,CAAC6G,aAAa,EAAEC,UAAU,EAAEhH,QAAQ,CAAC,EAChDiH,oBAAoB,CAACK,YAAY,CAAC,CAAC,CACpC,CAAC;EAEJ,MAAM;IAAEC;EAAI,CAAC,GAAGL,iBAAiB,CAACvE,KAAK,CAAC6E,OAAO;EAC/C,IAAI,EAAE,MAAMpH,gBAAgB,CAACmH,GAAG,CAACE,GAAG,EAAEN,gBAAuB,CAAC,CAAC,EAAE;IAC/D,MAAMhE,OAAO,GAAI,kDAAiDgE,gBAAgB,CAACO,GAAI,UAASR,iBAAiB,CAACvE,KAAK,CAAC6E,OAAO,CAACD,GAAG,CAACE,GAAG,CAACC,GAAI,EAAC;IAC7IjH,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAAC6C,KAAK,EAAEF,OAAO,CAAC;IACnC,MAAM,IAAIpD,aAAa,CAACoD,OAAO,CAAC;EAClC;EAEA,OAAO+D,iBAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeS,oBAAoBA,CACjCZ,aAAqB,EACrBa,YAAoB,EACpBX,oBAAmC,EACH;EAChC,MAAM,CAACC,iBAAiB,EAAEC,gBAAgB,CAAC;EACzC;EACA,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChBhH,UAAU,CAAC0G,aAAa,EAAEa,YAAY,CAAC,EACvCX,oBAAoB,CAACK,YAAY,CAAC,CAAC,CACpC,CAAC;EAEJ,IAAI,CAACJ,iBAAiB,EAAE;IACtB,MAAM,IAAInH,aAAa,CAAC,4BAA4B,CAAC;EACvD;EAEA,MAAMwB,GAAG,GACP2F,iBAAiB,CAACjC,YAAY,CAAC4C,UAAU,CAACL,OAAO,CAACM,aAAa,CAACC,SAAS;EAE3E,IAAI,EAAE,MAAM3H,gBAAgB,CAACmB,GAAG,EAAE4F,gBAA6B,CAAC,CAAC,EAAE;IACjE,MAAM,IAAIpH,aAAa,CACpB,oFACH,CAAC;EACH;EAEA,OAAOmH,iBAAiB;AAC1B;AAEA,MAAMc,6BAAuD,GAAG,MAAAA,CAC9DC,UAAU,EACVC,UAAU,EACVC,yBAAyB,EAAAC,MAAA,KAMtB;EAAA,IALH;IACEC,uBAAuB;IACvBxF,uBAAuB;IACvBE;EACF,CAAC,GAAAqF,MAAA;EAED,MAAME,OAAO,GAAG,MAAMxB,qBAAqB,CACzCoB,UAAU,EACVD,UAAU,CAACM,wBAAwB,CAACC,IAAI,CAAC5D,IAAI,EAC7CyD,uBACF,CAAC;EAED5H,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAACiI,KAAK,EAAG,uBAAsBC,IAAI,CAACC,SAAS,CAACL,OAAO,CAAE,EAAC,CAAC;EAE5E,MAAM7F,gBAAgB,GACpBwF,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CAC1B;EAEH,IAAI,CAAC1F,gBAAgB,EAAE;IACrBhC,MAAM,CAAC2C,GAAG,CACR5C,QAAQ,CAAC6C,KAAK,EACb,gDAA+C8E,yBAA0B,EAC5E,CAAC;IACD,MAAM,IAAIpI,aAAa,CAAC,6CAA6C,CAAC;EACxE;EAEA,MAAM8I,gBAAgB,GAAGrG,oBAAoB,CAC3CC,gBAAgB,EAChB6F,OAAO,EACPzF,uBAAuB,EACvBE,0BACF,CAAC;EACD,MAAM+F,aAAa,GAAG3I,uBAAuB,CAACmI,OAAO,CAAC1F,WAAW,EAAE,KAAK,CAAC;EAEzEnC,MAAM,CAAC2C,GAAG,CACR5C,QAAQ,CAACiI,KAAK,EACb,sBAAqBC,IAAI,CAACC,SAAS,CAACE,gBAAgB,CAAE,gBAAeC,aAAc,EACtF,CAAC;EAED,OAAO;IACLD,gBAAgB;IAChBE,UAAU,EAAE,IAAIC,IAAI,CAACV,OAAO,CAAC3F,KAAK,CAAC6E,OAAO,CAACyB,GAAG,GAAG,IAAI,CAAC;IACtDC,QAAQ,EACN,OAAOJ,aAAa,KAAK,QAAQ,GAC7B,IAAIE,IAAI,CAACF,aAAa,GAAG,IAAI,CAAC,GAC9BvG;EACR,CAAC;AACH,CAAC;AAED,MAAM4G,4BAAsD,GAAG,MAAAA,CAC7DlB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EAAAiB,MAAA,EAEzBxB,YAAY,KACT;EAAA,IAAAyB,qBAAA,EAAAC,sBAAA;EAAA,IAFH;IAAEjB,uBAAuB;IAAExF;EAAwB,CAAC,GAAAuG,MAAA;EAGpD,IAAI,CAACxB,YAAY,EAAE;IACjB,MAAM,IAAI7H,aAAa,CAAC,sBAAsB,CAAC;EACjD;EAEA,MAAMuI,OAAO,GAAG,MAAMX,oBAAoB,CACxCO,UAAU,EACVN,YAAY,EACZS,uBACF,CAAC;EAED,MAAM5F,gBAAgB,GACpBwF,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CACzB;EACJ,MAAMU,gBAAgB,GAAG9D,mBAAmB,CAC1CtC,gBAAgB,EAChB6F,OAAO,EACPzF,uBAAuB,EACvBA,uBACF,CAAC;EAED,MAAM0G,cAAc,GAAG7I,yBAAyB,CAC9CmI,gBAAgB,aAAhBA,gBAAgB,gBAAAQ,qBAAA,GAAhBR,gBAAgB,CACdtI,2BAA2B,CAACD,sBAAsB,EAAE,aAAa,CAAC,CACnE,cAAA+I,qBAAA,uBAFDA,qBAAA,CAEGxH,KACL,CAAC;EACD,IAAI,CAAC0H,cAAc,EAAE;IACnB,MAAM,IAAIxJ,aAAa,CAAE,kCAAiC,CAAC;EAC7D;EACAwJ,cAAc,CAACC,OAAO,CAACD,cAAc,CAACE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EAEpD,MAAMX,aAAa,GAAGpI,yBAAyB,CAC7CmI,gBAAgB,aAAhBA,gBAAgB,gBAAAS,sBAAA,GAAhBT,gBAAgB,CACdtI,2BAA2B,CAACD,sBAAsB,EAAE,YAAY,CAAC,CAClE,cAAAgJ,sBAAA,uBAFDA,sBAAA,CAEGzH,KACL,CAAC;EACDiH,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEU,OAAO,CAACV,aAAa,CAACW,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;EAEnD,OAAO;IACLZ,gBAAgB;IAChBX,UAAU;IACVC,yBAAyB;IACzBY,UAAU,EAAEQ,cAAc;IAC1BL,QAAQ,EAAEJ,aAAa,IAAIvG;EAC7B,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMmH,wBAAkD,GAAG,MAAAA,CAChEzB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzBwB,OAAO,EACP/B,YAAY,KACT;EAAA,IAAAgC,qBAAA;EACH,MAAM5G,MAAM,IAAA4G,qBAAA,GACV3B,UAAU,CAACM,wBAAwB,CAACK,mCAAmC,CACrET,yBAAyB,CAC1B,cAAAyB,qBAAA,uBAFDA,qBAAA,CAEG5G,MAAM;EAEX,QAAQA,MAAM;IACZ,KAAK,WAAW;MAAE;QAChBvC,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAACiI,KAAK,EAAE,wCAAwC,CAAC;QACpE,OAAOT,6BAA6B,CAClCC,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzBwB,OACF,CAAC;MACH;IACA,KAAK,UAAU;MAAE;QACflJ,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAACiI,KAAK,EAAE,uCAAuC,CAAC;QACnE,OAAOU,4BAA4B,CACjClB,UAAU,EACVC,UAAU,EACVC,yBAAyB,EACzBwB,OAAO,EACP/B,YACF,CAAC;MACH;IAEA;MAAS;QACP,MAAMzE,OAAO,GAAI,kCAAiCH,MAAO,EAAC;QAC1DvC,MAAM,CAAC2C,GAAG,CAAC5C,QAAQ,CAAC6C,KAAK,EAAEF,OAAO,CAAC;QACnC,MAAM,IAAIpD,aAAa,CAACoD,OAAO,CAAC;MAClC;EACF;AACF,CAAC"}
|
|
1
|
+
{"version":3,"names":["IoWalletError","SdJwt4VC","verify","verifySdJwt","getValueFromDisclosures","isSameThumbprint","verifyMdoc","MDOC_DEFAULT_NAMESPACE","getParsedCredentialClaimKey","LogLevel","Logger","extractElementValueAsDate","createNestedProperty","parseCredentialSdJwt","credentialConfig","_ref","sdJwt","disclosures","ignoreMissingAttributes","arguments","length","undefined","includeUndefinedAttributes","format","header","typ","message","log","ERROR","claims","attrDefinitions","attrsNotInDisclosures","filter","definition","some","_ref2","name","path","missing","map","_","join","received","definedValues","display","_disclosures$find","attrKey","disclosureValue","find","_ref3","enriched","Object","assign","undefinedValues","fromEntries","keys","includes","_ref4","key","value","parseCredentialMDoc","_ref5","issuerSigned","_ref6","namespace","attribute","nameSpaces","flatNamespaces","entries","flatMap","_ref7","values","v","elementIdentifier","elementValue","_ref8","attrDefNamespace","_ref9","claim","_ref10","_ref11","_ref12","_flatNamespaces$find","_ref13","_ref14","__","reduce","acc","_ref15","names","_ref16","locale","_ref17","_ref18","verifyCredentialSdJwt","rawCredential","issuerKeys","holderBindingContext","decodedCredential","holderBindingKey","Promise","all","getPublicKey","cnf","payload","jwk","kid","verifyCredentialMDoc","x509CertRoot","issuerAuth","deviceKeyInfo","deviceKey","verifyAndParseCredentialSdJwt","issuerConf","credential","credentialConfigurationId","_ref19","credentialCryptoContext","decoded","openid_credential_issuer","jwks","DEBUG","JSON","stringify","credential_configurations_supported","parsedCredential","maybeIssuedAt","expiration","Date","exp","issuedAt","verifyAndParseCredentialMDoc","_ref20","_parsedCredential$get","_parsedCredential$get2","expirationDate","setDate","getDate","verifyAndParseCredential","context","_issuerConf$openid_cr"],"sourceRoot":"../../../../src","sources":["credential/issuance/07-verify-and-parse-credential.ts"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Disclosure, SdJwt4VC } from "../types";
|
|
1
|
+
import { Disclosure, SdJwt4VC, Verification } from "../types";
|
|
2
2
|
describe("SdJwt4VC", () => {
|
|
3
3
|
it("should accept a valid token", () => {
|
|
4
4
|
// example provided at https://italia.github.io/eidas-it-wallet-docs/en/pid-data-model.html
|
|
@@ -60,4 +60,44 @@ describe("Disclosure", () => {
|
|
|
60
60
|
expect(success).toBe(true);
|
|
61
61
|
});
|
|
62
62
|
});
|
|
63
|
+
describe("Verification.time", () => {
|
|
64
|
+
test.each([["ISO string", "2025-09-09T10:00:00Z"], ["unix seconds", 1752122400], ["unix milliseconds", 1752122400000]])("accepts %s", (_label, time) => {
|
|
65
|
+
const value = {
|
|
66
|
+
trust_framework: "eidas",
|
|
67
|
+
assurance_level: "high",
|
|
68
|
+
evidence: [{
|
|
69
|
+
type: "vouch",
|
|
70
|
+
time,
|
|
71
|
+
attestation: {
|
|
72
|
+
type: "digital_attestation",
|
|
73
|
+
reference_number: "abc",
|
|
74
|
+
date_of_issuance: "2025-09-02",
|
|
75
|
+
voucher: {
|
|
76
|
+
organization: "IPZS"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}]
|
|
80
|
+
};
|
|
81
|
+
expect(Verification.safeParse(value).success).toBe(true);
|
|
82
|
+
});
|
|
83
|
+
it("rejects invalid type", () => {
|
|
84
|
+
const value = {
|
|
85
|
+
trust_framework: "eidas",
|
|
86
|
+
assurance_level: "high",
|
|
87
|
+
evidence: [{
|
|
88
|
+
type: "vouch",
|
|
89
|
+
time: null,
|
|
90
|
+
attestation: {
|
|
91
|
+
type: "digital_attestation",
|
|
92
|
+
reference_number: "abc",
|
|
93
|
+
date_of_issuance: "2025-09-02",
|
|
94
|
+
voucher: {
|
|
95
|
+
organization: "IPZS"
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}]
|
|
99
|
+
};
|
|
100
|
+
expect(Verification.safeParse(value).success).toBe(false);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
63
103
|
//# sourceMappingURL=types.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Disclosure","SdJwt4VC","describe","it","token","header","typ","alg","kid","payload","_sd","sub","_sd_alg","vct","iss","issuing_country","issuing_authority","cnf","jwk","kty","crv","x","y","exp","status","status_assertion","credential_hash_alg","success","safeParse","expect","toBe","value","type","record","source","organization_name","organization_id","country_code"],"sourceRoot":"../../../../src","sources":["sd-jwt/__test__/types.test.ts"],"mappings":"AAAA,SAASA,UAAU,EAAEC,QAAQ,QAAQ,UAAU;
|
|
1
|
+
{"version":3,"names":["Disclosure","SdJwt4VC","Verification","describe","it","token","header","typ","alg","kid","payload","_sd","sub","_sd_alg","vct","iss","issuing_country","issuing_authority","cnf","jwk","kty","crv","x","y","exp","status","status_assertion","credential_hash_alg","success","safeParse","expect","toBe","value","type","record","source","organization_name","organization_id","country_code","test","each","_label","time","trust_framework","assurance_level","evidence","attestation","reference_number","date_of_issuance","voucher","organization"],"sourceRoot":"../../../../src","sources":["sd-jwt/__test__/types.test.ts"],"mappings":"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"}
|
|
@@ -83,7 +83,8 @@ export const Verification = z.object({
|
|
|
83
83
|
assurance_level: z.string(),
|
|
84
84
|
evidence: z.array(z.object({
|
|
85
85
|
type: z.literal("vouch"),
|
|
86
|
-
|
|
86
|
+
// Support both string and UNIX timestamp for backward compatibility
|
|
87
|
+
time: z.union([z.string(), z.number()]),
|
|
87
88
|
attestation: z.object({
|
|
88
89
|
type: z.literal("digital_attestation"),
|
|
89
90
|
reference_number: z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["JWK","z","UnixTime","number","min","max","ObfuscatedDisclosures","object","_sd","array","string","Disclosure","tuple","unknown","LEGACY_SD_JWT","StatusAssertion","credential_hash_alg","literal","SdJwt4VC","header","typ","enum","alg","kid","trust_chain","optional","x5c","vctm","payload","intersection","iss","sub","iat","exp","_sd_alg","status","union","status_assertion","status_attestation","cnf","jwk","vct","issuing_authority","issuing_country","Verification","trust_framework","assurance_level","evidence","type","time","attestation","reference_number","date_of_issuance","voucher","organization","TypeMetadata","name","description","data_source","authentic_source","organization_name","organization_code","contacts","homepage_uri","url","logo_uri"],"sourceRoot":"../../../src","sources":["sd-jwt/types.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["JWK","z","UnixTime","number","min","max","ObfuscatedDisclosures","object","_sd","array","string","Disclosure","tuple","unknown","LEGACY_SD_JWT","StatusAssertion","credential_hash_alg","literal","SdJwt4VC","header","typ","enum","alg","kid","trust_chain","optional","x5c","vctm","payload","intersection","iss","sub","iat","exp","_sd_alg","status","union","status_assertion","status_attestation","cnf","jwk","vct","issuing_authority","issuing_country","Verification","trust_framework","assurance_level","evidence","type","time","attestation","reference_number","date_of_issuance","voucher","organization","TypeMetadata","name","description","data_source","authentic_source","organization_name","organization_code","contacts","homepage_uri","url","logo_uri"],"sourceRoot":"../../../src","sources":["sd-jwt/types.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { isObject } from "./misc";
|
|
2
|
+
|
|
3
|
+
// The data used to create localized names
|
|
4
|
+
|
|
5
|
+
// The resulting object of localized names { en: "Name", it: "Nome" }
|
|
6
|
+
|
|
7
|
+
// The core structure being built: a node containing the actual value and its localized names
|
|
8
|
+
|
|
9
|
+
// A path can consist of object keys, array indices, or null for mapping
|
|
10
|
+
|
|
11
|
+
// A union of all possible shapes. It can be a custom PropertyNode or a standard object/array structure
|
|
12
|
+
|
|
13
|
+
// Helper to build localized names from the display data.
|
|
14
|
+
const buildName = display => display.reduce((names, _ref) => {
|
|
15
|
+
let {
|
|
16
|
+
locale,
|
|
17
|
+
name
|
|
18
|
+
} = _ref;
|
|
19
|
+
return {
|
|
20
|
+
...names,
|
|
21
|
+
[locale]: name
|
|
22
|
+
};
|
|
23
|
+
}, {});
|
|
24
|
+
|
|
25
|
+
// Handles the case where the path key is `null`
|
|
26
|
+
const handleNullKeyCase = (currentObject, rest, sourceValue, displayData) => {
|
|
27
|
+
if (!Array.isArray(sourceValue)) return currentObject;
|
|
28
|
+
|
|
29
|
+
// We assert the type here because we know this branch handles PropertyNodes
|
|
30
|
+
const node = currentObject;
|
|
31
|
+
const existingValue = Array.isArray(node.value) ? node.value : [];
|
|
32
|
+
const mappedArray = sourceValue.map((item, idx) => createNestedProperty(existingValue[idx] || {}, rest, item, displayData));
|
|
33
|
+
return {
|
|
34
|
+
...node,
|
|
35
|
+
value: mappedArray,
|
|
36
|
+
name: node.name ?? buildName(displayData)
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Handles the case where the path key is a string
|
|
41
|
+
const handleStringKeyCase = (currentObject, key, rest, sourceValue, displayData) => {
|
|
42
|
+
let nextSourceValue = sourceValue;
|
|
43
|
+
const isLeaf = rest.length === 0;
|
|
44
|
+
if (isObject(sourceValue)) {
|
|
45
|
+
// Check if any remaining string keys in the path exist in current sourceValue
|
|
46
|
+
// This handles nested object paths (unlike arrays which use null in the path)
|
|
47
|
+
const hasRestKey = rest.some(r => typeof r === "string" && r in sourceValue);
|
|
48
|
+
if (hasRestKey) {
|
|
49
|
+
return handleRestKey(currentObject, key, rest, sourceValue, displayData);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Skip processing when the key is not found within the claim object
|
|
53
|
+
if (!(key in sourceValue)) {
|
|
54
|
+
// Leaf node: create a node with an empty value and display name
|
|
55
|
+
if (isLeaf) {
|
|
56
|
+
return {
|
|
57
|
+
...currentObject,
|
|
58
|
+
[key]: {
|
|
59
|
+
value: {},
|
|
60
|
+
name: buildName(displayData)
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Skip processing when the key is not found within the claim object
|
|
65
|
+
return currentObject;
|
|
66
|
+
}
|
|
67
|
+
nextSourceValue = sourceValue[key];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// base case
|
|
71
|
+
if (isLeaf) {
|
|
72
|
+
return {
|
|
73
|
+
...currentObject,
|
|
74
|
+
[key]: {
|
|
75
|
+
value: nextSourceValue,
|
|
76
|
+
name: buildName(displayData)
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// recursive step
|
|
82
|
+
const nextObject = currentObject[key] || {};
|
|
83
|
+
return {
|
|
84
|
+
...currentObject,
|
|
85
|
+
[key]: createNestedProperty(nextObject, rest, nextSourceValue, displayData)
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// Handles the case where the path key is a number
|
|
90
|
+
const handleNumberKeyCase = (currentObject, key, rest, sourceValue, displayData) => {
|
|
91
|
+
const newArray = Array.isArray(currentObject) ? [...currentObject] : [];
|
|
92
|
+
const nextValue = Array.isArray(sourceValue) ? sourceValue[key] : undefined;
|
|
93
|
+
newArray[key] = createNestedProperty(newArray[key] || {}, rest, nextValue, displayData);
|
|
94
|
+
return newArray;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Recursively constructs a nested object with descriptive properties from a path.
|
|
99
|
+
*
|
|
100
|
+
* @param currentObject - The object or array being built upon.
|
|
101
|
+
* @param path - The path segments to follow.
|
|
102
|
+
* @param sourceValue - The raw value to place at the end of the path.
|
|
103
|
+
* @param displayData - The data for generating localized names.
|
|
104
|
+
* @returns The new object or array structure.
|
|
105
|
+
*/
|
|
106
|
+
export const createNestedProperty = (currentObject, path, sourceValue, displayData) => {
|
|
107
|
+
const [key, ...rest] = path;
|
|
108
|
+
switch (true) {
|
|
109
|
+
case key === null:
|
|
110
|
+
return handleNullKeyCase(currentObject, rest, sourceValue, displayData);
|
|
111
|
+
case typeof key === "string":
|
|
112
|
+
return handleStringKeyCase(currentObject, key, rest, sourceValue, displayData);
|
|
113
|
+
case typeof key === "number":
|
|
114
|
+
return handleNumberKeyCase(currentObject, key, rest, sourceValue, displayData);
|
|
115
|
+
default:
|
|
116
|
+
return currentObject;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// Handles the case where the next key in the path exists in the source object
|
|
121
|
+
const handleRestKey = (currentObject, key, rest, sourceValue, displayData) => {
|
|
122
|
+
const currentNode = currentObject[key] ?? {};
|
|
123
|
+
// Take the first key in the remaining path
|
|
124
|
+
const restKey = rest[0];
|
|
125
|
+
const nextSourceValue = sourceValue[restKey];
|
|
126
|
+
|
|
127
|
+
// Merge the current node with the updated nested property for the remaining path.
|
|
128
|
+
return {
|
|
129
|
+
...currentObject,
|
|
130
|
+
[key]: {
|
|
131
|
+
...currentNode,
|
|
132
|
+
value: createNestedProperty(currentNode.value ?? {}, rest, nextSourceValue, displayData)
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=nestedProperty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isObject","buildName","display","reduce","names","_ref","locale","name","handleNullKeyCase","currentObject","rest","sourceValue","displayData","Array","isArray","node","existingValue","value","mappedArray","map","item","idx","createNestedProperty","handleStringKeyCase","key","nextSourceValue","isLeaf","length","hasRestKey","some","r","handleRestKey","nextObject","handleNumberKeyCase","newArray","nextValue","undefined","path","currentNode","restKey"],"sourceRoot":"../../../src","sources":["utils/nestedProperty.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"07-verify-and-parse-credential.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/07-verify-and-parse-credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"07-verify-and-parse-credential.d.ts","sourceRoot":"","sources":["../../../../src/credential/issuance/07-verify-and-parse-credential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAU/D,KAAK,UAAU,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC;AAQzD,MAAM,MAAM,wBAAwB,GAAG,CACrC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,EAC/C,yBAAyB,EAAE,MAAM,EACjC,OAAO,EAAE;IACP,uBAAuB,EAAE,aAAa,CAAC;IACvC;;OAEG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,EACD,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC;IACX,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;CAC5B,CAAC,CAAC;AAGH,KAAK,gBAAgB,GAAG;IACtB,oBAAoB;IACpB,CAAC,KAAK,EAAE,MAAM,GAAG;QACf,IAAI,EACA,yBAAyB,CAAC,MAAM,CAC9B,MAAM,EACN,MAAM,CACP,GACD,4BAA4B,CAAC,MAAM,GACnC,SAAS,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,CAAC;AA6XF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,EAAE,wBAuCtC,CAAC"}
|