@pagopa/io-react-native-wallet 0.15.3 → 0.16.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/index.js +3 -1
- package/lib/commonjs/credential/index.js.map +1 -1
- package/lib/commonjs/credential/issuance/04-complete-user-authorization.js +19 -4
- package/lib/commonjs/credential/issuance/04-complete-user-authorization.js.map +1 -1
- package/lib/commonjs/credential/issuance/05-authorize-access.js +9 -12
- package/lib/commonjs/credential/issuance/05-authorize-access.js.map +1 -1
- package/lib/commonjs/credential/issuance/06-obtain-credential.js +13 -2
- package/lib/commonjs/credential/issuance/06-obtain-credential.js.map +1 -1
- package/lib/commonjs/credential/status/01-start-flow.js +2 -0
- package/lib/commonjs/credential/status/01-start-flow.js.map +1 -0
- package/lib/commonjs/credential/status/02-status-attestation.js +72 -0
- package/lib/commonjs/credential/status/02-status-attestation.js.map +1 -0
- package/lib/commonjs/credential/status/03-verify-and-parse-status-attestation.js +52 -0
- package/lib/commonjs/credential/status/03-verify-and-parse-status-attestation.js.map +1 -0
- package/lib/commonjs/credential/status/errors.js +38 -0
- package/lib/commonjs/credential/status/errors.js.map +1 -0
- package/lib/commonjs/credential/status/index.js +27 -0
- package/lib/commonjs/credential/status/index.js.map +1 -0
- package/lib/commonjs/credential/status/types.js +48 -0
- package/lib/commonjs/credential/status/types.js.map +1 -0
- package/lib/commonjs/utils/errors.js +44 -2
- package/lib/commonjs/utils/errors.js.map +1 -1
- package/lib/commonjs/utils/misc.js +41 -3
- package/lib/commonjs/utils/misc.js.map +1 -1
- package/lib/commonjs/utils/par.js +1 -1
- package/lib/commonjs/utils/par.js.map +1 -1
- package/lib/module/credential/index.js +2 -1
- package/lib/module/credential/index.js.map +1 -1
- package/lib/module/credential/issuance/04-complete-user-authorization.js +21 -6
- package/lib/module/credential/issuance/04-complete-user-authorization.js.map +1 -1
- package/lib/module/credential/issuance/05-authorize-access.js +9 -12
- package/lib/module/credential/issuance/05-authorize-access.js.map +1 -1
- package/lib/module/credential/issuance/06-obtain-credential.js +13 -3
- package/lib/module/credential/issuance/06-obtain-credential.js.map +1 -1
- package/lib/module/credential/status/01-start-flow.js +2 -0
- package/lib/module/credential/status/01-start-flow.js.map +1 -0
- package/lib/module/credential/status/02-status-attestation.js +64 -0
- package/lib/module/credential/status/02-status-attestation.js.map +1 -0
- package/lib/module/credential/status/03-verify-and-parse-status-attestation.js +46 -0
- package/lib/module/credential/status/03-verify-and-parse-status-attestation.js.map +1 -0
- package/lib/module/credential/status/errors.js +30 -0
- package/lib/module/credential/status/errors.js.map +1 -0
- package/lib/module/credential/status/index.js +5 -0
- package/lib/module/credential/status/index.js.map +1 -0
- package/lib/module/credential/status/types.js +40 -0
- package/lib/module/credential/status/types.js.map +1 -0
- package/lib/module/utils/errors.js +40 -1
- package/lib/module/utils/errors.js.map +1 -1
- package/lib/module/utils/misc.js +38 -3
- package/lib/module/utils/misc.js.map +1 -1
- package/lib/module/utils/par.js +1 -1
- package/lib/module/utils/par.js.map +1 -1
- package/lib/typescript/credential/index.d.ts +2 -1
- package/lib/typescript/credential/index.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/04-complete-user-authorization.d.ts +3 -1
- package/lib/typescript/credential/issuance/04-complete-user-authorization.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/05-authorize-access.d.ts +2 -1
- package/lib/typescript/credential/issuance/05-authorize-access.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/06-obtain-credential.d.ts +3 -1
- package/lib/typescript/credential/issuance/06-obtain-credential.d.ts.map +1 -1
- package/lib/typescript/credential/status/01-start-flow.d.ts +10 -0
- package/lib/typescript/credential/status/01-start-flow.d.ts.map +1 -0
- package/lib/typescript/credential/status/02-status-attestation.d.ts +20 -0
- package/lib/typescript/credential/status/02-status-attestation.d.ts.map +1 -0
- package/lib/typescript/credential/status/03-verify-and-parse-status-attestation.d.ts +24 -0
- package/lib/typescript/credential/status/03-verify-and-parse-status-attestation.d.ts.map +1 -0
- package/lib/typescript/credential/status/errors.d.ts +14 -0
- package/lib/typescript/credential/status/errors.d.ts.map +1 -0
- package/lib/typescript/credential/status/index.d.ts +7 -0
- package/lib/typescript/credential/status/index.d.ts.map +1 -0
- package/lib/typescript/credential/status/types.d.ts +305 -0
- package/lib/typescript/credential/status/types.d.ts.map +1 -0
- package/lib/typescript/utils/errors.d.ts +31 -0
- package/lib/typescript/utils/errors.d.ts.map +1 -1
- package/lib/typescript/utils/misc.d.ts +18 -1
- package/lib/typescript/utils/misc.d.ts.map +1 -1
- package/lib/typescript/utils/par.d.ts +1 -4
- package/lib/typescript/utils/par.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/credential/index.ts +2 -1
- package/src/credential/issuance/04-complete-user-authorization.ts +36 -6
- package/src/credential/issuance/05-authorize-access.ts +13 -15
- package/src/credential/issuance/06-obtain-credential.ts +24 -4
- package/src/credential/status/01-start-flow.ts +9 -0
- package/src/credential/status/02-status-attestation.ts +101 -0
- package/src/credential/status/03-verify-and-parse-status-attestation.ts +60 -0
- package/src/credential/status/errors.ts +31 -0
- package/src/credential/status/index.ts +22 -0
- package/src/credential/status/types.ts +43 -0
- package/src/utils/errors.ts +46 -1
- package/src/utils/misc.ts +45 -4
- package/src/utils/par.ts +2 -2
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.WalletProviderResponseError = exports.WalletInstanceRevokedError = exports.WalletInstanceNotFoundError = exports.WalletInstanceAttestationIssuingError = exports.ValidationFailed = exports.PidMetadataError = exports.PidIssuingError = exports.NoSuitableKeysFoundInEntityConfiguration = exports.IoWalletError = exports.ClaimsNotFoundInToken = exports.ClaimsNotFoundBetweenDislosures = exports.AuthorizationIdpError = exports.AuthorizationError = exports.AuthRequestDecodeError = void 0;
|
|
6
|
+
exports.serializeAttrs = exports.WalletProviderResponseError = exports.WalletInstanceRevokedError = exports.WalletInstanceNotFoundError = exports.WalletInstanceAttestationIssuingError = exports.ValidationFailed = exports.UnexpectedStatusCodeError = exports.PidMetadataError = exports.PidIssuingError = exports.OperationAbortedError = exports.NoSuitableKeysFoundInEntityConfiguration = exports.IoWalletError = exports.ClaimsNotFoundInToken = exports.ClaimsNotFoundBetweenDislosures = exports.AuthorizationIdpError = exports.AuthorizationError = exports.AuthRequestDecodeError = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* utility to format a set of attributes into an error message string
|
|
9
9
|
*
|
|
@@ -30,6 +30,7 @@ const serializeAttrs = attrs => Object.entries(attrs).map(_ref => {
|
|
|
30
30
|
* }
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
+
exports.serializeAttrs = serializeAttrs;
|
|
33
34
|
class IoWalletError extends Error {
|
|
34
35
|
/** A unique error code for the particular error subclass. */
|
|
35
36
|
static get code() {
|
|
@@ -46,11 +47,32 @@ class IoWalletError extends Error {
|
|
|
46
47
|
(_Error$captureStackTr = Error.captureStackTrace) === null || _Error$captureStackTr === void 0 ? void 0 : _Error$captureStackTr.call(Error, this, this.constructor);
|
|
47
48
|
}
|
|
48
49
|
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* An error subclass thrown when a Wallet Provider http request has a status code different from the one expected.
|
|
53
|
+
*/
|
|
54
|
+
exports.IoWalletError = IoWalletError;
|
|
55
|
+
class UnexpectedStatusCodeError extends IoWalletError {
|
|
56
|
+
static get code() {
|
|
57
|
+
return "ERR_UNEXPECTED_STATUS_CODE";
|
|
58
|
+
}
|
|
59
|
+
code = "ERR_UNEXPECTED_STATUS_CODE";
|
|
60
|
+
|
|
61
|
+
/** HTTP status code */
|
|
62
|
+
|
|
63
|
+
constructor(message, statusCode) {
|
|
64
|
+
super(serializeAttrs({
|
|
65
|
+
message,
|
|
66
|
+
statusCode: statusCode.toString()
|
|
67
|
+
}));
|
|
68
|
+
this.statusCode = statusCode;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
49
71
|
/**
|
|
50
72
|
* An error subclass thrown when validation fail
|
|
51
73
|
*
|
|
52
74
|
*/
|
|
53
|
-
exports.
|
|
75
|
+
exports.UnexpectedStatusCodeError = UnexpectedStatusCodeError;
|
|
54
76
|
class ValidationFailed extends IoWalletError {
|
|
55
77
|
static get code() {
|
|
56
78
|
return "ERR_IO_WALLET_VALIDATION_FAILED";
|
|
@@ -335,5 +357,25 @@ class AuthorizationIdpError extends IoWalletError {
|
|
|
335
357
|
this.errorDescription = errorDescription;
|
|
336
358
|
}
|
|
337
359
|
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Error subclass thrown when an operation has been aborted.
|
|
363
|
+
*/
|
|
338
364
|
exports.AuthorizationIdpError = AuthorizationIdpError;
|
|
365
|
+
class OperationAbortedError extends IoWalletError {
|
|
366
|
+
static get code() {
|
|
367
|
+
return "ERR_IO_WALLET_OPERATION_ABORTED";
|
|
368
|
+
}
|
|
369
|
+
code = "ERR_IO_WALLET_OPERATION_ABORTED";
|
|
370
|
+
|
|
371
|
+
/** The aborted operation */
|
|
372
|
+
|
|
373
|
+
constructor(operation) {
|
|
374
|
+
super(serializeAttrs({
|
|
375
|
+
operation
|
|
376
|
+
}));
|
|
377
|
+
this.operation = operation;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
exports.OperationAbortedError = OperationAbortedError;
|
|
339
381
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["serializeAttrs","attrs","Object","entries","map","_ref","k","v","Array","isArray","join","_","IoWalletError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","
|
|
1
|
+
{"version":3,"names":["serializeAttrs","attrs","Object","entries","map","_ref","k","v","Array","isArray","join","_","exports","IoWalletError","Error","code","constructor","message","_Error$captureStackTr","name","captureStackTrace","call","UnexpectedStatusCodeError","statusCode","toString","ValidationFailed","claim","arguments","length","undefined","reason","WalletInstanceAttestationIssuingError","AuthRequestDecodeError","PidIssuingError","ClaimsNotFoundBetweenDislosures","claims","c","ClaimsNotFoundInToken","NoSuitableKeysFoundInEntityConfiguration","scenario","PidMetadataError","WalletProviderResponseError","WalletInstanceRevokedError","WalletInstanceNotFoundError","AuthorizationError","AuthorizationIdpError","error","errorDescription","OperationAbortedError","operation"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
|
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.until = exports.hasStatus = exports.generateRandomAlphaNumericString = void 0;
|
|
6
|
+
exports.until = exports.isDefined = exports.hasStatus = exports.getCredentialHashWithouDiscloures = exports.generateRandomAlphaNumericString = exports.createAbortPromiseFromSignal = void 0;
|
|
7
7
|
var _errors = require("./errors");
|
|
8
|
+
var _jsSha = require("js-sha256");
|
|
8
9
|
/**
|
|
9
10
|
* Check if a response is in the expected status, other
|
|
10
|
-
* @param status The expected status
|
|
11
|
+
* @param status - The expected status
|
|
12
|
+
* @throws {@link UnexpectedStatusCodeError} if the status is different from the one expected
|
|
11
13
|
* @returns The given response object
|
|
12
14
|
*/
|
|
13
15
|
const hasStatus = status => async res => {
|
|
14
16
|
if (res.status !== status) {
|
|
15
|
-
throw new _errors.
|
|
17
|
+
throw new _errors.UnexpectedStatusCodeError(`Http request failed. Expected ${status}, got ${res.status}, url: ${res.url} with response: ${await res.text()}`, res.status);
|
|
16
18
|
}
|
|
17
19
|
return res;
|
|
18
20
|
};
|
|
@@ -52,5 +54,41 @@ const until = (conditionFunction, timeoutSeconds) => new Promise((resolve, rejec
|
|
|
52
54
|
};
|
|
53
55
|
poll();
|
|
54
56
|
});
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Get the hash of a credential without discloures.
|
|
60
|
+
* A credential is a string like `header.body.sign~sd1~sd2....` where `~` is the separator between the credential and the discloures.
|
|
61
|
+
* @param credential - The credential to hash
|
|
62
|
+
* @returns The hash of the credential without discloures
|
|
63
|
+
*/
|
|
55
64
|
exports.until = until;
|
|
65
|
+
const getCredentialHashWithouDiscloures = async credential => {
|
|
66
|
+
const tildeIndex = credential.indexOf("~");
|
|
67
|
+
if (tildeIndex === -1) {
|
|
68
|
+
throw new _errors.IoWalletError("Invalid credential format");
|
|
69
|
+
}
|
|
70
|
+
return (0, _jsSha.sha256)(credential.slice(0, tildeIndex));
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Creates a promise that waits until the provided signal is aborted.
|
|
75
|
+
* @returns {Object} An object with `listen` and `remove` methods to handle subscribing and unsubscribing.
|
|
76
|
+
*/
|
|
77
|
+
exports.getCredentialHashWithouDiscloures = getCredentialHashWithouDiscloures;
|
|
78
|
+
const createAbortPromiseFromSignal = signal => {
|
|
79
|
+
let listener;
|
|
80
|
+
return {
|
|
81
|
+
listen: () => new Promise(resolve => {
|
|
82
|
+
if (signal.aborted) {
|
|
83
|
+
return resolve("OPERATION_ABORTED");
|
|
84
|
+
}
|
|
85
|
+
listener = () => resolve("OPERATION_ABORTED");
|
|
86
|
+
signal.addEventListener("abort", listener);
|
|
87
|
+
}),
|
|
88
|
+
remove: () => signal.removeEventListener("abort", listener)
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
exports.createAbortPromiseFromSignal = createAbortPromiseFromSignal;
|
|
92
|
+
const isDefined = x => Boolean(x);
|
|
93
|
+
exports.isDefined = isDefined;
|
|
56
94
|
//# sourceMappingURL=misc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_errors","require","hasStatus","status","res","
|
|
1
|
+
{"version":3,"names":["_errors","require","_jsSha","hasStatus","status","res","UnexpectedStatusCodeError","url","text","exports","generateRandomAlphaNumericString","size","Array","from","Math","floor","random","toString","join","until","conditionFunction","timeoutSeconds","Promise","resolve","reject","start","Date","now","poll","undefined","Error","setTimeout","getCredentialHashWithouDiscloures","credential","tildeIndex","indexOf","IoWalletError","sha256","slice","createAbortPromiseFromSignal","signal","listener","listen","aborted","addEventListener","remove","removeEventListener","isDefined","x","Boolean"],"sourceRoot":"../../../src","sources":["utils/misc.ts"],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ exports.AuthorizationDetails = AuthorizationDetails;
|
|
|
28
28
|
const makeParRequest = _ref => {
|
|
29
29
|
let {
|
|
30
30
|
wiaCryptoContext,
|
|
31
|
-
appFetch
|
|
31
|
+
appFetch
|
|
32
32
|
} = _ref;
|
|
33
33
|
return async (clientId, codeVerifier, redirectUri, responseMode, parEndpoint, walletInstanceAttestation, authorizationDetails, assertionType) => {
|
|
34
34
|
const wiaPublicKey = await wiaCryptoContext.getPublicKey();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ioReactNativeJwt","require","_reactNativeUuid","_interopRequireDefault","z","_interopRequireWildcard","WalletInstanceAttestation","_misc","_pop","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","AuthorizationDetail","object","credential_configuration_id","string","format","union","literal","type","exports","AuthorizationDetails","array","makeParRequest","_ref","wiaCryptoContext","appFetch","
|
|
1
|
+
{"version":3,"names":["_ioReactNativeJwt","require","_reactNativeUuid","_interopRequireDefault","z","_interopRequireWildcard","WalletInstanceAttestation","_misc","_pop","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","AuthorizationDetail","object","credential_configuration_id","string","format","union","literal","type","exports","AuthorizationDetails","array","makeParRequest","_ref","wiaCryptoContext","appFetch","clientId","codeVerifier","redirectUri","responseMode","parEndpoint","walletInstanceAttestation","authorizationDetails","assertionType","wiaPublicKey","getPublicKey","parUrl","URL","aud","protocol","hostname","iss","decode","payload","cnf","jwk","kid","signedWiaPoP","createPopToken","jti","uuid","v4","codeChallengeMethod","codeChallenge","sha256ToBase64","signedJwtForPar","SignJWT","setProtectedHeader","typ","setPayload","response_type","response_mode","client_id","state","generateRandomAlphaNumericString","code_challenge","code_challenge_method","authorization_details","redirect_uri","client_assertion_type","client_assertion","setIssuedAt","setExpirationTime","sign","formBody","URLSearchParams","request","method","headers","body","toString","then","hasStatus","res","json","result","request_uri"],"sourceRoot":"../../../src","sources":["utils/par.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Issuance","Presentation"],"sourceRoot":"../../../src","sources":["credential/index.ts"],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,YAAY;AACtC,OAAO,KAAKC,YAAY,MAAM,gBAAgB;
|
|
1
|
+
{"version":3,"names":["Issuance","Presentation","Status"],"sourceRoot":"../../../src","sources":["credential/index.ts"],"mappings":"AAAA,OAAO,KAAKA,QAAQ,MAAM,YAAY;AACtC,OAAO,KAAKC,YAAY,MAAM,gBAAgB;AAC9C,OAAO,KAAKC,MAAM,MAAM,UAAU;AAElC,SAASF,QAAQ,EAAEC,YAAY,EAAEC,MAAM"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AuthorizationErrorShape, AuthorizationResultShape } from "../../utils/auth";
|
|
2
|
-
import { hasStatus, until } from "../../utils/misc";
|
|
2
|
+
import { createAbortPromiseFromSignal, hasStatus, isDefined, until } from "../../utils/misc";
|
|
3
3
|
import parseUrl from "parse-url";
|
|
4
|
-
import { AuthorizationError, AuthorizationIdpError, ValidationFailed } from "../../utils/errors";
|
|
4
|
+
import { AuthorizationError, AuthorizationIdpError, OperationAbortedError, ValidationFailed } from "../../utils/errors";
|
|
5
5
|
import { Linking } from "react-native";
|
|
6
6
|
import { decode, encodeBase64, SignJWT } from "@pagopa/io-react-native-jwt";
|
|
7
7
|
import { RequestObject } from "../presentation/types";
|
|
@@ -26,11 +26,13 @@ import { getJwtFromFormPost } from "../../utils/decoder";
|
|
|
26
26
|
* If not specified, the default browser is used
|
|
27
27
|
* @param idphint Unique identifier of the SPID IDP selected by the user
|
|
28
28
|
* @param redirectUri The url to reach to complete the user authorization which is the custom URL scheme that the Wallet Instance is registered to handle, usually a custom URL or deeplink
|
|
29
|
+
* @param signal An optional {@link AbortSignal} to abort the operation when using the default browser
|
|
29
30
|
* @throws {AuthorizationError} if an error occurs during the authorization process
|
|
30
31
|
* @throws {AuthorizationIdpError} if an error occurs during the authorization process and the error is related to the IDP
|
|
32
|
+
* @throws {OperationAbortedError} if the caller aborts the operation via the provided signal
|
|
31
33
|
* @returns the authorization response which contains code, state and iss
|
|
32
34
|
*/
|
|
33
|
-
export const completeUserAuthorizationWithQueryMode = async (issuerRequestUri, clientId, issuerConf, idpHint, redirectUri, authorizationContext) => {
|
|
35
|
+
export const completeUserAuthorizationWithQueryMode = async (issuerRequestUri, clientId, issuerConf, idpHint, redirectUri, authorizationContext, signal) => {
|
|
34
36
|
const authzRequestEndpoint = issuerConf.oauth_authorization_server.authorization_endpoint;
|
|
35
37
|
const params = new URLSearchParams({
|
|
36
38
|
client_id: clientId,
|
|
@@ -46,7 +48,7 @@ export const completeUserAuthorizationWithQueryMode = async (issuerRequestUri, c
|
|
|
46
48
|
});
|
|
47
49
|
} else {
|
|
48
50
|
// handler for redirectUri
|
|
49
|
-
Linking.addEventListener("url", _ref => {
|
|
51
|
+
const urlEventListener = Linking.addEventListener("url", _ref => {
|
|
50
52
|
let {
|
|
51
53
|
url
|
|
52
54
|
} = _ref;
|
|
@@ -54,14 +56,27 @@ export const completeUserAuthorizationWithQueryMode = async (issuerRequestUri, c
|
|
|
54
56
|
authRedirectUrl = url;
|
|
55
57
|
}
|
|
56
58
|
});
|
|
57
|
-
const
|
|
59
|
+
const operationIsAborted = signal ? createAbortPromiseFromSignal(signal) : undefined;
|
|
60
|
+
await Linking.openURL(authUrl);
|
|
58
61
|
|
|
59
62
|
/*
|
|
60
63
|
* Waits for 120 seconds for the identificationRedirectUrl variable to be set
|
|
61
64
|
* by the custom url handler. If the timeout is exceeded, throw an exception
|
|
62
65
|
*/
|
|
63
66
|
const unitAuthRedirectIsNotUndefined = until(() => authRedirectUrl !== undefined, 120);
|
|
64
|
-
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Simultaneously listen for the abort signal (when provided) and the redirect url.
|
|
70
|
+
* The first event that occurs will resolve the promise.
|
|
71
|
+
* This is useful to properly cleanup when the caller aborts this operation.
|
|
72
|
+
*/
|
|
73
|
+
const winner = await Promise.race([operationIsAborted === null || operationIsAborted === void 0 ? void 0 : operationIsAborted.listen(), unitAuthRedirectIsNotUndefined].filter(isDefined)).finally(() => {
|
|
74
|
+
urlEventListener.remove();
|
|
75
|
+
operationIsAborted === null || operationIsAborted === void 0 ? void 0 : operationIsAborted.remove();
|
|
76
|
+
});
|
|
77
|
+
if (winner === "OPERATION_ABORTED") {
|
|
78
|
+
throw new OperationAbortedError("DefaultQueryModeAuthorization");
|
|
79
|
+
}
|
|
65
80
|
if (authRedirectUrl === undefined) {
|
|
66
81
|
throw new AuthorizationError("Invalid authentication redirect url");
|
|
67
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AuthorizationErrorShape","AuthorizationResultShape","hasStatus","until","parseUrl","AuthorizationError","AuthorizationIdpError","ValidationFailed","Linking","decode","encodeBase64","SignJWT","RequestObject","uuid","ResponseUriResultShape","getJwtFromFormPost","completeUserAuthorizationWithQueryMode","issuerRequestUri","clientId","issuerConf","idpHint","redirectUri","authorizationContext","authzRequestEndpoint","oauth_authorization_server","authorization_endpoint","params","URLSearchParams","client_id","request_uri","idphint","authUrl","authRedirectUrl","redirectSchema","URL","protocol","replace","authorize","catch","e","message","addEventListener","_ref","url","includes","
|
|
1
|
+
{"version":3,"names":["AuthorizationErrorShape","AuthorizationResultShape","createAbortPromiseFromSignal","hasStatus","isDefined","until","parseUrl","AuthorizationError","AuthorizationIdpError","OperationAbortedError","ValidationFailed","Linking","decode","encodeBase64","SignJWT","RequestObject","uuid","ResponseUriResultShape","getJwtFromFormPost","completeUserAuthorizationWithQueryMode","issuerRequestUri","clientId","issuerConf","idpHint","redirectUri","authorizationContext","signal","authzRequestEndpoint","oauth_authorization_server","authorization_endpoint","params","URLSearchParams","client_id","request_uri","idphint","authUrl","authRedirectUrl","redirectSchema","URL","protocol","replace","authorize","catch","e","message","urlEventListener","addEventListener","_ref","url","includes","operationIsAborted","undefined","openURL","unitAuthRedirectIsNotUndefined","winner","Promise","race","listen","filter","finally","remove","query","parseAuthroizationResponse","getRequestedCredentialToBePresented","appFetch","arguments","length","fetch","requestObject","toString","method","then","res","text","jws","reqObj","safeParse","payload","success","error","data","completeUserAuthorizationWithFormPostJwtMode","ctx","wiaCryptoContext","pidCryptoContext","pid","walletInstanceAttestation","wiaWpToken","setProtectedHeader","alg","typ","setPayload","vp","jti","v4","nonce","setIssuedAt","setExpirationTime","setAudience","response_uri","sign","pidWpToken","presentationSubmission","definition_id","id","descriptor_map","path","format","authzResponsePayload","JSON","stringify","state","presentation_submission","vp_token","body","response","resUriRes","headers","reqUri","json","responseUri","redirect_uri","cbRes","decodedJwt","authRes","authResParsed","authErr","error_description"],"sourceRoot":"../../../../src","sources":["credential/issuance/04-complete-user-authorization.ts"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { hasStatus } from "../../utils/misc";
|
|
2
|
-
import { withEphemeralKey } from "../../utils/crypto";
|
|
3
2
|
import { createDPopToken } from "../../utils/dpop";
|
|
4
3
|
import uuid from "react-native-uuid";
|
|
5
4
|
import { createPopToken } from "../../utils/pop";
|
|
@@ -19,6 +18,7 @@ import { ValidationFailed } from "../../utils/errors";
|
|
|
19
18
|
* @param codeVerifier The code verifier returned by {@link startUserAuthorization}
|
|
20
19
|
* @param context.walletInstanceAttestation The Wallet Instance's attestation
|
|
21
20
|
* @param context.wiaCryptoContext The Wallet Instance's crypto context
|
|
21
|
+
* @param context.dPopCryptoContext The DPoP crypto context
|
|
22
22
|
* @param context.appFetch (optional) fetch api implementation. Default: built-in fetch
|
|
23
23
|
* @throws {ValidationFailed} if an error occurs while parsing the token response
|
|
24
24
|
* @return The token response containing the access token along with the token request signed with DPoP which has to be used in the {@link obtainCredential} step.
|
|
@@ -27,21 +27,19 @@ export const authorizeAccess = async (issuerConf, code, clientId, redirectUri, c
|
|
|
27
27
|
const {
|
|
28
28
|
appFetch = fetch,
|
|
29
29
|
walletInstanceAttestation,
|
|
30
|
-
wiaCryptoContext
|
|
30
|
+
wiaCryptoContext,
|
|
31
|
+
dPopCryptoContext
|
|
31
32
|
} = context;
|
|
32
33
|
const parEndpoint = issuerConf.oauth_authorization_server.pushed_authorization_request_endpoint;
|
|
33
34
|
const parUrl = new URL(parEndpoint);
|
|
34
35
|
const aud = `${parUrl.protocol}//${parUrl.hostname}`;
|
|
35
36
|
const iss = WalletInstanceAttestation.decode(walletInstanceAttestation).payload.cnf.jwk.kid;
|
|
36
37
|
const tokenUrl = issuerConf.oauth_authorization_server.token_endpoint;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
jti: `${uuid.v4()}`
|
|
43
|
-
}, ephimeralContext);
|
|
44
|
-
});
|
|
38
|
+
const tokenRequestSignedDPop = await createDPopToken({
|
|
39
|
+
htm: "POST",
|
|
40
|
+
htu: tokenUrl,
|
|
41
|
+
jti: `${uuid.v4()}`
|
|
42
|
+
}, dPopCryptoContext);
|
|
45
43
|
const signedWiaPoP = await createPopToken({
|
|
46
44
|
jti: `${uuid.v4()}`,
|
|
47
45
|
aud,
|
|
@@ -69,8 +67,7 @@ export const authorizeAccess = async (issuerConf, code, clientId, redirectUri, c
|
|
|
69
67
|
throw new ValidationFailed(tokenRes.error.message);
|
|
70
68
|
}
|
|
71
69
|
return {
|
|
72
|
-
accessToken: tokenRes.data
|
|
73
|
-
tokenRequestSignedDPop
|
|
70
|
+
accessToken: tokenRes.data
|
|
74
71
|
};
|
|
75
72
|
};
|
|
76
73
|
//# sourceMappingURL=05-authorize-access.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["hasStatus","
|
|
1
|
+
{"version":3,"names":["hasStatus","createDPopToken","uuid","createPopToken","WalletInstanceAttestation","ASSERTION_TYPE","TokenResponse","ValidationFailed","authorizeAccess","issuerConf","code","clientId","redirectUri","codeVerifier","context","appFetch","fetch","walletInstanceAttestation","wiaCryptoContext","dPopCryptoContext","parEndpoint","oauth_authorization_server","pushed_authorization_request_endpoint","parUrl","URL","aud","protocol","hostname","iss","decode","payload","cnf","jwk","kid","tokenUrl","token_endpoint","tokenRequestSignedDPop","htm","htu","jti","v4","signedWiaPoP","requestBody","grant_type","client_id","redirect_uri","code_verifier","client_assertion_type","client_assertion","authorizationRequestFormBody","URLSearchParams","tokenRes","method","headers","DPoP","body","toString","then","res","json","safeParse","success","error","message","accessToken","data"],"sourceRoot":"../../../../src","sources":["credential/issuance/05-authorize-access.ts"],"mappings":"AAAA,SAASA,SAAS,QAAkB,kBAAkB;AAGtD,SAASC,eAAe,QAAQ,kBAAkB;AAClD,OAAOC,IAAI,MAAM,mBAAmB;AACpC,SAASC,cAAc,QAAQ,iBAAiB;AAChD,OAAO,KAAKC,yBAAyB,MAAM,mCAAmC;AAE9E,SAASC,cAAc,QAAQ,SAAS;AACxC,SAASC,aAAa,QAAQ,SAAS;AACvC,SAASC,gBAAgB,QAAQ,oBAAoB;AAiBrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAgC,GAAG,MAAAA,CAC9CC,UAAU,EACVC,IAAI,EACJC,QAAQ,EACRC,WAAW,EACXC,YAAY,EACZC,OAAO,KACJ;EACH,MAAM;IACJC,QAAQ,GAAGC,KAAK;IAChBC,yBAAyB;IACzBC,gBAAgB;IAChBC;EACF,CAAC,GAAGL,OAAO;EAEX,MAAMM,WAAW,GACfX,UAAU,CAACY,0BAA0B,CAACC,qCAAqC;EAC7E,MAAMC,MAAM,GAAG,IAAIC,GAAG,CAACJ,WAAW,CAAC;EACnC,MAAMK,GAAG,GAAI,GAAEF,MAAM,CAACG,QAAS,KAAIH,MAAM,CAACI,QAAS,EAAC;EACpD,MAAMC,GAAG,GAAGxB,yBAAyB,CAACyB,MAAM,CAACZ,yBAAyB,CAAC,CACpEa,OAAO,CAACC,GAAG,CAACC,GAAG,CAACC,GAAG;EAEtB,MAAMC,QAAQ,GAAGzB,UAAU,CAACY,0BAA0B,CAACc,cAAc;EAErE,MAAMC,sBAAsB,GAAG,MAAMnC,eAAe,CAClD;IACEoC,GAAG,EAAE,MAAM;IACXC,GAAG,EAAEJ,QAAQ;IACbK,GAAG,EAAG,GAAErC,IAAI,CAACsC,EAAE,CAAC,CAAE;EACpB,CAAC,EACDrB,iBACF,CAAC;EAED,MAAMsB,YAAY,GAAG,MAAMtC,cAAc,CACvC;IACEoC,GAAG,EAAG,GAAErC,IAAI,CAACsC,EAAE,CAAC,CAAE,EAAC;IACnBf,GAAG;IACHG;EACF,CAAC,EACDV,gBACF,CAAC;EAED,MAAMwB,WAAW,GAAG;IAClBC,UAAU,EAAE,oBAAoB;IAChCC,SAAS,EAAEjC,QAAQ;IACnBD,IAAI;IACJmC,YAAY,EAAEjC,WAAW;IACzBkC,aAAa,EAAEjC,YAAY;IAC3BkC,qBAAqB,EAAE1C,cAAc;IACrC2C,gBAAgB,EAAE/B,yBAAyB,GAAG,GAAG,GAAGwB;EACtD,CAAC;EAED,MAAMQ,4BAA4B,GAAG,IAAIC,eAAe,CAACR,WAAW,CAAC;EACrE,MAAMS,QAAQ,GAAG,MAAMpC,QAAQ,CAACmB,QAAQ,EAAE;IACxCkB,MAAM,EAAE,MAAM;IACdC,OAAO,EAAE;MACP,cAAc,EAAE,mCAAmC;MACnDC,IAAI,EAAElB;IACR,CAAC;IACDmB,IAAI,EAAEN,4BAA4B,CAACO,QAAQ,CAAC;EAC9C,CAAC,CAAC,CACCC,IAAI,CAACzD,SAAS,CAAC,GAAG,CAAC,CAAC,CACpByD,IAAI,CAAEC,GAAG,IAAKA,GAAG,CAACC,IAAI,CAAC,CAAC,CAAC,CACzBF,IAAI,CAAEF,IAAI,IAAKjD,aAAa,CAACsD,SAAS,CAACL,IAAI,CAAC,CAAC;EAEhD,IAAI,CAACJ,QAAQ,CAACU,OAAO,EAAE;IACrB,MAAM,IAAItD,gBAAgB,CAAC4C,QAAQ,CAACW,KAAK,CAACC,OAAO,CAAC;EACpD;EAEA,OAAO;IAAEC,WAAW,EAAEb,QAAQ,CAACc;EAAK,CAAC;AACvC,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { SignJWT } from "@pagopa/io-react-native-jwt";
|
|
1
|
+
import { sha256ToBase64, SignJWT } from "@pagopa/io-react-native-jwt";
|
|
2
2
|
import { hasStatus } from "../../utils/misc";
|
|
3
3
|
import { ValidationFailed } from "../../utils/errors";
|
|
4
4
|
import { CredentialResponse } from "./types";
|
|
5
|
+
import { createDPopToken } from "../../utils/dpop";
|
|
6
|
+
import uuid from "react-native-uuid";
|
|
5
7
|
export const createNonceProof = async (nonce, issuer, audience, ctx) => {
|
|
6
8
|
const jwk = await ctx.getPublicKey();
|
|
7
9
|
return new SignJWT(ctx).setPayload({
|
|
@@ -24,13 +26,15 @@ export const createNonceProof = async (nonce, issuer, audience, ctx) => {
|
|
|
24
26
|
* @param credentialDefinition The credential definition of the credential to be obtained returned by {@link startUserAuthorization}
|
|
25
27
|
* @param tokenRequestSignedDPop The DPoP signed token request returned by {@link authorizeAccess}
|
|
26
28
|
* @param context.credentialCryptoContext The crypto context used to obtain the credential
|
|
29
|
+
* @param context.dPopCryptoContext The DPoP crypto context
|
|
27
30
|
* @param context.appFetch (optional) fetch api implementation. Default: built-in fetch
|
|
28
31
|
* @returns The credential response containing the credential
|
|
29
32
|
*/
|
|
30
|
-
export const obtainCredential = async (issuerConf, accessToken, clientId, credentialDefinition,
|
|
33
|
+
export const obtainCredential = async (issuerConf, accessToken, clientId, credentialDefinition, context) => {
|
|
31
34
|
const {
|
|
32
35
|
credentialCryptoContext,
|
|
33
|
-
appFetch = fetch
|
|
36
|
+
appFetch = fetch,
|
|
37
|
+
dPopCryptoContext
|
|
34
38
|
} = context;
|
|
35
39
|
const credentialUrl = issuerConf.openid_credential_issuer.credential_endpoint;
|
|
36
40
|
|
|
@@ -58,6 +62,12 @@ export const obtainCredential = async (issuerConf, accessToken, clientId, creden
|
|
|
58
62
|
proof_type: "jwt"
|
|
59
63
|
}
|
|
60
64
|
};
|
|
65
|
+
const tokenRequestSignedDPop = await await createDPopToken({
|
|
66
|
+
htm: "POST",
|
|
67
|
+
htu: credentialUrl,
|
|
68
|
+
jti: `${uuid.v4()}`,
|
|
69
|
+
ath: await sha256ToBase64(accessToken.access_token)
|
|
70
|
+
}, dPopCryptoContext);
|
|
61
71
|
const credentialRes = await appFetch(credentialUrl, {
|
|
62
72
|
method: "POST",
|
|
63
73
|
headers: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SignJWT","hasStatus","ValidationFailed","CredentialResponse","createNonceProof","nonce","issuer","audience","ctx","jwk","getPublicKey","setPayload","setProtectedHeader","typ","setAudience","setIssuer","setIssuedAt","setExpirationTime","sign","obtainCredential","issuerConf","accessToken","clientId","credentialDefinition","
|
|
1
|
+
{"version":3,"names":["sha256ToBase64","SignJWT","hasStatus","ValidationFailed","CredentialResponse","createDPopToken","uuid","createNonceProof","nonce","issuer","audience","ctx","jwk","getPublicKey","setPayload","setProtectedHeader","typ","setAudience","setIssuer","setIssuedAt","setExpirationTime","sign","obtainCredential","issuerConf","accessToken","clientId","credentialDefinition","context","credentialCryptoContext","appFetch","fetch","dPopCryptoContext","credentialUrl","openid_credential_issuer","credential_endpoint","signedNonceProof","c_nonce","constainsCredentialDefinition","authorization_details","some","c","credential_configuration_id","format","type","credentialRequestFormBody","credential_definition","proof","jwt","proof_type","tokenRequestSignedDPop","htm","htu","jti","v4","ath","access_token","credentialRes","method","headers","DPoP","Authorization","token_type","body","JSON","stringify","then","res","json","safeParse","success","error","message","data"],"sourceRoot":"../../../../src","sources":["credential/issuance/06-obtain-credential.ts"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["credential/status/01-start-flow.ts"],"mappings":""}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { getCredentialHashWithouDiscloures, hasStatus } from "../../utils/misc";
|
|
2
|
+
import { SignJWT } from "@pagopa/io-react-native-jwt";
|
|
3
|
+
import uuid from "react-native-uuid";
|
|
4
|
+
import { StatusAttestationResponse } from "./types";
|
|
5
|
+
import { UnexpectedStatusCodeError } from "../../utils/errors";
|
|
6
|
+
import { StatusAttestationError, StatusAttestationInvalid } from "./errors";
|
|
7
|
+
/**
|
|
8
|
+
* WARNING: This function must be called after {@link startFlow}.
|
|
9
|
+
* Verify the status of the credential attestation.
|
|
10
|
+
* @param issuerConf - The issuer's configuration
|
|
11
|
+
* @param credential - The credential to be verified
|
|
12
|
+
* @param credentialCryptoContext - The credential's crypto context
|
|
13
|
+
* @param context.appFetch (optional) fetch api implementation. Default: built-in fetch
|
|
14
|
+
* @throws {@link StatusAttestationInvalid} if the status attestation is invalid and thus the credential is not valid
|
|
15
|
+
* @throws {@link StatusAttestationError} if an error occurs during the status attestation
|
|
16
|
+
* @returns The credential status attestation
|
|
17
|
+
*/
|
|
18
|
+
export const statusAttestation = async function (issuerConf, credential, credentialCryptoContext) {
|
|
19
|
+
let appFetch = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : fetch;
|
|
20
|
+
const jwk = await credentialCryptoContext.getPublicKey();
|
|
21
|
+
const credentialHash = await getCredentialHashWithouDiscloures(credential);
|
|
22
|
+
const statusAttUrl = issuerConf.openid_credential_issuer.status_attestation_endpoint;
|
|
23
|
+
const credentialPop = await new SignJWT(credentialCryptoContext).setPayload({
|
|
24
|
+
aud: statusAttUrl,
|
|
25
|
+
jti: uuid.v4().toString(),
|
|
26
|
+
credential_hash: credentialHash,
|
|
27
|
+
credential_hash_alg: "S256"
|
|
28
|
+
}).setProtectedHeader({
|
|
29
|
+
alg: "ES256",
|
|
30
|
+
typ: "status-attestation-request+jwt",
|
|
31
|
+
kid: jwk.kid
|
|
32
|
+
}).setIssuedAt().setExpirationTime("5m").sign();
|
|
33
|
+
const body = {
|
|
34
|
+
credential_pop: credentialPop
|
|
35
|
+
};
|
|
36
|
+
const result = await appFetch(statusAttUrl, {
|
|
37
|
+
method: "POST",
|
|
38
|
+
headers: {
|
|
39
|
+
"Content-Type": "application/json"
|
|
40
|
+
},
|
|
41
|
+
body: JSON.stringify(body)
|
|
42
|
+
}).then(hasStatus(201)).then(raw => raw.json()).then(json => StatusAttestationResponse.parse(json)).catch(handleStatusAttestationError);
|
|
43
|
+
return {
|
|
44
|
+
statusAttestation: result.status_attestation
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Handle the status attestation error by mapping it to a custom exception.
|
|
50
|
+
* If the error is not an instance of {@link UnexpectedStatusCodeError}, it is thrown as is.
|
|
51
|
+
* @param e - The error to be handled
|
|
52
|
+
* @throws {@link StatusAttestationError} if the status code is different from 404
|
|
53
|
+
* @throws {@link StatusAttestationInvalid} if the status code is 404 (meaning the credential is invalid)
|
|
54
|
+
*/
|
|
55
|
+
const handleStatusAttestationError = e => {
|
|
56
|
+
if (!(e instanceof UnexpectedStatusCodeError)) {
|
|
57
|
+
throw e;
|
|
58
|
+
}
|
|
59
|
+
if (e.statusCode === 404) {
|
|
60
|
+
throw new StatusAttestationInvalid("Invalid status found for the given credential", e.message);
|
|
61
|
+
}
|
|
62
|
+
throw new StatusAttestationError(`Unable to obtain the status attestation for the given credential [response status code: ${e.statusCode}]`, e.message);
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=02-status-attestation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getCredentialHashWithouDiscloures","hasStatus","SignJWT","uuid","StatusAttestationResponse","UnexpectedStatusCodeError","StatusAttestationError","StatusAttestationInvalid","statusAttestation","issuerConf","credential","credentialCryptoContext","appFetch","arguments","length","undefined","fetch","jwk","getPublicKey","credentialHash","statusAttUrl","openid_credential_issuer","status_attestation_endpoint","credentialPop","setPayload","aud","jti","v4","toString","credential_hash","credential_hash_alg","setProtectedHeader","alg","typ","kid","setIssuedAt","setExpirationTime","sign","body","credential_pop","result","method","headers","JSON","stringify","then","raw","json","parse","catch","handleStatusAttestationError","status_attestation","e","statusCode","message"],"sourceRoot":"../../../../src","sources":["credential/status/02-status-attestation.ts"],"mappings":"AAAA,SACEA,iCAAiC,EACjCC,SAAS,QAEJ,kBAAkB;AAEzB,SAASC,OAAO,QAA4B,6BAA6B;AACzE,OAAOC,IAAI,MAAM,mBAAmB;AACpC,SAASC,yBAAyB,QAAQ,SAAS;AACnD,SAASC,yBAAyB,QAAQ,oBAAoB;AAC9D,SAASC,sBAAsB,EAAEC,wBAAwB,QAAQ,UAAU;AAW3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAoC,GAAG,eAAAA,CAClDC,UAAU,EACVC,UAAU,EACVC,uBAAuB,EAEpB;EAAA,IADHC,QAA8B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGG,KAAK;EAEtC,MAAMC,GAAG,GAAG,MAAMN,uBAAuB,CAACO,YAAY,CAAC,CAAC;EACxD,MAAMC,cAAc,GAAG,MAAMnB,iCAAiC,CAACU,UAAU,CAAC;EAC1E,MAAMU,YAAY,GAChBX,UAAU,CAACY,wBAAwB,CAACC,2BAA2B;EACjE,MAAMC,aAAa,GAAG,MAAM,IAAIrB,OAAO,CAACS,uBAAuB,CAAC,CAC7Da,UAAU,CAAC;IACVC,GAAG,EAAEL,YAAY;IACjBM,GAAG,EAAEvB,IAAI,CAACwB,EAAE,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;IACzBC,eAAe,EAAEV,cAAc;IAC/BW,mBAAmB,EAAE;EACvB,CAAC,CAAC,CACDC,kBAAkB,CAAC;IAClBC,GAAG,EAAE,OAAO;IACZC,GAAG,EAAE,gCAAgC;IACrCC,GAAG,EAAEjB,GAAG,CAACiB;EACX,CAAC,CAAC,CACDC,WAAW,CAAC,CAAC,CACbC,iBAAiB,CAAC,IAAI,CAAC,CACvBC,IAAI,CAAC,CAAC;EAET,MAAMC,IAAI,GAAG;IACXC,cAAc,EAAEhB;EAClB,CAAC;EAED,MAAMiB,MAAM,GAAG,MAAM5B,QAAQ,CAACQ,YAAY,EAAE;IAC1CqB,MAAM,EAAE,MAAM;IACdC,OAAO,EAAE;MACP,cAAc,EAAE;IAClB,CAAC;IACDJ,IAAI,EAAEK,IAAI,CAACC,SAAS,CAACN,IAAI;EAC3B,CAAC,CAAC,CACCO,IAAI,CAAC5C,SAAS,CAAC,GAAG,CAAC,CAAC,CACpB4C,IAAI,CAAEC,GAAG,IAAKA,GAAG,CAACC,IAAI,CAAC,CAAC,CAAC,CACzBF,IAAI,CAAEE,IAAI,IAAK3C,yBAAyB,CAAC4C,KAAK,CAACD,IAAI,CAAC,CAAC,CACrDE,KAAK,CAACC,4BAA4B,CAAC;EAEtC,OAAO;IAAE1C,iBAAiB,EAAEgC,MAAM,CAACW;EAAmB,CAAC;AACzD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMD,4BAA4B,GAAIE,CAAU,IAAK;EACnD,IAAI,EAAEA,CAAC,YAAY/C,yBAAyB,CAAC,EAAE;IAC7C,MAAM+C,CAAC;EACT;EAEA,IAAIA,CAAC,CAACC,UAAU,KAAK,GAAG,EAAE;IACxB,MAAM,IAAI9C,wBAAwB,CAChC,+CAA+C,EAC/C6C,CAAC,CAACE,OACJ,CAAC;EACH;EAEA,MAAM,IAAIhD,sBAAsB,CAC7B,2FAA0F8C,CAAC,CAACC,UAAW,GAAE,EAC1GD,CAAC,CAACE,OACJ,CAAC;AACH,CAAC"}
|