diff --git a/.eslintrc.json b/.eslintrc.json
index 66f214ead..c82c5bbc8 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -18,8 +18,7 @@
"plugin:eslint-comments/recommended",
"plugin:@typescript-eslint/recommended",
"plugin:import/typescript",
- "prettier",
- "prettier/@typescript-eslint"
+ "prettier"
],
"globals": {
"BigInt": true,
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9872cdf98..c4d1f9f60 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -36,14 +36,8 @@ jobs:
with:
fail_ci_if_error: true
- - name: Check bundle size
- uses: sarthak-saxena/JSBundleSize@3.0.0
- with:
- # Skipping some commands with 'echo ok'
- bootstrap: 'echo ok'
- build_command: 'echo ok'
- dist_path: 'build'
- token: ${{ secrets.GITHUB_TOKEN }}
+ - name: BundleMon
+ uses: lironer/bundlemon-action@v1
build_examples:
name: Build project examples
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e4cebb1ec..3e9d7e5cc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,52 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+## [1.0.0-alpha.5](https://github.com/nucypher/nucypher-ts/compare/v1.0.0-alpha.4...v1.0.0-alpha.5) (2023-08-14)
+
+
+### ⚠ BREAKING CHANGES
+
+* disable ritual initialization
+* replace variant parameter with a default simple variant
+
+### Features
+
+* disable ritual initialization ([7447664](https://github.com/nucypher/nucypher-ts/commit/7447664360ec961ada59916dc6b511f9dbad514d))
+* replace variant parameter with a default simple variant ([36fd43e](https://github.com/nucypher/nucypher-ts/commit/36fd43eda8e04f2a400099ab76a5a03f0325b850))
+
+## [1.0.0-alpha.4](https://github.com/nucypher/nucypher-ts/compare/v1.0.0-alpha.3...v1.0.0-alpha.4) (2023-08-11)
+
+Re-released `1.0.0-alpha.3` after fixing a bad rebase.
+
+## [1.0.0-alpha.3](https://github.com/nucypher/nucypher-ts/compare/v1.0.0-alpha.2...v1.0.0-alpha.3) (2023-08-11)
+
+Re-released `1.0.0-alpha.2` after fixing a bad rebase.
+
+## [1.0.0-alpha.2](https://github.com/nucypher/nucypher-ts/compare/v1.0.0-alpha.1...v1.0.0-alpha.2) (2023-08-02)
+
+
+### ⚠ BREAKING CHANGES
+
+* porter uris are based on networks, not chain ids
+* replaced configuration with raw porter uri
+
+### Features
+
+* implement local ritual verificaiton ([39241c0](https://github.com/nucypher/nucypher-ts/commit/39241c0cacc2b29bf11a5f4c88a6d53bb8ea4375))
+* porter uris are based on networks, not chain ids ([d911481](https://github.com/nucypher/nucypher-ts/commit/d911481d0f1b8f80e022b2c32de5aaa53607a2f9))
+* replaced configuration with raw porter uri ([fcd7fc0](https://github.com/nucypher/nucypher-ts/commit/fcd7fc0cb505b71a6e709ae37c1c53f9b2261f53))
+
+## [1.0.0-alpha.1](https://github.com/nucypher/nucypher-ts/compare/v1.0.0-alpha.0...v1.0.0-alpha.1) (2023-07-10)
+
+
+### ⚠ BREAKING CHANGES
+
+* incorrect condition parsing leading to undefined variables in context
+
+### Bug Fixes
+
+* incorrect condition parsing leading to undefined variables in context ([5695bc0](https://github.com/nucypher/nucypher-ts/commit/5695bc0b83d97b23e9fb6f1d9b6c1f71cc604049))
+
## [1.0.0-beta.4](https://github.com/nucypher/nucypher-ts/compare/v1.0.0-beta.3...v1.0.0-beta.4) (2023-08-14)
diff --git a/abi/Coordinator.json b/abi/Coordinator.json
index c572ea259..a9f0143da 100644
--- a/abi/Coordinator.json
+++ b/abi/Coordinator.json
@@ -3,7 +3,7 @@
"inputs": [
{
"internalType": "contract IAccessControlApplication",
- "name": "app",
+ "name": "_stakes",
"type": "address"
},
{
@@ -12,9 +12,24 @@
"type": "uint32"
},
{
- "internalType": "uint32",
+ "internalType": "uint16",
"name": "_maxDkgSize",
- "type": "uint32"
+ "type": "uint16"
+ },
+ {
+ "internalType": "address",
+ "name": "_admin",
+ "type": "address"
+ },
+ {
+ "internalType": "contract IERC20",
+ "name": "_currency",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_feeRatePerSecond",
+ "type": "uint256"
}
],
"stateMutability": "nonpayable",
@@ -45,21 +60,65 @@
"name": "AggregationPosted",
"type": "event"
},
+ {
+ "anonymous": false,
+ "inputs": [],
+ "name": "DefaultAdminDelayChangeCanceled",
+ "type": "event"
+ },
{
"anonymous": false,
"inputs": [
{
- "indexed": true,
- "internalType": "uint32",
- "name": "ritualId",
- "type": "uint32"
+ "indexed": false,
+ "internalType": "uint48",
+ "name": "newDelay",
+ "type": "uint48"
},
+ {
+ "indexed": false,
+ "internalType": "uint48",
+ "name": "effectSchedule",
+ "type": "uint48"
+ }
+ ],
+ "name": "DefaultAdminDelayChangeScheduled",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [],
+ "name": "DefaultAdminTransferCanceled",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
{
"indexed": true,
"internalType": "address",
- "name": "initiator",
+ "name": "newAdmin",
"type": "address"
},
+ {
+ "indexed": false,
+ "internalType": "uint48",
+ "name": "acceptSchedule",
+ "type": "uint48"
+ }
+ ],
+ "name": "DefaultAdminTransferScheduled",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "uint32",
+ "name": "ritualId",
+ "type": "uint32"
+ },
{
"indexed": false,
"internalType": "bool",
@@ -75,15 +134,15 @@
"inputs": [
{
"indexed": false,
- "internalType": "uint32",
+ "internalType": "uint16",
"name": "oldSize",
- "type": "uint32"
+ "type": "uint16"
},
{
"indexed": false,
- "internalType": "uint32",
+ "internalType": "uint16",
"name": "newSize",
- "type": "uint32"
+ "type": "uint16"
}
],
"name": "MaxDkgSizeChanged",
@@ -92,20 +151,118 @@
{
"anonymous": false,
"inputs": [
+ {
+ "indexed": true,
+ "internalType": "uint32",
+ "name": "ritualId",
+ "type": "uint32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "participant",
+ "type": "address"
+ },
+ {
+ "components": [
+ {
+ "internalType": "bytes32",
+ "name": "word0",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "word1",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "word2",
+ "type": "bytes32"
+ }
+ ],
+ "indexed": false,
+ "internalType": "struct BLS12381.G2Point",
+ "name": "publicKey",
+ "type": "tuple"
+ }
+ ],
+ "name": "ParticipantPublicKeySet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "previousAdminRole",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "newAdminRole",
+ "type": "bytes32"
+ }
+ ],
+ "name": "RoleAdminChanged",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ }
+ ],
+ "name": "RoleGranted",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ },
{
"indexed": true,
"internalType": "address",
- "name": "previousOwner",
+ "name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
- "name": "newOwner",
+ "name": "sender",
"type": "address"
}
],
- "name": "OwnershipTransferred",
+ "name": "RoleRevoked",
"type": "event"
},
{
@@ -133,7 +290,7 @@
{
"indexed": true,
"internalType": "address",
- "name": "initiator",
+ "name": "authority",
"type": "address"
},
{
@@ -190,6 +347,52 @@
"name": "TranscriptPosted",
"type": "event"
},
+ {
+ "inputs": [],
+ "name": "DEFAULT_ADMIN_ROLE",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "INITIATOR_ROLE",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "TREASURY_ROLE",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "acceptDefaultAdminTransfer",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
{
"inputs": [],
"name": "application",
@@ -203,6 +406,39 @@
"stateMutability": "view",
"type": "function"
},
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newAdmin",
+ "type": "address"
+ }
+ ],
+ "name": "beginDefaultAdminTransfer",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "cancelDefaultAdminTransfer",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint48",
+ "name": "newDelay",
+ "type": "uint48"
+ }
+ ],
+ "name": "changeDefaultAdminDelay",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
{
"inputs": [
{
@@ -223,11 +459,95 @@
"type": "function"
},
{
- "inputs": [
+ "inputs": [],
+ "name": "currency",
+ "outputs": [
+ {
+ "internalType": "contract IERC20",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "defaultAdmin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "defaultAdminDelay",
+ "outputs": [
+ {
+ "internalType": "uint48",
+ "name": "",
+ "type": "uint48"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "defaultAdminDelayIncreaseWait",
+ "outputs": [
+ {
+ "internalType": "uint48",
+ "name": "",
+ "type": "uint48"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "feeRatePerSecond",
+ "outputs": [
{
"internalType": "uint256",
- "name": "ritualID",
+ "name": "",
"type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint32",
+ "name": "ritualId",
+ "type": "uint32"
+ }
+ ],
+ "name": "getAuthority",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint32",
+ "name": "ritualId",
+ "type": "uint32"
},
{
"internalType": "address",
@@ -312,17 +632,271 @@
{
"inputs": [
{
- "internalType": "uint256",
- "name": "ritualId",
- "type": "uint256"
+ "internalType": "address",
+ "name": "_provider",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_ritualId",
+ "type": "uint256"
+ }
+ ],
+ "name": "getProviderPublicKey",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes32",
+ "name": "word0",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "word1",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "word2",
+ "type": "bytes32"
+ }
+ ],
+ "internalType": "struct BLS12381.G2Point",
+ "name": "",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint32",
+ "name": "ritualId",
+ "type": "uint32"
+ }
+ ],
+ "name": "getPublicKeyFromRitualId",
+ "outputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes32",
+ "name": "word0",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "word1",
+ "type": "bytes16"
+ }
+ ],
+ "internalType": "struct BLS12381.G1Point",
+ "name": "dkgPublicKey",
+ "type": "tuple"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes32",
+ "name": "word0",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes16",
+ "name": "word1",
+ "type": "bytes16"
+ }
+ ],
+ "internalType": "struct BLS12381.G1Point",
+ "name": "dkgPublicKey",
+ "type": "tuple"
+ }
+ ],
+ "name": "getRitualIdFromPublicKey",
+ "outputs": [
+ {
+ "internalType": "uint32",
+ "name": "ritualId",
+ "type": "uint32"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address[]",
+ "name": "providers",
+ "type": "address[]"
+ },
+ {
+ "internalType": "uint32",
+ "name": "duration",
+ "type": "uint32"
+ }
+ ],
+ "name": "getRitualInitiationCost",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint32",
+ "name": "ritualId",
+ "type": "uint32"
+ }
+ ],
+ "name": "getRitualState",
+ "outputs": [
+ {
+ "internalType": "enum Coordinator.RitualState",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "getRoleAdmin",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint16",
+ "name": "size",
+ "type": "uint16"
+ }
+ ],
+ "name": "getThresholdForRitualSize",
+ "outputs": [
+ {
+ "internalType": "uint16",
+ "name": "",
+ "type": "uint16"
+ }
+ ],
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "grantRole",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "hasRole",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address[]",
+ "name": "providers",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address",
+ "name": "authority",
+ "type": "address"
+ },
+ {
+ "internalType": "uint32",
+ "name": "duration",
+ "type": "uint32"
+ },
+ {
+ "internalType": "contract IEncryptionAuthorizer",
+ "name": "accessController",
+ "type": "address"
}
],
- "name": "getRitualState",
+ "name": "initiateRitual",
"outputs": [
{
- "internalType": "enum Coordinator.RitualState",
+ "internalType": "uint32",
"name": "",
- "type": "uint8"
+ "type": "uint32"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "isInitiationPublic",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
}
],
"stateMutability": "view",
@@ -331,19 +905,26 @@
{
"inputs": [
{
- "internalType": "address[]",
- "name": "providers",
- "type": "address[]"
+ "internalType": "uint32",
+ "name": "ritualId",
+ "type": "uint32"
}
],
- "name": "initiateRitual",
+ "name": "isRitualFinalized",
"outputs": [
{
- "internalType": "uint32",
+ "internalType": "bool",
"name": "",
- "type": "uint32"
+ "type": "bool"
}
],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "makeInitiationPublic",
+ "outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
@@ -352,9 +933,9 @@
"name": "maxDkgSize",
"outputs": [
{
- "internalType": "uint32",
+ "internalType": "uint16",
"name": "",
- "type": "uint32"
+ "type": "uint16"
}
],
"stateMutability": "view",
@@ -386,6 +967,61 @@
"stateMutability": "view",
"type": "function"
},
+ {
+ "inputs": [],
+ "name": "pendingDefaultAdmin",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "newAdmin",
+ "type": "address"
+ },
+ {
+ "internalType": "uint48",
+ "name": "schedule",
+ "type": "uint48"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "pendingDefaultAdminDelay",
+ "outputs": [
+ {
+ "internalType": "uint48",
+ "name": "newDelay",
+ "type": "uint48"
+ },
+ {
+ "internalType": "uint48",
+ "name": "schedule",
+ "type": "uint48"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "pendingFees",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
{
"inputs": [
{
@@ -412,7 +1048,7 @@
}
],
"internalType": "struct BLS12381.G1Point",
- "name": "publicKey",
+ "name": "dkgPublicKey",
"type": "tuple"
},
{
@@ -445,8 +1081,50 @@
"type": "function"
},
{
- "inputs": [],
- "name": "renounceOwnership",
+ "inputs": [
+ {
+ "internalType": "uint32",
+ "name": "ritualId",
+ "type": "uint32"
+ }
+ ],
+ "name": "processPendingFee",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "renounceRole",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
@@ -468,23 +1146,48 @@
},
{
"internalType": "uint32",
- "name": "dkgSize",
+ "name": "initTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
- "name": "initTimestamp",
+ "name": "endTimestamp",
"type": "uint32"
},
{
- "internalType": "uint32",
+ "internalType": "uint16",
"name": "totalTranscripts",
- "type": "uint32"
+ "type": "uint16"
},
{
- "internalType": "uint32",
+ "internalType": "uint16",
"name": "totalAggregations",
- "type": "uint32"
+ "type": "uint16"
+ },
+ {
+ "internalType": "address",
+ "name": "authority",
+ "type": "address"
+ },
+ {
+ "internalType": "uint16",
+ "name": "dkgSize",
+ "type": "uint16"
+ },
+ {
+ "internalType": "uint16",
+ "name": "threshold",
+ "type": "uint16"
+ },
+ {
+ "internalType": "bool",
+ "name": "aggregationMismatch",
+ "type": "bool"
+ },
+ {
+ "internalType": "contract IEncryptionAuthorizer",
+ "name": "accessController",
+ "type": "address"
},
{
"components": [
@@ -503,11 +1206,6 @@
"name": "publicKey",
"type": "tuple"
},
- {
- "internalType": "bool",
- "name": "aggregationMismatch",
- "type": "bool"
- },
{
"internalType": "bytes",
"name": "aggregatedTranscript",
@@ -517,12 +1215,19 @@
"stateMutability": "view",
"type": "function"
},
+ {
+ "inputs": [],
+ "name": "rollbackDefaultAdminDelay",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
{
"inputs": [
{
- "internalType": "uint32",
+ "internalType": "uint16",
"name": "newSize",
- "type": "uint32"
+ "type": "uint16"
}
],
"name": "setMaxDkgSize",
@@ -530,6 +1235,67 @@
"stateMutability": "nonpayable",
"type": "function"
},
+ {
+ "inputs": [
+ {
+ "components": [
+ {
+ "internalType": "bytes32",
+ "name": "word0",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "word1",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "word2",
+ "type": "bytes32"
+ }
+ ],
+ "internalType": "struct BLS12381.G2Point",
+ "name": "_publicKey",
+ "type": "tuple"
+ }
+ ],
+ "name": "setProviderPublicKey",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "contract IReimbursementPool",
+ "name": "pool",
+ "type": "address"
+ }
+ ],
+ "name": "setReimbursementPool",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint32",
+ "name": "ritualId",
+ "type": "uint32"
+ },
+ {
+ "internalType": "address",
+ "name": "authority",
+ "type": "address"
+ }
+ ],
+ "name": "setRitualAuthority",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
{
"inputs": [
{
@@ -543,6 +1309,25 @@
"stateMutability": "nonpayable",
"type": "function"
},
+ {
+ "inputs": [
+ {
+ "internalType": "bytes4",
+ "name": "interfaceId",
+ "type": "bytes4"
+ }
+ ],
+ "name": "supportsInterface",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
{
"inputs": [],
"name": "timeout",
@@ -556,15 +1341,33 @@
"stateMutability": "view",
"type": "function"
},
+ {
+ "inputs": [],
+ "name": "totalPendingFees",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
{
"inputs": [
{
- "internalType": "address",
- "name": "newOwner",
+ "internalType": "contract IERC20",
+ "name": "token",
"type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
}
],
- "name": "transferOwnership",
+ "name": "withdrawTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
diff --git a/package.json b/package.json
index 3ea2ab681..552b6a693 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "@nucypher/nucypher-ts",
"author": "Piotr Roslaniec
",
- "version": "1.0.0-beta.4",
+ "version": "1.0.0-alpha.5",
"license": "GPL-3.0-only",
"repository": {
"type": "git",
@@ -35,7 +35,7 @@
"test:lint": "eslint src test --ext .ts",
"test:exports": "ts-unused-exports tsconfig.json --ignoreFiles src/index.ts",
"test:prettier": "prettier \"src/**/*.ts\" \"test/**/*.ts\" --list-different",
- "test:unit": "jest --detectOpenHandles --forceExit --runInBand",
+ "test:unit": "jest --detectOpenHandles --forceExit",
"watch:build": "tsc -p tsconfig.json -w",
"watch:test": "jest --watch",
"cov": "run-s build test:unit && open-cli coverage/index.html",
@@ -54,43 +54,44 @@
"prebuild": "yarn typechain"
},
"dependencies": {
- "@nucypher/nucypher-core": "^0.10.0",
- "axios": "^0.21.1",
+ "@nucypher/nucypher-core": "^0.13.0",
+ "axios": "^1.5.0",
"deep-equal": "^2.2.1",
- "ethers": "^5.4.1",
- "joi": "^17.7.0",
+ "ethers": "^5.7.2",
"qs": "^6.10.1",
- "semver": "^7.5.2"
+ "semver": "^7.5.2",
+ "zod": "^3.22.1"
},
"devDependencies": {
- "@babel/core": "^7.18.10",
- "@babel/preset-env": "^7.15.6",
+ "@babel/core": "^7.22.11",
+ "@babel/preset-env": "^7.22.10",
"@skypack/package-check": "^0.2.2",
- "@typechain/ethers-v5": "^9.0.0",
+ "@typechain/ethers-v5": "^11.1.1",
"@types/deep-equal": "^1.0.1",
- "@types/jest": "^26.0.24",
+ "@types/jest": "^29.5.4",
"@types/qs": "^6.9.7",
"@types/semver": "^7.5.0",
- "@typescript-eslint/eslint-plugin": "^4.0.1",
- "@typescript-eslint/parser": "^4.0.1",
+ "@typescript-eslint/eslint-plugin": "^6.4.1",
+ "@typescript-eslint/parser": "^6.4.1",
+ "bundlemon": "^2.0.0-rc.1",
"cz-conventional-changelog": "^3.0.1",
- "eslint": "^7.8.0",
- "eslint-config-prettier": "^6.11.0",
+ "eslint": "^8.48.0",
+ "eslint-config-prettier": "^9.0.0",
"eslint-plugin-eslint-comments": "^3.2.0",
- "eslint-plugin-import": "^2.22.0",
- "gh-pages": "^3.1.0",
- "husky": "^6.0.0",
- "jest": "^27.0.6",
+ "eslint-plugin-import": "^2.28.1",
+ "gh-pages": "^6.0.0",
+ "husky": "^8.0.3",
+ "jest": "^29.6.4",
"npm-run-all": "^4.1.5",
- "open-cli": "^6.0.1",
- "prettier": "^2.1.1",
+ "open-cli": "^7.2.0",
+ "prettier": "^3.0.2",
"standard-version": "^9.0.0",
- "ts-jest": "^27.0.3",
- "ts-unused-exports": "^8.0.0",
- "typechain": "^7.0.0",
- "typedoc": "^0.22.11",
- "typedoc-plugin-missing-exports": "^0.22.6",
- "typescript": "^4.7.0"
+ "ts-jest": "^29.1.1",
+ "ts-unused-exports": "^10.0.0",
+ "typechain": "^8.3.1",
+ "typedoc": "^0.25.0",
+ "typedoc-plugin-missing-exports": "^2.1.0",
+ "typescript": "^5.2.2"
},
"files": [
"build/main",
@@ -135,5 +136,13 @@
"collectCoverageFrom": [
"src/**/*.ts"
]
+ },
+ "bundlemon": {
+ "baseDir": "./build",
+ "files": [
+ {
+ "path": "**/*.*"
+ }
+ ]
}
}
diff --git a/src/agents/contracts.ts b/src/agents/contracts.ts
index 0ed03352f..a25d89115 100644
--- a/src/agents/contracts.ts
+++ b/src/agents/contracts.ts
@@ -1,4 +1,5 @@
-import { ChainId, ChecksumAddress } from '../types';
+import { ChecksumAddress } from '../types';
+import { ChainId } from '../web3';
type Contracts = {
readonly SUBSCRIPTION_MANAGER: ChecksumAddress | undefined;
diff --git a/src/agents/coordinator.ts b/src/agents/coordinator.ts
index 264e4ea50..3f480e698 100644
--- a/src/agents/coordinator.ts
+++ b/src/agents/coordinator.ts
@@ -1,23 +1,28 @@
-import { SessionStaticKey } from '@nucypher/nucypher-core';
-import { ethers } from 'ethers';
+import { DkgPublicKey, SessionStaticKey } from '@nucypher/nucypher-core';
+import { BigNumberish, ethers } from 'ethers';
import {
Coordinator,
Coordinator__factory,
} from '../../types/ethers-contracts';
import { BLS12381 } from '../../types/ethers-contracts/Coordinator';
+import { ChecksumAddress } from '../types';
import { fromHexString } from '../utils';
-import { getContract } from './contracts';
+import { DEFAULT_WAIT_N_CONFIRMATIONS, getContract } from './contracts';
export interface CoordinatorRitual {
initiator: string;
- dkgSize: number;
initTimestamp: number;
+ endTimestamp: number;
totalTranscripts: number;
totalAggregations: number;
- publicKey: BLS12381.G1PointStructOutput;
+ authority: string;
+ dkgSize: number;
+ threshold: number;
aggregationMismatch: boolean;
+ accessController: string;
+ publicKey: BLS12381.G1PointStructOutput;
aggregatedTranscript: string;
}
@@ -27,6 +32,15 @@ export type DkgParticipant = {
decryptionRequestStaticKey: SessionStaticKey;
};
+export enum DkgRitualState {
+ NON_INITIATED,
+ AWAITING_TRANSCRIPTS,
+ AWAITING_AGGREGATIONS,
+ TIMEOUT,
+ INVALID,
+ FINALIZED,
+}
+
export class DkgCoordinatorAgent {
public static async getParticipants(
provider: ethers.providers.Provider,
@@ -46,6 +60,29 @@ export class DkgCoordinatorAgent {
});
}
+ public static async initializeRitual(
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer,
+ providers: ChecksumAddress[],
+ authority: string,
+ duration: BigNumberish,
+ accessController: string
+ ): Promise {
+ const Coordinator = await this.connectReadWrite(provider, signer);
+ const tx = await Coordinator.initiateRitual(
+ providers,
+ authority,
+ duration,
+ accessController
+ );
+ const txReceipt = await tx.wait(DEFAULT_WAIT_N_CONFIRMATIONS);
+ const [ritualStartEvent] = txReceipt.events ?? [];
+ if (!ritualStartEvent) {
+ throw new Error('Ritual start event not found');
+ }
+ return ritualStartEvent.args?.ritualId;
+ }
+
public static async getRitual(
provider: ethers.providers.Provider,
ritualId: number
@@ -54,13 +91,55 @@ export class DkgCoordinatorAgent {
return Coordinator.rituals(ritualId);
}
+ public static async getRitualState(
+ provider: ethers.providers.Provider,
+ ritualId: number
+ ): Promise {
+ const Coordinator = await this.connectReadOnly(provider);
+ return await Coordinator.getRitualState(ritualId);
+ }
+
+ public static async onRitualEndEvent(
+ provider: ethers.providers.Provider,
+ ritualId: number,
+ callback: (successful: boolean) => void
+ ): Promise {
+ const Coordinator = await this.connectReadOnly(provider);
+ // We leave `initiator` undefined because we don't care who the initiator is
+ // We leave `successful` undefined because we don't care if the ritual was successful
+ const eventFilter = Coordinator.filters.EndRitual(ritualId, undefined);
+ Coordinator.once(eventFilter, (_ritualId, successful) => {
+ callback(successful);
+ });
+ }
+
+ public static async getRitualIdFromPublicKey(
+ provider: ethers.providers.Provider,
+ dkgPublicKey: DkgPublicKey
+ ): Promise {
+ const Coordinator = await this.connectReadOnly(provider);
+ const dkgPublicKeyBytes = dkgPublicKey.toBytes();
+ const pointStruct: BLS12381.G1PointStruct = {
+ word0: dkgPublicKeyBytes.slice(0, 32),
+ word1: dkgPublicKeyBytes.slice(32, 48),
+ };
+ return await Coordinator.getRitualIdFromPublicKey(pointStruct);
+ }
+
private static async connectReadOnly(provider: ethers.providers.Provider) {
return await this.connect(provider);
}
+ private static async connectReadWrite(
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer
+ ) {
+ return await this.connect(provider, signer);
+ }
+
private static async connect(
provider: ethers.providers.Provider,
- signer?: ethers.providers.JsonRpcSigner
+ signer?: ethers.Signer
): Promise {
const network = await provider.getNetwork();
const contractAddress = getContract(network.chainId, 'COORDINATOR');
diff --git a/src/agents/subscription-manager.ts b/src/agents/subscription-manager.ts
index ac8a5a3c5..da8236588 100644
--- a/src/agents/subscription-manager.ts
+++ b/src/agents/subscription-manager.ts
@@ -15,7 +15,8 @@ import { DEFAULT_WAIT_N_CONFIRMATIONS, getContract } from './contracts';
export class PreSubscriptionManagerAgent {
public static async createPolicy(
- web3Provider: ethers.providers.Web3Provider,
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer,
valueInWei: BigNumber,
policyId: Uint8Array,
size: number,
@@ -23,7 +24,7 @@ export class PreSubscriptionManagerAgent {
endTimestamp: number,
ownerAddress: ChecksumAddress
): Promise {
- const SubscriptionManager = await this.connectReadWrite(web3Provider);
+ const SubscriptionManager = await this.connectReadWrite(provider, signer);
const overrides = {
value: valueInWei.toString(),
};
@@ -66,14 +67,15 @@ export class PreSubscriptionManagerAgent {
}
private static async connectReadWrite(
- web3Provider: ethers.providers.Web3Provider
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer
) {
- return await this.connect(web3Provider, web3Provider.getSigner());
+ return await this.connect(provider, signer);
}
private static async connect(
provider: ethers.providers.Provider,
- signer?: ethers.providers.JsonRpcSigner
+ signer?: ethers.Signer
): Promise {
const network = await provider.getNetwork();
const contractAddress = getContract(
diff --git a/src/characters/alice.ts b/src/characters/alice.ts
index 417213b64..579d4a338 100644
--- a/src/characters/alice.ts
+++ b/src/characters/alice.ts
@@ -6,7 +6,6 @@ import {
} from '@nucypher/nucypher-core';
import { ethers } from 'ethers';
-import { Configuration } from '../config';
import { Keyring } from '../keyring';
import {
BlockchainPolicy,
@@ -14,21 +13,15 @@ import {
EnactedPolicy,
PreEnactedPolicy,
} from '../policies/policy';
+import { PorterClient } from '../porter';
import { ChecksumAddress } from '../types';
import { RemoteBob } from './bob';
-import { Porter } from './porter';
export class Alice {
- private readonly porter: Porter;
private readonly keyring: Keyring;
- private constructor(
- config: Configuration,
- secretKey: SecretKey,
- public readonly web3Provider: ethers.providers.Web3Provider
- ) {
- this.porter = new Porter(config.porterUri);
+ private constructor(secretKey: SecretKey) {
this.keyring = new Keyring(secretKey);
}
@@ -40,12 +33,8 @@ export class Alice {
return this.keyring.signer;
}
- public static fromSecretKey(
- config: Configuration,
- secretKey: SecretKey,
- web3Provider: ethers.providers.Web3Provider
- ): Alice {
- return new Alice(config, secretKey, web3Provider);
+ public static fromSecretKey(secretKey: SecretKey): Alice {
+ return new Alice(secretKey);
}
public getPolicyEncryptingKeyFromLabel(label: string): PublicKey {
@@ -53,30 +42,37 @@ export class Alice {
}
public async grant(
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer,
+ porterUri: string,
policyParameters: BlockchainPolicyParameters,
includeUrsulas?: readonly ChecksumAddress[],
excludeUrsulas?: readonly ChecksumAddress[]
): Promise {
- const ursulas = await this.porter.getUrsulas(
+ const porter = new PorterClient(porterUri);
+ const ursulas = await porter.getUrsulas(
policyParameters.shares,
excludeUrsulas,
includeUrsulas
);
- const policy = await this.createPolicy(policyParameters);
- return await policy.enact(ursulas);
+ const policy = await this.createPolicy(provider, policyParameters);
+ return await policy.enact(provider, signer, ursulas);
}
public async generatePreEnactedPolicy(
+ provider: ethers.providers.Provider,
+ porterUri: string,
policyParameters: BlockchainPolicyParameters,
includeUrsulas?: readonly ChecksumAddress[],
excludeUrsulas?: readonly ChecksumAddress[]
): Promise {
- const ursulas = await this.porter.getUrsulas(
+ const porter = new PorterClient(porterUri);
+ const ursulas = await porter.getUrsulas(
policyParameters.shares,
excludeUrsulas,
includeUrsulas
);
- const policy = await this.createPolicy(policyParameters);
+ const policy = await this.createPolicy(provider, policyParameters);
return await policy.generatePreEnactedPolicy(ursulas);
}
@@ -99,10 +95,11 @@ export class Alice {
}
private async createPolicy(
+ provider: ethers.providers.Provider,
rawParameters: BlockchainPolicyParameters
): Promise {
const { bob, label, threshold, shares, startDate, endDate } =
- await this.validatePolicyParameters(rawParameters);
+ await this.validatePolicyParameters(provider, rawParameters);
const { delegatingKey, verifiedKFrags } = this.generateKFrags(
bob,
label,
@@ -123,6 +120,7 @@ export class Alice {
}
private async validatePolicyParameters(
+ provider: ethers.providers.Provider,
rawParams: BlockchainPolicyParameters
): Promise {
const startDate = rawParams.startDate ?? new Date();
@@ -144,8 +142,8 @@ export class Alice {
);
}
- const blockNumber = await this.web3Provider.getBlockNumber();
- const block = await this.web3Provider.getBlock(blockNumber);
+ const blockNumber = await provider.getBlockNumber();
+ const block = await provider.getBlock(blockNumber);
const blockTime = new Date(block.timestamp * 1000);
if (endDate < blockTime) {
throw new Error(
diff --git a/src/characters/bob.ts b/src/characters/bob.ts
index 1ee8606af..1959c77da 100644
--- a/src/characters/bob.ts
+++ b/src/characters/bob.ts
@@ -6,14 +6,12 @@ import {
Signer,
} from '@nucypher/nucypher-core';
-import { Configuration } from '../config';
import { Keyring } from '../keyring';
import { PolicyMessageKit } from '../kits/message';
import { RetrievalResult } from '../kits/retrieval';
+import { PorterClient } from '../porter';
import { zip } from '../utils';
-import { Porter } from './porter';
-
export class RemoteBob {
private constructor(
public readonly decryptingKey: PublicKey,
@@ -37,11 +35,9 @@ export class RemoteBob {
}
export class Bob {
- private readonly porter: Porter;
private readonly keyring: Keyring;
- constructor(config: Configuration, secretKey: SecretKey) {
- this.porter = new Porter(config.porterUri);
+ constructor(secretKey: SecretKey) {
this.keyring = new Keyring(secretKey);
}
@@ -57,11 +53,8 @@ export class Bob {
return this.keyring.signer;
}
- public static fromSecretKey(
- config: Configuration,
- secretKey: SecretKey
- ): Bob {
- return new Bob(config, secretKey);
+ public static fromSecretKey(secretKey: SecretKey): Bob {
+ return new Bob(secretKey);
}
public decrypt(messageKit: MessageKit | PolicyMessageKit): Uint8Array {
@@ -69,12 +62,14 @@ export class Bob {
}
public async retrieveAndDecrypt(
+ porterUri: string,
policyEncryptingKey: PublicKey,
publisherVerifyingKey: PublicKey,
messageKits: readonly MessageKit[],
encryptedTreasureMap: EncryptedTreasureMap
): Promise {
const policyMessageKits = await this.retrieve(
+ porterUri,
policyEncryptingKey,
publisherVerifyingKey,
messageKits,
@@ -103,6 +98,7 @@ export class Bob {
}
public async retrieve(
+ porterUri: string,
policyEncryptingKey: PublicKey,
publisherVerifyingKey: PublicKey,
messageKits: readonly MessageKit[],
@@ -122,7 +118,8 @@ export class Bob {
);
const retrievalKits = policyMessageKits.map((pk) => pk.asRetrievalKit());
- const retrieveCFragsResponses = await this.porter.retrieveCFrags(
+ const porter = new PorterClient(porterUri);
+ const retrieveCFragsResponses = await porter.retrieveCFrags(
treasureMap,
retrievalKits,
publisherVerifyingKey,
diff --git a/src/characters/cbd-recipient.ts b/src/characters/cbd-recipient.ts
index 8e6503a1b..585ad7faa 100644
--- a/src/characters/cbd-recipient.ts
+++ b/src/characters/cbd-recipient.ts
@@ -1,96 +1,80 @@
import {
- Ciphertext,
+ combineDecryptionSharesSimple,
Context,
- DecryptionSharePrecomputed,
DecryptionShareSimple,
- decryptWithSharedSecret,
EncryptedThresholdDecryptionRequest,
EncryptedThresholdDecryptionResponse,
+ FerveoVariant,
SessionSharedSecret,
SessionStaticSecret,
ThresholdDecryptionRequest,
+ ThresholdMessageKit,
} from '@nucypher/nucypher-core';
import { ethers } from 'ethers';
import { DkgCoordinatorAgent, DkgParticipant } from '../agents/coordinator';
-import { ConditionExpression } from '../conditions';
-import {
- DkgRitual,
- FerveoVariant,
- getCombineDecryptionSharesFunction,
- getVariantClass,
-} from '../dkg';
-import { fromJSON, toJSON } from '../utils';
+import { ConditionContext } from '../conditions';
+import { PorterClient } from '../porter';
+import { fromJSON, objectEquals, toJSON } from '../utils';
-import { Porter } from './porter';
-
-export type CbdTDecDecrypterJSON = {
+export type ThresholdDecrypterJSON = {
porterUri: string;
ritualId: number;
threshold: number;
};
-export class CbdTDecDecrypter {
- // private readonly verifyingKey: Keyring;
-
+export class ThresholdDecrypter {
private constructor(
- private readonly porter: Porter,
+ private readonly porter: PorterClient,
private readonly ritualId: number,
private readonly threshold: number
) {}
- public static create(porterUri: string, dkgRitual: DkgRitual) {
- return new CbdTDecDecrypter(
- new Porter(porterUri),
- dkgRitual.id,
- dkgRitual.threshold
+ public static create(porterUri: string, ritualId: number, threshold: number) {
+ return new ThresholdDecrypter(
+ new PorterClient(porterUri),
+ ritualId,
+ threshold
);
}
// Retrieve and decrypt ciphertext using provider and condition expression
public async retrieveAndDecrypt(
- provider: ethers.providers.Web3Provider,
- conditionExpr: ConditionExpression,
- variant: FerveoVariant,
- ciphertext: Ciphertext
+ web3Provider: ethers.providers.Provider,
+ thresholdMessageKit: ThresholdMessageKit,
+ signer?: ethers.Signer
): Promise {
const decryptionShares = await this.retrieve(
- provider,
- conditionExpr,
- variant,
- ciphertext
- );
-
- const combineDecryptionSharesFn =
- getCombineDecryptionSharesFunction(variant);
- const sharedSecret = combineDecryptionSharesFn(decryptionShares);
- return decryptWithSharedSecret(
- ciphertext,
- conditionExpr.asAad(),
- sharedSecret
+ web3Provider,
+ thresholdMessageKit,
+ signer
);
+ const sharedSecret = combineDecryptionSharesSimple(decryptionShares);
+ return thresholdMessageKit.decryptWithSharedSecret(sharedSecret);
}
// Retrieve decryption shares
public async retrieve(
- provider: ethers.providers.Web3Provider,
- conditionExpr: ConditionExpression,
- variant: FerveoVariant,
- ciphertext: Ciphertext
- ): Promise {
+ provider: ethers.providers.Provider,
+ thresholdMessageKit: ThresholdMessageKit,
+ signer?: ethers.Signer
+ ): Promise {
const dkgParticipants = await DkgCoordinatorAgent.getParticipants(
provider,
this.ritualId
);
- const contextStr = await conditionExpr.buildContext(provider).toJson();
- const { sharedSecrets, encryptedRequests } = this.makeDecryptionRequests(
- this.ritualId,
- variant,
- ciphertext,
- conditionExpr,
- contextStr,
- dkgParticipants
- );
+ const wasmContext = await ConditionContext.fromConditions(
+ provider,
+ thresholdMessageKit.acp.conditions,
+ signer
+ ).toWASMContext();
+ const { sharedSecrets, encryptedRequests } =
+ await this.makeDecryptionRequests(
+ this.ritualId,
+ wasmContext,
+ dkgParticipants,
+ thresholdMessageKit
+ );
const { encryptedResponses, errors } = await this.porter.cbdDecrypt(
encryptedRequests,
@@ -98,14 +82,15 @@ export class CbdTDecDecrypter {
);
if (Object.keys(encryptedResponses).length < this.threshold) {
throw new Error(
- `CBD decryption failed with errors: ${JSON.stringify(errors)}`
+ `Threshold of responses not met; CBD decryption failed with errors: ${JSON.stringify(
+ errors
+ )}`
);
}
return this.makeDecryptionShares(
encryptedResponses,
sharedSecrets,
- variant,
this.ritualId
);
}
@@ -113,7 +98,6 @@ export class CbdTDecDecrypter {
private makeDecryptionShares(
encryptedResponses: Record,
sessionSharedSecret: Record,
- variant: number,
expectedRitualId: number
) {
const decryptedResponses = Object.entries(encryptedResponses).map(
@@ -127,33 +111,26 @@ export class CbdTDecDecrypter {
);
}
- const decryptionShares = decryptedResponses.map(
- ({ decryptionShare }) => decryptionShare
- );
-
- const DecryptionShareType = getVariantClass(variant);
- return decryptionShares.map((share) =>
- DecryptionShareType.fromBytes(share)
+ return decryptedResponses.map(({ decryptionShare }) =>
+ DecryptionShareSimple.fromBytes(decryptionShare)
);
}
- private makeDecryptionRequests(
+ private async makeDecryptionRequests(
ritualId: number,
- variant: number,
- ciphertext: Ciphertext,
- conditionExpr: ConditionExpression,
- contextStr: string,
- dkgParticipants: Array
- ): {
+ wasmContext: Context,
+ dkgParticipants: Array,
+ thresholdMessageKit: ThresholdMessageKit
+ ): Promise<{
sharedSecrets: Record;
encryptedRequests: Record;
- } {
+ }> {
const decryptionRequest = new ThresholdDecryptionRequest(
ritualId,
- variant,
- ciphertext,
- conditionExpr.toWASMConditions(),
- new Context(contextStr)
+ FerveoVariant.simple,
+ thresholdMessageKit.ciphertextHeader,
+ thresholdMessageKit.acp,
+ wasmContext
);
const ephemeralSessionKey = this.makeSessionKey();
@@ -191,7 +168,7 @@ export class CbdTDecDecrypter {
return SessionStaticSecret.random();
}
- public toObj(): CbdTDecDecrypterJSON {
+ public toObj(): ThresholdDecrypterJSON {
return {
porterUri: this.porter.porterUrl.toString(),
ritualId: this.ritualId,
@@ -207,17 +184,19 @@ export class CbdTDecDecrypter {
porterUri,
ritualId,
threshold,
- }: CbdTDecDecrypterJSON) {
- return new CbdTDecDecrypter(new Porter(porterUri), ritualId, threshold);
+ }: ThresholdDecrypterJSON) {
+ return new ThresholdDecrypter(
+ new PorterClient(porterUri),
+ ritualId,
+ threshold
+ );
}
public static fromJSON(json: string) {
- return CbdTDecDecrypter.fromObj(fromJSON(json));
+ return ThresholdDecrypter.fromObj(fromJSON(json));
}
- public equals(other: CbdTDecDecrypter): boolean {
- return (
- this.porter.porterUrl.toString() === other.porter.porterUrl.toString()
- );
+ public equals(other: ThresholdDecrypter): boolean {
+ return objectEquals(this.toObj(), other.toObj());
}
}
diff --git a/src/characters/enrico.ts b/src/characters/enrico.ts
index 17c6ff358..3185ca050 100644
--- a/src/characters/enrico.ts
+++ b/src/characters/enrico.ts
@@ -1,11 +1,13 @@
import {
- Ciphertext,
+ AccessControlPolicy,
DkgPublicKey,
- ferveoEncrypt,
+ encryptForDkg,
MessageKit,
PublicKey,
SecretKey,
+ ThresholdMessageKit,
} from '@nucypher/nucypher-core';
+import { arrayify, keccak256 } from 'ethers/lib/utils';
import { ConditionExpression } from '../conditions';
import { Keyring } from '../keyring';
@@ -51,13 +53,13 @@ export class Enrico {
public encryptMessageCbd(
plaintext: Uint8Array | string,
- withConditions?: ConditionExpression
- ): { ciphertext: Ciphertext; aad: Uint8Array } {
- if (!withConditions) {
- withConditions = this.conditions;
+ conditions?: ConditionExpression
+ ): ThresholdMessageKit {
+ if (!conditions) {
+ conditions = this.conditions;
}
- if (!withConditions) {
+ if (!conditions) {
throw new Error('Conditions are required for CBD encryption.');
}
@@ -65,12 +67,19 @@ export class Enrico {
throw new Error('Wrong key type. Use encryptMessagePre instead.');
}
- const aad = withConditions.asAad();
- const ciphertext = ferveoEncrypt(
+ const [ciphertext, authenticatedData] = encryptForDkg(
plaintext instanceof Uint8Array ? plaintext : toBytes(plaintext),
- aad,
- this.encryptingKey
+ this.encryptingKey,
+ conditions.toWASMConditions()
+ );
+
+ const headerHash = keccak256(ciphertext.header.toBytes());
+ const authorization = this.keyring.signer.sign(arrayify(headerHash));
+ const acp = new AccessControlPolicy(
+ authenticatedData,
+ authorization.toBEBytes()
);
- return { ciphertext, aad };
+
+ return new ThresholdMessageKit(ciphertext, acp);
}
}
diff --git a/src/characters/pre-recipient.ts b/src/characters/pre-recipient.ts
index 329d9c627..964584218 100644
--- a/src/characters/pre-recipient.ts
+++ b/src/characters/pre-recipient.ts
@@ -12,11 +12,10 @@ import { ConditionContext, ConditionExpression } from '../conditions';
import { Keyring } from '../keyring';
import { PolicyMessageKit } from '../kits/message';
import { RetrievalResult } from '../kits/retrieval';
-import { base64ToU8Receiver, bytesEquals, toJSON, zip } from '../utils';
+import { PorterClient } from '../porter';
+import { base64ToU8Receiver, toJSON, zip } from '../utils';
-import { Porter } from './porter';
-
-export type PreTDecDecrypterJSON = {
+export type PreDecrypterJSON = {
porterUri: string;
policyEncryptingKeyBytes: Uint8Array;
encryptedTreasureMapBytes: Uint8Array;
@@ -24,11 +23,11 @@ export type PreTDecDecrypterJSON = {
bobSecretKeyBytes: Uint8Array;
};
-export class PreTDecDecrypter {
+export class PreDecrypter {
// private readonly verifyingKey: Keyring;
constructor(
- private readonly porter: Porter,
+ private readonly porter: PorterClient,
private readonly keyring: Keyring,
private readonly policyEncryptingKey: PublicKey,
private readonly publisherVerifyingKey: PublicKey,
@@ -41,9 +40,9 @@ export class PreTDecDecrypter {
policyEncryptingKey: PublicKey,
publisherVerifyingKey: PublicKey,
encryptedTreasureMap: EncryptedTreasureMap
- ): PreTDecDecrypter {
- return new PreTDecDecrypter(
- new Porter(porterUri),
+ ): PreDecrypter {
+ return new PreDecrypter(
+ new PorterClient(porterUri),
new Keyring(secretKey),
policyEncryptingKey,
publisherVerifyingKey,
@@ -64,10 +63,15 @@ export class PreTDecDecrypter {
}
public async retrieveAndDecrypt(
- messageKits: readonly MessageKit[],
- provider: ethers.providers.Web3Provider
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer,
+ messageKits: readonly MessageKit[]
): Promise {
- const policyMessageKits = await this.retrieve(messageKits, provider);
+ const policyMessageKits = await this.retrieve(
+ provider,
+ signer,
+ messageKits
+ );
policyMessageKits.forEach((mk: PolicyMessageKit) => {
if (!mk.isDecryptableByReceiver()) {
@@ -91,8 +95,9 @@ export class PreTDecDecrypter {
}
public async retrieve(
- messageKits: readonly MessageKit[],
- provider: ethers.providers.Web3Provider
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer,
+ messageKits: readonly MessageKit[]
): Promise {
const treasureMap = this.encryptedTreasureMap.decrypt(
this.keyring.secretKey,
@@ -107,7 +112,12 @@ export class PreTDecDecrypter {
.reduce((acc: ConditionExpression[], val) => acc.concat(val), [])
.map((condExpr: ConditionExpression) => condExpr.condition);
- const conditionContext = new ConditionContext(conditions, provider);
+ const conditionContext = new ConditionContext(
+ provider,
+ conditions,
+ {},
+ signer
+ );
const policyMessageKits = messageKits.map((mk) =>
PolicyMessageKit.fromMessageKit(
@@ -149,7 +159,7 @@ export class PreTDecDecrypter {
});
}
- public toObj(): PreTDecDecrypterJSON {
+ public toObj(): PreDecrypterJSON {
return {
porterUri: this.porter.porterUrl.toString(),
policyEncryptingKeyBytes: this.policyEncryptingKey.toCompressedBytes(),
@@ -170,9 +180,9 @@ export class PreTDecDecrypter {
encryptedTreasureMapBytes,
publisherVerifyingKeyBytes,
bobSecretKeyBytes,
- }: PreTDecDecrypterJSON) {
- return new PreTDecDecrypter(
- new Porter(porterUri),
+ }: PreDecrypterJSON) {
+ return new PreDecrypter(
+ new PorterClient(porterUri),
new Keyring(SecretKey.fromBEBytes(bobSecretKeyBytes)),
PublicKey.fromCompressedBytes(policyEncryptingKeyBytes),
PublicKey.fromCompressedBytes(publisherVerifyingKeyBytes),
@@ -182,19 +192,15 @@ export class PreTDecDecrypter {
public static fromJSON(json: string) {
const config = JSON.parse(json, base64ToU8Receiver);
- return PreTDecDecrypter.fromObj(config);
+ return PreDecrypter.fromObj(config);
}
- public equals(other: PreTDecDecrypter): boolean {
- return (
- this.porter.porterUrl.toString() === other.porter.porterUrl.toString() &&
- this.policyEncryptingKey.equals(other.policyEncryptingKey) &&
- // TODO: Replace with `equals` after https://github.com/nucypher/nucypher-core/issues/56 is fixed
- bytesEquals(
- this.encryptedTreasureMap.toBytes(),
- other.encryptedTreasureMap.toBytes()
- ) &&
- this.publisherVerifyingKey.equals(other.publisherVerifyingKey)
- );
+ public equals(other: PreDecrypter): boolean {
+ return [
+ this.porter.porterUrl.toString() === other.porter.porterUrl.toString(),
+ this.policyEncryptingKey.equals(other.policyEncryptingKey),
+ this.encryptedTreasureMap.equals(other.encryptedTreasureMap),
+ this.publisherVerifyingKey.equals(other.publisherVerifyingKey),
+ ].every(Boolean);
}
}
diff --git a/src/conditions/base/condition.ts b/src/conditions/base/condition.ts
deleted file mode 100644
index f4caa12c2..000000000
--- a/src/conditions/base/condition.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import Joi from 'joi';
-
-import { objectEquals } from '../../utils';
-
-type Map = Record;
-
-export class Condition {
- public readonly schema = Joi.object();
- public readonly defaults: Map = {};
-
- constructor(private readonly value: Record = {}) {}
-
- public validate(override: Map = {}) {
- const newValue = {
- ...this.defaults,
- ...this.value,
- ...override,
- };
- return this.schema.validate(newValue);
- }
-
- public toObj(): Map {
- const { error, value } = this.validate(this.value);
- if (error) {
- throw `Invalid condition: ${error.message}`;
- }
- return {
- ...value,
- };
- }
-
- public static fromObj(
- // We disable the eslint rule here because we have to pass args to the constructor
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- this: new (...args: any[]) => T,
- obj: Map
- ): T {
- return new this(obj);
- }
-
- public equals(other: Condition) {
- return objectEquals(this, other);
- }
-}
diff --git a/src/conditions/base/contract.ts b/src/conditions/base/contract.ts
index 83a13b6ae..3160612b7 100644
--- a/src/conditions/base/contract.ts
+++ b/src/conditions/base/contract.ts
@@ -1,59 +1,94 @@
-import Joi from 'joi';
+import { ethers } from 'ethers';
+import { z } from 'zod';
import { ETH_ADDRESS_REGEXP } from '../const';
-import { RpcCondition, rpcConditionRecord } from './rpc';
-
-export const STANDARD_CONTRACT_TYPES = ['ERC20', 'ERC721'];
-
-const functionAbiVariable = Joi.object({
- internalType: Joi.string(), // TODO is this needed?
- name: Joi.string().required(),
- type: Joi.string().required(),
-});
-
-const functionAbiSchema = Joi.object({
- name: Joi.string().required(),
- type: Joi.string().valid('function').required(),
- inputs: Joi.array().items(functionAbiVariable),
- outputs: Joi.array().items(functionAbiVariable),
- // TODO: Should we restrict this to 'view'?
- stateMutability: Joi.string(),
-}).custom((functionAbi, helper) => {
- // Validate method name
- const method = helper.state.ancestors[0].method;
- if (functionAbi.name !== method) {
- return helper.message({
- custom: '"method" must be the same as "functionAbi.name"',
- });
- }
-
- // Validate nr of parameters
- const parameters = helper.state.ancestors[0].parameters;
- if (functionAbi.inputs?.length !== parameters.length) {
- return helper.message({
- custom: '"parameters" must have the same length as "functionAbi.inputs"',
- });
- }
-
- return functionAbi;
-});
-
-export const contractConditionRecord: Record = {
- ...rpcConditionRecord,
- contractAddress: Joi.string().pattern(ETH_ADDRESS_REGEXP).required(),
- standardContractType: Joi.string()
- .valid(...STANDARD_CONTRACT_TYPES)
- .optional(),
- method: Joi.string().required(),
- functionAbi: functionAbiSchema.optional(),
- parameters: Joi.array().required(),
-};
-
-export const contractConditionSchema = Joi.object(contractConditionRecord)
- // At most one of these keys needs to be present
- .xor('standardContractType', 'functionAbi');
-
-export class ContractCondition extends RpcCondition {
- public readonly schema = contractConditionSchema;
-}
+import { rpcConditionSchema } from './rpc';
+
+// TODO: Consider replacing with `z.unknown`:
+// Since Solidity types are tied to Solidity version, we may not be able to accurately represent them in Zod.
+// Alternatively, find a TS Solidity type lib.
+const EthBaseTypes: [string, ...string[]] = [
+ 'bool',
+ 'string',
+ 'address',
+ ...Array.from({ length: 32 }, (_v, i) => `bytes${i + 1}`), // bytes1 through bytes32
+ 'bytes',
+ ...Array.from({ length: 32 }, (_v, i) => `uint${8 * (i + 1)}`), // uint8 through uint256
+ ...Array.from({ length: 32 }, (_v, i) => `int${8 * (i + 1)}`), // int8 through int256
+];
+
+const functionAbiVariableSchema = z
+ .object({
+ name: z.string(),
+ type: z.enum(EthBaseTypes),
+ internalType: z.enum(EthBaseTypes), // TODO: Do we need to validate this?
+ })
+ .strict();
+
+const functionAbiSchema = z
+ .object({
+ name: z.string(),
+ type: z.literal('function'),
+ inputs: z.array(functionAbiVariableSchema).min(0),
+ outputs: z.array(functionAbiVariableSchema).nonempty(),
+ stateMutability: z.union([z.literal('view'), z.literal('pure')]),
+ })
+ .strict()
+ .refine(
+ (functionAbi) => {
+ let asInterface;
+ try {
+ // `stringify` here because ethers.utils.Interface doesn't accept a Zod schema
+ asInterface = new ethers.utils.Interface(JSON.stringify([functionAbi]));
+ } catch (e) {
+ return false;
+ }
+
+ const functionsInAbi = Object.values(asInterface.functions || {});
+ return functionsInAbi.length === 1;
+ },
+ {
+ message: '"functionAbi" must contain a single function definition',
+ }
+ )
+ .refine(
+ (functionAbi) => {
+ const asInterface = new ethers.utils.Interface(
+ JSON.stringify([functionAbi])
+ );
+ const nrOfInputs = asInterface.fragments[0].inputs.length;
+ return functionAbi.inputs.length === nrOfInputs;
+ },
+ {
+ message: '"parameters" must have the same length as "functionAbi.inputs"',
+ }
+ );
+
+export type FunctionAbiProps = z.infer;
+
+export const ContractConditionType = 'contract';
+
+export const contractConditionSchema = rpcConditionSchema
+ .extend({
+ conditionType: z
+ .literal(ContractConditionType)
+ .default(ContractConditionType),
+ contractAddress: z.string().regex(ETH_ADDRESS_REGEXP),
+ standardContractType: z.enum(['ERC20', 'ERC721']).optional(),
+ method: z.string(),
+ functionAbi: functionAbiSchema.optional(),
+ parameters: z.array(z.unknown()),
+ })
+ // Adding this custom logic causes the return type to be ZodEffects instead of ZodObject
+ // https://github.com/colinhacks/zod/issues/2474
+ .refine(
+ // A check to see if either 'standardContractType' or 'functionAbi' is set
+ (data) => Boolean(data.standardContractType) !== Boolean(data.functionAbi),
+ {
+ message:
+ "At most one of the fields 'standardContractType' and 'functionAbi' must be defined",
+ }
+ );
+
+export type ContractConditionProps = z.infer;
diff --git a/src/conditions/base/index.ts b/src/conditions/base/index.ts
index 805717e01..512dbd641 100644
--- a/src/conditions/base/index.ts
+++ b/src/conditions/base/index.ts
@@ -1,4 +1,44 @@
-export { Condition } from './condition';
-export { ContractCondition } from './contract';
-export { RpcCondition } from './rpc';
-export { TimeCondition } from './time';
+import {
+ CompoundConditionProps,
+ compoundConditionSchema,
+} from '../compound-condition';
+import { Condition } from '../condition';
+
+import { ContractConditionProps, contractConditionSchema } from './contract';
+import { RpcConditionProps, rpcConditionSchema } from './rpc';
+import { TimeConditionProps, timeConditionSchema } from './time';
+
+// Exporting classes here instead of their respective schema files to
+// avoid circular dependency on Condition class.
+
+export class CompoundCondition extends Condition {
+ constructor(value: CompoundConditionProps) {
+ super(compoundConditionSchema, value);
+ }
+}
+
+export class ContractCondition extends Condition {
+ constructor(value: ContractConditionProps) {
+ super(contractConditionSchema, value);
+ }
+}
+
+export class RpcCondition extends Condition {
+ constructor(value: RpcConditionProps) {
+ super(rpcConditionSchema, value);
+ }
+}
+
+export class TimeCondition extends Condition {
+ constructor(value: TimeConditionProps) {
+ super(timeConditionSchema, value);
+ }
+}
+
+export { type ContractConditionProps, ContractConditionType } from './contract';
+export { type RpcConditionProps, RpcConditionType } from './rpc';
+export {
+ type TimeConditionProps,
+ TimeConditionType,
+ TimeConditionMethod,
+} from './time';
diff --git a/src/conditions/base/return-value.ts b/src/conditions/base/return-value.ts
deleted file mode 100644
index 544033cdc..000000000
--- a/src/conditions/base/return-value.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import Joi from 'joi';
-
-import { ETH_ADDRESS_REGEXP, USER_ADDRESS_PARAM } from '../const';
-
-const COMPARATORS = ['==', '>', '<', '>=', '<=', '!='];
-
-export interface ReturnValueTestConfig {
- index?: number;
- comparator: string;
- value: string | number;
-}
-
-export const returnValueTestSchema: Joi.ObjectSchema =
- Joi.object({
- index: Joi.number().optional(),
- comparator: Joi.string()
- .valid(...COMPARATORS)
- .required(),
- value: Joi.alternatives(
- Joi.string(),
- Joi.number(),
- Joi.boolean()
- ).required(),
- });
-
-export const ethAddressOrUserAddressSchema = Joi.alternatives(
- Joi.string().pattern(ETH_ADDRESS_REGEXP),
- USER_ADDRESS_PARAM
-);
diff --git a/src/conditions/base/rpc.ts b/src/conditions/base/rpc.ts
index 27ed5f0b7..da06cbeb0 100644
--- a/src/conditions/base/rpc.ts
+++ b/src/conditions/base/rpc.ts
@@ -1,39 +1,18 @@
-import Joi from 'joi';
+import { z } from 'zod';
-import { SUPPORTED_CHAINS } from '../const';
+import { SUPPORTED_CHAIN_IDS } from '../const';
+import createUnionSchema from '../zod';
-import { Condition } from './condition';
-import {
- ethAddressOrUserAddressSchema,
- returnValueTestSchema,
-} from './return-value';
+import { EthAddressOrUserAddressSchema, returnValueTestSchema } from './shared';
-const rpcMethodSchemas: Record = {
- eth_getBalance: Joi.array().items(ethAddressOrUserAddressSchema).required(),
- balanceOf: Joi.array().items(ethAddressOrUserAddressSchema).required(),
-};
+export const RpcConditionType = 'rpc';
-const makeParameters = () =>
- Joi.array().when('method', {
- switch: Object.keys(rpcMethodSchemas).map((method) => ({
- is: method,
- then: rpcMethodSchemas[method],
- })),
- });
+export const rpcConditionSchema = z.object({
+ conditionType: z.literal(RpcConditionType).default(RpcConditionType),
+ chain: createUnionSchema(SUPPORTED_CHAIN_IDS),
+ method: z.enum(['eth_getBalance', 'balanceOf']),
+ parameters: z.array(EthAddressOrUserAddressSchema),
+ returnValueTest: returnValueTestSchema,
+});
-export const rpcConditionRecord = {
- chain: Joi.number()
- .valid(...SUPPORTED_CHAINS)
- .required(),
- method: Joi.string()
- .valid(...Object.keys(rpcMethodSchemas))
- .required(),
- parameters: makeParameters(),
- returnValueTest: returnValueTestSchema.required(),
-};
-
-export const rpcConditionSchema = Joi.object(rpcConditionRecord);
-
-export class RpcCondition extends Condition {
- public readonly schema = rpcConditionSchema;
-}
+export type RpcConditionProps = z.infer;
diff --git a/src/conditions/base/shared.ts b/src/conditions/base/shared.ts
new file mode 100644
index 000000000..904329521
--- /dev/null
+++ b/src/conditions/base/shared.ts
@@ -0,0 +1,18 @@
+import { z } from 'zod';
+
+import { ETH_ADDRESS_REGEXP, USER_ADDRESS_PARAM } from '../const';
+
+export const returnValueTestSchema = z.object({
+ index: z.number().optional(),
+ comparator: z.enum(['==', '>', '<', '>=', '<=', '!=']),
+ value: z.unknown(),
+});
+
+export type ReturnValueTestProps = z.infer;
+
+const EthAddressSchema = z.string().regex(ETH_ADDRESS_REGEXP);
+const UserAddressSchema = z.literal(USER_ADDRESS_PARAM);
+export const EthAddressOrUserAddressSchema = z.union([
+ EthAddressSchema,
+ UserAddressSchema,
+]);
diff --git a/src/conditions/base/time.ts b/src/conditions/base/time.ts
index 4f4671dd0..7e43ae9a1 100644
--- a/src/conditions/base/time.ts
+++ b/src/conditions/base/time.ts
@@ -1,23 +1,18 @@
-import Joi from 'joi';
+import { z } from 'zod';
-import { omit } from '../../utils';
+import { rpcConditionSchema } from './rpc';
-import { RpcCondition, rpcConditionRecord } from './rpc';
+// TimeCondition is an RpcCondition with the method set to 'blocktime' and no parameters
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+const { parameters: _, ...restShape } = rpcConditionSchema.shape;
-export const BLOCKTIME_METHOD = 'blocktime';
+export const TimeConditionType = 'time';
+export const TimeConditionMethod = 'blocktime';
-export const timeConditionRecord: Record = {
- // TimeCondition is an RpcCondition with the method set to 'blocktime' and no parameters
- ...omit(rpcConditionRecord, ['parameters']),
- method: Joi.string().valid(BLOCKTIME_METHOD).required(),
-};
+export const timeConditionSchema = z.object({
+ ...restShape,
+ conditionType: z.literal(TimeConditionType).default(TimeConditionType),
+ method: z.literal(TimeConditionMethod).default(TimeConditionMethod),
+});
-export const timeConditionSchema = Joi.object(timeConditionRecord);
-
-export class TimeCondition extends RpcCondition {
- public readonly defaults: Record = {
- method: BLOCKTIME_METHOD,
- };
-
- public readonly schema = timeConditionSchema;
-}
+export type TimeConditionProps = z.infer;
diff --git a/src/conditions/compound-condition.ts b/src/conditions/compound-condition.ts
index 3b35f675a..531827ba4 100644
--- a/src/conditions/compound-condition.ts
+++ b/src/conditions/compound-condition.ts
@@ -1,31 +1,28 @@
-import Joi from 'joi';
+import { z } from 'zod';
-import { Condition } from './base';
import { contractConditionSchema } from './base/contract';
import { rpcConditionSchema } from './base/rpc';
import { timeConditionSchema } from './base/time';
-const OR_OPERATOR = 'or';
-const AND_OPERATOR = 'and';
+export const CompoundConditionType = 'compound';
-const LOGICAL_OPERATORS = [AND_OPERATOR, OR_OPERATOR];
-
-export const compoundConditionSchema = Joi.object({
- operator: Joi.string()
- .valid(...LOGICAL_OPERATORS)
- .required(),
- operands: Joi.array()
- .min(2)
- .items(
- rpcConditionSchema,
- timeConditionSchema,
- contractConditionSchema,
- Joi.link('#compoundCondition')
+export const compoundConditionSchema: z.ZodSchema = z.object({
+ conditionType: z
+ .literal(CompoundConditionType)
+ .default(CompoundConditionType),
+ operator: z.enum(['and', 'or']),
+ operands: z
+ .array(
+ z.lazy(() =>
+ z.union([
+ rpcConditionSchema,
+ timeConditionSchema,
+ contractConditionSchema,
+ compoundConditionSchema,
+ ])
+ )
)
- .required()
- .valid(),
-}).id('compoundCondition');
+ .min(2),
+});
-export class CompoundCondition extends Condition {
- public readonly schema = compoundConditionSchema;
-}
+export type CompoundConditionProps = z.infer;
diff --git a/src/conditions/condition-expr.ts b/src/conditions/condition-expr.ts
index 5cc032c5e..ee12d7ccb 100644
--- a/src/conditions/condition-expr.ts
+++ b/src/conditions/condition-expr.ts
@@ -2,17 +2,10 @@ import { Conditions as WASMConditions } from '@nucypher/nucypher-core';
import { ethers } from 'ethers';
import { SemVer } from 'semver';
-import { objectEquals, toBytes, toJSON } from '../utils';
-
-import {
- Condition,
- ContractCondition,
- RpcCondition,
- TimeCondition,
-} from './base';
-import { BLOCKTIME_METHOD } from './base/time';
-import { CompoundCondition } from './compound-condition';
-import { ConditionContext } from './context';
+import { toJSON } from '../utils';
+
+import { Condition } from './condition';
+import { ConditionContext, CustomContextParam } from './context';
export type ConditionExpressionJSON = {
version: string;
@@ -20,7 +13,7 @@ export type ConditionExpressionJSON = {
};
export class ConditionExpression {
- static VERSION = '1.0.0';
+ public static VERSION = '1.0.0';
constructor(
public readonly condition: Condition,
@@ -28,10 +21,10 @@ export class ConditionExpression {
) {}
public toObj(): ConditionExpressionJSON {
- const conditionData = this.condition.toObj();
+ const condition = this.condition.toObj();
return {
version: this.version,
- condition: conditionData,
+ condition,
};
}
@@ -44,31 +37,15 @@ export class ConditionExpression {
);
}
- const underlyingConditionData = obj.condition;
- let condition: Condition | undefined;
-
- if (underlyingConditionData.operator) {
- condition = new CompoundCondition(underlyingConditionData);
- } else if (underlyingConditionData.method) {
- if (underlyingConditionData.method === BLOCKTIME_METHOD) {
- condition = new TimeCondition(underlyingConditionData);
- } else if (underlyingConditionData.contractAddress) {
- condition = new ContractCondition(underlyingConditionData);
- } else if (
- (underlyingConditionData.method as string).startsWith('eth_')
- ) {
- condition = new RpcCondition(underlyingConditionData);
- }
- }
-
- if (!condition) {
+ if (!obj.condition) {
throw new Error(
`Invalid condition: unrecognized condition data ${JSON.stringify(
- underlyingConditionData
+ obj.condition
)}`
);
}
+ const condition = Condition.fromObj(obj.condition);
return new ConditionExpression(condition, obj.version);
}
@@ -84,20 +61,31 @@ export class ConditionExpression {
return new WASMConditions(toJSON(this.toObj()));
}
+ public static fromWASMConditions(conditions: WASMConditions) {
+ return ConditionExpression.fromJSON(conditions.toString());
+ }
+
public buildContext(
- provider: ethers.providers.Web3Provider
+ provider: ethers.providers.Provider,
+ customParameters: Record = {},
+ signer?: ethers.Signer
): ConditionContext {
- return new ConditionContext([this.condition], provider);
+ return new ConditionContext(
+ provider,
+ [this.condition],
+ customParameters,
+ signer
+ );
}
- public asAad(): Uint8Array {
- return toBytes(this.toJson());
+ public contextRequiresSigner(): boolean {
+ return this.condition.requiresSigner();
}
public equals(other: ConditionExpression): boolean {
- return (
- this.version === other.version &&
- objectEquals(this.condition.toObj(), other.condition.toObj())
- );
+ return [
+ this.version === other.version,
+ this.condition.equals(other.condition),
+ ].every(Boolean);
}
}
diff --git a/src/conditions/condition.ts b/src/conditions/condition.ts
new file mode 100644
index 000000000..71a49d7cf
--- /dev/null
+++ b/src/conditions/condition.ts
@@ -0,0 +1,88 @@
+import { z } from 'zod';
+
+import { objectEquals } from '../utils';
+
+import {
+ CompoundCondition,
+ ContractCondition,
+ ContractConditionProps,
+ ContractConditionType,
+ RpcCondition,
+ RpcConditionProps,
+ RpcConditionType,
+ TimeCondition,
+ TimeConditionProps,
+ TimeConditionType,
+} from './base';
+import {
+ CompoundConditionProps,
+ CompoundConditionType,
+} from './compound-condition';
+import { USER_ADDRESS_PARAM } from './const';
+
+type ConditionSchema = z.ZodSchema;
+export type ConditionProps = z.infer;
+
+class ConditionFactory {
+ public static conditionFromProps(obj: ConditionProps): Condition {
+ switch (obj.conditionType) {
+ case RpcConditionType:
+ return new RpcCondition(obj as RpcConditionProps);
+ case TimeConditionType:
+ return new TimeCondition(obj as TimeConditionProps);
+ case ContractConditionType:
+ return new ContractCondition(obj as ContractConditionProps);
+ case CompoundConditionType:
+ return new CompoundCondition(obj as CompoundConditionProps);
+ default:
+ throw new Error(`Invalid conditionType: ${obj.conditionType}`);
+ }
+ }
+}
+
+export class Condition {
+ constructor(
+ public readonly schema: ConditionSchema,
+ public readonly value: ConditionProps
+ ) {
+ const { data, error } = Condition.validate(schema, value);
+ if (error) {
+ throw new Error(`Invalid condition: ${JSON.stringify(error.issues)}`);
+ }
+ this.value = data;
+ }
+
+ public static validate(
+ schema: ConditionSchema,
+ value: ConditionProps
+ ): {
+ data?: ConditionProps;
+ error?: z.ZodError;
+ } {
+ const result = schema.safeParse(value);
+ if (result.success) {
+ return { data: result.data };
+ }
+ return { error: result.error };
+ }
+
+ public requiresSigner(): boolean {
+ return JSON.stringify(this.value).includes(USER_ADDRESS_PARAM);
+ }
+
+ public toObj() {
+ const { data, error } = Condition.validate(this.schema, this.value);
+ if (error) {
+ throw new Error(`Invalid condition: ${JSON.stringify(error.issues)}`);
+ }
+ return data;
+ }
+
+ public static fromObj(obj: ConditionProps): Condition {
+ return ConditionFactory.conditionFromProps(obj);
+ }
+
+ public equals(other: Condition) {
+ return objectEquals(this.toObj(), other.toObj());
+ }
+}
diff --git a/src/conditions/const.ts b/src/conditions/const.ts
index 19f336649..9854c6a13 100644
--- a/src/conditions/const.ts
+++ b/src/conditions/const.ts
@@ -1,12 +1,12 @@
-import { ChainId } from '../types';
-
-export const SUPPORTED_CHAINS = [
- ChainId.MAINNET,
- ChainId.GOERLI,
- ChainId.POLYGON,
- ChainId.MUMBAI,
-];
+import { ChainId } from '../web3';
export const USER_ADDRESS_PARAM = ':userAddress';
export const ETH_ADDRESS_REGEXP = new RegExp('^0x[a-fA-F0-9]{40}$');
+
+export const SUPPORTED_CHAIN_IDS = [
+ ChainId.POLYGON,
+ ChainId.MUMBAI,
+ ChainId.GOERLI,
+ ChainId.MAINNET,
+];
diff --git a/src/conditions/context/context.ts b/src/conditions/context/context.ts
index fcf9939c3..feeeb257c 100644
--- a/src/conditions/context/context.ts
+++ b/src/conditions/context/context.ts
@@ -1,8 +1,9 @@
-import { Conditions as WASMConditions } from '@nucypher/nucypher-core';
+import { Context, Conditions as WASMConditions } from '@nucypher/nucypher-core';
import { ethers } from 'ethers';
import { fromJSON, toJSON } from '../../utils';
-import { Condition } from '../base';
+import { Condition } from '../condition';
+import { ConditionExpression } from '../condition-expr';
import { USER_ADDRESS_PARAM } from '../const';
import { TypedSignature, WalletAuthenticationProvider } from './providers';
@@ -14,16 +15,25 @@ export const RESERVED_CONTEXT_PARAMS = [USER_ADDRESS_PARAM];
export const CONTEXT_PARAM_PREFIX = ':';
export class ConditionContext {
- private readonly walletAuthProvider: WalletAuthenticationProvider;
+ private readonly walletAuthProvider?: WalletAuthenticationProvider;
constructor(
+ private readonly provider: ethers.providers.Provider,
private readonly conditions: ReadonlyArray,
- // TODO: We don't always need a web3 provider, only in cases where some specific context parameters are used
- // TODO: Consider making this optional or introducing a different pattern to handle that
- private readonly web3Provider: ethers.providers.Web3Provider,
- public readonly customParameters: Record = {}
+ public readonly customParameters: Record = {},
+ private readonly signer?: ethers.Signer
) {
- Object.keys(customParameters).forEach((key) => {
+ if (this.signer) {
+ this.walletAuthProvider = new WalletAuthenticationProvider(
+ this.provider,
+ this.signer
+ );
+ }
+ this.validate();
+ }
+
+ private validate() {
+ Object.keys(this.customParameters).forEach((key) => {
if (RESERVED_CONTEXT_PARAMS.includes(key)) {
throw new Error(
`Cannot use reserved parameter name ${key} as custom parameter`
@@ -35,7 +45,17 @@ export class ConditionContext {
);
}
});
- this.walletAuthProvider = new WalletAuthenticationProvider(web3Provider);
+
+ const conditionRequiresSigner = this.conditions.some((c) =>
+ c.requiresSigner()
+ );
+ if (conditionRequiresSigner && !this.signer) {
+ throw new Error(
+ `Signer required to satisfy ${USER_ADDRESS_PARAM} context variable in condition`
+ );
+ }
+
+ return this;
}
public toObj = async (): Promise> => {
@@ -70,6 +90,11 @@ export class ConditionContext {
// Fill in predefined context parameters
if (requestedParameters.has(USER_ADDRESS_PARAM)) {
+ if (!this.walletAuthProvider) {
+ throw new Error(
+ `Condition contains ${USER_ADDRESS_PARAM} context variable and requires a signer to populate`
+ );
+ }
parameters[USER_ADDRESS_PARAM] =
await this.walletAuthProvider.getOrCreateWalletSignature();
// Remove from requested parameters
@@ -95,14 +120,35 @@ export class ConditionContext {
return parameters;
};
- public toJson = async (): Promise => {
+ public async toJson(): Promise {
const parameters = await this.toObj();
return toJSON(parameters);
- };
+ }
- public withCustomParams = (
+ public withCustomParams(
params: Record
- ): ConditionContext => {
- return new ConditionContext(this.conditions, this.web3Provider, params);
- };
+ ): ConditionContext {
+ return new ConditionContext(
+ this.provider,
+ this.conditions,
+ params,
+ this.signer
+ );
+ }
+
+ public async toWASMContext(): Promise {
+ const asJson = await this.toJson();
+ return new Context(asJson);
+ }
+
+ public static fromConditions(
+ provider: ethers.providers.Provider,
+ conditions: WASMConditions,
+ signer?: ethers.Signer
+ ): ConditionContext {
+ const innerConditions = [
+ ConditionExpression.fromWASMConditions(conditions).condition,
+ ];
+ return new ConditionContext(provider, innerConditions, {}, signer);
+ }
}
diff --git a/src/conditions/context/index.ts b/src/conditions/context/index.ts
index 72a893ff3..e18afda2a 100644
--- a/src/conditions/context/index.ts
+++ b/src/conditions/context/index.ts
@@ -1,2 +1 @@
-export { ConditionContext } from './context';
-export type { CustomContextParam } from './context';
+export { ConditionContext, type CustomContextParam } from './context';
diff --git a/src/conditions/context/providers.ts b/src/conditions/context/providers.ts
index 9b8db518e..c58951c32 100644
--- a/src/conditions/context/providers.ts
+++ b/src/conditions/context/providers.ts
@@ -1,3 +1,4 @@
+import type { TypedDataSigner } from '@ethersproject/abstract-signer';
import { ethers } from 'ethers';
import { utils as ethersUtils } from 'ethers/lib/ethers';
@@ -18,10 +19,13 @@ interface ChainData {
export class WalletAuthenticationProvider {
private walletSignature?: Record;
- constructor(private readonly web3Provider: ethers.providers.Web3Provider) {}
+ constructor(
+ private readonly provider: ethers.providers.Provider,
+ private readonly signer: ethers.Signer
+ ) {}
public async getOrCreateWalletSignature(): Promise {
- const address = await this.web3Provider.getSigner().getAddress();
+ const address = await this.signer.getAddress();
const storageKey = `wallet-signature-${address}`;
// If we have a signature in localStorage, return it
@@ -59,7 +63,7 @@ export class WalletAuthenticationProvider {
private async createWalletSignature(): Promise {
// Ensure freshness of the signature
const { blockNumber, blockHash, chainId } = await this.getChainData();
- const address = await this.web3Provider.getSigner().getAddress();
+ const address = await this.signer.getAddress();
const signatureText = `I'm the owner of address ${address} as of block number ${blockNumber}`;
const salt = ethersUtils.hexlify(ethersUtils.randomBytes(32));
@@ -85,9 +89,10 @@ export class WalletAuthenticationProvider {
blockHash,
},
};
- const signature = await this.web3Provider
- .getSigner()
- ._signTypedData(typedData.domain, typedData.types, typedData.message);
+ // https://github.com/ethers-io/ethers.js/issues/1431#issuecomment-813950552
+ const signature = await (
+ this.signer as unknown as TypedDataSigner
+ )._signTypedData(typedData.domain, typedData.types, typedData.message);
const formattedTypedData: FormattedTypedData = {
...typedData,
@@ -118,9 +123,9 @@ export class WalletAuthenticationProvider {
}
private async getChainData(): Promise {
- const blockNumber = await this.web3Provider.getBlockNumber();
- const blockHash = (await this.web3Provider.getBlock(blockNumber)).hash;
- const chainId = (await this.web3Provider.getNetwork()).chainId;
+ const blockNumber = await this.provider.getBlockNumber();
+ const blockHash = (await this.provider.getBlock(blockNumber)).hash;
+ const chainId = (await this.provider.getNetwork()).chainId;
return { blockNumber, blockHash, chainId };
}
}
diff --git a/src/conditions/index.ts b/src/conditions/index.ts
index 2d5661fdb..9c37634ac 100644
--- a/src/conditions/index.ts
+++ b/src/conditions/index.ts
@@ -2,9 +2,13 @@ import * as base from './base';
import * as predefined from './predefined';
export { predefined, base };
-export { Condition } from './base/condition';
-export type { ConditionExpressionJSON } from './condition-expr';
-export { ConditionExpression } from './condition-expr';
-export { CompoundCondition } from './compound-condition';
-export type { CustomContextParam } from './context';
-export { ConditionContext } from './context';
+export {
+ ConditionExpression,
+ type ConditionExpressionJSON,
+} from './condition-expr';
+export { ConditionContext, type CustomContextParam } from './context';
+export { Condition, type ConditionProps } from './condition';
+export {
+ type CompoundConditionProps,
+ CompoundConditionType,
+} from './compound-condition';
diff --git a/src/conditions/predefined/erc721.ts b/src/conditions/predefined/erc721.ts
index beed9a5ce..1a81b8456 100644
--- a/src/conditions/predefined/erc721.ts
+++ b/src/conditions/predefined/erc721.ts
@@ -1,21 +1,36 @@
-import { ContractCondition } from '../base';
+import { ContractCondition, ContractConditionProps } from '../base';
+import { ContractConditionType } from '../base/contract';
import { USER_ADDRESS_PARAM } from '../const';
+// TODO: Rewrite these using Zod schemas?
+
+type ERC721OwnershipFields = 'contractAddress' | 'chain' | 'parameters';
+
+const ERC721OwnershipDefaults: Omit<
+ ContractConditionProps,
+ ERC721OwnershipFields
+> = {
+ conditionType: ContractConditionType,
+ method: 'ownerOf',
+ standardContractType: 'ERC721',
+ returnValueTest: {
+ index: 0,
+ comparator: '==',
+ value: USER_ADDRESS_PARAM,
+ },
+};
+
export class ERC721Ownership extends ContractCondition {
- public readonly defaults = {
- method: 'ownerOf',
- parameters: [],
- standardContractType: 'ERC721',
- returnValueTest: {
- index: 0,
- comparator: '==',
- value: USER_ADDRESS_PARAM,
- },
- };
+ constructor(value: Pick) {
+ super({ ...ERC721OwnershipDefaults, ...value });
+ }
}
-export class ERC721Balance extends ContractCondition {
- public readonly defaults = {
+type ERC721BalanceFields = 'contractAddress' | 'chain';
+
+const ERC721BalanceDefaults: Omit =
+ {
+ conditionType: ContractConditionType,
method: 'balanceOf',
parameters: [USER_ADDRESS_PARAM],
standardContractType: 'ERC721',
@@ -25,4 +40,9 @@ export class ERC721Balance extends ContractCondition {
value: '0',
},
};
+
+export class ERC721Balance extends ContractCondition {
+ constructor(value: Pick) {
+ super({ ...ERC721BalanceDefaults, ...value });
+ }
}
diff --git a/src/conditions/zod.ts b/src/conditions/zod.ts
new file mode 100644
index 000000000..3e5ca9e68
--- /dev/null
+++ b/src/conditions/zod.ts
@@ -0,0 +1,31 @@
+import { Primitive, z, ZodLiteral } from 'zod';
+
+// Source: https://github.com/colinhacks/zod/issues/831#issuecomment-1063481764
+const createUnion = <
+ T extends Readonly<[Primitive, Primitive, ...Primitive[]]>,
+>(
+ values: T
+) => {
+ const zodLiterals = values.map((value) => z.literal(value)) as unknown as [
+ ZodLiteral,
+ ZodLiteral,
+ ...ZodLiteral[],
+ ];
+ return z.union(zodLiterals);
+};
+
+function createUnionSchema(values: T) {
+ if (values.length === 0) {
+ return z.never();
+ }
+
+ if (values.length === 1) {
+ return z.literal(values[0]);
+ }
+
+ return createUnion(
+ values as unknown as Readonly<[Primitive, Primitive, ...Primitive[]]>
+ );
+}
+
+export default createUnionSchema;
diff --git a/src/config.ts b/src/config.ts
deleted file mode 100644
index 1b59d0c4e..000000000
--- a/src/config.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { ChainId } from './types';
-
-export type Configuration = {
- readonly porterUri: string;
-};
-
-const CONFIGS: { readonly [key in ChainId]: Configuration } = {
- [ChainId.POLYGON]: {
- porterUri: 'https://porter.nucypher.community',
- },
- [ChainId.MUMBAI]: {
- porterUri: 'https://porter-tapir.nucypher.community',
- },
- [ChainId.GOERLI]: {
- // TODO: Confirm this is correct
- porterUri: 'https://porter-tapir.nucypher.community',
- },
- [ChainId.MAINNET]: {
- // TODO: Confirm this is correct
- porterUri: 'https://porter.nucypher.io/',
- },
-};
-
-export const defaultConfiguration = (chainId: number): Configuration => {
- if (!Object.values(ChainId).includes(chainId)) {
- throw new Error(`No default configuration found for chainId: ${chainId}`);
- }
- return CONFIGS[chainId as ChainId];
-};
diff --git a/src/dkg.ts b/src/dkg.ts
index 3e293a8eb..479213f3e 100644
--- a/src/dkg.ts
+++ b/src/dkg.ts
@@ -1,97 +1,127 @@
-import {
- combineDecryptionSharesPrecomputed,
- combineDecryptionSharesSimple,
- DecryptionSharePrecomputed,
- DecryptionShareSimple,
- DkgPublicKey,
- SharedSecret,
-} from '@nucypher/nucypher-core';
-import { ethers } from 'ethers';
+import { DkgPublicKey } from '@nucypher/nucypher-core';
+import { BigNumberish, ethers } from 'ethers';
-import { DkgCoordinatorAgent } from './agents/coordinator';
-import { bytesEquals, fromHexString } from './utils';
-
-// TODO: Expose from @nucypher/nucypher-core
-export enum FerveoVariant {
- Simple = 0,
- Precomputed = 1,
-}
-
-export function getVariantClass(
- variant: FerveoVariant
-): typeof DecryptionShareSimple | typeof DecryptionSharePrecomputed {
- switch (variant) {
- case FerveoVariant.Simple:
- return DecryptionShareSimple;
- case FerveoVariant.Precomputed:
- return DecryptionSharePrecomputed;
- default:
- throw new Error(`Invalid FerveoVariant: ${variant}`);
- }
-}
-
-export function getCombineDecryptionSharesFunction(
- variant: FerveoVariant
-): (
- shares: DecryptionShareSimple[] | DecryptionSharePrecomputed[]
-) => SharedSecret {
- switch (variant) {
- case FerveoVariant.Simple:
- return combineDecryptionSharesSimple;
- case FerveoVariant.Precomputed:
- return combineDecryptionSharesPrecomputed;
- default:
- throw new Error(`Invalid FerveoVariant: ${variant}`);
- }
-}
+import { DkgCoordinatorAgent, DkgRitualState } from './agents/coordinator';
+import { ChecksumAddress } from './types';
+import { fromHexString } from './utils';
export interface DkgRitualJSON {
id: number;
dkgPublicKey: Uint8Array;
+ sharesNum: number;
threshold: number;
+ state: DkgRitualState;
}
export class DkgRitual {
constructor(
public readonly id: number,
public readonly dkgPublicKey: DkgPublicKey,
- public readonly threshold: number
+ public readonly sharesNum: number,
+ public readonly threshold: number,
+ public readonly state: DkgRitualState
) {}
public toObj(): DkgRitualJSON {
return {
id: this.id,
dkgPublicKey: this.dkgPublicKey.toBytes(),
+ sharesNum: this.sharesNum,
threshold: this.threshold,
+ state: this.state,
};
}
public static fromObj({
id,
dkgPublicKey,
+ sharesNum,
threshold,
+ state,
}: DkgRitualJSON): DkgRitual {
- return new DkgRitual(id, DkgPublicKey.fromBytes(dkgPublicKey), threshold);
+ return new DkgRitual(
+ id,
+ DkgPublicKey.fromBytes(dkgPublicKey),
+ sharesNum,
+ threshold,
+ state
+ );
}
public equals(other: DkgRitual): boolean {
- return (
- this.id === other.id &&
- // TODO: Replace with `equals` after https://github.com/nucypher/nucypher-core/issues/56 is fixed
- bytesEquals(this.dkgPublicKey.toBytes(), other.dkgPublicKey.toBytes()) &&
- this.threshold === other.threshold
- );
+ return [
+ this.id === other.id,
+ this.dkgPublicKey.equals(other.dkgPublicKey),
+ this.sharesNum === other.sharesNum,
+ this.threshold === other.threshold,
+ this.state === other.state,
+ ].every(Boolean);
}
}
export class DkgClient {
- constructor(private readonly provider: ethers.providers.Web3Provider) {}
+ public static async initializeRitual(
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer,
+ ursulas: ChecksumAddress[],
+ authority: string,
+ duration: BigNumberish,
+ accessController: string,
+ waitUntilEnd = false
+ ): Promise {
+ const ritualId = await DkgCoordinatorAgent.initializeRitual(
+ provider,
+ signer,
+ ursulas.sort(),
+ authority,
+ duration,
+ accessController
+ );
+
+ if (waitUntilEnd) {
+ const isSuccessful = await DkgClient.waitUntilRitualEnd(
+ provider,
+ ritualId
+ );
+ if (!isSuccessful) {
+ const ritualState = await DkgCoordinatorAgent.getRitualState(
+ provider,
+ ritualId
+ );
+ throw new Error(
+ `Ritual initialization failed. Ritual id ${ritualId} is in state ${ritualState}`
+ );
+ }
+ }
+
+ return ritualId;
+ }
- public async getExistingRitual(
- ritualId: number,
- threshold: number
+ private static waitUntilRitualEnd = async (
+ provider: ethers.providers.Provider,
+ ritualId: number
+ ): Promise => {
+ return new Promise((resolve, reject) => {
+ const callback = (successful: boolean) => {
+ if (successful) {
+ resolve(true);
+ } else {
+ reject();
+ }
+ };
+ DkgCoordinatorAgent.onRitualEndEvent(provider, ritualId, callback);
+ });
+ };
+
+ public static async getRitual(
+ provider: ethers.providers.Provider,
+ ritualId: number
): Promise {
- const ritual = await DkgCoordinatorAgent.getRitual(this.provider, ritualId);
+ const ritualState = await DkgCoordinatorAgent.getRitualState(
+ provider,
+ ritualId
+ );
+ const ritual = await DkgCoordinatorAgent.getRitual(provider, ritualId);
const dkgPkBytes = new Uint8Array([
...fromHexString(ritual.publicKey.word0),
...fromHexString(ritual.publicKey.word1),
@@ -99,10 +129,25 @@ export class DkgClient {
return new DkgRitual(
ritualId,
DkgPublicKey.fromBytes(dkgPkBytes),
- threshold
+ ritual.dkgSize,
+ ritual.threshold,
+ ritualState
);
}
+ public static async getFinalizedRitual(
+ provider: ethers.providers.Provider,
+ ritualId: number
+ ): Promise {
+ const ritual = await DkgClient.getRitual(provider, ritualId);
+ if (ritual.state !== DkgRitualState.FINALIZED) {
+ throw new Error(
+ `Ritual ${ritualId} is not finalized. State: ${ritual.state}`
+ );
+ }
+ return ritual;
+ }
+
// TODO: Without Validator public key in Coordinator, we cannot verify the
// transcript. We need to add it to the Coordinator (nucypher-contracts #77).
// public async verifyRitual(ritualId: number): Promise {
diff --git a/src/index.ts b/src/index.ts
index bd0623c55..0382830de 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -2,8 +2,8 @@
export { Alice } from './characters/alice';
export { Bob, RemoteBob } from './characters/bob';
export { Enrico } from './characters/enrico';
-export { PreTDecDecrypter } from './characters/pre-recipient';
-export { Porter } from './characters/porter';
+export { PreDecrypter } from './characters/pre-recipient';
+export { PorterClient } from './porter';
// Policies
export type {
@@ -15,25 +15,21 @@ export { PreEnactedPolicy } from './policies/policy';
// Keyring
export { Keyring } from './keyring';
-// Configuration
-export type { Configuration } from './config';
-export { defaultConfiguration } from './config';
+// Porter
+export { getPorterUri } from './porter';
// Kits
export { PolicyMessageKit } from './kits/message';
// Conditions
-import type { CustomContextParam } from './conditions';
import * as conditions from './conditions';
-// TODO: Not sure how to re-export this type from the conditions module
-export { conditions, CustomContextParam };
+export { conditions };
// DKG
-export { FerveoVariant } from './dkg';
+export { FerveoVariant } from '@nucypher/nucypher-core';
// SDK
export { Cohort } from './sdk/cohort';
-export type { CohortConfiguration } from './sdk/cohort';
export { DeployedPreStrategy, PreStrategy } from './sdk/strategy/pre-strategy';
export { DeployedCbdStrategy, CbdStrategy } from './sdk/strategy/cbd-strategy';
diff --git a/src/keyring.ts b/src/keyring.ts
index 4b769b95e..263d8aaac 100644
--- a/src/keyring.ts
+++ b/src/keyring.ts
@@ -14,6 +14,10 @@ import { toBytes } from './utils';
export class Keyring {
constructor(public readonly secretKey: SecretKey) {}
+ public static random(): Keyring {
+ return new Keyring(SecretKey.random());
+ }
+
public get signer(): Signer {
return new Signer(this.secretKey);
}
diff --git a/src/policies/policy.ts b/src/policies/policy.ts
index 1ccca6a90..2dc9dec07 100644
--- a/src/policies/policy.ts
+++ b/src/policies/policy.ts
@@ -6,11 +6,12 @@ import {
TreasureMap,
VerifiedKeyFrag,
} from '@nucypher/nucypher-core';
+import { ethers } from 'ethers';
import { PreSubscriptionManagerAgent } from '../agents/subscription-manager';
import { Alice } from '../characters/alice';
import { RemoteBob } from '../characters/bob';
-import { Ursula } from '../characters/porter';
+import { Ursula } from '../porter';
import { toBytes, toEpoch, zip } from '../utils';
import { toCanonicalAddress } from '../web3';
@@ -28,15 +29,6 @@ export type EnactedPolicy = {
type IPreEnactedPolicy = Omit;
-export type EnactedPolicyJSON = Omit<
- EnactedPolicy,
- 'policyKey' | 'encryptedTreasureMap' | 'id'
-> & {
- policyKey: Uint8Array;
- id: Uint8Array;
- encryptedTreasureMap: Uint8Array;
-};
-
export class PreEnactedPolicy implements IPreEnactedPolicy {
constructor(
public readonly id: HRAC,
@@ -49,26 +41,33 @@ export class PreEnactedPolicy implements IPreEnactedPolicy {
public readonly endTimestamp: Date
) {}
- public async enact(publisher: Alice): Promise {
- const txHash = await this.publish(publisher);
+ public async enact(
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer
+ ): Promise {
+ const txHash = await this.publish(provider, signer);
return {
...this,
txHash,
};
}
- private async publish(publisher: Alice): Promise {
+ private async publish(
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer
+ ): Promise {
const startTimestamp = toEpoch(this.startTimestamp);
const endTimestamp = toEpoch(this.endTimestamp);
- const ownerAddress = await publisher.web3Provider.getSigner().getAddress();
+ const ownerAddress = await signer.getAddress();
const value = await PreSubscriptionManagerAgent.getPolicyCost(
- publisher.web3Provider,
+ provider,
this.size,
startTimestamp,
endTimestamp
);
const tx = await PreSubscriptionManagerAgent.createPolicy(
- publisher.web3Provider,
+ provider,
+ signer,
value,
this.id.toBytes(),
this.size,
@@ -110,14 +109,23 @@ export class BlockchainPolicy {
);
}
- public async enact(ursulas: readonly Ursula[]): Promise {
+ public async enact(
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer,
+ ursulas: readonly Ursula[]
+ ): Promise {
const preEnacted = await this.generatePreEnactedPolicy(ursulas);
- return await preEnacted.enact(this.publisher);
+ return await preEnacted.enact(provider, signer);
}
public async generatePreEnactedPolicy(
ursulas: readonly Ursula[]
): Promise {
+ if (ursulas.length != this.verifiedKFrags.length) {
+ throw new Error(
+ `Number of ursulas must match number of verified kFrags: ${this.verifiedKFrags.length}`
+ );
+ }
const treasureMap = this.makeTreasureMap(ursulas, this.verifiedKFrags);
const encryptedTreasureMap = this.encryptTreasureMap(treasureMap);
// const revocationKit = new RevocationKit(treasureMap, this.publisher.signer);
@@ -138,18 +146,18 @@ export class BlockchainPolicy {
ursulas: readonly Ursula[],
verifiedKFrags: readonly VerifiedKeyFrag[]
): TreasureMap {
- const assigned_kfrags: [Address, [PublicKey, VerifiedKeyFrag]][] = [];
+ const assignedKFrags: [Address, [PublicKey, VerifiedKeyFrag]][] = [];
zip(ursulas, verifiedKFrags).forEach(([ursula, kFrag]) => {
const ursulaAddress = new Address(
toCanonicalAddress(ursula.checksumAddress)
);
- assigned_kfrags.push([ursulaAddress, [ursula.encryptingKey, kFrag]]);
+ assignedKFrags.push([ursulaAddress, [ursula.encryptingKey, kFrag]]);
});
return new TreasureMap(
this.publisher.signer,
this.hrac,
this.delegatingKey,
- assigned_kfrags,
+ assignedKFrags,
this.threshold
);
}
diff --git a/src/characters/porter.ts b/src/porter.ts
similarity index 90%
rename from src/characters/porter.ts
rename to src/porter.ts
index 2a3ef1d6a..f222f2e25 100644
--- a/src/characters/porter.ts
+++ b/src/porter.ts
@@ -9,8 +9,25 @@ import {
import axios, { AxiosResponse } from 'axios';
import qs from 'qs';
-import { Base64EncodedBytes, ChecksumAddress, HexEncodedBytes } from '../types';
-import { fromBase64, fromHexString, toBase64, toHexString } from '../utils';
+import { Base64EncodedBytes, ChecksumAddress, HexEncodedBytes } from './types';
+import { fromBase64, fromHexString, toBase64, toHexString } from './utils';
+
+type Network = 'mainnet' | 'tapir' | 'oryx' | 'lynx';
+
+const PORTER_URIS: Record = {
+ mainnet: 'https://porter.nucypher.community',
+ tapir: 'https://porter-tapir.nucypher.community',
+ oryx: 'https://porter-oryx.nucypher.community',
+ lynx: 'https://porter-lynx.nucypher.community',
+};
+
+export const getPorterUri = (network: Network): string => {
+ const uri = PORTER_URIS[network];
+ if (!uri) {
+ throw new Error(`No default Porter URI found for network: ${network}`);
+ }
+ return PORTER_URIS[network];
+};
// /get_ursulas
@@ -96,7 +113,7 @@ export type CbdDecryptResult = {
errors: Record;
};
-export class Porter {
+export class PorterClient {
readonly porterUrl: URL;
constructor(porterUri: string) {
diff --git a/src/sdk/cohort.ts b/src/sdk/cohort.ts
index 8571f3816..d377a6a4b 100644
--- a/src/sdk/cohort.ts
+++ b/src/sdk/cohort.ts
@@ -1,42 +1,34 @@
-import { Porter } from '../characters/porter';
+import { PorterClient } from '../porter';
import { ChecksumAddress } from '../types';
import { objectEquals } from '../utils';
-export type CohortConfiguration = {
- readonly threshold: number;
- readonly shares: number;
- readonly porterUri: string;
-};
-
export type CohortJSON = {
ursulaAddresses: ChecksumAddress[];
- threshold: number;
- shares: number;
porterUri: string;
};
export class Cohort {
private constructor(
- public ursulaAddresses: ChecksumAddress[],
- public readonly configuration: CohortConfiguration
+ public readonly ursulaAddresses: ChecksumAddress[],
+ public readonly porterUri: string
) {}
public static async create(
- configuration: CohortConfiguration,
+ porterUri: string,
+ numUrsulas: number,
include: string[] = [],
exclude: string[] = []
) {
- const porter = new Porter(configuration.porterUri);
- const ursulas = await porter.getUrsulas(
- configuration.shares,
- exclude,
- include.splice(0, configuration.shares)
- );
+ const porter = new PorterClient(porterUri);
+ const ursulas = await porter.getUrsulas(numUrsulas, exclude, include);
const ursulaAddresses = ursulas.map((ursula) => ursula.checksumAddress);
- return new Cohort(ursulaAddresses, configuration);
+ return new Cohort(ursulaAddresses, porterUri);
}
- public get shares(): number {
+ public static fromUrsulas(ursulas: ChecksumAddress[], porterUri: string) {
+ return new Cohort(ursulas, porterUri);
+ }
+ public get numUrsulas(): number {
return this.ursulaAddresses.length;
}
@@ -49,26 +41,14 @@ export class Cohort {
return Cohort.fromObj(config);
}
- public static fromObj({
- ursulaAddresses,
- threshold,
- shares,
- porterUri,
- }: CohortJSON) {
- const config = {
- threshold: threshold,
- shares: shares,
- porterUri: porterUri,
- };
- return new Cohort(ursulaAddresses, config);
+ public static fromObj({ ursulaAddresses, porterUri }: CohortJSON) {
+ return new Cohort(ursulaAddresses, porterUri);
}
public toObj(): CohortJSON {
return {
ursulaAddresses: this.ursulaAddresses,
- threshold: this.configuration.threshold,
- shares: this.configuration.shares,
- porterUri: this.configuration.porterUri,
+ porterUri: this.porterUri,
};
}
diff --git a/src/sdk/strategy/cbd-strategy.ts b/src/sdk/strategy/cbd-strategy.ts
index bc4bdca04..acca9c3f7 100644
--- a/src/sdk/strategy/cbd-strategy.ts
+++ b/src/sdk/strategy/cbd-strategy.ts
@@ -1,10 +1,9 @@
import { DkgPublicKey } from '@nucypher/nucypher-core';
import { ethers } from 'ethers';
-import { bytesEqual } from '../../../test/utils';
import {
- CbdTDecDecrypter,
- CbdTDecDecrypterJSON,
+ ThresholdDecrypter,
+ ThresholdDecrypterJSON,
} from '../../characters/cbd-recipient';
import { Enrico } from '../../characters/enrico';
import { ConditionExpression, ConditionExpressionJSON } from '../../conditions';
@@ -18,7 +17,7 @@ export type CbdStrategyJSON = {
};
export type DeployedStrategyJSON = {
- decrypter: CbdTDecDecrypterJSON;
+ decrypter: ThresholdDecrypterJSON;
dkgPublicKey: Uint8Array;
};
@@ -30,15 +29,23 @@ export class CbdStrategy {
}
public async deploy(
- provider: ethers.providers.Web3Provider,
+ provider: ethers.providers.Provider,
ritualId: number
): Promise {
- const dkgClient = new DkgClient(provider);
- const dkgRitual = await dkgClient.getExistingRitual(
- ritualId,
- this.cohort.configuration.threshold
- );
- return DeployedCbdStrategy.create(this.cohort, dkgRitual);
+ // TODO(#264): Enable ritual initialization
+ // if (ritualId === undefined) {
+ // ritualId = await DkgClient.initializeRitual(
+ // provider,
+ // this.cohort.ursulaAddresses,
+ // true
+ // );
+ // }
+ // if (ritualId === undefined) {
+ // // Given that we just initialized the ritual, this should never happen
+ // throw new Error('Ritual ID is undefined');
+ // }
+ const dkgRitual = await DkgClient.getRitual(provider, ritualId);
+ return DeployedCbdStrategy.create(dkgRitual, this.cohort.porterUri);
}
public static fromJSON(json: string) {
@@ -66,18 +73,29 @@ export class CbdStrategy {
export class DeployedCbdStrategy {
private constructor(
- public readonly decrypter: CbdTDecDecrypter,
+ public readonly decrypter: ThresholdDecrypter,
public readonly dkgPublicKey: DkgPublicKey
) {}
- public static create(cohort: Cohort, dkgRitual: DkgRitual) {
- const decrypter = CbdTDecDecrypter.create(
- cohort.configuration.porterUri,
- dkgRitual
+ public static create(dkgRitual: DkgRitual, porterUri: string) {
+ const decrypter = ThresholdDecrypter.create(
+ porterUri,
+ dkgRitual.id,
+ dkgRitual.threshold
);
return new DeployedCbdStrategy(decrypter, dkgRitual.dkgPublicKey);
}
+ // TODO: This is analogous to create() above, is it useful?
+ public static async fromRitualId(
+ provider: ethers.providers.Provider,
+ porterUri: string,
+ ritualId: number
+ ): Promise {
+ const dkgRitual = await DkgClient.getRitual(provider, ritualId);
+ return DeployedCbdStrategy.create(dkgRitual, porterUri);
+ }
+
public makeEncrypter(conditionExpr: ConditionExpression): Enrico {
return new Enrico(this.dkgPublicKey, undefined, conditionExpr);
}
@@ -93,7 +111,7 @@ export class DeployedCbdStrategy {
private static fromObj({ decrypter, dkgPublicKey }: DeployedStrategyJSON) {
return new DeployedCbdStrategy(
- CbdTDecDecrypter.fromObj(decrypter),
+ ThresholdDecrypter.fromObj(decrypter),
DkgPublicKey.fromBytes(dkgPublicKey)
);
}
@@ -106,9 +124,9 @@ export class DeployedCbdStrategy {
}
public equals(other: DeployedCbdStrategy) {
- return (
- this.decrypter.equals(other.decrypter) &&
- bytesEqual(this.dkgPublicKey.toBytes(), other.dkgPublicKey.toBytes())
- );
+ return [
+ this.decrypter.equals(other.decrypter),
+ this.dkgPublicKey.equals(other.dkgPublicKey),
+ ].every(Boolean);
}
}
diff --git a/src/sdk/strategy/pre-strategy.ts b/src/sdk/strategy/pre-strategy.ts
index acc6d997f..734d10dfc 100644
--- a/src/sdk/strategy/pre-strategy.ts
+++ b/src/sdk/strategy/pre-strategy.ts
@@ -4,13 +4,10 @@ import { ethers } from 'ethers';
import { Alice } from '../../characters/alice';
import { Bob } from '../../characters/bob';
import { Enrico } from '../../characters/enrico';
-import {
- PreTDecDecrypter,
- PreTDecDecrypterJSON,
-} from '../../characters/pre-recipient';
+import { PreDecrypter, PreDecrypterJSON } from '../../characters/pre-recipient';
import { ConditionExpression } from '../../conditions';
import { EnactedPolicy } from '../../policies/policy';
-import { base64ToU8Receiver, bytesEquals, toJSON } from '../../utils';
+import { base64ToU8Receiver, toJSON } from '../../utils';
import { Cohort, CohortJSON } from '../cohort';
export type PreStrategyJSON = {
@@ -23,7 +20,7 @@ export type PreStrategyJSON = {
export type DeployedPreStrategyJSON = {
cohortConfig: CohortJSON;
- decrypterJSON: PreTDecDecrypterJSON;
+ decrypterJSON: PreDecrypterJSON;
policyKeyBytes: Uint8Array;
};
@@ -65,26 +62,36 @@ export class PreStrategy {
}
public async deploy(
+ provider: ethers.providers.Provider,
+ signer: ethers.Signer,
label: string,
- provider: ethers.providers.Web3Provider
+ threshold = Math.floor(this.cohort.numUrsulas / 2) + 1,
+ shares = this.cohort.numUrsulas
): Promise {
- const porterUri = this.cohort.configuration.porterUri;
- const configuration = { porterUri };
- const alice = Alice.fromSecretKey(
- configuration,
- this.aliceSecretKey,
- provider
- );
- const bob = new Bob(configuration, this.bobSecretKey);
+ if (shares > this.cohort.numUrsulas) {
+ throw new Error(
+ `Threshold ${threshold} cannot be greater than the number of Ursulas in the cohort ${this.cohort.numUrsulas}`
+ );
+ }
+
+ const porterUri = this.cohort.porterUri;
+ const alice = Alice.fromSecretKey(this.aliceSecretKey);
+ const bob = new Bob(this.bobSecretKey);
const policyParams = {
bob,
label,
- threshold: this.cohort.configuration.threshold,
- shares: this.cohort.configuration.shares,
+ threshold,
+ shares,
startDate: this.startDate,
endDate: this.endDate,
};
- const policy = await alice.grant(policyParams, this.cohort.ursulaAddresses);
+ const policy = await alice.grant(
+ provider,
+ signer,
+ porterUri,
+ policyParams,
+ this.cohort.ursulaAddresses
+ );
return DeployedPreStrategy.create(this.cohort, policy, this.bobSecretKey);
}
@@ -126,27 +133,20 @@ export class PreStrategy {
}
public equals(other: PreStrategy) {
- return (
- this.cohort.equals(other.cohort) &&
- // TODO: Replace with `equals` after https://github.com/nucypher/nucypher-core/issues/56 is fixed
- bytesEquals(
- this.aliceSecretKey.toBEBytes(),
- other.aliceSecretKey.toBEBytes()
- ) &&
- bytesEquals(
- this.bobSecretKey.toBEBytes(),
- other.bobSecretKey.toBEBytes()
- ) &&
- this.startDate.toString() === other.startDate.toString() &&
- this.endDate.toString() === other.endDate.toString()
- );
+ return [
+ this.cohort.equals(other.cohort),
+ this.aliceSecretKey.equals(other.aliceSecretKey),
+ this.bobSecretKey.equals(other.bobSecretKey),
+ this.startDate.toString() === other.startDate.toString(),
+ this.endDate.toString() === other.endDate.toString(),
+ ].every(Boolean);
}
}
export class DeployedPreStrategy {
private constructor(
public readonly cohort: Cohort,
- public readonly decrypter: PreTDecDecrypter,
+ public readonly decrypter: PreDecrypter,
public readonly policyKey: PublicKey
) {}
@@ -155,8 +155,8 @@ export class DeployedPreStrategy {
policy: EnactedPolicy,
bobSecretKey: SecretKey
) {
- const decrypter = PreTDecDecrypter.create(
- cohort.configuration.porterUri,
+ const decrypter = PreDecrypter.create(
+ cohort.porterUri,
bobSecretKey,
policy.policyKey,
policy.aliceVerifyingKey,
@@ -184,7 +184,7 @@ export class DeployedPreStrategy {
policyKeyBytes,
}: DeployedPreStrategyJSON) {
const cohort = Cohort.fromObj(cohortConfig);
- const decrypter = PreTDecDecrypter.fromObj(decrypterJSON);
+ const decrypter = PreDecrypter.fromObj(decrypterJSON);
const policyKey = PublicKey.fromCompressedBytes(policyKeyBytes);
return new DeployedPreStrategy(cohort, decrypter, policyKey);
}
@@ -198,10 +198,10 @@ export class DeployedPreStrategy {
}
public equals(other: DeployedPreStrategy) {
- return (
- this.cohort.equals(other.cohort) &&
- this.decrypter.equals(other.decrypter) &&
- this.policyKey.equals(other.policyKey)
- );
+ return [
+ this.cohort.equals(other.cohort),
+ this.decrypter.equals(other.decrypter),
+ this.policyKey.equals(other.policyKey),
+ ].every(Boolean);
}
}
diff --git a/src/taco.ts b/src/taco.ts
new file mode 100644
index 000000000..13034bef7
--- /dev/null
+++ b/src/taco.ts
@@ -0,0 +1,55 @@
+import { DkgPublicKey, ThresholdMessageKit } from '@nucypher/nucypher-core';
+import { ethers } from 'ethers';
+
+import { DkgCoordinatorAgent } from './agents/coordinator';
+import { ThresholdDecrypter } from './characters/cbd-recipient';
+import { Enrico } from './characters/enrico';
+import { Condition, ConditionExpression } from './conditions';
+import { DkgClient } from './dkg';
+import { getPorterUri } from './porter';
+import { toBytes } from './utils';
+
+export const encrypt = async (
+ provider: ethers.providers.Provider,
+ message: string,
+ condition: Condition,
+ ritualId: number
+): Promise => {
+ const dkgRitual = await DkgClient.getFinalizedRitual(provider, ritualId);
+ return await encryptLight(message, condition, dkgRitual.dkgPublicKey);
+};
+
+export const encryptLight = async (
+ message: string,
+ condition: Condition,
+ dkgPublicKey: DkgPublicKey
+): Promise => {
+ const encrypter = new Enrico(dkgPublicKey);
+ const conditionExpr = new ConditionExpression(condition);
+ return encrypter.encryptMessageCbd(toBytes(message), conditionExpr);
+};
+
+export const decrypt = async (
+ provider: ethers.providers.Provider,
+ messageKit: ThresholdMessageKit,
+ signer?: ethers.Signer,
+ porterUri = getPorterUri('tapir')
+): Promise => {
+ const ritualId = await DkgCoordinatorAgent.getRitualIdFromPublicKey(
+ provider,
+ messageKit.acp.publicKey
+ );
+ const ritual = await DkgClient.getFinalizedRitual(provider, ritualId);
+ const decrypter = ThresholdDecrypter.create(
+ porterUri,
+ ritualId,
+ ritual.threshold
+ );
+ return decrypter.retrieveAndDecrypt(provider, messageKit, signer);
+};
+
+export const taco = {
+ encrypt,
+ encryptLight,
+ decrypt,
+};
diff --git a/src/types.ts b/src/types.ts
index 2440dcc53..9befc497e 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,10 +1,3 @@
export type ChecksumAddress = string;
export type HexEncodedBytes = string;
export type Base64EncodedBytes = string;
-
-export enum ChainId {
- POLYGON = 137,
- MUMBAI = 80001,
- GOERLI = 5,
- MAINNET = 1,
-}
diff --git a/src/utils.ts b/src/utils.ts
index 3fc45a09a..b74a43a1a 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -65,10 +65,6 @@ export const zip = (
export const toEpoch = (date: Date) => (date.getTime() / 1000) | 0;
-export const bytesEquals = (first: Uint8Array, second: Uint8Array): boolean =>
- first.length === second.length &&
- first.every((value, index) => value === second[index]);
-
export const objectEquals = (a: unknown, b: unknown, strict = true): boolean =>
deepEqual(a, b, { strict });
diff --git a/src/web3.ts b/src/web3.ts
index 1b5dcd11a..a55508f8f 100644
--- a/src/web3.ts
+++ b/src/web3.ts
@@ -1,4 +1,12 @@
import { fromHexString } from './utils';
+
+export enum ChainId {
+ POLYGON = 137,
+ MUMBAI = 80001,
+ GOERLI = 5,
+ MAINNET = 1,
+}
+
export const toCanonicalAddress = (address: string): Uint8Array => {
const ETH_ADDRESS_STRING_PREFIX = '0x';
const nonPrefixed = address.startsWith(ETH_ADDRESS_STRING_PREFIX)
diff --git a/test/acceptance/alice-grants.test.ts b/test/acceptance/alice-grants.test.ts
index a5fce2365..1fe6ccad5 100644
--- a/test/acceptance/alice-grants.test.ts
+++ b/test/acceptance/alice-grants.test.ts
@@ -6,14 +6,17 @@ import {
} from '@nucypher/nucypher-core';
import { EnactedPolicy, Enrico, MessageKit } from '../../src';
-import { Ursula } from '../../src/characters/porter';
+import { Ursula } from '../../src/porter';
import { ChecksumAddress } from '../../src/types';
import { toBytes } from '../../src/utils';
import {
bytesEqual,
fakeAlice,
fakeBob,
+ fakePorterUri,
+ fakeProvider,
fakeRemoteBob,
+ fakeSigner,
fakeUrsulas,
fromBytes,
mockEncryptTreasureMap,
@@ -31,7 +34,9 @@ describe('story: alice shares message with bob through policy', () => {
const shares = 3;
const startDate = new Date();
const endDate = new Date(Date.now() + 60 * 1000);
- const mockedUrsulas = fakeUrsulas().slice(0, shares);
+ const mockedUrsulas = fakeUrsulas(shares);
+ const provider = fakeProvider();
+ const signer = fakeSigner();
// Intermediate variables used for mocking
let encryptedTreasureMap: EncryptedTreasureMap;
@@ -62,7 +67,7 @@ describe('story: alice shares message with bob through policy', () => {
startDate,
endDate,
};
- policy = await alice.grant(policyParams);
+ policy = await alice.grant(provider, signer, fakePorterUri, policyParams);
expect(
bytesEqual(
@@ -104,6 +109,7 @@ describe('story: alice shares message with bob through policy', () => {
);
const retrievedMessage = await bob.retrieveAndDecrypt(
+ fakePorterUri,
policyEncryptingKey,
aliceVerifyingKey,
[encryptedMessage],
diff --git a/test/acceptance/delay-enact.test.ts b/test/acceptance/delay-enact.test.ts
index 61574df95..8ad674208 100644
--- a/test/acceptance/delay-enact.test.ts
+++ b/test/acceptance/delay-enact.test.ts
@@ -1,7 +1,10 @@
import {
bytesEqual,
fakeAlice,
+ fakePorterUri,
+ fakeProvider,
fakeRemoteBob,
+ fakeSigner,
fakeUrsulas,
mockEncryptTreasureMap,
mockGenerateKFrags,
@@ -9,13 +12,15 @@ import {
mockPublishToBlockchain,
} from '../utils';
-describe('story: alice1 creates a policy but alice2 enacts it', () => {
+describe('story: alice creates a policy but someone else enacts it', () => {
const threshold = 2;
const shares = 3;
const startDate = new Date();
const endDate = new Date(Date.now() + 60 * 1000); // 60s later
- const mockedUrsulas = fakeUrsulas().slice(0, shares);
+ const mockedUrsulas = fakeUrsulas(shares);
const label = 'fake-data-label';
+ const provider = fakeProvider();
+ const signer = fakeSigner();
it('alice generates a new policy', async () => {
const getUrsulasSpy = mockGetUrsulas(mockedUrsulas);
@@ -23,8 +28,7 @@ describe('story: alice1 creates a policy but alice2 enacts it', () => {
const publishToBlockchainSpy = mockPublishToBlockchain();
const encryptTreasureMapSpy = mockEncryptTreasureMap();
- const alice1 = fakeAlice('fake-secret-key-32-bytes-alice-1');
- const alice2 = fakeAlice('fake-secret-key-32-bytes-alice-2');
+ const alice = fakeAlice('fake-secret-key-32-bytes-alice-1');
const bob = fakeRemoteBob();
const policyParams = {
bob,
@@ -35,18 +39,20 @@ describe('story: alice1 creates a policy but alice2 enacts it', () => {
endDate,
};
- const preEnactedPolicy = await alice1.generatePreEnactedPolicy(
+ const preEnactedPolicy = await alice.generatePreEnactedPolicy(
+ provider,
+ fakePorterUri,
policyParams
);
expect(
bytesEqual(
preEnactedPolicy.aliceVerifyingKey.toCompressedBytes(),
- alice1.verifyingKey.toCompressedBytes()
+ alice.verifyingKey.toCompressedBytes()
)
).toBeTruthy();
expect(preEnactedPolicy.label).toBe(label);
- const enacted = await preEnactedPolicy.enact(alice2);
+ const enacted = await preEnactedPolicy.enact(provider, signer);
expect(enacted.txHash).toBeDefined();
expect(getUrsulasSpy).toHaveBeenCalled();
diff --git a/test/docs/cbd.test.ts b/test/docs/cbd.test.ts
index cac579632..9d863f8c0 100644
--- a/test/docs/cbd.test.ts
+++ b/test/docs/cbd.test.ts
@@ -1,12 +1,22 @@
import { MessageKit, VerifiedKeyFrag } from '@nucypher/nucypher-core';
import { providers } from 'ethers';
-import { Cohort, conditions, PreStrategy, SecretKey } from '../../src';
-import { Ursula } from '../../src/characters/porter';
+import {
+ Cohort,
+ conditions,
+ getPorterUri,
+ PreStrategy,
+ SecretKey,
+} from '../../src';
+import {
+ ContractCondition,
+ ContractConditionProps,
+} from '../../src/conditions/base';
+import { Ursula } from '../../src/porter';
import { toBytes } from '../../src/utils';
import {
+ fakeProvider,
fakeUrsulas,
- fakeWeb3Provider,
mockDetectEthereumProvider,
mockEncryptTreasureMap,
mockGenerateKFrags,
@@ -18,7 +28,6 @@ import {
const {
predefined: { ERC721Ownership },
- base: { ContractCondition },
ConditionExpression,
} = conditions;
@@ -51,21 +60,16 @@ describe('Get Started (CBD PoC)', () => {
jest
.spyOn(providers, 'Web3Provider')
- .mockImplementation(() =>
- fakeWeb3Provider(SecretKey.random().toBEBytes())
- );
+ .mockImplementation(() => fakeProvider(SecretKey.random().toBEBytes()));
//
// Start of the code example
//
// 2. Build a Cohort
- const config = {
- threshold: 3,
- shares: 5,
- porterUri: 'https://porter-tapir.nucypher.community',
- };
- const newCohort = await Cohort.create(config);
+ const porterUri = getPorterUri('tapir');
+ const numUrsulas = 5;
+ const newCohort = await Cohort.create(porterUri, numUrsulas);
// 3. Specify default conditions
const NFTOwnership = new ERC721Ownership({
@@ -85,11 +89,13 @@ describe('Get Started (CBD PoC)', () => {
const MMprovider = await detectEthereumProvider();
const mumbai = providers.getNetwork(80001);
- const web3Provider = new providers.Web3Provider(MMprovider, mumbai);
- const newDeployed = await newStrategy.deploy('test', web3Provider);
+ const provider = new providers.Web3Provider(MMprovider, mumbai);
+ const signer = provider.getSigner();
+ const newDeployed = await newStrategy.deploy(provider, signer, 'test');
// 5. Encrypt the plaintext & update conditions
- const NFTBalanceConfig = {
+ const NFTBalanceConfig: ContractConditionProps = {
+ conditionType: 'contract',
contractAddress: '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',
standardContractType: 'ERC721',
chain: 5,
@@ -114,8 +120,9 @@ describe('Get Started (CBD PoC)', () => {
// 6. Request decryption rights
const decryptedMessage = await newDeployed.decrypter.retrieveAndDecrypt(
- [encryptedMessageKit],
- web3Provider
+ provider,
+ signer,
+ [encryptedMessageKit]
);
//
diff --git a/test/integration/dkg-client.test.ts b/test/integration/dkg-client.test.ts
index acb8337b6..b2c1a6cc6 100644
--- a/test/integration/dkg-client.test.ts
+++ b/test/integration/dkg-client.test.ts
@@ -4,8 +4,8 @@ import { DkgCoordinatorAgent } from '../../src/agents/coordinator';
import {
fakeCoordinatorRitual,
fakeDkgParticipants,
+ fakeProvider,
fakeRitualId,
- fakeWeb3Provider,
mockGetParticipants,
} from '../utils';
@@ -22,14 +22,14 @@ describe('DkgCoordinatorAgent', () => {
});
it('fetches transcripts from the coordinator', async () => {
- const provider = fakeWeb3Provider(SecretKey.random().toBEBytes());
+ const provider = fakeProvider(SecretKey.random().toBEBytes());
const ritual = await DkgCoordinatorAgent.getRitual(provider, fakeRitualId);
expect(ritual).toBeDefined();
});
it('fetches participants from the coordinator', async () => {
- const provider = fakeWeb3Provider(SecretKey.random().toBEBytes());
- const fakeParticipants = fakeDkgParticipants(fakeRitualId);
+ const provider = fakeProvider(SecretKey.random().toBEBytes());
+ const fakeParticipants = await fakeDkgParticipants(fakeRitualId);
const getParticipantsSpy = mockGetParticipants(
fakeParticipants.participants
);
diff --git a/test/integration/enrico.test.ts b/test/integration/enrico.test.ts
index d28ea9f77..2dbdfae96 100644
--- a/test/integration/enrico.test.ts
+++ b/test/integration/enrico.test.ts
@@ -99,7 +99,7 @@ describe('enrico', () => {
const policyKey = alice.getPolicyEncryptingKeyFromLabel(label);
- const ownsBufficornNFT = ERC721Ownership.fromObj({
+ const ownsBufficornNFT = new ERC721Ownership({
contractAddress: '0x1e988ba4692e52Bc50b375bcC8585b95c48AaD77',
parameters: [3591],
chain: 5,
diff --git a/test/integration/pre.test.ts b/test/integration/pre.test.ts
index e3087e16c..b14f2bf18 100644
--- a/test/integration/pre.test.ts
+++ b/test/integration/pre.test.ts
@@ -1,7 +1,7 @@
import { CapsuleFrag, reencrypt } from '@nucypher/nucypher-core';
import { conditions, Enrico, MessageKit, PolicyMessageKit } from '../../src';
-import { CompoundCondition } from '../../src/conditions';
+import { CompoundCondition } from '../../src/conditions/base';
import { RetrievalResult } from '../../src/kits/retrieval';
import { toBytes, zip } from '../../src/utils';
import { fakeAlice, fakeBob, fakeUrsulas, reencryptKFrags } from '../utils';
@@ -15,7 +15,7 @@ describe('proxy reencryption', () => {
const plaintext = toBytes('plaintext-message');
const threshold = 2;
const shares = 3;
- const ursulas = fakeUrsulas().slice(0, shares);
+ const ursulas = fakeUrsulas(shares);
const label = 'fake-data-label';
const alice = fakeAlice();
const bob = fakeBob();
diff --git a/test/unit/cbd-strategy.test.ts b/test/unit/cbd-strategy.test.ts
index 32ea701ee..ff7a467c1 100644
--- a/test/unit/cbd-strategy.test.ts
+++ b/test/unit/cbd-strategy.test.ts
@@ -3,19 +3,20 @@ import { SecretKey, SessionStaticSecret } from '@nucypher/nucypher-core';
import { conditions } from '../../src';
import { FerveoVariant } from '../../src';
import { CbdStrategy, DeployedCbdStrategy } from '../../src';
-import { CbdTDecDecrypter } from '../../src/characters/cbd-recipient';
+import { ThresholdDecrypter } from '../../src/characters/cbd-recipient';
import { toBytes } from '../../src/utils';
import {
fakeDkgFlow,
fakeDkgParticipants,
fakeDkgRitual,
+ fakeProvider,
+ fakeSigner,
fakeTDecFlow,
fakeUrsulas,
- fakeWeb3Provider,
makeCohort,
mockCbdDecrypt,
- mockGetExistingRitual,
mockGetParticipants,
+ mockGetRitual,
mockGetUrsulas,
mockRandomSessionStaticSecret,
} from '../utils';
@@ -28,8 +29,9 @@ const {
} = conditions;
// Shared test variables
-const aliceSecretKey = SecretKey.fromBEBytes(aliceSecretKeyBytes);
-const aliceProvider = fakeWeb3Provider(aliceSecretKey.toBEBytes());
+const secretKey = SecretKey.fromBEBytes(aliceSecretKeyBytes);
+const provider = fakeProvider(secretKey.toBEBytes());
+const signer = fakeSigner(secretKey.toBEBytes());
const ownsNFT = new ERC721Ownership({
contractAddress: '0x1e988ba4692e52Bc50b375bcC8585b95c48AaD77',
parameters: [3591],
@@ -37,7 +39,7 @@ const ownsNFT = new ERC721Ownership({
});
const conditionExpr = new ConditionExpression(ownsNFT);
const ursulas = fakeUrsulas().slice(0, 3);
-const variant = FerveoVariant.Precomputed;
+const variant = FerveoVariant.precomputed;
const ritualId = 0;
const makeCbdStrategy = async () => {
@@ -49,13 +51,12 @@ const makeCbdStrategy = async () => {
async function makeDeployedCbdStrategy() {
const strategy = await makeCbdStrategy();
-
const mockedDkg = fakeDkgFlow(variant, 0, 4, 4);
- const mockedDkgRitual = fakeDkgRitual(mockedDkg, mockedDkg.threshold);
- const web3Provider = fakeWeb3Provider(aliceSecretKey.toBEBytes());
+ const mockedDkgRitual = fakeDkgRitual(mockedDkg);
const getUrsulasSpy = mockGetUrsulas(ursulas);
- const getExistingRitualSpy = mockGetExistingRitual(mockedDkgRitual);
- const deployedStrategy = await strategy.deploy(web3Provider, ritualId);
+ const getExistingRitualSpy = mockGetRitual(mockedDkgRitual);
+
+ const deployedStrategy = await strategy.deploy(provider, ritualId);
expect(getUrsulasSpy).toHaveBeenCalled();
expect(getExistingRitualSpy).toHaveBeenCalled();
@@ -102,21 +103,19 @@ describe('CbdDeployedStrategy', () => {
const { mockedDkg, deployedStrategy } = await makeDeployedCbdStrategy();
const message = 'this is a secret';
- const { ciphertext, aad } = deployedStrategy
+ const thresholdMessageKit = deployedStrategy
.makeEncrypter(conditionExpr)
.encryptMessageCbd(message);
// Setup mocks for `retrieveAndDecrypt`
const { decryptionShares } = fakeTDecFlow({
...mockedDkg,
- variant,
message: toBytes(message),
- aad,
- ciphertext,
+ dkgPublicKey: mockedDkg.dkg.publicKey(),
+ thresholdMessageKit,
});
const { participantSecrets, participants } = fakeDkgParticipants(
- mockedDkg.ritualId,
- variant
+ mockedDkg.ritualId
);
const requesterSessionKey = SessionStaticSecret.random();
const decryptSpy = mockCbdDecrypt(
@@ -131,10 +130,9 @@ describe('CbdDeployedStrategy', () => {
const decryptedMessage =
await deployedStrategy.decrypter.retrieveAndDecrypt(
- aliceProvider,
- conditionExpr,
- variant,
- ciphertext
+ provider,
+ thresholdMessageKit,
+ signer
);
expect(getUrsulasSpy).toHaveBeenCalled();
expect(getParticipantsSpy).toHaveBeenCalled();
@@ -160,18 +158,18 @@ describe('CbdDeployedStrategy', () => {
});
});
-describe('CbdTDecDecrypter', () => {
+describe('ThresholdDecrypter', () => {
it('serializes to a plain object', async () => {
const { deployedStrategy } = await makeDeployedCbdStrategy();
const configObj = deployedStrategy.decrypter.toObj();
- const fromObj = CbdTDecDecrypter.fromObj(configObj);
+ const fromObj = ThresholdDecrypter.fromObj(configObj);
expect(fromObj.equals(deployedStrategy.decrypter)).toBeTruthy();
});
it('serializes to a JSON', async () => {
const { deployedStrategy } = await makeDeployedCbdStrategy();
const configJSON = deployedStrategy.decrypter.toJSON();
- const fromJSON = CbdTDecDecrypter.fromJSON(configJSON);
+ const fromJSON = ThresholdDecrypter.fromJSON(configJSON);
expect(fromJSON.equals(deployedStrategy.decrypter)).toBeTruthy();
});
});
diff --git a/test/unit/cohort.test.ts b/test/unit/cohort.test.ts
index 40ab18ee8..e041bcad8 100644
--- a/test/unit/cohort.test.ts
+++ b/test/unit/cohort.test.ts
@@ -2,7 +2,7 @@ import { Cohort } from '../../src';
import { fakeUrsulas, makeCohort } from '../utils';
describe('Cohort', () => {
- const mockedUrsulas = fakeUrsulas().slice(0, 3);
+ const mockedUrsulas = fakeUrsulas();
it('creates a Cohort', async () => {
const cohort = await makeCohort(mockedUrsulas);
diff --git a/test/unit/conditions/base/condition.test.ts b/test/unit/conditions/base/condition.test.ts
index 2a567434c..e91322af0 100644
--- a/test/unit/conditions/base/condition.test.ts
+++ b/test/unit/conditions/base/condition.test.ts
@@ -1,3 +1,4 @@
+import { Condition } from '../../../../src/conditions';
import { ContractCondition } from '../../../../src/conditions/base';
import {
ERC721Balance,
@@ -6,42 +7,19 @@ import {
import {
TEST_CHAIN_ID,
TEST_CONTRACT_ADDR,
- TEST_CONTRACT_ADDR_2,
testContractConditionObj,
} from '../../testVariables';
describe('validation', () => {
- // TODO: Consider:
- // Use Condition here with returnTestValue schema
- // Refactor returnTestValue to be the part of the Condition
- const condition = new ERC721Balance();
-
- it('accepts a correct schema', async () => {
- const result = condition.validate({
- contractAddress: TEST_CONTRACT_ADDR,
- chain: TEST_CHAIN_ID,
- });
- expect(result.error).toBeUndefined();
- expect(result.value.contractAddress).toEqual(TEST_CONTRACT_ADDR);
+ const condition = new ERC721Balance({
+ contractAddress: TEST_CONTRACT_ADDR,
+ chain: TEST_CHAIN_ID,
});
- it('updates on a valid schema value', async () => {
- const result = condition.validate({
- chain: TEST_CHAIN_ID,
- contractAddress: TEST_CONTRACT_ADDR_2,
- });
+ it('accepts a correct schema', async () => {
+ const result = Condition.validate(condition.schema, condition.value);
expect(result.error).toBeUndefined();
- expect(result.value.chain).toEqual(TEST_CHAIN_ID);
- });
-
- it('rejects on an invalid schema value', async () => {
- const result = condition.validate({
- chain: -1,
- contractAddress: TEST_CONTRACT_ADDR,
- });
- expect(result.error?.message).toEqual(
- '"chain" must be one of [1, 5, 137, 80001]'
- );
+ expect(result.data.contractAddress).toEqual(TEST_CONTRACT_ADDR);
});
});
@@ -56,7 +34,6 @@ describe('serialization', () => {
it('serializes predefined conditions', () => {
const contract = new ERC721Ownership(testContractConditionObj);
expect(contract.toObj()).toEqual({
- ...contract.defaults,
...testContractConditionObj,
});
});
diff --git a/test/unit/conditions/base/contract.test.ts b/test/unit/conditions/base/contract.test.ts
index 25fdddd8b..002467210 100644
--- a/test/unit/conditions/base/contract.test.ts
+++ b/test/unit/conditions/base/contract.test.ts
@@ -1,20 +1,28 @@
-import { SecretKey } from '@nucypher/nucypher-core';
-
import {
ConditionExpression,
CustomContextParam,
} from '../../../../src/conditions';
-import { ContractCondition } from '../../../../src/conditions/base';
+import {
+ ContractCondition,
+ ContractConditionProps,
+} from '../../../../src/conditions/base';
+import {
+ contractConditionSchema,
+ FunctionAbiProps,
+} from '../../../../src/conditions/base/contract';
import { USER_ADDRESS_PARAM } from '../../../../src/conditions/const';
-import { fakeWeb3Provider } from '../../../utils';
-import { testContractConditionObj } from '../../testVariables';
+import { fakeProvider, fakeSigner } from '../../../utils';
+import { testContractConditionObj, testFunctionAbi } from '../../testVariables';
describe('validation', () => {
it('accepts on a valid schema', () => {
- const contract = new ContractCondition(testContractConditionObj);
- expect(contract.toObj()).toEqual({
- ...testContractConditionObj,
- });
+ const result = ContractCondition.validate(
+ contractConditionSchema,
+ testContractConditionObj
+ );
+
+ expect(result.error).toBeUndefined();
+ expect(result.data).toEqual(testContractConditionObj);
});
it('rejects an invalid schema', () => {
@@ -22,14 +30,19 @@ describe('validation', () => {
...testContractConditionObj,
// Intentionally removing `contractAddress`
contractAddress: undefined,
- };
- const badEvm = new ContractCondition(badContractCondition);
- expect(() => badEvm.toObj()).toThrow(
- 'Invalid condition: "contractAddress" is required'
+ } as unknown as ContractConditionProps;
+ const result = ContractCondition.validate(
+ contractConditionSchema,
+ badContractCondition
);
- const { error } = badEvm.validate(badContractCondition);
- expect(error?.message).toEqual('"contractAddress" is required');
+ expect(result.error).toBeDefined();
+ expect(result.data).toBeUndefined();
+ expect(result.error?.format()).toMatchObject({
+ contractAddress: {
+ _errors: ['Required'],
+ },
+ });
});
});
@@ -40,6 +53,7 @@ describe('accepts either standardContractType or functionAbi but not both or non
{
name: '_owner',
type: 'address',
+ internalType: 'address',
},
],
name: 'balanceOf',
@@ -47,6 +61,7 @@ describe('accepts either standardContractType or functionAbi but not both or non
{
name: 'balance',
type: 'uint256',
+ internalType: 'uint256',
},
],
stateMutability: 'view',
@@ -58,11 +73,14 @@ describe('accepts either standardContractType or functionAbi but not both or non
...testContractConditionObj,
standardContractType,
functionAbi: undefined,
- };
- const contractCondition = new ContractCondition(conditionObj);
- expect(contractCondition.toObj()).toEqual({
- ...conditionObj,
- });
+ } as typeof testContractConditionObj;
+ const result = ContractCondition.validate(
+ contractConditionSchema,
+ conditionObj
+ );
+
+ expect(result.error).toBeUndefined();
+ expect(result.data).toEqual(conditionObj);
});
it('accepts functionAbi', () => {
@@ -70,11 +88,14 @@ describe('accepts either standardContractType or functionAbi but not both or non
...testContractConditionObj,
functionAbi,
standardContractType: undefined,
- };
- const contractCondition = new ContractCondition(conditionObj);
- expect(contractCondition.toObj()).toEqual({
- ...conditionObj,
- });
+ } as typeof testContractConditionObj;
+ const result = ContractCondition.validate(
+ contractConditionSchema,
+ conditionObj
+ );
+
+ expect(result.error).toBeUndefined();
+ expect(result.data).toEqual(conditionObj);
});
it('rejects both', () => {
@@ -82,11 +103,19 @@ describe('accepts either standardContractType or functionAbi but not both or non
...testContractConditionObj,
standardContractType,
functionAbi,
- };
- const contractCondition = new ContractCondition(conditionObj);
- expect(() => contractCondition.toObj()).toThrow(
- '"value" contains a conflict between exclusive peers [standardContractType, functionAbi]'
+ } as typeof testContractConditionObj;
+ const result = ContractCondition.validate(
+ contractConditionSchema,
+ conditionObj
);
+
+ expect(result.error).toBeDefined();
+ expect(result.data).toBeUndefined();
+ expect(result.error?.format()).toMatchObject({
+ _errors: [
+ "At most one of the fields 'standardContractType' and 'functionAbi' must be defined",
+ ],
+ });
});
it('rejects none', () => {
@@ -94,39 +123,27 @@ describe('accepts either standardContractType or functionAbi but not both or non
...testContractConditionObj,
standardContractType: undefined,
functionAbi: undefined,
- };
- const contractCondition = new ContractCondition(conditionObj);
- expect(() => contractCondition.toObj()).toThrow(
- '"value" must contain at least one of [standardContractType, functionAbi]'
+ } as typeof testContractConditionObj;
+ const result = ContractCondition.validate(
+ contractConditionSchema,
+ conditionObj
);
+
+ expect(result.error).toBeDefined();
+ expect(result.data).toBeUndefined();
+ expect(result.error?.format()).toMatchObject({
+ _errors: [
+ "At most one of the fields 'standardContractType' and 'functionAbi' must be defined",
+ ],
+ });
});
});
describe('supports custom function abi', () => {
- const fakeFunctionAbi = {
- name: 'myFunction',
- type: 'function',
- inputs: [
- {
- name: 'account',
- type: 'address',
- },
- {
- name: 'myCustomParam',
- type: 'uint256',
- },
- ],
- outputs: [
- {
- name: 'someValue',
- type: 'uint256',
- },
- ],
- };
- const contractConditionObj = {
+ const contractConditionObj: ContractConditionProps = {
...testContractConditionObj,
standardContractType: undefined,
- functionAbi: fakeFunctionAbi,
+ functionAbi: testFunctionAbi,
method: 'myFunction',
parameters: [USER_ADDRESS_PARAM, ':customParam'],
returnValueTest: {
@@ -136,19 +153,147 @@ describe('supports custom function abi', () => {
},
};
const contractCondition = new ContractCondition(contractConditionObj);
- const web3Provider = fakeWeb3Provider(SecretKey.random().toBEBytes());
+ const provider = fakeProvider();
+ const signer = fakeSigner();
const conditionExpr = new ConditionExpression(contractCondition);
- const conditionContext = conditionExpr.buildContext(web3Provider);
+ const conditionContext = conditionExpr.buildContext(provider, {}, signer);
const myCustomParam = ':customParam';
const customParams: Record = {};
customParams[myCustomParam] = 1234;
- it('accepts custom function abi', async () => {
+ it('accepts custom function abi with a custom parameter', async () => {
const asJson = await conditionContext
.withCustomParams(customParams)
.toJson();
+
expect(asJson).toBeDefined();
expect(asJson).toContain(USER_ADDRESS_PARAM);
expect(asJson).toContain(myCustomParam);
});
+
+ it.each([
+ {
+ method: 'balanceOf',
+ functionAbi: {
+ name: 'balanceOf',
+ type: 'function',
+ inputs: [{ name: '_owner', type: 'address', internalType: 'address' }],
+ outputs: [
+ { name: 'balance', type: 'uint256', internalType: 'uint256' },
+ ],
+ stateMutability: 'view',
+ },
+ },
+ {
+ method: 'get',
+ functionAbi: {
+ name: 'get',
+ type: 'function',
+ inputs: [],
+ outputs: [
+ { name: 'balance', type: 'uint256', internalType: 'uint256' },
+ ],
+ stateMutability: 'pure',
+ },
+ },
+ ])('accepts well-formed functionAbi', ({ method, functionAbi }) => {
+ const result = ContractCondition.validate(contractConditionSchema, {
+ ...contractConditionObj,
+ parameters: functionAbi.inputs.map((input) => `fake_parameter_${input}`), //
+ functionAbi: functionAbi as FunctionAbiProps,
+ method,
+ });
+
+ expect(result.error).toBeUndefined();
+ expect(result.data).toBeDefined();
+ expect(result.data?.method).toEqual(method);
+ expect(result.data?.functionAbi).toEqual(functionAbi);
+ });
+
+ it.each([
+ {
+ method: '1234',
+ badField: 'name',
+ expectedErrors: ['Expected string, received number'],
+ functionAbi: {
+ name: 1234, // invalid value
+ type: 'function',
+ inputs: [{ name: '_owner', type: 'address', internalType: 'address' }],
+ outputs: [
+ { name: 'balance', type: 'uint256', internalType: 'uint256' },
+ ],
+ stateMutability: 'view',
+ },
+ },
+ {
+ method: 'transfer',
+ badField: 'inputs',
+ expectedErrors: ['Expected array, received string'],
+ functionAbi: {
+ name: 'transfer',
+ type: 'function',
+ inputs: 'invalid value', // invalid value
+ outputs: [{ name: '_status', type: 'bool', internalType: 'bool' }],
+ stateMutability: 'pure',
+ },
+ },
+ {
+ method: 'get',
+ badField: 'stateMutability',
+ expectedErrors: [
+ 'Invalid literal value, expected "view"',
+ 'Invalid literal value, expected "pure"',
+ ],
+ functionAbi: {
+ name: 'get',
+ type: 'function',
+ inputs: [],
+ outputs: [{ name: 'result', type: 'uint256', internalType: 'uint256' }],
+ stateMutability: 'invalid', // invalid value
+ },
+ },
+ {
+ method: 'test',
+ badField: 'outputs',
+ expectedErrors: ['Expected array, received string'],
+ functionAbi: {
+ name: 'test',
+ type: 'function',
+ inputs: [],
+ outputs: 'invalid value', // Invalid value
+ stateMutability: 'pure',
+ },
+ },
+ {
+ method: 'calculatePow',
+ badField: 'inputs',
+ expectedErrors: ['Required'],
+ functionAbi: {
+ name: 'calculatePow',
+ type: 'function',
+ // 'inputs': [] // Missing inputs array
+ outputs: [{ name: 'result', type: 'uint256', internalType: 'uint256' }],
+ stateMutability: 'view',
+ },
+ },
+ ])(
+ 'rejects malformed functionAbi',
+ ({ method, badField, expectedErrors, functionAbi }) => {
+ const result = ContractCondition.validate(contractConditionSchema, {
+ ...contractConditionObj,
+ functionAbi: functionAbi as unknown as FunctionAbiProps,
+ method,
+ });
+
+ expect(result.error).toBeDefined();
+ expect(result.data).toBeUndefined();
+ expect(result.error?.format()).toMatchObject({
+ functionAbi: {
+ [badField]: {
+ _errors: expectedErrors,
+ },
+ },
+ });
+ }
+ );
});
diff --git a/test/unit/conditions/base/rpc.test.ts b/test/unit/conditions/base/rpc.test.ts
index ccd65f63a..c4f658092 100644
--- a/test/unit/conditions/base/rpc.test.ts
+++ b/test/unit/conditions/base/rpc.test.ts
@@ -1,12 +1,16 @@
import { RpcCondition } from '../../../../src/conditions/base';
+import { rpcConditionSchema } from '../../../../src/conditions/base/rpc';
import { testRpcConditionObj } from '../../testVariables';
describe('validation', () => {
it('accepts on a valid schema', () => {
- const rpc = new RpcCondition(testRpcConditionObj);
- expect(rpc.toObj()).toEqual({
- ...testRpcConditionObj,
- });
+ const result = RpcCondition.validate(
+ rpcConditionSchema,
+ testRpcConditionObj
+ );
+
+ expect(result.error).toBeUndefined();
+ expect(result.data).toEqual(testRpcConditionObj);
});
it('rejects an invalid schema', () => {
@@ -14,16 +18,18 @@ describe('validation', () => {
...testRpcConditionObj,
// Intentionally replacing `method` with an invalid method
method: 'fake_invalid_method',
- };
+ } as unknown as typeof testRpcConditionObj;
- const badRpc = new RpcCondition(badRpcObj);
- expect(() => badRpc.toObj()).toThrow(
- 'Invalid condition: "method" must be one of [eth_getBalance, balanceOf]'
- );
+ const result = RpcCondition.validate(rpcConditionSchema, badRpcObj);
- const { error } = badRpc.validate(badRpcObj);
- expect(error?.message).toEqual(
- '"method" must be one of [eth_getBalance, balanceOf]'
- );
+ expect(result.error).toBeDefined();
+ expect(result.data).toBeUndefined();
+ expect(result.error?.format()).toMatchObject({
+ method: {
+ _errors: [
+ "Invalid enum value. Expected 'eth_getBalance' | 'balanceOf', received 'fake_invalid_method'",
+ ],
+ },
+ });
});
});
diff --git a/test/unit/conditions/base/time.test.ts b/test/unit/conditions/base/time.test.ts
index a043c8eba..a2db870ab 100644
--- a/test/unit/conditions/base/time.test.ts
+++ b/test/unit/conditions/base/time.test.ts
@@ -1,42 +1,56 @@
-import { TimeCondition } from '../../../../src/conditions/base';
+import {
+ TimeCondition,
+ TimeConditionProps,
+} from '../../../../src/conditions/base';
+import { ReturnValueTestProps } from '../../../../src/conditions/base/shared';
+import {
+ TimeConditionMethod,
+ timeConditionSchema,
+ TimeConditionType,
+} from '../../../../src/conditions/base/time';
describe('validation', () => {
- const returnValueTest = {
+ const returnValueTest: ReturnValueTestProps = {
index: 0,
comparator: '>',
value: '100',
};
it('accepts a valid schema', () => {
- const timeCondition = new TimeCondition({
+ const conditionObj: TimeConditionProps = {
+ conditionType: TimeConditionType,
returnValueTest,
- chain: 5,
- });
- expect(timeCondition.toObj()).toEqual({
- returnValueTest,
- chain: 5,
- method: 'blocktime',
- });
+ method: TimeConditionMethod,
+ chain: 1,
+ };
+ const result = TimeCondition.validate(timeConditionSchema, conditionObj);
+
+ expect(result.error).toBeUndefined();
+ expect(result.data).toEqual(conditionObj);
});
it('rejects an invalid schema', () => {
- const badTimeObj = {
+ const badObj = {
+ conditionType: TimeConditionType,
// Intentionally replacing `returnValueTest` with an invalid test
returnValueTest: {
...returnValueTest,
comparator: 'not-a-comparator',
},
chain: 5,
- };
-
- const badTimeCondition = new TimeCondition(badTimeObj);
- expect(() => badTimeCondition.toObj()).toThrow(
- 'Invalid condition: "returnValueTest.comparator" must be one of [==, >, <, >=, <=, !=]'
- );
+ } as unknown as TimeConditionProps;
+ const result = TimeCondition.validate(timeConditionSchema, badObj);
- const { error } = badTimeCondition.validate(badTimeObj);
- expect(error?.message).toEqual(
- '"returnValueTest.comparator" must be one of [==, >, <, >=, <=, !=]'
- );
+ expect(result.error).toBeDefined();
+ expect(result.data).toBeUndefined();
+ expect(result.error?.format()).toMatchObject({
+ returnValueTest: {
+ comparator: {
+ _errors: [
+ "Invalid enum value. Expected '==' | '>' | '<' | '>=' | '<=' | '!=', received 'not-a-comparator'",
+ ],
+ },
+ },
+ });
});
});
diff --git a/test/unit/conditions/compound-condition.test.ts b/test/unit/conditions/compound-condition.test.ts
index 396b6fddf..fd34d92c4 100644
--- a/test/unit/conditions/compound-condition.test.ts
+++ b/test/unit/conditions/compound-condition.test.ts
@@ -1,85 +1,124 @@
-import { CompoundCondition } from '../../../src/conditions';
-import { ERC721Ownership } from '../../../src/conditions/predefined/erc721';
+import { Condition } from '../../../src/conditions';
+import { CompoundCondition } from '../../../src/conditions/base';
+import {
+ compoundConditionSchema,
+ CompoundConditionType,
+} from '../../../src/conditions/compound-condition';
import {
testContractConditionObj,
testRpcConditionObj,
testTimeConditionObj,
} from '../testVariables';
-describe('validate', () => {
- const ownsBufficornNFT = ERC721Ownership.fromObj({
- contractAddress: '0x1e988ba4692e52Bc50b375bcC8585b95c48AaD77',
- parameters: [3591],
- chain: 5,
- }).toObj();
-
+describe('validation', () => {
it('accepts or operator', () => {
- const orCondition = new CompoundCondition({
+ const conditionObj = {
operator: 'or',
- operands: [ownsBufficornNFT, testTimeConditionObj],
- }).toObj();
+ operands: [testContractConditionObj, testTimeConditionObj],
+ };
+ const result = Condition.validate(compoundConditionSchema, conditionObj);
- expect(orCondition.operator).toEqual('or');
- expect(orCondition.operands).toEqual([
- ownsBufficornNFT,
- testTimeConditionObj,
- ]);
+ expect(result.error).toBeUndefined();
+ expect(result.data).toEqual({
+ ...conditionObj,
+ conditionType: CompoundConditionType,
+ });
});
it('accepts and operator', () => {
- const orCondition = new CompoundCondition({
+ const conditionObj = {
operator: 'and',
operands: [testContractConditionObj, testTimeConditionObj],
- }).toObj();
+ };
+ const result = CompoundCondition.validate(
+ compoundConditionSchema,
+ conditionObj
+ );
- expect(orCondition.operator).toEqual('and');
- expect(orCondition.operands).toEqual([
- testContractConditionObj,
- testTimeConditionObj,
- ]);
+ expect(result.error).toBeUndefined();
+ expect(result.data).toEqual({
+ ...conditionObj,
+ conditionType: CompoundConditionType,
+ });
});
it('rejects an invalid operator', () => {
- expect(() =>
- new CompoundCondition({
- operator: 'not-an-operator',
- operands: [testRpcConditionObj, testTimeConditionObj],
- }).toObj()
- ).toThrow('"operator" must be one of [and, or]');
+ const result = CompoundCondition.validate(compoundConditionSchema, {
+ operator: 'not-an-operator',
+ operands: [testRpcConditionObj, testTimeConditionObj],
+ });
+
+ expect(result.error).toBeDefined();
+ expect(result.data).toBeUndefined();
+ expect(result.error?.format()).toMatchObject({
+ operator: {
+ _errors: [
+ "Invalid enum value. Expected 'and' | 'or', received 'not-an-operator'",
+ ],
+ },
+ });
});
it('rejects invalid number of operands = 0', () => {
- expect(() =>
- new CompoundCondition({
- operator: 'or',
- operands: [],
- }).toObj()
- ).toThrow('"operands" must contain at least 2 items');
+ const result = CompoundCondition.validate(compoundConditionSchema, {
+ operator: 'or',
+ operands: [],
+ });
+
+ expect(result.error).toBeDefined();
+ expect(result.data).toBeUndefined();
+ expect(result.error?.format()).toMatchObject({
+ operands: {
+ _errors: ['Array must contain at least 2 element(s)'],
+ },
+ });
});
it('rejects invalid number of operands = 1', () => {
- expect(() =>
- new CompoundCondition({
- operator: 'or',
- operands: [testRpcConditionObj],
- }).toObj()
- ).toThrow('"operands" must contain at least 2 items');
+ const result = CompoundCondition.validate(compoundConditionSchema, {
+ operator: 'or',
+ operands: [testRpcConditionObj],
+ });
+ expect(result.error).toBeDefined();
+ expect(result.data).toBeUndefined();
+ expect(result.error?.format()).toMatchObject({
+ operands: {
+ _errors: ['Array must contain at least 2 element(s)'],
+ },
+ });
});
- it('it allows recursive compound conditions', () => {
- const compoundCondition = new CompoundCondition({
+ it('accepts recursive compound conditions', () => {
+ const conditionObj = {
+ operator: 'and',
+ operands: [
+ testContractConditionObj,
+ testTimeConditionObj,
+ testRpcConditionObj,
+ {
+ operator: 'or',
+ operands: [testTimeConditionObj, testContractConditionObj],
+ },
+ ],
+ };
+ const result = CompoundCondition.validate(
+ compoundConditionSchema,
+ conditionObj
+ );
+ expect(result.error).toBeUndefined();
+ expect(result.data).toEqual({
+ conditionType: CompoundConditionType,
operator: 'and',
operands: [
testContractConditionObj,
testTimeConditionObj,
testRpcConditionObj,
{
+ conditionType: CompoundConditionType,
operator: 'or',
- operands: [ownsBufficornNFT, testContractConditionObj],
+ operands: [testTimeConditionObj, testContractConditionObj],
},
],
- }).toObj();
- expect(compoundCondition.operator).toEqual('and');
- expect(compoundCondition.operands).toHaveLength(4);
+ });
});
});
diff --git a/test/unit/conditions/condition-expr.test.ts b/test/unit/conditions/condition-expr.test.ts
index 806269a7f..6941f834d 100644
--- a/test/unit/conditions/condition-expr.test.ts
+++ b/test/unit/conditions/condition-expr.test.ts
@@ -1,17 +1,18 @@
import { SemVer } from 'semver';
+import { ConditionExpression } from '../../../src/conditions';
import {
CompoundCondition,
- ConditionExpression,
-} from '../../../src/conditions';
-import {
ContractCondition,
+ ContractConditionProps,
RpcCondition,
TimeCondition,
+ TimeConditionProps,
} from '../../../src/conditions/base';
+import { RpcConditionType } from '../../../src/conditions/base';
import { USER_ADDRESS_PARAM } from '../../../src/conditions/const';
import { ERC721Balance } from '../../../src/conditions/predefined';
-import { toJSON } from '../../../src/utils';
+import { objectEquals, toJSON } from '../../../src/utils';
import {
TEST_CHAIN_ID,
TEST_CONTRACT_ADDR,
@@ -35,7 +36,7 @@ describe('condition set', () => {
);
const customParamKey = ':customParam';
- const contractConditionWithAbiObj = {
+ const contractConditionWithAbiObj: ContractConditionProps = {
...testContractConditionObj,
standardContractType: undefined,
functionAbi: testFunctionAbi,
@@ -67,17 +68,17 @@ describe('condition set', () => {
describe('equality', () => {
const conditionExprCurrentVersion = new ConditionExpression(rpcCondition);
- it('same version and condition', async () => {
- const conditionExprSameCurrentVerstion = new ConditionExpression(
+ it('same version and condition', () => {
+ const conditionExprSameCurrentVersion = new ConditionExpression(
rpcCondition,
ConditionExpression.VERSION
);
expect(
- conditionExprCurrentVersion.equals(conditionExprSameCurrentVerstion)
+ conditionExprCurrentVersion.equals(conditionExprSameCurrentVersion)
).toBeTruthy();
});
- it('different minor/patch version but same condition', async () => {
+ it('different minor/patch version but same condition', () => {
const conditionExprOlderMinorVersion = new ConditionExpression(
rpcCondition,
'0.1.0'
@@ -97,7 +98,7 @@ describe('condition set', () => {
).not.toBeTruthy();
});
- it('minor/patch number greater than major; still older', async () => {
+ it('minor/patch number greater than major; still older', () => {
const conditionExprOlderMinorVersion = new ConditionExpression(
rpcCondition,
'0.9.0'
@@ -140,7 +141,7 @@ describe('condition set', () => {
contractConditionWithAbi,
timeCondition,
compoundCondition,
- ])('same version but different condition', async (condition) => {
+ ])('same version but different condition', (condition) => {
const conditionExprSameVersionDifferentCondition =
new ConditionExpression(condition);
expect(
@@ -150,7 +151,7 @@ describe('condition set', () => {
).not.toBeTruthy();
});
- it('same contract condition although using erc721 helper', async () => {
+ it('same contract condition although using erc721 helper', () => {
const erc721ConditionExpr = new ConditionExpression(
erc721BalanceCondition
);
@@ -159,7 +160,9 @@ describe('condition set', () => {
const contractConditionExpr = new ConditionExpression(
sameContractCondition
);
- expect(erc721ConditionExpr.equals(contractConditionExpr)).toBeTruthy();
+ expect(
+ objectEquals(erc721ConditionExpr.toObj(), contractConditionExpr.toObj())
+ ).toBeTruthy();
});
});
@@ -171,7 +174,7 @@ describe('condition set', () => {
rpcCondition,
timeCondition,
compoundCondition,
- ])('serializes to and from json', async (condition) => {
+ ])('serializes to and from json', (condition) => {
const conditionExpr = new ConditionExpression(condition);
const conditionExprJson = conditionExpr.toJson();
expect(conditionExprJson).toBeDefined();
@@ -184,9 +187,22 @@ describe('condition set', () => {
ConditionExpression.fromJSON(conditionExprJson);
expect(conditionExprFromJson).toBeDefined();
expect(conditionExprFromJson.equals(conditionExprFromJson)).toBeTruthy();
+
+ const asWasmConditions = conditionExprFromJson.toWASMConditions();
+ const fromWasmConditions =
+ ConditionExpression.fromWASMConditions(asWasmConditions);
+ expect(fromWasmConditions).toBeDefined();
+ expect(fromWasmConditions.equals(conditionExprFromJson)).toBeTruthy();
+ });
+
+ it('serializes to and from WASM conditions', () => {
+ const conditionExpr = new ConditionExpression(erc721BalanceCondition);
+ const wasmConditions = conditionExpr.toWASMConditions();
+ const fromWasm = ConditionExpression.fromWASMConditions(wasmConditions);
+ expect(conditionExpr.equals(fromWasm)).toBeTruthy();
});
- it('incompatible version', async () => {
+ it('incompatible version', () => {
const currentVersion = new SemVer(ConditionExpression.VERSION);
const invalidVersion = currentVersion.inc('major');
expect(() => {
@@ -201,7 +217,7 @@ describe('condition set', () => {
it.each(['version', 'x.y', 'x.y.z', '-1,0.0', '1.0.0.0.0.0.0'])(
'invalid versions',
- async (invalidVersion) => {
+ (invalidVersion) => {
expect(() => {
ConditionExpression.fromObj({
version: invalidVersion,
@@ -211,51 +227,36 @@ describe('condition set', () => {
}
);
- it.each([
- // no "operator" nor "method" value
- {
- version: ConditionExpression.VERSION,
- condition: {
- randoKey: 'randoValue',
- otherKey: 'otherValue',
- },
- },
- // invalid "method" and no "contractAddress"
- {
- version: ConditionExpression.VERSION,
- condition: {
- method: 'doWhatIWant',
- returnValueTest: {
- index: 0,
- comparator: '>',
- value: '100',
- },
- chain: 5,
- },
- },
- // condition with wrong method "method" and no contract address
- {
- version: ConditionExpression.VERSION,
- condition: {
+ it.each(['_invalid_condition_type_', undefined as unknown as string])(
+ 'rejects an invalid condition type',
+ (invalidConditionType) => {
+ const conditionObj = {
...testTimeConditionObj,
- method: 'doWhatIWant',
- },
- },
- // rpc condition (no contract address) with disallowed method
- {
- version: ConditionExpression.VERSION,
- condition: {
- ...testRpcConditionObj,
- method: 'isPolicyActive',
- },
- },
- ])("can't determine condition type", async (invalidCondition) => {
+ conditionType: invalidConditionType,
+ } as unknown as TimeConditionProps;
+ expect(() => {
+ ConditionExpression.fromObj({
+ version: ConditionExpression.VERSION,
+ condition: conditionObj,
+ });
+ }).toThrow(`Invalid conditionType: ${invalidConditionType}`);
+ }
+ );
+
+ it('rejects a mismatched condition type', () => {
+ const conditionObj = {
+ ...testTimeConditionObj,
+ conditionType: RpcConditionType,
+ } as unknown as TimeConditionProps;
expect(() => {
- ConditionExpression.fromObj(invalidCondition);
- }).toThrow('unrecognized condition data');
+ ConditionExpression.fromObj({
+ version: ConditionExpression.VERSION,
+ condition: conditionObj,
+ });
+ }).toThrow(/^Invalid condition/);
});
- it('erc721 condition serialization', async () => {
+ it('erc721 condition serialization', () => {
const conditionExpr = new ConditionExpression(erc721BalanceCondition);
const erc721BalanceConditionObj = erc721BalanceCondition.toObj();
@@ -283,7 +284,7 @@ describe('condition set', () => {
expect(conditionExprFromJson.condition).toBeInstanceOf(ContractCondition);
});
- it('contract condition no abi serialization', async () => {
+ it('contract condition no abi serialization', () => {
const conditionExpr = new ConditionExpression(contractConditionNoAbi);
const conditionExprJson = conditionExpr.toJson();
@@ -315,7 +316,7 @@ describe('condition set', () => {
expect(conditionExprFromJson.condition).toBeInstanceOf(ContractCondition);
});
- it('contract condition with abi serialization', async () => {
+ it('contract condition with abi serialization', () => {
const conditionExpr = new ConditionExpression(contractConditionWithAbi);
const conditionExprJson = conditionExpr.toJson();
@@ -348,7 +349,7 @@ describe('condition set', () => {
expect(conditionExprFromJson.condition).toBeInstanceOf(ContractCondition);
});
- it('time condition serialization', async () => {
+ it('time condition serialization', () => {
const conditionExpr = new ConditionExpression(timeCondition);
const conditionExprJson = conditionExpr.toJson();
@@ -371,7 +372,7 @@ describe('condition set', () => {
expect(conditionExprFromJson.condition).toBeInstanceOf(TimeCondition);
});
- it('rpc condition serialization', async () => {
+ it('rpc condition serialization', () => {
const conditionExpr = new ConditionExpression(rpcCondition);
const conditionExprJson = conditionExpr.toJson();
@@ -395,7 +396,7 @@ describe('condition set', () => {
expect(conditionExprFromJson.condition).toBeInstanceOf(RpcCondition);
});
- it('compound condition serialization', async () => {
+ it('compound condition serialization', () => {
const conditionExpr = new ConditionExpression(compoundCondition);
const compoundConditionObj = compoundCondition.toObj();
diff --git a/test/unit/conditions/context.test.ts b/test/unit/conditions/context.test.ts
index 035b704d6..dc629c7a5 100644
--- a/test/unit/conditions/context.test.ts
+++ b/test/unit/conditions/context.test.ts
@@ -1,11 +1,11 @@
-import { SecretKey } from '@nucypher/nucypher-core';
-
-import { CustomContextParam } from '../../../src';
-import { ConditionExpression } from '../../../src/conditions';
+import {
+ ConditionExpression,
+ CustomContextParam,
+} from '../../../src/conditions';
import { ContractCondition, RpcCondition } from '../../../src/conditions/base';
import { USER_ADDRESS_PARAM } from '../../../src/conditions/const';
import { RESERVED_CONTEXT_PARAMS } from '../../../src/conditions/context/context';
-import { fakeWeb3Provider } from '../../utils';
+import { fakeProvider, fakeSigner } from '../../utils';
import {
testContractConditionObj,
testFunctionAbi,
@@ -13,7 +13,8 @@ import {
testRpcConditionObj,
} from '../testVariables';
-const web3Provider = fakeWeb3Provider(SecretKey.random().toBEBytes());
+const provider = fakeProvider();
+const signer = fakeSigner();
describe('serialization', () => {
it('serializes to json', async () => {
@@ -27,7 +28,9 @@ describe('serialization', () => {
},
});
const conditionContext = new ConditionExpression(rpcCondition).buildContext(
- web3Provider
+ provider,
+ {},
+ signer
);
const asJson = await conditionContext.toJson();
expect(asJson).toBeDefined();
@@ -49,7 +52,7 @@ describe('context parameters', () => {
};
const contractCondition = new ContractCondition(contractConditionObj);
const conditionExpr = new ConditionExpression(contractCondition);
- const conditionContext = conditionExpr.buildContext(web3Provider);
+ const conditionContext = conditionExpr.buildContext(provider, {}, signer);
describe('return value test', () => {
it('accepts on a custom context parameters', async () => {
@@ -77,6 +80,50 @@ describe('context parameters', () => {
});
});
+ it('detects if a signer is required', () => {
+ const conditionObj = {
+ ...testContractConditionObj,
+ returnValueTest: {
+ ...testReturnValueTest,
+ value: USER_ADDRESS_PARAM,
+ },
+ };
+ const condition = new ContractCondition(conditionObj);
+ const conditionExpr = new ConditionExpression(condition);
+ expect(conditionExpr.contextRequiresSigner()).toBe(true);
+ expect(conditionExpr.buildContext(provider, {}, signer)).toBeDefined();
+ expect(() => conditionExpr.buildContext(provider, {})).toThrow(
+ `Signer required to satisfy ${USER_ADDRESS_PARAM} context variable in condition`
+ );
+ });
+
+ it('detects if a signer is not required', () => {
+ const condition = new RpcCondition(testRpcConditionObj);
+ const conditionExpr = new ConditionExpression(condition);
+ expect(JSON.stringify(condition.toObj()).includes(USER_ADDRESS_PARAM)).toBe(
+ false
+ );
+ expect(conditionExpr.contextRequiresSigner()).toBe(false);
+ expect(conditionExpr.buildContext(provider, {}, signer)).toBeDefined();
+ expect(conditionExpr.buildContext(provider, {})).toBeDefined();
+ });
+
+ it('rejects on a missing signer', () => {
+ const conditionObj = {
+ ...testContractConditionObj,
+ returnValueTest: {
+ ...testReturnValueTest,
+ value: USER_ADDRESS_PARAM,
+ },
+ };
+ const condition = new ContractCondition(conditionObj);
+ const conditionExpr = new ConditionExpression(condition);
+ expect(conditionExpr.contextRequiresSigner()).toBe(true);
+ expect(() => conditionExpr.buildContext(provider, {}, undefined)).toThrow(
+ `Signer required to satisfy ${USER_ADDRESS_PARAM} context variable in condition`
+ );
+ });
+
describe('custom method parameters', () => {
const contractConditionObj = {
...testContractConditionObj,
@@ -96,7 +143,7 @@ describe('context parameters', () => {
});
const conditionContext = new ConditionExpression(
customContractCondition
- ).buildContext(web3Provider);
+ ).buildContext(provider, {}, signer);
await expect(async () => conditionContext.toObj()).rejects.toThrow(
`Missing custom context parameter(s): ${customParamKey}`
@@ -110,7 +157,7 @@ describe('context parameters', () => {
});
const conditionContext = new ConditionExpression(
customContractCondition
- ).buildContext(web3Provider);
+ ).buildContext(provider, {}, signer);
const asObj = await conditionContext.toObj();
expect(asObj).toBeDefined();
diff --git a/test/unit/pre-strategy.test.ts b/test/unit/pre-strategy.test.ts
index 9fa599a22..c4f775061 100644
--- a/test/unit/pre-strategy.test.ts
+++ b/test/unit/pre-strategy.test.ts
@@ -3,14 +3,15 @@ import { SecretKey, VerifiedKeyFrag } from '@nucypher/nucypher-core';
import {
conditions,
DeployedPreStrategy,
+ PreDecrypter,
PreStrategy,
- PreTDecDecrypter,
} from '../../src';
-import { Ursula } from '../../src/characters/porter';
+import { Ursula } from '../../src/porter';
import { toBytes } from '../../src/utils';
import {
+ fakeProvider,
+ fakeSigner,
fakeUrsulas,
- fakeWeb3Provider,
makeCohort,
mockEncryptTreasureMap,
mockGenerateKFrags,
@@ -30,15 +31,17 @@ const {
// Shared test variables
const aliceSecretKey = SecretKey.fromBEBytes(aliceSecretKeyBytes);
const bobSecretKey = SecretKey.fromBEBytes(bobSecretKeyBytes);
-const aliceProvider = fakeWeb3Provider(aliceSecretKey.toBEBytes());
-const bobProvider = fakeWeb3Provider(bobSecretKey.toBEBytes());
+const aliceSigner = fakeSigner(aliceSecretKey.toBEBytes());
+const aliceProvider = fakeProvider(aliceSecretKey.toBEBytes());
+const bobSigner = fakeSigner(bobSecretKey.toBEBytes());
+const bobProvider = fakeProvider(bobSecretKey.toBEBytes());
const ownsNFT = new ERC721Ownership({
contractAddress: '0x1e988ba4692e52Bc50b375bcC8585b95c48AaD77',
parameters: [3591],
chain: 5,
});
const conditionExpr = new ConditionExpression(ownsNFT);
-const mockedUrsulas = fakeUrsulas().slice(0, 3);
+const mockedUrsulas = fakeUrsulas();
const makePreStrategy = async () => {
const cohort = await makeCohort(mockedUrsulas);
@@ -54,7 +57,11 @@ const makeDeployedPreStrategy = async () => {
const makeTreasureMapSpy = mockMakeTreasureMap();
const encryptTreasureMapSpy = mockEncryptTreasureMap();
- const deployedStrategy = await strategy.deploy('test', aliceProvider);
+ const deployedStrategy = await strategy.deploy(
+ aliceProvider,
+ aliceSigner,
+ 'test'
+ );
expect(generateKFragsSpy).toHaveBeenCalled();
expect(publishToBlockchainSpy).toHaveBeenCalled();
@@ -126,8 +133,9 @@ describe('PreDeployedStrategy', () => {
const decryptedMessage =
await deployedStrategy.decrypter.retrieveAndDecrypt(
- [encryptedMessageKit],
- bobProvider
+ bobProvider,
+ bobSigner,
+ [encryptedMessageKit]
);
expect(getUrsulasSpy).toHaveBeenCalled();
expect(retrieveCFragsSpy).toHaveBeenCalled();
@@ -151,18 +159,18 @@ describe('PreDeployedStrategy', () => {
});
});
-describe('PreTDecDecrypter', () => {
+describe('PreDecrypter', () => {
it('serializes to a plain object', async () => {
const { deployedStrategy } = await makeDeployedPreStrategy();
const asObj = deployedStrategy.decrypter.toObj();
- const fromJson = PreTDecDecrypter.fromObj(asObj);
+ const fromJson = PreDecrypter.fromObj(asObj);
expect(fromJson.equals(deployedStrategy.decrypter)).toBeTruthy();
});
it('serializes to JSON', async () => {
const { deployedStrategy } = await makeDeployedPreStrategy();
const asJson = deployedStrategy.decrypter.toJSON();
- const fromJson = PreTDecDecrypter.fromJSON(asJson);
+ const fromJson = PreDecrypter.fromJSON(asJson);
expect(fromJson.equals(deployedStrategy.decrypter)).toBeTruthy();
});
});
diff --git a/test/unit/taco.test.ts b/test/unit/taco.test.ts
new file mode 100644
index 000000000..2648abff9
--- /dev/null
+++ b/test/unit/taco.test.ts
@@ -0,0 +1,94 @@
+import {
+ FerveoVariant,
+ SecretKey,
+ SessionStaticSecret,
+} from '@nucypher/nucypher-core';
+
+import { conditions } from '../../src';
+import { taco } from '../../src/taco';
+import { toBytes } from '../../src/utils';
+import {
+ fakeDkgFlow,
+ fakeDkgParticipants,
+ fakeDkgRitual,
+ fakePorterUri,
+ fakeProvider,
+ fakeSigner,
+ fakeTDecFlow,
+ mockCbdDecrypt,
+ mockGetParticipants,
+ mockGetRitual,
+ mockGetRitualIdFromPublicKey,
+ mockRandomSessionStaticSecret,
+} from '../utils';
+
+import { aliceSecretKeyBytes } from './testVariables';
+
+const {
+ predefined: { ERC721Ownership },
+} = conditions;
+
+// Shared test variables
+const aliceSecretKey = SecretKey.fromBEBytes(aliceSecretKeyBytes);
+const ownsNFT = new ERC721Ownership({
+ contractAddress: '0x1e988ba4692e52Bc50b375bcC8585b95c48AaD77',
+ parameters: [3591],
+ chain: 5,
+});
+const variant = FerveoVariant.precomputed;
+const message = 'this is a secret';
+
+describe('taco', () => {
+ it('encrypts and decrypts', async () => {
+ const mockedDkg = fakeDkgFlow(variant, 0, 4, 4);
+ const mockedDkgRitual = fakeDkgRitual(mockedDkg);
+ const provider = fakeProvider(aliceSecretKey.toBEBytes());
+ const signer = fakeSigner(aliceSecretKey.toBEBytes());
+ const getExistingRitualSpy = mockGetRitual(mockedDkgRitual);
+
+ const messageKit = await taco.encrypt(
+ provider,
+ message,
+ ownsNFT,
+ mockedDkg.ritualId
+ );
+
+ expect(getExistingRitualSpy).toHaveBeenCalled();
+
+ const { decryptionShares } = fakeTDecFlow({
+ ...mockedDkg,
+ message: toBytes(message),
+ dkgPublicKey: mockedDkg.dkg.publicKey(),
+ thresholdMessageKit: messageKit,
+ });
+ const { participantSecrets, participants } = fakeDkgParticipants(
+ mockedDkg.ritualId
+ );
+ const requesterSessionKey = SessionStaticSecret.random();
+ const decryptSpy = mockCbdDecrypt(
+ mockedDkg.ritualId,
+ decryptionShares,
+ participantSecrets,
+ requesterSessionKey.publicKey()
+ );
+ const getParticipantsSpy = mockGetParticipants(participants);
+ const sessionKeySpy = mockRandomSessionStaticSecret(requesterSessionKey);
+ const getRitualIdFromPublicKey = mockGetRitualIdFromPublicKey(
+ mockedDkg.ritualId
+ );
+ const getRitualSpy = mockGetRitual(mockedDkgRitual);
+
+ const decryptedMessage = await taco.decrypt(
+ provider,
+ messageKit,
+ signer,
+ fakePorterUri
+ );
+ expect(getParticipantsSpy).toHaveBeenCalled();
+ expect(sessionKeySpy).toHaveBeenCalled();
+ expect(getRitualIdFromPublicKey).toHaveBeenCalled();
+ expect(getRitualSpy).toHaveBeenCalled();
+ expect(decryptSpy).toHaveBeenCalled();
+ expect(decryptedMessage).toEqual(toBytes(message));
+ });
+});
diff --git a/test/unit/testVariables.ts b/test/unit/testVariables.ts
index ef943513a..c0fbf3488 100644
--- a/test/unit/testVariables.ts
+++ b/test/unit/testVariables.ts
@@ -1,3 +1,19 @@
+import {
+ ContractConditionProps,
+ RpcConditionProps,
+ TimeConditionProps,
+} from '../../src/conditions/base';
+import {
+ ContractConditionType,
+ FunctionAbiProps,
+} from '../../src/conditions/base/contract';
+import { RpcConditionType } from '../../src/conditions/base/rpc';
+import { ReturnValueTestProps } from '../../src/conditions/base/shared';
+import {
+ TimeConditionMethod,
+ TimeConditionType,
+} from '../../src/conditions/base/time';
+
export const aliceSecretKeyBytes = new Uint8Array([
55, 82, 190, 189, 203, 164, 60, 148, 36, 86, 46, 123, 63, 152, 215, 113, 174,
86, 244, 44, 23, 227, 197, 68, 5, 85, 116, 31, 208, 152, 88, 53,
@@ -13,30 +29,33 @@ export const TEST_CONTRACT_ADDR_2 =
'0x0000000000000000000000000000000000000002';
export const TEST_CHAIN_ID = 5;
-export const testReturnValueTest = {
+export const testReturnValueTest: ReturnValueTestProps = {
index: 0,
comparator: '>',
value: '100',
};
-export const testTimeConditionObj = {
+export const testTimeConditionObj: TimeConditionProps = {
+ conditionType: TimeConditionType,
returnValueTest: {
index: 0,
comparator: '>',
value: '100',
},
- method: 'blocktime',
+ method: TimeConditionMethod,
chain: 5,
};
-export const testRpcConditionObj = {
+export const testRpcConditionObj: RpcConditionProps = {
+ conditionType: RpcConditionType,
chain: TEST_CHAIN_ID,
method: 'eth_getBalance',
parameters: ['0x1e988ba4692e52Bc50b375bcC8585b95c48AaD77'],
returnValueTest: testReturnValueTest,
};
-export const testContractConditionObj = {
+export const testContractConditionObj: ContractConditionProps = {
+ conditionType: ContractConditionType,
contractAddress: '0x0000000000000000000000000000000000000000',
chain: 5,
standardContractType: 'ERC20',
@@ -45,9 +64,10 @@ export const testContractConditionObj = {
returnValueTest: testReturnValueTest,
};
-export const testFunctionAbi = {
+export const testFunctionAbi: FunctionAbiProps = {
name: 'myFunction',
type: 'function',
+ stateMutability: 'view',
inputs: [
{
internalType: 'address',
@@ -67,5 +87,4 @@ export const testFunctionAbi = {
type: 'uint256',
},
],
- stateMutability: 'view',
};
diff --git a/test/utils.ts b/test/utils.ts
index 763dc9a85..ec8b1aeee 100644
--- a/test/utils.ts
+++ b/test/utils.ts
@@ -1,13 +1,22 @@
-// Disabling some of the eslint rules for conveninence.
+// Disabling some of the eslint rules for convenience.
/* eslint-disable @typescript-eslint/no-non-null-assertion */
/* eslint-disable @typescript-eslint/no-explicit-any */
+/* eslint-disable @typescript-eslint/no-unused-vars */
import { Block } from '@ethersproject/providers';
import {
+ AggregatedTranscript,
Capsule,
CapsuleFrag,
+ combineDecryptionSharesSimple,
+ DecryptionSharePrecomputed,
+ DecryptionShareSimple,
+ Dkg,
+ DkgPublicKey,
EncryptedThresholdDecryptionResponse,
EncryptedTreasureMap,
- ferveoEncrypt,
+ EthereumAddress,
+ FerveoVariant,
+ Keypair,
PublicKey,
reencrypt,
SecretKey,
@@ -15,43 +24,40 @@ import {
SessionStaticKey,
SessionStaticSecret,
ThresholdDecryptionResponse,
- VerifiedCapsuleFrag,
- VerifiedKeyFrag,
-} from '@nucypher/nucypher-core';
-import {
- AggregatedTranscript,
- Ciphertext,
- combineDecryptionSharesPrecomputed,
- combineDecryptionSharesSimple,
- DecryptionSharePrecomputed,
- DecryptionShareSimple,
- decryptWithSharedSecret,
- Dkg,
- EthereumAddress,
- Keypair,
+ ThresholdMessageKit,
Transcript,
Validator,
ValidatorMessage,
+ VerifiedCapsuleFrag,
+ VerifiedKeyFrag,
} from '@nucypher/nucypher-core';
import axios from 'axios';
import { ethers, providers, Wallet } from 'ethers';
import { keccak256 } from 'ethers/lib/utils';
-import { Alice, Bob, Cohort, Configuration, RemoteBob } from '../src';
-import { DkgCoordinatorAgent, DkgParticipant } from '../src/agents/coordinator';
-import { CbdTDecDecrypter } from '../src/characters/cbd-recipient';
+import { Alice, Bob, Cohort, Enrico, RemoteBob } from '../src';
+import {
+ DkgCoordinatorAgent,
+ DkgParticipant,
+ DkgRitualState,
+} from '../src/agents/coordinator';
+import { ThresholdDecrypter } from '../src/characters/cbd-recipient';
+import { ConditionExpression } from '../src/conditions';
+import { ERC721Balance } from '../src/conditions/predefined';
+import { DkgClient, DkgRitual } from '../src/dkg';
+import { BlockchainPolicy, PreEnactedPolicy } from '../src/policies/policy';
import {
CbdDecryptResult,
GetUrsulasResult,
- Porter,
+ PorterClient,
RetrieveCFragsResult,
Ursula,
-} from '../src/characters/porter';
-import { DkgClient, DkgRitual, FerveoVariant } from '../src/dkg';
-import { BlockchainPolicy, PreEnactedPolicy } from '../src/policies/policy';
+} from '../src/porter';
import { ChecksumAddress } from '../src/types';
import { toBytes, toHexString, zip } from '../src/utils';
+import { TEST_CHAIN_ID, TEST_CONTRACT_ADDR } from './unit/testVariables';
+
export const bytesEqual = (first: Uint8Array, second: Uint8Array): boolean =>
first.length === second.length &&
first.every((value, index) => value === second[index]);
@@ -59,15 +65,13 @@ export const bytesEqual = (first: Uint8Array, second: Uint8Array): boolean =>
export const fromBytes = (bytes: Uint8Array): string =>
new TextDecoder().decode(bytes);
-const mockConfig: Configuration = {
- porterUri: 'https://_this_should_crash.com/',
-};
+export const fakePorterUri = 'https://_this_should_crash.com/';
export const fakeBob = (): Bob => {
const secretKey = SecretKey.fromBEBytes(
toBytes('fake-secret-key-32-bytes-bob-xxx')
);
- return Bob.fromSecretKey(mockConfig, secretKey);
+ return Bob.fromSecretKey(secretKey);
};
export const fakeRemoteBob = (): RemoteBob => {
@@ -77,31 +81,48 @@ export const fakeRemoteBob = (): RemoteBob => {
export const fakeAlice = (aliceKey = 'fake-secret-key-32-bytes-alice-x') => {
const secretKey = SecretKey.fromBEBytes(toBytes(aliceKey));
- const provider = fakeWeb3Provider(secretKey.toBEBytes());
- return Alice.fromSecretKey(mockConfig, secretKey, provider);
+ return Alice.fromSecretKey(secretKey);
};
-export const fakeWeb3Provider = (
- secretKeyBytes = SecretKey.random().toBEBytes(),
- blockNumber?: number,
- blockTimestamp?: number
-): ethers.providers.Web3Provider => {
- const block = { timestamp: blockTimestamp ?? 1000 };
- const provider = {
- getBlockNumber: () => Promise.resolve(blockNumber ?? 1000),
+const makeFakeProvider = (timestamp: number, blockNumber: number) => {
+ const block = { timestamp };
+ return {
+ getBlockNumber: () => Promise.resolve(blockNumber),
getBlock: () => Promise.resolve(block as Block),
_isProvider: true,
getNetwork: () => Promise.resolve({ name: 'mockNetwork', chainId: -1 }),
};
- const fakeSignerWithProvider = {
+};
+
+export const fakeSigner = (
+ secretKeyBytes = SecretKey.random().toBEBytes(),
+ blockNumber = 1000,
+ blockTimestamp = 1000
+) => {
+ const provider = makeFakeProvider(blockNumber, blockTimestamp);
+ return {
...new Wallet(secretKeyBytes),
- provider,
+ provider: provider,
_signTypedData: () => Promise.resolve('fake-typed-signature'),
+ signMessage: () => Promise.resolve('fake-signature'),
getAddress: () =>
Promise.resolve('0x0000000000000000000000000000000000000000'),
} as unknown as ethers.providers.JsonRpcSigner;
+};
+
+export const fakeProvider = (
+ secretKeyBytes = SecretKey.random().toBEBytes(),
+ blockNumber = 1000,
+ blockTimestamp = 1000
+): ethers.providers.Web3Provider => {
+ const fakeProvider = makeFakeProvider(blockTimestamp, blockNumber);
+ const fakeSignerWithProvider = fakeSigner(
+ secretKeyBytes,
+ blockNumber,
+ blockTimestamp
+ );
return {
- ...provider,
+ ...fakeProvider,
getSigner: () => fakeSignerWithProvider,
} as unknown as ethers.providers.Web3Provider;
};
@@ -110,11 +131,12 @@ const genChecksumAddress = (i: number) =>
'0x' + '0'.repeat(40 - i.toString(16).length) + i.toString(16);
const genEthAddr = (i: number) =>
EthereumAddress.fromString(genChecksumAddress(i));
-export const fakeUrsulas = (): readonly Ursula[] =>
- [0, 1, 2, 3, 4].map((i: number) => ({
+export const fakeUrsulas = (n = 4): Ursula[] =>
+ // 0...n-1
+ Array.from(Array(n).keys()).map((i: number) => ({
encryptingKey: SecretKey.random().publicKey(),
checksumAddress: genChecksumAddress(i).toLowerCase(),
- uri: 'https://example.a.com:9151',
+ uri: `https://example.${i}.com:9151`,
}));
export const mockGetUrsulas = (ursulas: readonly Ursula[]) => {
@@ -163,7 +185,7 @@ export const mockRetrieveCFragsRequest = (
) => {
const results = fakeCFragResponse(ursulas, verifiedKFrags, capsule);
return jest
- .spyOn(Porter.prototype, 'retrieveCFrags')
+ .spyOn(PorterClient.prototype, 'retrieveCFrags')
.mockImplementation(() => {
return Promise.resolve(results);
});
@@ -214,14 +236,14 @@ export const mockDetectEthereumProvider = () => {
};
export const fakeDkgFlow = (
- variant: FerveoVariant | FerveoVariant.Precomputed,
+ variant: FerveoVariant,
ritualId: number,
sharesNum: number,
threshold: number
) => {
if (
- variant !== FerveoVariant.Simple &&
- variant !== FerveoVariant.Precomputed
+ !variant.equals(FerveoVariant.simple) &&
+ !variant.equals(FerveoVariant.precomputed)
) {
throw new Error(`Invalid variant: ${variant}`);
}
@@ -285,11 +307,10 @@ interface FakeDkgRitualFlow {
sharesNum: number;
threshold: number;
receivedMessages: ValidatorMessage[];
- variant: FerveoVariant;
- ciphertext: Ciphertext;
- aad: Uint8Array;
dkg: Dkg;
message: Uint8Array;
+ dkgPublicKey: DkgPublicKey;
+ thresholdMessageKit: ThresholdMessageKit;
}
export const fakeTDecFlow = ({
@@ -299,16 +320,11 @@ export const fakeTDecFlow = ({
sharesNum,
threshold,
receivedMessages,
- variant,
- ciphertext,
- aad,
message,
+ thresholdMessageKit,
}: FakeDkgRitualFlow) => {
// Having aggregated the transcripts, the validators can now create decryption shares
- const decryptionShares: (
- | DecryptionSharePrecomputed
- | DecryptionShareSimple
- )[] = [];
+ const decryptionShares: DecryptionShareSimple[] = [];
zip(validators, validatorKeypairs).forEach(([validator, keypair]) => {
const dkg = new Dkg(ritualId, sharesNum, threshold, validators, validator);
const aggregate = dkg.aggregateTranscript(receivedMessages);
@@ -317,75 +333,70 @@ export const fakeTDecFlow = ({
throw new Error('Transcript is invalid');
}
- let decryptionShare;
- if (variant === FerveoVariant.Precomputed) {
- decryptionShare = aggregate.createDecryptionSharePrecomputed(
- dkg,
- ciphertext,
- aad,
- keypair
- );
- } else {
- decryptionShare = aggregate.createDecryptionShareSimple(
- dkg,
- ciphertext,
- aad,
- keypair
- );
- }
+ const decryptionShare = aggregate.createDecryptionShareSimple(
+ dkg,
+ thresholdMessageKit.ciphertextHeader,
+ thresholdMessageKit.acp.aad(),
+ keypair
+ );
decryptionShares.push(decryptionShare);
});
- // Now, the decryption share can be used to decrypt the ciphertext
- // This part is in the client API
+ const sharedSecret = combineDecryptionSharesSimple(decryptionShares);
- let sharedSecret;
- if (variant === FerveoVariant.Precomputed) {
- sharedSecret = combineDecryptionSharesPrecomputed(decryptionShares);
- } else {
- sharedSecret = combineDecryptionSharesSimple(decryptionShares);
- }
-
- // The client should have access to the public parameters of the DKG
- const plaintext = decryptWithSharedSecret(ciphertext, aad, sharedSecret);
+ const plaintext = thresholdMessageKit.decryptWithSharedSecret(sharedSecret);
if (!bytesEqual(plaintext, message)) {
throw new Error('Decryption failed');
}
- return { decryptionShares, sharedSecret, plaintext };
+ return {
+ decryptionShares,
+ plaintext,
+ sharedSecret,
+ thresholdMessageKit,
+ };
};
-export const fakeDkgTDecFlowE2e = (
- variant: FerveoVariant,
- message = toBytes('fake-message'),
- aad = toBytes('fake-aad'),
+const fakeConditionExpr = () => {
+ const erc721Balance = new ERC721Balance({
+ chain: TEST_CHAIN_ID,
+ contractAddress: TEST_CONTRACT_ADDR,
+ });
+ return new ConditionExpression(erc721Balance);
+};
+
+export const fakeDkgTDecFlowE2E = (
ritualId = 0,
+ variant: FerveoVariant = FerveoVariant.precomputed,
+ conditionExpr: ConditionExpression = fakeConditionExpr(),
+ message = toBytes('fake-message'),
sharesNum = 4,
threshold = 4
) => {
const ritual = fakeDkgFlow(variant, ritualId, sharesNum, threshold);
+ const dkgPublicKey = ritual.dkg.publicKey();
+ const thresholdMessageKit = new Enrico(dkgPublicKey).encryptMessageCbd(
+ message,
+ conditionExpr
+ );
- // In the meantime, the client creates a ciphertext and decryption request
- const ciphertext = ferveoEncrypt(message, aad, ritual.dkg.publicKey());
const { decryptionShares } = fakeTDecFlow({
...ritual,
- variant,
- ciphertext,
- aad,
message,
+ dkgPublicKey,
+ thresholdMessageKit,
});
return {
...ritual,
message,
- aad,
- ciphertext,
decryptionShares,
+ thresholdMessageKit,
};
};
-export const fakeCoordinatorRitual = (
+export const fakeCoordinatorRitual = async (
ritualId: number
-): {
+): Promise<{
aggregationMismatch: boolean;
initTimestamp: number;
aggregatedTranscriptHash: string;
@@ -397,8 +408,8 @@ export const fakeCoordinatorRitual = (
aggregatedTranscript: string;
publicKeyHash: string;
totalAggregations: number;
-} => {
- const ritual = fakeDkgTDecFlowE2e(FerveoVariant.Precomputed);
+}> => {
+ const ritual = await fakeDkgTDecFlowE2E();
const dkgPkBytes = ritual.dkg.publicKey().toBytes();
return {
id: ritualId,
@@ -419,13 +430,12 @@ export const fakeCoordinatorRitual = (
};
export const fakeDkgParticipants = (
- ritualId: number,
- variant = FerveoVariant.Precomputed
+ ritualId: number
): {
participants: DkgParticipant[];
participantSecrets: Record;
} => {
- const ritual = fakeDkgTDecFlowE2e(variant);
+ const ritual = fakeDkgTDecFlowE2E(ritualId);
const label = toBytes(`${ritualId}`);
const participantSecrets: Record =
@@ -483,39 +493,54 @@ export const mockCbdDecrypt = (
encryptedResponses,
errors,
};
- return jest.spyOn(Porter.prototype, 'cbdDecrypt').mockImplementation(() => {
- return Promise.resolve(result);
- });
+ return jest
+ .spyOn(PorterClient.prototype, 'cbdDecrypt')
+ .mockImplementation(() => {
+ return Promise.resolve(result);
+ });
};
export const mockRandomSessionStaticSecret = (secret: SessionStaticSecret) => {
return jest
- .spyOn(CbdTDecDecrypter.prototype as any, 'makeSessionKey')
+ .spyOn(ThresholdDecrypter.prototype as any, 'makeSessionKey')
.mockImplementation(() => secret);
};
export const fakeRitualId = 0;
-export const fakeDkgRitual = (ritual: { dkg: Dkg }, threshold: number) => {
- return new DkgRitual(fakeRitualId, ritual.dkg.publicKey(), threshold);
+export const fakeDkgRitual = (ritual: {
+ dkg: Dkg;
+ sharesNum: number;
+ threshold: number;
+}) => {
+ return new DkgRitual(
+ fakeRitualId,
+ ritual.dkg.publicKey(),
+ ritual.sharesNum,
+ ritual.threshold,
+ DkgRitualState.FINALIZED
+ );
};
-export const mockGetExistingRitual = (fakeRitual: unknown) => {
+export const mockGetRitual = (dkgRitual: DkgRitual) => {
+ return jest.spyOn(DkgClient, 'getRitual').mockImplementation(() => {
+ return Promise.resolve(dkgRitual);
+ });
+};
+
+export const mockGetRitualIdFromPublicKey = (ritualId: number) => {
return jest
- .spyOn(DkgClient.prototype as any, 'getExistingRitual')
+ .spyOn(DkgCoordinatorAgent, 'getRitualIdFromPublicKey')
.mockImplementation(() => {
- return Promise.resolve(fakeRitual);
+ return Promise.resolve(ritualId);
});
};
export const makeCohort = async (ursulas: Ursula[]) => {
const getUrsulasSpy = mockGetUrsulas(ursulas);
- const config = {
- threshold: 2,
- shares: 3,
- porterUri: 'https://_this.should.crash',
- };
- const cohort = await Cohort.create(config);
+ const porterUri = 'https://_this.should.crash';
+ const numUrsulas = ursulas.length;
+ const cohort = await Cohort.create(porterUri, numUrsulas);
expect(getUrsulasSpy).toHaveBeenCalled();
return cohort;
};
diff --git a/types/ethers-contracts/index.ts b/types/ethers-contracts/index.ts
index a72a65e49..64d144160 100644
--- a/types/ethers-contracts/index.ts
+++ b/types/ethers-contracts/index.ts
@@ -3,6 +3,6 @@
/* eslint-disable */
export type { Coordinator } from "./Coordinator";
export type { SubscriptionManager } from "./SubscriptionManager";
-
+export * as factories from "./factories";
export { Coordinator__factory } from "./factories/Coordinator__factory";
export { SubscriptionManager__factory } from "./factories/SubscriptionManager__factory";
diff --git a/yarn.lock b/yarn.lock
index 27edf4f0f..c495cb6b3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,11 @@
# yarn lockfile v1
+"@aashutoshrathi/word-wrap@^1.2.3":
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
+ integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
+
"@ampproject/remapping@^2.2.0":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
@@ -10,52 +15,85 @@
"@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@babel/code-frame@7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
- integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3"
+ integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==
dependencies:
- "@babel/highlight" "^7.10.4"
+ "@babel/highlight" "^7.22.10"
+ chalk "^2.4.2"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658"
- integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==
+"@babel/code-frame@^7.22.13":
+ version "7.22.13"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e"
+ integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==
dependencies:
- "@babel/highlight" "^7.22.5"
+ "@babel/highlight" "^7.22.13"
+ chalk "^2.4.2"
-"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.5.tgz#b1f6c86a02d85d2dd3368a2b67c09add8cd0c255"
- integrity sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==
+"@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9":
+ version "7.22.9"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730"
+ integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==
-"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.18.10", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.5.tgz#d67d9747ecf26ee7ecd3ebae1ee22225fe902a89"
- integrity sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==
+"@babel/core@^7.11.6", "@babel/core@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.11.tgz#8033acaa2aa24c3f814edaaa057f3ce0ba559c24"
+ integrity sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==
dependencies:
"@ampproject/remapping" "^2.2.0"
- "@babel/code-frame" "^7.22.5"
- "@babel/generator" "^7.22.5"
- "@babel/helper-compilation-targets" "^7.22.5"
- "@babel/helper-module-transforms" "^7.22.5"
- "@babel/helpers" "^7.22.5"
- "@babel/parser" "^7.22.5"
+ "@babel/code-frame" "^7.22.10"
+ "@babel/generator" "^7.22.10"
+ "@babel/helper-compilation-targets" "^7.22.10"
+ "@babel/helper-module-transforms" "^7.22.9"
+ "@babel/helpers" "^7.22.11"
+ "@babel/parser" "^7.22.11"
"@babel/template" "^7.22.5"
- "@babel/traverse" "^7.22.5"
- "@babel/types" "^7.22.5"
+ "@babel/traverse" "^7.22.11"
+ "@babel/types" "^7.22.11"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
+"@babel/core@^7.12.3":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.10.tgz#aad442c7bcd1582252cb4576747ace35bc122f35"
+ integrity sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.22.10"
+ "@babel/generator" "^7.22.10"
+ "@babel/helper-compilation-targets" "^7.22.10"
+ "@babel/helper-module-transforms" "^7.22.9"
+ "@babel/helpers" "^7.22.10"
+ "@babel/parser" "^7.22.10"
+ "@babel/template" "^7.22.5"
+ "@babel/traverse" "^7.22.10"
+ "@babel/types" "^7.22.10"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.2"
- semver "^6.3.0"
+ semver "^6.3.1"
-"@babel/generator@^7.22.5", "@babel/generator@^7.7.2":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.5.tgz#1e7bf768688acfb05cf30b2369ef855e82d984f7"
- integrity sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==
+"@babel/generator@^7.22.10", "@babel/generator@^7.7.2":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722"
+ integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==
dependencies:
- "@babel/types" "^7.22.5"
+ "@babel/types" "^7.22.10"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ "@jridgewell/trace-mapping" "^0.3.17"
+ jsesc "^2.5.1"
+
+"@babel/generator@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.15.tgz#1564189c7ec94cb8f77b5e8a90c4d200d21b2339"
+ integrity sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==
+ dependencies:
+ "@babel/types" "^7.22.15"
"@jridgewell/gen-mapping" "^0.3.2"
"@jridgewell/trace-mapping" "^0.3.17"
jsesc "^2.5.1"
@@ -68,58 +106,57 @@
"@babel/types" "^7.22.5"
"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz#a3f4758efdd0190d8927fcffd261755937c71878"
- integrity sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz#573e735937e99ea75ea30788b57eb52fab7468c9"
+ integrity sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==
dependencies:
- "@babel/types" "^7.22.5"
+ "@babel/types" "^7.22.10"
-"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz#fc7319fc54c5e2fa14b2909cf3c5fd3046813e02"
- integrity sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==
+"@babel/helper-compilation-targets@^7.22.10", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024"
+ integrity sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==
dependencies:
- "@babel/compat-data" "^7.22.5"
+ "@babel/compat-data" "^7.22.9"
"@babel/helper-validator-option" "^7.22.5"
- browserslist "^4.21.3"
+ browserslist "^4.21.9"
lru-cache "^5.1.1"
- semver "^6.3.0"
+ semver "^6.3.1"
"@babel/helper-create-class-features-plugin@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz#2192a1970ece4685fbff85b48da2c32fcb130b7c"
- integrity sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.10.tgz#dd2612d59eac45588021ac3d6fa976d08f4e95a3"
+ integrity sha512-5IBb77txKYQPpOEdUdIhBx8VrZyDCQ+H82H0+5dX1TmuscP5vJKEE3cKurjtIw/vFwzbVH48VweE78kVDBrqjA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.22.5"
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-function-name" "^7.22.5"
"@babel/helper-member-expression-to-functions" "^7.22.5"
"@babel/helper-optimise-call-expression" "^7.22.5"
- "@babel/helper-replace-supers" "^7.22.5"
+ "@babel/helper-replace-supers" "^7.22.9"
"@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
- "@babel/helper-split-export-declaration" "^7.22.5"
- semver "^6.3.0"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ semver "^6.3.1"
"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz#bb2bf0debfe39b831986a4efbf4066586819c6e4"
- integrity sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==
+ version "7.22.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6"
+ integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.22.5"
regexpu-core "^5.3.1"
- semver "^6.3.0"
+ semver "^6.3.1"
-"@babel/helper-define-polyfill-provider@^0.4.0":
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz#487053f103110f25b9755c5980e031e93ced24d8"
- integrity sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==
+"@babel/helper-define-polyfill-provider@^0.4.2":
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7"
+ integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==
dependencies:
- "@babel/helper-compilation-targets" "^7.17.7"
- "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-compilation-targets" "^7.22.6"
+ "@babel/helper-plugin-utils" "^7.22.5"
debug "^4.1.1"
lodash.debounce "^4.0.8"
resolve "^1.14.2"
- semver "^6.1.2"
"@babel/helper-environment-visitor@^7.22.5":
version "7.22.5"
@@ -155,19 +192,16 @@
dependencies:
"@babel/types" "^7.22.5"
-"@babel/helper-module-transforms@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz#0f65daa0716961b6e96b164034e737f60a80d2ef"
- integrity sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==
+"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9":
+ version "7.22.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129"
+ integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==
dependencies:
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-module-imports" "^7.22.5"
"@babel/helper-simple-access" "^7.22.5"
- "@babel/helper-split-export-declaration" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
"@babel/helper-validator-identifier" "^7.22.5"
- "@babel/template" "^7.22.5"
- "@babel/traverse" "^7.22.5"
- "@babel/types" "^7.22.5"
"@babel/helper-optimise-call-expression@^7.22.5":
version "7.22.5"
@@ -176,32 +210,28 @@
dependencies:
"@babel/types" "^7.22.5"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
-"@babel/helper-remap-async-to-generator@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz#14a38141a7bf2165ad38da61d61cf27b43015da2"
- integrity sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==
+"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9":
+ version "7.22.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82"
+ integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==
dependencies:
"@babel/helper-annotate-as-pure" "^7.22.5"
"@babel/helper-environment-visitor" "^7.22.5"
- "@babel/helper-wrap-function" "^7.22.5"
- "@babel/types" "^7.22.5"
+ "@babel/helper-wrap-function" "^7.22.9"
-"@babel/helper-replace-supers@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz#71bc5fb348856dea9fdc4eafd7e2e49f585145dc"
- integrity sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==
+"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9":
+ version "7.22.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779"
+ integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==
dependencies:
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-member-expression-to-functions" "^7.22.5"
"@babel/helper-optimise-call-expression" "^7.22.5"
- "@babel/template" "^7.22.5"
- "@babel/traverse" "^7.22.5"
- "@babel/types" "^7.22.5"
"@babel/helper-simple-access@^7.22.5":
version "7.22.5"
@@ -217,10 +247,10 @@
dependencies:
"@babel/types" "^7.22.5"
-"@babel/helper-split-export-declaration@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz#88cf11050edb95ed08d596f7a044462189127a08"
- integrity sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==
+"@babel/helper-split-export-declaration@^7.22.6":
+ version "7.22.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
+ integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
dependencies:
"@babel/types" "^7.22.5"
@@ -229,6 +259,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
+"@babel/helper-validator-identifier@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz#601fa28e4cc06786c18912dca138cec73b882044"
+ integrity sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==
+
"@babel/helper-validator-identifier@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193"
@@ -239,38 +274,65 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac"
integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==
-"@babel/helper-wrap-function@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz#44d205af19ed8d872b4eefb0d2fa65f45eb34f06"
- integrity sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==
+"@babel/helper-wrap-function@^7.22.9":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz#d845e043880ed0b8c18bd194a12005cb16d2f614"
+ integrity sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==
dependencies:
"@babel/helper-function-name" "^7.22.5"
"@babel/template" "^7.22.5"
- "@babel/traverse" "^7.22.5"
- "@babel/types" "^7.22.5"
+ "@babel/types" "^7.22.10"
-"@babel/helpers@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.5.tgz#74bb4373eb390d1ceed74a15ef97767e63120820"
- integrity sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==
+"@babel/helpers@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.10.tgz#ae6005c539dfbcb5cd71fb51bfc8a52ba63bc37a"
+ integrity sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==
dependencies:
"@babel/template" "^7.22.5"
- "@babel/traverse" "^7.22.5"
- "@babel/types" "^7.22.5"
+ "@babel/traverse" "^7.22.10"
+ "@babel/types" "^7.22.10"
-"@babel/highlight@^7.10.4", "@babel/highlight@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031"
- integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==
+"@babel/helpers@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.11.tgz#b02f5d5f2d7abc21ab59eeed80de410ba70b056a"
+ integrity sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==
+ dependencies:
+ "@babel/template" "^7.22.5"
+ "@babel/traverse" "^7.22.11"
+ "@babel/types" "^7.22.11"
+
+"@babel/highlight@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7"
+ integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==
dependencies:
"@babel/helper-validator-identifier" "^7.22.5"
- chalk "^2.0.0"
+ chalk "^2.4.2"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea"
- integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==
+"@babel/highlight@^7.22.13":
+ version "7.22.13"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.13.tgz#9cda839e5d3be9ca9e8c26b6dd69e7548f0cbf16"
+ integrity sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.5"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.10", "@babel/parser@^7.22.5":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55"
+ integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==
+
+"@babel/parser@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.11.tgz#becf8ee33aad2a35ed5607f521fe6e72a615f905"
+ integrity sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g==
+
+"@babel/parser@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.15.tgz#d34592bfe288a32e741aa0663dbc4829fcd55160"
+ integrity sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5":
version "7.22.5"
@@ -293,14 +355,6 @@
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703"
integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==
-"@babel/plugin-proposal-unicode-property-regex@^7.4.4":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e"
- integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==
- dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
-
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
@@ -371,6 +425,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
+"@babel/plugin-syntax-jsx@^7.7.2":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918"
+ integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
@@ -449,14 +510,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
-"@babel/plugin-transform-async-generator-functions@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz#7336356d23380eda9a56314974f053a020dab0c3"
- integrity sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==
+"@babel/plugin-transform-async-generator-functions@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.10.tgz#45946cd17f915b10e65c29b8ed18a0a50fc648c8"
+ integrity sha512-eueE8lvKVzq5wIObKK/7dvoeKJ+xc6TvRn6aysIjS6pSCeLy7S/eVi7pEQknZqyqvzaNKdDtem8nUNTBgDVR2g==
dependencies:
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-plugin-utils" "^7.22.5"
- "@babel/helper-remap-async-to-generator" "^7.22.5"
+ "@babel/helper-remap-async-to-generator" "^7.22.9"
"@babel/plugin-syntax-async-generators" "^7.8.4"
"@babel/plugin-transform-async-to-generator@^7.22.5":
@@ -475,10 +536,10 @@
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
-"@babel/plugin-transform-block-scoping@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz#8bfc793b3a4b2742c0983fadc1480d843ecea31b"
- integrity sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==
+"@babel/plugin-transform-block-scoping@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz#88a1dccc3383899eb5e660534a76a22ecee64faa"
+ integrity sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
@@ -499,19 +560,19 @@
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/plugin-syntax-class-static-block" "^7.14.5"
-"@babel/plugin-transform-classes@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz#635d4e98da741fad814984639f4c0149eb0135e1"
- integrity sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==
+"@babel/plugin-transform-classes@^7.22.6":
+ version "7.22.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363"
+ integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==
dependencies:
"@babel/helper-annotate-as-pure" "^7.22.5"
- "@babel/helper-compilation-targets" "^7.22.5"
+ "@babel/helper-compilation-targets" "^7.22.6"
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-function-name" "^7.22.5"
"@babel/helper-optimise-call-expression" "^7.22.5"
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/helper-replace-supers" "^7.22.5"
- "@babel/helper-split-export-declaration" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
globals "^11.1.0"
"@babel/plugin-transform-computed-properties@^7.22.5":
@@ -522,14 +583,14 @@
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/template" "^7.22.5"
-"@babel/plugin-transform-destructuring@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz#d3aca7438f6c26c78cdd0b0ba920a336001b27cc"
- integrity sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==
+"@babel/plugin-transform-destructuring@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz#38e2273814a58c810b6c34ea293be4973c4eb5e2"
+ integrity sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
-"@babel/plugin-transform-dotall-regex@^7.22.5", "@babel/plugin-transform-dotall-regex@^7.4.4":
+"@babel/plugin-transform-dotall-regex@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165"
integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==
@@ -707,10 +768,10 @@
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-"@babel/plugin-transform-optional-chaining@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz#1003762b9c14295501beb41be72426736bedd1e0"
- integrity sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==
+"@babel/plugin-transform-optional-chaining@^7.22.10", "@babel/plugin-transform-optional-chaining@^7.22.5":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.10.tgz#076d28a7e074392e840d4ae587d83445bac0372a"
+ integrity sha512-MMkQqZAZ+MGj+jGTG3OTuhKeBpNcO+0oCEbrGNEaOmiEn+1MzRyQlYsruGiU8RTK3zV6XwrVJTmwiDOyYK6J9g==
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
@@ -748,13 +809,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
-"@babel/plugin-transform-regenerator@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz#cd8a68b228a5f75fa01420e8cc2fc400f0fc32aa"
- integrity sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==
+"@babel/plugin-transform-regenerator@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca"
+ integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
- regenerator-transform "^0.15.1"
+ regenerator-transform "^0.15.2"
"@babel/plugin-transform-reserved-words@^7.22.5":
version "7.22.5"
@@ -799,10 +860,10 @@
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
-"@babel/plugin-transform-unicode-escapes@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz#ce0c248522b1cb22c7c992d88301a5ead70e806c"
- integrity sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==
+"@babel/plugin-transform-unicode-escapes@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9"
+ integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==
dependencies:
"@babel/helper-plugin-utils" "^7.22.5"
@@ -830,13 +891,13 @@
"@babel/helper-create-regexp-features-plugin" "^7.22.5"
"@babel/helper-plugin-utils" "^7.22.5"
-"@babel/preset-env@^7.15.6":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.5.tgz#3da66078b181f3d62512c51cf7014392c511504e"
- integrity sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==
+"@babel/preset-env@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.10.tgz#3263b9fe2c8823d191d28e61eac60a79f9ce8a0f"
+ integrity sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==
dependencies:
- "@babel/compat-data" "^7.22.5"
- "@babel/helper-compilation-targets" "^7.22.5"
+ "@babel/compat-data" "^7.22.9"
+ "@babel/helper-compilation-targets" "^7.22.10"
"@babel/helper-plugin-utils" "^7.22.5"
"@babel/helper-validator-option" "^7.22.5"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5"
@@ -861,15 +922,15 @@
"@babel/plugin-syntax-top-level-await" "^7.14.5"
"@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
"@babel/plugin-transform-arrow-functions" "^7.22.5"
- "@babel/plugin-transform-async-generator-functions" "^7.22.5"
+ "@babel/plugin-transform-async-generator-functions" "^7.22.10"
"@babel/plugin-transform-async-to-generator" "^7.22.5"
"@babel/plugin-transform-block-scoped-functions" "^7.22.5"
- "@babel/plugin-transform-block-scoping" "^7.22.5"
+ "@babel/plugin-transform-block-scoping" "^7.22.10"
"@babel/plugin-transform-class-properties" "^7.22.5"
"@babel/plugin-transform-class-static-block" "^7.22.5"
- "@babel/plugin-transform-classes" "^7.22.5"
+ "@babel/plugin-transform-classes" "^7.22.6"
"@babel/plugin-transform-computed-properties" "^7.22.5"
- "@babel/plugin-transform-destructuring" "^7.22.5"
+ "@babel/plugin-transform-destructuring" "^7.22.10"
"@babel/plugin-transform-dotall-regex" "^7.22.5"
"@babel/plugin-transform-duplicate-keys" "^7.22.5"
"@babel/plugin-transform-dynamic-import" "^7.22.5"
@@ -892,38 +953,36 @@
"@babel/plugin-transform-object-rest-spread" "^7.22.5"
"@babel/plugin-transform-object-super" "^7.22.5"
"@babel/plugin-transform-optional-catch-binding" "^7.22.5"
- "@babel/plugin-transform-optional-chaining" "^7.22.5"
+ "@babel/plugin-transform-optional-chaining" "^7.22.10"
"@babel/plugin-transform-parameters" "^7.22.5"
"@babel/plugin-transform-private-methods" "^7.22.5"
"@babel/plugin-transform-private-property-in-object" "^7.22.5"
"@babel/plugin-transform-property-literals" "^7.22.5"
- "@babel/plugin-transform-regenerator" "^7.22.5"
+ "@babel/plugin-transform-regenerator" "^7.22.10"
"@babel/plugin-transform-reserved-words" "^7.22.5"
"@babel/plugin-transform-shorthand-properties" "^7.22.5"
"@babel/plugin-transform-spread" "^7.22.5"
"@babel/plugin-transform-sticky-regex" "^7.22.5"
"@babel/plugin-transform-template-literals" "^7.22.5"
"@babel/plugin-transform-typeof-symbol" "^7.22.5"
- "@babel/plugin-transform-unicode-escapes" "^7.22.5"
+ "@babel/plugin-transform-unicode-escapes" "^7.22.10"
"@babel/plugin-transform-unicode-property-regex" "^7.22.5"
"@babel/plugin-transform-unicode-regex" "^7.22.5"
"@babel/plugin-transform-unicode-sets-regex" "^7.22.5"
- "@babel/preset-modules" "^0.1.5"
- "@babel/types" "^7.22.5"
- babel-plugin-polyfill-corejs2 "^0.4.3"
- babel-plugin-polyfill-corejs3 "^0.8.1"
- babel-plugin-polyfill-regenerator "^0.5.0"
- core-js-compat "^3.30.2"
- semver "^6.3.0"
-
-"@babel/preset-modules@^0.1.5":
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9"
- integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==
+ "@babel/preset-modules" "0.1.6-no-external-plugins"
+ "@babel/types" "^7.22.10"
+ babel-plugin-polyfill-corejs2 "^0.4.5"
+ babel-plugin-polyfill-corejs3 "^0.8.3"
+ babel-plugin-polyfill-regenerator "^0.5.2"
+ core-js-compat "^3.31.0"
+ semver "^6.3.1"
+
+"@babel/preset-modules@0.1.6-no-external-plugins":
+ version "0.1.6-no-external-plugins"
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a"
+ integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
- "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
- "@babel/plugin-transform-dotall-regex" "^7.4.4"
"@babel/types" "^7.4.4"
esutils "^2.0.2"
@@ -932,12 +991,19 @@
resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
+"@babel/runtime@^7.15.4":
+ version "7.22.11"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.11.tgz#7a9ba3bbe406ad6f9e8dd4da2ece453eb23a77a4"
+ integrity sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
"@babel/runtime@^7.8.4":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec"
- integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682"
+ integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==
dependencies:
- regenerator-runtime "^0.13.11"
+ regenerator-runtime "^0.14.0"
"@babel/template@^7.22.5", "@babel/template@^7.3.3":
version "7.22.5"
@@ -948,40 +1014,74 @@
"@babel/parser" "^7.22.5"
"@babel/types" "^7.22.5"
-"@babel/traverse@^7.22.5", "@babel/traverse@^7.7.2":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.5.tgz#44bd276690db6f4940fdb84e1cb4abd2f729ccd1"
- integrity sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==
+"@babel/traverse@^7.22.10":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.10.tgz#20252acb240e746d27c2e82b4484f199cf8141aa"
+ integrity sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==
dependencies:
- "@babel/code-frame" "^7.22.5"
- "@babel/generator" "^7.22.5"
+ "@babel/code-frame" "^7.22.10"
+ "@babel/generator" "^7.22.10"
"@babel/helper-environment-visitor" "^7.22.5"
"@babel/helper-function-name" "^7.22.5"
"@babel/helper-hoist-variables" "^7.22.5"
- "@babel/helper-split-export-declaration" "^7.22.5"
- "@babel/parser" "^7.22.5"
- "@babel/types" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/parser" "^7.22.10"
+ "@babel/types" "^7.22.10"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/traverse@^7.22.11":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.15.tgz#75be4d2d6e216e880e93017f4e2389aeb77ef2d9"
+ integrity sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==
+ dependencies:
+ "@babel/code-frame" "^7.22.13"
+ "@babel/generator" "^7.22.15"
+ "@babel/helper-environment-visitor" "^7.22.5"
+ "@babel/helper-function-name" "^7.22.5"
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/parser" "^7.22.15"
+ "@babel/types" "^7.22.15"
debug "^4.1.0"
globals "^11.1.0"
"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe"
- integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03"
+ integrity sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.22.5"
+ "@babel/helper-validator-identifier" "^7.22.5"
+ to-fast-properties "^2.0.0"
+
+"@babel/types@^7.22.10", "@babel/types@^7.22.11":
+ version "7.22.11"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.11.tgz#0e65a6a1d4d9cbaa892b2213f6159485fe632ea2"
+ integrity sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==
dependencies:
"@babel/helper-string-parser" "^7.22.5"
"@babel/helper-validator-identifier" "^7.22.5"
to-fast-properties "^2.0.0"
+"@babel/types@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.15.tgz#266cb21d2c5fd0b3931e7a91b6dd72d2f617d282"
+ integrity sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==
+ dependencies:
+ "@babel/helper-string-parser" "^7.22.5"
+ "@babel/helper-validator-identifier" "^7.22.15"
+ to-fast-properties "^2.0.0"
+
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@commitlint/config-validator@^17.4.4":
- version "17.4.4"
- resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-17.4.4.tgz#d0742705719559a101d2ee49c0c514044af6d64d"
- integrity sha512-bi0+TstqMiqoBAQDvdEP4AFh0GaKyLFlPPEObgI29utoKEYoPQTvF0EYqIwYYLEoJYhj5GfMIhPHJkTJhagfeg==
+"@commitlint/config-validator@^17.6.7":
+ version "17.6.7"
+ resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-17.6.7.tgz#c664d42a1ecf5040a3bb0843845150f55734df41"
+ integrity sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==
dependencies:
"@commitlint/types" "^17.4.4"
ajv "^8.11.0"
@@ -992,15 +1092,15 @@
integrity sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==
"@commitlint/load@>6.1.1":
- version "17.5.0"
- resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.5.0.tgz#be45dbbb50aaf5eb7e8e940e1e0d6171d1426bab"
- integrity sha512-l+4W8Sx4CD5rYFsrhHH8HP01/8jEP7kKf33Xlx2Uk2out/UKoKPYMOIRcDH5ppT8UXLMV+x6Wm5osdRKKgaD1Q==
+ version "17.7.1"
+ resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.7.1.tgz#0723b11723a20043a304a74960602dead89b5cdd"
+ integrity sha512-S/QSOjE1ztdogYj61p6n3UbkUvweR17FQ0zDbNtoTLc+Hz7vvfS7ehoTMQ27hPSjVBpp7SzEcOQu081RLjKHJQ==
dependencies:
- "@commitlint/config-validator" "^17.4.4"
+ "@commitlint/config-validator" "^17.6.7"
"@commitlint/execute-rule" "^17.4.0"
- "@commitlint/resolve-extends" "^17.4.4"
+ "@commitlint/resolve-extends" "^17.6.7"
"@commitlint/types" "^17.4.4"
- "@types/node" "*"
+ "@types/node" "20.4.7"
chalk "^4.1.0"
cosmiconfig "^8.0.0"
cosmiconfig-typescript-loader "^4.0.0"
@@ -1011,12 +1111,12 @@
ts-node "^10.8.1"
typescript "^4.6.4 || ^5.0.0"
-"@commitlint/resolve-extends@^17.4.4":
- version "17.4.4"
- resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-17.4.4.tgz#8f931467dea8c43b9fe38373e303f7c220de6fdc"
- integrity sha512-znXr1S0Rr8adInptHw0JeLgumS11lWbk5xAWFVno+HUFVN45875kUtqjrI6AppmD3JI+4s0uZlqqlkepjJd99A==
+"@commitlint/resolve-extends@^17.6.7":
+ version "17.6.7"
+ resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz#9c53a4601c96ab2dd20b90fb35c988639307735d"
+ integrity sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==
dependencies:
- "@commitlint/config-validator" "^17.4.4"
+ "@commitlint/config-validator" "^17.6.7"
"@commitlint/types" "^17.4.4"
import-fresh "^3.0.0"
lodash.mergewith "^4.6.2"
@@ -1037,21 +1137,38 @@
dependencies:
"@jridgewell/trace-mapping" "0.3.9"
-"@eslint/eslintrc@^0.4.3":
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
- integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
+"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
+ integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
+ dependencies:
+ eslint-visitor-keys "^3.3.0"
+
+"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.0.tgz#11195513186f68d42fbf449f9a7136b2c0c92005"
+ integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==
+
+"@eslint/eslintrc@^2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396"
+ integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==
dependencies:
ajv "^6.12.4"
- debug "^4.1.1"
- espree "^7.3.0"
- globals "^13.9.0"
- ignore "^4.0.6"
+ debug "^4.3.2"
+ espree "^9.6.0"
+ globals "^13.19.0"
+ ignore "^5.2.0"
import-fresh "^3.2.1"
- js-yaml "^3.13.1"
- minimatch "^3.0.4"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
strip-json-comments "^3.1.1"
+"@eslint/js@8.48.0":
+ version "8.48.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb"
+ integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==
+
"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0":
version "5.7.0"
resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449"
@@ -1394,28 +1511,21 @@
"@ethersproject/properties" "^5.7.0"
"@ethersproject/strings" "^5.7.0"
-"@hapi/hoek@^9.0.0":
- version "9.3.0"
- resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb"
- integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==
-
-"@hapi/topo@^5.0.0":
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012"
- integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==
- dependencies:
- "@hapi/hoek" "^9.0.0"
-
-"@humanwhocodes/config-array@^0.5.0":
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
- integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
+"@humanwhocodes/config-array@^0.11.10":
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2"
+ integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==
dependencies:
- "@humanwhocodes/object-schema" "^1.2.0"
+ "@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1"
- minimatch "^3.0.4"
+ minimatch "^3.0.5"
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-"@humanwhocodes/object-schema@^1.2.0":
+"@humanwhocodes/object-schema@^1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
@@ -1441,184 +1551,210 @@
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
-"@jest/console@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba"
- integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==
+"@jest/console@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.6.4.tgz#a7e2d84516301f986bba0dd55af9d5fe37f46527"
+ integrity sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==
dependencies:
- "@jest/types" "^27.5.1"
+ "@jest/types" "^29.6.3"
"@types/node" "*"
chalk "^4.0.0"
- jest-message-util "^27.5.1"
- jest-util "^27.5.1"
+ jest-message-util "^29.6.3"
+ jest-util "^29.6.3"
slash "^3.0.0"
-"@jest/core@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626"
- integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==
+"@jest/core@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.6.4.tgz#265ebee05ec1ff3567757e7a327155c8d6bdb126"
+ integrity sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==
dependencies:
- "@jest/console" "^27.5.1"
- "@jest/reporters" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
+ "@jest/console" "^29.6.4"
+ "@jest/reporters" "^29.6.4"
+ "@jest/test-result" "^29.6.4"
+ "@jest/transform" "^29.6.4"
+ "@jest/types" "^29.6.3"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
- emittery "^0.8.1"
+ ci-info "^3.2.0"
exit "^0.1.2"
graceful-fs "^4.2.9"
- jest-changed-files "^27.5.1"
- jest-config "^27.5.1"
- jest-haste-map "^27.5.1"
- jest-message-util "^27.5.1"
- jest-regex-util "^27.5.1"
- jest-resolve "^27.5.1"
- jest-resolve-dependencies "^27.5.1"
- jest-runner "^27.5.1"
- jest-runtime "^27.5.1"
- jest-snapshot "^27.5.1"
- jest-util "^27.5.1"
- jest-validate "^27.5.1"
- jest-watcher "^27.5.1"
+ jest-changed-files "^29.6.3"
+ jest-config "^29.6.4"
+ jest-haste-map "^29.6.4"
+ jest-message-util "^29.6.3"
+ jest-regex-util "^29.6.3"
+ jest-resolve "^29.6.4"
+ jest-resolve-dependencies "^29.6.4"
+ jest-runner "^29.6.4"
+ jest-runtime "^29.6.4"
+ jest-snapshot "^29.6.4"
+ jest-util "^29.6.3"
+ jest-validate "^29.6.3"
+ jest-watcher "^29.6.4"
micromatch "^4.0.4"
- rimraf "^3.0.0"
+ pretty-format "^29.6.3"
slash "^3.0.0"
strip-ansi "^6.0.0"
-"@jest/environment@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74"
- integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==
+"@jest/environment@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.6.4.tgz#78ec2c9f8c8829a37616934ff4fea0c028c79f4f"
+ integrity sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==
dependencies:
- "@jest/fake-timers" "^27.5.1"
- "@jest/types" "^27.5.1"
+ "@jest/fake-timers" "^29.6.4"
+ "@jest/types" "^29.6.3"
"@types/node" "*"
- jest-mock "^27.5.1"
+ jest-mock "^29.6.3"
+
+"@jest/expect-utils@^29.6.2":
+ version "29.6.2"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.2.tgz#1b97f290d0185d264dd9fdec7567a14a38a90534"
+ integrity sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==
+ dependencies:
+ jest-get-type "^29.4.3"
+
+"@jest/expect-utils@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.4.tgz#17c7dfe6cec106441f218b0aff4b295f98346679"
+ integrity sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==
+ dependencies:
+ jest-get-type "^29.6.3"
+
+"@jest/expect@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.6.4.tgz#1d6ae17dc68d906776198389427ab7ce6179dba6"
+ integrity sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==
+ dependencies:
+ expect "^29.6.4"
+ jest-snapshot "^29.6.4"
-"@jest/fake-timers@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74"
- integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==
+"@jest/fake-timers@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.6.4.tgz#45a27f093c43d5d989362a3e7a8c70c83188b4f6"
+ integrity sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==
dependencies:
- "@jest/types" "^27.5.1"
- "@sinonjs/fake-timers" "^8.0.1"
+ "@jest/types" "^29.6.3"
+ "@sinonjs/fake-timers" "^10.0.2"
"@types/node" "*"
- jest-message-util "^27.5.1"
- jest-mock "^27.5.1"
- jest-util "^27.5.1"
+ jest-message-util "^29.6.3"
+ jest-mock "^29.6.3"
+ jest-util "^29.6.3"
-"@jest/globals@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b"
- integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==
+"@jest/globals@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.6.4.tgz#4f04f58731b062b44ef23036b79bdb31f40c7f63"
+ integrity sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==
dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/types" "^27.5.1"
- expect "^27.5.1"
+ "@jest/environment" "^29.6.4"
+ "@jest/expect" "^29.6.4"
+ "@jest/types" "^29.6.3"
+ jest-mock "^29.6.3"
-"@jest/reporters@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04"
- integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==
+"@jest/reporters@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.6.4.tgz#9d6350c8a2761ece91f7946e97ab0dabc06deab7"
+ integrity sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
- "@jest/console" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
+ "@jest/console" "^29.6.4"
+ "@jest/test-result" "^29.6.4"
+ "@jest/transform" "^29.6.4"
+ "@jest/types" "^29.6.3"
+ "@jridgewell/trace-mapping" "^0.3.18"
"@types/node" "*"
chalk "^4.0.0"
collect-v8-coverage "^1.0.0"
exit "^0.1.2"
- glob "^7.1.2"
+ glob "^7.1.3"
graceful-fs "^4.2.9"
istanbul-lib-coverage "^3.0.0"
- istanbul-lib-instrument "^5.1.0"
+ istanbul-lib-instrument "^6.0.0"
istanbul-lib-report "^3.0.0"
istanbul-lib-source-maps "^4.0.0"
istanbul-reports "^3.1.3"
- jest-haste-map "^27.5.1"
- jest-resolve "^27.5.1"
- jest-util "^27.5.1"
- jest-worker "^27.5.1"
+ jest-message-util "^29.6.3"
+ jest-util "^29.6.3"
+ jest-worker "^29.6.4"
slash "^3.0.0"
- source-map "^0.6.0"
string-length "^4.0.1"
- terminal-link "^2.0.0"
- v8-to-istanbul "^8.1.0"
+ strip-ansi "^6.0.0"
+ v8-to-istanbul "^9.0.1"
+
+"@jest/schemas@^29.6.0":
+ version "29.6.0"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.0.tgz#0f4cb2c8e3dca80c135507ba5635a4fd755b0040"
+ integrity sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==
+ dependencies:
+ "@sinclair/typebox" "^0.27.8"
+
+"@jest/schemas@^29.6.3":
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
+ integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
+ dependencies:
+ "@sinclair/typebox" "^0.27.8"
-"@jest/source-map@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf"
- integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==
+"@jest/source-map@^29.6.3":
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4"
+ integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==
dependencies:
+ "@jridgewell/trace-mapping" "^0.3.18"
callsites "^3.0.0"
graceful-fs "^4.2.9"
- source-map "^0.6.0"
-"@jest/test-result@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb"
- integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==
+"@jest/test-result@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.6.4.tgz#adf5c79f6e1fb7405ad13d67d9e2b6ff54b54c6b"
+ integrity sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==
dependencies:
- "@jest/console" "^27.5.1"
- "@jest/types" "^27.5.1"
+ "@jest/console" "^29.6.4"
+ "@jest/types" "^29.6.3"
"@types/istanbul-lib-coverage" "^2.0.0"
collect-v8-coverage "^1.0.0"
-"@jest/test-sequencer@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b"
- integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==
+"@jest/test-sequencer@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz#86aef66aaa22b181307ed06c26c82802fb836d7b"
+ integrity sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==
dependencies:
- "@jest/test-result" "^27.5.1"
+ "@jest/test-result" "^29.6.4"
graceful-fs "^4.2.9"
- jest-haste-map "^27.5.1"
- jest-runtime "^27.5.1"
+ jest-haste-map "^29.6.4"
+ slash "^3.0.0"
-"@jest/transform@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409"
- integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==
+"@jest/transform@^29.6.4":
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.6.4.tgz#a6bc799ef597c5d85b2e65a11fd96b6b239bab5a"
+ integrity sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==
dependencies:
- "@babel/core" "^7.1.0"
- "@jest/types" "^27.5.1"
+ "@babel/core" "^7.11.6"
+ "@jest/types" "^29.6.3"
+ "@jridgewell/trace-mapping" "^0.3.18"
babel-plugin-istanbul "^6.1.1"
chalk "^4.0.0"
- convert-source-map "^1.4.0"
- fast-json-stable-stringify "^2.0.0"
+ convert-source-map "^2.0.0"
+ fast-json-stable-stringify "^2.1.0"
graceful-fs "^4.2.9"
- jest-haste-map "^27.5.1"
- jest-regex-util "^27.5.1"
- jest-util "^27.5.1"
+ jest-haste-map "^29.6.4"
+ jest-regex-util "^29.6.3"
+ jest-util "^29.6.3"
micromatch "^4.0.4"
pirates "^4.0.4"
slash "^3.0.0"
- source-map "^0.6.1"
- write-file-atomic "^3.0.0"
-
-"@jest/types@^26.6.2":
- version "26.6.2"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e"
- integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==
- dependencies:
- "@types/istanbul-lib-coverage" "^2.0.0"
- "@types/istanbul-reports" "^3.0.0"
- "@types/node" "*"
- "@types/yargs" "^15.0.0"
- chalk "^4.0.0"
+ write-file-atomic "^4.0.2"
-"@jest/types@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80"
- integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==
+"@jest/types@^29.6.1", "@jest/types@^29.6.3":
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59"
+ integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==
dependencies:
+ "@jest/schemas" "^29.6.3"
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^3.0.0"
"@types/node" "*"
- "@types/yargs" "^16.0.0"
+ "@types/yargs" "^17.0.8"
chalk "^4.0.0"
"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
@@ -1630,12 +1766,7 @@
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.9"
-"@jridgewell/resolve-uri@3.1.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
- integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
-
-"@jridgewell/resolve-uri@^3.0.3":
+"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
@@ -1645,12 +1776,7 @@
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
-"@jridgewell/sourcemap-codec@1.4.14":
- version "1.4.14"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
- integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
-
-"@jridgewell/sourcemap-codec@^1.4.10":
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
version "1.4.15"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
@@ -1663,13 +1789,13 @@
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
-"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":
- version "0.3.18"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6"
- integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==
+"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.19"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811"
+ integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==
dependencies:
- "@jridgewell/resolve-uri" "3.1.0"
- "@jridgewell/sourcemap-codec" "1.4.14"
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
@@ -1684,7 +1810,7 @@
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-"@nodelib/fs.walk@^1.2.3":
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
version "1.2.8"
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
@@ -1692,41 +1818,29 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@nucypher/nucypher-core@^0.10.0":
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/@nucypher/nucypher-core/-/nucypher-core-0.10.0.tgz#95ba3805fa0c01510e9e012d65b735e97bd6ff08"
- integrity sha512-7ZbFIZbAIO8UU++0tGhZEP8z1m4Vj5b/4+c9opBXXK88GZ7DFjdNWeTJWOCwLK3fMSpQJcUmkkqfsUd+PfGa9A==
-
-"@sideway/address@^4.1.3":
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0"
- integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==
- dependencies:
- "@hapi/hoek" "^9.0.0"
-
-"@sideway/formula@^3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f"
- integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==
+"@nucypher/nucypher-core@^0.13.0":
+ version "0.13.0"
+ resolved "https://registry.yarnpkg.com/@nucypher/nucypher-core/-/nucypher-core-0.13.0.tgz#071263931d4e9604b428ea738ebe8ee5e1f302f3"
+ integrity sha512-HfEbrQvngOHIn0bMAdqPIF7WzkLdb5+sMhmX7bQl2SINABQ6FGGN8G+Arb+pbkYgru5qeQ+RTTbCBwBNaxFKEg==
-"@sideway/pinpoint@^2.0.0":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
- integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
+"@sinclair/typebox@^0.27.8":
+ version "0.27.8"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
+ integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
-"@sinonjs/commons@^1.7.0":
- version "1.8.6"
- resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9"
- integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==
+"@sinonjs/commons@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72"
+ integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==
dependencies:
type-detect "4.0.8"
-"@sinonjs/fake-timers@^8.0.1":
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7"
- integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==
+"@sinonjs/fake-timers@^10.0.2":
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66"
+ integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==
dependencies:
- "@sinonjs/commons" "^1.7.0"
+ "@sinonjs/commons" "^3.0.0"
"@skypack/package-check@^0.2.2":
version "0.2.2"
@@ -1736,21 +1850,11 @@
kleur "^4.1.3"
yargs-parser "^20.2.3"
-"@tokenizer/token@^0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.1.1.tgz#f0d92c12f87079ddfd1b29f614758b9696bc29e3"
- integrity sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==
-
"@tokenizer/token@^0.3.0":
version "0.3.0"
resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==
-"@tootallnate/once@1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
- integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
-
"@tsconfig/node10@^1.0.7":
version "1.0.9"
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
@@ -1771,15 +1875,15 @@
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
-"@typechain/ethers-v5@^9.0.0":
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-9.0.0.tgz#6aa93bea7425c0463bd8a61eea3643540ef851bd"
- integrity sha512-bAanuPl1L2itaUdMvor/QvwnIH+TM/CmG00q17Ilv3ZZMeJ2j8HcarhgJUZ9pBY1teBb85P8cC03dz3mSSx+tQ==
+"@typechain/ethers-v5@^11.1.1":
+ version "11.1.1"
+ resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.1.tgz#23a358135a302140cf89a186592464dd6bbf1f98"
+ integrity sha512-D9WyUrCJ4Z5Gg8T00HWLpuqn1CqSDXlCiUOOpLaWoCbnZrE2jSIOUwR9blBZNo6LE5058e3niVu6xk205Et7tg==
dependencies:
lodash "^4.17.15"
ts-essentials "^7.0.1"
-"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14":
+"@types/babel__core@^7.1.14":
version "7.20.1"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b"
integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==
@@ -1805,7 +1909,7 @@
"@babel/parser" "^7.1.0"
"@babel/types" "^7.0.0"
-"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6":
+"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
version "7.20.1"
resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf"
integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==
@@ -1817,7 +1921,7 @@
resolved "https://registry.yarnpkg.com/@types/deep-equal/-/deep-equal-1.0.1.tgz#71cfabb247c22bcc16d536111f50c0ed12476b03"
integrity sha512-mMUu4nWHLBlHtxXY17Fg6+ucS/MnndyOWyOe7MmwkoMYxvfQU2ajtRaEvqSUv+aVkMqH/C0NCI8UoVfRNQ10yg==
-"@types/graceful-fs@^4.1.2":
+"@types/graceful-fs@^4.1.3":
version "4.1.6"
resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae"
integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==
@@ -1843,15 +1947,15 @@
dependencies:
"@types/istanbul-lib-report" "*"
-"@types/jest@^26.0.24":
- version "26.0.24"
- resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a"
- integrity sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==
+"@types/jest@^29.5.4":
+ version "29.5.4"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.4.tgz#9d0a16edaa009a71e6a71a999acd582514dab566"
+ integrity sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==
dependencies:
- jest-diff "^26.0.0"
- pretty-format "^26.0.0"
+ expect "^29.0.0"
+ pretty-format "^29.0.0"
-"@types/json-schema@^7.0.7":
+"@types/json-schema@^7.0.12":
version "7.0.12"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb"
integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==
@@ -1861,22 +1965,37 @@
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
-"@types/minimist@^1.2.0":
+"@types/lodash@^4.14.175":
+ version "4.14.197"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.197.tgz#e95c5ddcc814ec3e84c891910a01e0c8a378c54b"
+ integrity sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==
+
+"@types/minimist@^1.2.0", "@types/minimist@^1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c"
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
"@types/node@*":
- version "20.3.2"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.2.tgz#fa6a90f2600e052a03c18b8cb3fd83dd4e599898"
- integrity sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==
+ version "20.5.4"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.4.tgz#4666fb40f9974d60c53c4ff554315860ba4feab8"
+ integrity sha512-Y9vbIAoM31djQZrPYjpTLo0XlaSwOIsrlfE3LpulZeRblttsLQRFRlBAppW0LOxyT3ALj2M5vU1ucQQayQH3jA==
+
+"@types/node@20.4.7":
+ version "20.4.7"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.7.tgz#74d323a93f1391a63477b27b9aec56669c98b2ab"
+ integrity sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==
-"@types/normalize-package-data@^2.4.0":
+"@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.1":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
-"@types/prettier@^2.1.1", "@types/prettier@^2.1.5":
+"@types/parse-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
+"@types/prettier@^2.1.1":
version "2.7.3"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f"
integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==
@@ -1901,89 +2020,97 @@
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
-"@types/yargs@^15.0.0":
- version "15.0.15"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.15.tgz#e609a2b1ef9e05d90489c2f5f45bbfb2be092158"
- integrity sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==
+"@types/yargs@^17.0.8":
+ version "17.0.24"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902"
+ integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==
dependencies:
"@types/yargs-parser" "*"
-"@types/yargs@^16.0.0":
- version "16.0.5"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3"
- integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==
- dependencies:
- "@types/yargs-parser" "*"
-
-"@typescript-eslint/eslint-plugin@^4.0.1":
- version "4.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
- integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==
- dependencies:
- "@typescript-eslint/experimental-utils" "4.33.0"
- "@typescript-eslint/scope-manager" "4.33.0"
- debug "^4.3.1"
- functional-red-black-tree "^1.0.1"
- ignore "^5.1.8"
- regexpp "^3.1.0"
- semver "^7.3.5"
- tsutils "^3.21.0"
-
-"@typescript-eslint/experimental-utils@4.33.0":
- version "4.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
- integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==
- dependencies:
- "@types/json-schema" "^7.0.7"
- "@typescript-eslint/scope-manager" "4.33.0"
- "@typescript-eslint/types" "4.33.0"
- "@typescript-eslint/typescript-estree" "4.33.0"
- eslint-scope "^5.1.1"
- eslint-utils "^3.0.0"
-
-"@typescript-eslint/parser@^4.0.1":
- version "4.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899"
- integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==
- dependencies:
- "@typescript-eslint/scope-manager" "4.33.0"
- "@typescript-eslint/types" "4.33.0"
- "@typescript-eslint/typescript-estree" "4.33.0"
- debug "^4.3.1"
-
-"@typescript-eslint/scope-manager@4.33.0":
- version "4.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
- integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==
- dependencies:
- "@typescript-eslint/types" "4.33.0"
- "@typescript-eslint/visitor-keys" "4.33.0"
-
-"@typescript-eslint/types@4.33.0":
- version "4.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
- integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
-
-"@typescript-eslint/typescript-estree@4.33.0":
- version "4.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609"
- integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==
- dependencies:
- "@typescript-eslint/types" "4.33.0"
- "@typescript-eslint/visitor-keys" "4.33.0"
- debug "^4.3.1"
- globby "^11.0.3"
- is-glob "^4.0.1"
- semver "^7.3.5"
- tsutils "^3.21.0"
-
-"@typescript-eslint/visitor-keys@4.33.0":
- version "4.33.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd"
- integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==
- dependencies:
- "@typescript-eslint/types" "4.33.0"
- eslint-visitor-keys "^2.0.0"
+"@typescript-eslint/eslint-plugin@^6.4.1":
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz#bc0c6f000134b53c304ad0bec4ee4753cd3e89d2"
+ integrity sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==
+ dependencies:
+ "@eslint-community/regexpp" "^4.5.1"
+ "@typescript-eslint/scope-manager" "6.4.1"
+ "@typescript-eslint/type-utils" "6.4.1"
+ "@typescript-eslint/utils" "6.4.1"
+ "@typescript-eslint/visitor-keys" "6.4.1"
+ debug "^4.3.4"
+ graphemer "^1.4.0"
+ ignore "^5.2.4"
+ natural-compare "^1.4.0"
+ semver "^7.5.4"
+ ts-api-utils "^1.0.1"
+
+"@typescript-eslint/parser@^6.4.1":
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.4.1.tgz#85ad550bf4ac4aa227504f1becb828f8e46c44e3"
+ integrity sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==
+ dependencies:
+ "@typescript-eslint/scope-manager" "6.4.1"
+ "@typescript-eslint/types" "6.4.1"
+ "@typescript-eslint/typescript-estree" "6.4.1"
+ "@typescript-eslint/visitor-keys" "6.4.1"
+ debug "^4.3.4"
+
+"@typescript-eslint/scope-manager@6.4.1":
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz#4b073a30be2dbe603e44e9ae0cff7e1d3ed19278"
+ integrity sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==
+ dependencies:
+ "@typescript-eslint/types" "6.4.1"
+ "@typescript-eslint/visitor-keys" "6.4.1"
+
+"@typescript-eslint/type-utils@6.4.1":
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz#fa21cb13016c8d6f352fe9b2d6c9ab6edc2d1857"
+ integrity sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "6.4.1"
+ "@typescript-eslint/utils" "6.4.1"
+ debug "^4.3.4"
+ ts-api-utils "^1.0.1"
+
+"@typescript-eslint/types@6.4.1":
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.4.1.tgz#b2c61159f46dda210fed9f117f5d027f65bb5c3b"
+ integrity sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==
+
+"@typescript-eslint/typescript-estree@6.4.1":
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz#91ff88101c710adb0f70a317f2f65efa9441da45"
+ integrity sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==
+ dependencies:
+ "@typescript-eslint/types" "6.4.1"
+ "@typescript-eslint/visitor-keys" "6.4.1"
+ debug "^4.3.4"
+ globby "^11.1.0"
+ is-glob "^4.0.3"
+ semver "^7.5.4"
+ ts-api-utils "^1.0.1"
+
+"@typescript-eslint/utils@6.4.1":
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.4.1.tgz#81bf62ff0c3119a26c19fab683582e29450717bc"
+ integrity sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.4.0"
+ "@types/json-schema" "^7.0.12"
+ "@types/semver" "^7.5.0"
+ "@typescript-eslint/scope-manager" "6.4.1"
+ "@typescript-eslint/types" "6.4.1"
+ "@typescript-eslint/typescript-estree" "6.4.1"
+ semver "^7.5.4"
+
+"@typescript-eslint/visitor-keys@6.4.1":
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz#e3ccf7b8d42e625946ac5094ed92a405fb4115e0"
+ integrity sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==
+ dependencies:
+ "@typescript-eslint/types" "6.4.1"
+ eslint-visitor-keys "^3.4.1"
JSONStream@^1.0.4:
version "1.3.5"
@@ -1993,43 +2120,20 @@ JSONStream@^1.0.4:
jsonparse "^1.2.0"
through ">=2.2.7 <3"
-abab@^2.0.3, abab@^2.0.5:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
- integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
-
-acorn-globals@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
- integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
- dependencies:
- acorn "^7.1.1"
- acorn-walk "^7.1.1"
-
-acorn-jsx@^5.3.1:
+acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-acorn-walk@^7.1.1:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
- integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-
acorn-walk@^8.1.1:
version "8.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
-acorn@^7.1.1, acorn@^7.4.0:
- version "7.4.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
- integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-
-acorn@^8.2.4, acorn@^8.4.1:
- version "8.9.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59"
- integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==
+acorn@^8.4.1, acorn@^8.9.0:
+ version "8.10.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
+ integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
add-stream@^1.0.0:
version "1.0.0"
@@ -2041,14 +2145,7 @@ aes-js@3.0.0:
resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d"
integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==
-agent-base@6:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
- integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
- dependencies:
- debug "4"
-
-ajv@^6.10.0, ajv@^6.12.4:
+ajv@^6.12.4:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -2058,7 +2155,7 @@ ajv@^6.10.0, ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ajv@^8.0.1, ajv@^8.11.0:
+ajv@^8.11.0:
version "8.12.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
@@ -2068,11 +2165,6 @@ ajv@^8.0.1, ajv@^8.11.0:
require-from-string "^2.0.2"
uri-js "^4.2.2"
-ansi-colors@^4.1.1:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
- integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
-
ansi-escapes@^4.2.1:
version "4.3.2"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
@@ -2080,11 +2172,16 @@ ansi-escapes@^4.2.1:
dependencies:
type-fest "^0.21.3"
-ansi-regex@^5.0.0, ansi-regex@^5.0.1:
+ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+ansi-sequence-parser@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#e0aa1cdcbc8f8bb0b5bca625aac41f5f056973cf"
+ integrity sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==
+
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -2180,6 +2277,17 @@ array-uniq@^1.0.1:
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==
+array.prototype.findlastindex@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b"
+ integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+ es-shim-unscopables "^1.0.0"
+ get-intrinsic "^1.1.3"
+
array.prototype.flat@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2"
@@ -2200,22 +2308,27 @@ array.prototype.flatmap@^1.3.1:
es-abstract "^1.20.4"
es-shim-unscopables "^1.0.0"
+arraybuffer.prototype.slice@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb"
+ integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==
+ dependencies:
+ array-buffer-byte-length "^1.0.0"
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ get-intrinsic "^1.2.1"
+ is-array-buffer "^3.0.2"
+ is-shared-array-buffer "^1.0.2"
+
arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==
-astral-regex@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
- integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
-
-async@^2.6.1:
- version "2.6.4"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
- integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
- dependencies:
- lodash "^4.17.14"
+async@^3.2.4:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
+ integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
asynckit@^0.4.0:
version "0.4.0"
@@ -2232,23 +2345,32 @@ available-typed-arrays@^1.0.5:
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
-axios@^0.21.1:
- version "0.21.4"
- resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
- integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
+axios@^0.27.2:
+ version "0.27.2"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
+ integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==
+ dependencies:
+ follow-redirects "^1.14.9"
+ form-data "^4.0.0"
+
+axios@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.0.tgz#f02e4af823e2e46a9768cfc74691fdd0517ea267"
+ integrity sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==
dependencies:
- follow-redirects "^1.14.0"
+ follow-redirects "^1.15.0"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
-babel-jest@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444"
- integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==
+babel-jest@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.4.tgz#98dbc45d1c93319c82a8ab4a478b670655dd2585"
+ integrity sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==
dependencies:
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
+ "@jest/transform" "^29.6.4"
"@types/babel__core" "^7.1.14"
babel-plugin-istanbul "^6.1.1"
- babel-preset-jest "^27.5.1"
+ babel-preset-jest "^29.6.3"
chalk "^4.0.0"
graceful-fs "^4.2.9"
slash "^3.0.0"
@@ -2264,39 +2386,39 @@ babel-plugin-istanbul@^6.1.1:
istanbul-lib-instrument "^5.0.4"
test-exclude "^6.0.0"
-babel-plugin-jest-hoist@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e"
- integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==
+babel-plugin-jest-hoist@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626"
+ integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==
dependencies:
"@babel/template" "^7.3.3"
"@babel/types" "^7.3.3"
- "@types/babel__core" "^7.0.0"
+ "@types/babel__core" "^7.1.14"
"@types/babel__traverse" "^7.0.6"
-babel-plugin-polyfill-corejs2@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz#75044d90ba5043a5fb559ac98496f62f3eb668fd"
- integrity sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==
+babel-plugin-polyfill-corejs2@^0.4.5:
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c"
+ integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==
dependencies:
- "@babel/compat-data" "^7.17.7"
- "@babel/helper-define-polyfill-provider" "^0.4.0"
- semver "^6.1.1"
+ "@babel/compat-data" "^7.22.6"
+ "@babel/helper-define-polyfill-provider" "^0.4.2"
+ semver "^6.3.1"
-babel-plugin-polyfill-corejs3@^0.8.1:
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz#39248263c38191f0d226f928d666e6db1b4b3a8a"
- integrity sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==
+babel-plugin-polyfill-corejs3@^0.8.3:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52"
+ integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.4.0"
- core-js-compat "^3.30.1"
+ "@babel/helper-define-polyfill-provider" "^0.4.2"
+ core-js-compat "^3.31.0"
-babel-plugin-polyfill-regenerator@^0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz#e7344d88d9ef18a3c47ded99362ae4a757609380"
- integrity sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==
+babel-plugin-polyfill-regenerator@^0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326"
+ integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.4.0"
+ "@babel/helper-define-polyfill-provider" "^0.4.2"
babel-preset-current-node-syntax@^1.0.0:
version "1.0.1"
@@ -2316,12 +2438,12 @@ babel-preset-current-node-syntax@^1.0.0:
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-syntax-top-level-await" "^7.8.3"
-babel-preset-jest@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81"
- integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==
+babel-preset-jest@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c"
+ integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==
dependencies:
- babel-plugin-jest-hoist "^27.5.1"
+ babel-plugin-jest-hoist "^29.6.3"
babel-preset-current-node-syntax "^1.0.0"
balanced-match@^1.0.0:
@@ -2339,6 +2461,11 @@ bech32@1.1.4:
resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9"
integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==
+big-integer@^1.6.44:
+ version "1.6.51"
+ resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686"
+ integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==
+
bl@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
@@ -2358,6 +2485,13 @@ bn.js@^5.2.1:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
+bplist-parser@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e"
+ integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==
+ dependencies:
+ big-integer "^1.6.44"
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -2385,19 +2519,21 @@ brorand@^1.1.0:
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
-browser-process-hrtime@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
- integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
+brotli-size@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e"
+ integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==
+ dependencies:
+ duplexer "0.1.1"
-browserslist@^4.21.3, browserslist@^4.21.5:
- version "4.21.9"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635"
- integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==
+browserslist@^4.21.10, browserslist@^4.21.9:
+ version "4.21.10"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0"
+ integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==
dependencies:
- caniuse-lite "^1.0.30001503"
- electron-to-chromium "^1.4.431"
- node-releases "^2.0.12"
+ caniuse-lite "^1.0.30001517"
+ electron-to-chromium "^1.4.477"
+ node-releases "^2.0.13"
update-browserslist-db "^1.0.11"
bs-logger@0.x:
@@ -2427,12 +2563,47 @@ buffer@^5.5.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
-cachedir@2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
- integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==
+bundle-name@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a"
+ integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==
+ dependencies:
+ run-applescript "^5.0.0"
-call-bind@^1.0.0, call-bind@^1.0.2:
+bundlemon-utils@^1.2.0-rc.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/bundlemon-utils/-/bundlemon-utils-1.2.0.tgz#439f00930009293c9ce7c310716626a703560039"
+ integrity sha512-yC8DPG8y6WyBxLYbwRs6yydPtcsWfgGmbUI8+LDPUa+zcMVCGSZOszysJ7SJGlnN7dI7PW+8Ed7RtWpOZI2hOQ==
+ dependencies:
+ bytes "^3.1.0"
+
+bundlemon@^2.0.0-rc.1:
+ version "2.0.0-rc.1"
+ resolved "https://registry.yarnpkg.com/bundlemon/-/bundlemon-2.0.0-rc.1.tgz#b50f3c1dedc161a026126dae872c722294b95d56"
+ integrity sha512-giTZKTaisDjeG1tZoIeECh3ZG/6ITsnZdTWFYi3FiDsGiWbqJEfQuULCiw14qcFP4d7jpHnAzEEeOMeTrS8RWw==
+ dependencies:
+ axios "^0.27.2"
+ brotli-size "^4.0.0"
+ bundlemon-utils "^1.2.0-rc.3"
+ bytes "^3.1.2"
+ chalk "^4.0.0"
+ commander "^9.4.0"
+ cosmiconfig "^7.0.1"
+ gzip-size "^6.0.0"
+ micromatch "^4.0.5"
+ yup "^0.32.11"
+
+bytes@^3.1.0, bytes@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+
+cachedir@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
+ integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==
+
+call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
@@ -2454,7 +2625,17 @@ camelcase-keys@^6.2.2:
map-obj "^4.0.0"
quick-lru "^4.0.1"
-camelcase@^5.0.0, camelcase@^5.3.1:
+camelcase-keys@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-8.0.2.tgz#a7140ba7c797aea32161d4ce5cdbda11d09eb414"
+ integrity sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==
+ dependencies:
+ camelcase "^7.0.0"
+ map-obj "^4.3.0"
+ quick-lru "^6.1.1"
+ type-fest "^2.13.0"
+
+camelcase@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
@@ -2464,12 +2645,17 @@ camelcase@^6.2.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
-caniuse-lite@^1.0.30001503:
- version "1.0.30001508"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001508.tgz#4461bbc895c692a96da399639cc1e146e7302a33"
- integrity sha512-sdQZOJdmt3GJs1UMNpCCCyeuS2IEGLXnHyAo9yIO5JJDjbjoVRij4M1qep6P6gFpptD1PqIYgzM+gwJbOi92mw==
+camelcase@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048"
+ integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==
+
+caniuse-lite@^1.0.30001517:
+ version "1.0.30001522"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001522.tgz#44b87a406c901269adcdb834713e23582dd71856"
+ integrity sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg==
-chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
+chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -2532,6 +2718,15 @@ cliui@^7.0.2:
strip-ansi "^6.0.0"
wrap-ansi "^7.0.0"
+cliui@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.1"
+ wrap-ansi "^7.0.0"
+
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
@@ -2543,9 +2738,9 @@ co@^4.6.0:
integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
collect-v8-coverage@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
- integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9"
+ integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==
color-convert@^1.9.0:
version "1.9.3"
@@ -2598,10 +2793,15 @@ command-line-usage@^6.1.0:
table-layout "^1.0.2"
typical "^5.2.0"
-commander@^2.18.0:
- version "2.20.3"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
- integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-11.0.0.tgz#43e19c25dbedc8256203538e8d7e9346877a6f67"
+ integrity sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==
+
+commander@^9.4.0:
+ version "9.5.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30"
+ integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==
commitizen@^4.0.3:
version "4.3.0"
@@ -2819,17 +3019,22 @@ conventional-recommended-bump@6.1.0:
meow "^8.0.0"
q "^1.5.1"
-convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
+convert-source-map@^1.6.0, convert-source-map@^1.7.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
-core-js-compat@^3.30.1, core-js-compat@^3.30.2:
- version "3.31.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.0.tgz#4030847c0766cc0e803dcdfb30055d7ef2064bf1"
- integrity sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==
+convert-source-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+ integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+
+core-js-compat@^3.31.0:
+ version "3.32.1"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.1.tgz#55f9a7d297c0761a8eb1d31b593e0f5b6ffae964"
+ integrity sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==
dependencies:
- browserslist "^4.21.5"
+ browserslist "^4.21.10"
core-util-is@~1.0.0:
version "1.0.3"
@@ -2837,9 +3042,20 @@ core-util-is@~1.0.0:
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
cosmiconfig-typescript-loader@^4.0.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz#c4259ce474c9df0f32274ed162c0447c951ef073"
- integrity sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz#f3feae459ea090f131df5474ce4b1222912319f9"
+ integrity sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==
+
+cosmiconfig@^7.0.1:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
+ integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
cosmiconfig@^8.0.0:
version "8.2.0"
@@ -2876,22 +3092,12 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
-cssom@^0.4.4:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
- integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
-
-cssom@~0.3.6:
- version "0.3.8"
- resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
- integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
-
-cssstyle@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
- integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+crypto-random-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2"
+ integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==
dependencies:
- cssom "~0.3.6"
+ type-fest "^1.0.1"
cz-conventional-changelog@3.3.0, cz-conventional-changelog@^3.0.1:
version "3.3.0"
@@ -2912,27 +3118,11 @@ dargs@^7.0.0:
resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc"
integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==
-data-urls@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
- integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==
- dependencies:
- abab "^2.0.3"
- whatwg-mimetype "^2.3.0"
- whatwg-url "^8.0.0"
-
dateformat@^3.0.0:
version "3.0.3"
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
-debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
- dependencies:
- ms "2.1.2"
-
debug@^3.2.7:
version "3.2.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
@@ -2940,6 +3130,13 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
+debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
decamelize-keys@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8"
@@ -2948,30 +3145,35 @@ decamelize-keys@^1.1.0:
decamelize "^1.1.0"
map-obj "^1.0.0"
-decamelize@^1.1.0, decamelize@^1.2.0:
+decamelize@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
-decimal.js@^10.2.1:
- version "10.4.3"
- resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
- integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
+decamelize@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e"
+ integrity sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==
-dedent@0.7.0, dedent@^0.7.0:
+dedent@0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
+dedent@^1.0.0:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff"
+ integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==
+
deep-equal@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739"
- integrity sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa"
+ integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==
dependencies:
array-buffer-byte-length "^1.0.0"
call-bind "^1.0.2"
es-get-iterator "^1.1.3"
- get-intrinsic "^1.2.0"
+ get-intrinsic "^1.2.1"
is-arguments "^1.1.1"
is-array-buffer "^3.0.2"
is-date-object "^1.0.5"
@@ -2992,7 +3194,7 @@ deep-extend@~0.6.0:
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-deep-is@^0.1.3, deep-is@~0.1.3:
+deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
@@ -3002,6 +3204,24 @@ deepmerge@^4.2.2:
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
+default-browser-id@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c"
+ integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==
+ dependencies:
+ bplist-parser "^0.2.0"
+ untildify "^4.0.0"
+
+default-browser@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da"
+ integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==
+ dependencies:
+ bundle-name "^3.0.0"
+ default-browser-id "^3.0.0"
+ execa "^7.1.1"
+ titleize "^3.0.0"
+
defaults@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
@@ -3009,6 +3229,11 @@ defaults@^1.0.3:
dependencies:
clone "^1.0.2"
+define-lazy-prop@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f"
+ integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==
+
define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5"
@@ -3037,15 +3262,10 @@ detect-newline@^3.0.0, detect-newline@^3.1.0:
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
-diff-sequences@^26.6.2:
- version "26.6.2"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1"
- integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==
-
-diff-sequences@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
- integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
+diff-sequences@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
+ integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
diff@^4.0.1:
version "4.0.2"
@@ -3073,13 +3293,6 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
-domexception@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
- integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
- dependencies:
- webidl-conversions "^5.0.0"
-
dot-prop@^5.1.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
@@ -3095,10 +3308,20 @@ dotgitignore@^2.1.0:
find-up "^3.0.0"
minimatch "^3.0.4"
-electron-to-chromium@^1.4.431:
- version "1.4.441"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.441.tgz#94dd9c1cbf081d83f032a4f1cd9f787e21fc24ce"
- integrity sha512-LlCgQ8zgYZPymf5H4aE9itwiIWH4YlCiv1HFLmmcBeFYi5E+3eaIFnjHzYtcFQbaKfAW+CqZ9pgxo33DZuoqPg==
+duplexer@0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==
+
+duplexer@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+electron-to-chromium@^1.4.477:
+ version "1.4.500"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.500.tgz#7dd05fdfbe02ed34b9f6099cfe01407b473d5af7"
+ integrity sha512-P38NO8eOuWOKY1sQk5yE0crNtrjgjJj6r3NrbIKtG18KzCHmHE2Bt+aQA7/y0w3uYsHWxDa6icOohzjLJ4vJ4A==
elliptic@6.5.4:
version "6.5.4"
@@ -3113,28 +3336,21 @@ elliptic@6.5.4:
minimalistic-assert "^1.0.1"
minimalistic-crypto-utils "^1.0.1"
-email-addresses@^3.0.1:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/email-addresses/-/email-addresses-3.1.0.tgz#cabf7e085cbdb63008a70319a74e6136188812fb"
- integrity sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==
+email-addresses@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/email-addresses/-/email-addresses-5.0.0.tgz#7ae9e7f58eef7d5e3e2c2c2d3ea49b78dc854fa6"
+ integrity sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==
-emittery@^0.8.1:
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860"
- integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==
+emittery@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad"
+ integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-enquirer@^2.3.5:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
- integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
- dependencies:
- ansi-colors "^4.1.1"
-
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -3142,18 +3358,19 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.19.0, es-abstract@^1.20.4:
- version "1.21.2"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff"
- integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==
+es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2:
+ version "1.22.1"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc"
+ integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==
dependencies:
array-buffer-byte-length "^1.0.0"
+ arraybuffer.prototype.slice "^1.0.1"
available-typed-arrays "^1.0.5"
call-bind "^1.0.2"
es-set-tostringtag "^2.0.1"
es-to-primitive "^1.2.1"
function.prototype.name "^1.1.5"
- get-intrinsic "^1.2.0"
+ get-intrinsic "^1.2.1"
get-symbol-description "^1.0.0"
globalthis "^1.0.3"
gopd "^1.0.1"
@@ -3173,14 +3390,18 @@ es-abstract@^1.19.0, es-abstract@^1.20.4:
object-inspect "^1.12.3"
object-keys "^1.1.1"
object.assign "^4.1.4"
- regexp.prototype.flags "^1.4.3"
+ regexp.prototype.flags "^1.5.0"
+ safe-array-concat "^1.0.0"
safe-regex-test "^1.0.0"
string.prototype.trim "^1.2.7"
string.prototype.trimend "^1.0.6"
string.prototype.trimstart "^1.0.6"
+ typed-array-buffer "^1.0.0"
+ typed-array-byte-length "^1.0.0"
+ typed-array-byte-offset "^1.0.0"
typed-array-length "^1.0.4"
unbox-primitive "^1.0.2"
- which-typed-array "^1.1.9"
+ which-typed-array "^1.1.10"
es-get-iterator@^1.1.3:
version "1.1.3"
@@ -3242,35 +3463,21 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-escodegen@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
- integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==
- dependencies:
- esprima "^4.0.1"
- estraverse "^5.2.0"
- esutils "^2.0.2"
- optionator "^0.8.1"
- optionalDependencies:
- source-map "~0.6.1"
-
-eslint-config-prettier@^6.11.0:
- version "6.15.0"
- resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9"
- integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==
- dependencies:
- get-stdin "^6.0.0"
+eslint-config-prettier@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f"
+ integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==
eslint-import-resolver-node@^0.3.7:
- version "0.3.7"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7"
- integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==
+ version "0.3.9"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac"
+ integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
dependencies:
debug "^3.2.7"
- is-core-module "^2.11.0"
- resolve "^1.22.1"
+ is-core-module "^2.13.0"
+ resolve "^1.22.4"
-eslint-module-utils@^2.7.4:
+eslint-module-utils@^2.8.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49"
integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==
@@ -3285,120 +3492,100 @@ eslint-plugin-eslint-comments@^3.2.0:
escape-string-regexp "^1.0.5"
ignore "^5.0.5"
-eslint-plugin-import@^2.22.0:
- version "2.27.5"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65"
- integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==
+eslint-plugin-import@^2.28.1:
+ version "2.28.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4"
+ integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==
dependencies:
array-includes "^3.1.6"
+ array.prototype.findlastindex "^1.2.2"
array.prototype.flat "^1.3.1"
array.prototype.flatmap "^1.3.1"
debug "^3.2.7"
doctrine "^2.1.0"
eslint-import-resolver-node "^0.3.7"
- eslint-module-utils "^2.7.4"
+ eslint-module-utils "^2.8.0"
has "^1.0.3"
- is-core-module "^2.11.0"
+ is-core-module "^2.13.0"
is-glob "^4.0.3"
minimatch "^3.1.2"
+ object.fromentries "^2.0.6"
+ object.groupby "^1.0.0"
object.values "^1.1.6"
- resolve "^1.22.1"
- semver "^6.3.0"
- tsconfig-paths "^3.14.1"
+ semver "^6.3.1"
+ tsconfig-paths "^3.14.2"
-eslint-scope@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
- integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+eslint-scope@^7.2.2:
+ version "7.2.2"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
+ integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
dependencies:
esrecurse "^4.3.0"
- estraverse "^4.1.1"
-
-eslint-utils@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
- integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
- dependencies:
- eslint-visitor-keys "^1.1.0"
-
-eslint-utils@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
- integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
- dependencies:
- eslint-visitor-keys "^2.0.0"
-
-eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
- integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+ estraverse "^5.2.0"
-eslint-visitor-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
- integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
-
-eslint@^7.8.0:
- version "7.32.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
- integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
- dependencies:
- "@babel/code-frame" "7.12.11"
- "@eslint/eslintrc" "^0.4.3"
- "@humanwhocodes/config-array" "^0.5.0"
- ajv "^6.10.0"
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+ integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+eslint@^8.48.0:
+ version "8.48.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155"
+ integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/regexpp" "^4.6.1"
+ "@eslint/eslintrc" "^2.1.2"
+ "@eslint/js" "8.48.0"
+ "@humanwhocodes/config-array" "^0.11.10"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
+ ajv "^6.12.4"
chalk "^4.0.0"
cross-spawn "^7.0.2"
- debug "^4.0.1"
+ debug "^4.3.2"
doctrine "^3.0.0"
- enquirer "^2.3.5"
escape-string-regexp "^4.0.0"
- eslint-scope "^5.1.1"
- eslint-utils "^2.1.0"
- eslint-visitor-keys "^2.0.0"
- espree "^7.3.1"
- esquery "^1.4.0"
+ eslint-scope "^7.2.2"
+ eslint-visitor-keys "^3.4.3"
+ espree "^9.6.1"
+ esquery "^1.4.2"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
- functional-red-black-tree "^1.0.1"
- glob-parent "^5.1.2"
- globals "^13.6.0"
- ignore "^4.0.6"
- import-fresh "^3.0.0"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ graphemer "^1.4.0"
+ ignore "^5.2.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
- js-yaml "^3.13.1"
+ is-path-inside "^3.0.3"
+ js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
- minimatch "^3.0.4"
+ minimatch "^3.1.2"
natural-compare "^1.4.0"
- optionator "^0.9.1"
- progress "^2.0.0"
- regexpp "^3.1.0"
- semver "^7.2.1"
- strip-ansi "^6.0.0"
- strip-json-comments "^3.1.0"
- table "^6.0.9"
+ optionator "^0.9.3"
+ strip-ansi "^6.0.1"
text-table "^0.2.0"
- v8-compile-cache "^2.0.3"
-espree@^7.3.0, espree@^7.3.1:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
- integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+espree@^9.6.0, espree@^9.6.1:
+ version "9.6.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
+ integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
dependencies:
- acorn "^7.4.0"
- acorn-jsx "^5.3.1"
- eslint-visitor-keys "^1.3.0"
+ acorn "^8.9.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.4.1"
-esprima@^4.0.0, esprima@^4.0.1:
+esprima@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-esquery@^1.4.0:
+esquery@^1.4.2:
version "1.5.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
@@ -3412,11 +3599,6 @@ esrecurse@^4.3.0:
dependencies:
estraverse "^5.2.0"
-estraverse@^4.1.1:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
- integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
-
estraverse@^5.1.0, estraverse@^5.2.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
@@ -3427,7 +3609,7 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-ethers@^5.4.1:
+ethers@^5.7.2:
version "5.7.2"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e"
integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==
@@ -3478,6 +3660,21 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
+execa@^7.1.1:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9"
+ integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==
+ dependencies:
+ cross-spawn "^7.0.3"
+ get-stream "^6.0.1"
+ human-signals "^4.3.0"
+ is-stream "^3.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^5.1.0"
+ onetime "^6.0.0"
+ signal-exit "^3.0.7"
+ strip-final-newline "^3.0.0"
+
exit@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
@@ -3490,15 +3687,28 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
dependencies:
homedir-polyfill "^1.0.1"
-expect@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74"
- integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==
+expect@^29.0.0:
+ version "29.6.2"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.2.tgz#7b08e83eba18ddc4a2cf62b5f2d1918f5cd84521"
+ integrity sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==
dependencies:
- "@jest/types" "^27.5.1"
- jest-get-type "^27.5.1"
- jest-matcher-utils "^27.5.1"
- jest-message-util "^27.5.1"
+ "@jest/expect-utils" "^29.6.2"
+ "@types/node" "*"
+ jest-get-type "^29.4.3"
+ jest-matcher-utils "^29.6.2"
+ jest-message-util "^29.6.2"
+ jest-util "^29.6.2"
+
+expect@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.4.tgz#a6e6f66d4613717859b2fe3da98a739437b6f4b8"
+ integrity sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==
+ dependencies:
+ "@jest/expect-utils" "^29.6.4"
+ jest-get-type "^29.6.3"
+ jest-matcher-utils "^29.6.4"
+ jest-message-util "^29.6.3"
+ jest-util "^29.6.3"
external-editor@^3.0.3:
version "3.1.0"
@@ -3515,9 +3725,9 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
fast-glob@^3.2.9:
- version "3.2.12"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
- integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
+ integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
dependencies:
"@nodelib/fs.stat" "^2.0.2"
"@nodelib/fs.walk" "^1.2.3"
@@ -3525,12 +3735,12 @@ fast-glob@^3.2.9:
merge2 "^1.3.0"
micromatch "^4.0.4"
-fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
+fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
+fast-levenshtein@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
@@ -3563,15 +3773,14 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
-file-type@^14.1.4:
- version "14.7.1"
- resolved "https://registry.yarnpkg.com/file-type/-/file-type-14.7.1.tgz#f748732b3e70478bff530e1cf0ec2fe33608b1bb"
- integrity sha512-sXAMgFk67fQLcetXustxfKX+PZgHIUFn96Xld9uH8aXPdX3xOp0/jg9OdouVTvQrf7mrn+wAa4jN/y9fUOOiRA==
+file-type@^18.2.1:
+ version "18.5.0"
+ resolved "https://registry.yarnpkg.com/file-type/-/file-type-18.5.0.tgz#604a001ba0d32577d4c3fa420ee104d656b914d2"
+ integrity sha512-yvpl5U868+V6PqXHMmsESpg6unQ5GfnPssl4dxdJudBrr9qy7Fddt7EVX1VLlddFfe8Gj9N7goCZH22FXuSQXQ==
dependencies:
- readable-web-to-node-stream "^2.0.0"
- strtok3 "^6.0.3"
- token-types "^2.0.0"
- typedarray-to-buffer "^3.1.5"
+ readable-web-to-node-stream "^3.0.2"
+ strtok3 "^7.0.0"
+ token-types "^5.0.1"
filename-reserved-regex@^2.0.0:
version "2.0.0"
@@ -3653,6 +3862,14 @@ find-up@^5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
+find-up@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790"
+ integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==
+ dependencies:
+ locate-path "^7.1.0"
+ path-exists "^5.0.0"
+
findup-sync@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0"
@@ -3676,7 +3893,7 @@ flatted@^3.1.0:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
-follow-redirects@^1.14.0:
+follow-redirects@^1.14.9, follow-redirects@^1.15.0:
version "1.15.2"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
@@ -3688,10 +3905,10 @@ for-each@^0.3.3:
dependencies:
is-callable "^1.1.3"
-form-data@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
- integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
@@ -3707,6 +3924,15 @@ fs-extra@9.1.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
+fs-extra@^11.1.1:
+ version "11.1.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d"
+ integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fs-extra@^7.0.0:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
@@ -3716,24 +3942,15 @@ fs-extra@^7.0.0:
jsonfile "^4.0.0"
universalify "^0.1.0"
-fs-extra@^8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
- integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
- dependencies:
- graceful-fs "^4.2.0"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@^2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
function-bind@^1.1.1:
version "1.1.1"
@@ -3750,11 +3967,6 @@ function.prototype.name@^1.1.5:
es-abstract "^1.19.0"
functions-have-names "^1.2.2"
-functional-red-black-tree@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
- integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==
-
functions-have-names@^1.2.2, functions-have-names@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
@@ -3770,7 +3982,7 @@ get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0:
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82"
integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==
@@ -3795,17 +4007,12 @@ get-pkg-repo@^4.0.0:
through2 "^2.0.0"
yargs "^16.2.0"
-get-stdin@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
- integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
-
-get-stdin@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
- integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==
+get-stdin@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575"
+ integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==
-get-stream@^6.0.0:
+get-stream@^6.0.0, get-stream@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
@@ -3818,17 +4025,17 @@ get-symbol-description@^1.0.0:
call-bind "^1.0.2"
get-intrinsic "^1.1.1"
-gh-pages@^3.1.0:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-3.2.3.tgz#897e5f15e111f42af57d21d430b83e5cdf29472c"
- integrity sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==
+gh-pages@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-6.0.0.tgz#3bb46ea13dc7cee306662db0d3f02bf05635cdc1"
+ integrity sha512-FXZWJRsvP/fK2HJGY+Di6FRNHvqFF6gOIELaopDjXXgjeOYSNURcuYwEO/6bwuq6koP5Lnkvnr5GViXzuOB89g==
dependencies:
- async "^2.6.1"
- commander "^2.18.0"
- email-addresses "^3.0.1"
+ async "^3.2.4"
+ commander "^11.0.0"
+ email-addresses "^5.0.0"
filenamify "^4.3.0"
find-cache-dir "^3.3.1"
- fs-extra "^8.1.0"
+ fs-extra "^11.1.1"
globby "^6.1.0"
git-raw-commits@^2.0.8:
@@ -3872,28 +4079,36 @@ glob-parent@^5.1.2:
dependencies:
is-glob "^4.0.1"
-glob@7.2.3, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
- integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+glob-parent@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
+glob@7.1.7:
+ version "7.1.7"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
+ integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
- minimatch "^3.1.1"
+ minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^8.0.3:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
- integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
+glob@7.2.3, glob@^7.0.3, glob@^7.1.3, glob@^7.1.4:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
- minimatch "^5.0.1"
+ minimatch "^3.1.1"
once "^1.3.0"
+ path-is-absolute "^1.0.0"
global-dirs@^0.1.1:
version "0.1.1"
@@ -3927,10 +4142,10 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-globals@^13.6.0, globals@^13.9.0:
- version "13.20.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82"
- integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
+globals@^13.19.0:
+ version "13.21.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571"
+ integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==
dependencies:
type-fest "^0.20.2"
@@ -3941,7 +4156,7 @@ globalthis@^1.0.3:
dependencies:
define-properties "^1.1.3"
-globby@^11.0.3:
+globby@^11.1.0:
version "11.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@@ -3971,18 +4186,30 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
-graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9:
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+graphemer@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
+ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+
+gzip-size@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
+ integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==
+ dependencies:
+ duplexer "^0.1.2"
+
handlebars@^4.7.7:
- version "4.7.7"
- resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
- integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
+ version "4.7.8"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9"
+ integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==
dependencies:
minimist "^1.2.5"
- neo-async "^2.6.0"
+ neo-async "^2.6.2"
source-map "^0.6.1"
wordwrap "^1.0.0"
optionalDependencies:
@@ -4075,46 +4302,34 @@ hosted-git-info@^4.0.0, hosted-git-info@^4.0.1:
dependencies:
lru-cache "^6.0.0"
-html-encoding-sniffer@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3"
- integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
+hosted-git-info@^5.0.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f"
+ integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==
dependencies:
- whatwg-encoding "^1.0.5"
+ lru-cache "^7.5.1"
html-escaper@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
-http-proxy-agent@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
- integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
- dependencies:
- "@tootallnate/once" "1"
- agent-base "6"
- debug "4"
-
-https-proxy-agent@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
- integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
- dependencies:
- agent-base "6"
- debug "4"
-
human-signals@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
-husky@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e"
- integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==
+human-signals@^4.3.0:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2"
+ integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==
-iconv-lite@0.4.24, iconv-lite@^0.4.24:
+husky@^8.0.3:
+ version "8.0.3"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184"
+ integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==
+
+iconv-lite@^0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -4126,12 +4341,7 @@ ieee754@^1.1.13, ieee754@^1.2.1:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-ignore@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
- integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-
-ignore@^5.0.5, ignore@^5.1.8, ignore@^5.2.0:
+ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4:
version "5.2.4"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
@@ -4162,6 +4372,11 @@ indent-string@^4.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+indent-string@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5"
+ integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==
+
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -4252,10 +4467,10 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-is-core-module@^2.11.0, is-core-module@^2.5.0:
- version "2.12.1"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd"
- integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==
+is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1:
+ version "2.13.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db"
+ integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==
dependencies:
has "^1.0.3"
@@ -4271,6 +4486,11 @@ is-docker@^2.0.0:
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+is-docker@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200"
+ integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==
+
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -4293,6 +4513,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
dependencies:
is-extglob "^2.1.1"
+is-inside-container@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4"
+ integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==
+ dependencies:
+ is-docker "^3.0.0"
+
is-interactive@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
@@ -4325,16 +4552,16 @@ is-obj@^2.0.0:
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+is-path-inside@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
is-plain-obj@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==
-is-potential-custom-element-name@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
- integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
-
is-regex@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@@ -4360,6 +4587,11 @@ is-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+is-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
+ integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
+
is-string@^1.0.5, is-string@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
@@ -4382,20 +4614,11 @@ is-text-path@^1.0.1:
text-extensions "^1.0.0"
is-typed-array@^1.1.10, is-typed-array@^1.1.9:
- version "1.1.10"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f"
- integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a"
+ integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==
dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
- for-each "^0.3.3"
- gopd "^1.0.1"
- has-tostringtag "^1.0.0"
-
-is-typedarray@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
+ which-typed-array "^1.1.11"
is-unicode-supported@^0.1.0:
version "0.1.0"
@@ -4432,7 +4655,7 @@ is-windows@^1.0.1:
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-is-wsl@^2.1.1:
+is-wsl@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
@@ -4459,7 +4682,7 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==
-istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
+istanbul-lib-instrument@^5.0.4:
version "5.2.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d"
integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
@@ -4470,13 +4693,24 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
istanbul-lib-coverage "^3.2.0"
semver "^6.3.0"
+istanbul-lib-instrument@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8"
+ integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==
+ dependencies:
+ "@babel/core" "^7.12.3"
+ "@babel/parser" "^7.14.7"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-coverage "^3.2.0"
+ semver "^7.5.4"
+
istanbul-lib-report@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
- integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d"
+ integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==
dependencies:
istanbul-lib-coverage "^3.0.0"
- make-dir "^3.0.0"
+ make-dir "^4.0.0"
supports-color "^7.1.0"
istanbul-lib-source-maps@^4.0.0:
@@ -4489,443 +4723,408 @@ istanbul-lib-source-maps@^4.0.0:
source-map "^0.6.1"
istanbul-reports@^3.1.3:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae"
- integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a"
+ integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==
dependencies:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
-jest-changed-files@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5"
- integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==
+jest-changed-files@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.6.3.tgz#97cfdc93f74fb8af2a1acb0b78f836f1fb40c449"
+ integrity sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==
dependencies:
- "@jest/types" "^27.5.1"
execa "^5.0.0"
- throat "^6.0.1"
-
-jest-circus@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc"
- integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==
- dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/types" "^27.5.1"
+ jest-util "^29.6.3"
+ p-limit "^3.1.0"
+
+jest-circus@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.6.4.tgz#f074c8d795e0cc0f2ebf0705086b1be6a9a8722f"
+ integrity sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==
+ dependencies:
+ "@jest/environment" "^29.6.4"
+ "@jest/expect" "^29.6.4"
+ "@jest/test-result" "^29.6.4"
+ "@jest/types" "^29.6.3"
"@types/node" "*"
chalk "^4.0.0"
co "^4.6.0"
- dedent "^0.7.0"
- expect "^27.5.1"
+ dedent "^1.0.0"
is-generator-fn "^2.0.0"
- jest-each "^27.5.1"
- jest-matcher-utils "^27.5.1"
- jest-message-util "^27.5.1"
- jest-runtime "^27.5.1"
- jest-snapshot "^27.5.1"
- jest-util "^27.5.1"
- pretty-format "^27.5.1"
+ jest-each "^29.6.3"
+ jest-matcher-utils "^29.6.4"
+ jest-message-util "^29.6.3"
+ jest-runtime "^29.6.4"
+ jest-snapshot "^29.6.4"
+ jest-util "^29.6.3"
+ p-limit "^3.1.0"
+ pretty-format "^29.6.3"
+ pure-rand "^6.0.0"
slash "^3.0.0"
stack-utils "^2.0.3"
- throat "^6.0.1"
-jest-cli@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145"
- integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==
+jest-cli@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.6.4.tgz#ad52f2dfa1b0291de7ec7f8d7c81ac435521ede0"
+ integrity sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==
dependencies:
- "@jest/core" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/types" "^27.5.1"
+ "@jest/core" "^29.6.4"
+ "@jest/test-result" "^29.6.4"
+ "@jest/types" "^29.6.3"
chalk "^4.0.0"
exit "^0.1.2"
graceful-fs "^4.2.9"
import-local "^3.0.2"
- jest-config "^27.5.1"
- jest-util "^27.5.1"
- jest-validate "^27.5.1"
+ jest-config "^29.6.4"
+ jest-util "^29.6.3"
+ jest-validate "^29.6.3"
prompts "^2.0.1"
- yargs "^16.2.0"
+ yargs "^17.3.1"
-jest-config@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41"
- integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==
+jest-config@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.6.4.tgz#eff958ee41d4e1ee7a6106d02b74ad9fc427d79e"
+ integrity sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==
dependencies:
- "@babel/core" "^7.8.0"
- "@jest/test-sequencer" "^27.5.1"
- "@jest/types" "^27.5.1"
- babel-jest "^27.5.1"
+ "@babel/core" "^7.11.6"
+ "@jest/test-sequencer" "^29.6.4"
+ "@jest/types" "^29.6.3"
+ babel-jest "^29.6.4"
chalk "^4.0.0"
ci-info "^3.2.0"
deepmerge "^4.2.2"
- glob "^7.1.1"
+ glob "^7.1.3"
graceful-fs "^4.2.9"
- jest-circus "^27.5.1"
- jest-environment-jsdom "^27.5.1"
- jest-environment-node "^27.5.1"
- jest-get-type "^27.5.1"
- jest-jasmine2 "^27.5.1"
- jest-regex-util "^27.5.1"
- jest-resolve "^27.5.1"
- jest-runner "^27.5.1"
- jest-util "^27.5.1"
- jest-validate "^27.5.1"
+ jest-circus "^29.6.4"
+ jest-environment-node "^29.6.4"
+ jest-get-type "^29.6.3"
+ jest-regex-util "^29.6.3"
+ jest-resolve "^29.6.4"
+ jest-runner "^29.6.4"
+ jest-util "^29.6.3"
+ jest-validate "^29.6.3"
micromatch "^4.0.4"
parse-json "^5.2.0"
- pretty-format "^27.5.1"
+ pretty-format "^29.6.3"
slash "^3.0.0"
strip-json-comments "^3.1.1"
-jest-diff@^26.0.0:
- version "26.6.2"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394"
- integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==
- dependencies:
- chalk "^4.0.0"
- diff-sequences "^26.6.2"
- jest-get-type "^26.3.0"
- pretty-format "^26.6.2"
-
-jest-diff@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def"
- integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==
+jest-diff@^29.6.2, jest-diff@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.4.tgz#85aaa6c92a79ae8cd9a54ebae8d5b6d9a513314a"
+ integrity sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==
dependencies:
chalk "^4.0.0"
- diff-sequences "^27.5.1"
- jest-get-type "^27.5.1"
- pretty-format "^27.5.1"
+ diff-sequences "^29.6.3"
+ jest-get-type "^29.6.3"
+ pretty-format "^29.6.3"
-jest-docblock@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0"
- integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==
+jest-docblock@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.6.3.tgz#293dca5188846c9f7c0c2b1bb33e5b11f21645f2"
+ integrity sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==
dependencies:
detect-newline "^3.0.0"
-jest-each@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e"
- integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==
+jest-each@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.6.3.tgz#1956f14f5f0cb8ae0b2e7cabc10bb03ec817c142"
+ integrity sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==
dependencies:
- "@jest/types" "^27.5.1"
+ "@jest/types" "^29.6.3"
chalk "^4.0.0"
- jest-get-type "^27.5.1"
- jest-util "^27.5.1"
- pretty-format "^27.5.1"
-
-jest-environment-jsdom@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546"
- integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==
- dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/fake-timers" "^27.5.1"
- "@jest/types" "^27.5.1"
+ jest-get-type "^29.6.3"
+ jest-util "^29.6.3"
+ pretty-format "^29.6.3"
+
+jest-environment-node@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.6.4.tgz#4ce311549afd815d3cafb49e60a1e4b25f06d29f"
+ integrity sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==
+ dependencies:
+ "@jest/environment" "^29.6.4"
+ "@jest/fake-timers" "^29.6.4"
+ "@jest/types" "^29.6.3"
"@types/node" "*"
- jest-mock "^27.5.1"
- jest-util "^27.5.1"
- jsdom "^16.6.0"
-
-jest-environment-node@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e"
- integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==
- dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/fake-timers" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- jest-mock "^27.5.1"
- jest-util "^27.5.1"
-
-jest-get-type@^26.3.0:
- version "26.3.0"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0"
- integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==
-
-jest-get-type@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1"
- integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
-
-jest-haste-map@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f"
- integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==
- dependencies:
- "@jest/types" "^27.5.1"
- "@types/graceful-fs" "^4.1.2"
+ jest-mock "^29.6.3"
+ jest-util "^29.6.3"
+
+jest-get-type@^29.4.3, jest-get-type@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1"
+ integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==
+
+jest-haste-map@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.6.4.tgz#97143ce833829157ea7025204b08f9ace609b96a"
+ integrity sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==
+ dependencies:
+ "@jest/types" "^29.6.3"
+ "@types/graceful-fs" "^4.1.3"
"@types/node" "*"
anymatch "^3.0.3"
fb-watchman "^2.0.0"
graceful-fs "^4.2.9"
- jest-regex-util "^27.5.1"
- jest-serializer "^27.5.1"
- jest-util "^27.5.1"
- jest-worker "^27.5.1"
+ jest-regex-util "^29.6.3"
+ jest-util "^29.6.3"
+ jest-worker "^29.6.4"
micromatch "^4.0.4"
- walker "^1.0.7"
+ walker "^1.0.8"
optionalDependencies:
fsevents "^2.3.2"
-jest-jasmine2@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4"
- integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==
+jest-leak-detector@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz#b9661bc3aec8874e59aff361fa0c6d7cd507ea01"
+ integrity sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==
+ dependencies:
+ jest-get-type "^29.6.3"
+ pretty-format "^29.6.3"
+
+jest-matcher-utils@^29.6.2:
+ version "29.6.2"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz#39de0be2baca7a64eacb27291f0bd834fea3a535"
+ integrity sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==
dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/source-map" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
chalk "^4.0.0"
- co "^4.6.0"
- expect "^27.5.1"
- is-generator-fn "^2.0.0"
- jest-each "^27.5.1"
- jest-matcher-utils "^27.5.1"
- jest-message-util "^27.5.1"
- jest-runtime "^27.5.1"
- jest-snapshot "^27.5.1"
- jest-util "^27.5.1"
- pretty-format "^27.5.1"
- throat "^6.0.1"
-
-jest-leak-detector@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8"
- integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==
- dependencies:
- jest-get-type "^27.5.1"
- pretty-format "^27.5.1"
-
-jest-matcher-utils@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab"
- integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==
+ jest-diff "^29.6.2"
+ jest-get-type "^29.4.3"
+ pretty-format "^29.6.2"
+
+jest-matcher-utils@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz#327db7ababea49455df3b23e5d6109fe0c709d24"
+ integrity sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==
+ dependencies:
+ chalk "^4.0.0"
+ jest-diff "^29.6.4"
+ jest-get-type "^29.6.3"
+ pretty-format "^29.6.3"
+
+jest-message-util@^29.6.2:
+ version "29.6.2"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.2.tgz#af7adc2209c552f3f5ae31e77cf0a261f23dc2bb"
+ integrity sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==
dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@jest/types" "^29.6.1"
+ "@types/stack-utils" "^2.0.0"
chalk "^4.0.0"
- jest-diff "^27.5.1"
- jest-get-type "^27.5.1"
- pretty-format "^27.5.1"
+ graceful-fs "^4.2.9"
+ micromatch "^4.0.4"
+ pretty-format "^29.6.2"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
-jest-message-util@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf"
- integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==
+jest-message-util@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.3.tgz#bce16050d86801b165f20cfde34dc01d3cf85fbf"
+ integrity sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==
dependencies:
"@babel/code-frame" "^7.12.13"
- "@jest/types" "^27.5.1"
+ "@jest/types" "^29.6.3"
"@types/stack-utils" "^2.0.0"
chalk "^4.0.0"
graceful-fs "^4.2.9"
micromatch "^4.0.4"
- pretty-format "^27.5.1"
+ pretty-format "^29.6.3"
slash "^3.0.0"
stack-utils "^2.0.3"
-jest-mock@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6"
- integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==
+jest-mock@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.6.3.tgz#433f3fd528c8ec5a76860177484940628bdf5e0a"
+ integrity sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==
dependencies:
- "@jest/types" "^27.5.1"
+ "@jest/types" "^29.6.3"
"@types/node" "*"
+ jest-util "^29.6.3"
jest-pnp-resolver@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==
-jest-regex-util@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95"
- integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==
+jest-regex-util@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52"
+ integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==
-jest-resolve-dependencies@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8"
- integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==
+jest-resolve-dependencies@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz#20156b33c7eacbb6bb77aeba4bed0eab4a3f8734"
+ integrity sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==
dependencies:
- "@jest/types" "^27.5.1"
- jest-regex-util "^27.5.1"
- jest-snapshot "^27.5.1"
+ jest-regex-util "^29.6.3"
+ jest-snapshot "^29.6.4"
-jest-resolve@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384"
- integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==
+jest-resolve@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.6.4.tgz#e34cb06f2178b429c38455d98d1a07572ac9faa3"
+ integrity sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==
dependencies:
- "@jest/types" "^27.5.1"
chalk "^4.0.0"
graceful-fs "^4.2.9"
- jest-haste-map "^27.5.1"
+ jest-haste-map "^29.6.4"
jest-pnp-resolver "^1.2.2"
- jest-util "^27.5.1"
- jest-validate "^27.5.1"
+ jest-util "^29.6.3"
+ jest-validate "^29.6.3"
resolve "^1.20.0"
- resolve.exports "^1.1.0"
+ resolve.exports "^2.0.0"
slash "^3.0.0"
-jest-runner@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5"
- integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==
+jest-runner@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.6.4.tgz#b3b8ccb85970fde0fae40c73ee11eb75adccfacf"
+ integrity sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==
dependencies:
- "@jest/console" "^27.5.1"
- "@jest/environment" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
+ "@jest/console" "^29.6.4"
+ "@jest/environment" "^29.6.4"
+ "@jest/test-result" "^29.6.4"
+ "@jest/transform" "^29.6.4"
+ "@jest/types" "^29.6.3"
"@types/node" "*"
chalk "^4.0.0"
- emittery "^0.8.1"
+ emittery "^0.13.1"
graceful-fs "^4.2.9"
- jest-docblock "^27.5.1"
- jest-environment-jsdom "^27.5.1"
- jest-environment-node "^27.5.1"
- jest-haste-map "^27.5.1"
- jest-leak-detector "^27.5.1"
- jest-message-util "^27.5.1"
- jest-resolve "^27.5.1"
- jest-runtime "^27.5.1"
- jest-util "^27.5.1"
- jest-worker "^27.5.1"
- source-map-support "^0.5.6"
- throat "^6.0.1"
-
-jest-runtime@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af"
- integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==
- dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/fake-timers" "^27.5.1"
- "@jest/globals" "^27.5.1"
- "@jest/source-map" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
+ jest-docblock "^29.6.3"
+ jest-environment-node "^29.6.4"
+ jest-haste-map "^29.6.4"
+ jest-leak-detector "^29.6.3"
+ jest-message-util "^29.6.3"
+ jest-resolve "^29.6.4"
+ jest-runtime "^29.6.4"
+ jest-util "^29.6.3"
+ jest-watcher "^29.6.4"
+ jest-worker "^29.6.4"
+ p-limit "^3.1.0"
+ source-map-support "0.5.13"
+
+jest-runtime@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.6.4.tgz#b0bc495c9b6b12a0a7042ac34ca9bb85f8cd0ded"
+ integrity sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==
+ dependencies:
+ "@jest/environment" "^29.6.4"
+ "@jest/fake-timers" "^29.6.4"
+ "@jest/globals" "^29.6.4"
+ "@jest/source-map" "^29.6.3"
+ "@jest/test-result" "^29.6.4"
+ "@jest/transform" "^29.6.4"
+ "@jest/types" "^29.6.3"
+ "@types/node" "*"
chalk "^4.0.0"
cjs-module-lexer "^1.0.0"
collect-v8-coverage "^1.0.0"
- execa "^5.0.0"
glob "^7.1.3"
graceful-fs "^4.2.9"
- jest-haste-map "^27.5.1"
- jest-message-util "^27.5.1"
- jest-mock "^27.5.1"
- jest-regex-util "^27.5.1"
- jest-resolve "^27.5.1"
- jest-snapshot "^27.5.1"
- jest-util "^27.5.1"
+ jest-haste-map "^29.6.4"
+ jest-message-util "^29.6.3"
+ jest-mock "^29.6.3"
+ jest-regex-util "^29.6.3"
+ jest-resolve "^29.6.4"
+ jest-snapshot "^29.6.4"
+ jest-util "^29.6.3"
slash "^3.0.0"
strip-bom "^4.0.0"
-jest-serializer@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64"
- integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==
- dependencies:
- "@types/node" "*"
- graceful-fs "^4.2.9"
-
-jest-snapshot@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1"
- integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==
+jest-snapshot@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.6.4.tgz#9833eb6b66ff1541c7fd8ceaa42d541f407b4876"
+ integrity sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==
dependencies:
- "@babel/core" "^7.7.2"
+ "@babel/core" "^7.11.6"
"@babel/generator" "^7.7.2"
+ "@babel/plugin-syntax-jsx" "^7.7.2"
"@babel/plugin-syntax-typescript" "^7.7.2"
- "@babel/traverse" "^7.7.2"
- "@babel/types" "^7.0.0"
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/babel__traverse" "^7.0.4"
- "@types/prettier" "^2.1.5"
+ "@babel/types" "^7.3.3"
+ "@jest/expect-utils" "^29.6.4"
+ "@jest/transform" "^29.6.4"
+ "@jest/types" "^29.6.3"
babel-preset-current-node-syntax "^1.0.0"
chalk "^4.0.0"
- expect "^27.5.1"
+ expect "^29.6.4"
graceful-fs "^4.2.9"
- jest-diff "^27.5.1"
- jest-get-type "^27.5.1"
- jest-haste-map "^27.5.1"
- jest-matcher-utils "^27.5.1"
- jest-message-util "^27.5.1"
- jest-util "^27.5.1"
+ jest-diff "^29.6.4"
+ jest-get-type "^29.6.3"
+ jest-matcher-utils "^29.6.4"
+ jest-message-util "^29.6.3"
+ jest-util "^29.6.3"
natural-compare "^1.4.0"
- pretty-format "^27.5.1"
- semver "^7.3.2"
+ pretty-format "^29.6.3"
+ semver "^7.5.3"
+
+jest-util@^29.0.0, jest-util@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.3.tgz#e15c3eac8716440d1ed076f09bc63ace1aebca63"
+ integrity sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==
+ dependencies:
+ "@jest/types" "^29.6.3"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ graceful-fs "^4.2.9"
+ picomatch "^2.2.3"
-jest-util@^27.0.0, jest-util@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9"
- integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==
+jest-util@^29.6.2:
+ version "29.6.2"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.2.tgz#8a052df8fff2eebe446769fd88814521a517664d"
+ integrity sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==
dependencies:
- "@jest/types" "^27.5.1"
+ "@jest/types" "^29.6.1"
"@types/node" "*"
chalk "^4.0.0"
ci-info "^3.2.0"
graceful-fs "^4.2.9"
picomatch "^2.2.3"
-jest-validate@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067"
- integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==
+jest-validate@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.6.3.tgz#a75fca774cfb1c5758c70d035d30a1f9c2784b4d"
+ integrity sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==
dependencies:
- "@jest/types" "^27.5.1"
+ "@jest/types" "^29.6.3"
camelcase "^6.2.0"
chalk "^4.0.0"
- jest-get-type "^27.5.1"
+ jest-get-type "^29.6.3"
leven "^3.1.0"
- pretty-format "^27.5.1"
+ pretty-format "^29.6.3"
-jest-watcher@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2"
- integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==
+jest-watcher@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.6.4.tgz#633eb515ae284aa67fd6831f1c9d1b534cf0e0ba"
+ integrity sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==
dependencies:
- "@jest/test-result" "^27.5.1"
- "@jest/types" "^27.5.1"
+ "@jest/test-result" "^29.6.4"
+ "@jest/types" "^29.6.3"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
- jest-util "^27.5.1"
+ emittery "^0.13.1"
+ jest-util "^29.6.3"
string-length "^4.0.1"
-jest-worker@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
- integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
+jest-worker@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.4.tgz#f34279f4afc33c872b470d4af21b281ac616abd3"
+ integrity sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==
dependencies:
"@types/node" "*"
+ jest-util "^29.6.3"
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest@^27.0.6:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc"
- integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==
+jest@^29.6.4:
+ version "29.6.4"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-29.6.4.tgz#7c48e67a445ba264b778253b5d78d4ebc9d0a622"
+ integrity sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==
dependencies:
- "@jest/core" "^27.5.1"
+ "@jest/core" "^29.6.4"
+ "@jest/types" "^29.6.3"
import-local "^3.0.2"
- jest-cli "^27.5.1"
-
-joi@^17.7.0:
- version "17.9.2"
- resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.2.tgz#8b2e4724188369f55451aebd1d0b1d9482470690"
- integrity sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==
- dependencies:
- "@hapi/hoek" "^9.0.0"
- "@hapi/topo" "^5.0.0"
- "@sideway/address" "^4.1.3"
- "@sideway/formula" "^3.0.1"
- "@sideway/pinpoint" "^2.0.0"
+ jest-cli "^29.6.4"
js-sha3@0.8.0, js-sha3@^0.8.0:
version "0.8.0"
@@ -4952,39 +5151,6 @@ js-yaml@^4.1.0:
dependencies:
argparse "^2.0.1"
-jsdom@^16.6.0:
- version "16.7.0"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710"
- integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==
- dependencies:
- abab "^2.0.5"
- acorn "^8.2.4"
- acorn-globals "^6.0.0"
- cssom "^0.4.4"
- cssstyle "^2.3.0"
- data-urls "^2.0.0"
- decimal.js "^10.2.1"
- domexception "^2.0.1"
- escodegen "^2.0.0"
- form-data "^3.0.0"
- html-encoding-sniffer "^2.0.1"
- http-proxy-agent "^4.0.1"
- https-proxy-agent "^5.0.0"
- is-potential-custom-element-name "^1.0.1"
- nwsapi "^2.2.0"
- parse5 "6.0.1"
- saxes "^5.0.1"
- symbol-tree "^3.2.4"
- tough-cookie "^4.0.0"
- w3c-hr-time "^1.0.2"
- w3c-xmlserializer "^2.0.0"
- webidl-conversions "^6.1.0"
- whatwg-encoding "^1.0.5"
- whatwg-mimetype "^2.3.0"
- whatwg-url "^8.5.0"
- ws "^7.4.6"
- xml-name-validator "^3.0.0"
-
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
@@ -5025,11 +5191,6 @@ json-stringify-safe@^5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
-json5@2.x, json5@^2.2.2:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
- integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
-
json5@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
@@ -5037,7 +5198,12 @@ json5@^1.0.2:
dependencies:
minimist "^1.2.0"
-jsonc-parser@^3.0.0:
+json5@^2.2.2, json5@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+jsonc-parser@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
@@ -5091,14 +5257,6 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
-levn@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
- integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==
- dependencies:
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
-
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
@@ -5144,6 +5302,18 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
+locate-path@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a"
+ integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==
+ dependencies:
+ p-locate "^6.0.0"
+
+lodash-es@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
+ integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
+
lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
@@ -5184,17 +5354,12 @@ lodash.mergewith@^4.6.2:
resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55"
integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==
-lodash.truncate@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
- integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==
-
lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
-lodash@4.17.21, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.7.0:
+lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -5226,18 +5391,30 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
+lru-cache@^7.5.1:
+ version "7.18.3"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
+ integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
+
lunr@^2.3.9:
version "2.3.9"
resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1"
integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==
-make-dir@^3.0.0, make-dir@^3.0.2:
+make-dir@^3.0.2:
version "3.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
dependencies:
semver "^6.0.0"
+make-dir@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e"
+ integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==
+ dependencies:
+ semver "^7.5.3"
+
make-error@1.x, make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
@@ -5255,12 +5432,12 @@ map-obj@^1.0.0:
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==
-map-obj@^4.0.0:
+map-obj@^4.0.0, map-obj@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a"
integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==
-marked@^4.0.16:
+marked@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3"
integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==
@@ -5270,22 +5447,23 @@ memorystream@^0.3.1:
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==
-meow@^6.1.0:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467"
- integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==
+meow@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-11.0.0.tgz#273a19c12d49d013c56effe9f011994022887157"
+ integrity sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==
dependencies:
- "@types/minimist" "^1.2.0"
- camelcase-keys "^6.2.2"
+ "@types/minimist" "^1.2.2"
+ camelcase-keys "^8.0.2"
+ decamelize "^6.0.0"
decamelize-keys "^1.1.0"
hard-rejection "^2.1.0"
- minimist-options "^4.0.2"
- normalize-package-data "^2.5.0"
- read-pkg-up "^7.0.1"
- redent "^3.0.0"
- trim-newlines "^3.0.0"
- type-fest "^0.13.1"
- yargs-parser "^18.1.3"
+ minimist-options "4.1.0"
+ normalize-package-data "^4.0.1"
+ read-pkg-up "^9.1.0"
+ redent "^4.0.0"
+ trim-newlines "^4.0.2"
+ type-fest "^3.1.0"
+ yargs-parser "^21.1.1"
meow@^8.0.0:
version "8.1.2"
@@ -5319,7 +5497,7 @@ merge@^2.1.1:
resolved "https://registry.yarnpkg.com/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98"
integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==
-micromatch@^4.0.2, micromatch@^4.0.4:
+micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
@@ -5344,7 +5522,12 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-min-indent@^1.0.0:
+mimic-fn@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
+ integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
+
+min-indent@^1.0.0, min-indent@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
@@ -5359,21 +5542,21 @@ minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
-minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
+minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
-minimatch@^5.0.1, minimatch@^5.1.0:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
- integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
+minimatch@^9.0.3:
+ version "9.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
+ integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
dependencies:
brace-expansion "^2.0.1"
-minimist-options@4.1.0, minimist-options@^4.0.2:
+minimist-options@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
@@ -5417,12 +5600,17 @@ mute-stream@0.0.8:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+nanoclone@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4"
+ integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-neo-async@^2.6.0:
+neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
@@ -5437,10 +5625,10 @@ node-int64@^0.4.0:
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
-node-releases@^2.0.12:
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039"
- integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==
+node-releases@^2.0.13:
+ version "2.0.13"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d"
+ integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==
normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
version "2.5.0"
@@ -5452,7 +5640,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
-normalize-package-data@^3.0.0:
+normalize-package-data@^3.0.0, normalize-package-data@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e"
integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==
@@ -5462,6 +5650,16 @@ normalize-package-data@^3.0.0:
semver "^7.3.4"
validate-npm-package-license "^3.0.1"
+normalize-package-data@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c"
+ integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==
+ dependencies:
+ hosted-git-info "^5.0.0"
+ is-core-module "^2.8.1"
+ semver "^7.3.5"
+ validate-npm-package-license "^3.0.4"
+
normalize-path@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
@@ -5489,10 +5687,12 @@ npm-run-path@^4.0.1:
dependencies:
path-key "^3.0.0"
-nwsapi@^2.2.0:
- version "2.2.5"
- resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.5.tgz#a52744c61b3889dd44b0a158687add39b8d935e2"
- integrity sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==
+npm-run-path@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00"
+ integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==
+ dependencies:
+ path-key "^4.0.0"
object-assign@^4.0.1:
version "4.1.1"
@@ -5527,6 +5727,25 @@ object.assign@^4.1.4:
has-symbols "^1.0.3"
object-keys "^1.1.1"
+object.fromentries@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73"
+ integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
+object.groupby@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.0.tgz#cb29259cf90f37e7bac6437686c1ea8c916d12a9"
+ integrity sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.21.2"
+ get-intrinsic "^1.2.1"
+
object.values@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d"
@@ -5550,48 +5769,45 @@ onetime@^5.1.0, onetime@^5.1.2:
dependencies:
mimic-fn "^2.1.0"
-open-cli@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/open-cli/-/open-cli-6.0.1.tgz#adcee24967dc12c65d8cb8bf994e7dc40aed7a8e"
- integrity sha512-A5h8MF3GrT1efn9TiO9LPajDnLtuEiGQT5G8TxWObBlgt1cZJF1YbQo/kNtsD1bJb7HxnT6SaSjzeLq0Rfhygw==
+onetime@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
+ integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
dependencies:
- file-type "^14.1.4"
- get-stdin "^7.0.0"
- meow "^6.1.0"
- open "^7.0.3"
- temp-write "^4.0.0"
+ mimic-fn "^4.0.0"
-open@^7.0.3:
- version "7.4.2"
- resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
- integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
+open-cli@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/open-cli/-/open-cli-7.2.0.tgz#9431203847648890026c54c08dcd3430c6fce23f"
+ integrity sha512-1ANJc8oJ92FiaNZ0o2Hw4WBvDJoXs1P74aFMtpAvlbkIPV4uPcQvDz7V6kMOrsZkmB4tglrHVMlLQaafuUuxXg==
dependencies:
- is-docker "^2.0.0"
- is-wsl "^2.1.1"
+ file-type "^18.2.1"
+ get-stdin "^9.0.0"
+ meow "^11.0.0"
+ open "^9.0.0"
+ tempy "^3.0.0"
-optionator@^0.8.1:
- version "0.8.3"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
- integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+open@^9.0.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6"
+ integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==
dependencies:
- deep-is "~0.1.3"
- fast-levenshtein "~2.0.6"
- levn "~0.3.0"
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
- word-wrap "~1.2.3"
+ default-browser "^4.0.0"
+ define-lazy-prop "^3.0.0"
+ is-inside-container "^1.0.0"
+ is-wsl "^2.2.0"
-optionator@^0.9.1:
- version "0.9.1"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
- integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+optionator@^0.9.3:
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
+ integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
dependencies:
+ "@aashutoshrathi/word-wrap" "^1.2.3"
deep-is "^0.1.3"
fast-levenshtein "^2.0.6"
levn "^0.4.1"
prelude-ls "^1.2.1"
type-check "^0.4.0"
- word-wrap "^1.2.3"
ora@^5.4.1:
version "5.4.1"
@@ -5627,13 +5843,20 @@ p-limit@^2.0.0, p-limit@^2.2.0:
dependencies:
p-try "^2.0.0"
-p-limit@^3.0.2:
+p-limit@^3.0.2, p-limit@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
dependencies:
yocto-queue "^0.1.0"
+p-limit@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644"
+ integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==
+ dependencies:
+ yocto-queue "^1.0.0"
+
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
@@ -5662,6 +5885,13 @@ p-locate@^5.0.0:
dependencies:
p-limit "^3.0.2"
+p-locate@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f"
+ integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==
+ dependencies:
+ p-limit "^4.0.0"
+
p-try@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
@@ -5702,11 +5932,6 @@ parse-passwd@^1.0.0:
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==
-parse5@6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
- integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
-
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
@@ -5717,6 +5942,11 @@ path-exists@^4.0.0:
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+path-exists@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7"
+ integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -5732,6 +5962,11 @@ path-key@^3.0.0, path-key@^3.1.0:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+path-key@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
+ integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
+
path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
@@ -5749,10 +5984,10 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-peek-readable@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72"
- integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==
+peek-readable@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.0.0.tgz#7ead2aff25dc40458c60347ea76cfdfd63efdfec"
+ integrity sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==
picocolors@^1.0.0:
version "1.0.0"
@@ -5808,45 +6043,39 @@ prelude-ls@^1.2.1:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-prelude-ls@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
- integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==
-
-prettier@^2.1.1, prettier@^2.1.2:
+prettier@^2.3.1:
version "2.8.8"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
-pretty-format@^26.0.0, pretty-format@^26.6.2:
- version "26.6.2"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93"
- integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==
+prettier@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.2.tgz#78fcecd6d870551aa5547437cdae39d4701dca5b"
+ integrity sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==
+
+pretty-format@^29.0.0, pretty-format@^29.6.2:
+ version "29.6.2"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.2.tgz#3d5829261a8a4d89d8b9769064b29c50ed486a47"
+ integrity sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==
dependencies:
- "@jest/types" "^26.6.2"
- ansi-regex "^5.0.0"
- ansi-styles "^4.0.0"
- react-is "^17.0.1"
+ "@jest/schemas" "^29.6.0"
+ ansi-styles "^5.0.0"
+ react-is "^18.0.0"
-pretty-format@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e"
- integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
+pretty-format@^29.6.3:
+ version "29.6.3"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.3.tgz#d432bb4f1ca6f9463410c3fb25a0ba88e594ace7"
+ integrity sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==
dependencies:
- ansi-regex "^5.0.1"
+ "@jest/schemas" "^29.6.3"
ansi-styles "^5.0.0"
- react-is "^17.0.1"
+ react-is "^18.0.0"
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-progress@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
- integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-
prompts@^2.0.1:
version "2.4.2"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
@@ -5855,16 +6084,26 @@ prompts@^2.0.1:
kleur "^3.0.3"
sisteransi "^1.0.5"
-psl@^1.1.33:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
- integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
+property-expr@^2.0.4:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4"
+ integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==
+
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
-punycode@^2.1.0, punycode@^2.1.1:
+punycode@^2.1.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
+pure-rand@^6.0.0:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306"
+ integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==
+
q@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -5877,11 +6116,6 @@ qs@^6.10.1:
dependencies:
side-channel "^1.0.4"
-querystringify@^2.1.1:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
- integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
-
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -5892,10 +6126,15 @@ quick-lru@^4.0.1:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
-react-is@^17.0.1:
- version "17.0.2"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
- integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+quick-lru@^6.1.1:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-6.1.2.tgz#e9a90524108629be35287d0b864e7ad6ceb3659e"
+ integrity sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==
+
+react-is@^18.0.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
+ integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
read-pkg-up@^3.0.0:
version "3.0.0"
@@ -5914,6 +6153,15 @@ read-pkg-up@^7.0.1:
read-pkg "^5.2.0"
type-fest "^0.8.1"
+read-pkg-up@^9.1.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-9.1.0.tgz#38ca48e0bc6c6b260464b14aad9bcd4e5b1fbdc3"
+ integrity sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==
+ dependencies:
+ find-up "^6.3.0"
+ read-pkg "^7.1.0"
+ type-fest "^2.5.0"
+
read-pkg@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
@@ -5933,7 +6181,17 @@ read-pkg@^5.2.0:
parse-json "^5.0.0"
type-fest "^0.6.0"
-readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0:
+read-pkg@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-7.1.0.tgz#438b4caed1ad656ba359b3e00fd094f3c427a43e"
+ integrity sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==
+ dependencies:
+ "@types/normalize-package-data" "^2.4.1"
+ normalize-package-data "^3.0.2"
+ parse-json "^5.2.0"
+ type-fest "^2.0.0"
+
+readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0:
version "3.6.2"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
@@ -5955,10 +6213,12 @@ readable-stream@~2.3.6:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-web-to-node-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-2.0.0.tgz#751e632f466552ac0d5c440cc01470352f93c4b7"
- integrity sha512-+oZJurc4hXpaaqsN68GoZGQAQIA3qr09Or4fqEsargABnbe5Aau8hFn6ISVleT3cpY/0n/8drn7huyyEvTbghA==
+readable-web-to-node-stream@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb"
+ integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==
+ dependencies:
+ readable-stream "^3.6.0"
redent@^3.0.0:
version "3.0.0"
@@ -5968,6 +6228,14 @@ redent@^3.0.0:
indent-string "^4.0.0"
strip-indent "^3.0.0"
+redent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-4.0.0.tgz#0c0ba7caabb24257ab3bb7a4fd95dd1d5c5681f9"
+ integrity sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==
+ dependencies:
+ indent-string "^5.0.0"
+ strip-indent "^4.0.0"
+
reduce-flatten@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27"
@@ -5985,19 +6253,19 @@ regenerate@^1.4.2:
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
-regenerator-runtime@^0.13.11:
- version "0.13.11"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
- integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+regenerator-runtime@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
+ integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
-regenerator-transform@^0.15.1:
- version "0.15.1"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56"
- integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==
+regenerator-transform@^0.15.2:
+ version "0.15.2"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4"
+ integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==
dependencies:
"@babel/runtime" "^7.8.4"
-regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0:
+regexp.prototype.flags@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb"
integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==
@@ -6006,11 +6274,6 @@ regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0:
define-properties "^1.2.0"
functions-have-names "^1.2.3"
-regexpp@^3.1.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
- integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
-
regexpu-core@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b"
@@ -6040,11 +6303,6 @@ require-from-string@^2.0.2:
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-requires-port@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
- integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
-
resolve-cwd@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
@@ -6077,17 +6335,17 @@ resolve-global@^1.0.0:
dependencies:
global-dirs "^0.1.1"
-resolve.exports@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999"
- integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==
+resolve.exports@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800"
+ integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==
-resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1:
- version "1.22.2"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
- integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
+resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4:
+ version "1.22.4"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34"
+ integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==
dependencies:
- is-core-module "^2.11.0"
+ is-core-module "^2.13.0"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
@@ -6104,13 +6362,20 @@ reusify@^1.0.4:
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-rimraf@^3.0.0, rimraf@^3.0.2:
+rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
+run-applescript@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c"
+ integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==
+ dependencies:
+ execa "^5.0.0"
+
run-async@^2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
@@ -6130,6 +6395,16 @@ rxjs@^7.5.5:
dependencies:
tslib "^2.1.0"
+safe-array-concat@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060"
+ integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.0"
+ has-symbols "^1.0.3"
+ isarray "^2.0.5"
+
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -6154,13 +6429,6 @@ safe-regex-test@^1.0.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-saxes@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
- integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
- dependencies:
- xmlchars "^2.2.0"
-
scrypt-js@3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312"
@@ -6171,18 +6439,18 @@ scrypt-js@3.0.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
-semver@7.x, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.5.2:
+semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4:
version "7.5.4"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
dependencies:
lru-cache "^6.0.0"
-semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
- version "6.3.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
- integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -6212,14 +6480,15 @@ shell-quote@^1.6.1:
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680"
integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
-shiki@^0.10.1:
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.10.1.tgz#6f9a16205a823b56c072d0f1a0bcd0f2646bef14"
- integrity sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==
+shiki@^0.14.1:
+ version "0.14.3"
+ resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.3.tgz#d1a93c463942bdafb9866d74d619a4347d0bbf64"
+ integrity sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==
dependencies:
- jsonc-parser "^3.0.0"
- vscode-oniguruma "^1.6.1"
- vscode-textmate "5.2.0"
+ ansi-sequence-parser "^1.1.0"
+ jsonc-parser "^3.2.0"
+ vscode-oniguruma "^1.7.0"
+ vscode-textmate "^8.0.0"
side-channel@^1.0.4:
version "1.0.4"
@@ -6230,7 +6499,7 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
-signal-exit@^3.0.2, signal-exit@^3.0.3:
+signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
@@ -6245,33 +6514,19 @@ slash@^3.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-slice-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
- integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
- dependencies:
- ansi-styles "^4.0.0"
- astral-regex "^2.0.0"
- is-fullwidth-code-point "^3.0.0"
-
-source-map-support@^0.5.6:
- version "0.5.21"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
- integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+source-map-support@0.5.13:
+ version "0.5.13"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
+ integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+source-map@^0.6.0, source-map@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-source-map@^0.7.3:
- version "0.7.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
- integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
-
spdx-correct@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c"
@@ -6450,6 +6705,11 @@ strip-final-newline@^2.0.0:
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+strip-final-newline@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
+ integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
+
strip-indent@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
@@ -6457,7 +6717,14 @@ strip-indent@^3.0.0:
dependencies:
min-indent "^1.0.0"
-strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+strip-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853"
+ integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==
+ dependencies:
+ min-indent "^1.0.1"
+
+strip-json-comments@3.1.1, strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
@@ -6469,13 +6736,13 @@ strip-outer@^1.0.1:
dependencies:
escape-string-regexp "^1.0.2"
-strtok3@^6.0.3:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0"
- integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==
+strtok3@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-7.0.0.tgz#868c428b4ade64a8fd8fee7364256001c1a4cbe5"
+ integrity sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==
dependencies:
"@tokenizer/token" "^0.3.0"
- peek-readable "^4.1.0"
+ peek-readable "^5.0.0"
supports-color@^5.3.0:
version "5.5.0"
@@ -6484,7 +6751,7 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
-supports-color@^7.0.0, supports-color@^7.1.0:
+supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
@@ -6498,24 +6765,11 @@ supports-color@^8.0.0:
dependencies:
has-flag "^4.0.0"
-supports-hyperlinks@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624"
- integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==
- dependencies:
- has-flag "^4.0.0"
- supports-color "^7.0.0"
-
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-symbol-tree@^3.2.4:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
- integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
-
table-layout@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04"
@@ -6526,40 +6780,20 @@ table-layout@^1.0.2:
typical "^5.2.0"
wordwrapjs "^4.0.0"
-table@^6.0.9:
- version "6.8.1"
- resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf"
- integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==
- dependencies:
- ajv "^8.0.1"
- lodash.truncate "^4.4.2"
- slice-ansi "^4.0.0"
- string-width "^4.2.3"
- strip-ansi "^6.0.1"
-
-temp-dir@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d"
- integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==
-
-temp-write@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-4.0.0.tgz#cd2e0825fc826ae72d201dc26eef3bf7e6fc9320"
- integrity sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==
- dependencies:
- graceful-fs "^4.1.15"
- is-stream "^2.0.0"
- make-dir "^3.0.0"
- temp-dir "^1.0.0"
- uuid "^3.3.2"
+temp-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-3.0.0.tgz#7f147b42ee41234cc6ba3138cd8e8aa2302acffa"
+ integrity sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==
-terminal-link@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994"
- integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==
+tempy@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/tempy/-/tempy-3.1.0.tgz#00958b6df85db8589cb595465e691852aac038e9"
+ integrity sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==
dependencies:
- ansi-escapes "^4.2.1"
- supports-hyperlinks "^2.0.0"
+ is-stream "^3.0.0"
+ temp-dir "^3.0.0"
+ type-fest "^2.12.2"
+ unique-string "^3.0.0"
test-exclude@^6.0.0:
version "6.0.0"
@@ -6580,11 +6814,6 @@ text-table@^0.2.0:
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
-throat@^6.0.1:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe"
- integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==
-
through2@^2.0.0:
version "2.0.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
@@ -6605,6 +6834,11 @@ through@2, "through@>=2.2.7 <3", through@^2.3.6:
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+titleize@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53"
+ integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==
+
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
@@ -6629,36 +6863,29 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
-token-types@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/token-types/-/token-types-2.1.1.tgz#bd585d64902aaf720b8979d257b4b850b4d45c45"
- integrity sha512-wnQcqlreS6VjthyHO3Y/kpK/emflxDBNhlNUPfh7wE39KnuDdOituXomIbyI79vBtF0Ninpkh72mcuRHo+RG3Q==
+token-types@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/token-types/-/token-types-5.0.1.tgz#aa9d9e6b23c420a675e55413b180635b86a093b4"
+ integrity sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==
dependencies:
- "@tokenizer/token" "^0.1.1"
+ "@tokenizer/token" "^0.3.0"
ieee754 "^1.2.1"
-tough-cookie@^4.0.0:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf"
- integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==
- dependencies:
- psl "^1.1.33"
- punycode "^2.1.1"
- universalify "^0.2.0"
- url-parse "^1.5.3"
-
-tr46@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240"
- integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==
- dependencies:
- punycode "^2.1.1"
+toposort@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330"
+ integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==
trim-newlines@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
+trim-newlines@^4.0.2:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-4.1.1.tgz#28c88deb50ed10c7ba6dc2474421904a00139125"
+ integrity sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==
+
trim-repeated@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
@@ -6666,6 +6893,11 @@ trim-repeated@^1.0.0:
dependencies:
escape-string-regexp "^1.0.2"
+ts-api-utils@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.2.tgz#7c094f753b6705ee4faee25c3c684ade52d66d99"
+ integrity sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==
+
ts-command-line-args@^2.2.0:
version "2.5.1"
resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0"
@@ -6681,19 +6913,19 @@ ts-essentials@^7.0.1:
resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38"
integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==
-ts-jest@^27.0.3:
- version "27.1.5"
- resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297"
- integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==
+ts-jest@^29.1.1:
+ version "29.1.1"
+ resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b"
+ integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==
dependencies:
bs-logger "0.x"
fast-json-stable-stringify "2.x"
- jest-util "^27.0.0"
- json5 "2.x"
+ jest-util "^29.0.0"
+ json5 "^2.2.3"
lodash.memoize "4.x"
make-error "1.x"
- semver "7.x"
- yargs-parser "20.x"
+ semver "^7.5.3"
+ yargs-parser "^21.0.1"
ts-node@^10.8.1:
version "10.9.1"
@@ -6714,15 +6946,15 @@ ts-node@^10.8.1:
v8-compile-cache-lib "^3.0.1"
yn "3.1.1"
-ts-unused-exports@^8.0.0:
- version "8.0.5"
- resolved "https://registry.yarnpkg.com/ts-unused-exports/-/ts-unused-exports-8.0.5.tgz#43b1ac25822ec9445b5fc3e57862c0d1f23471cb"
- integrity sha512-ewEHxTtQsYQFQCI12CnMx8D0xxn1/Uui1Wr5jbiX4me+4LlSiOGvt4mGz0hxtIC3eElVaLrKEPbeT3TPrm4JvA==
+ts-unused-exports@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/ts-unused-exports/-/ts-unused-exports-10.0.0.tgz#f2405e6132523f25ee5b5a5af6a703a59c9d5002"
+ integrity sha512-SFRQEBJ/2kUXdt/XAzjXsd2gcWOjYViR1zkXeqI0nPL4r6wyyayZCh/++nlFxNjCkdeGar3cPDHq9K/NBOzTZA==
dependencies:
chalk "^4.0.0"
tsconfig-paths "^3.9.0"
-tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0:
+tsconfig-paths@^3.14.2, tsconfig-paths@^3.9.0:
version "3.14.2"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088"
integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==
@@ -6732,22 +6964,10 @@ tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
-tslib@^1.8.1:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
- integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-
tslib@^2.1.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3"
- integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==
-
-tsutils@^3.21.0:
- version "3.21.0"
- resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
- integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
- dependencies:
- tslib "^1.8.1"
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
@@ -6756,23 +6976,11 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
-type-check@~0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
- integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==
- dependencies:
- prelude-ls "~1.1.2"
-
type-detect@4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
-type-fest@^0.13.1:
- version "0.13.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
- integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
-
type-fest@^0.18.0:
version "0.18.1"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
@@ -6798,22 +7006,67 @@ type-fest@^0.8.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-typechain@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/typechain/-/typechain-7.0.1.tgz#65411991327a7031895b1d57b7e0ce7fc9c66376"
- integrity sha512-4c+ecLW4mTiKwTDdofiN8ToDp7TkFC2Bzp2Pt/+qeKzkmELWzy2eDjCiv0IWHswAZhE2y9KXBhTmShzhIzD+LQ==
+type-fest@^1.0.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1"
+ integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==
+
+type-fest@^2.0.0, type-fest@^2.12.2, type-fest@^2.13.0, type-fest@^2.5.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
+ integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
+
+type-fest@^3.1.0:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706"
+ integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==
+
+typechain@^8.3.1:
+ version "8.3.1"
+ resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.1.tgz#dccbc839b94877997536c356380eff7325395cfb"
+ integrity sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ==
dependencies:
"@types/prettier" "^2.1.1"
- debug "^4.1.1"
+ debug "^4.3.1"
fs-extra "^7.0.0"
- glob "^7.1.6"
+ glob "7.1.7"
js-sha3 "^0.8.0"
lodash "^4.17.15"
mkdirp "^1.0.4"
- prettier "^2.1.2"
+ prettier "^2.3.1"
ts-command-line-args "^2.2.0"
ts-essentials "^7.0.1"
+typed-array-buffer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60"
+ integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.1"
+ is-typed-array "^1.1.10"
+
+typed-array-byte-length@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0"
+ integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==
+ dependencies:
+ call-bind "^1.0.2"
+ for-each "^0.3.3"
+ has-proto "^1.0.1"
+ is-typed-array "^1.1.10"
+
+typed-array-byte-offset@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b"
+ integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ for-each "^0.3.3"
+ has-proto "^1.0.1"
+ is-typed-array "^1.1.10"
+
typed-array-length@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb"
@@ -6823,43 +7076,35 @@ typed-array-length@^1.0.4:
for-each "^0.3.3"
is-typed-array "^1.1.9"
-typedarray-to-buffer@^3.1.5:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
- integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
- dependencies:
- is-typedarray "^1.0.0"
-
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
-typedoc-plugin-missing-exports@^0.22.6:
- version "0.22.6"
- resolved "https://registry.yarnpkg.com/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-0.22.6.tgz#7467c60f1cd26507124103f0b9bca271d5aa8d71"
- integrity sha512-1uguGQqa+c5f33nWS3v1mm0uAx4Ii1lw4Kx2zQksmYFKNEWTmrmMXbMNBoBg4wu0p4dFCNC7JIWPoRzpNS6pFA==
+typedoc-plugin-missing-exports@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-2.1.0.tgz#f283a407eb7b3a43dafc598f44bbfc2d36dc1704"
+ integrity sha512-+1DhqZCEu7Vu5APnrqpPwl31D+hXpt1fV0Le9ycCRL1eLVdatdl6KVt4SEVwPxnEpKwgOn2dNX6I9+0F1aO2aA==
-typedoc@^0.22.11:
- version "0.22.18"
- resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.22.18.tgz#1d000c33b66b88fd8cdfea14a26113a83b7e6591"
- integrity sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==
+typedoc@^0.25.0:
+ version "0.25.0"
+ resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.25.0.tgz#287f83d01c1c2186766884f4e04d698820d68115"
+ integrity sha512-FvCYWhO1n5jACE0C32qg6b3dSfQ8f2VzExnnRboowHtqUD6ARzM2r8YJeZFYXhcm2hI4C2oCRDgNPk/yaQUN9g==
dependencies:
- glob "^8.0.3"
lunr "^2.3.9"
- marked "^4.0.16"
- minimatch "^5.1.0"
- shiki "^0.10.1"
+ marked "^4.3.0"
+ minimatch "^9.0.3"
+ shiki "^0.14.1"
"typescript@^4.6.4 || ^5.0.0":
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.3.tgz#8d84219244a6b40b6fb2b33cc1c062f715b9e826"
- integrity sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==
+ version "5.1.6"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274"
+ integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
-typescript@^4.7.0:
- version "4.9.5"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
- integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+typescript@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
+ integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==
typical@^4.0.0:
version "4.0.0"
@@ -6909,21 +7154,28 @@ unicode-property-aliases-ecmascript@^2.0.0:
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd"
integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
+unique-string@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a"
+ integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==
+ dependencies:
+ crypto-random-string "^4.0.0"
+
universalify@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-universalify@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
- integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
-
universalify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+untildify@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
+ integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
+
update-browserslist-db@^1.0.11:
version "1.0.11"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940"
@@ -6939,44 +7191,26 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
-url-parse@^1.5.3:
- version "1.5.10"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
- integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
- dependencies:
- querystringify "^2.1.1"
- requires-port "^1.0.0"
-
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-uuid@^3.3.2:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
- integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-
v8-compile-cache-lib@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
-v8-compile-cache@^2.0.3:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
- integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
-
-v8-to-istanbul@^8.1.0:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed"
- integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==
+v8-to-istanbul@^9.0.1:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265"
+ integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==
dependencies:
+ "@jridgewell/trace-mapping" "^0.3.12"
"@types/istanbul-lib-coverage" "^2.0.1"
convert-source-map "^1.6.0"
- source-map "^0.7.3"
-validate-npm-package-license@^3.0.1:
+validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
@@ -6984,31 +7218,17 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
-vscode-oniguruma@^1.6.1:
+vscode-oniguruma@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b"
integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==
-vscode-textmate@5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e"
- integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==
-
-w3c-hr-time@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
- integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
- dependencies:
- browser-process-hrtime "^1.0.0"
-
-w3c-xmlserializer@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"
- integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
- dependencies:
- xml-name-validator "^3.0.0"
+vscode-textmate@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d"
+ integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==
-walker@^1.0.7:
+walker@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"
integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
@@ -7022,37 +7242,6 @@ wcwidth@^1.0.1:
dependencies:
defaults "^1.0.3"
-webidl-conversions@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
- integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
-
-webidl-conversions@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
- integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
-
-whatwg-encoding@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
- integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
- dependencies:
- iconv-lite "0.4.24"
-
-whatwg-mimetype@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
- integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
-
-whatwg-url@^8.0.0, whatwg-url@^8.5.0:
- version "8.7.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77"
- integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==
- dependencies:
- lodash "^4.7.0"
- tr46 "^2.1.0"
- webidl-conversions "^6.1.0"
-
which-boxed-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
@@ -7074,17 +7263,16 @@ which-collection@^1.0.1:
is-weakmap "^2.0.1"
is-weakset "^2.0.1"
-which-typed-array@^1.1.9:
- version "1.1.9"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6"
- integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==
+which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a"
+ integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==
dependencies:
available-typed-arrays "^1.0.5"
call-bind "^1.0.2"
for-each "^0.3.3"
gopd "^1.0.1"
has-tostringtag "^1.0.0"
- is-typed-array "^1.1.10"
which@^1.2.14, which@^1.2.9:
version "1.3.1"
@@ -7100,10 +7288,10 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
-word-wrap@^1.0.3, word-wrap@^1.2.3, word-wrap@~1.2.3:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f"
- integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==
+word-wrap@^1.0.3:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
+ integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
wordwrap@^1.0.0:
version "1.0.0"
@@ -7132,36 +7320,19 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-write-file-atomic@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
- integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
+write-file-atomic@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
+ integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
dependencies:
imurmurhash "^0.1.4"
- is-typedarray "^1.0.0"
- signal-exit "^3.0.2"
- typedarray-to-buffer "^3.1.5"
+ signal-exit "^3.0.7"
ws@7.4.6:
version "7.4.6"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
-ws@^7.4.6:
- version "7.5.9"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
- integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
-
-xml-name-validator@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
- integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
-
-xmlchars@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
- integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
-
xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
@@ -7182,18 +7353,20 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3:
+yaml@^1.10.0:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
+yargs-parser@^20.2.2, yargs-parser@^20.2.3:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
-yargs-parser@^18.1.3:
- version "18.1.3"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
- integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
- dependencies:
- camelcase "^5.0.0"
- decamelize "^1.2.0"
+yargs-parser@^21.0.1, yargs-parser@^21.1.1:
+ version "21.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
yargs@^16.0.0, yargs@^16.2.0:
version "16.2.0"
@@ -7208,6 +7381,19 @@ yargs@^16.0.0, yargs@^16.2.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"
+yargs@^17.3.1:
+ version "17.7.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+ integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
@@ -7217,3 +7403,26 @@ yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
+yocto-queue@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
+ integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
+
+yup@^0.32.11:
+ version "0.32.11"
+ resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.11.tgz#d67fb83eefa4698607982e63f7ca4c5ed3cf18c5"
+ integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ "@types/lodash" "^4.14.175"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
+ nanoclone "^0.2.1"
+ property-expr "^2.0.4"
+ toposort "^2.0.2"
+
+zod@^3.22.1:
+ version "3.22.1"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.1.tgz#815f850baf933fef96c1061322dbe579b1a80c27"
+ integrity sha512-+qUhAMl414+Elh+fRNtpU+byrwjDFOS1N7NioLY+tSlcADTx4TkCUua/hxJvxwDXcV4397/nZ420jy4n4+3WUg==