+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..864dc6f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,319 @@
+
+
+
+
+ The minimal task runner
+
+
+### Features
+- Task list with dynamic states
+- Parallel & nestable tasks
+- Unopinionated
+- Type-safe
+
+Support this project by starring and sharing it. [Follow me](https://github.com/privatenumber) to see what other cool projects I'm working on.
+
+## Install
+```sh
+npm i tasuku
+```
+
+## Usage
+### Task list
+Call `task(taskTitle, taskFunction)` to start a task and display it in a task list in the terminal.
+
+```ts
+import task from 'tasuku'
+
+task('Task 1', async () => {
+ await someAsyncTask()
+})
+
+task('Task 2', async () => {
+ await someAsyncTask()
+})
+
+task('Task 3', async () => {
+ await someAsyncTask()
+})
+```
+
+
+
+#### Task states
+- **◽️ Pending** The task is queued and has not started
+- **🔅 Loading** The task is running
+- **⚠️ Warning** The task completed with a warning
+- **❌ Error** The task exited with an error
+- **✅ Success** The task completed without error
+
+
+
+### Unopinionated
+You can call `task()` from anywhere. There are no requirements. It is designed to be as unopinionated as possible not to interfere with your code.
+
+The tasks will be displayed in the terminal in a consolidated list.
+
+You can change the title of the task by calling `setTitle()`.
+```ts
+import task from 'tasuku'
+
+task('Task 1', async () => {
+ await someAsyncTask()
+})
+
+...
+
+someOtherCode()
+
+...
+
+task('Task 2', async ({ setTitle }) => {
+ await someAsyncTask()
+
+ setTitle('Task 2 complete')
+})
+```
+
+
+
+### Task return values
+The return value of a task will be stored in the output `.result` property.
+
+If using TypeScript, the type of `.result` will be inferred from the task function.
+
+```ts
+const myTask = await task('Task 2', async () => {
+ await someAsyncTask()
+
+ return 'Success'
+})
+
+console.log(myTask.result) // 'Success'
+```
+
+### Nesting tasks
+Tasks can be nested indefinitely. Nested tasks will be stacked hierarchically in the task list.
+```ts
+await task('Do task', async ({ task }) => {
+ await someAsyncTask()
+
+ await task('Do another task', async ({ task }) => {
+ await someAsyncTask()
+
+ await task('And another', async () => {
+ await someAsyncTask()
+ })
+ })
+})
+```
+
+
+
+### Collapsing nested tasks
+Call `.clear()` on the returned task API to collapse the nested task.
+```ts
+await task('Do task', async ({ task }) => {
+ await someAsyncTask()
+
+ const nestedTask = await task('Do another task', async ({ task }) => {
+ await someAsyncTask()
+ })
+
+ nestedTask.clear()
+})
+```
+
+
+
+### Grouped tasks
+Tasks can be grouped with `task.group()`. Pass in a function that returns an array of tasks to run them sequentially.
+
+This is useful for displaying a queue of tasks that have yet to run.
+
+```ts
+const groupedTasks = await task.group(task => [
+ task('Task 1', async () => {
+ await someAsyncTask()
+
+ return 'one'
+ }),
+
+ task('Waiting for Task 1', async ({ setTitle }) => {
+ setTitle('Task 2 running...')
+
+ await someAsyncTask()
+
+ setTitle('Task 2 complete')
+
+ return 'two'
+ }),
+
+ ...
+])
+
+console.log(groupedTasks.results) // ['one', 'two']
+```
+
+
+
+### Running tasks in parallel
+You can run tasks in parallel by passing in `{ concurrency: n }` as the second argument in `task.group()`.
+
+```ts
+const api = await task.group(task => [
+ task(
+ 'Task 1',
+ async () => await someAsyncTask(),
+ ),
+
+ task(
+ 'Task 2',
+ async () => await someAsyncTask(),
+ ),
+ ...
+], {
+ concurrency: 2 // Number of tasks to run at a time
+})
+
+api.clear() // Clear output
+```
+
+
+
+Alternatively, you can also use the native `Promise.all()` if you prefer. The advantage of using `task.group()` is that you can limit concurrency, displays queued tasks as pending, and it returns an API to easily clear the results.
+
+```ts
+// No API
+await Promise.all([
+ task(
+ 'Task 1',
+ async () => await someAsyncTask(),
+ ),
+
+ task(
+ 'Task 2',
+ async () => await someAsyncTask(),
+ ),
+ ...
+])
+```
+
+## API
+
+### task(taskTitle, taskFunction)
+
+Returns a Promise that resolves with object:
+```ts
+{
+ // The result from taskFunction
+ result: any,
+
+ // Invoke to clear the results from the terminal
+ clear: () => void,
+}
+```
+
+#### taskTitle
+Type: `string`
+
+Required: true
+
+The name of the task displayed.
+
+#### taskFunction
+Type:
+```ts
+({
+ task: taskFunction,
+ setTitle: (title: string) => void,
+ setStatus: (status: string) => void,
+ setOutput: (error: string | { message: string }) => void,
+ setWarning: (warning: Error | string) => void,
+ setError: (error: Error | string) => void,
+}) => Promise
+```
+
+Required: true
+
+The task function. The return value will be stored in the `.result` property of the `task()` output object.
+
+
+#### task
+A task function to use for nesting.
+
+#### setTitle()
+Call with a string to change the task title.
+
+#### setStatus()
+Call with a string to set the status of the task. See image below.
+
+#### setOutput()
+Call with a string to set the output of the task. See image below.
+
+#### setWarning()
+Call with a string or Error instance to put the task in a warning state.
+
+#### setError()
+Call with a string or Error instance to put the task in an error state. Tasks automatically go into an error state when it catches an error in the task.
+
+
+
+
+### task.group(createTaskFunctions, options)
+Returns a Promise that resolves with object:
+```ts
+{
+ // The results from the taskFunctions
+ results: any[],
+
+ // Invoke to clear the results from the terminal
+ clear: () => void,
+}
+```
+
+#### createTaskFunctions
+Type: `(task) => Task[]`
+
+Required: true
+
+A function that returns all the tasks you want to group in an array.
+
+#### options
+
+Directly passed into [`p-map`](https://github.com/sindresorhus/p-map).
+
+##### concurrency
+Type: `number` (Integer)
+
+Default: `1`
+
+Number of tasks to run at a time.
+
+##### stopOnError
+Type: `boolean`
+
+Default: `true`
+
+When set to `false`, instead of stopping when a task fails, it will wait for all the tasks to finish and then reject with an aggregated error containing all the errors from the rejected promises.
+
+## FAQ
+
+### What does "Tasuku" mean?
+_Tasuku_ or タスク is the phonetic Japanese pronounciation of the word "task".
+
+
+### Why did you make this?
+
+For writing scripts or CLI tools. _Tasuku_ is a great way to convey the state of the tasks that are running in your script without being imposing about the way you write your code.
+
+Major shoutout to [listr](https://github.com/SamVerschueren/listr) + [listr2](https://github.com/cenk1cenk2/listr2) for being the motivation and visual inspiration for _Tasuku_, and for being my go-to task runner for a long time. I made _Tasuku_ because I eventually found that they were too structured and declarative for my needs.
+
+Big thanks to [ink](https://github.com/vadimdemedes/ink) for doing all the heavy lifting for rendering interfaces in the terminal. Implementing a dynamic task list that doesn't interfere with `console.logs()` wouldn't have been so easy without it.
+
+### Doesn't the usage of nested `task` functions violate ESLint's [no-shadow](https://eslint.org/docs/rules/no-shadow)?
+Yes, but it should be fine as you don't need access to other `task` functions aside from the immediate one.
+
+Put `task` in the allow list:
+- `"no-shadow": ["error", { "allow": ["task"] }]`
+- `"@typescript-eslint/no-shadow": ["error", { "allow": ["task"] }]`
diff --git a/jest.config.json b/jest.config.json
new file mode 100644
index 0000000..c3ce2e2
--- /dev/null
+++ b/jest.config.json
@@ -0,0 +1,6 @@
+{
+ "preset": "es-jest",
+ "transformIgnorePatterns": [
+ "node_modules/.pnpm(?!/(p-map|aggregate-error|indent-string|clean-stack|escape-string-regexp))"
+ ]
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..a4eb3da
--- /dev/null
+++ b/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "tasuku",
+ "version": "0.0.0-semantic-release",
+ "description": "タスク — The minimal task runner",
+ "keywords": [
+ "simple",
+ "minimal",
+ "task",
+ "runner",
+ "cli"
+ ],
+ "license": "MIT",
+ "repository": "privatenumber/tasuku",
+ "funding": "https://github.com/privatenumber/tasuku?sponsor=1",
+ "author": {
+ "name": "Hiroki Osame",
+ "email": "hiroki.osame@gmail.com"
+ },
+ "files": [
+ "bin",
+ "dist"
+ ],
+ "main": "./dist/index.js",
+ "scripts": {
+ "lint": "eslint .",
+ "test": "jest",
+ "typecheck": "tsc --noEmit",
+ "build": "rm -rf dist && tsup src/index.ts --dts --minify --no-splitting --external 'yoga-layout-prebuilt'"
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.{js,ts,tsx}": "eslint",
+ "*.{ts,tsx}": "npm run typecheck"
+ },
+ "dependencies": {
+ "yoga-layout-prebuilt": "1.10.0"
+ },
+ "devDependencies": {
+ "@pvtnbr/eslint-config-react": "^0.1.15",
+ "@types/jest": "^26.0.23",
+ "@types/node": "^15.6.1",
+ "@types/react": "^17.0.4",
+ "dts": "^0.1.1",
+ "es-jest": "^1.2.0",
+ "eslint": "^7.24.0",
+ "esno": "^0.5.0",
+ "husky": "^4.3.8",
+ "ink": "^3.0.8",
+ "ink-task-list": "^1.1.0",
+ "jest": "^27.0.3",
+ "lint-staged": "^10.5.4",
+ "p-map": "^5.0.0",
+ "react": "^17.0.2",
+ "tsup": "^4.11.1",
+ "typescript": "^4.2.4",
+ "valtio": "^1.0.5"
+ },
+ "eslintConfig": {
+ "extends": "@pvtnbr/eslint-config-react",
+ "rules": {
+ "react/prop-types": "off",
+ "@typescript-eslint/no-shadow": ["error", {
+ "allow": ["task"]
+ }]
+ }
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..3eeb529
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,4999 @@
+lockfileVersion: 5.3
+
+specifiers:
+ '@pvtnbr/eslint-config-react': ^0.1.15
+ '@types/jest': ^26.0.23
+ '@types/node': ^15.6.1
+ '@types/react': ^17.0.4
+ dts: ^0.1.1
+ es-jest: ^1.2.0
+ eslint: ^7.24.0
+ esno: ^0.5.0
+ husky: ^4.3.8
+ ink: ^3.0.8
+ ink-task-list: ^1.1.0
+ jest: ^27.0.3
+ lint-staged: ^10.5.4
+ p-map: ^5.0.0
+ react: ^17.0.2
+ tsup: ^4.11.1
+ typescript: ^4.2.4
+ valtio: ^1.0.5
+ yoga-layout-prebuilt: 1.10.0
+
+dependencies:
+ yoga-layout-prebuilt: 1.10.0
+
+devDependencies:
+ '@pvtnbr/eslint-config-react': 0.1.16_eslint@7.27.0+typescript@4.3.2
+ '@types/jest': 26.0.23
+ '@types/node': 15.6.1
+ '@types/react': 17.0.8
+ dts: 0.1.1
+ es-jest: 1.2.0
+ eslint: 7.27.0
+ esno: 0.5.0
+ husky: 4.3.8
+ ink: 3.0.8_@types+react@17.0.8+react@17.0.2
+ ink-task-list: 1.1.0_ink@3.0.8+react@17.0.2
+ jest: 27.0.3
+ lint-staged: 10.5.4
+ p-map: 5.0.0
+ react: 17.0.2
+ tsup: 4.11.1_typescript@4.3.2
+ typescript: 4.3.2
+ valtio: 1.0.5_react@17.0.2
+
+packages:
+
+ /@babel/code-frame/7.12.11:
+ resolution: {integrity: sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=}
+ dependencies:
+ '@babel/highlight': 7.14.0
+ dev: true
+
+ /@babel/code-frame/7.12.13:
+ resolution: {integrity: sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==}
+ dependencies:
+ '@babel/highlight': 7.14.0
+ dev: true
+
+ /@babel/compat-data/7.14.4:
+ resolution: {integrity: sha512-i2wXrWQNkH6JplJQGn3Rd2I4Pij8GdHkXwHMxm+zV5YG/Jci+bCNrWZEWC4o+umiDkRrRs4dVzH3X4GP7vyjQQ==}
+ dev: true
+
+ /@babel/core/7.14.3:
+ resolution: {integrity: sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.12.13
+ '@babel/generator': 7.14.3
+ '@babel/helper-compilation-targets': 7.14.4_@babel+core@7.14.3
+ '@babel/helper-module-transforms': 7.14.2
+ '@babel/helpers': 7.14.0
+ '@babel/parser': 7.14.4
+ '@babel/template': 7.12.13
+ '@babel/traverse': 7.14.2
+ '@babel/types': 7.14.4
+ convert-source-map: 1.7.0
+ debug: 4.3.1
+ gensync: 1.0.0-beta.2
+ json5: 2.2.0
+ semver: 6.3.0
+ source-map: 0.5.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/eslint-parser/7.14.3_@babel+core@7.14.3+eslint@7.27.0:
+ resolution: {integrity: sha1-jyksr4PdLXs2T5OP5wdIBq9tcOo=}
+ engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
+ peerDependencies:
+ '@babel/core': '>=7.11.0'
+ eslint: '>=7.5.0'
+ dependencies:
+ '@babel/core': 7.14.3
+ eslint: 7.27.0
+ eslint-scope: 5.1.1
+ eslint-visitor-keys: 2.1.0
+ semver: 6.3.0
+ dev: true
+
+ /@babel/generator/7.14.3:
+ resolution: {integrity: sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==}
+ dependencies:
+ '@babel/types': 7.14.4
+ jsesc: 2.5.2
+ source-map: 0.5.7
+ dev: true
+
+ /@babel/helper-compilation-targets/7.14.4_@babel+core@7.14.3:
+ resolution: {integrity: sha512-JgdzOYZ/qGaKTVkn5qEDV/SXAh8KcyUVkCoSWGN8T3bwrgd6m+/dJa2kVGi6RJYJgEYPBdZ84BZp9dUjNWkBaA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/compat-data': 7.14.4
+ '@babel/core': 7.14.3
+ '@babel/helper-validator-option': 7.12.17
+ browserslist: 4.16.6
+ semver: 6.3.0
+ dev: true
+
+ /@babel/helper-function-name/7.14.2:
+ resolution: {integrity: sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==}
+ dependencies:
+ '@babel/helper-get-function-arity': 7.12.13
+ '@babel/template': 7.12.13
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@babel/helper-get-function-arity/7.12.13:
+ resolution: {integrity: sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==}
+ dependencies:
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@babel/helper-member-expression-to-functions/7.13.12:
+ resolution: {integrity: sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==}
+ dependencies:
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@babel/helper-module-imports/7.13.12:
+ resolution: {integrity: sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==}
+ dependencies:
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@babel/helper-module-transforms/7.14.2:
+ resolution: {integrity: sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==}
+ dependencies:
+ '@babel/helper-module-imports': 7.13.12
+ '@babel/helper-replace-supers': 7.14.4
+ '@babel/helper-simple-access': 7.13.12
+ '@babel/helper-split-export-declaration': 7.12.13
+ '@babel/helper-validator-identifier': 7.14.0
+ '@babel/template': 7.12.13
+ '@babel/traverse': 7.14.2
+ '@babel/types': 7.14.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-optimise-call-expression/7.12.13:
+ resolution: {integrity: sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==}
+ dependencies:
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@babel/helper-plugin-utils/7.13.0:
+ resolution: {integrity: sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==}
+ dev: true
+
+ /@babel/helper-replace-supers/7.14.4:
+ resolution: {integrity: sha512-zZ7uHCWlxfEAAOVDYQpEf/uyi1dmeC7fX4nCf2iz9drnCwi1zvwXL3HwWWNXUQEJ1k23yVn3VbddiI9iJEXaTQ==}
+ dependencies:
+ '@babel/helper-member-expression-to-functions': 7.13.12
+ '@babel/helper-optimise-call-expression': 7.12.13
+ '@babel/traverse': 7.14.2
+ '@babel/types': 7.14.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-simple-access/7.13.12:
+ resolution: {integrity: sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==}
+ dependencies:
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@babel/helper-split-export-declaration/7.12.13:
+ resolution: {integrity: sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==}
+ dependencies:
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@babel/helper-validator-identifier/7.14.0:
+ resolution: {integrity: sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==}
+ dev: true
+
+ /@babel/helper-validator-option/7.12.17:
+ resolution: {integrity: sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==}
+ dev: true
+
+ /@babel/helpers/7.14.0:
+ resolution: {integrity: sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==}
+ dependencies:
+ '@babel/template': 7.12.13
+ '@babel/traverse': 7.14.2
+ '@babel/types': 7.14.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/highlight/7.14.0:
+ resolution: {integrity: sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.14.0
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
+ /@babel/parser/7.14.4:
+ resolution: {integrity: sha512-ArliyUsWDUqEGfWcmzpGUzNfLxTdTp6WU4IuP6QFSp9gGfWS6boxFCkJSJ/L4+RG8z/FnIU3WxCk6hPL9SSWeA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dev: true
+
+ /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.14.3:
+ resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.14.3:
+ resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.14.3:
+ resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.14.3:
+ resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.14.3:
+ resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.14.3:
+ resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.14.3:
+ resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.14.3:
+ resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.14.3:
+ resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.14.3:
+ resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.14.3:
+ resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-top-level-await/7.12.13_@babel+core@7.14.3:
+ resolution: {integrity: sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/plugin-syntax-typescript/7.12.13_@babel+core@7.14.3:
+ resolution: {integrity: sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/helper-plugin-utils': 7.13.0
+ dev: true
+
+ /@babel/template/7.12.13:
+ resolution: {integrity: sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==}
+ dependencies:
+ '@babel/code-frame': 7.12.13
+ '@babel/parser': 7.14.4
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@babel/traverse/7.14.2:
+ resolution: {integrity: sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==}
+ dependencies:
+ '@babel/code-frame': 7.12.13
+ '@babel/generator': 7.14.3
+ '@babel/helper-function-name': 7.14.2
+ '@babel/helper-split-export-declaration': 7.12.13
+ '@babel/parser': 7.14.4
+ '@babel/types': 7.14.4
+ debug: 4.3.1
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/types/7.14.4:
+ resolution: {integrity: sha512-lCj4aIs0xUefJFQnwwQv2Bxg7Omd6bgquZ6LGC+gGMh6/s5qDVfjuCMlDmYQ15SLsWHd9n+X3E75lKIhl5Lkiw==}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.14.0
+ to-fast-properties: 2.0.0
+ dev: true
+
+ /@bcoe/v8-coverage/0.2.3:
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+ dev: true
+
+ /@eslint/eslintrc/0.4.1:
+ resolution: {integrity: sha1-RCdjuIzsvj7g7Hym1t1haFUMvxQ=}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.1
+ espree: 7.3.1
+ globals: 12.4.0
+ ignore: 4.0.6
+ import-fresh: 3.3.0
+ js-yaml: 3.14.1
+ minimatch: 3.0.4
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@istanbuljs/load-nyc-config/1.1.0:
+ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ camelcase: 5.3.1
+ find-up: 4.1.0
+ get-package-type: 0.1.0
+ js-yaml: 3.14.1
+ resolve-from: 5.0.0
+ dev: true
+
+ /@istanbuljs/schema/0.1.3:
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /@jest/console/27.0.2:
+ resolution: {integrity: sha512-/zYigssuHLImGeMAACkjI4VLAiiJznHgAl3xnFT19iWyct2LhrH3KXOjHRmxBGTkiPLZKKAJAgaPpiU9EZ9K+w==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ chalk: 4.1.1
+ jest-message-util: 27.0.2
+ jest-util: 27.0.2
+ slash: 3.0.0
+ dev: true
+
+ /@jest/core/27.0.3:
+ resolution: {integrity: sha512-rN8lr/OJ8iApcQUh4khnMaOCVX4oRnLwy2tPW3Vh70y62K8Da8fhkxMUq0xX9VPa4+yWUm0tGc/jUSJi+Jzuwg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/console': 27.0.2
+ '@jest/reporters': 27.0.2
+ '@jest/test-result': 27.0.2
+ '@jest/transform': 27.0.2
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ ansi-escapes: 4.3.2
+ chalk: 4.1.1
+ emittery: 0.8.1
+ exit: 0.1.2
+ graceful-fs: 4.2.6
+ jest-changed-files: 27.0.2
+ jest-config: 27.0.3
+ jest-haste-map: 27.0.2
+ jest-message-util: 27.0.2
+ jest-regex-util: 27.0.1
+ jest-resolve: 27.0.2
+ jest-resolve-dependencies: 27.0.3
+ jest-runner: 27.0.3
+ jest-runtime: 27.0.3
+ jest-snapshot: 27.0.2
+ jest-util: 27.0.2
+ jest-validate: 27.0.2
+ jest-watcher: 27.0.2
+ micromatch: 4.0.4
+ p-each-series: 2.2.0
+ rimraf: 3.0.2
+ slash: 3.0.0
+ strip-ansi: 6.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - ts-node
+ - utf-8-validate
+ dev: true
+
+ /@jest/environment/27.0.3:
+ resolution: {integrity: sha512-pN9m7fbKsop5vc3FOfH8NF7CKKdRbEZzcxfIo1n2TT6ucKWLFq0P6gCJH0GpnQp036++yY9utHOxpeT1WnkWTA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/fake-timers': 27.0.3
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ jest-mock: 27.0.3
+ dev: true
+
+ /@jest/fake-timers/27.0.3:
+ resolution: {integrity: sha512-fQ+UCKRIYKvTCEOyKPnaPnomLATIhMnHC/xPZ7yT1Uldp7yMgMxoYIFidDbpSTgB79+/U+FgfoD30c6wg3IUjA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ '@sinonjs/fake-timers': 7.1.2
+ '@types/node': 15.6.1
+ jest-message-util: 27.0.2
+ jest-mock: 27.0.3
+ jest-util: 27.0.2
+ dev: true
+
+ /@jest/globals/27.0.3:
+ resolution: {integrity: sha512-OzsIuf7uf+QalqAGbjClyezzEcLQkdZ+7PejUrZgDs+okdAK8GwRCGcYCirHvhMBBQh60Jr3NlIGbn/KBPQLEQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/environment': 27.0.3
+ '@jest/types': 27.0.2
+ expect: 27.0.2
+ dev: true
+
+ /@jest/reporters/27.0.2:
+ resolution: {integrity: sha512-SVQjew/kafNxSN1my4praGQP+VPVGHsU8zqiEDppLvq6j1lryIjdNb9P+bZSsKeifU4bIoaPnf9Ui0tK9WOpFA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@jest/console': 27.0.2
+ '@jest/test-result': 27.0.2
+ '@jest/transform': 27.0.2
+ '@jest/types': 27.0.2
+ chalk: 4.1.1
+ collect-v8-coverage: 1.0.1
+ exit: 0.1.2
+ glob: 7.1.7
+ graceful-fs: 4.2.6
+ istanbul-lib-coverage: 3.0.0
+ istanbul-lib-instrument: 4.0.3
+ istanbul-lib-report: 3.0.0
+ istanbul-lib-source-maps: 4.0.0
+ istanbul-reports: 3.0.2
+ jest-haste-map: 27.0.2
+ jest-resolve: 27.0.2
+ jest-util: 27.0.2
+ jest-worker: 27.0.2
+ slash: 3.0.0
+ source-map: 0.6.1
+ string-length: 4.0.2
+ terminal-link: 2.1.1
+ v8-to-istanbul: 7.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/source-map/27.0.1:
+ resolution: {integrity: sha512-yMgkF0f+6WJtDMdDYNavmqvbHtiSpwRN2U/W+6uztgfqgkq/PXdKPqjBTUF1RD/feth4rH5N3NW0T5+wIuln1A==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ callsites: 3.1.0
+ graceful-fs: 4.2.6
+ source-map: 0.6.1
+ dev: true
+
+ /@jest/test-result/27.0.2:
+ resolution: {integrity: sha512-gcdWwL3yP5VaIadzwQtbZyZMgpmes8ryBAJp70tuxghiA8qL4imJyZex+i+USQH2H4jeLVVszhwntgdQ97fccA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/console': 27.0.2
+ '@jest/types': 27.0.2
+ '@types/istanbul-lib-coverage': 2.0.3
+ collect-v8-coverage: 1.0.1
+ dev: true
+
+ /@jest/test-sequencer/27.0.3:
+ resolution: {integrity: sha512-DcLTzraZ8xLr5fcIl+CF14vKeBBpBrn55wFxI9Ju+dhEBdjRdJQ/Z/pLkMehkPZWIQ+rR23J8e+wFDkfjree0Q==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/test-result': 27.0.2
+ graceful-fs: 4.2.6
+ jest-haste-map: 27.0.2
+ jest-runtime: 27.0.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/transform/27.0.2:
+ resolution: {integrity: sha512-H8sqKlgtDfVog/s9I4GG2XMbi4Ar7RBxjsKQDUhn2XHAi3NG+GoQwWMER+YfantzExbjNqQvqBHzo/G2pfTiPw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@babel/core': 7.14.3
+ '@jest/types': 27.0.2
+ babel-plugin-istanbul: 6.0.0
+ chalk: 4.1.1
+ convert-source-map: 1.7.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.6
+ jest-haste-map: 27.0.2
+ jest-regex-util: 27.0.1
+ jest-util: 27.0.2
+ micromatch: 4.0.4
+ pirates: 4.0.1
+ slash: 3.0.0
+ source-map: 0.6.1
+ write-file-atomic: 3.0.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/types/26.6.2:
+ resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==}
+ engines: {node: '>= 10.14.2'}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.3
+ '@types/istanbul-reports': 3.0.1
+ '@types/node': 15.6.1
+ '@types/yargs': 15.0.13
+ chalk: 4.1.1
+ dev: true
+
+ /@jest/types/27.0.2:
+ resolution: {integrity: sha512-XpjCtJ/99HB4PmyJ2vgmN7vT+JLP7RW1FBT9RgnMFS4Dt7cvIyBee8O3/j98aUZ34ZpenPZFqmaaObWSeL65dg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.3
+ '@types/istanbul-reports': 3.0.1
+ '@types/node': 15.6.1
+ '@types/yargs': 16.0.3
+ chalk: 4.1.1
+ dev: true
+
+ /@nodelib/fs.scandir/2.1.4:
+ resolution: {integrity: sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.4
+ run-parallel: 1.2.0
+ dev: true
+
+ /@nodelib/fs.stat/2.0.4:
+ resolution: {integrity: sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /@nodelib/fs.walk/1.2.6:
+ resolution: {integrity: sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.4
+ fastq: 1.11.0
+ dev: true
+
+ /@pvtnbr/eslint-config-base/0.1.16_eslint@7.27.0:
+ resolution: {integrity: sha1-r2CD8nhS/ArJVc45JwakM37+f98=}
+ peerDependencies:
+ eslint: ^7.15.0
+ dependencies:
+ confusing-browser-globals: 1.0.10
+ eslint: 7.27.0
+ eslint-plugin-eslint-comments: 3.2.0_eslint@7.27.0
+ eslint-plugin-import: 2.23.3_eslint@7.27.0
+ eslint-plugin-jsonc: 1.2.1_eslint@7.27.0
+ eslint-plugin-no-use-extend-native: 0.5.0
+ eslint-plugin-node: 11.1.0_eslint@7.27.0
+ eslint-plugin-promise: 4.3.1
+ eslint-plugin-regexp: 0.4.3_eslint@7.27.0
+ eslint-plugin-unicorn: 28.0.2_eslint@7.27.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@pvtnbr/eslint-config-react/0.1.16_eslint@7.27.0+typescript@4.3.2:
+ resolution: {integrity: sha1-S9DtcJieDz5AHVUdNSWIUZsg9js=}
+ peerDependencies:
+ eslint: ^7.15.0
+ dependencies:
+ '@pvtnbr/eslint-config-typescript': 0.1.16_eslint@7.27.0+typescript@4.3.2
+ eslint: 7.27.0
+ eslint-plugin-react: 7.23.2_eslint@7.27.0
+ eslint-plugin-react-hooks: 4.2.0_eslint@7.27.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@pvtnbr/eslint-config-typescript/0.1.16_eslint@7.27.0+typescript@4.3.2:
+ resolution: {integrity: sha1-JeYVS8xm98Amj22315IMhCN55a0=}
+ peerDependencies:
+ eslint: ^7.15.0
+ dependencies:
+ '@pvtnbr/eslint-config-base': 0.1.16_eslint@7.27.0
+ '@typescript-eslint/eslint-plugin': 4.25.0_ec7770e83475322b368bff30b543badb
+ '@typescript-eslint/parser': 4.25.0_eslint@7.27.0+typescript@4.3.2
+ eslint: 7.27.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@sinonjs/commons/1.8.3:
+ resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==}
+ dependencies:
+ type-detect: 4.0.8
+ dev: true
+
+ /@sinonjs/fake-timers/7.1.2:
+ resolution: {integrity: sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==}
+ dependencies:
+ '@sinonjs/commons': 1.8.3
+ dev: true
+
+ /@tootallnate/once/1.1.2:
+ resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /@types/babel__core/7.1.14:
+ resolution: {integrity: sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==}
+ dependencies:
+ '@babel/parser': 7.14.4
+ '@babel/types': 7.14.4
+ '@types/babel__generator': 7.6.2
+ '@types/babel__template': 7.4.0
+ '@types/babel__traverse': 7.11.1
+ dev: true
+
+ /@types/babel__generator/7.6.2:
+ resolution: {integrity: sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==}
+ dependencies:
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@types/babel__template/7.4.0:
+ resolution: {integrity: sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==}
+ dependencies:
+ '@babel/parser': 7.14.4
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@types/babel__traverse/7.11.1:
+ resolution: {integrity: sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==}
+ dependencies:
+ '@babel/types': 7.14.4
+ dev: true
+
+ /@types/graceful-fs/4.1.5:
+ resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==}
+ dependencies:
+ '@types/node': 15.6.1
+ dev: true
+
+ /@types/istanbul-lib-coverage/2.0.3:
+ resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==}
+ dev: true
+
+ /@types/istanbul-lib-report/3.0.0:
+ resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.3
+ dev: true
+
+ /@types/istanbul-reports/3.0.1:
+ resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==}
+ dependencies:
+ '@types/istanbul-lib-report': 3.0.0
+ dev: true
+
+ /@types/jest/26.0.23:
+ resolution: {integrity: sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==}
+ dependencies:
+ jest-diff: 26.6.2
+ pretty-format: 26.6.2
+ dev: true
+
+ /@types/json-schema/7.0.7:
+ resolution: {integrity: sha1-mKmTUWyFnrDVxMjwmDF6nqaNua0=}
+ dev: true
+
+ /@types/json5/0.0.29:
+ resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=}
+ dev: true
+
+ /@types/node/15.6.1:
+ resolution: {integrity: sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==}
+ dev: true
+
+ /@types/normalize-package-data/2.4.0:
+ resolution: {integrity: sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=}
+ dev: true
+
+ /@types/parse-json/4.0.0:
+ resolution: {integrity: sha1-L4u0QUNNFjs1+4/9zNcTiSf/uMA=}
+ dev: true
+
+ /@types/prettier/2.2.3:
+ resolution: {integrity: sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==}
+ dev: true
+
+ /@types/prop-types/15.7.3:
+ resolution: {integrity: sha1-KrDV2i5YFflLC51LldHl8kOrLKc=}
+ dev: true
+
+ /@types/react/17.0.8:
+ resolution: {integrity: sha1-/nbjug+7VgJwQRD9HjA1zzlHeOM=}
+ dependencies:
+ '@types/prop-types': 15.7.3
+ '@types/scheduler': 0.16.1
+ csstype: 3.0.8
+ dev: true
+
+ /@types/scheduler/0.16.1:
+ resolution: {integrity: sha1-GIRSBehv8AOFF6q3oYpiprn3EnU=}
+ dev: true
+
+ /@types/stack-utils/2.0.0:
+ resolution: {integrity: sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==}
+ dev: true
+
+ /@types/yargs-parser/20.2.0:
+ resolution: {integrity: sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==}
+ dev: true
+
+ /@types/yargs/15.0.13:
+ resolution: {integrity: sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==}
+ dependencies:
+ '@types/yargs-parser': 20.2.0
+ dev: true
+
+ /@types/yargs/16.0.3:
+ resolution: {integrity: sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ==}
+ dependencies:
+ '@types/yargs-parser': 20.2.0
+ dev: true
+
+ /@types/yoga-layout/1.9.2:
+ resolution: {integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==}
+
+ /@typescript-eslint/eslint-plugin/4.25.0_ec7770e83475322b368bff30b543badb:
+ resolution: {integrity: sha1-2CZXtqtMqkw/iI/5IxdfrcLzHyo=}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^4.0.0
+ eslint: ^5.0.0 || ^6.0.0 || ^7.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/experimental-utils': 4.25.0_eslint@7.27.0+typescript@4.3.2
+ '@typescript-eslint/parser': 4.25.0_eslint@7.27.0+typescript@4.3.2
+ '@typescript-eslint/scope-manager': 4.25.0
+ debug: 4.3.1
+ eslint: 7.27.0
+ functional-red-black-tree: 1.0.1
+ lodash: 4.17.21
+ regexpp: 3.1.0
+ semver: 7.3.5
+ tsutils: 3.21.0_typescript@4.3.2
+ typescript: 4.3.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/experimental-utils/4.25.0_eslint@7.27.0+typescript@4.3.2:
+ resolution: {integrity: sha1-sv68+nFdLBgG/V8DNRk6bNJw31Q=}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ peerDependencies:
+ eslint: '*'
+ dependencies:
+ '@types/json-schema': 7.0.7
+ '@typescript-eslint/scope-manager': 4.25.0
+ '@typescript-eslint/types': 4.25.0
+ '@typescript-eslint/typescript-estree': 4.25.0_typescript@4.3.2
+ eslint: 7.27.0
+ eslint-scope: 5.1.1
+ eslint-utils: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@typescript-eslint/parser/4.25.0_eslint@7.27.0+typescript@4.3.2:
+ resolution: {integrity: sha1-ayy2KFqj1Vv7JjxlBzkJGw8ZrOs=}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ peerDependencies:
+ eslint: ^5.0.0 || ^6.0.0 || ^7.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 4.25.0
+ '@typescript-eslint/types': 4.25.0
+ '@typescript-eslint/typescript-estree': 4.25.0_typescript@4.3.2
+ debug: 4.3.1
+ eslint: 7.27.0
+ typescript: 4.3.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/scope-manager/4.25.0:
+ resolution: {integrity: sha1-nYalvMRu9ArNA9ha1OkI5aq41Mo=}
+ engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1}
+ dependencies:
+ '@typescript-eslint/types': 4.25.0
+ '@typescript-eslint/visitor-keys': 4.25.0
+ dev: true
+
+ /@typescript-eslint/types/4.25.0:
+ resolution: {integrity: sha1-DkRKXF48Itf/peFuDmBRCz3lr4c=}
+ engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1}
+ dev: true
+
+ /@typescript-eslint/typescript-estree/4.25.0_typescript@4.3.2:
+ resolution: {integrity: sha1-lC5OJYiHNr/1s2DZsLYeAT0M+iU=}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 4.25.0
+ '@typescript-eslint/visitor-keys': 4.25.0
+ debug: 4.3.1
+ globby: 11.0.3
+ is-glob: 4.0.1
+ semver: 7.3.5
+ tsutils: 3.21.0_typescript@4.3.2
+ typescript: 4.3.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/visitor-keys/4.25.0:
+ resolution: {integrity: sha1-hj5+0j2kKHxbRpsTIjJV0P3mqqc=}
+ engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1}
+ dependencies:
+ '@typescript-eslint/types': 4.25.0
+ eslint-visitor-keys: 2.1.0
+ dev: true
+
+ /abab/2.0.5:
+ resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==}
+ dev: true
+
+ /acorn-globals/6.0.0:
+ resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==}
+ dependencies:
+ acorn: 7.4.1
+ acorn-walk: 7.2.0
+ dev: true
+
+ /acorn-jsx/5.3.1_acorn@7.4.1:
+ resolution: {integrity: sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns=}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 7.4.1
+ dev: true
+
+ /acorn-walk/7.2.0:
+ resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /acorn/7.4.1:
+ resolution: {integrity: sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /acorn/8.3.0:
+ resolution: {integrity: sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /agent-base/6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+ dependencies:
+ debug: 4.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /aggregate-error/3.1.0:
+ resolution: {integrity: sha1-kmcP9Q9TWb23o+DUDQ7DDFc3aHo=}
+ engines: {node: '>=8'}
+ dependencies:
+ clean-stack: 2.2.0
+ indent-string: 4.0.0
+ dev: true
+
+ /aggregate-error/4.0.0:
+ resolution: {integrity: sha512-8DGp7zUt1E9k0NE2q4jlXHk+V3ORErmwolEdRz9iV+LKJ40WhMHh92cxAvhqV2I+zEn/gotIoqoMs0NjF3xofg==}
+ engines: {node: '>=12'}
+ dependencies:
+ clean-stack: 4.1.0
+ indent-string: 5.0.0
+ dev: true
+
+ /ajv/6.12.6:
+ resolution: {integrity: sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+ dev: true
+
+ /ajv/8.5.0:
+ resolution: {integrity: sha1-aVUoJ0vLWvyGVEaqJ1SEBJoYrks=}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ uri-js: 4.4.1
+ dev: true
+
+ /ansi-colors/4.1.1:
+ resolution: {integrity: sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=}
+ engines: {node: '>=6'}
+ dev: true
+
+ /ansi-escapes/4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.21.3
+ dev: true
+
+ /ansi-regex/4.1.0:
+ resolution: {integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /ansi-regex/5.0.0:
+ resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /ansi-styles/3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+ dependencies:
+ color-convert: 1.9.3
+ dev: true
+
+ /ansi-styles/4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: true
+
+ /ansi-styles/5.2.0:
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /any-promise/1.3.0:
+ resolution: {integrity: sha1-q8av7tzqUugJzcA3au0845Y10X8=}
+ dev: true
+
+ /anymatch/3.1.2:
+ resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.0
+ dev: true
+
+ /argparse/1.0.10:
+ resolution: {integrity: sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=}
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: true
+
+ /array-includes/3.1.3:
+ resolution: {integrity: sha1-x/YZs4KtKvr1Mmzd/cCvxhr3aQo=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ es-abstract: 1.18.3
+ get-intrinsic: 1.1.1
+ is-string: 1.0.6
+ dev: true
+
+ /array-union/2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /array.prototype.flat/1.2.4:
+ resolution: {integrity: sha1-bvY4tDMSvUAbTGGZ/ex+LcnpoSM=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ es-abstract: 1.18.3
+ dev: true
+
+ /array.prototype.flatmap/1.2.4:
+ resolution: {integrity: sha1-lM/UfMFVbsB0fZf3x3OMWBIgBMk=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ es-abstract: 1.18.3
+ function-bind: 1.1.1
+ dev: true
+
+ /astral-regex/1.0.0:
+ resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /astral-regex/2.0.0:
+ resolution: {integrity: sha1-SDFDxWeu7UeFdZwIZXhtx319LjE=}
+ engines: {node: '>=8'}
+ dev: true
+
+ /asynckit/0.4.0:
+ resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=}
+ dev: true
+
+ /auto-bind/4.0.0:
+ resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /babel-jest/27.0.2_@babel+core@7.14.3:
+ resolution: {integrity: sha512-9OThPl3/IQbo4Yul2vMz4FYwILPQak8XelX4YGowygfHaOl5R5gfjm4iVx4d8aUugkW683t8aq0A74E7b5DU1Q==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ peerDependencies:
+ '@babel/core': ^7.8.0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@jest/transform': 27.0.2
+ '@jest/types': 27.0.2
+ '@types/babel__core': 7.1.14
+ babel-plugin-istanbul: 6.0.0
+ babel-preset-jest: 27.0.1_@babel+core@7.14.3
+ chalk: 4.1.1
+ graceful-fs: 4.2.6
+ slash: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /babel-plugin-istanbul/6.0.0:
+ resolution: {integrity: sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/helper-plugin-utils': 7.13.0
+ '@istanbuljs/load-nyc-config': 1.1.0
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-instrument: 4.0.3
+ test-exclude: 6.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /babel-plugin-jest-hoist/27.0.1:
+ resolution: {integrity: sha512-sqBF0owAcCDBVEDtxqfYr2F36eSHdx7lAVGyYuOBRnKdD6gzcy0I0XrAYCZgOA3CRrLhmR+Uae9nogPzmAtOfQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@babel/template': 7.12.13
+ '@babel/types': 7.14.4
+ '@types/babel__core': 7.1.14
+ '@types/babel__traverse': 7.11.1
+ dev: true
+
+ /babel-preset-current-node-syntax/1.0.1_@babel+core@7.14.3:
+ resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.14.3
+ '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.14.3
+ '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.3
+ '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.14.3
+ '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.14.3
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.14.3
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.14.3
+ '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.14.3
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.14.3
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.14.3
+ '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.14.3
+ '@babel/plugin-syntax-top-level-await': 7.12.13_@babel+core@7.14.3
+ dev: true
+
+ /babel-preset-jest/27.0.1_@babel+core@7.14.3:
+ resolution: {integrity: sha512-nIBIqCEpuiyhvjQs2mVNwTxQQa2xk70p9Dd/0obQGBf8FBzbnI8QhQKzLsWMN2i6q+5B0OcWDtrboBX5gmOLyA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.14.3
+ babel-plugin-jest-hoist: 27.0.1
+ babel-preset-current-node-syntax: 1.0.1_@babel+core@7.14.3
+ dev: true
+
+ /balanced-match/1.0.2:
+ resolution: {integrity: sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=}
+ dev: true
+
+ /binary-extensions/2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /brace-expansion/1.1.11:
+ resolution: {integrity: sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+ dev: true
+
+ /braces/3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+ dev: true
+
+ /browser-process-hrtime/1.0.0:
+ resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==}
+ dev: true
+
+ /browserslist/4.16.6:
+ resolution: {integrity: sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001233
+ colorette: 1.2.2
+ electron-to-chromium: 1.3.743
+ escalade: 3.1.1
+ node-releases: 1.1.72
+ dev: true
+
+ /bser/2.1.1:
+ resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
+ dependencies:
+ node-int64: 0.4.0
+ dev: true
+
+ /buffer-from/1.1.1:
+ resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==}
+ dev: true
+
+ /cac/6.7.3:
+ resolution: {integrity: sha512-ECVqVZh74qgSuZG9YOt2OJPI3wGcf+EwwuF/XIOYqZBD0KZYLtgPWqFPxmDPQ6joxI1nOlvVgRV6VT53Ooyocg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /call-bind/1.0.2:
+ resolution: {integrity: sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=}
+ dependencies:
+ function-bind: 1.1.1
+ get-intrinsic: 1.1.1
+ dev: true
+
+ /callsites/3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /camelcase/5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /camelcase/6.2.0:
+ resolution: {integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /caniuse-lite/1.0.30001233:
+ resolution: {integrity: sha512-BmkbxLfStqiPA7IEzQpIk0UFZFf3A4E6fzjPJ6OR+bFC2L8ES9J8zGA/asoi47p8XDVkev+WJo2I2Nc8c/34Yg==}
+ dev: true
+
+ /chalk/2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+ dev: true
+
+ /chalk/4.1.1:
+ resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /char-regex/1.0.2:
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /chokidar/3.5.1:
+ resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.2
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.1
+ normalize-path: 3.0.0
+ readdirp: 3.5.0
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /ci-info/2.0.0:
+ resolution: {integrity: sha1-Z6npZL4xpR4V5QENWObxKDQAL0Y=}
+ dev: true
+
+ /ci-info/3.2.0:
+ resolution: {integrity: sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==}
+ dev: true
+
+ /cjs-module-lexer/1.2.1:
+ resolution: {integrity: sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw==}
+ dev: true
+
+ /clean-regexp/1.0.0:
+ resolution: {integrity: sha1-jffHquUf02h06PjQW5GAvBGj/tc=}
+ engines: {node: '>=4'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
+ /clean-stack/2.2.0:
+ resolution: {integrity: sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=}
+ engines: {node: '>=6'}
+ dev: true
+
+ /clean-stack/4.1.0:
+ resolution: {integrity: sha512-dxXQYI7mfQVcaF12s6sjNFoZ6ZPDQuBBLp3QJ5156k9EvUFClUoZ11fo8HnLQO241DDVntHEug8MOuFO5PSfRg==}
+ engines: {node: '>=12'}
+ dependencies:
+ escape-string-regexp: 5.0.0
+ dev: true
+
+ /cli-boxes/2.2.1:
+ resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /cli-cursor/3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+ dependencies:
+ restore-cursor: 3.1.0
+ dev: true
+
+ /cli-spinners/2.6.0:
+ resolution: {integrity: sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /cli-truncate/2.1.0:
+ resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
+ engines: {node: '>=8'}
+ dependencies:
+ slice-ansi: 3.0.0
+ string-width: 4.2.2
+ dev: true
+
+ /cliui/7.0.4:
+ resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
+ dependencies:
+ string-width: 4.2.2
+ strip-ansi: 6.0.0
+ wrap-ansi: 7.0.0
+ dev: true
+
+ /co/4.6.0:
+ resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+ dev: true
+
+ /code-excerpt/3.0.0:
+ resolution: {integrity: sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==}
+ engines: {node: '>=10'}
+ dependencies:
+ convert-to-spaces: 1.0.2
+ dev: true
+
+ /collect-v8-coverage/1.0.1:
+ resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==}
+ dev: true
+
+ /color-convert/1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ dependencies:
+ color-name: 1.1.3
+ dev: true
+
+ /color-convert/2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+ dev: true
+
+ /color-name/1.1.3:
+ resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
+ dev: true
+
+ /color-name/1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: true
+
+ /colorette/1.2.2:
+ resolution: {integrity: sha1-y8x51emcrqLb8Q6zom/Ys+as+pQ=}
+ dev: true
+
+ /combined-stream/1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 1.0.0
+ dev: true
+
+ /commander/4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /commander/6.2.1:
+ resolution: {integrity: sha1-B5LraC37wyWZm7K4T93duhEKxzw=}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /comment-parser/1.1.5:
+ resolution: {integrity: sha1-RTYn749n287ETnmpvVuqN/C86bI=}
+ engines: {node: '>= 10.0.0'}
+ dev: true
+
+ /compare-versions/3.6.0:
+ resolution: {integrity: sha1-GlaJkTaF5ah2N7jT/8p1UU7EHWI=}
+ dev: true
+
+ /concat-map/0.0.1:
+ resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
+ dev: true
+
+ /confusing-browser-globals/1.0.10:
+ resolution: {integrity: sha1-MNHn89G4grJexJM9HRraw1PSClk=}
+ dev: true
+
+ /convert-source-map/1.7.0:
+ resolution: {integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==}
+ dependencies:
+ safe-buffer: 5.1.2
+ dev: true
+
+ /convert-to-spaces/1.0.2:
+ resolution: {integrity: sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /cosmiconfig/7.0.0:
+ resolution: {integrity: sha1-75tE13OVnK5j3ezRIt4jhTtg+NM=}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/parse-json': 4.0.0
+ import-fresh: 3.3.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: 1.10.2
+ dev: true
+
+ /cross-spawn/7.0.3:
+ resolution: {integrity: sha1-9zqFudXUHQRVUcF34ogtSshXKKY=}
+ engines: {node: '>= 8'}
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+ dev: true
+
+ /cssom/0.3.8:
+ resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
+ dev: true
+
+ /cssom/0.4.4:
+ resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==}
+ dev: true
+
+ /cssstyle/2.3.0:
+ resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
+ engines: {node: '>=8'}
+ dependencies:
+ cssom: 0.3.8
+ dev: true
+
+ /csstype/3.0.8:
+ resolution: {integrity: sha1-0iZqeScp+yJ80hb7Vy9Dco4a00A=}
+ dev: true
+
+ /data-urls/2.0.0:
+ resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ abab: 2.0.5
+ whatwg-mimetype: 2.3.0
+ whatwg-url: 8.5.0
+ dev: true
+
+ /debug/2.6.9:
+ resolution: {integrity: sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=}
+ dependencies:
+ ms: 2.0.0
+ dev: true
+
+ /debug/3.2.7:
+ resolution: {integrity: sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=}
+ dependencies:
+ ms: 2.1.3
+ dev: true
+
+ /debug/4.3.1:
+ resolution: {integrity: sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ dev: true
+
+ /decimal.js/10.2.1:
+ resolution: {integrity: sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==}
+ dev: true
+
+ /dedent/0.7.0:
+ resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=}
+ dev: true
+
+ /deep-is/0.1.3:
+ resolution: {integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=}
+ dev: true
+
+ /deepmerge/4.2.2:
+ resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /define-properties/1.1.3:
+ resolution: {integrity: sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ object-keys: 1.1.1
+ dev: true
+
+ /delayed-stream/1.0.0:
+ resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /detect-newline/3.1.0:
+ resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /diff-sequences/26.6.2:
+ resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==}
+ engines: {node: '>= 10.14.2'}
+ dev: true
+
+ /diff-sequences/27.0.1:
+ resolution: {integrity: sha512-XPLijkfJUh/PIBnfkcSHgvD6tlYixmcMAn3osTk6jt+H0v/mgURto1XUiD9DKuGX5NDoVS6dSlA23gd9FUaCFg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dev: true
+
+ /dir-glob/3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-type: 4.0.0
+ dev: true
+
+ /doctrine/2.1.0:
+ resolution: {integrity: sha1-XNAfwQFiG0LEzX9dGmYkNxbT850=}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ esutils: 2.0.3
+ dev: true
+
+ /doctrine/3.0.0:
+ resolution: {integrity: sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ esutils: 2.0.3
+ dev: true
+
+ /domexception/2.0.1:
+ resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==}
+ engines: {node: '>=8'}
+ dependencies:
+ webidl-conversions: 5.0.0
+ dev: true
+
+ /dts/0.1.1:
+ resolution: {integrity: sha1-IFSAvC+IZhO91bZVQQefqoyD/5Q=}
+ dev: true
+
+ /electron-to-chromium/1.3.743:
+ resolution: {integrity: sha512-K2wXfo9iZQzNJNx67+Pld0DRF+9bYinj62gXCdgPhcu1vidwVuLPHQPPFnCdO55njWigXXpfBiT90jGUPbw8Zg==}
+ dev: true
+
+ /emittery/0.8.1:
+ resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /emoji-regex/8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ dev: true
+
+ /end-of-stream/1.4.4:
+ resolution: {integrity: sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=}
+ dependencies:
+ once: 1.4.0
+ dev: true
+
+ /enquirer/2.3.6:
+ resolution: {integrity: sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=}
+ engines: {node: '>=8.6'}
+ dependencies:
+ ansi-colors: 4.1.1
+ dev: true
+
+ /error-ex/1.3.2:
+ resolution: {integrity: sha1-tKxAZIEH/c3PriQvQovqihTU8b8=}
+ dependencies:
+ is-arrayish: 0.2.1
+ dev: true
+
+ /es-abstract/1.18.3:
+ resolution: {integrity: sha1-JcTDOAonqiA8RLK2hbupTaMbY+A=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ es-to-primitive: 1.2.1
+ function-bind: 1.1.1
+ get-intrinsic: 1.1.1
+ has: 1.0.3
+ has-symbols: 1.0.2
+ is-callable: 1.2.3
+ is-negative-zero: 2.0.1
+ is-regex: 1.1.3
+ is-string: 1.0.6
+ object-inspect: 1.10.3
+ object-keys: 1.1.1
+ object.assign: 4.1.2
+ string.prototype.trimend: 1.0.4
+ string.prototype.trimstart: 1.0.4
+ unbox-primitive: 1.0.1
+ dev: true
+
+ /es-jest/1.2.0:
+ resolution: {integrity: sha512-6p1ekiZyku8YTulvjC2prPdY64tKlPcn42U9aP8cUj/SUR4D0Wb15GdifvDdrdLhz/QP5hLcJ25yxd2K2mLceA==}
+ engines: {node: '>=10'}
+ dependencies:
+ esbuild: 0.9.7
+ dev: true
+
+ /es-to-primitive/1.2.1:
+ resolution: {integrity: sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-callable: 1.2.3
+ is-date-object: 1.0.4
+ is-symbol: 1.0.4
+ dev: true
+
+ /esbuild-register/2.5.0:
+ resolution: {integrity: sha512-5a8W3rH7IQbIPR9pPXJFkC3+CRMtm/OSpBz3hkWUUU63oPZ3NU6dVDGfaIjKnRizCTIRoGjNE6KEDt5p1sLwEw==}
+ dependencies:
+ esbuild: 0.11.23
+ jsonc-parser: 3.0.0
+ dev: true
+
+ /esbuild/0.11.23:
+ resolution: {integrity: sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==}
+ hasBin: true
+ requiresBuild: true
+ dev: true
+
+ /esbuild/0.9.7:
+ resolution: {integrity: sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==}
+ hasBin: true
+ requiresBuild: true
+ dev: true
+
+ /escalade/3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /escape-string-regexp/1.0.5:
+ resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ /escape-string-regexp/2.0.0:
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /escape-string-regexp/4.0.0:
+ resolution: {integrity: sha1-FLqDpdNz49MR5a/KKc9b+tllvzQ=}
+ engines: {node: '>=10'}
+ dev: true
+
+ /escape-string-regexp/5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /escodegen/2.0.0:
+ resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==}
+ engines: {node: '>=6.0'}
+ hasBin: true
+ dependencies:
+ esprima: 4.0.1
+ estraverse: 5.2.0
+ esutils: 2.0.3
+ optionator: 0.8.3
+ optionalDependencies:
+ source-map: 0.6.1
+ dev: true
+
+ /eslint-import-resolver-node/0.3.4:
+ resolution: {integrity: sha1-hf+oGULCUBLYIxCW3fZ5wDBCxxc=}
+ dependencies:
+ debug: 2.6.9
+ resolve: 1.20.0
+ dev: true
+
+ /eslint-module-utils/2.6.1:
+ resolution: {integrity: sha1-tRvh5HPdDeHF6mOOIkKcJJDqgjM=}
+ engines: {node: '>=4'}
+ dependencies:
+ debug: 3.2.7
+ pkg-dir: 2.0.0
+ dev: true
+
+ /eslint-plugin-es/3.0.1_eslint@7.27.0:
+ resolution: {integrity: sha1-dafN/czdwFiZNK7rOEF18iHFeJM=}
+ engines: {node: '>=8.10.0'}
+ peerDependencies:
+ eslint: '>=4.19.1'
+ dependencies:
+ eslint: 7.27.0
+ eslint-utils: 2.1.0
+ regexpp: 3.1.0
+ dev: true
+
+ /eslint-plugin-eslint-comments/3.2.0_eslint@7.27.0:
+ resolution: {integrity: sha1-nhzXtEE1JquzE5MwcderoFyhL/o=}
+ engines: {node: '>=6.5.0'}
+ peerDependencies:
+ eslint: '>=4.19.1'
+ dependencies:
+ escape-string-regexp: 1.0.5
+ eslint: 7.27.0
+ ignore: 5.1.8
+ dev: true
+
+ /eslint-plugin-import/2.23.3_eslint@7.27.0:
+ resolution: {integrity: sha1-ihsHMon/8DxK8PBLbflWt9Rj4ZE=}
+ engines: {node: '>=4'}
+ peerDependencies:
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0
+ dependencies:
+ array-includes: 3.1.3
+ array.prototype.flat: 1.2.4
+ debug: 2.6.9
+ doctrine: 2.1.0
+ eslint: 7.27.0
+ eslint-import-resolver-node: 0.3.4
+ eslint-module-utils: 2.6.1
+ find-up: 2.1.0
+ has: 1.0.3
+ is-core-module: 2.4.0
+ minimatch: 3.0.4
+ object.values: 1.1.4
+ pkg-up: 2.0.0
+ read-pkg-up: 3.0.0
+ resolve: 1.20.0
+ tsconfig-paths: 3.9.0
+ dev: true
+
+ /eslint-plugin-jsonc/1.2.1_eslint@7.27.0:
+ resolution: {integrity: sha1-l0yNJzd4UiQwju+ISIve0GKLHxQ=}
+ peerDependencies:
+ eslint: ^5.0.0 || >=6.0.0
+ dependencies:
+ eslint: 7.27.0
+ eslint-utils: 2.1.0
+ jsonc-eslint-parser: 1.0.1
+ natural-compare: 1.4.0
+ dev: true
+
+ /eslint-plugin-no-use-extend-native/0.5.0:
+ resolution: {integrity: sha1-1oVeOoI6gZtGfPffVq3KV950G/k=}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ is-get-set-prop: 1.0.0
+ is-js-type: 2.0.0
+ is-obj-prop: 1.0.0
+ is-proto-prop: 2.0.0
+ dev: true
+
+ /eslint-plugin-node/11.1.0_eslint@7.27.0:
+ resolution: {integrity: sha1-yVVEQW7kraJnQKMEdO78VALcZx0=}
+ engines: {node: '>=8.10.0'}
+ peerDependencies:
+ eslint: '>=5.16.0'
+ dependencies:
+ eslint: 7.27.0
+ eslint-plugin-es: 3.0.1_eslint@7.27.0
+ eslint-utils: 2.1.0
+ ignore: 5.1.8
+ minimatch: 3.0.4
+ resolve: 1.20.0
+ semver: 6.3.0
+ dev: true
+
+ /eslint-plugin-promise/4.3.1:
+ resolution: {integrity: sha1-YUhd8qNZ4DFJ/a/AposOAwrSrEU=}
+ engines: {node: '>=6'}
+ dev: true
+
+ /eslint-plugin-react-hooks/4.2.0_eslint@7.27.0:
+ resolution: {integrity: sha1-jCKcJo1GiVYzTJQ7tF/IYCgPVVY=}
+ engines: {node: '>=10'}
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+ dependencies:
+ eslint: 7.27.0
+ dev: true
+
+ /eslint-plugin-react/7.23.2_eslint@7.27.0:
+ resolution: {integrity: sha1-LSKRsPlcA3KLVYafARAikOeS1JQ=}
+ engines: {node: '>=4'}
+ peerDependencies:
+ eslint: ^3 || ^4 || ^5 || ^6 || ^7
+ dependencies:
+ array-includes: 3.1.3
+ array.prototype.flatmap: 1.2.4
+ doctrine: 2.1.0
+ eslint: 7.27.0
+ has: 1.0.3
+ jsx-ast-utils: 3.2.0
+ minimatch: 3.0.4
+ object.entries: 1.1.4
+ object.fromentries: 2.0.4
+ object.values: 1.1.4
+ prop-types: 15.7.2
+ resolve: 2.0.0-next.3
+ string.prototype.matchall: 4.0.5
+ dev: true
+
+ /eslint-plugin-regexp/0.4.3_eslint@7.27.0:
+ resolution: {integrity: sha1-NWo0BMQX/gJU0EDPJMWSRLanjDk=}
+ peerDependencies:
+ eslint: '>=6.0.0'
+ dependencies:
+ comment-parser: 1.1.5
+ eslint: 7.27.0
+ eslint-utils: 2.1.0
+ jsdoctypeparser: 9.0.0
+ regexpp: 3.1.0
+ dev: true
+
+ /eslint-plugin-unicorn/28.0.2_eslint@7.27.0:
+ resolution: {integrity: sha1-q5iE664EWQ7NnBwpQzDYiadLfDc=}
+ engines: {node: '>=10'}
+ peerDependencies:
+ eslint: '>=7.17.0'
+ dependencies:
+ ci-info: 2.0.0
+ clean-regexp: 1.0.0
+ eslint: 7.27.0
+ eslint-template-visitor: 2.3.2_eslint@7.27.0
+ eslint-utils: 2.1.0
+ eslint-visitor-keys: 2.1.0
+ import-modules: 2.1.0
+ lodash: 4.17.21
+ pluralize: 8.0.0
+ read-pkg-up: 7.0.1
+ regexp-tree: 0.1.23
+ reserved-words: 0.1.2
+ safe-regex: 2.1.1
+ semver: 7.3.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-scope/5.1.1:
+ resolution: {integrity: sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+ dev: true
+
+ /eslint-template-visitor/2.3.2_eslint@7.27.0:
+ resolution: {integrity: sha1-tS+W/zEedzo0XXkFPMx4J1u8Rj0=}
+ peerDependencies:
+ eslint: '>=7.0.0'
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/eslint-parser': 7.14.3_@babel+core@7.14.3+eslint@7.27.0
+ eslint: 7.27.0
+ eslint-visitor-keys: 2.1.0
+ esquery: 1.4.0
+ multimap: 1.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-utils/2.1.0:
+ resolution: {integrity: sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=}
+ engines: {node: '>=6'}
+ dependencies:
+ eslint-visitor-keys: 1.3.0
+ dev: true
+
+ /eslint-visitor-keys/1.3.0:
+ resolution: {integrity: sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /eslint-visitor-keys/2.1.0:
+ resolution: {integrity: sha1-9lMoJZMFknOSyTjtROsKXJsr0wM=}
+ engines: {node: '>=10'}
+ dev: true
+
+ /eslint/7.27.0:
+ resolution: {integrity: sha1-ZloVBtj5VlXJJ02EvXj3FmsH6cc=}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ hasBin: true
+ dependencies:
+ '@babel/code-frame': 7.12.11
+ '@eslint/eslintrc': 0.4.1
+ ajv: 6.12.6
+ chalk: 4.1.1
+ cross-spawn: 7.0.3
+ debug: 4.3.1
+ doctrine: 3.0.0
+ enquirer: 2.3.6
+ escape-string-regexp: 4.0.0
+ eslint-scope: 5.1.1
+ eslint-utils: 2.1.0
+ eslint-visitor-keys: 2.1.0
+ espree: 7.3.1
+ esquery: 1.4.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ functional-red-black-tree: 1.0.1
+ glob-parent: 5.1.2
+ globals: 13.9.0
+ ignore: 4.0.6
+ import-fresh: 3.3.0
+ imurmurhash: 0.1.4
+ is-glob: 4.0.1
+ js-yaml: 3.14.1
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.0.4
+ natural-compare: 1.4.0
+ optionator: 0.9.1
+ progress: 2.0.3
+ regexpp: 3.1.0
+ semver: 7.3.5
+ strip-ansi: 6.0.0
+ strip-json-comments: 3.1.1
+ table: 6.7.1
+ text-table: 0.2.0
+ v8-compile-cache: 2.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /esno/0.5.0:
+ resolution: {integrity: sha512-r0tsflar7RB918JCjTNyU2QWfgyH2jgfAzHK1tABr3A5y84ruS86JanVHc6wove/V5I98soLZbg8Foso1dqCMA==}
+ hasBin: true
+ dependencies:
+ esbuild: 0.9.7
+ esbuild-register: 2.5.0
+ dev: true
+
+ /espree/7.3.1:
+ resolution: {integrity: sha1-8t8zC3Usb1UBn4vYm3ZgA5wbu7Y=}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ acorn: 7.4.1
+ acorn-jsx: 5.3.1_acorn@7.4.1
+ eslint-visitor-keys: 1.3.0
+ dev: true
+
+ /esprima/4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /esquery/1.4.0:
+ resolution: {integrity: sha1-IUj/w4uC6McFff7UhCWz5h8PJKU=}
+ engines: {node: '>=0.10'}
+ dependencies:
+ estraverse: 5.2.0
+ dev: true
+
+ /esrecurse/4.3.0:
+ resolution: {integrity: sha1-eteWTWeauyi+5yzsY3WLHF0smSE=}
+ engines: {node: '>=4.0'}
+ dependencies:
+ estraverse: 5.2.0
+ dev: true
+
+ /estraverse/4.3.0:
+ resolution: {integrity: sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /estraverse/5.2.0:
+ resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /esutils/2.0.3:
+ resolution: {integrity: sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /execa/4.1.0:
+ resolution: {integrity: sha1-TlSRrRVy8vF6d9OIxshXE1sihHo=}
+ engines: {node: '>=10'}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 5.2.0
+ human-signals: 1.1.1
+ is-stream: 2.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.3
+ strip-final-newline: 2.0.0
+ dev: true
+
+ /execa/5.0.1:
+ resolution: {integrity: sha512-4hFTjFbFzQa3aCLobpbPJR/U+VoL1wdV5ozOWjeet0AWDeYr9UFGM1eUFWHX+VtOWFq4p0xXUXfW1YxUaP4fpw==}
+ engines: {node: '>=10'}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.3
+ strip-final-newline: 2.0.0
+ dev: true
+
+ /exit/0.1.2:
+ resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /expect/27.0.2:
+ resolution: {integrity: sha512-YJFNJe2+P2DqH+ZrXy+ydRQYO87oxRUonZImpDodR1G7qo3NYd3pL+NQ9Keqpez3cehczYwZDBC3A7xk3n7M/w==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ ansi-styles: 5.2.0
+ jest-get-type: 27.0.1
+ jest-matcher-utils: 27.0.2
+ jest-message-util: 27.0.2
+ jest-regex-util: 27.0.1
+ dev: true
+
+ /fast-deep-equal/3.1.3:
+ resolution: {integrity: sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=}
+ dev: true
+
+ /fast-glob/3.2.5:
+ resolution: {integrity: sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.4
+ '@nodelib/fs.walk': 1.2.6
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.4
+ picomatch: 2.3.0
+ dev: true
+
+ /fast-json-stable-stringify/2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ dev: true
+
+ /fast-levenshtein/2.0.6:
+ resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=}
+ dev: true
+
+ /fastq/1.11.0:
+ resolution: {integrity: sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==}
+ dependencies:
+ reusify: 1.0.4
+ dev: true
+
+ /fb-watchman/2.0.1:
+ resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==}
+ dependencies:
+ bser: 2.1.1
+ dev: true
+
+ /figures/3.2.0:
+ resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
+ engines: {node: '>=8'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
+ /file-entry-cache/6.0.1:
+ resolution: {integrity: sha1-IRst2WWcsDlLBz5zI6w8kz1SICc=}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flat-cache: 3.0.4
+ dev: true
+
+ /fill-range/7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: true
+
+ /find-up/2.1.0:
+ resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=}
+ engines: {node: '>=4'}
+ dependencies:
+ locate-path: 2.0.0
+ dev: true
+
+ /find-up/4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+ dev: true
+
+ /find-up/5.0.0:
+ resolution: {integrity: sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw=}
+ engines: {node: '>=10'}
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+ dev: true
+
+ /find-versions/4.0.0:
+ resolution: {integrity: sha1-PFflc7+XdpuMuN8Wk0tieRXaSWU=}
+ engines: {node: '>=10'}
+ dependencies:
+ semver-regex: 3.1.2
+ dev: true
+
+ /flat-cache/3.0.4:
+ resolution: {integrity: sha1-YbAzgwKy/p+Vfcwy/CqH8cMEixE=}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flatted: 3.1.1
+ rimraf: 3.0.2
+ dev: true
+
+ /flatted/3.1.1:
+ resolution: {integrity: sha1-xLSJ6ACW2d8d/JfHmHGup8YXxGk=}
+ dev: true
+
+ /form-data/3.0.1:
+ resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==}
+ engines: {node: '>= 6'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.31
+ dev: true
+
+ /fs.realpath/1.0.0:
+ resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
+ dev: true
+
+ /fsevents/2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ dev: true
+ optional: true
+
+ /function-bind/1.1.1:
+ resolution: {integrity: sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=}
+ dev: true
+
+ /functional-red-black-tree/1.0.1:
+ resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=}
+ dev: true
+
+ /gensync/1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /get-caller-file/2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ dev: true
+
+ /get-intrinsic/1.1.1:
+ resolution: {integrity: sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=}
+ dependencies:
+ function-bind: 1.1.1
+ has: 1.0.3
+ has-symbols: 1.0.2
+ dev: true
+
+ /get-own-enumerable-property-symbols/3.0.2:
+ resolution: {integrity: sha1-tf3nfyLL4185C04ImSLFC85u9mQ=}
+ dev: true
+
+ /get-package-type/0.1.0:
+ resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
+ engines: {node: '>=8.0.0'}
+ dev: true
+
+ /get-set-props/0.1.0:
+ resolution: {integrity: sha1-mYR1wXhEVobQsyJG2l3428++jqM=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /get-stream/5.2.0:
+ resolution: {integrity: sha1-SWaheV7lrOZecGxLe+txJX1uItM=}
+ engines: {node: '>=8'}
+ dependencies:
+ pump: 3.0.0
+ dev: true
+
+ /get-stream/6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /glob-parent/5.1.2:
+ resolution: {integrity: sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.1
+ dev: true
+
+ /glob/7.1.6:
+ resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.0.4
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ /glob/7.1.7:
+ resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.0.4
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ /globals/11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /globals/12.4.0:
+ resolution: {integrity: sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.8.1
+ dev: true
+
+ /globals/13.9.0:
+ resolution: {integrity: sha1-S/K/Y1szShc/sdr3xeayGOzcBss=}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.20.2
+ dev: true
+
+ /globby/11.0.3:
+ resolution: {integrity: sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==}
+ engines: {node: '>=10'}
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.2.5
+ ignore: 5.1.8
+ merge2: 1.4.1
+ slash: 3.0.0
+ dev: true
+
+ /graceful-fs/4.2.6:
+ resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==}
+ dev: true
+
+ /has-bigints/1.0.1:
+ resolution: {integrity: sha1-ZP5qywIGc+O3jbA1pa9pqp0HsRM=}
+ dev: true
+
+ /has-flag/3.0.0:
+ resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /has-flag/4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /has-symbols/1.0.2:
+ resolution: {integrity: sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /has/1.0.3:
+ resolution: {integrity: sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=}
+ engines: {node: '>= 0.4.0'}
+ dependencies:
+ function-bind: 1.1.1
+ dev: true
+
+ /hosted-git-info/2.8.9:
+ resolution: {integrity: sha1-3/wL+aIcAiCQkPKqaUKeFBTa8/k=}
+ dev: true
+
+ /html-encoding-sniffer/2.0.1:
+ resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ whatwg-encoding: 1.0.5
+ dev: true
+
+ /html-escaper/2.0.2:
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+ dev: true
+
+ /http-proxy-agent/4.0.1:
+ resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
+ engines: {node: '>= 6'}
+ dependencies:
+ '@tootallnate/once': 1.1.2
+ agent-base: 6.0.2
+ debug: 4.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /https-proxy-agent/5.0.0:
+ resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /human-signals/1.1.1:
+ resolution: {integrity: sha1-xbHNFPUK6uCatsWf5jujOV/k36M=}
+ engines: {node: '>=8.12.0'}
+ dev: true
+
+ /human-signals/2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+ dev: true
+
+ /husky/4.3.8:
+ resolution: {integrity: sha1-MRRAYL6WP9aFDlzI8Bmh3+GUKW0=}
+ engines: {node: '>=10'}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ chalk: 4.1.1
+ ci-info: 2.0.0
+ compare-versions: 3.6.0
+ cosmiconfig: 7.0.0
+ find-versions: 4.0.0
+ opencollective-postinstall: 2.0.3
+ pkg-dir: 5.0.0
+ please-upgrade-node: 3.2.0
+ slash: 3.0.0
+ which-pm-runs: 1.0.0
+ dev: true
+
+ /iconv-lite/0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
+ /ignore/4.0.6:
+ resolution: {integrity: sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /ignore/5.1.8:
+ resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /import-cwd/3.0.0:
+ resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==}
+ engines: {node: '>=8'}
+ dependencies:
+ import-from: 3.0.0
+ dev: true
+
+ /import-fresh/3.3.0:
+ resolution: {integrity: sha1-NxYsJfy566oublPVtNiM4X2eDCs=}
+ engines: {node: '>=6'}
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+ dev: true
+
+ /import-from/3.0.0:
+ resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ resolve-from: 5.0.0
+ dev: true
+
+ /import-local/3.0.2:
+ resolution: {integrity: sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ pkg-dir: 4.2.0
+ resolve-cwd: 3.0.0
+ dev: true
+
+ /import-modules/2.1.0:
+ resolution: {integrity: sha1-q+ffKXy2wfGbVyRuuLi9lmS22MI=}
+ engines: {node: '>=8'}
+ dev: true
+
+ /imurmurhash/0.1.4:
+ resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=}
+ engines: {node: '>=0.8.19'}
+ dev: true
+
+ /indent-string/4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /indent-string/5.0.0:
+ resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /inflight/1.0.6:
+ resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+ dev: true
+
+ /inherits/2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: true
+
+ /ink-spinner/4.0.2_ink@3.0.8+react@17.0.2:
+ resolution: {integrity: sha512-vQGmhWUEh3IG1IxK1Hl2w6RfH6aaRIJWw9lrG8CvFFyrQ23UpJ8GClJs5/sFBxkNvsrrK9sKNEGlGnsqTYiUww==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ ink: '>=3.0.5'
+ react: '>=16.8.2'
+ dependencies:
+ cli-spinners: 2.6.0
+ ink: 3.0.8_@types+react@17.0.8+react@17.0.2
+ react: 17.0.2
+ dev: true
+
+ /ink-task-list/1.1.0_ink@3.0.8+react@17.0.2:
+ resolution: {integrity: sha512-lywEGm1N6lV4r29BlJYdXzlVPXuUGqHmxJyK7OkSrIRS5ChVmiT1Ro8kUyfGSf9rQG0yKCQRhEaoHJDk22f8Nw==}
+ peerDependencies:
+ ink: '>=3.0.0'
+ react: '>=16.8.0'
+ dependencies:
+ cli-spinners: 2.6.0
+ figures: 3.2.0
+ ink: 3.0.8_@types+react@17.0.8+react@17.0.2
+ ink-spinner: 4.0.2_ink@3.0.8+react@17.0.2
+ prop-types: 15.7.2
+ react: 17.0.2
+ dev: true
+
+ /ink/3.0.8_@types+react@17.0.8+react@17.0.2:
+ resolution: {integrity: sha512-ubMFylXYaG4IkXQVhPautbhV/p6Lo0GlvAMI/jh8cGJQ39yeznJbaTTJP2CqZXezA4GOHzalpwCWqux/NEY38w==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '>=16.8.0'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 17.0.8
+ ansi-escapes: 4.3.2
+ auto-bind: 4.0.0
+ chalk: 4.1.1
+ cli-boxes: 2.2.1
+ cli-cursor: 3.1.0
+ cli-truncate: 2.1.0
+ code-excerpt: 3.0.0
+ indent-string: 4.0.0
+ is-ci: 2.0.0
+ lodash: 4.17.21
+ patch-console: 1.0.0
+ react: 17.0.2
+ react-devtools-core: 4.13.4
+ react-reconciler: 0.24.0_react@17.0.2
+ scheduler: 0.18.0
+ signal-exit: 3.0.3
+ slice-ansi: 3.0.0
+ stack-utils: 2.0.3
+ string-length: 3.1.0
+ type-fest: 0.12.0
+ widest-line: 3.1.0
+ wrap-ansi: 6.2.0
+ ws: 7.4.5
+ yoga-layout-prebuilt: 1.10.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: true
+
+ /internal-slot/1.0.3:
+ resolution: {integrity: sha1-c0fjB97uovqsKsYgXUvH00ln9Zw=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.1.1
+ has: 1.0.3
+ side-channel: 1.0.4
+ dev: true
+
+ /is-arrayish/0.2.1:
+ resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=}
+ dev: true
+
+ /is-bigint/1.0.2:
+ resolution: {integrity: sha1-/7OBRCUDI1rSReqJ5Fs9v/BA7lo=}
+ dev: true
+
+ /is-binary-path/2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: true
+
+ /is-boolean-object/1.1.1:
+ resolution: {integrity: sha1-PAh48DXLghIo01DS4eNnGXFqPeg=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ dev: true
+
+ /is-callable/1.2.3:
+ resolution: {integrity: sha1-ix4FALc6HXbHBIdjbzaOUZ3o244=}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-ci/2.0.0:
+ resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
+ hasBin: true
+ dependencies:
+ ci-info: 2.0.0
+ dev: true
+
+ /is-ci/3.0.0:
+ resolution: {integrity: sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==}
+ hasBin: true
+ dependencies:
+ ci-info: 3.2.0
+ dev: true
+
+ /is-core-module/2.4.0:
+ resolution: {integrity: sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==}
+ dependencies:
+ has: 1.0.3
+ dev: true
+
+ /is-date-object/1.0.4:
+ resolution: {integrity: sha1-VQz8wDr62gXuo90wmBx7CVUfc+U=}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-extglob/2.1.1:
+ resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-fullwidth-code-point/3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-generator-fn/2.1.0:
+ resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /is-get-set-prop/1.0.0:
+ resolution: {integrity: sha1-JzGHfk14pqae3M5rudaLB3nnYxI=}
+ dependencies:
+ get-set-props: 0.1.0
+ lowercase-keys: 1.0.1
+ dev: true
+
+ /is-glob/4.0.1:
+ resolution: {integrity: sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-js-type/2.0.0:
+ resolution: {integrity: sha1-c2FwBtZZtOtHKbunR9KHgt8PfiI=}
+ dependencies:
+ js-types: 1.0.0
+ dev: true
+
+ /is-negative-zero/2.0.1:
+ resolution: {integrity: sha1-PedGwY3aIxkkGlNnWQjY92bxHCQ=}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-number-object/1.0.5:
+ resolution: {integrity: sha1-bt+u7XlQz/Ga/tzp+/yp7m3Sies=}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-number/7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /is-obj-prop/1.0.0:
+ resolution: {integrity: sha1-s03nnEULjXxzqyzfZ9yHWtuF+A4=}
+ dependencies:
+ lowercase-keys: 1.0.1
+ obj-props: 1.3.0
+ dev: true
+
+ /is-obj/1.0.1:
+ resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-potential-custom-element-name/1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+ dev: true
+
+ /is-proto-prop/2.0.0:
+ resolution: {integrity: sha1-masoY0YuRAkP0IPv0ZKQWPnZNeE=}
+ dependencies:
+ lowercase-keys: 1.0.1
+ proto-props: 2.0.0
+ dev: true
+
+ /is-regex/1.1.3:
+ resolution: {integrity: sha1-0Cn5r/ZEi5Prvj8z2scVEf3L758=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ has-symbols: 1.0.2
+ dev: true
+
+ /is-regexp/1.0.0:
+ resolution: {integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-stream/2.0.0:
+ resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-string/1.0.6:
+ resolution: {integrity: sha1-P+XVmS+w2TQE8yWE1LAXmnG1Sl8=}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-symbol/1.0.4:
+ resolution: {integrity: sha1-ptrJO2NbBjymhyI23oiRClevE5w=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.2
+ dev: true
+
+ /is-typedarray/1.0.0:
+ resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=}
+ dev: true
+
+ /is-unicode-supported/0.1.0:
+ resolution: {integrity: sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc=}
+ engines: {node: '>=10'}
+ dev: true
+
+ /isexe/2.0.0:
+ resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=}
+ dev: true
+
+ /istanbul-lib-coverage/3.0.0:
+ resolution: {integrity: sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /istanbul-lib-instrument/4.0.3:
+ resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/core': 7.14.3
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.0.0
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /istanbul-lib-report/3.0.0:
+ resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==}
+ engines: {node: '>=8'}
+ dependencies:
+ istanbul-lib-coverage: 3.0.0
+ make-dir: 3.1.0
+ supports-color: 7.2.0
+ dev: true
+
+ /istanbul-lib-source-maps/4.0.0:
+ resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==}
+ engines: {node: '>=8'}
+ dependencies:
+ debug: 4.3.1
+ istanbul-lib-coverage: 3.0.0
+ source-map: 0.6.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /istanbul-reports/3.0.2:
+ resolution: {integrity: sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==}
+ engines: {node: '>=8'}
+ dependencies:
+ html-escaper: 2.0.2
+ istanbul-lib-report: 3.0.0
+ dev: true
+
+ /jest-changed-files/27.0.2:
+ resolution: {integrity: sha512-eMeb1Pn7w7x3wue5/vF73LPCJ7DKQuC9wQUR5ebP9hDPpk5hzcT/3Hmz3Q5BOFpR3tgbmaWhJcMTVgC8Z1NuMw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ execa: 5.0.1
+ throat: 6.0.1
+ dev: true
+
+ /jest-circus/27.0.3:
+ resolution: {integrity: sha512-tdMfzs7SgD5l7jRcI1iB3vtQi5fHwCgo4RlO8bzZnYc05PZ+tlAOMZeS8eGYkZ2tPaRY/aRLMFWQp/8zXBrolQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/environment': 27.0.3
+ '@jest/test-result': 27.0.2
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ chalk: 4.1.1
+ co: 4.6.0
+ dedent: 0.7.0
+ expect: 27.0.2
+ is-generator-fn: 2.1.0
+ jest-each: 27.0.2
+ jest-matcher-utils: 27.0.2
+ jest-message-util: 27.0.2
+ jest-runtime: 27.0.3
+ jest-snapshot: 27.0.2
+ jest-util: 27.0.2
+ pretty-format: 27.0.2
+ slash: 3.0.0
+ stack-utils: 2.0.3
+ throat: 6.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-cli/27.0.3:
+ resolution: {integrity: sha512-7bt9Sgv4nWH5pUnyJfdLf8CHWfo4+7lSPxeBwQx4r0vBj9jweJam/piE2U91SXtQI+ckm+TIN97OVnqIYpVhSg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 27.0.3
+ '@jest/test-result': 27.0.2
+ '@jest/types': 27.0.2
+ chalk: 4.1.1
+ exit: 0.1.2
+ graceful-fs: 4.2.6
+ import-local: 3.0.2
+ jest-config: 27.0.3
+ jest-util: 27.0.2
+ jest-validate: 27.0.2
+ prompts: 2.4.1
+ yargs: 16.2.0
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - ts-node
+ - utf-8-validate
+ dev: true
+
+ /jest-config/27.0.3:
+ resolution: {integrity: sha512-zgtI2YQo+ekKsmYNyDlXFY/7w7WWBSJFoj/WRe173WB88CDUrEYWr0sLdbLOQe+sRu6l1Y2S0MCS6BOJm5jkoA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ peerDependencies:
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ ts-node:
+ optional: true
+ dependencies:
+ '@babel/core': 7.14.3
+ '@jest/test-sequencer': 27.0.3
+ '@jest/types': 27.0.2
+ babel-jest: 27.0.2_@babel+core@7.14.3
+ chalk: 4.1.1
+ deepmerge: 4.2.2
+ glob: 7.1.7
+ graceful-fs: 4.2.6
+ is-ci: 3.0.0
+ jest-circus: 27.0.3
+ jest-environment-jsdom: 27.0.3
+ jest-environment-node: 27.0.3
+ jest-get-type: 27.0.1
+ jest-jasmine2: 27.0.3
+ jest-regex-util: 27.0.1
+ jest-resolve: 27.0.2
+ jest-runner: 27.0.3
+ jest-util: 27.0.2
+ jest-validate: 27.0.2
+ micromatch: 4.0.4
+ pretty-format: 27.0.2
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /jest-diff/26.6.2:
+ resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==}
+ engines: {node: '>= 10.14.2'}
+ dependencies:
+ chalk: 4.1.1
+ diff-sequences: 26.6.2
+ jest-get-type: 26.3.0
+ pretty-format: 26.6.2
+ dev: true
+
+ /jest-diff/27.0.2:
+ resolution: {integrity: sha512-BFIdRb0LqfV1hBt8crQmw6gGQHVDhM87SpMIZ45FPYKReZYG5er1+5pIn2zKqvrJp6WNox0ylR8571Iwk2Dmgw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ chalk: 4.1.1
+ diff-sequences: 27.0.1
+ jest-get-type: 27.0.1
+ pretty-format: 27.0.2
+ dev: true
+
+ /jest-docblock/27.0.1:
+ resolution: {integrity: sha512-TA4+21s3oebURc7VgFV4r7ltdIJ5rtBH1E3Tbovcg7AV+oLfD5DcJ2V2vJ5zFA9sL5CFd/d2D6IpsAeSheEdrA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ detect-newline: 3.1.0
+ dev: true
+
+ /jest-each/27.0.2:
+ resolution: {integrity: sha512-OLMBZBZ6JkoXgUenDtseFRWA43wVl2BwmZYIWQws7eS7pqsIvePqj/jJmEnfq91ALk3LNphgwNK/PRFBYi7ITQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ chalk: 4.1.1
+ jest-get-type: 27.0.1
+ jest-util: 27.0.2
+ pretty-format: 27.0.2
+ dev: true
+
+ /jest-environment-jsdom/27.0.3:
+ resolution: {integrity: sha512-5KLmgv1bhiimpSA8oGTnZYk6g4fsNyZiA/6gI2tAZUgrufd7heRUSVh4gRokzZVEj8zlwAQYT0Zs6tuJSW/ECA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/environment': 27.0.3
+ '@jest/fake-timers': 27.0.3
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ jest-mock: 27.0.3
+ jest-util: 27.0.2
+ jsdom: 16.6.0
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /jest-environment-node/27.0.3:
+ resolution: {integrity: sha512-co2/IVnIFL3cItpFULCvXFg9us4gvWXgs7mutAMPCbFhcqh56QAOdKhNzC2+RycsC/k4mbMj1VF+9F/NzA0ROg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/environment': 27.0.3
+ '@jest/fake-timers': 27.0.3
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ jest-mock: 27.0.3
+ jest-util: 27.0.2
+ dev: true
+
+ /jest-get-type/26.3.0:
+ resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==}
+ engines: {node: '>= 10.14.2'}
+ dev: true
+
+ /jest-get-type/27.0.1:
+ resolution: {integrity: sha512-9Tggo9zZbu0sHKebiAijyt1NM77Z0uO4tuWOxUCujAiSeXv30Vb5D4xVF4UR4YWNapcftj+PbByU54lKD7/xMg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dev: true
+
+ /jest-haste-map/27.0.2:
+ resolution: {integrity: sha512-37gYfrYjjhEfk37C4bCMWAC0oPBxDpG0qpl8lYg8BT//wf353YT/fzgA7+Dq0EtM7rPFS3JEcMsxdtDwNMi2cA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ '@types/graceful-fs': 4.1.5
+ '@types/node': 15.6.1
+ anymatch: 3.1.2
+ fb-watchman: 2.0.1
+ graceful-fs: 4.2.6
+ jest-regex-util: 27.0.1
+ jest-serializer: 27.0.1
+ jest-util: 27.0.2
+ jest-worker: 27.0.2
+ micromatch: 4.0.4
+ walker: 1.0.7
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /jest-jasmine2/27.0.3:
+ resolution: {integrity: sha512-odJ2ia8P5c+IsqOcWJPmku4AqbXIfTVLRjYTKHri3TEvbmTdLw0ghy13OAPIl/0v7cVH0TURK7+xFOHKDLvKIA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@babel/traverse': 7.14.2
+ '@jest/environment': 27.0.3
+ '@jest/source-map': 27.0.1
+ '@jest/test-result': 27.0.2
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ chalk: 4.1.1
+ co: 4.6.0
+ expect: 27.0.2
+ is-generator-fn: 2.1.0
+ jest-each: 27.0.2
+ jest-matcher-utils: 27.0.2
+ jest-message-util: 27.0.2
+ jest-runtime: 27.0.3
+ jest-snapshot: 27.0.2
+ jest-util: 27.0.2
+ pretty-format: 27.0.2
+ throat: 6.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-leak-detector/27.0.2:
+ resolution: {integrity: sha512-TZA3DmCOfe8YZFIMD1GxFqXUkQnIoOGQyy4hFCA2mlHtnAaf+FeOMxi0fZmfB41ZL+QbFG6BVaZF5IeFIVy53Q==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ jest-get-type: 27.0.1
+ pretty-format: 27.0.2
+ dev: true
+
+ /jest-matcher-utils/27.0.2:
+ resolution: {integrity: sha512-Qczi5xnTNjkhcIB0Yy75Txt+Ez51xdhOxsukN7awzq2auZQGPHcQrJ623PZj0ECDEMOk2soxWx05EXdXGd1CbA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ chalk: 4.1.1
+ jest-diff: 27.0.2
+ jest-get-type: 27.0.1
+ pretty-format: 27.0.2
+ dev: true
+
+ /jest-message-util/27.0.2:
+ resolution: {integrity: sha512-rTqWUX42ec2LdMkoUPOzrEd1Tcm+R1KfLOmFK+OVNo4MnLsEaxO5zPDb2BbdSmthdM/IfXxOZU60P/WbWF8BTw==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@babel/code-frame': 7.12.13
+ '@jest/types': 27.0.2
+ '@types/stack-utils': 2.0.0
+ chalk: 4.1.1
+ graceful-fs: 4.2.6
+ micromatch: 4.0.4
+ pretty-format: 27.0.2
+ slash: 3.0.0
+ stack-utils: 2.0.3
+ dev: true
+
+ /jest-mock/27.0.3:
+ resolution: {integrity: sha512-O5FZn5XDzEp+Xg28mUz4ovVcdwBBPfAhW9+zJLO0Efn2qNbYcDaJvSlRiQ6BCZUCVOJjALicuJQI9mRFjv1o9Q==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ dev: true
+
+ /jest-pnp-resolver/1.2.2_jest-resolve@27.0.2:
+ resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+ dependencies:
+ jest-resolve: 27.0.2
+ dev: true
+
+ /jest-regex-util/27.0.1:
+ resolution: {integrity: sha512-6nY6QVcpTgEKQy1L41P4pr3aOddneK17kn3HJw6SdwGiKfgCGTvH02hVXL0GU8GEKtPH83eD2DIDgxHXOxVohQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dev: true
+
+ /jest-resolve-dependencies/27.0.3:
+ resolution: {integrity: sha512-HdjWOvFAgT5CYChF2eiBN2rRKicjaTCCtA3EtH47REIdGzEHGUhYrWYgLahXsiOovvWN6edhcHL5WCa3gbc04A==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ jest-regex-util: 27.0.1
+ jest-snapshot: 27.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-resolve/27.0.2:
+ resolution: {integrity: sha512-rmfLGyZhwAUR5z3EwPAW7LQTorWAuCYCcsQJoQxT2it+BOgX3zKxa67r1pfpK3ihy2k9TjYD3/lMp5rPm/CL1Q==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ chalk: 4.1.1
+ escalade: 3.1.1
+ graceful-fs: 4.2.6
+ jest-pnp-resolver: 1.2.2_jest-resolve@27.0.2
+ jest-util: 27.0.2
+ jest-validate: 27.0.2
+ resolve: 1.20.0
+ slash: 3.0.0
+ dev: true
+
+ /jest-runner/27.0.3:
+ resolution: {integrity: sha512-zH23uIIh1ro1JCD7XX1bQ0bQwXEsBzLX2UJVE/AVLsk4YJRmTfyXIzzRzBWRdnMHHg1NWkJ4fGs7eFP15IqZpQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/console': 27.0.2
+ '@jest/environment': 27.0.3
+ '@jest/test-result': 27.0.2
+ '@jest/transform': 27.0.2
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ chalk: 4.1.1
+ emittery: 0.8.1
+ exit: 0.1.2
+ graceful-fs: 4.2.6
+ jest-docblock: 27.0.1
+ jest-haste-map: 27.0.2
+ jest-leak-detector: 27.0.2
+ jest-message-util: 27.0.2
+ jest-resolve: 27.0.2
+ jest-runtime: 27.0.3
+ jest-util: 27.0.2
+ jest-worker: 27.0.2
+ source-map-support: 0.5.19
+ throat: 6.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-runtime/27.0.3:
+ resolution: {integrity: sha512-k1Hl2pWWHBkSXdCggX2lyLRuDnnnmMlnJd+DPLb8LmmAeHW87WgGC6TplD377VxY3KQu73sklkhGUIdwFgsRVQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/console': 27.0.2
+ '@jest/environment': 27.0.3
+ '@jest/fake-timers': 27.0.3
+ '@jest/globals': 27.0.3
+ '@jest/source-map': 27.0.1
+ '@jest/test-result': 27.0.2
+ '@jest/transform': 27.0.2
+ '@jest/types': 27.0.2
+ '@types/yargs': 16.0.3
+ chalk: 4.1.1
+ cjs-module-lexer: 1.2.1
+ collect-v8-coverage: 1.0.1
+ exit: 0.1.2
+ glob: 7.1.7
+ graceful-fs: 4.2.6
+ jest-haste-map: 27.0.2
+ jest-message-util: 27.0.2
+ jest-mock: 27.0.3
+ jest-regex-util: 27.0.1
+ jest-resolve: 27.0.2
+ jest-snapshot: 27.0.2
+ jest-util: 27.0.2
+ jest-validate: 27.0.2
+ slash: 3.0.0
+ strip-bom: 4.0.0
+ yargs: 16.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-serializer/27.0.1:
+ resolution: {integrity: sha512-svy//5IH6bfQvAbkAEg1s7xhhgHTtXu0li0I2fdKHDsLP2P2MOiscPQIENQep8oU2g2B3jqLyxKKzotZOz4CwQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@types/node': 15.6.1
+ graceful-fs: 4.2.6
+ dev: true
+
+ /jest-snapshot/27.0.2:
+ resolution: {integrity: sha512-4RcgvZbPrrbEE/hT6XQ4hr+NVVLNrmsgUnYSnZRT6UAvW9Q2yzGMS+tfJh+xlQJAapnnkNJzsMn6vUa+yfiVHA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@babel/core': 7.14.3
+ '@babel/generator': 7.14.3
+ '@babel/parser': 7.14.4
+ '@babel/plugin-syntax-typescript': 7.12.13_@babel+core@7.14.3
+ '@babel/traverse': 7.14.2
+ '@babel/types': 7.14.4
+ '@jest/transform': 27.0.2
+ '@jest/types': 27.0.2
+ '@types/babel__traverse': 7.11.1
+ '@types/prettier': 2.2.3
+ babel-preset-current-node-syntax: 1.0.1_@babel+core@7.14.3
+ chalk: 4.1.1
+ expect: 27.0.2
+ graceful-fs: 4.2.6
+ jest-diff: 27.0.2
+ jest-get-type: 27.0.1
+ jest-haste-map: 27.0.2
+ jest-matcher-utils: 27.0.2
+ jest-message-util: 27.0.2
+ jest-resolve: 27.0.2
+ jest-util: 27.0.2
+ natural-compare: 1.4.0
+ pretty-format: 27.0.2
+ semver: 7.3.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-util/27.0.2:
+ resolution: {integrity: sha512-1d9uH3a00OFGGWSibpNYr+jojZ6AckOMCXV2Z4K3YXDnzpkAaXQyIpY14FOJPiUmil7CD+A6Qs+lnnh6ctRbIA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ chalk: 4.1.1
+ graceful-fs: 4.2.6
+ is-ci: 3.0.0
+ picomatch: 2.3.0
+ dev: true
+
+ /jest-validate/27.0.2:
+ resolution: {integrity: sha512-UgBF6/oVu1ofd1XbaSotXKihi8nZhg0Prm8twQ9uCuAfo59vlxCXMPI/RKmrZEVgi3Nd9dS0I8A0wzWU48pOvg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ camelcase: 6.2.0
+ chalk: 4.1.1
+ jest-get-type: 27.0.1
+ leven: 3.1.0
+ pretty-format: 27.0.2
+ dev: true
+
+ /jest-watcher/27.0.2:
+ resolution: {integrity: sha512-8nuf0PGuTxWj/Ytfw5fyvNn/R80iXY8QhIT0ofyImUvdnoaBdT6kob0GmhXR+wO+ALYVnh8bQxN4Tjfez0JgkA==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/test-result': 27.0.2
+ '@jest/types': 27.0.2
+ '@types/node': 15.6.1
+ ansi-escapes: 4.3.2
+ chalk: 4.1.1
+ jest-util: 27.0.2
+ string-length: 4.0.2
+ dev: true
+
+ /jest-worker/27.0.2:
+ resolution: {integrity: sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==}
+ engines: {node: '>= 10.13.0'}
+ dependencies:
+ '@types/node': 15.6.1
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+ dev: true
+
+ /jest/27.0.3:
+ resolution: {integrity: sha512-0G9+QqXFIZWgf5rs3yllpaA+13ZawVHfyuhuCV1EnoFbX++rVMRrYWCAnk+dfhwyv9/VTQvn+XG969u8aPRsBg==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 27.0.3
+ import-local: 3.0.2
+ jest-cli: 27.0.3
+ transitivePeerDependencies:
+ - bufferutil
+ - canvas
+ - supports-color
+ - ts-node
+ - utf-8-validate
+ dev: true
+
+ /joycon/3.0.1:
+ resolution: {integrity: sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /js-tokens/4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: true
+
+ /js-types/1.0.0:
+ resolution: {integrity: sha1-0kLmSU7Vcq08koCfyL7X92h8vwM=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /js-yaml/3.14.1:
+ resolution: {integrity: sha1-2ugS/bOCX6MGYJqHFzg8UMNqBTc=}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: true
+
+ /jsdoctypeparser/9.0.0:
+ resolution: {integrity: sha1-jJfi+2kxXrJ0sPATd+qlyUC9eyY=}
+ engines: {node: '>=10'}
+ hasBin: true
+ dev: true
+
+ /jsdom/16.6.0:
+ resolution: {integrity: sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ canvas: ^2.5.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+ dependencies:
+ abab: 2.0.5
+ acorn: 8.3.0
+ acorn-globals: 6.0.0
+ cssom: 0.4.4
+ cssstyle: 2.3.0
+ data-urls: 2.0.0
+ decimal.js: 10.2.1
+ domexception: 2.0.1
+ escodegen: 2.0.0
+ form-data: 3.0.1
+ html-encoding-sniffer: 2.0.1
+ http-proxy-agent: 4.0.1
+ https-proxy-agent: 5.0.0
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.0
+ parse5: 6.0.1
+ saxes: 5.0.1
+ symbol-tree: 3.2.4
+ tough-cookie: 4.0.0
+ w3c-hr-time: 1.0.2
+ w3c-xmlserializer: 2.0.0
+ webidl-conversions: 6.1.0
+ whatwg-encoding: 1.0.5
+ whatwg-mimetype: 2.3.0
+ whatwg-url: 8.5.0
+ ws: 7.4.6
+ xml-name-validator: 3.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /jsesc/2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /json-parse-better-errors/1.0.2:
+ resolution: {integrity: sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=}
+ dev: true
+
+ /json-parse-even-better-errors/2.3.1:
+ resolution: {integrity: sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=}
+ dev: true
+
+ /json-schema-traverse/0.4.1:
+ resolution: {integrity: sha1-afaofZUTq4u4/mO9sJecRI5oRmA=}
+ dev: true
+
+ /json-schema-traverse/1.0.0:
+ resolution: {integrity: sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=}
+ dev: true
+
+ /json-stable-stringify-without-jsonify/1.0.1:
+ resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=}
+ dev: true
+
+ /json5/1.0.1:
+ resolution: {integrity: sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.5
+ dev: true
+
+ /json5/2.2.0:
+ resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.5
+ dev: true
+
+ /jsonc-eslint-parser/1.0.1:
+ resolution: {integrity: sha1-+77a0IdceeHhXQ7Wh36+Q/GKUuM=}
+ dependencies:
+ eslint-utils: 2.1.0
+ eslint-visitor-keys: 2.1.0
+ espree: 7.3.1
+ dev: true
+
+ /jsonc-parser/3.0.0:
+ resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==}
+ dev: true
+
+ /jsx-ast-utils/3.2.0:
+ resolution: {integrity: sha1-QRCNLOxAjDRTwbvopKrp4eK9j4I=}
+ engines: {node: '>=4.0'}
+ dependencies:
+ array-includes: 3.1.3
+ object.assign: 4.1.2
+ dev: true
+
+ /kleur/3.0.3:
+ resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /leven/3.1.0:
+ resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /levn/0.3.0:
+ resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.1.2
+ type-check: 0.3.2
+ dev: true
+
+ /levn/0.4.1:
+ resolution: {integrity: sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ dev: true
+
+ /lines-and-columns/1.1.6:
+ resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=}
+ dev: true
+
+ /lint-staged/10.5.4:
+ resolution: {integrity: sha1-zRU7XwmH0jcfwdKEekCaL+cFtmU=}
+ hasBin: true
+ dependencies:
+ chalk: 4.1.1
+ cli-truncate: 2.1.0
+ commander: 6.2.1
+ cosmiconfig: 7.0.0
+ debug: 4.3.1
+ dedent: 0.7.0
+ enquirer: 2.3.6
+ execa: 4.1.0
+ listr2: 3.9.0_enquirer@2.3.6
+ log-symbols: 4.1.0
+ micromatch: 4.0.4
+ normalize-path: 3.0.0
+ please-upgrade-node: 3.2.0
+ string-argv: 0.3.1
+ stringify-object: 3.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /listr2/3.9.0_enquirer@2.3.6:
+ resolution: {integrity: sha1-J/I8kbpP31E7BoK/YEvGsKs2tsE=}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ enquirer: '>= 2.3.0 < 3'
+ dependencies:
+ cli-truncate: 2.1.0
+ colorette: 1.2.2
+ enquirer: 2.3.6
+ log-update: 4.0.0
+ p-map: 4.0.0
+ rxjs: 6.6.7
+ through: 2.3.8
+ wrap-ansi: 7.0.0
+ dev: true
+
+ /load-json-file/4.0.0:
+ resolution: {integrity: sha1-L19Fq5HjMhYjT9U62rZo607AmTs=}
+ engines: {node: '>=4'}
+ dependencies:
+ graceful-fs: 4.2.6
+ parse-json: 4.0.0
+ pify: 3.0.0
+ strip-bom: 3.0.0
+ dev: true
+
+ /locate-path/2.0.0:
+ resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=}
+ engines: {node: '>=4'}
+ dependencies:
+ p-locate: 2.0.0
+ path-exists: 3.0.0
+ dev: true
+
+ /locate-path/5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-locate: 4.1.0
+ dev: true
+
+ /locate-path/6.0.0:
+ resolution: {integrity: sha1-VTIeswn+u8WcSAHZMackUqaB0oY=}
+ engines: {node: '>=10'}
+ dependencies:
+ p-locate: 5.0.0
+ dev: true
+
+ /lodash.clonedeep/4.5.0:
+ resolution: {integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=}
+ dev: true
+
+ /lodash.merge/4.6.2:
+ resolution: {integrity: sha1-VYqlO0O2YeGSWgr9+japoQhf5Xo=}
+ dev: true
+
+ /lodash.truncate/4.4.2:
+ resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=}
+ dev: true
+
+ /lodash/4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ dev: true
+
+ /log-symbols/4.1.0:
+ resolution: {integrity: sha1-P727lbRoOsn8eFER55LlWNSr1QM=}
+ engines: {node: '>=10'}
+ dependencies:
+ chalk: 4.1.1
+ is-unicode-supported: 0.1.0
+ dev: true
+
+ /log-update/4.0.0:
+ resolution: {integrity: sha1-WJ7NNSRx8qHAxXAodUOmTf0g4KE=}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ cli-cursor: 3.1.0
+ slice-ansi: 4.0.0
+ wrap-ansi: 6.2.0
+ dev: true
+
+ /loose-envify/1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+ dependencies:
+ js-tokens: 4.0.0
+ dev: true
+
+ /lowercase-keys/1.0.1:
+ resolution: {integrity: sha1-b54wtHCE2XGnyCD/FabFFnt0wm8=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /lru-cache/6.0.0:
+ resolution: {integrity: sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+ dev: true
+
+ /make-dir/3.1.0:
+ resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
+ engines: {node: '>=8'}
+ dependencies:
+ semver: 6.3.0
+ dev: true
+
+ /makeerror/1.0.11:
+ resolution: {integrity: sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=}
+ dependencies:
+ tmpl: 1.0.4
+ dev: true
+
+ /merge-stream/2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+ dev: true
+
+ /merge2/1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /micromatch/4.0.4:
+ resolution: {integrity: sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.2
+ picomatch: 2.3.0
+ dev: true
+
+ /mime-db/1.48.0:
+ resolution: {integrity: sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /mime-types/2.1.31:
+ resolution: {integrity: sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-db: 1.48.0
+ dev: true
+
+ /mimic-fn/2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /minimatch/3.0.4:
+ resolution: {integrity: sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: true
+
+ /minimist/1.2.5:
+ resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
+ dev: true
+
+ /ms/2.0.0:
+ resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
+ dev: true
+
+ /ms/2.1.2:
+ resolution: {integrity: sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=}
+ dev: true
+
+ /ms/2.1.3:
+ resolution: {integrity: sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=}
+ dev: true
+
+ /multimap/1.1.0:
+ resolution: {integrity: sha1-UmP+vAhaF5HDO1m7OvxqdqKhDKg=}
+ dev: true
+
+ /mz/2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+ dev: true
+
+ /natural-compare/1.4.0:
+ resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=}
+ dev: true
+
+ /node-int64/0.4.0:
+ resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=}
+ dev: true
+
+ /node-modules-regexp/1.0.0:
+ resolution: {integrity: sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /node-releases/1.1.72:
+ resolution: {integrity: sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==}
+ dev: true
+
+ /normalize-package-data/2.5.0:
+ resolution: {integrity: sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=}
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.20.0
+ semver: 5.7.1
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ /normalize-path/3.0.0:
+ resolution: {integrity: sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /npm-run-path/4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-key: 3.1.1
+ dev: true
+
+ /nwsapi/2.2.0:
+ resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==}
+ dev: true
+
+ /obj-props/1.3.0:
+ resolution: {integrity: sha1-iISrIcjYSWxKf2lseL+CKJxRaAs=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /object-assign/4.1.1:
+ resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /object-inspect/1.10.3:
+ resolution: {integrity: sha1-wqp9LQn1DJk3VwT3oK3yTFeC02k=}
+ dev: true
+
+ /object-keys/1.1.1:
+ resolution: {integrity: sha1-HEfyct8nfzsdrwYWd9nILiMixg4=}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /object.assign/4.1.2:
+ resolution: {integrity: sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ has-symbols: 1.0.2
+ object-keys: 1.1.1
+ dev: true
+
+ /object.entries/1.1.4:
+ resolution: {integrity: sha1-Q8z5pQvF/VtknUWrGlefJOCIyv0=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ es-abstract: 1.18.3
+ dev: true
+
+ /object.fromentries/2.0.4:
+ resolution: {integrity: sha1-JuG6XEVxxcbwiQzvRHMGZFahILg=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ es-abstract: 1.18.3
+ has: 1.0.3
+ dev: true
+
+ /object.values/1.1.4:
+ resolution: {integrity: sha1-DSc3YoM+gWtpOmN9MAc+cFFTWzA=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ es-abstract: 1.18.3
+ dev: true
+
+ /once/1.4.0:
+ resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
+ dependencies:
+ wrappy: 1.0.2
+ dev: true
+
+ /onetime/5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+ dev: true
+
+ /opencollective-postinstall/2.0.3:
+ resolution: {integrity: sha1-eg//l49tv6TQBiOPusmO1BmMMlk=}
+ hasBin: true
+ dev: true
+
+ /optionator/0.8.3:
+ resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ deep-is: 0.1.3
+ fast-levenshtein: 2.0.6
+ levn: 0.3.0
+ prelude-ls: 1.1.2
+ type-check: 0.3.2
+ word-wrap: 1.2.3
+ dev: true
+
+ /optionator/0.9.1:
+ resolution: {integrity: sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ deep-is: 0.1.3
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.3
+ dev: true
+
+ /p-each-series/2.2.0:
+ resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /p-limit/1.3.0:
+ resolution: {integrity: sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=}
+ engines: {node: '>=4'}
+ dependencies:
+ p-try: 1.0.0
+ dev: true
+
+ /p-limit/2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-try: 2.2.0
+ dev: true
+
+ /p-limit/3.1.0:
+ resolution: {integrity: sha1-4drMvnjQ0TiMoYxk/qOOPlfjcGs=}
+ engines: {node: '>=10'}
+ dependencies:
+ yocto-queue: 0.1.0
+ dev: true
+
+ /p-locate/2.0.0:
+ resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=}
+ engines: {node: '>=4'}
+ dependencies:
+ p-limit: 1.3.0
+ dev: true
+
+ /p-locate/4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-limit: 2.3.0
+ dev: true
+
+ /p-locate/5.0.0:
+ resolution: {integrity: sha1-g8gxXGeFAF470CGDlBHJ4RDm2DQ=}
+ engines: {node: '>=10'}
+ dependencies:
+ p-limit: 3.1.0
+ dev: true
+
+ /p-map/4.0.0:
+ resolution: {integrity: sha1-uy+Vpe2i7BaOySdOBqdHw+KQTSs=}
+ engines: {node: '>=10'}
+ dependencies:
+ aggregate-error: 3.1.0
+ dev: true
+
+ /p-map/5.0.0:
+ resolution: {integrity: sha512-FeQNuFp/ecZidgaTXc65qXdTGD7mniwgzZNq5czwcJSy6ClETr2v3y4ZQESGe8C1038XhO/fjfKOyiTNH3d0/g==}
+ engines: {node: '>=12'}
+ dependencies:
+ aggregate-error: 4.0.0
+ dev: true
+
+ /p-try/1.0.0:
+ resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /p-try/2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /parent-module/1.0.1:
+ resolution: {integrity: sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=}
+ engines: {node: '>=6'}
+ dependencies:
+ callsites: 3.1.0
+ dev: true
+
+ /parse-json/4.0.0:
+ resolution: {integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=}
+ engines: {node: '>=4'}
+ dependencies:
+ error-ex: 1.3.2
+ json-parse-better-errors: 1.0.2
+ dev: true
+
+ /parse-json/5.2.0:
+ resolution: {integrity: sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/code-frame': 7.12.13
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.1.6
+ dev: true
+
+ /parse5/6.0.1:
+ resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
+ dev: true
+
+ /patch-console/1.0.0:
+ resolution: {integrity: sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /path-exists/3.0.0:
+ resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /path-exists/4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-is-absolute/1.0.1:
+ resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-key/3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-parse/1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: true
+
+ /path-type/3.0.0:
+ resolution: {integrity: sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=}
+ engines: {node: '>=4'}
+ dependencies:
+ pify: 3.0.0
+ dev: true
+
+ /path-type/4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /picomatch/2.3.0:
+ resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==}
+ engines: {node: '>=8.6'}
+ dev: true
+
+ /pify/3.0.0:
+ resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /pirates/4.0.1:
+ resolution: {integrity: sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ node-modules-regexp: 1.0.0
+ dev: true
+
+ /pkg-dir/2.0.0:
+ resolution: {integrity: sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=}
+ engines: {node: '>=4'}
+ dependencies:
+ find-up: 2.1.0
+ dev: true
+
+ /pkg-dir/4.2.0:
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ dev: true
+
+ /pkg-dir/5.0.0:
+ resolution: {integrity: sha1-oC1q6+a6EzqSj3Suwguv3+a452A=}
+ engines: {node: '>=10'}
+ dependencies:
+ find-up: 5.0.0
+ dev: true
+
+ /pkg-up/2.0.0:
+ resolution: {integrity: sha1-yBmscoBZpGHKscOImivjxJoATX8=}
+ engines: {node: '>=4'}
+ dependencies:
+ find-up: 2.1.0
+ dev: true
+
+ /please-upgrade-node/3.2.0:
+ resolution: {integrity: sha1-rt3T+ZTJM+StmLmdmlVu+g4v6UI=}
+ dependencies:
+ semver-compare: 1.0.0
+ dev: true
+
+ /pluralize/8.0.0:
+ resolution: {integrity: sha1-Gm+hajjRKhkB4DIPoBcFHFOc47E=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /postcss-load-config/3.0.1:
+ resolution: {integrity: sha512-/pDHe30UYZUD11IeG8GWx9lNtu1ToyTsZHnyy45B4Mrwr/Kb6NgYl7k753+05CJNKnjbwh4975amoPJ+TEjHNQ==}
+ engines: {node: '>= 10'}
+ dependencies:
+ cosmiconfig: 7.0.0
+ import-cwd: 3.0.0
+ dev: true
+
+ /prelude-ls/1.1.2:
+ resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /prelude-ls/1.2.1:
+ resolution: {integrity: sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /pretty-format/26.6.2:
+ resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==}
+ engines: {node: '>= 10'}
+ dependencies:
+ '@jest/types': 26.6.2
+ ansi-regex: 5.0.0
+ ansi-styles: 4.3.0
+ react-is: 17.0.2
+ dev: true
+
+ /pretty-format/27.0.2:
+ resolution: {integrity: sha512-mXKbbBPnYTG7Yra9qFBtqj+IXcsvxsvOBco3QHxtxTl+hHKq6QdzMZ+q0CtL4ORHZgwGImRr2XZUX2EWzORxig==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ '@jest/types': 27.0.2
+ ansi-regex: 5.0.0
+ ansi-styles: 5.2.0
+ react-is: 17.0.2
+ dev: true
+
+ /progress/2.0.3:
+ resolution: {integrity: sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /prompts/2.4.1:
+ resolution: {integrity: sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==}
+ engines: {node: '>= 6'}
+ dependencies:
+ kleur: 3.0.3
+ sisteransi: 1.0.5
+ dev: true
+
+ /prop-types/15.7.2:
+ resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==}
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+ dev: true
+
+ /proto-props/2.0.0:
+ resolution: {integrity: sha1-isbm3sZYVFgVxiOjvIFYDe2poYE=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /proxy-compare/2.0.0:
+ resolution: {integrity: sha512-xhJF1+vPCnu93QYva3Weii5ho1AeX5dsR/P5O7pzy9QLxeOgMSQNC8zDo0bGg9vtn61Pu5Qn+5w/Y8OSU5k+8g==}
+ dev: true
+
+ /psl/1.8.0:
+ resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==}
+ dev: true
+
+ /pump/3.0.0:
+ resolution: {integrity: sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=}
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+ dev: true
+
+ /punycode/2.1.1:
+ resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /queue-microtask/1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ dev: true
+
+ /react-devtools-core/4.13.4:
+ resolution: {integrity: sha512-su/lI4LdiK5P1YgZpbm8K1iNQX6s0Lq5fJLa1ZcnpewvrqP5V14svHrbPmrU5ptMUSiwjZ3/CBmc/JCZOuuiHQ==}
+ dependencies:
+ shell-quote: 1.7.2
+ ws: 7.4.5
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: true
+
+ /react-is/16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+ dev: true
+
+ /react-is/17.0.2:
+ resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
+ dev: true
+
+ /react-reconciler/0.24.0_react@17.0.2:
+ resolution: {integrity: sha512-gAGnwWkf+NOTig9oOowqid9O0HjTDC+XVGBCAmJYYJ2A2cN/O4gDdIuuUQjv8A4v6GDwVfJkagpBBLW5OW9HSw==}
+ engines: {node: '>=0.10.0'}
+ peerDependencies:
+ react: ^16.0.0
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ prop-types: 15.7.2
+ react: 17.0.2
+ scheduler: 0.18.0
+ dev: true
+
+ /react/17.0.2:
+ resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ dev: true
+
+ /read-pkg-up/3.0.0:
+ resolution: {integrity: sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=}
+ engines: {node: '>=4'}
+ dependencies:
+ find-up: 2.1.0
+ read-pkg: 3.0.0
+ dev: true
+
+ /read-pkg-up/7.0.1:
+ resolution: {integrity: sha1-86YTV1hFlzOuK5VjgFbhhU5+9Qc=}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: 5.2.0
+ type-fest: 0.8.1
+ dev: true
+
+ /read-pkg/3.0.0:
+ resolution: {integrity: sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=}
+ engines: {node: '>=4'}
+ dependencies:
+ load-json-file: 4.0.0
+ normalize-package-data: 2.5.0
+ path-type: 3.0.0
+ dev: true
+
+ /read-pkg/5.2.0:
+ resolution: {integrity: sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/normalize-package-data': 2.4.0
+ normalize-package-data: 2.5.0
+ parse-json: 5.2.0
+ type-fest: 0.6.0
+ dev: true
+
+ /readdirp/3.5.0:
+ resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.0
+ dev: true
+
+ /regexp-tree/0.1.23:
+ resolution: {integrity: sha1-iozhzF6XGs72IhOn7Nsfbhih8bI=}
+ hasBin: true
+ dev: true
+
+ /regexp.prototype.flags/1.3.1:
+ resolution: {integrity: sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ dev: true
+
+ /regexpp/3.1.0:
+ resolution: {integrity: sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI=}
+ engines: {node: '>=8'}
+ dev: true
+
+ /require-directory/2.1.1:
+ resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /require-from-string/2.0.2:
+ resolution: {integrity: sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /reserved-words/0.1.2:
+ resolution: {integrity: sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=}
+ dev: true
+
+ /resolve-cwd/3.0.0:
+ resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ resolve-from: 5.0.0
+ dev: true
+
+ /resolve-from/4.0.0:
+ resolution: {integrity: sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /resolve-from/5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /resolve/1.20.0:
+ resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==}
+ dependencies:
+ is-core-module: 2.4.0
+ path-parse: 1.0.7
+ dev: true
+
+ /resolve/2.0.0-next.3:
+ resolution: {integrity: sha1-1BAWKT1KhYajnKXZtfFcvqH1XkY=}
+ dependencies:
+ is-core-module: 2.4.0
+ path-parse: 1.0.7
+ dev: true
+
+ /restore-cursor/3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.3
+ dev: true
+
+ /reusify/1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: true
+
+ /rimraf/3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ hasBin: true
+ dependencies:
+ glob: 7.1.7
+ dev: true
+
+ /rollup/2.50.5:
+ resolution: {integrity: sha512-Ztz4NurU2LbS3Jn5rlhnYv35z6pkjBUmYKr94fOBIKINKRO6kug9NTFHArT7jqwMP2kqEZ39jJuEtkk91NBltQ==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /run-parallel/1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+ dev: true
+
+ /rxjs/6.6.7:
+ resolution: {integrity: sha1-kKwBisq/SRv2UEQjXVhjxNq4BMk=}
+ engines: {npm: '>=2.0.0'}
+ dependencies:
+ tslib: 1.14.1
+ dev: true
+
+ /safe-buffer/5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+ dev: true
+
+ /safe-regex/2.1.1:
+ resolution: {integrity: sha1-9xKPANBW4v5cEegaEyTdl0qtztI=}
+ dependencies:
+ regexp-tree: 0.1.23
+ dev: true
+
+ /safer-buffer/2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ dev: true
+
+ /saxes/5.0.1:
+ resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==}
+ engines: {node: '>=10'}
+ dependencies:
+ xmlchars: 2.2.0
+ dev: true
+
+ /scheduler/0.18.0:
+ resolution: {integrity: sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==}
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ dev: true
+
+ /semver-compare/1.0.0:
+ resolution: {integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w=}
+ dev: true
+
+ /semver-regex/3.1.2:
+ resolution: {integrity: sha1-NLTA02Hu8mLgcZnb7zFtDyqxGAc=}
+ engines: {node: '>=8'}
+ dev: true
+
+ /semver/5.7.1:
+ resolution: {integrity: sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=}
+ hasBin: true
+ dev: true
+
+ /semver/6.3.0:
+ resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
+ hasBin: true
+ dev: true
+
+ /semver/7.3.5:
+ resolution: {integrity: sha1-C2Ich5NI2JmOSw5L6Us/EuYBjvc=}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /shebang-command/2.0.0:
+ resolution: {integrity: sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: 3.0.0
+ dev: true
+
+ /shebang-regex/3.0.0:
+ resolution: {integrity: sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=}
+ engines: {node: '>=8'}
+ dev: true
+
+ /shell-quote/1.7.2:
+ resolution: {integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==}
+ dev: true
+
+ /side-channel/1.0.4:
+ resolution: {integrity: sha1-785cj9wQTudRslxY1CkAEfpeos8=}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.1.1
+ object-inspect: 1.10.3
+ dev: true
+
+ /signal-exit/3.0.3:
+ resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==}
+ dev: true
+
+ /sisteransi/1.0.5:
+ resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
+ dev: true
+
+ /slash/3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /slice-ansi/3.0.0:
+ resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
+ /slice-ansi/4.0.0:
+ resolution: {integrity: sha1-UA6N0P1VsFgVCGJVsxla3ypF/ms=}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
+ /source-map-support/0.5.19:
+ resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==}
+ dependencies:
+ buffer-from: 1.1.1
+ source-map: 0.6.1
+ dev: true
+
+ /source-map/0.5.7:
+ resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /source-map/0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /source-map/0.7.3:
+ resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /spdx-correct/3.1.1:
+ resolution: {integrity: sha1-3s6BrJweZxPl99G28X1Gj6U9iak=}
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.9
+ dev: true
+
+ /spdx-exceptions/2.3.0:
+ resolution: {integrity: sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=}
+ dev: true
+
+ /spdx-expression-parse/3.0.1:
+ resolution: {integrity: sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=}
+ dependencies:
+ spdx-exceptions: 2.3.0
+ spdx-license-ids: 3.0.9
+ dev: true
+
+ /spdx-license-ids/3.0.9:
+ resolution: {integrity: sha1-illRNd75WSvaaXCUdPHL7qfCRn8=}
+ dev: true
+
+ /sprintf-js/1.0.3:
+ resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=}
+ dev: true
+
+ /stack-utils/2.0.3:
+ resolution: {integrity: sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==}
+ engines: {node: '>=10'}
+ dependencies:
+ escape-string-regexp: 2.0.0
+ dev: true
+
+ /string-argv/0.3.1:
+ resolution: {integrity: sha1-leL77AQnrhkYSTX4FtdKqkxcGdo=}
+ engines: {node: '>=0.6.19'}
+ dev: true
+
+ /string-length/3.1.0:
+ resolution: {integrity: sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==}
+ engines: {node: '>=8'}
+ dependencies:
+ astral-regex: 1.0.0
+ strip-ansi: 5.2.0
+ dev: true
+
+ /string-length/4.0.2:
+ resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ char-regex: 1.0.2
+ strip-ansi: 6.0.0
+ dev: true
+
+ /string-width/4.2.2:
+ resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.0
+ dev: true
+
+ /string.prototype.matchall/4.0.5:
+ resolution: {integrity: sha1-WTcGROHbfkwMBFJ3aQz3sBIDxNo=}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ es-abstract: 1.18.3
+ get-intrinsic: 1.1.1
+ has-symbols: 1.0.2
+ internal-slot: 1.0.3
+ regexp.prototype.flags: 1.3.1
+ side-channel: 1.0.4
+ dev: true
+
+ /string.prototype.trimend/1.0.4:
+ resolution: {integrity: sha1-51rpDClCxjUEaGwYsoe0oLGkX4A=}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ dev: true
+
+ /string.prototype.trimstart/1.0.4:
+ resolution: {integrity: sha1-s2OZr0qymZtMnGSL16P7K7Jv7u0=}
+ dependencies:
+ call-bind: 1.0.2
+ define-properties: 1.1.3
+ dev: true
+
+ /stringify-object/3.3.0:
+ resolution: {integrity: sha1-cDBlrvyhkwDTzoivT1s5VtdVZik=}
+ engines: {node: '>=4'}
+ dependencies:
+ get-own-enumerable-property-symbols: 3.0.2
+ is-obj: 1.0.1
+ is-regexp: 1.0.0
+ dev: true
+
+ /strip-ansi/5.2.0:
+ resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==}
+ engines: {node: '>=6'}
+ dependencies:
+ ansi-regex: 4.1.0
+ dev: true
+
+ /strip-ansi/6.0.0:
+ resolution: {integrity: sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.0
+ dev: true
+
+ /strip-bom/3.0.0:
+ resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /strip-bom/4.0.0:
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /strip-final-newline/2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /strip-json-comments/3.1.1:
+ resolution: {integrity: sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=}
+ engines: {node: '>=8'}
+ dev: true
+
+ /sucrase/3.18.1:
+ resolution: {integrity: sha512-TRyO38wwOPhLLlM8QLOG3TgMj0FKk+arlTrS9pRAanF8cAcHvgRPKIYWGO25mPSp/Rj87zMMTjFfkqIZGI6ZdA==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ commander: 4.1.1
+ glob: 7.1.6
+ lines-and-columns: 1.1.6
+ mz: 2.7.0
+ pirates: 4.0.1
+ ts-interface-checker: 0.1.13
+ dev: true
+
+ /supports-color/5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: 3.0.0
+ dev: true
+
+ /supports-color/7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: true
+
+ /supports-color/8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: true
+
+ /supports-hyperlinks/2.2.0:
+ resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ supports-color: 7.2.0
+ dev: true
+
+ /symbol-tree/3.2.4:
+ resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+ dev: true
+
+ /table/6.7.1:
+ resolution: {integrity: sha1-7gVZK3FDgxqMlPPO5qrkwczvM+I=}
+ engines: {node: '>=10.0.0'}
+ dependencies:
+ ajv: 8.5.0
+ lodash.clonedeep: 4.5.0
+ lodash.truncate: 4.4.2
+ slice-ansi: 4.0.0
+ string-width: 4.2.2
+ strip-ansi: 6.0.0
+ dev: true
+
+ /terminal-link/2.1.1:
+ resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ supports-hyperlinks: 2.2.0
+ dev: true
+
+ /test-exclude/6.0.0:
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@istanbuljs/schema': 0.1.3
+ glob: 7.1.7
+ minimatch: 3.0.4
+ dev: true
+
+ /text-table/0.2.0:
+ resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=}
+ dev: true
+
+ /thenify-all/1.6.0:
+ resolution: {integrity: sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=}
+ engines: {node: '>=0.8'}
+ dependencies:
+ thenify: 3.3.1
+ dev: true
+
+ /thenify/3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ dependencies:
+ any-promise: 1.3.0
+ dev: true
+
+ /throat/6.0.1:
+ resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==}
+ dev: true
+
+ /through/2.3.8:
+ resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=}
+ dev: true
+
+ /tmpl/1.0.4:
+ resolution: {integrity: sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=}
+ dev: true
+
+ /to-fast-properties/2.0.0:
+ resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
+ engines: {node: '>=4'}
+ dev: true
+
+ /to-regex-range/5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: true
+
+ /tough-cookie/4.0.0:
+ resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==}
+ engines: {node: '>=6'}
+ dependencies:
+ psl: 1.8.0
+ punycode: 2.1.1
+ universalify: 0.1.2
+ dev: true
+
+ /tr46/2.1.0:
+ resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==}
+ engines: {node: '>=8'}
+ dependencies:
+ punycode: 2.1.1
+ dev: true
+
+ /tree-kill/1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+ dev: true
+
+ /ts-interface-checker/0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ dev: true
+
+ /tsconfig-paths/3.9.0:
+ resolution: {integrity: sha1-CYVHpsREiAfo/Ljq4IEGTumjyQs=}
+ dependencies:
+ '@types/json5': 0.0.29
+ json5: 1.0.1
+ minimist: 1.2.5
+ strip-bom: 3.0.0
+ dev: true
+
+ /tslib/1.14.1:
+ resolution: {integrity: sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=}
+ dev: true
+
+ /tsup/4.11.1_typescript@4.3.2:
+ resolution: {integrity: sha512-/AU2QhhOFjXEPkmIEljLAtPcEyL6KQLFDlM6gWxDZiaZdQAfW9Tyk1/WqV+tf6eoBYjXW6KMnQX7vwMczL06kA==}
+ hasBin: true
+ peerDependencies:
+ typescript: ^4.2.3
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ cac: 6.7.3
+ chalk: 4.1.1
+ chokidar: 3.5.1
+ debug: 4.3.1
+ esbuild: 0.11.23
+ execa: 5.0.1
+ globby: 11.0.3
+ joycon: 3.0.1
+ postcss-load-config: 3.0.1
+ resolve-from: 5.0.0
+ rollup: 2.50.5
+ sucrase: 3.18.1
+ tree-kill: 1.2.2
+ typescript: 4.3.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /tsutils/3.21.0_typescript@4.3.2:
+ resolution: {integrity: sha1-tIcX05TOpsHglpg+7Vjp1hcVtiM=}
+ engines: {node: '>= 6'}
+ peerDependencies:
+ typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
+ dependencies:
+ tslib: 1.14.1
+ typescript: 4.3.2
+ dev: true
+
+ /type-check/0.3.2:
+ resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.1.2
+ dev: true
+
+ /type-check/0.4.0:
+ resolution: {integrity: sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ dev: true
+
+ /type-detect/4.0.8:
+ resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /type-fest/0.12.0:
+ resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest/0.20.2:
+ resolution: {integrity: sha1-G/IH9LKPkVg2ZstfvTJ4hzAc1fQ=}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest/0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest/0.6.0:
+ resolution: {integrity: sha1-jSojcNPfiG61yQraHFv2GIrPg4s=}
+ engines: {node: '>=8'}
+ dev: true
+
+ /type-fest/0.8.1:
+ resolution: {integrity: sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=}
+ engines: {node: '>=8'}
+ dev: true
+
+ /typedarray-to-buffer/3.1.5:
+ resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
+ dependencies:
+ is-typedarray: 1.0.0
+ dev: true
+
+ /typescript/4.3.2:
+ resolution: {integrity: sha1-OZqxiqxFgC1vJJjeUFT8u+cWqAU=}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+ dev: true
+
+ /unbox-primitive/1.0.1:
+ resolution: {integrity: sha1-CF4hViXsMWJXTciFmr7nilmxRHE=}
+ dependencies:
+ function-bind: 1.1.1
+ has-bigints: 1.0.1
+ has-symbols: 1.0.2
+ which-boxed-primitive: 1.0.2
+ dev: true
+
+ /universalify/0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
+ /uri-js/4.4.1:
+ resolution: {integrity: sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=}
+ dependencies:
+ punycode: 2.1.1
+ dev: true
+
+ /v8-compile-cache/2.3.0:
+ resolution: {integrity: sha1-LeGWGMZtwkfc+2+ZM4A12CRaLO4=}
+ dev: true
+
+ /v8-to-istanbul/7.1.2:
+ resolution: {integrity: sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==}
+ engines: {node: '>=10.10.0'}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.3
+ convert-source-map: 1.7.0
+ source-map: 0.7.3
+ dev: true
+
+ /validate-npm-package-license/3.0.4:
+ resolution: {integrity: sha1-/JH2uce6FchX9MssXe/uw51PQQo=}
+ dependencies:
+ spdx-correct: 3.1.1
+ spdx-expression-parse: 3.0.1
+ dev: true
+
+ /valtio/1.0.5_react@17.0.2:
+ resolution: {integrity: sha512-SysrWAVeV0OZCVQwBsOil5/kvACY4HshFMw9hT+TzGtGP3WEbMpFqAlagZ0ikv4E0rPHcBKCcvDTj5VBeyquaw==}
+ peerDependencies:
+ '@babel/helper-module-imports': '>=7.12'
+ '@babel/types': '>=7.13'
+ babel-plugin-macros: '>=3.0'
+ react: '>=16.8'
+ peerDependenciesMeta:
+ '@babel/helper-module-imports':
+ optional: true
+ '@babel/types':
+ optional: true
+ babel-plugin-macros:
+ optional: true
+ react:
+ optional: true
+ dependencies:
+ proxy-compare: 2.0.0
+ react: 17.0.2
+ dev: true
+
+ /w3c-hr-time/1.0.2:
+ resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==}
+ dependencies:
+ browser-process-hrtime: 1.0.0
+ dev: true
+
+ /w3c-xmlserializer/2.0.0:
+ resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==}
+ engines: {node: '>=10'}
+ dependencies:
+ xml-name-validator: 3.0.0
+ dev: true
+
+ /walker/1.0.7:
+ resolution: {integrity: sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=}
+ dependencies:
+ makeerror: 1.0.11
+ dev: true
+
+ /webidl-conversions/5.0.0:
+ resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /webidl-conversions/6.1.0:
+ resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==}
+ engines: {node: '>=10.4'}
+ dev: true
+
+ /whatwg-encoding/1.0.5:
+ resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==}
+ dependencies:
+ iconv-lite: 0.4.24
+ dev: true
+
+ /whatwg-mimetype/2.3.0:
+ resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==}
+ dev: true
+
+ /whatwg-url/8.5.0:
+ resolution: {integrity: sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==}
+ engines: {node: '>=10'}
+ dependencies:
+ lodash: 4.17.21
+ tr46: 2.1.0
+ webidl-conversions: 6.1.0
+ dev: true
+
+ /which-boxed-primitive/1.0.2:
+ resolution: {integrity: sha1-E3V7yJsgmwSf5dhkMOIc9AqJqOY=}
+ dependencies:
+ is-bigint: 1.0.2
+ is-boolean-object: 1.1.1
+ is-number-object: 1.0.5
+ is-string: 1.0.6
+ is-symbol: 1.0.4
+ dev: true
+
+ /which-pm-runs/1.0.0:
+ resolution: {integrity: sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=}
+ dev: true
+
+ /which/2.0.2:
+ resolution: {integrity: sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=}
+ engines: {node: '>= 8'}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: true
+
+ /widest-line/3.1.0:
+ resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==}
+ engines: {node: '>=8'}
+ dependencies:
+ string-width: 4.2.2
+ dev: true
+
+ /word-wrap/1.2.3:
+ resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /wrap-ansi/6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.2
+ strip-ansi: 6.0.0
+ dev: true
+
+ /wrap-ansi/7.0.0:
+ resolution: {integrity: sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.2
+ strip-ansi: 6.0.0
+ dev: true
+
+ /wrappy/1.0.2:
+ resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
+ dev: true
+
+ /write-file-atomic/3.0.3:
+ resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==}
+ dependencies:
+ imurmurhash: 0.1.4
+ is-typedarray: 1.0.0
+ signal-exit: 3.0.3
+ typedarray-to-buffer: 3.1.5
+ dev: true
+
+ /ws/7.4.5:
+ resolution: {integrity: sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==}
+ engines: {node: '>=8.3.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: true
+
+ /ws/7.4.6:
+ resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==}
+ engines: {node: '>=8.3.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: true
+
+ /xml-name-validator/3.0.0:
+ resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==}
+ dev: true
+
+ /xmlchars/2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+ dev: true
+
+ /y18n/5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /yallist/4.0.0:
+ resolution: {integrity: sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=}
+ dev: true
+
+ /yaml/1.10.2:
+ resolution: {integrity: sha1-IwHF/78StGfejaIzOkWeKeeSDks=}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /yargs-parser/20.2.7:
+ resolution: {integrity: sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /yargs/16.2.0:
+ resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
+ engines: {node: '>=10'}
+ dependencies:
+ cliui: 7.0.4
+ escalade: 3.1.1
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.2
+ y18n: 5.0.8
+ yargs-parser: 20.2.7
+ dev: true
+
+ /yocto-queue/0.1.0:
+ resolution: {integrity: sha1-ApTrPe4FAo0x7hpfosVWpqrxChs=}
+ engines: {node: '>=10'}
+ dev: true
+
+ /yoga-layout-prebuilt/1.10.0:
+ resolution: {integrity: sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/yoga-layout': 1.9.2
diff --git a/src/components/CreateApp.tsx b/src/components/CreateApp.tsx
new file mode 100644
index 0000000..2bb270e
--- /dev/null
+++ b/src/components/CreateApp.tsx
@@ -0,0 +1,17 @@
+import { render } from 'ink';
+import React from 'react';
+import { TaskList } from '../types';
+import TaskListApp from './TaskListApp';
+
+export function createApp(taskList: TaskList) {
+ const inkApp = render();
+
+ return {
+ remove() {
+ inkApp.rerender(null);
+ inkApp.unmount();
+ inkApp.clear();
+ inkApp.cleanup();
+ },
+ };
+}
diff --git a/src/components/TaskListApp.tsx b/src/components/TaskListApp.tsx
new file mode 100644
index 0000000..db8d6b1
--- /dev/null
+++ b/src/components/TaskListApp.tsx
@@ -0,0 +1,28 @@
+import React, { FC } from 'react';
+import { TaskList } from 'ink-task-list';
+import { useSnapshot } from 'valtio';
+import type { TaskObject } from '../types';
+import TaskListItem from './TaskListItem';
+
+const TaskListApp: FC<{
+ taskList: TaskObject[];
+}> = ({
+ taskList,
+}) => {
+ const state = useSnapshot(taskList);
+
+ return (
+
+ {
+ state.map((task, index) => (
+
+ ))
+ }
+
+ );
+};
+
+export default TaskListApp;
diff --git a/src/components/TaskListItem.tsx b/src/components/TaskListItem.tsx
new file mode 100644
index 0000000..d3fe8a1
--- /dev/null
+++ b/src/components/TaskListItem.tsx
@@ -0,0 +1,34 @@
+import React, { FC } from 'react';
+import { Task } from 'ink-task-list';
+import type { TaskObject } from '../types';
+
+const TaskListItem: FC<{
+ task: TaskObject;
+}> = ({
+ task,
+}) => {
+ const childTasks = (
+ task.children.length > 0
+ ? task.children.map((childTask, index) => (
+
+ ))
+ : undefined
+ );
+
+ return (
+ 0}
+ >
+ {childTasks}
+
+ );
+};
+
+export default TaskListItem;
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..648ed0f
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,163 @@
+import { proxy } from 'valtio';
+import pMap, { Options } from 'p-map';
+import { arrayAdd, arrayRemove } from './utils';
+import { TaskList, TaskObject, Awaited } from './types';
+import { createApp } from './components/CreateApp';
+
+const createTaskInnerApi = (taskState: TaskObject) => {
+ const api = {
+ task: createTaskFunction(taskState.children),
+ setTitle(title: string) {
+ taskState.title = title;
+ },
+ setStatus(status: string) {
+ taskState.status = status;
+ },
+ setOutput(output: string | { message: string }) {
+ taskState.output = (
+ typeof output === 'string'
+ ? output
+ : (
+ 'message' in output
+ ? output.message
+ : ''
+ )
+ );
+ },
+ setWarning(warning: Error | string) {
+ taskState.state = 'warning';
+ api.setOutput(warning);
+ },
+ setError(error: Error | string) {
+ taskState.state = 'error';
+ api.setOutput(error);
+ },
+ };
+ return api;
+};
+
+type TaskFunction = (taskHelpers: ReturnType) => Promise;
+
+type TaskAPI = {
+ run: () => Promise>>;
+ clear: () => void;
+};
+type TaskResults<
+ T extends TaskFunction,
+ Tasks extends TaskAPI[]
+> = {
+ [key in keyof Tasks]: (
+ Tasks[key] extends TaskAPI
+ ? Awaited>
+ : Tasks[key]
+ );
+};
+
+let app: ReturnType;
+
+function registerTask(
+ taskList: TaskList,
+ taskTitle: string,
+ taskFunction: T,
+): TaskAPI {
+ if (!app) {
+ app = createApp(taskList);
+ taskList.isRoot = true;
+ }
+
+ const taskState = arrayAdd(taskList, {
+ title: taskTitle,
+ state: 'pending',
+ children: [],
+ });
+
+ return {
+ async run() {
+ const api = createTaskInnerApi(taskState);
+
+ taskState.state = 'loading';
+
+ let taskResult;
+ try {
+ taskResult = await taskFunction(api);
+ } catch (error) {
+ api.setError(error);
+ throw error;
+ }
+
+ if (taskState.state === 'loading') {
+ taskState.state = 'success';
+ }
+
+ return taskResult;
+ },
+ clear() {
+ arrayRemove(taskList, taskState);
+
+ if (taskList.isRoot && taskList.length === 0) {
+ app.remove();
+ app = null;
+ }
+ },
+ };
+}
+
+function createTaskFunction(
+ taskList: TaskList,
+) {
+ async function task(
+ title: string,
+ taskFunction: T,
+ ) {
+ const taskState = registerTask(taskList, title, taskFunction);
+ const result = await taskState.run();
+
+ return Object.assign(
+ taskState,
+ { result },
+ );
+ }
+
+ const createTask = (
+ title: string,
+ taskFunction: T,
+ ) => registerTask(
+ taskList,
+ title,
+ taskFunction,
+ );
+
+ task.group = async <
+ T extends TaskFunction,
+ Tasks extends TaskAPI[]
+ >(
+ createTasks: (taskCreator: typeof createTask) => readonly [...Tasks],
+ options?: Options,
+ ) => {
+ const tasksQueue = createTasks(createTask);
+ const results = (await pMap(
+ tasksQueue,
+ async taskApi => await taskApi.run(),
+ {
+ concurrency: 1,
+ ...options,
+ },
+ )) as unknown as TaskResults;
+
+ return {
+ results,
+ clear() {
+ for (const taskApi of tasksQueue) {
+ taskApi.clear();
+ }
+ },
+ };
+ };
+
+ return task;
+}
+
+const rootTaskList = proxy([]);
+const task = createTaskFunction(rootTaskList);
+
+export = task;
diff --git a/src/types.ts b/src/types.ts
new file mode 100644
index 0000000..6a7b8e7
--- /dev/null
+++ b/src/types.ts
@@ -0,0 +1,22 @@
+export type TaskObject = {
+ title: string;
+ state: 'pending' | 'loading' | 'error' | 'warning' | 'success';
+ children: TaskObject[];
+ status?: string;
+ output?: string;
+}
+
+export type TaskList = TaskObject[] & {
+ isRoot?: boolean;
+}
+
+// From: https://github.com/microsoft/TypeScript/blob/4f5b3299fee9a54b692aba9df7a9e894bd86e81d/src/lib/es2015.promise.d.ts#L1
+export type Awaited = (
+ T extends undefined
+ ? T
+ : (
+ T extends PromiseLike
+ ? U
+ : T
+ )
+);
diff --git a/src/utils.ts b/src/utils.ts
new file mode 100644
index 0000000..39285fd
--- /dev/null
+++ b/src/utils.ts
@@ -0,0 +1,17 @@
+export function arrayAdd(
+ array: T[],
+ element: T,
+) {
+ const index = array.push(element) - 1;
+ return array[index];
+}
+
+export function arrayRemove(
+ array: T[],
+ element: T,
+) {
+ const index = array.indexOf(element);
+ if (index > -1) {
+ array.splice(index, 1);
+ }
+}
diff --git a/tests/tasuku.spec.ts b/tests/tasuku.spec.ts
new file mode 100644
index 0000000..b00cbb2
--- /dev/null
+++ b/tests/tasuku.spec.ts
@@ -0,0 +1,107 @@
+import task from '../src/index';
+
+const expectType = (value: T) => {}; // eslint-disable-line @typescript-eslint/no-empty-function
+const sleep = (ms: number): Promise => new Promise((resolve) => {
+ setTimeout(resolve, ms);
+});
+
+test('task - return number', async () => {
+ const { result } = await task('Some task', async () => 1 + 1);
+ expectType(result);
+ expect(result).toBe(2);
+});
+
+test('task - return string', async () => {
+ const { result } = await task('Some task', async () => 'some string');
+ expectType(result);
+ expect(result).toBe('some string');
+});
+
+test('task return Promise', async () => {
+ const { result } = await task(
+ 'Some task',
+ async () => await new Promise((resolve) => {
+ resolve(123);
+ }),
+ );
+ expectType(result);
+ expect(result).toBe(123);
+});
+
+test('nested tasks', async () => {
+ const someTask = await task('Some task', async ({ task }) => {
+ const nestedTask = await task('nested task', async () => 'nested works');
+ expectType(nestedTask.result);
+ expect(nestedTask.result).toBe('nested works');
+
+ return 1;
+ });
+
+ expectType(someTask.result);
+ expect(someTask.result).toBe(1);
+});
+
+test('group tasks', async () => {
+ const groupTasks = await task.group(task => [
+ task('number', async () => 123),
+ task('string', async () => 'hello'),
+ task('boolean', async () => false),
+ ]);
+
+ expectType<[
+ number,
+ string,
+ boolean,
+ ]>(groupTasks.results);
+ expect(groupTasks.results).toEqual([
+ 123,
+ 'hello',
+ false,
+ ]);
+});
+
+test('group tasks - concurrency - series', async () => {
+ const startTime = Date.now();
+ const groupTasks = await task.group(task => [
+ task('one', async () => {
+ await sleep(100);
+ return 1;
+ }),
+ task('two', async () => {
+ await sleep(100);
+ return 2;
+ }),
+ task('three', async () => {
+ await sleep(100);
+ return 3;
+ }),
+ ]);
+
+ const elapsed = Date.now() - startTime;
+
+ expect(elapsed > 300 && elapsed < 400).toBe(true);
+ expect(groupTasks.results).toEqual([1, 2, 3]);
+});
+
+test('group tasks - concurrency - parallel', async () => {
+ const startTime = Date.now();
+ const groupTasks = await task.group(task => [
+ task('one', async () => {
+ await sleep(100);
+ return 1;
+ }),
+ task('two', async () => {
+ await sleep(100);
+ return 2;
+ }),
+ task('three', async () => {
+ await sleep(100);
+ return 3;
+ }),
+ ], { concurrency: Number.POSITIVE_INFINITY });
+
+ const elapsed = Date.now() - startTime;
+
+ expect(elapsed > 100 && elapsed < 200).toBe(true);
+ expect(groupTasks.results).toEqual([1, 2, 3]);
+});
diff --git a/tests/tsconfig.json b/tests/tsconfig.json
new file mode 100644
index 0000000..6244508
--- /dev/null
+++ b/tests/tsconfig.json
@@ -0,0 +1,4 @@
+{
+ "extends": "..",
+ "include": ["."]
+}
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..e048322
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "compilerOptions": {
+ "moduleResolution": "node",
+ "isolatedModules": true,
+ "esModuleInterop": true,
+ "jsx": "react",
+ "declaration": true,
+ "outDir": "dist",
+
+ // Node 12
+ "module": "commonjs",
+ "target": "ES2019"
+ },
+ "include": [
+ "src"
+ ]
+}
\ No newline at end of file