├── .eslintrc ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── others.md ├── pull_request_template.md └── workflows │ ├── codecov.yaml │ └── test.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── lib ├── __tests__ │ └── getParsedEthersError.test.ts ├── constants.ts ├── getParsedEthersError.ts ├── index.ts ├── types.ts └── utils │ ├── getErrorWhileFormattingOutputFromRPCError.ts │ ├── getNestedLevelKnownError.ts │ ├── getTopLevelKnownError.ts │ └── getUnpredictableGasLimitError.ts ├── package.json ├── tsconfig.json ├── vite.config.js └── yarn.lock /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "eslint:recommended", 4 | "plugin:@typescript-eslint/recommended", 5 | "prettier" 6 | ], 7 | "parser": "@typescript-eslint/parser", 8 | "plugins": ["@typescript-eslint"], 9 | "root": true, 10 | "env": { 11 | "node": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG]" 5 | labels: bug 6 | assignees: "" 7 | --- 8 | 9 | **Describe the bug** 10 | 11 | > Please write here a clear and concise description of what the bug is ✍🏻 12 | > If you are reporting a bug related to error parsing, please add the Ethers error trace 🙏🏻 13 | 14 | **Expected behavior** 15 | 16 | > Please write here a clear and concise description of what you expected to happen 🎯 17 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[FEATURE]" 5 | labels: "" 6 | assignees: "" 7 | --- 8 | 9 | **Describe the feature** 10 | 11 | > Please write here a clear and concise description of what the problem is ✍🏻 12 | > If you are requesting support for an unhandled error type, please add the Ethers error trace 🙏🏻 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/others.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Others 3 | about: Any other type of issue 4 | title: "" 5 | labels: "" 6 | assignees: "" 7 | --- 8 | 9 | > Some other type of issue ? Please let us known 🙏🏻 10 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Is your pull request closing an issue? 2 | 3 | Closes # 4 | 5 | ## Please explain the main changes of your pull request 6 | 7 | > Description here ✍🏻 8 | 9 | ## Checklist 10 | 11 | - [ ] Have you added any new returned codes to the README file ? 12 | - [ ] Have you added new tests for your change? 13 | -------------------------------------------------------------------------------- /.github/workflows/codecov.yaml: -------------------------------------------------------------------------------- 1 | name: Codecov 2 | on: 3 | push: 4 | branches: 5 | - main 6 | 7 | jobs: 8 | run-tests: 9 | name: Run tests 10 | runs-on: ubuntu-latest 11 | strategy: 12 | matrix: 13 | node-version: [14.x] 14 | 15 | steps: 16 | - name: Checkout repository 17 | uses: actions/checkout@v2 18 | 19 | - name: Use Node.js ${{ matrix.node-version }} 20 | uses: actions/setup-node@v2 21 | with: 22 | registry-url: https://registry.npmjs.org 23 | 24 | - name: Restore yarn cache if available 25 | uses: actions/cache@v2 26 | id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) 27 | with: 28 | path: | 29 | node_modules 30 | */*/node_modules 31 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 32 | 33 | - name: Install dependencies 34 | run: | 35 | yarn install --frozen-lockfile 36 | 37 | - name: Generate coverage reports 38 | run: | 39 | yarn test:ci 40 | env: 41 | CI: true 42 | 43 | - name: Upload coverage 44 | uses: codecov/codecov-action@v3 45 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | on: 3 | pull_request: 4 | types: [opened, reopened, synchronize] 5 | 6 | jobs: 7 | run-tests: 8 | name: Run tests 9 | runs-on: ubuntu-latest 10 | strategy: 11 | matrix: 12 | node-version: [14.x] 13 | 14 | steps: 15 | - name: Cancel previous runs 16 | uses: styfle/cancel-workflow-action@0.5.0 17 | with: 18 | access_token: ${{ github.token }} 19 | 20 | - name: Checkout repository 21 | uses: actions/checkout@v2 22 | 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v2 25 | with: 26 | registry-url: https://registry.npmjs.org 27 | 28 | - name: Restore yarn cache if available 29 | uses: actions/cache@v2 30 | id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) 31 | with: 32 | path: | 33 | node_modules 34 | */*/node_modules 35 | key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} 36 | 37 | - name: Install dependencies 38 | run: | 39 | yarn install --frozen-lockfile 40 | 41 | - name: Run TypeScript type checker 42 | run: | 43 | yarn ts:check 44 | env: 45 | CI: true 46 | 47 | - name: Run formatting check 48 | run: | 49 | yarn format:check 50 | env: 51 | CI: true 52 | 53 | - name: Run linting check 54 | run: | 55 | yarn lint 56 | env: 57 | CI: true 58 | 59 | - name: Run tests 60 | run: | 61 | yarn test:ci 62 | env: 63 | CI: true 64 | 65 | - name: Upload coverage 66 | uses: codecov/codecov-action@v3 67 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | # Vitest 27 | coverage 28 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | coverage -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enzoferey/ethers-error-parser/f9dc429ab47828240a1828130dfc54bad27b3159/.prettierrc -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Enzo Ferey 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ethers-error-parser 2 | 3 | ![Tests](https://github.com/enzoferey/ethers-error-parser/actions/workflows/test.yml/badge.svg) 4 | [![npm version](https://badge.fury.io/js/@enzoferey%2Fethers-error-parser.svg)](https://badge.fury.io/js/@enzoferey%2Fethers-error-parser) 5 | [![codecov](https://codecov.io/gh/enzoferey/ethers-error-parser/branch/main/graph/badge.svg?token=9amQLrkrar)](https://codecov.io/gh/enzoferey/ethers-error-parser) 6 | ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@enzoferey/ethers-error-parser?color=g&label=gzip%20size) 7 | 8 | Parse Ethers.js errors with ease 💅🏻 9 | 10 | ## Highlights 11 | 12 | - Zero dependencies 🧹 13 | - Lightweight 📦 14 | - Simple to use ⚡️ 15 | - Work in progress 🚧 16 | 17 | ## Why 18 | 19 | [Ethers.js](https://github.com/ethers-io/ethers.js/) is well known for its cryptic error messages. Whenever a transaction fails you will get an error message that combines plain text and JSON stringified string like this: 20 | 21 | ``` 22 | Error: cannot estimate gas; transaction may fail or may require manual gas limit (error={"code":-32603,"message":"execution reverted: Code has already claimed","data":{"originalError":{"code":3,"data":"0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000018436f64652068617320616c726561647920636c61696d65640000000000000000","message":"execution reverted: Code has already claimed"}}}, method="estimateGas", transaction={"from":"0xC16f5C62b29704F7aBECb27A3cb7E12a91383261","to":"0xb21FFFd62BD2f4aBd2a1dC34A2302Fda364977a0","data":"0xd2c34d3f0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000063132333435360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004153801a64156372ec7cd1d91868dd35ed68972dfa8b347c59db14bc49b753ed576fbe8a2bc00b6d0ba5dc8429c01748ae55e87dffa9547aafeb844aa40bb6c3e31b00000000000000000000000000000000000000000000000000000000000000","accessList":null}, code=UNPREDICTABLE_GAS_LIMIT, version=providers/5.5.1) 23 | ``` 24 | 25 | Your users deserve to get amazing feedback on failing transactions. Thanks to `ethers-error-parser` you can do that with ease. 26 | 27 | ## Work in progress 28 | 29 | This package is a work in progress. Although it is not yet complete and many Ethers errors could be handled more elegantly, it is safe to use in production as it is. Some insights is better than no insights. 30 | 31 | This package is being used in different production projects and it is in constant evolution based on the needs of these projects. If you find some error that is not handled yet or that does not provide a great context, please open an issue or pull request 🙏 32 | 33 | ## Getting started 34 | 35 | 1. Install the package 36 | 37 | ```sh 38 | yarn add @enzoferey/ethers-error-parser 39 | ``` 40 | 41 | 2. Use it 42 | 43 | ```ts 44 | import { getParsedEthersError } from "@enzoferey/ethers-error-parser"; 45 | 46 | try { 47 | const transaction = await someContract.someMethod(); 48 | await transaction.wait(); 49 | } catch (error) { 50 | const parsedEthersError = getParsedEthersError(error); 51 | // parsedError.errorCode - contains a well defined error code (see full list below) 52 | // parsedError.context - contains a context based string providing additional information 53 | // profit ! 💅🏻 54 | } 55 | ``` 56 | 57 | ## Return value 58 | 59 | When using `getParsedEthersError` you will get back an object containing a well known `errorCode` property and an optional `context` property with additional information. The TypeScript type definition looks like the following: 60 | 61 | ```ts 62 | interface ReturnValue { 63 | errorCode: string; 64 | context?: string; 65 | } 66 | ``` 67 | 68 | Here is the complete list of returned objects: 69 | 70 | | `errorCode` | `context` | 71 | | ------------------------------------------------------ | -------------------------------------------------------------------------- | 72 | | `TRANSACTION_RAN_OUT_OF_GAS` | The transaction gas limit as a string. | 73 | | `TRANSACTION_UNDERPRICED` | `undefined` | 74 | | `REJECTED_TRANSACTION` | The reason why the transaction rejected. | 75 | | `CALL_REVERTED` | The reason why the call reverted. | 76 | | `EXECUTION_REVERTED` | The reason why the transaction reverted. | 77 | | `NONCE_TOO_LOW` | The transaction nonce as a string. | 78 | | `INSUFFICIENT_FUNDS_FOR_GAS` | `undefined` | 79 | | `MAX_PRIORITY_FEE_PER_GAS_HIGHER_THAN_MAX_FEE_PER_GAS` | `undefined ` | 80 | | `MAX_FEE_PER_GAS_LESS_THAN_BLOCK_BASE_FEE` | `undefined ` | 81 | | `UNKNOWN_ERROR` | Some code or description of the error if available. `undefined` otherwise. | 82 | 83 | The error codes strings can be accesses via the `RETURN_VALUE_ERROR_CODES` constant that the package exports. 84 | 85 | If you find some error that is not handled yet or that does not provide a great context, please open an issue or pull request 🙏 86 | 87 | ## TypeScript usage 88 | 89 | If you are using TypeScript, you may find the required types exported at the root of the package. For example, when handling a common try / catch statement, you will need to cast the error to use the internal `EthersError` type: 90 | 91 | ```ts 92 | import { 93 | getParsedEthersError, 94 | EthersError, 95 | } from "@enzoferey/ethers-error-parser"; 96 | 97 | try { 98 | const transaction = await someContract.someMethod(); 99 | await transaction.wait(); 100 | } catch (error) { 101 | const parsedEthersError = getParsedEthersError(error as EthersError); 102 | } 103 | ``` 104 | -------------------------------------------------------------------------------- /lib/__tests__/getParsedEthersError.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, it } from "vitest"; 2 | 3 | import type { BigNumber } from "../types"; 4 | import { 5 | RETURN_VALUE_ERROR_CODES, 6 | ETHERS_ERROR_CODES, 7 | NESTED_ETHERS_ERROR_CODES, 8 | } from "../constants"; 9 | import { getParsedEthersError } from "../getParsedEthersError"; 10 | 11 | function getTestBigNumber(value: string): BigNumber { 12 | return { 13 | gte: (other) => { 14 | return parseFloat(value) >= parseFloat(other.toString()); 15 | }, 16 | toString: () => { 17 | return value; 18 | }, 19 | }; 20 | } 21 | 22 | describe("getParsedEthersError", () => { 23 | it("should handle transaction underpriced", () => { 24 | const result = getParsedEthersError({ 25 | message: "", 26 | error: { 27 | code: NESTED_ETHERS_ERROR_CODES.ERROR_WHILE_FORMATTING_OUTPUT_FROM_RPC, 28 | message: `RPC '{"value":{"data":{"code":${NESTED_ETHERS_ERROR_CODES.TRANSACTION_UNDERPRICED}}}}'`, 29 | }, 30 | }); 31 | 32 | expect(result).toEqual({ 33 | errorCode: RETURN_VALUE_ERROR_CODES.TRANSACTION_UNDERPRICED, 34 | context: undefined, 35 | }); 36 | }); 37 | it("should handle transaction underpriced that provides an unknown code", () => { 38 | const message = `RPC '{"value":{"data":{"code":"SOME UNKNOWN CODE"}}}'`; 39 | 40 | const result = getParsedEthersError({ 41 | message: "", 42 | error: { 43 | code: NESTED_ETHERS_ERROR_CODES.ERROR_WHILE_FORMATTING_OUTPUT_FROM_RPC, 44 | message, 45 | }, 46 | }); 47 | 48 | expect(result).toEqual({ 49 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 50 | context: message, 51 | }); 52 | }); 53 | it("should handle transaction underpriced that does not provide the right JSON details", () => { 54 | const message = `RPC '{}'`; 55 | 56 | const result2 = getParsedEthersError({ 57 | message: "", 58 | error: { 59 | code: NESTED_ETHERS_ERROR_CODES.ERROR_WHILE_FORMATTING_OUTPUT_FROM_RPC, 60 | message, 61 | }, 62 | }); 63 | 64 | expect(result2).toEqual({ 65 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 66 | context: message, 67 | }); 68 | }); 69 | it("should handle transaction underpriced that does not provide a valid JSON details", () => { 70 | const message = `RPC 'not-a-json'`; 71 | 72 | const result = getParsedEthersError({ 73 | message: "", 74 | error: { 75 | code: NESTED_ETHERS_ERROR_CODES.ERROR_WHILE_FORMATTING_OUTPUT_FROM_RPC, 76 | message, 77 | }, 78 | }); 79 | 80 | expect(result).toEqual({ 81 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 82 | context: message, 83 | }); 84 | }); 85 | it("should handle calls reverted via code", () => { 86 | const reason = "TOKEN_ID_DOES_NOT_EXIST"; 87 | 88 | const result = getParsedEthersError({ 89 | message: "", 90 | code: ETHERS_ERROR_CODES.CALL_EXCEPTION, 91 | reason, 92 | }); 93 | 94 | expect(result).toEqual({ 95 | errorCode: RETURN_VALUE_ERROR_CODES.CALL_REVERTED, 96 | context: reason, 97 | }); 98 | }); 99 | it("should handle transaction rejected via code", () => { 100 | const message = "User rejected transaction"; 101 | 102 | const result = getParsedEthersError({ 103 | message, 104 | code: ETHERS_ERROR_CODES.ACTION_REJECTED, 105 | action: "sendTransaction", 106 | }); 107 | 108 | expect(result).toEqual({ 109 | errorCode: RETURN_VALUE_ERROR_CODES.REJECTED_TRANSACTION, 110 | context: message, 111 | }); 112 | }); 113 | it("should handle transaction rejected via error code", () => { 114 | const message = "User rejected transaction"; 115 | 116 | const result = getParsedEthersError({ 117 | message: "", 118 | error: { 119 | code: NESTED_ETHERS_ERROR_CODES.REJECTED_TRANSACTION, 120 | message, 121 | }, 122 | }); 123 | 124 | expect(result).toEqual({ 125 | errorCode: RETURN_VALUE_ERROR_CODES.REJECTED_TRANSACTION, 126 | context: message, 127 | }); 128 | }); 129 | it("should handle execution reverted", () => { 130 | const reason = "Some reason"; 131 | 132 | const result = getParsedEthersError({ 133 | message: "", 134 | error: { 135 | code: NESTED_ETHERS_ERROR_CODES.REQUIRE_TRANSACTION, 136 | message: `execution reverted: ${reason}`, 137 | }, 138 | }); 139 | 140 | expect(result).toEqual({ 141 | errorCode: RETURN_VALUE_ERROR_CODES.EXECUTION_REVERTED, 142 | context: reason, 143 | }); 144 | }); 145 | it("should handle execution reverted gas estimate errors", () => { 146 | const reason = "Some reason"; 147 | 148 | const result = getParsedEthersError({ 149 | code: ETHERS_ERROR_CODES.UNPREDICTABLE_GAS_LIMIT, 150 | message: "", 151 | error: { 152 | code: NESTED_ETHERS_ERROR_CODES.REQUIRE_TRANSACTION, 153 | data: { 154 | message: `execution reverted: ${reason}`, 155 | }, 156 | }, 157 | }); 158 | 159 | expect(result).toEqual({ 160 | errorCode: RETURN_VALUE_ERROR_CODES.EXECUTION_REVERTED, 161 | context: reason, 162 | }); 163 | }); 164 | it("should handle no enough funds for gas", () => { 165 | const result = getParsedEthersError({ 166 | code: ETHERS_ERROR_CODES.UNPREDICTABLE_GAS_LIMIT, 167 | message: "", 168 | error: { 169 | error: { 170 | error: { 171 | code: NESTED_ETHERS_ERROR_CODES.TRANSACTION_UNDERPRICED, 172 | }, 173 | body: '{"error":{"message":"gas required exceeds allowance (0)"}}', 174 | }, 175 | }, 176 | }); 177 | 178 | expect(result).toEqual({ 179 | errorCode: RETURN_VALUE_ERROR_CODES.INSUFFICIENT_FUNDS_FOR_GAS, 180 | context: undefined, 181 | }); 182 | }); 183 | it("should handle max priority fee per gas higher than max fee per gas", () => { 184 | const result = getParsedEthersError({ 185 | code: ETHERS_ERROR_CODES.UNPREDICTABLE_GAS_LIMIT, 186 | message: "", 187 | error: { 188 | error: { 189 | error: { 190 | code: NESTED_ETHERS_ERROR_CODES.TRANSACTION_UNDERPRICED, 191 | }, 192 | body: '{"error":{"message":"max priority fee per gas higher than max fee per gas"}}', 193 | }, 194 | }, 195 | }); 196 | 197 | expect(result).toEqual({ 198 | errorCode: 199 | RETURN_VALUE_ERROR_CODES.MAX_PRIORITY_FEE_PER_GAS_HIGHER_THAN_MAX_FEE_PER_GAS, 200 | context: undefined, 201 | }); 202 | }); 203 | it("should handle max fee per gas less than block base fee", () => { 204 | const result = getParsedEthersError({ 205 | code: ETHERS_ERROR_CODES.UNPREDICTABLE_GAS_LIMIT, 206 | message: "", 207 | error: { 208 | error: { 209 | error: { 210 | code: NESTED_ETHERS_ERROR_CODES.TRANSACTION_UNDERPRICED, 211 | }, 212 | body: '{"error":{"message":"max fee per gas less than block base fee"}}', 213 | }, 214 | }, 215 | }); 216 | 217 | expect(result).toEqual({ 218 | errorCode: 219 | RETURN_VALUE_ERROR_CODES.MAX_FEE_PER_GAS_LESS_THAN_BLOCK_BASE_FEE, 220 | context: undefined, 221 | }); 222 | }); 223 | it("should handle nonce too low errors", () => { 224 | const nonce = 100; 225 | 226 | const result = getParsedEthersError({ 227 | code: ETHERS_ERROR_CODES.NONCE_EXPIRED, 228 | message: "nonce has already been used", 229 | transaction: { 230 | gasLimit: getTestBigNumber("1"), 231 | nonce, 232 | }, 233 | }); 234 | 235 | expect(result).toEqual({ 236 | errorCode: RETURN_VALUE_ERROR_CODES.NONCE_TOO_LOW, 237 | context: nonce.toString(), 238 | }); 239 | }); 240 | it("should handle unknown unpredictable gas limit errors", () => { 241 | const result = getParsedEthersError({ 242 | code: ETHERS_ERROR_CODES.UNPREDICTABLE_GAS_LIMIT, 243 | message: "", 244 | }); 245 | 246 | expect(result).toEqual({ 247 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 248 | context: ETHERS_ERROR_CODES.UNPREDICTABLE_GAS_LIMIT, 249 | }); 250 | }); 251 | it("should handle unpredictable gas limit with transaction underpriced code but non valid JSON body", () => { 252 | const result = getParsedEthersError({ 253 | code: ETHERS_ERROR_CODES.UNPREDICTABLE_GAS_LIMIT, 254 | message: "", 255 | error: { 256 | error: { 257 | error: { 258 | code: NESTED_ETHERS_ERROR_CODES.TRANSACTION_UNDERPRICED, 259 | }, 260 | body: "not-a-json", 261 | }, 262 | }, 263 | }); 264 | 265 | expect(result).toEqual({ 266 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 267 | context: ETHERS_ERROR_CODES.UNPREDICTABLE_GAS_LIMIT, 268 | }); 269 | }); 270 | it("should handle transaction ran out of gas errors", () => { 271 | const gasLimit = getTestBigNumber("100"); 272 | const gasUsed = getTestBigNumber("100"); 273 | 274 | const result = getParsedEthersError({ 275 | message: "", 276 | transaction: { 277 | gasLimit, 278 | nonce: 0, 279 | }, 280 | receipt: { 281 | gasUsed, 282 | }, 283 | }); 284 | 285 | expect(result).toEqual({ 286 | errorCode: RETURN_VALUE_ERROR_CODES.TRANSACTION_RAN_OUT_OF_GAS, 287 | context: gasLimit.toString(), 288 | }); 289 | }); 290 | it("should handle unknown errors with a nested level error", () => { 291 | const code = "SOME INTERNAL ETHERS CODE"; 292 | const message = "Some internal Ethers error message"; 293 | 294 | const result = getParsedEthersError({ 295 | message: "", 296 | error: { 297 | code, 298 | message, 299 | }, 300 | }); 301 | 302 | expect(result).toEqual({ 303 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 304 | context: message, 305 | }); 306 | }); 307 | it("should handle unknown errors with only a nested level error message", () => { 308 | const message = "Some internal Ethers error message"; 309 | 310 | const result = getParsedEthersError({ 311 | message: "", 312 | error: { 313 | message, 314 | }, 315 | }); 316 | 317 | expect(result).toEqual({ 318 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 319 | context: message, 320 | }); 321 | }); 322 | it("should handle unknown errors with a top level error code", () => { 323 | const code = "SOME INTERNAL ETHERS CODE"; 324 | 325 | const result = getParsedEthersError({ code, message: "" }); 326 | 327 | expect(result).toEqual({ 328 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 329 | context: code, 330 | }); 331 | }); 332 | it("should handle totally unknown errors", () => { 333 | const result = getParsedEthersError({ message: "" }); 334 | 335 | expect(result).toEqual({ 336 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 337 | context: undefined, 338 | }); 339 | }); 340 | }); 341 | -------------------------------------------------------------------------------- /lib/constants.ts: -------------------------------------------------------------------------------- 1 | export const RETURN_VALUE_ERROR_CODES = { 2 | TRANSACTION_RAN_OUT_OF_GAS: "TRANSACTION_RAN_OUT_OF_GAS", 3 | TRANSACTION_UNDERPRICED: "TRANSACTION_UNDERPRICED", 4 | REJECTED_TRANSACTION: "REJECTED_TRANSACTION", 5 | CALL_REVERTED: "CALL_REVERTED", 6 | EXECUTION_REVERTED: "EXECUTION_REVERTED", 7 | NONCE_TOO_LOW: "NONCE_TOO_LOW", 8 | INSUFFICIENT_FUNDS_FOR_GAS: "INSUFFICIENT_FUNDS_FOR_GAS", 9 | MAX_PRIORITY_FEE_PER_GAS_HIGHER_THAN_MAX_FEE_PER_GAS: 10 | "MAX_PRIORITY_FEE_PER_GAS_HIGHER_THAN_MAX_FEE_PER_GAS", 11 | MAX_FEE_PER_GAS_LESS_THAN_BLOCK_BASE_FEE: 12 | "MAX_FEE_PER_GAS_LESS_THAN_BLOCK_BASE_FEE", 13 | UNKNOWN_ERROR: "UNKNOWN_ERROR", 14 | } as const; 15 | 16 | export const ETHERS_ERROR_CODES = { 17 | NONCE_EXPIRED: "NONCE_EXPIRED", 18 | UNPREDICTABLE_GAS_LIMIT: "UNPREDICTABLE_GAS_LIMIT", 19 | ACTION_REJECTED: "ACTION_REJECTED", 20 | CALL_EXCEPTION: "CALL_EXCEPTION", 21 | }; 22 | 23 | export const NESTED_ETHERS_ERROR_CODES = { 24 | REJECTED_TRANSACTION: 4001, 25 | REQUIRE_TRANSACTION: -32603, 26 | ERROR_WHILE_FORMATTING_OUTPUT_FROM_RPC: -32603, 27 | TRANSACTION_UNDERPRICED: -32000, 28 | }; 29 | -------------------------------------------------------------------------------- /lib/getParsedEthersError.ts: -------------------------------------------------------------------------------- 1 | import type { EthersError, ReturnValue } from "./types"; 2 | import { RETURN_VALUE_ERROR_CODES } from "./constants"; 3 | import { getNestedLevelKnownError } from "./utils/getNestedLevelKnownError"; 4 | import { getTopLevelKnownError } from "./utils/getTopLevelKnownError"; 5 | 6 | export function getParsedEthersError(error: EthersError): ReturnValue { 7 | const topLevelEthersError = error; 8 | const nestedLevelEthersError = error.error; 9 | 10 | // Handle top level known error codes 11 | const topLevelKnownErrorCode = getTopLevelKnownError(topLevelEthersError); 12 | if (topLevelKnownErrorCode !== undefined) { 13 | return topLevelKnownErrorCode; 14 | } 15 | 16 | // Handle nested level known error codes 17 | if (nestedLevelEthersError !== undefined) { 18 | const nestedLevelKnownErrorCode = getNestedLevelKnownError( 19 | nestedLevelEthersError 20 | ); 21 | if (nestedLevelKnownErrorCode !== undefined) { 22 | return nestedLevelKnownErrorCode; 23 | } 24 | } 25 | 26 | // Check for ran out of gas error 27 | if ( 28 | topLevelEthersError.transaction !== undefined && 29 | topLevelEthersError.receipt !== undefined 30 | ) { 31 | const transactionGasLimit = topLevelEthersError.transaction.gasLimit; 32 | const receiptGasUsed = topLevelEthersError.receipt.gasUsed; 33 | 34 | if (receiptGasUsed.gte(transactionGasLimit)) { 35 | return { 36 | errorCode: RETURN_VALUE_ERROR_CODES.TRANSACTION_RAN_OUT_OF_GAS, 37 | context: topLevelEthersError.transaction.gasLimit.toString(), 38 | }; 39 | } 40 | } 41 | 42 | // If we reach here, we should improve previous parsing to not reach this point any longer 43 | 44 | // Try providing some context via the nested level error message 45 | if (error.error !== undefined && error.error.message !== undefined) { 46 | return { 47 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 48 | context: error.error.message, 49 | }; 50 | } 51 | 52 | // Try providing some context via the top level error code 53 | if (topLevelEthersError.code !== undefined) { 54 | return { 55 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 56 | context: topLevelEthersError.code.toString(), 57 | }; 58 | } 59 | 60 | return { 61 | errorCode: RETURN_VALUE_ERROR_CODES.UNKNOWN_ERROR, 62 | context: undefined, 63 | }; 64 | } 65 | -------------------------------------------------------------------------------- /lib/index.ts: -------------------------------------------------------------------------------- 1 | export { getParsedEthersError } from "./getParsedEthersError"; 2 | export { RETURN_VALUE_ERROR_CODES } from "./constants"; 3 | export type { EthersError, ReturnValue } from "./types"; 4 | -------------------------------------------------------------------------------- /lib/types.ts: -------------------------------------------------------------------------------- 1 | import { RETURN_VALUE_ERROR_CODES } from "./constants"; 2 | 3 | export interface BigNumber { 4 | gte: (other: BigNumber) => boolean; 5 | toString: () => string; 6 | } 7 | 8 | export interface EthersError { 9 | code?: string | number; 10 | message: string; 11 | error?: NestedEthersError; 12 | transaction?: { 13 | gasLimit: BigNumber; 14 | nonce: number; 15 | }; 16 | receipt?: { 17 | gasUsed: BigNumber; 18 | }; 19 | action?: string; 20 | reason?: string; 21 | } 22 | 23 | export interface NestedEthersError { 24 | code?: string | number; 25 | message?: string; 26 | data?: { 27 | message?: string; 28 | }; 29 | error?: { 30 | error?: { 31 | code?: string | number; 32 | }; 33 | body?: string; 34 | }; 35 | } 36 | 37 | type ValueOf = T[keyof T]; 38 | 39 | type ErrorCode = ValueOf; 40 | 41 | export type ReturnValue = { 42 | errorCode: ErrorCode; 43 | context?: string; 44 | }; 45 | -------------------------------------------------------------------------------- /lib/utils/getErrorWhileFormattingOutputFromRPCError.ts: -------------------------------------------------------------------------------- 1 | import type { ReturnValue } from "../types"; 2 | import { 3 | RETURN_VALUE_ERROR_CODES, 4 | NESTED_ETHERS_ERROR_CODES, 5 | } from "../constants"; 6 | 7 | export function getErrorWhileFormattingOutputFromRPCError( 8 | errorCode: string | number, 9 | errorCodeMessage: string 10 | ): ReturnValue | undefined { 11 | if ( 12 | errorCode !== 13 | NESTED_ETHERS_ERROR_CODES.ERROR_WHILE_FORMATTING_OUTPUT_FROM_RPC 14 | ) { 15 | return undefined; 16 | } 17 | 18 | const stringifiedValue = errorCodeMessage.split("RPC '")[1]?.slice(0, -1); 19 | if (stringifiedValue === undefined) { 20 | return undefined; 21 | } 22 | 23 | try { 24 | const valueObject = JSON.parse(stringifiedValue) as { 25 | value?: { data?: { code?: number } }; 26 | }; 27 | 28 | if ( 29 | valueObject.value === undefined || 30 | valueObject.value.data === undefined 31 | ) { 32 | return undefined; 33 | } 34 | 35 | if ( 36 | valueObject.value.data.code === 37 | NESTED_ETHERS_ERROR_CODES.TRANSACTION_UNDERPRICED 38 | ) { 39 | return { 40 | errorCode: RETURN_VALUE_ERROR_CODES.TRANSACTION_UNDERPRICED, 41 | context: undefined, 42 | }; 43 | } 44 | } catch { 45 | return undefined; 46 | } 47 | 48 | return undefined; 49 | } 50 | -------------------------------------------------------------------------------- /lib/utils/getNestedLevelKnownError.ts: -------------------------------------------------------------------------------- 1 | import { 2 | RETURN_VALUE_ERROR_CODES, 3 | NESTED_ETHERS_ERROR_CODES, 4 | } from "../constants"; 5 | import type { NestedEthersError, ReturnValue } from "../types"; 6 | 7 | import { getErrorWhileFormattingOutputFromRPCError } from "./getErrorWhileFormattingOutputFromRPCError"; 8 | 9 | export function getNestedLevelKnownError( 10 | ethersError: NestedEthersError 11 | ): ReturnValue | undefined { 12 | const errorCode = ethersError.code; 13 | const errorCodeMessage = ethersError.message; 14 | 15 | if (errorCode === undefined) { 16 | return undefined; 17 | } 18 | 19 | // Handle error while formatting output from RPC 20 | if (errorCodeMessage !== undefined) { 21 | const errorWhileFormattingOutputFromRPC = 22 | getErrorWhileFormattingOutputFromRPCError(errorCode, errorCodeMessage); 23 | 24 | if (errorWhileFormattingOutputFromRPC !== undefined) { 25 | return errorWhileFormattingOutputFromRPC; 26 | } 27 | } 28 | 29 | // Check other known error codes 30 | if (errorCode === NESTED_ETHERS_ERROR_CODES.REJECTED_TRANSACTION) { 31 | return { 32 | errorCode: RETURN_VALUE_ERROR_CODES.REJECTED_TRANSACTION, 33 | context: errorCodeMessage, 34 | }; 35 | } 36 | 37 | if ( 38 | errorCode === NESTED_ETHERS_ERROR_CODES.REQUIRE_TRANSACTION && 39 | errorCodeMessage !== undefined 40 | ) { 41 | if (errorCodeMessage.includes("execution reverted: ")) { 42 | return { 43 | errorCode: RETURN_VALUE_ERROR_CODES.EXECUTION_REVERTED, 44 | context: errorCodeMessage.slice("execution reverted: ".length), 45 | }; 46 | } 47 | } 48 | 49 | return undefined; 50 | } 51 | -------------------------------------------------------------------------------- /lib/utils/getTopLevelKnownError.ts: -------------------------------------------------------------------------------- 1 | import { RETURN_VALUE_ERROR_CODES, ETHERS_ERROR_CODES } from "../constants"; 2 | import type { EthersError, ReturnValue } from "../types"; 3 | 4 | import { getUnpredictableGasLimitError } from "./getUnpredictableGasLimitError"; 5 | 6 | export function getTopLevelKnownError( 7 | ethersError: EthersError 8 | ): ReturnValue | undefined { 9 | if ( 10 | ethersError.code === ETHERS_ERROR_CODES.NONCE_EXPIRED && 11 | ethersError.transaction !== undefined 12 | ) { 13 | return { 14 | errorCode: RETURN_VALUE_ERROR_CODES.NONCE_TOO_LOW, 15 | context: ethersError.transaction.nonce.toString(), 16 | }; 17 | } 18 | 19 | if ( 20 | ethersError.code === ETHERS_ERROR_CODES.ACTION_REJECTED && 21 | ethersError.action === "sendTransaction" 22 | ) { 23 | return { 24 | errorCode: RETURN_VALUE_ERROR_CODES.REJECTED_TRANSACTION, 25 | context: ethersError.message, 26 | }; 27 | } 28 | 29 | if ( 30 | ethersError.code === ETHERS_ERROR_CODES.CALL_EXCEPTION && 31 | ethersError.reason !== undefined 32 | ) { 33 | return { 34 | errorCode: RETURN_VALUE_ERROR_CODES.CALL_REVERTED, 35 | context: ethersError.reason, 36 | }; 37 | } 38 | 39 | const unpredictableGasLimitError = getUnpredictableGasLimitError(ethersError); 40 | if (unpredictableGasLimitError !== undefined) { 41 | return unpredictableGasLimitError; 42 | } 43 | 44 | return undefined; 45 | } 46 | -------------------------------------------------------------------------------- /lib/utils/getUnpredictableGasLimitError.ts: -------------------------------------------------------------------------------- 1 | import { 2 | RETURN_VALUE_ERROR_CODES, 3 | NESTED_ETHERS_ERROR_CODES, 4 | ETHERS_ERROR_CODES, 5 | } from "../constants"; 6 | import type { EthersError, ReturnValue } from "../types"; 7 | 8 | export function getUnpredictableGasLimitError( 9 | ethersError: EthersError 10 | ): ReturnValue | undefined { 11 | if (ethersError.code !== ETHERS_ERROR_CODES.UNPREDICTABLE_GAS_LIMIT) { 12 | return undefined; 13 | } 14 | 15 | if ( 16 | ethersError.error !== undefined && 17 | ethersError.error.code === NESTED_ETHERS_ERROR_CODES.REQUIRE_TRANSACTION && 18 | ethersError.error.data !== undefined && 19 | ethersError.error.data.message !== undefined 20 | ) { 21 | const errorMessage = ethersError.error.data.message; 22 | if (errorMessage.includes("execution reverted: ")) { 23 | return { 24 | errorCode: RETURN_VALUE_ERROR_CODES.EXECUTION_REVERTED, 25 | context: errorMessage.slice("execution reverted: ".length), 26 | }; 27 | } 28 | } 29 | 30 | if ( 31 | ethersError.error !== undefined && 32 | ethersError.error.error !== undefined && 33 | ethersError.error.error.error !== undefined && 34 | ethersError.error.error.error.code === 35 | NESTED_ETHERS_ERROR_CODES.TRANSACTION_UNDERPRICED && 36 | ethersError.error.error.body !== undefined 37 | ) { 38 | try { 39 | const bodyObject = JSON.parse(ethersError.error.error.body) as { 40 | error?: { 41 | message?: string; 42 | }; 43 | }; 44 | 45 | if ( 46 | bodyObject.error !== undefined && 47 | bodyObject.error.message !== undefined 48 | ) { 49 | if ( 50 | bodyObject.error.message.includes( 51 | "gas required exceeds allowance (0)" 52 | ) 53 | ) { 54 | return { 55 | errorCode: RETURN_VALUE_ERROR_CODES.INSUFFICIENT_FUNDS_FOR_GAS, 56 | context: undefined, 57 | }; 58 | } 59 | 60 | if ( 61 | bodyObject.error.message.includes( 62 | "max priority fee per gas higher than max fee per gas" 63 | ) 64 | ) { 65 | return { 66 | errorCode: 67 | RETURN_VALUE_ERROR_CODES.MAX_PRIORITY_FEE_PER_GAS_HIGHER_THAN_MAX_FEE_PER_GAS, 68 | context: undefined, 69 | }; 70 | } 71 | 72 | if ( 73 | bodyObject.error.message.includes( 74 | "max fee per gas less than block base fee" 75 | ) 76 | ) { 77 | return { 78 | errorCode: 79 | RETURN_VALUE_ERROR_CODES.MAX_FEE_PER_GAS_LESS_THAN_BLOCK_BASE_FEE, 80 | context: undefined, 81 | }; 82 | } 83 | } 84 | } catch { 85 | return undefined; 86 | } 87 | } 88 | 89 | return undefined; 90 | } 91 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@enzoferey/ethers-error-parser", 3 | "version": "0.2.3", 4 | "license": "MIT", 5 | "homepage": "https://github.com/enzoferey/ethers-error-parser", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/enzoferey/ethers-error-parser.git" 9 | }, 10 | "keywords": [ 11 | "ethers-js", 12 | "error", 13 | "parsing" 14 | ], 15 | "type": "module", 16 | "files": [ 17 | "dist" 18 | ], 19 | "main": "./dist/ethers-error-parser.umd.cjs", 20 | "module": "./dist/ethers-error-parser.js", 21 | "types": "./dist/index.d.ts", 22 | "exports": { 23 | ".": { 24 | "import": "./dist/ethers-error-parser.js", 25 | "require": "./dist/ethers-error-parser.umd.cjs" 26 | } 27 | }, 28 | "scripts": { 29 | "build": "tsc && vite build", 30 | "prepublishOnly": "yarn build", 31 | "ts:check": "tsc --noEmit", 32 | "format": "prettier --write .", 33 | "format:check": "prettier --check .", 34 | "lint": "eslint lib --max-warnings 0", 35 | "test": "vitest", 36 | "test:ci": "vitest --coverage --run" 37 | }, 38 | "peerDependencies": { 39 | "ethers": "^5.7.0" 40 | }, 41 | "devDependencies": { 42 | "@typescript-eslint/eslint-plugin": "^5.33.1", 43 | "@typescript-eslint/parser": "^5.33.1", 44 | "@vitest/coverage-c8": "^0.22.1", 45 | "c8": "^7.12.0", 46 | "eslint": "^8.22.0", 47 | "eslint-config-prettier": "^8.5.0", 48 | "prettier": "2.7.1", 49 | "typescript": "^4.7.4", 50 | "vite": "^3.0.9", 51 | "vite-plugin-dts": "^1.4.1", 52 | "vitest": "^0.22.1" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "module": "ESNext", 6 | "lib": ["ESNext"], 7 | "moduleResolution": "Node", 8 | "strict": true, 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "isolatedModules": true, 12 | "esModuleInterop": true, 13 | "noEmit": true, 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "noImplicitReturns": true, 17 | "skipLibCheck": true, 18 | "strictNullChecks": true, 19 | "noUncheckedIndexedAccess": true 20 | }, 21 | "include": ["lib"] 22 | } 23 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | /// 2 | import path from "path"; 3 | import { defineConfig } from "vite"; 4 | import dts from "vite-plugin-dts"; 5 | 6 | export default defineConfig({ 7 | build: { 8 | lib: { 9 | entry: path.resolve(__dirname, "lib/index.ts"), 10 | name: "ethers-error-parser", 11 | fileName: "ethers-error-parser", 12 | }, 13 | }, 14 | plugins: [dts()], 15 | test: { 16 | mockReset: true, 17 | coverage: { 18 | src: ["lib"], 19 | reporter: ["text", "lcov"], 20 | all: true, 21 | exclude: ["lib/**/index.ts", "lib/**/types.ts", "*.d.ts"], 22 | 100: true, 23 | }, 24 | }, 25 | }); 26 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@bcoe/v8-coverage@^0.2.3": 6 | version "0.2.3" 7 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 8 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 9 | 10 | "@eslint/eslintrc@^1.3.0": 11 | version "1.3.0" 12 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" 13 | integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== 14 | dependencies: 15 | ajv "^6.12.4" 16 | debug "^4.3.2" 17 | espree "^9.3.2" 18 | globals "^13.15.0" 19 | ignore "^5.2.0" 20 | import-fresh "^3.2.1" 21 | js-yaml "^4.1.0" 22 | minimatch "^3.1.2" 23 | strip-json-comments "^3.1.1" 24 | 25 | "@humanwhocodes/config-array@^0.10.4": 26 | version "0.10.4" 27 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" 28 | integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== 29 | dependencies: 30 | "@humanwhocodes/object-schema" "^1.2.1" 31 | debug "^4.1.1" 32 | minimatch "^3.0.4" 33 | 34 | "@humanwhocodes/gitignore-to-minimatch@^1.0.2": 35 | version "1.0.2" 36 | resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" 37 | integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== 38 | 39 | "@humanwhocodes/object-schema@^1.2.1": 40 | version "1.2.1" 41 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 42 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 43 | 44 | "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": 45 | version "0.1.3" 46 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 47 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== 48 | 49 | "@jridgewell/resolve-uri@^3.0.3": 50 | version "3.1.0" 51 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 52 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 53 | 54 | "@jridgewell/sourcemap-codec@^1.4.10": 55 | version "1.4.14" 56 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 57 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 58 | 59 | "@jridgewell/trace-mapping@^0.3.12": 60 | version "0.3.14" 61 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" 62 | integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== 63 | dependencies: 64 | "@jridgewell/resolve-uri" "^3.0.3" 65 | "@jridgewell/sourcemap-codec" "^1.4.10" 66 | 67 | "@microsoft/api-extractor-model@7.22.1": 68 | version "7.22.1" 69 | resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.22.1.tgz#2c72bba972bdcc74d16f6f5c8a5f575eff9ce977" 70 | integrity sha512-3Bx6VC8F4ti8XlhaOCynCpwGvdXGwHD2dGBpo2xpJT9gEmPQvpAL3Ni+5gaEX0eQ27zGILVTUZDqZSRYskk/Rw== 71 | dependencies: 72 | "@microsoft/tsdoc" "0.14.1" 73 | "@microsoft/tsdoc-config" "~0.16.1" 74 | "@rushstack/node-core-library" "3.49.0" 75 | 76 | "@microsoft/api-extractor@^7.20.0": 77 | version "7.28.6" 78 | resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.28.6.tgz#da88050d37b19edd414d8daf7da890beeff264f2" 79 | integrity sha512-RNUokJTlBGD0ax/Jo8xLPWv4s6IboqrYrcabEEh6rFadO/tVPoV/R5YHtEeZ2q4ubvwhHTtX3sRm+p4fJo/3Sg== 80 | dependencies: 81 | "@microsoft/api-extractor-model" "7.22.1" 82 | "@microsoft/tsdoc" "0.14.1" 83 | "@microsoft/tsdoc-config" "~0.16.1" 84 | "@rushstack/node-core-library" "3.49.0" 85 | "@rushstack/rig-package" "0.3.13" 86 | "@rushstack/ts-command-line" "4.12.1" 87 | colors "~1.2.1" 88 | lodash "~4.17.15" 89 | resolve "~1.17.0" 90 | semver "~7.3.0" 91 | source-map "~0.6.1" 92 | typescript "~4.6.3" 93 | 94 | "@microsoft/tsdoc-config@~0.16.1": 95 | version "0.16.1" 96 | resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz#4de11976c1202854c4618f364bf499b4be33e657" 97 | integrity sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ== 98 | dependencies: 99 | "@microsoft/tsdoc" "0.14.1" 100 | ajv "~6.12.6" 101 | jju "~1.4.0" 102 | resolve "~1.19.0" 103 | 104 | "@microsoft/tsdoc@0.14.1": 105 | version "0.14.1" 106 | resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz#155ef21065427901994e765da8a0ba0eaae8b8bd" 107 | integrity sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw== 108 | 109 | "@nodelib/fs.scandir@2.1.5": 110 | version "2.1.5" 111 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 112 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 113 | dependencies: 114 | "@nodelib/fs.stat" "2.0.5" 115 | run-parallel "^1.1.9" 116 | 117 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 118 | version "2.0.5" 119 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 120 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 121 | 122 | "@nodelib/fs.walk@^1.2.3": 123 | version "1.2.8" 124 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 125 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 126 | dependencies: 127 | "@nodelib/fs.scandir" "2.1.5" 128 | fastq "^1.6.0" 129 | 130 | "@rushstack/node-core-library@3.49.0", "@rushstack/node-core-library@^3.45.1": 131 | version "3.49.0" 132 | resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.49.0.tgz#0324c1a5ba5e469967b70e9718d1a90750648503" 133 | integrity sha512-yBJRzGgUNFwulVrwwBARhbGaHsxVMjsZ9JwU1uSBbqPYCdac+t2HYdzi4f4q/Zpgb0eNbwYj2yxgHYpJORNEaw== 134 | dependencies: 135 | "@types/node" "12.20.24" 136 | colors "~1.2.1" 137 | fs-extra "~7.0.1" 138 | import-lazy "~4.0.0" 139 | jju "~1.4.0" 140 | resolve "~1.17.0" 141 | semver "~7.3.0" 142 | timsort "~0.3.0" 143 | z-schema "~5.0.2" 144 | 145 | "@rushstack/rig-package@0.3.13": 146 | version "0.3.13" 147 | resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.13.tgz#80d7b34bc9b7a7feeba133f317df8dbd1f65a822" 148 | integrity sha512-4/2+yyA/uDl7LQvtYtFs1AkhSWuaIGEKhP9/KK2nNARqOVc5eCXmu1vyOqr5mPvNq7sHoIR+sG84vFbaKYGaDA== 149 | dependencies: 150 | resolve "~1.17.0" 151 | strip-json-comments "~3.1.1" 152 | 153 | "@rushstack/ts-command-line@4.12.1": 154 | version "4.12.1" 155 | resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.12.1.tgz#4437ffae6459eb88791625ad9e89b2f0ba254476" 156 | integrity sha512-S1Nev6h/kNnamhHeGdp30WgxZTA+B76SJ/P721ctP7DrnC+rrjAc6h/R80I4V0cA2QuEEcMdVOQCtK2BTjsOiQ== 157 | dependencies: 158 | "@types/argparse" "1.0.38" 159 | argparse "~1.0.9" 160 | colors "~1.2.1" 161 | string-argv "~0.3.1" 162 | 163 | "@ts-morph/common@~0.13.0": 164 | version "0.13.0" 165 | resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.13.0.tgz#77dea1565baaf002d1bc2c20e05d1fb3349008a9" 166 | integrity sha512-fEJ6j7Cu8yiWjA4UmybOBH9Efgb/64ZTWuvCF4KysGu4xz8ettfyaqFt8WZ1btCxXsGZJjZ2/3svOF6rL+UFdQ== 167 | dependencies: 168 | fast-glob "^3.2.11" 169 | minimatch "^5.0.1" 170 | mkdirp "^1.0.4" 171 | path-browserify "^1.0.1" 172 | 173 | "@types/argparse@1.0.38": 174 | version "1.0.38" 175 | resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" 176 | integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== 177 | 178 | "@types/chai-subset@^1.3.3": 179 | version "1.3.3" 180 | resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.3.tgz#97893814e92abd2c534de422cb377e0e0bdaac94" 181 | integrity sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw== 182 | dependencies: 183 | "@types/chai" "*" 184 | 185 | "@types/chai@*": 186 | version "4.3.1" 187 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.1.tgz#e2c6e73e0bdeb2521d00756d099218e9f5d90a04" 188 | integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ== 189 | 190 | "@types/chai@^4.3.3": 191 | version "4.3.3" 192 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.3.tgz#3c90752792660c4b562ad73b3fbd68bf3bc7ae07" 193 | integrity sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g== 194 | 195 | "@types/istanbul-lib-coverage@^2.0.1": 196 | version "2.0.4" 197 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" 198 | integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== 199 | 200 | "@types/json-schema@^7.0.9": 201 | version "7.0.11" 202 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 203 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 204 | 205 | "@types/node@*": 206 | version "18.0.6" 207 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.6.tgz#0ba49ac517ad69abe7a1508bc9b3a5483df9d5d7" 208 | integrity sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw== 209 | 210 | "@types/node@12.20.24": 211 | version "12.20.24" 212 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c" 213 | integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== 214 | 215 | "@typescript-eslint/eslint-plugin@^5.33.1": 216 | version "5.33.1" 217 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.1.tgz#c0a480d05211660221eda963cc844732fe9b1714" 218 | integrity sha512-S1iZIxrTvKkU3+m63YUOxYPKaP+yWDQrdhxTglVDVEVBf+aCSw85+BmJnyUaQQsk5TXFG/LpBu9fa+LrAQ91fQ== 219 | dependencies: 220 | "@typescript-eslint/scope-manager" "5.33.1" 221 | "@typescript-eslint/type-utils" "5.33.1" 222 | "@typescript-eslint/utils" "5.33.1" 223 | debug "^4.3.4" 224 | functional-red-black-tree "^1.0.1" 225 | ignore "^5.2.0" 226 | regexpp "^3.2.0" 227 | semver "^7.3.7" 228 | tsutils "^3.21.0" 229 | 230 | "@typescript-eslint/parser@^5.33.1": 231 | version "5.33.1" 232 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.33.1.tgz#e4b253105b4d2a4362cfaa4e184e2d226c440ff3" 233 | integrity sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA== 234 | dependencies: 235 | "@typescript-eslint/scope-manager" "5.33.1" 236 | "@typescript-eslint/types" "5.33.1" 237 | "@typescript-eslint/typescript-estree" "5.33.1" 238 | debug "^4.3.4" 239 | 240 | "@typescript-eslint/scope-manager@5.33.1": 241 | version "5.33.1" 242 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz#8d31553e1b874210018ca069b3d192c6d23bc493" 243 | integrity sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA== 244 | dependencies: 245 | "@typescript-eslint/types" "5.33.1" 246 | "@typescript-eslint/visitor-keys" "5.33.1" 247 | 248 | "@typescript-eslint/type-utils@5.33.1": 249 | version "5.33.1" 250 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.33.1.tgz#1a14e94650a0ae39f6e3b77478baff002cec4367" 251 | integrity sha512-X3pGsJsD8OiqhNa5fim41YtlnyiWMF/eKsEZGsHID2HcDqeSC5yr/uLOeph8rNF2/utwuI0IQoAK3fpoxcLl2g== 252 | dependencies: 253 | "@typescript-eslint/utils" "5.33.1" 254 | debug "^4.3.4" 255 | tsutils "^3.21.0" 256 | 257 | "@typescript-eslint/types@5.33.1": 258 | version "5.33.1" 259 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.33.1.tgz#3faef41793d527a519e19ab2747c12d6f3741ff7" 260 | integrity sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ== 261 | 262 | "@typescript-eslint/typescript-estree@5.33.1": 263 | version "5.33.1" 264 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz#a573bd360790afdcba80844e962d8b2031984f34" 265 | integrity sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA== 266 | dependencies: 267 | "@typescript-eslint/types" "5.33.1" 268 | "@typescript-eslint/visitor-keys" "5.33.1" 269 | debug "^4.3.4" 270 | globby "^11.1.0" 271 | is-glob "^4.0.3" 272 | semver "^7.3.7" 273 | tsutils "^3.21.0" 274 | 275 | "@typescript-eslint/utils@5.33.1": 276 | version "5.33.1" 277 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.33.1.tgz#171725f924fe1fe82bb776522bb85bc034e88575" 278 | integrity sha512-uphZjkMaZ4fE8CR4dU7BquOV6u0doeQAr8n6cQenl/poMaIyJtBu8eys5uk6u5HiDH01Mj5lzbJ5SfeDz7oqMQ== 279 | dependencies: 280 | "@types/json-schema" "^7.0.9" 281 | "@typescript-eslint/scope-manager" "5.33.1" 282 | "@typescript-eslint/types" "5.33.1" 283 | "@typescript-eslint/typescript-estree" "5.33.1" 284 | eslint-scope "^5.1.1" 285 | eslint-utils "^3.0.0" 286 | 287 | "@typescript-eslint/visitor-keys@5.33.1": 288 | version "5.33.1" 289 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz#0155c7571c8cd08956580b880aea327d5c34a18b" 290 | integrity sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg== 291 | dependencies: 292 | "@typescript-eslint/types" "5.33.1" 293 | eslint-visitor-keys "^3.3.0" 294 | 295 | "@vitest/coverage-c8@^0.22.1": 296 | version "0.22.1" 297 | resolved "https://registry.yarnpkg.com/@vitest/coverage-c8/-/coverage-c8-0.22.1.tgz#d91b3487caca570a815899943c1939fe421fc114" 298 | integrity sha512-KOOYpO7EGpaF+nD8GD+Y05D0JtZp12NUu6DdLXvBPqSOPo2HkZ7KNBtfR0rb6gOy3NLtGiWTYTzCwhajgb2HlA== 299 | dependencies: 300 | c8 "^7.12.0" 301 | vitest "0.22.1" 302 | 303 | acorn-jsx@^5.3.2: 304 | version "5.3.2" 305 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 306 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 307 | 308 | acorn@^8.7.1, acorn@^8.8.0: 309 | version "8.8.0" 310 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" 311 | integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== 312 | 313 | ajv@^6.10.0, ajv@^6.12.4, ajv@~6.12.6: 314 | version "6.12.6" 315 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 316 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 317 | dependencies: 318 | fast-deep-equal "^3.1.1" 319 | fast-json-stable-stringify "^2.0.0" 320 | json-schema-traverse "^0.4.1" 321 | uri-js "^4.2.2" 322 | 323 | ansi-regex@^5.0.1: 324 | version "5.0.1" 325 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 326 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 327 | 328 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 329 | version "4.3.0" 330 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 331 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 332 | dependencies: 333 | color-convert "^2.0.1" 334 | 335 | argparse@^2.0.1: 336 | version "2.0.1" 337 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 338 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 339 | 340 | argparse@~1.0.9: 341 | version "1.0.10" 342 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 343 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 344 | dependencies: 345 | sprintf-js "~1.0.2" 346 | 347 | array-union@^2.1.0: 348 | version "2.1.0" 349 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 350 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 351 | 352 | assertion-error@^1.1.0: 353 | version "1.1.0" 354 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 355 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 356 | 357 | balanced-match@^1.0.0: 358 | version "1.0.2" 359 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 360 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 361 | 362 | brace-expansion@^1.1.7: 363 | version "1.1.11" 364 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 365 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 366 | dependencies: 367 | balanced-match "^1.0.0" 368 | concat-map "0.0.1" 369 | 370 | brace-expansion@^2.0.1: 371 | version "2.0.1" 372 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 373 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 374 | dependencies: 375 | balanced-match "^1.0.0" 376 | 377 | braces@^3.0.2: 378 | version "3.0.2" 379 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 380 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 381 | dependencies: 382 | fill-range "^7.0.1" 383 | 384 | c8@^7.12.0: 385 | version "7.12.0" 386 | resolved "https://registry.yarnpkg.com/c8/-/c8-7.12.0.tgz#402db1c1af4af5249153535d1c84ad70c5c96b14" 387 | integrity sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A== 388 | dependencies: 389 | "@bcoe/v8-coverage" "^0.2.3" 390 | "@istanbuljs/schema" "^0.1.3" 391 | find-up "^5.0.0" 392 | foreground-child "^2.0.0" 393 | istanbul-lib-coverage "^3.2.0" 394 | istanbul-lib-report "^3.0.0" 395 | istanbul-reports "^3.1.4" 396 | rimraf "^3.0.2" 397 | test-exclude "^6.0.0" 398 | v8-to-istanbul "^9.0.0" 399 | yargs "^16.2.0" 400 | yargs-parser "^20.2.9" 401 | 402 | callsites@^3.0.0: 403 | version "3.1.0" 404 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 405 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 406 | 407 | chai@^4.3.6: 408 | version "4.3.6" 409 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" 410 | integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== 411 | dependencies: 412 | assertion-error "^1.1.0" 413 | check-error "^1.0.2" 414 | deep-eql "^3.0.1" 415 | get-func-name "^2.0.0" 416 | loupe "^2.3.1" 417 | pathval "^1.1.1" 418 | type-detect "^4.0.5" 419 | 420 | chalk@^4.0.0, chalk@^4.1.2: 421 | version "4.1.2" 422 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 423 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 424 | dependencies: 425 | ansi-styles "^4.1.0" 426 | supports-color "^7.1.0" 427 | 428 | check-error@^1.0.2: 429 | version "1.0.2" 430 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 431 | integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== 432 | 433 | cliui@^7.0.2: 434 | version "7.0.4" 435 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 436 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 437 | dependencies: 438 | string-width "^4.2.0" 439 | strip-ansi "^6.0.0" 440 | wrap-ansi "^7.0.0" 441 | 442 | code-block-writer@^11.0.0: 443 | version "11.0.2" 444 | resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-11.0.2.tgz#263a1d5f982c640cda33d0704a8562057ae8b27d" 445 | integrity sha512-goP2FghRVwp940jOvhtUrRDiSVU0h4Ah2jPX1gu2ueGW8boQmdQV4NwiHoM5MQQbUWLQuZopougO8+Ajljgpnw== 446 | 447 | color-convert@^2.0.1: 448 | version "2.0.1" 449 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 450 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 451 | dependencies: 452 | color-name "~1.1.4" 453 | 454 | color-name@~1.1.4: 455 | version "1.1.4" 456 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 457 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 458 | 459 | colors@~1.2.1: 460 | version "1.2.5" 461 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" 462 | integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== 463 | 464 | commander@^2.20.3: 465 | version "2.20.3" 466 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 467 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 468 | 469 | concat-map@0.0.1: 470 | version "0.0.1" 471 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 472 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 473 | 474 | convert-source-map@^1.6.0: 475 | version "1.8.0" 476 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 477 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 478 | dependencies: 479 | safe-buffer "~5.1.1" 480 | 481 | cross-spawn@^7.0.0, cross-spawn@^7.0.2: 482 | version "7.0.3" 483 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 484 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 485 | dependencies: 486 | path-key "^3.1.0" 487 | shebang-command "^2.0.0" 488 | which "^2.0.1" 489 | 490 | debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: 491 | version "4.3.4" 492 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 493 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 494 | dependencies: 495 | ms "2.1.2" 496 | 497 | deep-eql@^3.0.1: 498 | version "3.0.1" 499 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 500 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 501 | dependencies: 502 | type-detect "^4.0.0" 503 | 504 | deep-is@^0.1.3: 505 | version "0.1.4" 506 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 507 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 508 | 509 | dir-glob@^3.0.1: 510 | version "3.0.1" 511 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 512 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 513 | dependencies: 514 | path-type "^4.0.0" 515 | 516 | doctrine@^3.0.0: 517 | version "3.0.0" 518 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 519 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 520 | dependencies: 521 | esutils "^2.0.2" 522 | 523 | emoji-regex@^8.0.0: 524 | version "8.0.0" 525 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 526 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 527 | 528 | esbuild-android-64@0.14.49: 529 | version "0.14.49" 530 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz#9e4682c36dcf6e7b71b73d2a3723a96e0fdc5054" 531 | integrity sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww== 532 | 533 | esbuild-android-arm64@0.14.49: 534 | version "0.14.49" 535 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz#9861b1f7e57d1dd1f23eeef6198561c5f34b51f6" 536 | integrity sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g== 537 | 538 | esbuild-darwin-64@0.14.49: 539 | version "0.14.49" 540 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz#fd30a5ebe28704a3a117126c60f98096c067c8d1" 541 | integrity sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg== 542 | 543 | esbuild-darwin-arm64@0.14.49: 544 | version "0.14.49" 545 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz#c04a3a57dad94a972c66a697a68a25aa25947f41" 546 | integrity sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A== 547 | 548 | esbuild-freebsd-64@0.14.49: 549 | version "0.14.49" 550 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz#c404dbd66c98451395b1eef0fa38b73030a7be82" 551 | integrity sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ== 552 | 553 | esbuild-freebsd-arm64@0.14.49: 554 | version "0.14.49" 555 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz#b62cec96138ebc5937240ce3e1b97902963ea74a" 556 | integrity sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA== 557 | 558 | esbuild-linux-32@0.14.49: 559 | version "0.14.49" 560 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz#495b1cc011b8c64d8bbaf65509c1e7135eb9ddbf" 561 | integrity sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA== 562 | 563 | esbuild-linux-64@0.14.49: 564 | version "0.14.49" 565 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz#3f28dd8f986e6ff42f38888ee435a9b1fb916a56" 566 | integrity sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg== 567 | 568 | esbuild-linux-arm64@0.14.49: 569 | version "0.14.49" 570 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz#a52e99ae30246566dc5f33e835aa6ca98ef70e33" 571 | integrity sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA== 572 | 573 | esbuild-linux-arm@0.14.49: 574 | version "0.14.49" 575 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz#7c33d05a64ec540cf7474834adaa57b3167bbe97" 576 | integrity sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg== 577 | 578 | esbuild-linux-mips64le@0.14.49: 579 | version "0.14.49" 580 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz#ed062bd844b587be649443831eb84ba304685f25" 581 | integrity sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA== 582 | 583 | esbuild-linux-ppc64le@0.14.49: 584 | version "0.14.49" 585 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz#c0786fb5bddffd90c10a2078181513cbaf077958" 586 | integrity sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw== 587 | 588 | esbuild-linux-riscv64@0.14.49: 589 | version "0.14.49" 590 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz#579b0e7cc6fce4bfc698e991a52503bb616bec49" 591 | integrity sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ== 592 | 593 | esbuild-linux-s390x@0.14.49: 594 | version "0.14.49" 595 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz#09eb15c753e249a500b4e28d07c5eef7524a9740" 596 | integrity sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ== 597 | 598 | esbuild-netbsd-64@0.14.49: 599 | version "0.14.49" 600 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz#f7337cd2bddb7cc9d100d19156f36c9ca117b58d" 601 | integrity sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ== 602 | 603 | esbuild-openbsd-64@0.14.49: 604 | version "0.14.49" 605 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz#1f8bdc49f8a44396e73950a3fb6b39828563631d" 606 | integrity sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA== 607 | 608 | esbuild-sunos-64@0.14.49: 609 | version "0.14.49" 610 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz#47d042739365b61aa8ca642adb69534a8eef9f7a" 611 | integrity sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw== 612 | 613 | esbuild-windows-32@0.14.49: 614 | version "0.14.49" 615 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz#79198c88ec9bde163c18a6b430c34eab098ec21a" 616 | integrity sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA== 617 | 618 | esbuild-windows-64@0.14.49: 619 | version "0.14.49" 620 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz#b36b230d18d1ee54008e08814c4799c7806e8c79" 621 | integrity sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw== 622 | 623 | esbuild-windows-arm64@0.14.49: 624 | version "0.14.49" 625 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz#d83c03ff6436caf3262347cfa7e16b0a8049fae7" 626 | integrity sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA== 627 | 628 | esbuild@^0.14.47: 629 | version "0.14.49" 630 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.49.tgz#b82834760eba2ddc17b44f05cfcc0aaca2bae492" 631 | integrity sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw== 632 | optionalDependencies: 633 | esbuild-android-64 "0.14.49" 634 | esbuild-android-arm64 "0.14.49" 635 | esbuild-darwin-64 "0.14.49" 636 | esbuild-darwin-arm64 "0.14.49" 637 | esbuild-freebsd-64 "0.14.49" 638 | esbuild-freebsd-arm64 "0.14.49" 639 | esbuild-linux-32 "0.14.49" 640 | esbuild-linux-64 "0.14.49" 641 | esbuild-linux-arm "0.14.49" 642 | esbuild-linux-arm64 "0.14.49" 643 | esbuild-linux-mips64le "0.14.49" 644 | esbuild-linux-ppc64le "0.14.49" 645 | esbuild-linux-riscv64 "0.14.49" 646 | esbuild-linux-s390x "0.14.49" 647 | esbuild-netbsd-64 "0.14.49" 648 | esbuild-openbsd-64 "0.14.49" 649 | esbuild-sunos-64 "0.14.49" 650 | esbuild-windows-32 "0.14.49" 651 | esbuild-windows-64 "0.14.49" 652 | esbuild-windows-arm64 "0.14.49" 653 | 654 | escalade@^3.1.1: 655 | version "3.1.1" 656 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 657 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 658 | 659 | escape-string-regexp@^4.0.0: 660 | version "4.0.0" 661 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 662 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 663 | 664 | eslint-config-prettier@^8.5.0: 665 | version "8.5.0" 666 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" 667 | integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== 668 | 669 | eslint-scope@^5.1.1: 670 | version "5.1.1" 671 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 672 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 673 | dependencies: 674 | esrecurse "^4.3.0" 675 | estraverse "^4.1.1" 676 | 677 | eslint-scope@^7.1.1: 678 | version "7.1.1" 679 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" 680 | integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== 681 | dependencies: 682 | esrecurse "^4.3.0" 683 | estraverse "^5.2.0" 684 | 685 | eslint-utils@^3.0.0: 686 | version "3.0.0" 687 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 688 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 689 | dependencies: 690 | eslint-visitor-keys "^2.0.0" 691 | 692 | eslint-visitor-keys@^2.0.0: 693 | version "2.1.0" 694 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 695 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 696 | 697 | eslint-visitor-keys@^3.3.0: 698 | version "3.3.0" 699 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" 700 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== 701 | 702 | eslint@^8.22.0: 703 | version "8.22.0" 704 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.22.0.tgz#78fcb044196dfa7eef30a9d65944f6f980402c48" 705 | integrity sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA== 706 | dependencies: 707 | "@eslint/eslintrc" "^1.3.0" 708 | "@humanwhocodes/config-array" "^0.10.4" 709 | "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" 710 | ajv "^6.10.0" 711 | chalk "^4.0.0" 712 | cross-spawn "^7.0.2" 713 | debug "^4.3.2" 714 | doctrine "^3.0.0" 715 | escape-string-regexp "^4.0.0" 716 | eslint-scope "^7.1.1" 717 | eslint-utils "^3.0.0" 718 | eslint-visitor-keys "^3.3.0" 719 | espree "^9.3.3" 720 | esquery "^1.4.0" 721 | esutils "^2.0.2" 722 | fast-deep-equal "^3.1.3" 723 | file-entry-cache "^6.0.1" 724 | find-up "^5.0.0" 725 | functional-red-black-tree "^1.0.1" 726 | glob-parent "^6.0.1" 727 | globals "^13.15.0" 728 | globby "^11.1.0" 729 | grapheme-splitter "^1.0.4" 730 | ignore "^5.2.0" 731 | import-fresh "^3.0.0" 732 | imurmurhash "^0.1.4" 733 | is-glob "^4.0.0" 734 | js-yaml "^4.1.0" 735 | json-stable-stringify-without-jsonify "^1.0.1" 736 | levn "^0.4.1" 737 | lodash.merge "^4.6.2" 738 | minimatch "^3.1.2" 739 | natural-compare "^1.4.0" 740 | optionator "^0.9.1" 741 | regexpp "^3.2.0" 742 | strip-ansi "^6.0.1" 743 | strip-json-comments "^3.1.0" 744 | text-table "^0.2.0" 745 | v8-compile-cache "^2.0.3" 746 | 747 | espree@^9.3.2: 748 | version "9.3.2" 749 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" 750 | integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== 751 | dependencies: 752 | acorn "^8.7.1" 753 | acorn-jsx "^5.3.2" 754 | eslint-visitor-keys "^3.3.0" 755 | 756 | espree@^9.3.3: 757 | version "9.3.3" 758 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d" 759 | integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng== 760 | dependencies: 761 | acorn "^8.8.0" 762 | acorn-jsx "^5.3.2" 763 | eslint-visitor-keys "^3.3.0" 764 | 765 | esquery@^1.4.0: 766 | version "1.4.0" 767 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 768 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 769 | dependencies: 770 | estraverse "^5.1.0" 771 | 772 | esrecurse@^4.3.0: 773 | version "4.3.0" 774 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 775 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 776 | dependencies: 777 | estraverse "^5.2.0" 778 | 779 | estraverse@^4.1.1: 780 | version "4.3.0" 781 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 782 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 783 | 784 | estraverse@^5.1.0, estraverse@^5.2.0: 785 | version "5.3.0" 786 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 787 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 788 | 789 | esutils@^2.0.2: 790 | version "2.0.3" 791 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 792 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 793 | 794 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 795 | version "3.1.3" 796 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 797 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 798 | 799 | fast-glob@^3.2.11, fast-glob@^3.2.9: 800 | version "3.2.11" 801 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 802 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 803 | dependencies: 804 | "@nodelib/fs.stat" "^2.0.2" 805 | "@nodelib/fs.walk" "^1.2.3" 806 | glob-parent "^5.1.2" 807 | merge2 "^1.3.0" 808 | micromatch "^4.0.4" 809 | 810 | fast-json-stable-stringify@^2.0.0: 811 | version "2.1.0" 812 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 813 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 814 | 815 | fast-levenshtein@^2.0.6: 816 | version "2.0.6" 817 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 818 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 819 | 820 | fastq@^1.6.0: 821 | version "1.13.0" 822 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 823 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 824 | dependencies: 825 | reusify "^1.0.4" 826 | 827 | file-entry-cache@^6.0.1: 828 | version "6.0.1" 829 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 830 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 831 | dependencies: 832 | flat-cache "^3.0.4" 833 | 834 | fill-range@^7.0.1: 835 | version "7.0.1" 836 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 837 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 838 | dependencies: 839 | to-regex-range "^5.0.1" 840 | 841 | find-up@^5.0.0: 842 | version "5.0.0" 843 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 844 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 845 | dependencies: 846 | locate-path "^6.0.0" 847 | path-exists "^4.0.0" 848 | 849 | flat-cache@^3.0.4: 850 | version "3.0.4" 851 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 852 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 853 | dependencies: 854 | flatted "^3.1.0" 855 | rimraf "^3.0.2" 856 | 857 | flatted@^3.1.0: 858 | version "3.2.6" 859 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" 860 | integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== 861 | 862 | foreground-child@^2.0.0: 863 | version "2.0.0" 864 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" 865 | integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== 866 | dependencies: 867 | cross-spawn "^7.0.0" 868 | signal-exit "^3.0.2" 869 | 870 | fs-extra@^10.0.1: 871 | version "10.1.0" 872 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" 873 | integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== 874 | dependencies: 875 | graceful-fs "^4.2.0" 876 | jsonfile "^6.0.1" 877 | universalify "^2.0.0" 878 | 879 | fs-extra@~7.0.1: 880 | version "7.0.1" 881 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" 882 | integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== 883 | dependencies: 884 | graceful-fs "^4.1.2" 885 | jsonfile "^4.0.0" 886 | universalify "^0.1.0" 887 | 888 | fs.realpath@^1.0.0: 889 | version "1.0.0" 890 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 891 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 892 | 893 | fsevents@~2.3.2: 894 | version "2.3.2" 895 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 896 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 897 | 898 | function-bind@^1.1.1: 899 | version "1.1.1" 900 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 901 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 902 | 903 | functional-red-black-tree@^1.0.1: 904 | version "1.0.1" 905 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 906 | integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== 907 | 908 | get-caller-file@^2.0.5: 909 | version "2.0.5" 910 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 911 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 912 | 913 | get-func-name@^2.0.0: 914 | version "2.0.0" 915 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 916 | integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== 917 | 918 | glob-parent@^5.1.2: 919 | version "5.1.2" 920 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 921 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 922 | dependencies: 923 | is-glob "^4.0.1" 924 | 925 | glob-parent@^6.0.1: 926 | version "6.0.2" 927 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 928 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 929 | dependencies: 930 | is-glob "^4.0.3" 931 | 932 | glob@^7.1.3, glob@^7.1.4: 933 | version "7.2.3" 934 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 935 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 936 | dependencies: 937 | fs.realpath "^1.0.0" 938 | inflight "^1.0.4" 939 | inherits "2" 940 | minimatch "^3.1.1" 941 | once "^1.3.0" 942 | path-is-absolute "^1.0.0" 943 | 944 | globals@^13.15.0: 945 | version "13.17.0" 946 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" 947 | integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== 948 | dependencies: 949 | type-fest "^0.20.2" 950 | 951 | globby@^11.1.0: 952 | version "11.1.0" 953 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 954 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 955 | dependencies: 956 | array-union "^2.1.0" 957 | dir-glob "^3.0.1" 958 | fast-glob "^3.2.9" 959 | ignore "^5.2.0" 960 | merge2 "^1.4.1" 961 | slash "^3.0.0" 962 | 963 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: 964 | version "4.2.10" 965 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 966 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 967 | 968 | grapheme-splitter@^1.0.4: 969 | version "1.0.4" 970 | resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" 971 | integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== 972 | 973 | has-flag@^4.0.0: 974 | version "4.0.0" 975 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 976 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 977 | 978 | has@^1.0.3: 979 | version "1.0.3" 980 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 981 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 982 | dependencies: 983 | function-bind "^1.1.1" 984 | 985 | html-escaper@^2.0.0: 986 | version "2.0.2" 987 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 988 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 989 | 990 | ignore@^5.2.0: 991 | version "5.2.0" 992 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 993 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 994 | 995 | import-fresh@^3.0.0, import-fresh@^3.2.1: 996 | version "3.3.0" 997 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 998 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 999 | dependencies: 1000 | parent-module "^1.0.0" 1001 | resolve-from "^4.0.0" 1002 | 1003 | import-lazy@~4.0.0: 1004 | version "4.0.0" 1005 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" 1006 | integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== 1007 | 1008 | imurmurhash@^0.1.4: 1009 | version "0.1.4" 1010 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1011 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1012 | 1013 | inflight@^1.0.4: 1014 | version "1.0.6" 1015 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1016 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1017 | dependencies: 1018 | once "^1.3.0" 1019 | wrappy "1" 1020 | 1021 | inherits@2: 1022 | version "2.0.4" 1023 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1024 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1025 | 1026 | is-core-module@^2.1.0, is-core-module@^2.9.0: 1027 | version "2.9.0" 1028 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" 1029 | integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== 1030 | dependencies: 1031 | has "^1.0.3" 1032 | 1033 | is-extglob@^2.1.1: 1034 | version "2.1.1" 1035 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1036 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1037 | 1038 | is-fullwidth-code-point@^3.0.0: 1039 | version "3.0.0" 1040 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1041 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1042 | 1043 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 1044 | version "4.0.3" 1045 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1046 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1047 | dependencies: 1048 | is-extglob "^2.1.1" 1049 | 1050 | is-number@^7.0.0: 1051 | version "7.0.0" 1052 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1053 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1054 | 1055 | isexe@^2.0.0: 1056 | version "2.0.0" 1057 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1058 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1059 | 1060 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 1061 | version "3.2.0" 1062 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" 1063 | integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== 1064 | 1065 | istanbul-lib-report@^3.0.0: 1066 | version "3.0.0" 1067 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 1068 | integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 1069 | dependencies: 1070 | istanbul-lib-coverage "^3.0.0" 1071 | make-dir "^3.0.0" 1072 | supports-color "^7.1.0" 1073 | 1074 | istanbul-reports@^3.1.4: 1075 | version "3.1.5" 1076 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" 1077 | integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== 1078 | dependencies: 1079 | html-escaper "^2.0.0" 1080 | istanbul-lib-report "^3.0.0" 1081 | 1082 | jju@~1.4.0: 1083 | version "1.4.0" 1084 | resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" 1085 | integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== 1086 | 1087 | js-yaml@^4.1.0: 1088 | version "4.1.0" 1089 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1090 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1091 | dependencies: 1092 | argparse "^2.0.1" 1093 | 1094 | json-schema-traverse@^0.4.1: 1095 | version "0.4.1" 1096 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1097 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1098 | 1099 | json-stable-stringify-without-jsonify@^1.0.1: 1100 | version "1.0.1" 1101 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1102 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1103 | 1104 | jsonfile@^4.0.0: 1105 | version "4.0.0" 1106 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1107 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== 1108 | optionalDependencies: 1109 | graceful-fs "^4.1.6" 1110 | 1111 | jsonfile@^6.0.1: 1112 | version "6.1.0" 1113 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 1114 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 1115 | dependencies: 1116 | universalify "^2.0.0" 1117 | optionalDependencies: 1118 | graceful-fs "^4.1.6" 1119 | 1120 | levn@^0.4.1: 1121 | version "0.4.1" 1122 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1123 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1124 | dependencies: 1125 | prelude-ls "^1.2.1" 1126 | type-check "~0.4.0" 1127 | 1128 | local-pkg@^0.4.2: 1129 | version "0.4.2" 1130 | resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.2.tgz#13107310b77e74a0e513147a131a2ba288176c2f" 1131 | integrity sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg== 1132 | 1133 | locate-path@^6.0.0: 1134 | version "6.0.0" 1135 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1136 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1137 | dependencies: 1138 | p-locate "^5.0.0" 1139 | 1140 | lodash.get@^4.4.2: 1141 | version "4.4.2" 1142 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" 1143 | integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== 1144 | 1145 | lodash.isequal@^4.5.0: 1146 | version "4.5.0" 1147 | resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" 1148 | integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== 1149 | 1150 | lodash.merge@^4.6.2: 1151 | version "4.6.2" 1152 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1153 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1154 | 1155 | lodash@~4.17.15: 1156 | version "4.17.21" 1157 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1158 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1159 | 1160 | loupe@^2.3.1: 1161 | version "2.3.4" 1162 | resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" 1163 | integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== 1164 | dependencies: 1165 | get-func-name "^2.0.0" 1166 | 1167 | lru-cache@^6.0.0: 1168 | version "6.0.0" 1169 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1170 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1171 | dependencies: 1172 | yallist "^4.0.0" 1173 | 1174 | make-dir@^3.0.0: 1175 | version "3.1.0" 1176 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1177 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1178 | dependencies: 1179 | semver "^6.0.0" 1180 | 1181 | merge2@^1.3.0, merge2@^1.4.1: 1182 | version "1.4.1" 1183 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1184 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1185 | 1186 | micromatch@^4.0.4: 1187 | version "4.0.5" 1188 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1189 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1190 | dependencies: 1191 | braces "^3.0.2" 1192 | picomatch "^2.3.1" 1193 | 1194 | minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: 1195 | version "3.1.2" 1196 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1197 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1198 | dependencies: 1199 | brace-expansion "^1.1.7" 1200 | 1201 | minimatch@^5.0.1: 1202 | version "5.1.0" 1203 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" 1204 | integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== 1205 | dependencies: 1206 | brace-expansion "^2.0.1" 1207 | 1208 | mkdirp@^1.0.4: 1209 | version "1.0.4" 1210 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 1211 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 1212 | 1213 | ms@2.1.2: 1214 | version "2.1.2" 1215 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1216 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1217 | 1218 | nanoid@^3.3.4: 1219 | version "3.3.4" 1220 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" 1221 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== 1222 | 1223 | natural-compare@^1.4.0: 1224 | version "1.4.0" 1225 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1226 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1227 | 1228 | once@^1.3.0: 1229 | version "1.4.0" 1230 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1231 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1232 | dependencies: 1233 | wrappy "1" 1234 | 1235 | optionator@^0.9.1: 1236 | version "0.9.1" 1237 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1238 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1239 | dependencies: 1240 | deep-is "^0.1.3" 1241 | fast-levenshtein "^2.0.6" 1242 | levn "^0.4.1" 1243 | prelude-ls "^1.2.1" 1244 | type-check "^0.4.0" 1245 | word-wrap "^1.2.3" 1246 | 1247 | p-limit@^3.0.2: 1248 | version "3.1.0" 1249 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1250 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1251 | dependencies: 1252 | yocto-queue "^0.1.0" 1253 | 1254 | p-locate@^5.0.0: 1255 | version "5.0.0" 1256 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1257 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1258 | dependencies: 1259 | p-limit "^3.0.2" 1260 | 1261 | parent-module@^1.0.0: 1262 | version "1.0.1" 1263 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1264 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1265 | dependencies: 1266 | callsites "^3.0.0" 1267 | 1268 | path-browserify@^1.0.1: 1269 | version "1.0.1" 1270 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" 1271 | integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== 1272 | 1273 | path-exists@^4.0.0: 1274 | version "4.0.0" 1275 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1276 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1277 | 1278 | path-is-absolute@^1.0.0: 1279 | version "1.0.1" 1280 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1281 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1282 | 1283 | path-key@^3.1.0: 1284 | version "3.1.1" 1285 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1286 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1287 | 1288 | path-parse@^1.0.6, path-parse@^1.0.7: 1289 | version "1.0.7" 1290 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1291 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1292 | 1293 | path-type@^4.0.0: 1294 | version "4.0.0" 1295 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1296 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1297 | 1298 | pathval@^1.1.1: 1299 | version "1.1.1" 1300 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" 1301 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 1302 | 1303 | picocolors@^1.0.0: 1304 | version "1.0.0" 1305 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1306 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1307 | 1308 | picomatch@^2.3.1: 1309 | version "2.3.1" 1310 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1311 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1312 | 1313 | postcss@^8.4.14: 1314 | version "8.4.14" 1315 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" 1316 | integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== 1317 | dependencies: 1318 | nanoid "^3.3.4" 1319 | picocolors "^1.0.0" 1320 | source-map-js "^1.0.2" 1321 | 1322 | postcss@^8.4.16: 1323 | version "8.4.16" 1324 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" 1325 | integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== 1326 | dependencies: 1327 | nanoid "^3.3.4" 1328 | picocolors "^1.0.0" 1329 | source-map-js "^1.0.2" 1330 | 1331 | prelude-ls@^1.2.1: 1332 | version "1.2.1" 1333 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1334 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1335 | 1336 | prettier@2.7.1: 1337 | version "2.7.1" 1338 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" 1339 | integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== 1340 | 1341 | punycode@^2.1.0: 1342 | version "2.1.1" 1343 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1344 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1345 | 1346 | queue-microtask@^1.2.2: 1347 | version "1.2.3" 1348 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1349 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1350 | 1351 | regexpp@^3.2.0: 1352 | version "3.2.0" 1353 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1354 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1355 | 1356 | require-directory@^2.1.1: 1357 | version "2.1.1" 1358 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1359 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1360 | 1361 | resolve-from@^4.0.0: 1362 | version "4.0.0" 1363 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1364 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1365 | 1366 | resolve@^1.22.1: 1367 | version "1.22.1" 1368 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 1369 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 1370 | dependencies: 1371 | is-core-module "^2.9.0" 1372 | path-parse "^1.0.7" 1373 | supports-preserve-symlinks-flag "^1.0.0" 1374 | 1375 | resolve@~1.17.0: 1376 | version "1.17.0" 1377 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 1378 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 1379 | dependencies: 1380 | path-parse "^1.0.6" 1381 | 1382 | resolve@~1.19.0: 1383 | version "1.19.0" 1384 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" 1385 | integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== 1386 | dependencies: 1387 | is-core-module "^2.1.0" 1388 | path-parse "^1.0.6" 1389 | 1390 | reusify@^1.0.4: 1391 | version "1.0.4" 1392 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1393 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1394 | 1395 | rimraf@^3.0.2: 1396 | version "3.0.2" 1397 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1398 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1399 | dependencies: 1400 | glob "^7.1.3" 1401 | 1402 | "rollup@>=2.75.6 <2.77.0 || ~2.77.0": 1403 | version "2.77.3" 1404 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.3.tgz#8f00418d3a2740036e15deb653bed1a90ee0cc12" 1405 | integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g== 1406 | optionalDependencies: 1407 | fsevents "~2.3.2" 1408 | 1409 | rollup@^2.75.6: 1410 | version "2.77.0" 1411 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.0.tgz#749eaa5ac09b6baa52acc076bc46613eddfd53f4" 1412 | integrity sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g== 1413 | optionalDependencies: 1414 | fsevents "~2.3.2" 1415 | 1416 | run-parallel@^1.1.9: 1417 | version "1.2.0" 1418 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1419 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1420 | dependencies: 1421 | queue-microtask "^1.2.2" 1422 | 1423 | safe-buffer@~5.1.1: 1424 | version "5.1.2" 1425 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1426 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1427 | 1428 | semver@^6.0.0: 1429 | version "6.3.0" 1430 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1431 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1432 | 1433 | semver@^7.3.7, semver@~7.3.0: 1434 | version "7.3.7" 1435 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" 1436 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== 1437 | dependencies: 1438 | lru-cache "^6.0.0" 1439 | 1440 | shebang-command@^2.0.0: 1441 | version "2.0.0" 1442 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1443 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1444 | dependencies: 1445 | shebang-regex "^3.0.0" 1446 | 1447 | shebang-regex@^3.0.0: 1448 | version "3.0.0" 1449 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1450 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1451 | 1452 | signal-exit@^3.0.2: 1453 | version "3.0.7" 1454 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 1455 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 1456 | 1457 | slash@^3.0.0: 1458 | version "3.0.0" 1459 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1460 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1461 | 1462 | source-map-js@^1.0.2: 1463 | version "1.0.2" 1464 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1465 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1466 | 1467 | source-map@~0.6.1: 1468 | version "0.6.1" 1469 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1470 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1471 | 1472 | sprintf-js@~1.0.2: 1473 | version "1.0.3" 1474 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1475 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 1476 | 1477 | string-argv@~0.3.1: 1478 | version "0.3.1" 1479 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" 1480 | integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== 1481 | 1482 | string-width@^4.1.0, string-width@^4.2.0: 1483 | version "4.2.3" 1484 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1485 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1486 | dependencies: 1487 | emoji-regex "^8.0.0" 1488 | is-fullwidth-code-point "^3.0.0" 1489 | strip-ansi "^6.0.1" 1490 | 1491 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1492 | version "6.0.1" 1493 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1494 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1495 | dependencies: 1496 | ansi-regex "^5.0.1" 1497 | 1498 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: 1499 | version "3.1.1" 1500 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1501 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1502 | 1503 | supports-color@^7.1.0: 1504 | version "7.2.0" 1505 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1506 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1507 | dependencies: 1508 | has-flag "^4.0.0" 1509 | 1510 | supports-preserve-symlinks-flag@^1.0.0: 1511 | version "1.0.0" 1512 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1513 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1514 | 1515 | test-exclude@^6.0.0: 1516 | version "6.0.0" 1517 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 1518 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 1519 | dependencies: 1520 | "@istanbuljs/schema" "^0.1.2" 1521 | glob "^7.1.4" 1522 | minimatch "^3.0.4" 1523 | 1524 | text-table@^0.2.0: 1525 | version "0.2.0" 1526 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1527 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 1528 | 1529 | timsort@~0.3.0: 1530 | version "0.3.0" 1531 | resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" 1532 | integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== 1533 | 1534 | tinypool@^0.2.4: 1535 | version "0.2.4" 1536 | resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.2.4.tgz#4d2598c4689d1a2ce267ddf3360a9c6b3925a20c" 1537 | integrity sha512-Vs3rhkUH6Qq1t5bqtb816oT+HeJTXfwt2cbPH17sWHIYKTotQIFPk3tf2fgqRrVyMDVOc1EnPgzIxfIulXVzwQ== 1538 | 1539 | tinyspy@^1.0.2: 1540 | version "1.0.2" 1541 | resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-1.0.2.tgz#6da0b3918bfd56170fb3cd3a2b5ef832ee1dff0d" 1542 | integrity sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q== 1543 | 1544 | to-regex-range@^5.0.1: 1545 | version "5.0.1" 1546 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1547 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1548 | dependencies: 1549 | is-number "^7.0.0" 1550 | 1551 | ts-morph@^14.0.0: 1552 | version "14.0.0" 1553 | resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-14.0.0.tgz#6bffb7e4584cf6a9aebce2066bf4258e1d03f9fa" 1554 | integrity sha512-tO8YQ1dP41fw8GVmeQAdNsD8roZi1JMqB7YwZrqU856DvmG5/710e41q2XauzTYrygH9XmMryaFeLo+kdCziyA== 1555 | dependencies: 1556 | "@ts-morph/common" "~0.13.0" 1557 | code-block-writer "^11.0.0" 1558 | 1559 | tslib@^1.8.1: 1560 | version "1.14.1" 1561 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1562 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1563 | 1564 | tsutils@^3.21.0: 1565 | version "3.21.0" 1566 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 1567 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 1568 | dependencies: 1569 | tslib "^1.8.1" 1570 | 1571 | type-check@^0.4.0, type-check@~0.4.0: 1572 | version "0.4.0" 1573 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1574 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1575 | dependencies: 1576 | prelude-ls "^1.2.1" 1577 | 1578 | type-detect@^4.0.0, type-detect@^4.0.5: 1579 | version "4.0.8" 1580 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 1581 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 1582 | 1583 | type-fest@^0.20.2: 1584 | version "0.20.2" 1585 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1586 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1587 | 1588 | typescript@^4.7.4: 1589 | version "4.7.4" 1590 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" 1591 | integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== 1592 | 1593 | typescript@~4.6.3: 1594 | version "4.6.4" 1595 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" 1596 | integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== 1597 | 1598 | universalify@^0.1.0: 1599 | version "0.1.2" 1600 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1601 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1602 | 1603 | universalify@^2.0.0: 1604 | version "2.0.0" 1605 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 1606 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 1607 | 1608 | uri-js@^4.2.2: 1609 | version "4.4.1" 1610 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1611 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1612 | dependencies: 1613 | punycode "^2.1.0" 1614 | 1615 | v8-compile-cache@^2.0.3: 1616 | version "2.3.0" 1617 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1618 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1619 | 1620 | v8-to-istanbul@^9.0.0: 1621 | version "9.0.1" 1622 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" 1623 | integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== 1624 | dependencies: 1625 | "@jridgewell/trace-mapping" "^0.3.12" 1626 | "@types/istanbul-lib-coverage" "^2.0.1" 1627 | convert-source-map "^1.6.0" 1628 | 1629 | validator@^13.7.0: 1630 | version "13.7.0" 1631 | resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" 1632 | integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== 1633 | 1634 | vite-plugin-dts@^1.4.1: 1635 | version "1.4.1" 1636 | resolved "https://registry.yarnpkg.com/vite-plugin-dts/-/vite-plugin-dts-1.4.1.tgz#013a2a3505ad543869d1118f346cb54c58de10a4" 1637 | integrity sha512-jo7E4ZeheD2o48oGiI3EygPbej7ZkGFHg3GVTt7Wuo6NgzThLvuzGGuduaFpnhJOGi1piDFsu6oui/wDKIIORQ== 1638 | dependencies: 1639 | "@microsoft/api-extractor" "^7.20.0" 1640 | "@rushstack/node-core-library" "^3.45.1" 1641 | chalk "^4.1.2" 1642 | debug "^4.3.4" 1643 | fast-glob "^3.2.11" 1644 | fs-extra "^10.0.1" 1645 | ts-morph "^14.0.0" 1646 | 1647 | "vite@^2.9.12 || ^3.0.0-0": 1648 | version "3.0.2" 1649 | resolved "https://registry.yarnpkg.com/vite/-/vite-3.0.2.tgz#2a7b4642c53ae066cf724e7e581d6c1fd24e2c32" 1650 | integrity sha512-TAqydxW/w0U5AoL5AsD9DApTvGb2iNbGs3sN4u2VdT1GFkQVUfgUldt+t08TZgi23uIauh1TUOQJALduo9GXqw== 1651 | dependencies: 1652 | esbuild "^0.14.47" 1653 | postcss "^8.4.14" 1654 | resolve "^1.22.1" 1655 | rollup "^2.75.6" 1656 | optionalDependencies: 1657 | fsevents "~2.3.2" 1658 | 1659 | vite@^3.0.9: 1660 | version "3.0.9" 1661 | resolved "https://registry.yarnpkg.com/vite/-/vite-3.0.9.tgz#45fac22c2a5290a970f23d66c1aef56a04be8a30" 1662 | integrity sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw== 1663 | dependencies: 1664 | esbuild "^0.14.47" 1665 | postcss "^8.4.16" 1666 | resolve "^1.22.1" 1667 | rollup ">=2.75.6 <2.77.0 || ~2.77.0" 1668 | optionalDependencies: 1669 | fsevents "~2.3.2" 1670 | 1671 | vitest@0.22.1, vitest@^0.22.1: 1672 | version "0.22.1" 1673 | resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.22.1.tgz#3122e6024bf782ee9aca53034017af7adb009c32" 1674 | integrity sha512-+x28YTnSLth4KbXg7MCzoDAzPJlJex7YgiZbUh6YLp0/4PqVZ7q7/zyfdL0OaPtKTpNiQFPpMC8Y2MSzk8F7dw== 1675 | dependencies: 1676 | "@types/chai" "^4.3.3" 1677 | "@types/chai-subset" "^1.3.3" 1678 | "@types/node" "*" 1679 | chai "^4.3.6" 1680 | debug "^4.3.4" 1681 | local-pkg "^0.4.2" 1682 | tinypool "^0.2.4" 1683 | tinyspy "^1.0.2" 1684 | vite "^2.9.12 || ^3.0.0-0" 1685 | 1686 | which@^2.0.1: 1687 | version "2.0.2" 1688 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1689 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1690 | dependencies: 1691 | isexe "^2.0.0" 1692 | 1693 | word-wrap@^1.2.3: 1694 | version "1.2.3" 1695 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1696 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1697 | 1698 | wrap-ansi@^7.0.0: 1699 | version "7.0.0" 1700 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1701 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1702 | dependencies: 1703 | ansi-styles "^4.0.0" 1704 | string-width "^4.1.0" 1705 | strip-ansi "^6.0.0" 1706 | 1707 | wrappy@1: 1708 | version "1.0.2" 1709 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1710 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1711 | 1712 | y18n@^5.0.5: 1713 | version "5.0.8" 1714 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1715 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1716 | 1717 | yallist@^4.0.0: 1718 | version "4.0.0" 1719 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1720 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1721 | 1722 | yargs-parser@^20.2.2, yargs-parser@^20.2.9: 1723 | version "20.2.9" 1724 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1725 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1726 | 1727 | yargs@^16.2.0: 1728 | version "16.2.0" 1729 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1730 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1731 | dependencies: 1732 | cliui "^7.0.2" 1733 | escalade "^3.1.1" 1734 | get-caller-file "^2.0.5" 1735 | require-directory "^2.1.1" 1736 | string-width "^4.2.0" 1737 | y18n "^5.0.5" 1738 | yargs-parser "^20.2.2" 1739 | 1740 | yocto-queue@^0.1.0: 1741 | version "0.1.0" 1742 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1743 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1744 | 1745 | z-schema@~5.0.2: 1746 | version "5.0.3" 1747 | resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-5.0.3.tgz#68fafb9b735fc7f3c89eabb3e5a6353b4d7b4935" 1748 | integrity sha512-sGvEcBOTNum68x9jCpCVGPFJ6mWnkD0YxOcddDlJHRx3tKdB2q8pCHExMVZo/AV/6geuVJXG7hljDaWG8+5GDw== 1749 | dependencies: 1750 | lodash.get "^4.4.2" 1751 | lodash.isequal "^4.5.0" 1752 | validator "^13.7.0" 1753 | optionalDependencies: 1754 | commander "^2.20.3" 1755 | --------------------------------------------------------------------------------