├── .changeset └── config.json ├── .editorconfig ├── .eslintignore ├── .eslintrc.cjs ├── .github └── workflows │ ├── lint-prettier-check.yaml │ └── release.yaml ├── .gitignore ├── .husky └── commit-msg ├── .prettierignore ├── .prettierrc.cjs ├── .vscode └── settings.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── package.json ├── packages ├── .swcrc ├── react-virtualized-window │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── RenderItem.tsx │ │ ├── ScrollDiv.tsx │ │ ├── SizingDiv.tsx │ │ ├── StickyDiv.tsx │ │ ├── components │ │ │ ├── Grid.tsx │ │ │ └── List.tsx │ │ ├── getScrollbarWidth.ts │ │ ├── index.ts │ │ ├── types.ts │ │ ├── useDataDimension.ts │ │ ├── useDimensionIndices.ts │ │ ├── useScrollAdjustedDim.ts │ │ ├── useScrollItems.tsx │ │ ├── useSmartSticky.ts │ │ ├── useWindowApi.ts │ │ ├── useWindowDimensions.ts │ │ ├── useWindowScroll.ts │ │ └── utils.ts │ └── tsconfig.json └── tsconfig.base.json ├── pnpm-lock.yaml └── pnpm-workspace.yaml /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@1.6.4/schema.json", 3 | "changelog": ["@changesets/changelog-github", { "repo": "Resembli/react-virtualized-window" }], 4 | "commit": false, 5 | "linked": [], 6 | "access": "public", 7 | "baseBranch": "main", 8 | "updateInternalDependencies": "patch", 9 | "ignore": [] 10 | } 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | 7 | [*.{ts,tsx,js,json,yml}] 8 | charset = utf-8 9 | indent_style = space 10 | indent_size = 2 11 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | 3 | /** @type {import('eslint').Linter.Config}} */ 4 | module.exports = { 5 | root: true, 6 | env: { 7 | browser: true, 8 | amd: true, 9 | node: true, 10 | }, 11 | parser: "@typescript-eslint/parser", 12 | settings: { 13 | react: { 14 | version: "999.999.999", // https://github.com/yannickcr/eslint-plugin-react/issues/1955 15 | }, 16 | }, 17 | plugins: ["@typescript-eslint"], 18 | extends: [ 19 | "eslint:recommended", 20 | "plugin:react/recommended", 21 | "plugin:@typescript-eslint/recommended", 22 | "plugin:react-hooks/recommended", 23 | ], 24 | rules: { 25 | "react/prop-types": "off", 26 | "react/no-unescaped-entities": "off", 27 | "react/react-in-jsx-scope": "off", 28 | "react-hooks/exhaustive-deps": "error", 29 | 30 | "@typescript-eslint/explicit-module-boundary-types": "off", 31 | "@typescript-eslint/explicit-function-return-type": "off", 32 | "@typescript-eslint/consistent-type-imports": ["error", { prefer: "type-imports" }], 33 | }, 34 | overrides: [ 35 | { 36 | files: ["*.js", "*.jsx", "*.cjs"], 37 | rules: { 38 | "@typescript-eslint/no-var-requires": "off", 39 | }, 40 | }, 41 | ], 42 | } 43 | -------------------------------------------------------------------------------- /.github/workflows/lint-prettier-check.yaml: -------------------------------------------------------------------------------- 1 | name: pr-checks 2 | on: [pull_request] 3 | jobs: 4 | lint-prettier-check: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - uses: actions/checkout@v2 8 | - name: cache pnpm modules 9 | uses: actions/cache@v2 10 | with: 11 | path: ~/.pnpm-store 12 | key: ${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} 13 | restore-keys: | 14 | ${{ runner.os }}- 15 | 16 | - uses: pnpm/action-setup@v2.0.1 17 | with: 18 | version: ^6.24.1 19 | run_install: true 20 | - run: pnpm lint 21 | - run: pnpm prettier 22 | -------------------------------------------------------------------------------- /.github/workflows/release.yaml: -------------------------------------------------------------------------------- 1 | name: Changesets 2 | on: 3 | push: 4 | branches: 5 | - main 6 | 7 | env: 8 | CI: true 9 | PNPM_CACHE_FOLDER: .pnpm-store 10 | HUSKY: 0 11 | jobs: 12 | version: 13 | timeout-minutes: 15 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: checkout code repository 17 | uses: actions/checkout@v2 18 | with: 19 | fetch-depth: 0 20 | - name: setup node.js 21 | uses: actions/setup-node@v2 22 | with: 23 | node-version: 16 24 | - name: install pnpm 25 | run: npm i pnpm@latest -g 26 | - name: setup pnpm config 27 | run: pnpm config set store-dir $PNPM_CACHE_FOLDER 28 | - name: install dependencies 29 | run: pnpm install 30 | - name: build packages 31 | run: pnpm build-packages 32 | - name: create and publish versions 33 | uses: changesets/action@v1 34 | with: 35 | version: pnpm ci:version 36 | commit: "[VERSION]: update versions." 37 | title: "Version Packages" 38 | publish: pnpm ci:publish 39 | env: 40 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 41 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Node 2 | **/node_modules/ 3 | 4 | # Mac OS 5 | .DS_Store 6 | 7 | # Vite Js 8 | .vite 9 | 10 | # Build output 11 | **/dist/ 12 | 13 | local/ 14 | 15 | # Dependencies 16 | /node_modules 17 | 18 | # Production 19 | build 20 | 21 | # Generated files 22 | .docusaurus 23 | .cache-loader 24 | 25 | # Misc 26 | .DS_Store 27 | .env.local 28 | .env.development.local 29 | .env.test.local 30 | .env.production.local 31 | 32 | npm-debug.log* 33 | yarn-debug.log* 34 | yarn-error.log* 35 | .pnpm-debug.log* 36 | 37 | .pnp.* 38 | 39 | .swc 40 | 41 | # Changeset git workflow will use this. 42 | .pnpm-store 43 | -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | INPUT_FILE=$1 5 | 6 | START_LINE=`head -n1 $INPUT_FILE` 7 | 8 | ACCEPTED_LIST="ROOT|WINDOW|VERSION" 9 | 10 | PATTERN="^\[(${ACCEPTED_LIST})\]: [a-z0-9].+\." 11 | 12 | COLOR_LIGHT_RED='\e[1;31m' 13 | 14 | if ! [[ "$START_LINE" =~ $PATTERN ]]; then 15 | printf "\n${COLOR_LIGHT_RED}Commit message should match []: [a-z0-9].+\nwhere is one of $ACCEPTED_LIST\n\n" 16 | exit 1 17 | fi 18 | 19 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | pnpm-lock.yaml 2 | 3 | # Node 4 | **/node_modules/ 5 | 6 | # Mac OS 7 | .DS_Store 8 | 9 | # Vite Js 10 | .vite 11 | 12 | # Build output 13 | **/dist/ 14 | 15 | local/ 16 | 17 | LICENSE 18 | 19 | # Dependencies 20 | /node_modules 21 | 22 | # Production 23 | build 24 | 25 | # Generated files 26 | .docusaurus 27 | .cache-loader 28 | 29 | .pnp.* 30 | 31 | .cache 32 | -------------------------------------------------------------------------------- /.prettierrc.cjs: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | 3 | /** @type {import('prettier').Options} */ 4 | module.exports = { 5 | singleQuote: false, 6 | printWidth: 100, 7 | arrowParens: "always", 8 | semi: false, 9 | tabWidth: 2, 10 | trailingComma: "all", 11 | 12 | plugins: [require("@trivago/prettier-plugin-sort-imports")], 13 | // trivago/prettier-plugin-sort-imports 14 | importOrder: ["^@resembli/(.*)$", "^[./]"], 15 | importOrderSeparation: true, 16 | importOrderSortSpecifiers: true, 17 | } 18 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "changesets", 4 | "clsx", 5 | "hori", 6 | "npmrc", 7 | "overscan", 8 | "pnpm", 9 | "preact", 10 | "testid", 11 | "vitebook", 12 | "wouter" 13 | ], 14 | "files.exclude": { 15 | "**/.git": true, 16 | "**/.svn": true, 17 | "**/.hg": true, 18 | "**/CVS": true, 19 | "**/.DS_Store": true, 20 | "**/Thumbs.db": true, 21 | "**/.classpath": true, 22 | "**/.project": true, 23 | "**/.settings": true, 24 | "**/.factorypath": true, 25 | "**/node_modules": true 26 | }, 27 | "explorerExclude.backup": null 28 | } 29 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | - Demonstrating empathy and kindness toward other people 21 | - Being respectful of differing opinions, viewpoints, and experiences 22 | - Giving and gracefully accepting constructive feedback 23 | - Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | - Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | - The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | - Trolling, insulting or derogatory comments, and personal or political attacks 33 | - Public or private harassment 34 | - Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | - Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | leebeydoun@outlook.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to react-virtualized-window 2 | 3 | We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's: 4 | 5 | - Reporting a bug 6 | - Discussing the current state of the code 7 | - Submitting a fix 8 | - Proposing new features 9 | - Becoming a maintainer 10 | 11 | ## We Develop with Github 12 | 13 | We use github to host code, to track issues and feature requests, as well as accept pull requests. 14 | 15 | ## We Use [Github Flow](https://guides.github.com/introduction/flow/index.html), So All Code Changes Happen Through Pull Requests 16 | 17 | Pull requests are the best way to propose changes to the codebase (we use [Github Flow](https://guides.github.com/introduction/flow/index.html)). We actively welcome your pull requests: 18 | 19 | 1. Fork the repo and create your branch from `main`. 20 | 2. If you've added code that should be tested, add tests. 21 | - We use [playwright](https://playwright.dev/) for tests. You can use the `demo` app to add any new tests. 22 | 3. If you've changed APIs, update the documentation. 23 | 4. Ensure the test suite passes. 24 | 5. Make sure your code lints. 25 | 6. Issue that pull request! 26 | 27 | ## Any contributions you make will be under the MIT Software License 28 | 29 | In short, when you submit code changes, your submissions are understood to be under the same [MIT License](http://choosealicense.com/licenses/mit/) that covers the project. Feel free to contact the maintainers if that's a concern. 30 | 31 | ## Report bugs using Github's [issues](https://github.com/Resembli/react-virtualized-window/issues) 32 | 33 | We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/Resembli/react-virtualized-window/issues/new); it's that easy! 34 | 35 | ## Write bug reports with detail, background, and sample code 36 | 37 | [This is an example](http://stackoverflow.com/q/12488905/180626) of a bug report, and we think it's not a bad model. 38 | Here's [another example from Craig Hockenberry](http://www.openradar.me/11905408). 39 | 40 | **Great Bug Reports** tend to have: 41 | 42 | - A quick summary and/or background 43 | - Steps to reproduce 44 | - What you expected would happen 45 | - What actually happens 46 | - Notes (possibly including why you think this might be happening, or stuff you tried that didn't work) 47 | 48 | People _love_ thorough bug reports. I'm not even kidding. 49 | 50 | ## License 51 | 52 | By contributing, you agree that your contributions will be licensed under its MIT License. 53 | 54 | ## References 55 | 56 | This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md) 57 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Resembli 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [`@resembli/react-virtualized-window`](./packages/react-virtualized-window/) 2 | 3 | [![license](https://img.shields.io/github/license/Resembli/react-virtualized-window?style=flat&colorA=000000&colorB=000000)](./LICENSE) 4 | [![bundle-size](https://img.shields.io/bundlephobia/minzip/@resembli/react-virtualized-window?style=flat&colorA=000000&colorB=000000)](https://bundlephobia.com/package/@resembli/react-virtualized-window) 5 | [![npm](https://img.shields.io/npm/v/@resembli/react-virtualized-window?style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/@resembli/react-virtualized-window) 6 | 7 | `@resembli/react-virtualized-window` provides basic components for creating virtualized views. Virtualization is a rendering method 8 | where only the dom element visible to the user are rendered. Using the components in this package it's possible to render lists or 9 | grids with 100,000s of items without any noticeable impact on rendering performance. 10 | 11 | See the [@resembli/react-virtualized-window](https://react-virtualized-window.com) documentation. 12 | 13 | ```sh 14 | npm install @resembli/react-virtualized-window 15 | ``` 16 | 17 | ```sh 18 | yarn add @resembli/react-virtualized-window 19 | ``` 20 | 21 | ```sh 22 | pnpm i @resembli/react-virtualized-window 23 | ``` 24 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | All `@resembli` packages are currently supported with security updates. 4 | 5 | You can report a vulnerability by contacting us via email at [leebeydoun@outlook.com](mailto:leebeydoun@outlook.com). 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@resembli/react-virtualized-window-root", 3 | "version": "0.0.1", 4 | "description": "root directory of @resembli/react-virtualized-window", 5 | "private": true, 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/Resembli/react-virtualized-window.git" 9 | }, 10 | "author": "Lee Beydoun", 11 | "license": "MIT", 12 | "bugs": { 13 | "url": "https://github.com/Resembli/react-virtualized-window/issues" 14 | }, 15 | "homepage": "https://github.com/Resembli/react-virtualized-window", 16 | "devDependencies": { 17 | "@changesets/changelog-github": "^0.4.2", 18 | "@changesets/cli": "^2.20.0", 19 | "@swc/cli": "^0.1.55", 20 | "@swc/core": "^1.2.138", 21 | "@trivago/prettier-plugin-sort-imports": "^3.1.1", 22 | "@types/prettier": "^2.4.2", 23 | "@types/react": "^17.0.39", 24 | "@typescript-eslint/eslint-plugin": "^5.7.0", 25 | "@typescript-eslint/parser": "^5.7.0", 26 | "browserslist": "^4.19.1", 27 | "eslint": "^8.5.0", 28 | "eslint-plugin-react": "^7.27.1", 29 | "eslint-plugin-react-hooks": "^4.3.0", 30 | "husky": "^7.0.4", 31 | "prettier": "^2.5.1", 32 | "react": "^17.0.2", 33 | "rimraf": "^3.0.2", 34 | "typescript": "^4.5.4" 35 | }, 36 | "scripts": { 37 | "build": "echo no-op", 38 | "prepare": "husky install", 39 | "lint": "eslint . --ext .ts --ext .tsx --ext .js --ext .jsx --ignore-path .gitignore --max-warnings=0", 40 | "prettier": "prettier --check ./**/*.{ts,tsx}", 41 | "build-packages": "pnpm run build --stream --parallel --filter \"{packages}\"", 42 | "ci:version": "pnpm changeset version && pnpm install --no-frozen-lockfile && git add .", 43 | "ci:publish": "pnpm changeset tag && pnpm -r --filter \"{packages}\" publish --no-git-checks --access=public" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /packages/.swcrc: -------------------------------------------------------------------------------- 1 | { 2 | "jsc": { 3 | "target": "es2022", 4 | "parser": { 5 | "syntax": "typescript", 6 | "tsx": true 7 | } 8 | }, 9 | "module": { 10 | "type": "es6", 11 | "strict": true 12 | }, 13 | "env": { 14 | "targets": ["defaults", "not IE 11", "maintained node versions"] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @resembli/react-virtualized-window 2 | 3 | ## 1.0.0 4 | 5 | ### Major Changes 6 | 7 | - [#209](https://github.com/Resembli/react-virtualized-window/pull/209) [`3fdfcf3`](https://github.com/Resembli/react-virtualized-window/commit/3fdfcf313b238f2c2d49161c8664b463b2240bea) Thanks [@leebeydoun](https://github.com/leebeydoun)! - First stable release 8 | 9 | ## 0.8.6 10 | 11 | ### Patch Changes 12 | 13 | - [`71a7aba`](https://github.com/Resembli/react-virtualized-window/commit/71a7abaa45aab6f8c9938619699c57a135779a41) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Update package.json for the virtual window package. 14 | 15 | ## 0.8.5 16 | 17 | ### Patch Changes 18 | 19 | - [#202](https://github.com/Resembli/ui/pull/202) [`ce9800b`](https://github.com/Resembli/ui/commit/ce9800b1f8d605d512abe0d13f61501bb3990c18) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Removed other supporting packages. 20 | 21 | ## 0.8.4 22 | 23 | ### Patch Changes 24 | 25 | - [#189](https://github.com/Resembli/ui/pull/189) [`bdd8af2`](https://github.com/Resembli/ui/commit/bdd8af251be81ea545a6f1ea14b70e346e1a10ef) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Transpile target is now es2022. 26 | 27 | ## 0.8.3 28 | 29 | ### Patch Changes 30 | 31 | - [#174](https://github.com/Resembli/ui/pull/174) [`270f05c`](https://github.com/Resembli/ui/commit/270f05c00049e6facab5e53f9ca9f7be32531b0a) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Add conditional checks so we don't render pinned column and row divs when they are empty. 32 | 33 | ## 0.8.2 34 | 35 | ### Patch Changes 36 | 37 | - [#171](https://github.com/Resembli/ui/pull/171) [`18efba3`](https://github.com/Resembli/ui/commit/18efba344d61ed4372426d92da2a7d5456a2e3e1) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Added support for pinned rows top and bottom 38 | 39 | * [#173](https://github.com/Resembli/ui/pull/173) [`4bd960f`](https://github.com/Resembli/ui/commit/4bd960fa23236d31844e7cc621c5112ee8fdcd61) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Added full support for pinned left and pinned right columns and pinned top and bottom rows 40 | 41 | ## 0.8.1 42 | 43 | ### Patch Changes 44 | 45 | - [#168](https://github.com/Resembli/ui/pull/168) [`ad418a3`](https://github.com/Resembli/ui/commit/ad418a32ac6c662b3f4d19ec618c708edc7a4575) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Update package.json to have sideEffects false and removed getScrollbar memo. 46 | 47 | ## 0.8.0 48 | 49 | ### Minor Changes 50 | 51 | - [#166](https://github.com/Resembli/ui/pull/166) [`42635d0`](https://github.com/Resembli/ui/commit/42635d036f5a8f9f233b0c63ab8012987ebf86f1) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Make react-virtualized-window an esm module 52 | 53 | ## 0.7.1 54 | 55 | ### Patch Changes 56 | 57 | - [#163](https://github.com/Resembli/ui/pull/163) [`635fea5`](https://github.com/Resembli/ui/commit/635fea5deb540fa37c42dde32da103fbd6aa1e51) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Fixed gap margins when using pinned columns left or right. 58 | 59 | * [#165](https://github.com/Resembli/ui/pull/165) [`4e014f6`](https://github.com/Resembli/ui/commit/4e014f6ce9ac15b64884e6161719f1ec2b917658) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Remove support for the gap prop. Can be achieved by applying padding. 60 | 61 | ## 0.7.0 62 | 63 | ### Minor Changes 64 | 65 | - [#161](https://github.com/Resembli/ui/pull/161) [`12bd4fd`](https://github.com/Resembli/ui/commit/12bd4fda167e3f2117f0cb0644ddeda4b2a4646b) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Removed rtl support 66 | 67 | RTL support with `sticky` positioning is not widely supported, in particular it breaks in IOS touch devices. 68 | The decision was made to drop RTL support in the virtualized window due to the complexity supporting brings vs 69 | the actual use cases. If we need to support virtualized rtl views, this can be done through a separate purpose 70 | built package. 71 | 72 | ## 0.6.0 73 | 74 | ### Minor Changes 75 | 76 | - [#158](https://github.com/Resembli/ui/pull/158) [`4584d06`](https://github.com/Resembli/ui/commit/4584d06308e803c82424f8ed0138aeefcfceb8da) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Added support for pinned left columns 77 | 78 | ### Patch Changes 79 | 80 | - [#152](https://github.com/Resembli/ui/pull/152) [`6e61a00`](https://github.com/Resembli/ui/commit/6e61a00d5e68cb59bc740240b1d89b7866af5323) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Add smart sticky disable and overscan when device with is smaller than 800px 81 | 82 | Before this change the sticky `div` that prevents content from going out of view was 83 | enabled by default. In order for the scroll to appear smooth the device needs to be 84 | relatively powerful, but mobile phones are on the weaker end and struggle to maintain 85 | a consistent 60fps. By disabling the stick `div` we can ensure that the animations 86 | remain smooth. 87 | 88 | **This is a change only to the default behavior, users can override these** 89 | 90 | * [#160](https://github.com/Resembli/ui/pull/160) [`5978ba8`](https://github.com/Resembli/ui/commit/5978ba84614c0e7a7975407463e0645eaf679f69) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Added support for pinned right columns and RTL warnings for IOS devices 91 | 92 | - [#145](https://github.com/Resembli/ui/pull/145) [`33c325a`](https://github.com/Resembli/ui/commit/33c325a6e3790b520a64544fa1085c9035e571ce) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Made some performance improvements. Memoed useScrollAdjustedDim, and a animation frame debounce. 93 | 94 | Our translation `div` now using positioning rather than mix translations and positions. Overall the performance 95 | is actually a little better. 96 | 97 | * [#155](https://github.com/Resembli/ui/pull/155) [`75b9a9b`](https://github.com/Resembli/ui/commit/75b9a9b7863f29df4264e3b48f0cb0891759d2a5) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Change gap margins to no longer be applied to the first and last element. 98 | 99 | ## 0.5.0 100 | 101 | ### Minor Changes 102 | 103 | - [#135](https://github.com/Resembli/ui/pull/135) [`c84c807`](https://github.com/Resembli/ui/commit/c84c80768de9da077a371d553a2e15156fa84006) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Added getKey property to allow custom keys be set on individual window items. Default is the cell index. 104 | 105 | * [#135](https://github.com/Resembli/ui/pull/135) [`c84c807`](https://github.com/Resembli/ui/commit/c84c80768de9da077a371d553a2e15156fa84006) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Removed the separate ListHorizontalComponent in favor of a List component with a layout property 106 | 107 | ### Patch Changes 108 | 109 | - [#139](https://github.com/Resembli/ui/pull/139) [`e878741`](https://github.com/Resembli/ui/commit/e878741bd3c2e47bc68dad4031e7853685f2eb05) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Fixed type error exception when an empty array is passed as data to the window components." 110 | 111 | ## 0.4.0 112 | 113 | ### Minor Changes 114 | 115 | - [#132](https://github.com/Resembli/ui/pull/132) [`b0ec4e6`](https://github.com/Resembli/ui/commit/b0ec4e69c5f328223fe4d7f120dcb7a211c5a528) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Switched to using a render prop instead of a render function. 116 | 117 | Using a render prop allows items the grid will render to use hooks. 118 | 119 | ## 0.3.0 120 | 121 | ### Minor Changes 122 | 123 | - [#129](https://github.com/Resembli/ui/pull/129) [`b2ebb3c`](https://github.com/Resembli/ui/commit/b2ebb3cf1c6b297fc628157fabb1c16107a29929) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Updated build process to use browserlists. 124 | 125 | ## 0.2.0 126 | 127 | ### Minor Changes 128 | 129 | - [#126](https://github.com/Resembli/ui/pull/126) [`d033303`](https://github.com/Resembli/ui/commit/d0333031800f24050dee83a9c1eefb0651e037c8) Thanks [@leebeydoun](https://github.com/leebeydoun)! - Switched to using the classic React runtime 130 | 131 | ## 0.1.0 132 | 133 | ### Minor Changes 134 | 135 | - fa05000: [WINDOW]: add new type exports for ItemGap and NumberOrPercent. 136 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/README.md: -------------------------------------------------------------------------------- 1 | # @resembli/react-virtualized-window 2 | 3 | [![license](https://img.shields.io/github/license/Resembli/ui?style=flat&colorA=000000&colorB=000000)](../../LICENSE) 4 | [![bundle-size](https://img.shields.io/bundlephobia/minzip/@resembli/react-virtualized-window?style=flat&colorA=000000&colorB=000000)](https://bundlephobia.com/package/@resembli/react-virtualized-window) 5 | [![npm](https://img.shields.io/npm/v/@resembli/react-virtualized-window?style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/@resembli/react-virtualized-window) 6 | 7 | See the [@resembli/react-virtualized-window](https://react-virtualized-window.com) documentation. 8 | 9 | ```sh 10 | npm install @resembli/react-virtualized-window 11 | ``` 12 | 13 | ```sh 14 | yarn add @resembli/react-virtualized-window 15 | ``` 16 | 17 | ```sh 18 | pnpm i @resembli/react-virtualized-window 19 | ``` 20 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@resembli/react-virtualized-window", 3 | "description": "React virtualized window components for rendering massive lists or grids", 4 | "private": false, 5 | "author": "Lee Beydoun", 6 | "version": "1.0.0", 7 | "types": "src/index.ts", 8 | "main": "src/index.ts", 9 | "type": "module", 10 | "publishConfig": { 11 | "main": "dist/index.js", 12 | "types": "dist/types/index.d.ts" 13 | }, 14 | "keywords": [ 15 | "react", 16 | "reactjs", 17 | "react-components", 18 | "virtualized", 19 | "virtual", 20 | "window", 21 | "virtualized-window", 22 | "list", 23 | "scrolling", 24 | "infinite-scrolling", 25 | "grid", 26 | "table" 27 | ], 28 | "repository": { 29 | "type": "git", 30 | "url": "git+https://github.com/Resembli/react-virtualized-window.git", 31 | "directory": "packages/react-virtualized-window" 32 | }, 33 | "license": "MIT", 34 | "bugs": { 35 | "url": "https://github.com/Resembli/react-virtualized-window/issues" 36 | }, 37 | "homepage": "https://react-virtualized-window.com", 38 | "scripts": { 39 | "build": "swc ./src -d dist --config-file ../.swcrc && tsc", 40 | "clean": "rimraf dist", 41 | "clean:build": "rimraf dist && swc ./src -d dist && tsc" 42 | }, 43 | "peerDependencies": { 44 | "@types/react": "^17.0.0 || ^18.0.0", 45 | "react": "^17.0.0 || ^18.0.0" 46 | }, 47 | "peerDependenciesMeta": { 48 | "@types/react": { 49 | "optional": true 50 | } 51 | }, 52 | "sideEffects": false 53 | } 54 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/RenderItem.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import type { CellMeta, GridProps } from "./types.js" 4 | 5 | type RenderItemsProps = { 6 | Component: GridProps["children"] 7 | itemProps: T 8 | itemWidth: number 9 | column: number 10 | row: number 11 | pinnedRow?: CellMeta["pinnedRow"] 12 | pinnedColumn?: CellMeta["pinnedColumn"] 13 | } 14 | 15 | export const RenderItem = function ({ 16 | Component, 17 | itemProps, 18 | itemWidth, 19 | column, 20 | row, 21 | pinnedRow, 22 | pinnedColumn, 23 | }: RenderItemsProps) { 24 | const itemStyles = React.useMemo(() => { 25 | return { 26 | width: itemWidth, 27 | minWidth: itemWidth, 28 | maxWidth: itemWidth, 29 | height: "100%", 30 | } 31 | }, [itemWidth]) 32 | 33 | const cellMeta = React.useMemo( 34 | () => ({ row, column, pinnedRow, pinnedColumn }), 35 | [column, pinnedRow, pinnedColumn, row], 36 | ) 37 | 38 | return 39 | } 40 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/ScrollDiv.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import type { PropsWithChildren } from "react" 3 | 4 | interface ScrollDivProps { 5 | disableSticky?: boolean 6 | style?: React.CSSProperties 7 | leftOffset: number 8 | topOffset: number 9 | top: number 10 | left: number 11 | } 12 | 13 | export function ScrollDiv({ 14 | disableSticky, 15 | style, 16 | leftOffset, 17 | topOffset, 18 | top, 19 | left, 20 | children, 21 | }: PropsWithChildren) { 22 | return ( 23 |
35 | {children} 36 |
37 | ) 38 | } 39 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/SizingDiv.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | export function SizingDiv({ 4 | children, 5 | width, 6 | height, 7 | className, 8 | userStyle, 9 | testId, 10 | }: React.PropsWithChildren<{ 11 | height: React.CSSProperties["height"] 12 | width: React.CSSProperties["width"] 13 | userStyle?: React.CSSProperties 14 | className?: string 15 | testId?: string 16 | }>) { 17 | const style = React.useMemo(() => { 18 | return { ...userStyle, width: width ?? "100%", height: height ?? "100%" } 19 | }, [height, userStyle, width]) 20 | 21 | return ( 22 |
23 | {children} 24 |
25 | ) 26 | } 27 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/StickyDiv.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | interface StickyDivProps { 4 | width?: React.CSSProperties["width"] 5 | height?: React.CSSProperties["height"] 6 | disabled: boolean 7 | } 8 | 9 | export function StickyDiv({ 10 | children, 11 | width, 12 | height, 13 | disabled, 14 | }: React.PropsWithChildren) { 15 | if (disabled) return <>{children} 16 | return ( 17 |
27 | {children} 28 |
29 | ) 30 | } 31 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/components/Grid.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { ScrollDiv } from "../ScrollDiv.js" 4 | import { SizingDiv } from "../SizingDiv.js" 5 | import { StickyDiv } from "../StickyDiv.js" 6 | import type { GridProps } from "../types.js" 7 | import { useDataDimension } from "../useDataDimension.js" 8 | import { useIndicesForDimensions } from "../useDimensionIndices.js" 9 | import { useScrollAdjustWindowDims } from "../useScrollAdjustedDim.js" 10 | import { useScrollItems } from "../useScrollItems.js" 11 | import { useSmartSticky } from "../useSmartSticky.js" 12 | import { useWindowApi } from "../useWindowApi.js" 13 | import { useWindowDimensions } from "../useWindowDimensions.js" 14 | import { useWindowScroll } from "../useWindowScroll.js" 15 | 16 | export function Grid({ 17 | data, 18 | children, 19 | defaultRowHeight, 20 | rowHeights, 21 | defaultColumnWidth, 22 | columnWidths, 23 | 24 | tabIndex, 25 | overscan: userOverscan, 26 | apiRef, 27 | disableSticky: userDisableSticky, 28 | "data-testid": testId, 29 | 30 | getKey, 31 | className, 32 | style, 33 | 34 | width: sizingWidth, 35 | height: sizingHeight, 36 | 37 | onScroll: userOnScroll, 38 | 39 | pinnedTopCount = 0, 40 | pinnedBottomCount = 0, 41 | pinnedLeftCount = 0, 42 | pinnedRightCount = 0, 43 | }: GridProps) { 44 | const windowRef = React.useRef(null) 45 | useWindowApi(windowRef, apiRef) 46 | 47 | const [width, height, browserWidth] = useWindowDimensions(windowRef) 48 | const [overscan, disableSticky] = useSmartSticky(browserWidth, userOverscan, userDisableSticky) 49 | 50 | const [topOffset, leftOffset, onScroll] = useWindowScroll({ 51 | userOnScroll, 52 | }) 53 | 54 | const [topLeft, topMid, topRight, midLeft, midMid, midRight, botLeft, botMid, botRight] = 55 | React.useMemo(() => { 56 | const topSection = data.slice(0, pinnedTopCount) 57 | const botSection = data.slice(pinnedTopCount, pinnedTopCount + pinnedBottomCount) 58 | const midSection = data.slice(pinnedTopCount + pinnedBottomCount) 59 | 60 | const topLeft = topSection.map((row) => row.slice(0, pinnedLeftCount)) 61 | const topMid = topSection.map((row) => row.slice(pinnedLeftCount)) 62 | const topRight = topSection.map((row) => 63 | row.slice(pinnedLeftCount, pinnedLeftCount + pinnedRightCount), 64 | ) 65 | 66 | const midLeft = midSection.map((row) => row.slice(0, pinnedLeftCount)) 67 | const midMid = midSection.map((row) => row.slice(pinnedLeftCount)) 68 | const midRight = midSection.map((row) => 69 | row.slice(pinnedLeftCount, pinnedLeftCount + pinnedRightCount), 70 | ) 71 | 72 | const botLeft = botSection.map((row) => row.slice(0, pinnedLeftCount)) 73 | const botMid = botSection.map((row) => row.slice(pinnedLeftCount)) 74 | const botRight = botSection.map((row) => 75 | row.slice(pinnedLeftCount, pinnedLeftCount + pinnedRightCount), 76 | ) 77 | 78 | return [topLeft, topMid, topRight, midLeft, midMid, midRight, botLeft, botMid, botRight] 79 | }, [data, pinnedBottomCount, pinnedLeftCount, pinnedRightCount, pinnedTopCount]) 80 | 81 | const [adjustedWidth, adjustedHeight] = useScrollAdjustWindowDims({ 82 | height, 83 | width, 84 | rowHeight: defaultRowHeight, 85 | columnWidth: defaultColumnWidth, 86 | columnWidths, 87 | rowHeights, 88 | rowCount: data.length, 89 | columnCount: data[0]?.length ?? 0, 90 | }) 91 | 92 | const [dataHeights, innerHeight] = useDataDimension({ 93 | count: midMid.length, 94 | defaultDimension: defaultRowHeight, 95 | windowDim: adjustedHeight, 96 | dimensions: rowHeights, 97 | }) 98 | 99 | const [dataWidths, innerWidth] = useDataDimension({ 100 | count: midMid[0]?.length ?? 0, 101 | defaultDimension: defaultColumnWidth, 102 | windowDim: adjustedWidth, 103 | dimensions: columnWidths, 104 | }) 105 | 106 | const [topHeights, totalTopHeight] = useDataDimension({ 107 | count: topMid.length, 108 | defaultDimension: defaultRowHeight, 109 | windowDim: adjustedHeight, 110 | dimensions: rowHeights, 111 | }) 112 | 113 | const [botHeights, totalBotHeight] = useDataDimension({ 114 | count: botMid.length, 115 | defaultDimension: defaultRowHeight, 116 | windowDim: adjustedHeight, 117 | dimensions: rowHeights, 118 | }) 119 | 120 | const totalLeftWidth = React.useMemo( 121 | () => (pinnedLeftCount ? dataWidths.slice(0, pinnedLeftCount).reduce((a, b) => a + b) : 0), 122 | [dataWidths, pinnedLeftCount], 123 | ) 124 | 125 | const totalRightWidth = React.useMemo( 126 | () => 127 | pinnedRightCount 128 | ? dataWidths 129 | .slice(pinnedLeftCount, pinnedLeftCount + pinnedRightCount) 130 | .reduce((a, b) => a + b) 131 | : 0, 132 | [dataWidths, pinnedLeftCount, pinnedRightCount], 133 | ) 134 | 135 | const [vertStart, vertEnd, runningHeight] = useIndicesForDimensions({ 136 | itemDimensions: dataHeights, 137 | offset: topOffset, 138 | windowDimension: height, 139 | overscan: overscan ?? 1, 140 | }) 141 | 142 | const [horiStart, horiEnd, runningWidth] = useIndicesForDimensions({ 143 | windowDimension: width, 144 | offset: leftOffset, 145 | itemDimensions: dataWidths, 146 | overscan: overscan ?? 1, 147 | }) 148 | 149 | const scrollableItems = useScrollItems({ 150 | children, 151 | data: midMid, 152 | dataHeights, 153 | dataWidths, 154 | getKey, 155 | horiEnd, 156 | horiStart, 157 | runningHeight, 158 | runningWidth, 159 | vertEnd, 160 | vertStart, 161 | }) 162 | 163 | const midLeftItems = useScrollItems({ 164 | children, 165 | data: midLeft, 166 | dataHeights, 167 | dataWidths, 168 | getKey, 169 | horiStart: 0, 170 | horiEnd: pinnedLeftCount, 171 | runningHeight, 172 | runningWidth: 0, 173 | vertStart, 174 | vertEnd, 175 | pinnedColumn: "left", 176 | }) 177 | 178 | const midRightItems = useScrollItems({ 179 | children, 180 | data: midRight, 181 | dataHeights, 182 | dataWidths, 183 | getKey, 184 | horiStart: 0, 185 | horiEnd: pinnedRightCount, 186 | runningHeight, 187 | runningWidth: 0, 188 | vertStart, 189 | vertEnd, 190 | pinnedColumn: "right", 191 | }) 192 | 193 | const topLeftItems = useScrollItems({ 194 | children, 195 | data: topLeft, 196 | dataHeights: topHeights, 197 | dataWidths, 198 | getKey, 199 | horiStart: 0, 200 | horiEnd: pinnedLeftCount, 201 | runningHeight: 0, 202 | runningWidth: 0, 203 | vertStart: 0, 204 | vertEnd: pinnedTopCount, 205 | pinnedColumn: "left", 206 | pinnedRow: "top", 207 | }) 208 | 209 | const topMidItems = useScrollItems({ 210 | children, 211 | data: topMid, 212 | dataHeights: topHeights, 213 | dataWidths, 214 | getKey, 215 | horiStart, 216 | horiEnd, 217 | runningHeight: 0, 218 | runningWidth, 219 | vertStart: 0, 220 | vertEnd: pinnedTopCount, 221 | pinnedRow: "top", 222 | }) 223 | 224 | const topRightItems = useScrollItems({ 225 | children, 226 | data: topRight, 227 | dataHeights: topHeights, 228 | dataWidths, 229 | getKey, 230 | horiStart: 0, 231 | horiEnd: pinnedRightCount, 232 | runningHeight: 0, 233 | runningWidth: 0, 234 | vertStart: 0, 235 | vertEnd: pinnedTopCount, 236 | pinnedColumn: "right", 237 | pinnedRow: "top", 238 | }) 239 | 240 | const botMidItems = useScrollItems({ 241 | children, 242 | data: botMid, 243 | dataHeights: botHeights, 244 | dataWidths, 245 | getKey, 246 | horiStart, 247 | horiEnd, 248 | runningHeight: 0, 249 | runningWidth, 250 | vertStart: 0, 251 | vertEnd: pinnedBottomCount, 252 | pinnedRow: "bottom", 253 | }) 254 | 255 | const botLeftItems = useScrollItems({ 256 | children, 257 | data: botLeft, 258 | dataHeights: botHeights, 259 | dataWidths, 260 | getKey, 261 | horiStart: 0, 262 | horiEnd: pinnedLeftCount, 263 | runningHeight: 0, 264 | runningWidth: 0, 265 | vertStart: 0, 266 | vertEnd: pinnedBottomCount, 267 | pinnedColumn: "left", 268 | pinnedRow: "bottom", 269 | }) 270 | 271 | const botRightItems = useScrollItems({ 272 | children, 273 | data: botRight, 274 | dataHeights: botHeights, 275 | dataWidths, 276 | getKey, 277 | horiStart: 0, 278 | horiEnd: pinnedRightCount, 279 | runningHeight: 0, 280 | runningWidth: 0, 281 | vertStart: 0, 282 | vertEnd: pinnedBottomCount, 283 | pinnedColumn: "right", 284 | pinnedRow: "top", 285 | }) 286 | 287 | return ( 288 | 295 |
307 |
313 | 318 | {/* Scrollable Window */} 319 | 326 | {scrollableItems} 327 | 328 | {/* Mid Left */} 329 | {!!pinnedLeftCount && ( 330 |
331 | 338 | {midLeftItems} 339 | 340 |
341 | )} 342 | {/* Mid Right */} 343 | {!!pinnedRightCount && ( 344 |
345 | 352 | {midRightItems} 353 | 354 |
355 | )} 356 | 357 | {/* Top Mid */} 358 | {!!pinnedTopCount && ( 359 |
366 | 373 | {topMidItems} 374 | 375 |
376 | )} 377 | {/* Top Left */} 378 | {!!pinnedTopCount && !!pinnedLeftCount && ( 379 |
380 | 381 | {topLeftItems} 382 | 383 |
384 | )} 385 | {/* Top Right */} 386 | {!!pinnedTopCount && !!pinnedRightCount && ( 387 |
388 | 395 | {topRightItems} 396 | 397 |
398 | )} 399 | 400 | {/* Bot Mid */} 401 | {!!pinnedBottomCount && ( 402 |
403 | 410 | {botMidItems} 411 | 412 |
413 | )} 414 | {/* Bot Left */} 415 | {!!pinnedBottomCount && !!pinnedLeftCount && ( 416 |
424 | 431 | {botLeftItems} 432 | 433 |
434 | )} 435 | {/* Bot Right */} 436 | {!!pinnedBottomCount && !!pinnedRightCount && ( 437 |
445 | 452 | {botRightItems} 453 | 454 |
455 | )} 456 |
457 |
458 |
459 |
460 | ) 461 | } 462 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/components/List.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import type { CellMeta, NumberOrPercent, VirtualWindowBaseProps } from "../types.js" 4 | import { Grid } from "./Grid.js" 5 | 6 | export interface ListProps extends VirtualWindowBaseProps { 7 | data: T[] 8 | defaultSize: NumberOrPercent 9 | children: (props: { 10 | data: B 11 | style: React.CSSProperties 12 | cellMeta: CellMeta 13 | }) => JSX.Element 14 | sizes?: NumberOrPercent[] 15 | layout?: "horizontal" | "vertical" 16 | } 17 | 18 | export function List({ 19 | data, 20 | children, 21 | defaultSize, 22 | sizes, 23 | layout = "vertical", 24 | ...otherProps 25 | }: ListProps) { 26 | const verticalData = React.useMemo(() => data.map((d) => [d]), [data]) 27 | const horizontalData = React.useMemo(() => [data], [data]) 28 | 29 | if (layout === "horizontal") { 30 | return ( 31 | 38 | {children} 39 | 40 | ) 41 | } 42 | 43 | return ( 44 | 51 | {children} 52 | 53 | ) 54 | } 55 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/getScrollbarWidth.ts: -------------------------------------------------------------------------------- 1 | // See https://stackoverflow.com/a/13382873 for details on the this function 2 | export function getScrollbarWidth() { 3 | // Default for SSR. 4 | if (typeof document === "undefined") return 15 5 | 6 | // Creating invisible container 7 | const outer = document.createElement("div") 8 | outer.style.visibility = "hidden" 9 | outer.style.overflow = "scroll" // forcing scrollbar to appear 10 | 11 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 12 | // @ts-ignore 13 | outer.style.msOverflowStyle = "scrollbar" // needed for WinJS apps 14 | 15 | document.body.appendChild(outer) 16 | 17 | // Creating inner element and placing it in the container 18 | const inner = document.createElement("div") 19 | outer.appendChild(inner) 20 | 21 | // Calculating difference between container's full width and the child width 22 | const scrollbarWidth = outer.offsetWidth - inner.offsetWidth 23 | 24 | // Removing temporary elements from the DOM 25 | outer.parentNode?.removeChild(outer) 26 | 27 | return scrollbarWidth 28 | } 29 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/index.ts: -------------------------------------------------------------------------------- 1 | export { List } from "./components/List.js" 2 | export { Grid } from "./components/Grid.js" 3 | 4 | export type { ListProps } from "./components/List" 5 | export type { VirtualWindowApi } from "./useWindowApi" 6 | export type { NumberOrPercent, GridProps, RenderItem, CellMeta } from "./types" 7 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/types.ts: -------------------------------------------------------------------------------- 1 | import type { VirtualWindowApi } from "./useWindowApi.js" 2 | 3 | export type NumberOrPercent = number | `${number}%` 4 | 5 | export interface VirtualWindowBaseProps { 6 | tabIndex?: number 7 | overscan?: number 8 | apiRef?: React.MutableRefObject 9 | getKey?: (data: T) => string 10 | 11 | className?: string 12 | style?: React.CSSProperties 13 | disableSticky?: boolean 14 | 15 | onScroll?: React.UIEventHandler 16 | 17 | width?: React.CSSProperties["width"] 18 | height?: React.CSSProperties["height"] 19 | 20 | pinnedTopCount?: number 21 | pinnedBottomCount?: number 22 | "data-testid"?: string 23 | } 24 | 25 | export interface CellMeta { 26 | column: number 27 | row: number 28 | pinnedColumn?: "left" | "right" 29 | pinnedRow?: "top" | "bottom" 30 | } 31 | 32 | export interface GridProps extends VirtualWindowBaseProps { 33 | data: T[][] 34 | children: (props: { 35 | data: B 36 | style: React.CSSProperties 37 | cellMeta: CellMeta 38 | }) => JSX.Element 39 | defaultRowHeight: NumberOrPercent 40 | rowHeights?: NumberOrPercent[] 41 | defaultColumnWidth: NumberOrPercent 42 | columnWidths?: NumberOrPercent[] 43 | 44 | pinnedLeftCount?: number 45 | pinnedRightCount?: number 46 | } 47 | 48 | export type RenderItem = GridProps["children"] 49 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/useDataDimension.ts: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import type { NumberOrPercent } from "./types.js" 4 | 5 | interface UseDataDimensionArgs { 6 | count: number 7 | defaultDimension: NumberOrPercent 8 | windowDim: number 9 | dimensions?: NumberOrPercent[] 10 | } 11 | 12 | function percentToNumber(percent: string) { 13 | return parseFloat(percent) / 100.0 14 | } 15 | 16 | function dimToNumber(dim: NumberOrPercent, windowDim: number) { 17 | return typeof dim === "string" ? percentToNumber(dim) * windowDim : dim 18 | } 19 | 20 | export const useDataDimension = ({ 21 | count, 22 | windowDim, 23 | dimensions, 24 | defaultDimension, 25 | }: UseDataDimensionArgs) => { 26 | const defaultAsNumber = React.useMemo( 27 | () => dimToNumber(defaultDimension, windowDim), 28 | [defaultDimension, windowDim], 29 | ) 30 | 31 | const [dataDimensions, dimTotal] = React.useMemo(() => { 32 | const draftDimensions = [] 33 | 34 | let runningTotal = 0 35 | for (let i = 0; i < count; i++) { 36 | const dimAsNum = dimToNumber((dimensions && dimensions[i]) || defaultAsNumber, windowDim) 37 | 38 | runningTotal += dimAsNum 39 | draftDimensions.push(dimAsNum) 40 | } 41 | 42 | return [draftDimensions, runningTotal] 43 | }, [count, defaultAsNumber, dimensions, windowDim]) 44 | 45 | return [dataDimensions, dimTotal] as const 46 | } 47 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/useDimensionIndices.ts: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | interface UseVerticalIndices { 4 | itemDimensions: number[] 5 | windowDimension: number 6 | offset: number 7 | overscan: number 8 | } 9 | 10 | export const useIndicesForDimensions = ({ 11 | windowDimension, 12 | offset, 13 | itemDimensions, 14 | overscan, 15 | }: UseVerticalIndices) => { 16 | const maxDim = React.useMemo(() => Math.max(...itemDimensions), [itemDimensions]) 17 | 18 | const [start, end, running] = React.useMemo(() => { 19 | let start = 0 20 | let runningTotal = 0 21 | 22 | while (runningTotal < Math.max(0, offset - overscan * maxDim - maxDim)) { 23 | const itemDim = itemDimensions[start] 24 | 25 | // If the itemDim is less than zero then the window calculations are not complete. To 26 | // avoid creating a NaN value, we simply break out of the loop. 27 | if (itemDim + runningTotal > offset || itemDim < 0) break 28 | 29 | start++ 30 | runningTotal += itemDim 31 | } 32 | 33 | let end = start 34 | let endingTotal = runningTotal 35 | 36 | while (endingTotal < offset + windowDimension + overscan * maxDim) { 37 | const itemDim = itemDimensions[end] 38 | 39 | endingTotal += itemDim 40 | end++ 41 | } 42 | 43 | return [start, end, runningTotal] 44 | }, [offset, overscan, maxDim, windowDimension, itemDimensions]) 45 | 46 | return [start, end, running] as const 47 | } 48 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/useScrollAdjustedDim.ts: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { getScrollbarWidth } from "./getScrollbarWidth.js" 4 | import type { NumberOrPercent } from "./types.js" 5 | import { dimToNumber } from "./utils.js" 6 | 7 | interface UseScrollAdjustedWindowDimsArgs { 8 | height: number 9 | width: number 10 | columnCount: number 11 | rowCount: number 12 | rowHeight: NumberOrPercent 13 | columnWidth: NumberOrPercent 14 | rowHeights?: NumberOrPercent[] 15 | columnWidths?: NumberOrPercent[] 16 | } 17 | 18 | export const useScrollAdjustWindowDims = ({ 19 | height, 20 | width, 21 | rowCount, 22 | columnCount, 23 | rowHeight, 24 | columnWidth, 25 | rowHeights, 26 | columnWidths, 27 | }: UseScrollAdjustedWindowDimsArgs) => { 28 | const [adjustedWidth, adjustedHeight, hasVerticalScroll] = React.useMemo(() => { 29 | const scrollWidth = getScrollbarWidth() 30 | 31 | let hasVerticalScroll = false 32 | let runningTotal = 0 33 | for (let i = 0; i < rowCount; i++) { 34 | const dimAsNum = dimToNumber(rowHeights?.[i] || rowHeight, height) 35 | 36 | runningTotal += dimAsNum 37 | if (runningTotal > height - scrollWidth) { 38 | hasVerticalScroll = true 39 | break 40 | } 41 | } 42 | 43 | let hasHorizontalScroll = false 44 | runningTotal = 0 45 | for (let i = 0; i < columnCount; i++) { 46 | const dimAsNum = dimToNumber(columnWidths?.[i] || columnWidth, width) 47 | runningTotal += dimAsNum 48 | if (runningTotal > width - scrollWidth) { 49 | hasHorizontalScroll = true 50 | break 51 | } 52 | } 53 | 54 | const adjustedWidth = hasVerticalScroll ? width - scrollWidth : width 55 | const adjustedHeight = hasHorizontalScroll ? height - scrollWidth : height 56 | 57 | return [adjustedWidth, adjustedHeight, hasVerticalScroll] 58 | }, [columnCount, columnWidth, columnWidths, rowCount, rowHeight, rowHeights, height, width]) 59 | 60 | return [adjustedWidth, adjustedHeight, hasVerticalScroll] as const 61 | } 62 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/useScrollItems.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { RenderItem } from "./RenderItem.js" 4 | import type { CellMeta, GridProps } from "./types.js" 5 | 6 | interface ScrollItemArgs { 7 | vertStart: number 8 | vertEnd: number 9 | horiStart: number 10 | horiEnd: number 11 | data: GridProps["data"] 12 | dataHeights: number[] 13 | dataWidths: number[] 14 | runningHeight: number 15 | runningWidth: number 16 | pinnedRow?: CellMeta["pinnedRow"] 17 | pinnedColumn?: CellMeta["pinnedColumn"] 18 | getKey: GridProps["getKey"] 19 | children: GridProps["children"] 20 | } 21 | 22 | export function useScrollItems({ 23 | children, 24 | data, 25 | dataHeights, 26 | dataWidths, 27 | getKey, 28 | horiEnd, 29 | horiStart, 30 | runningHeight, 31 | runningWidth, 32 | pinnedRow, 33 | pinnedColumn, 34 | vertEnd, 35 | vertStart, 36 | }: ScrollItemArgs) { 37 | const scrollableItems = React.useMemo( 38 | function Items() { 39 | if (!data.length) return <> 40 | return ( 41 | <> 42 |
43 | {data.slice(vertStart, vertEnd).map((row, i) => { 44 | const rowKey = i + vertStart 45 | const itemHeight = dataHeights[vertStart + i] 46 | 47 | const rowChildren = row.slice(horiStart, horiEnd).map((cell, j) => { 48 | const cellKey = getKey?.(cell) ?? horiStart + j 49 | const itemWidth = dataWidths[horiStart + j] 50 | 51 | return ( 52 | 62 | ) 63 | }) 64 | 65 | return ( 66 |
75 |
76 | {rowChildren} 77 |
78 | ) 79 | })} 80 | 81 | ) 82 | }, 83 | [ 84 | children, 85 | data, 86 | dataHeights, 87 | dataWidths, 88 | getKey, 89 | horiEnd, 90 | horiStart, 91 | pinnedColumn, 92 | pinnedRow, 93 | runningHeight, 94 | runningWidth, 95 | vertEnd, 96 | vertStart, 97 | ], 98 | ) 99 | 100 | return scrollableItems 101 | } 102 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/useSmartSticky.ts: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | export function useSmartSticky( 4 | browserWidth: number, 5 | userOverscan?: number, 6 | userDisableSticky?: boolean, 7 | ) { 8 | const [overscan, disableSticky] = React.useMemo(() => { 9 | const disableSticky = userDisableSticky == null && browserWidth < 800 ? true : userDisableSticky 10 | const overscan = userOverscan == null && browserWidth < 800 ? 15 : userOverscan 11 | 12 | return [overscan, disableSticky] 13 | }, [browserWidth, userDisableSticky, userOverscan]) 14 | 15 | return [overscan, disableSticky] as const 16 | } 17 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/useWindowApi.ts: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | export interface VirtualWindowApi { 4 | scroll: HTMLDivElement["scroll"] 5 | scrollTo: HTMLDivElement["scrollTo"] 6 | scrollBy: HTMLDivElement["scrollBy"] 7 | scrollTop: HTMLDivElement["scrollTop"] 8 | scrollLeft: HTMLDivElement["scrollLeft"] 9 | } 10 | 11 | export const useWindowApi = ( 12 | windowRef: React.RefObject, 13 | windowApiRef?: React.MutableRefObject, 14 | ) => { 15 | React.useEffect(() => { 16 | if (!windowRef.current || !windowApiRef) return 17 | 18 | // We need to bind the scroll functions to the window element to avoid illegal invocation errors 19 | const scroll = windowRef.current.scroll.bind(windowRef.current) 20 | const scrollTo = windowRef.current.scrollTo.bind(windowRef.current) 21 | const scrollBy = windowRef.current.scrollBy.bind(windowRef.current) 22 | const scrollTop = windowRef.current.scrollLeft 23 | const scrollLeft = windowRef.current.scrollLeft 24 | 25 | windowApiRef.current = { scroll, scrollTo, scrollBy, scrollTop, scrollLeft } 26 | }, [windowApiRef, windowRef]) 27 | } 28 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/useWindowDimensions.ts: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | export const useWindowDimensions = (windowRef: React.RefObject) => { 4 | const windowHeightRef = React.useRef(0) 5 | const windowWidthRef = React.useRef(0) 6 | const browserWidth = React.useRef(0) 7 | 8 | const [, forceUpdate] = React.useReducer((x) => (x + 1) % 10, 0) 9 | 10 | React.useEffect(() => { 11 | if (!windowRef.current || !windowRef.current.parentElement) return 12 | 13 | const resizeObserver = new ResizeObserver(() => { 14 | if (!windowRef.current || !windowRef.current.parentElement) return 15 | 16 | const parentElement = windowRef.current.parentElement 17 | 18 | const scrollTop = windowRef.current.scrollTop 19 | const scrollLeft = windowRef.current.scrollLeft 20 | 21 | parentElement.replaceChildren(document.createElement("div")) 22 | 23 | // When width/height is 100%, resizing the element does not work 24 | // as expected - resizing up works, but resizing down will not be calculated 25 | // correctly (it doesn't resize at all). Subtracting 1 from the width and height 26 | // seems to fix this behavior. 27 | windowWidthRef.current = parentElement.clientWidth - 1 28 | windowHeightRef.current = parentElement.clientHeight - 1 29 | 30 | let root = parentElement 31 | while (root.parentElement) root = root.parentElement 32 | browserWidth.current = root.clientWidth 33 | 34 | parentElement.replaceChildren(windowRef.current) 35 | windowRef.current.scrollBy({ top: scrollTop, left: scrollLeft }) 36 | 37 | // After all effect calculations are complete, we need to force a re-render as the 38 | // div for the list will have changed height. 39 | forceUpdate() 40 | }) 41 | 42 | resizeObserver.observe(windowRef.current.parentElement) 43 | 44 | return () => resizeObserver.disconnect() 45 | }, [windowRef]) 46 | 47 | return [windowWidthRef.current, windowHeightRef.current, browserWidth.current] as const 48 | } 49 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/useWindowScroll.ts: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | interface UseWindowScrollArgs { 4 | userOnScroll?: React.UIEventHandler 5 | } 6 | 7 | export const useWindowScroll = ({ userOnScroll }: UseWindowScrollArgs) => { 8 | const vOffset = React.useRef(0) 9 | const hOffset = React.useRef(0) 10 | 11 | const [, forceUpdate] = React.useReducer((x) => x + 1, 0) 12 | const debounceRef = React.useRef(null) 13 | 14 | const onScroll: React.UIEventHandler = React.useCallback( 15 | (event) => { 16 | const target = event.currentTarget 17 | 18 | const scrollLeft = target.scrollLeft 19 | const scrollTop = target.scrollTop 20 | 21 | const verticalOffset = Math.max(0, scrollTop) 22 | const horizontalOffset = Math.max(0, scrollLeft) 23 | 24 | hOffset.current = horizontalOffset 25 | vOffset.current = verticalOffset 26 | 27 | if (debounceRef.current) cancelAnimationFrame(debounceRef.current) 28 | 29 | debounceRef.current = requestAnimationFrame(() => forceUpdate()) 30 | 31 | userOnScroll?.(event) 32 | }, 33 | [userOnScroll], 34 | ) 35 | 36 | return [vOffset.current, hOffset.current, onScroll] as const 37 | } 38 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/src/utils.ts: -------------------------------------------------------------------------------- 1 | import type { NumberOrPercent } from "./types.js" 2 | 3 | export function percentToNumber(percent: string) { 4 | return parseFloat(percent) / 100.0 5 | } 6 | 7 | export function dimToNumber(dim: NumberOrPercent, windowDim: number) { 8 | return typeof dim === "string" ? percentToNumber(dim) * windowDim : dim 9 | } 10 | -------------------------------------------------------------------------------- /packages/react-virtualized-window/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.base.json", 3 | "include": ["./src"], 4 | "compilerOptions": { 5 | "outDir": "dist/types" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/tsconfig.base.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": false, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "declaration": true, 17 | "emitDeclarationOnly": true, 18 | "jsx": "react" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | importers: 4 | 5 | .: 6 | specifiers: 7 | '@changesets/changelog-github': ^0.4.2 8 | '@changesets/cli': ^2.20.0 9 | '@swc/cli': ^0.1.55 10 | '@swc/core': ^1.2.138 11 | '@trivago/prettier-plugin-sort-imports': ^3.1.1 12 | '@types/prettier': ^2.4.2 13 | '@types/react': ^17.0.39 14 | '@typescript-eslint/eslint-plugin': ^5.7.0 15 | '@typescript-eslint/parser': ^5.7.0 16 | browserslist: ^4.19.1 17 | eslint: ^8.5.0 18 | eslint-plugin-react: ^7.27.1 19 | eslint-plugin-react-hooks: ^4.3.0 20 | husky: ^7.0.4 21 | prettier: ^2.5.1 22 | react: ^17.0.2 23 | rimraf: ^3.0.2 24 | typescript: ^4.5.4 25 | devDependencies: 26 | '@changesets/changelog-github': 0.4.2 27 | '@changesets/cli': 2.20.0 28 | '@swc/cli': 0.1.55_@swc+core@1.2.138 29 | '@swc/core': 1.2.138 30 | '@trivago/prettier-plugin-sort-imports': 3.1.1_prettier@2.5.1 31 | '@types/prettier': 2.4.2 32 | '@types/react': 17.0.39 33 | '@typescript-eslint/eslint-plugin': 5.7.0_u33blfsakbfl3u66a57yxsw3gm 34 | '@typescript-eslint/parser': 5.7.0_2ogcmk6jnbn3xmgrqg7cazyxl4 35 | browserslist: 4.19.1 36 | eslint: 8.5.0 37 | eslint-plugin-react: 7.27.1_eslint@8.5.0 38 | eslint-plugin-react-hooks: 4.3.0_eslint@8.5.0 39 | husky: 7.0.4 40 | prettier: 2.5.1 41 | react: 17.0.2 42 | rimraf: 3.0.2 43 | typescript: 4.5.4 44 | 45 | packages/react-virtualized-window: 46 | specifiers: {} 47 | 48 | packages: 49 | 50 | /@babel/code-frame/7.16.0: 51 | resolution: {integrity: sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==} 52 | engines: {node: '>=6.9.0'} 53 | dependencies: 54 | '@babel/highlight': 7.16.0 55 | dev: true 56 | 57 | /@babel/code-frame/7.16.7: 58 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} 59 | engines: {node: '>=6.9.0'} 60 | dependencies: 61 | '@babel/highlight': 7.16.10 62 | dev: true 63 | 64 | /@babel/compat-data/7.16.4: 65 | resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==} 66 | engines: {node: '>=6.9.0'} 67 | dev: true 68 | 69 | /@babel/core/7.13.10: 70 | resolution: {integrity: sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==} 71 | engines: {node: '>=6.9.0'} 72 | dependencies: 73 | '@babel/code-frame': 7.16.0 74 | '@babel/generator': 7.13.9 75 | '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.13.10 76 | '@babel/helper-module-transforms': 7.16.5 77 | '@babel/helpers': 7.16.5 78 | '@babel/parser': 7.14.6 79 | '@babel/template': 7.16.0 80 | '@babel/traverse': 7.13.0 81 | '@babel/types': 7.13.0 82 | convert-source-map: 1.8.0 83 | debug: 4.3.3 84 | gensync: 1.0.0-beta.2 85 | json5: 2.2.0 86 | lodash: 4.17.21 87 | semver: 6.3.0 88 | source-map: 0.5.7 89 | transitivePeerDependencies: 90 | - supports-color 91 | dev: true 92 | 93 | /@babel/generator/7.13.9: 94 | resolution: {integrity: sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==} 95 | dependencies: 96 | '@babel/types': 7.13.0 97 | jsesc: 2.5.2 98 | source-map: 0.5.7 99 | dev: true 100 | 101 | /@babel/generator/7.16.5: 102 | resolution: {integrity: sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==} 103 | engines: {node: '>=6.9.0'} 104 | dependencies: 105 | '@babel/types': 7.16.0 106 | jsesc: 2.5.2 107 | source-map: 0.5.7 108 | dev: true 109 | 110 | /@babel/helper-compilation-targets/7.16.3_@babel+core@7.13.10: 111 | resolution: {integrity: sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==} 112 | engines: {node: '>=6.9.0'} 113 | peerDependencies: 114 | '@babel/core': ^7.0.0 115 | dependencies: 116 | '@babel/compat-data': 7.16.4 117 | '@babel/core': 7.13.10 118 | '@babel/helper-validator-option': 7.14.5 119 | browserslist: 4.19.1 120 | semver: 6.3.0 121 | dev: true 122 | 123 | /@babel/helper-environment-visitor/7.16.5: 124 | resolution: {integrity: sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==} 125 | engines: {node: '>=6.9.0'} 126 | dependencies: 127 | '@babel/types': 7.16.0 128 | dev: true 129 | 130 | /@babel/helper-function-name/7.16.0: 131 | resolution: {integrity: sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==} 132 | engines: {node: '>=6.9.0'} 133 | dependencies: 134 | '@babel/helper-get-function-arity': 7.16.0 135 | '@babel/template': 7.16.0 136 | '@babel/types': 7.16.0 137 | dev: true 138 | 139 | /@babel/helper-get-function-arity/7.16.0: 140 | resolution: {integrity: sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==} 141 | engines: {node: '>=6.9.0'} 142 | dependencies: 143 | '@babel/types': 7.16.0 144 | dev: true 145 | 146 | /@babel/helper-hoist-variables/7.16.0: 147 | resolution: {integrity: sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==} 148 | engines: {node: '>=6.9.0'} 149 | dependencies: 150 | '@babel/types': 7.16.0 151 | dev: true 152 | 153 | /@babel/helper-module-imports/7.16.0: 154 | resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} 155 | engines: {node: '>=6.9.0'} 156 | dependencies: 157 | '@babel/types': 7.16.0 158 | dev: true 159 | 160 | /@babel/helper-module-transforms/7.16.5: 161 | resolution: {integrity: sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==} 162 | engines: {node: '>=6.9.0'} 163 | dependencies: 164 | '@babel/helper-environment-visitor': 7.16.5 165 | '@babel/helper-module-imports': 7.16.0 166 | '@babel/helper-simple-access': 7.16.0 167 | '@babel/helper-split-export-declaration': 7.16.0 168 | '@babel/helper-validator-identifier': 7.15.7 169 | '@babel/template': 7.16.0 170 | '@babel/traverse': 7.16.5 171 | '@babel/types': 7.16.0 172 | transitivePeerDependencies: 173 | - supports-color 174 | dev: true 175 | 176 | /@babel/helper-simple-access/7.16.0: 177 | resolution: {integrity: sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==} 178 | engines: {node: '>=6.9.0'} 179 | dependencies: 180 | '@babel/types': 7.16.0 181 | dev: true 182 | 183 | /@babel/helper-split-export-declaration/7.16.0: 184 | resolution: {integrity: sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==} 185 | engines: {node: '>=6.9.0'} 186 | dependencies: 187 | '@babel/types': 7.16.0 188 | dev: true 189 | 190 | /@babel/helper-validator-identifier/7.15.7: 191 | resolution: {integrity: sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==} 192 | engines: {node: '>=6.9.0'} 193 | dev: true 194 | 195 | /@babel/helper-validator-identifier/7.16.7: 196 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} 197 | engines: {node: '>=6.9.0'} 198 | dev: true 199 | 200 | /@babel/helper-validator-option/7.14.5: 201 | resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} 202 | engines: {node: '>=6.9.0'} 203 | dev: true 204 | 205 | /@babel/helpers/7.16.5: 206 | resolution: {integrity: sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==} 207 | engines: {node: '>=6.9.0'} 208 | dependencies: 209 | '@babel/template': 7.16.0 210 | '@babel/traverse': 7.16.5 211 | '@babel/types': 7.16.0 212 | transitivePeerDependencies: 213 | - supports-color 214 | dev: true 215 | 216 | /@babel/highlight/7.16.0: 217 | resolution: {integrity: sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==} 218 | engines: {node: '>=6.9.0'} 219 | dependencies: 220 | '@babel/helper-validator-identifier': 7.15.7 221 | chalk: 2.4.2 222 | js-tokens: 4.0.0 223 | dev: true 224 | 225 | /@babel/highlight/7.16.10: 226 | resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} 227 | engines: {node: '>=6.9.0'} 228 | dependencies: 229 | '@babel/helper-validator-identifier': 7.16.7 230 | chalk: 2.4.2 231 | js-tokens: 4.0.0 232 | dev: true 233 | 234 | /@babel/parser/7.14.6: 235 | resolution: {integrity: sha512-oG0ej7efjEXxb4UgE+klVx+3j4MVo+A2vCzm7OUN4CLo6WhQ+vSOD2yJ8m7B+DghObxtLxt3EfgMWpq+AsWehQ==} 236 | engines: {node: '>=6.0.0'} 237 | hasBin: true 238 | dependencies: 239 | '@babel/types': 7.16.0 240 | dev: true 241 | 242 | /@babel/parser/7.16.6: 243 | resolution: {integrity: sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==} 244 | engines: {node: '>=6.0.0'} 245 | hasBin: true 246 | dependencies: 247 | '@babel/types': 7.16.0 248 | dev: true 249 | 250 | /@babel/runtime/7.16.5: 251 | resolution: {integrity: sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==} 252 | engines: {node: '>=6.9.0'} 253 | dependencies: 254 | regenerator-runtime: 0.13.9 255 | dev: true 256 | 257 | /@babel/template/7.16.0: 258 | resolution: {integrity: sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==} 259 | engines: {node: '>=6.9.0'} 260 | dependencies: 261 | '@babel/code-frame': 7.16.0 262 | '@babel/parser': 7.16.6 263 | '@babel/types': 7.16.0 264 | dev: true 265 | 266 | /@babel/traverse/7.13.0: 267 | resolution: {integrity: sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==} 268 | dependencies: 269 | '@babel/code-frame': 7.16.0 270 | '@babel/generator': 7.13.9 271 | '@babel/helper-function-name': 7.16.0 272 | '@babel/helper-split-export-declaration': 7.16.0 273 | '@babel/parser': 7.14.6 274 | '@babel/types': 7.13.0 275 | debug: 4.3.3 276 | globals: 11.12.0 277 | lodash: 4.17.21 278 | transitivePeerDependencies: 279 | - supports-color 280 | dev: true 281 | 282 | /@babel/traverse/7.16.5: 283 | resolution: {integrity: sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==} 284 | engines: {node: '>=6.9.0'} 285 | dependencies: 286 | '@babel/code-frame': 7.16.0 287 | '@babel/generator': 7.16.5 288 | '@babel/helper-environment-visitor': 7.16.5 289 | '@babel/helper-function-name': 7.16.0 290 | '@babel/helper-hoist-variables': 7.16.0 291 | '@babel/helper-split-export-declaration': 7.16.0 292 | '@babel/parser': 7.16.6 293 | '@babel/types': 7.16.0 294 | debug: 4.3.3 295 | globals: 11.12.0 296 | transitivePeerDependencies: 297 | - supports-color 298 | dev: true 299 | 300 | /@babel/types/7.13.0: 301 | resolution: {integrity: sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==} 302 | dependencies: 303 | '@babel/helper-validator-identifier': 7.15.7 304 | lodash: 4.17.21 305 | to-fast-properties: 2.0.0 306 | dev: true 307 | 308 | /@babel/types/7.16.0: 309 | resolution: {integrity: sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==} 310 | engines: {node: '>=6.9.0'} 311 | dependencies: 312 | '@babel/helper-validator-identifier': 7.16.7 313 | to-fast-properties: 2.0.0 314 | dev: true 315 | 316 | /@changesets/apply-release-plan/5.0.4: 317 | resolution: {integrity: sha512-czayDIrgC8qBnqwClvh9nxjCMem+XZG7xtfdYwq3dxpzA30qGppcI0i088VYug5RCFR+l1N+HUvkujSZuBK65w==} 318 | dependencies: 319 | '@babel/runtime': 7.16.5 320 | '@changesets/config': 1.6.4 321 | '@changesets/get-version-range-type': 0.3.2 322 | '@changesets/git': 1.3.0 323 | '@changesets/types': 4.0.2 324 | '@manypkg/get-packages': 1.1.3 325 | detect-indent: 6.1.0 326 | fs-extra: 7.0.1 327 | lodash.startcase: 4.4.0 328 | outdent: 0.5.0 329 | prettier: 1.19.1 330 | resolve-from: 5.0.0 331 | semver: 5.7.1 332 | dev: true 333 | 334 | /@changesets/assemble-release-plan/5.0.5: 335 | resolution: {integrity: sha512-ejCVSM4I1jgaNi30we3/qltj2NQtS68w7C3H8Gvb6ZOvbIpAW/Tr0uMmPgRj4Vzkez5+fx0If02AvOdssz1btA==} 336 | dependencies: 337 | '@babel/runtime': 7.16.5 338 | '@changesets/errors': 0.1.4 339 | '@changesets/get-dependents-graph': 1.3.0 340 | '@changesets/types': 4.0.2 341 | '@manypkg/get-packages': 1.1.3 342 | semver: 5.7.1 343 | dev: true 344 | 345 | /@changesets/changelog-github/0.4.2: 346 | resolution: {integrity: sha512-qq8lJcq91ki7UT0fIfIcn5Yy7GJj19TmkLmGZ24/wEfxcD/nHHoTNRoi6nPt+Htf7qEudKxXLzQLi41B7Mt2vg==} 347 | dependencies: 348 | '@changesets/get-github-info': 0.5.0 349 | '@changesets/types': 4.0.2 350 | dotenv: 8.6.0 351 | dev: true 352 | 353 | /@changesets/cli/2.20.0: 354 | resolution: {integrity: sha512-IUYSgZKtS+wXPD5hxfnCfZ1JWCbBI0CRrhxpkgVKcXDwpxiRU8stCwuSuVj14kiYlThuH2zL0/ZuGvhF4r28Gg==} 355 | hasBin: true 356 | dependencies: 357 | '@babel/runtime': 7.16.5 358 | '@changesets/apply-release-plan': 5.0.4 359 | '@changesets/assemble-release-plan': 5.0.5 360 | '@changesets/config': 1.6.4 361 | '@changesets/errors': 0.1.4 362 | '@changesets/get-dependents-graph': 1.3.0 363 | '@changesets/get-release-plan': 3.0.5 364 | '@changesets/git': 1.3.0 365 | '@changesets/logger': 0.0.5 366 | '@changesets/pre': 1.0.9 367 | '@changesets/read': 0.5.3 368 | '@changesets/types': 4.0.2 369 | '@changesets/write': 0.1.6 370 | '@manypkg/get-packages': 1.1.3 371 | '@types/is-ci': 3.0.0 372 | '@types/semver': 6.2.3 373 | chalk: 2.4.2 374 | enquirer: 2.3.6 375 | external-editor: 3.1.0 376 | fs-extra: 7.0.1 377 | human-id: 1.0.2 378 | is-ci: 3.0.1 379 | meow: 6.1.1 380 | outdent: 0.5.0 381 | p-limit: 2.3.0 382 | preferred-pm: 3.0.3 383 | semver: 5.7.1 384 | spawndamnit: 2.0.0 385 | term-size: 2.2.1 386 | tty-table: 2.8.13 387 | dev: true 388 | 389 | /@changesets/config/1.6.4: 390 | resolution: {integrity: sha512-WWa8eR8GzS/p2atLc/+5UEDn7fsRCZ+/sShLkB/3efVbTkSTB1PwoKwQRXLYXM1DY289T7UnJT4HLZA3Gcreww==} 391 | dependencies: 392 | '@changesets/errors': 0.1.4 393 | '@changesets/get-dependents-graph': 1.3.0 394 | '@changesets/logger': 0.0.5 395 | '@changesets/types': 4.0.2 396 | '@manypkg/get-packages': 1.1.3 397 | fs-extra: 7.0.1 398 | micromatch: 4.0.4 399 | dev: true 400 | 401 | /@changesets/errors/0.1.4: 402 | resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} 403 | dependencies: 404 | extendable-error: 0.1.7 405 | dev: true 406 | 407 | /@changesets/get-dependents-graph/1.3.0: 408 | resolution: {integrity: sha512-4VHQWEluWySPgDdkL94YNxrEjDb9nwNFw515sWDmVrlfpQN5qaP1hdaotrp4mJm4ky85t4cTlrWSP+CTY7IDbw==} 409 | dependencies: 410 | '@changesets/types': 4.0.2 411 | '@manypkg/get-packages': 1.1.3 412 | chalk: 2.4.2 413 | fs-extra: 7.0.1 414 | semver: 5.7.1 415 | dev: true 416 | 417 | /@changesets/get-github-info/0.5.0: 418 | resolution: {integrity: sha512-vm5VgHwrxkMkUjFyn3UVNKLbDp9YMHd3vMf1IyJoa/7B+6VpqmtAaXyDS0zBLfN5bhzVCHrRnj4GcZXXcqrFTw==} 419 | dependencies: 420 | dataloader: 1.4.0 421 | node-fetch: 2.6.1 422 | dev: true 423 | 424 | /@changesets/get-release-plan/3.0.5: 425 | resolution: {integrity: sha512-67td3LA1RTJpY5Q+wJaTTRtAjZ2suAhDfj3VRjFv0gCgUPXs8rNx17n9UPbegPTQjeTS1r7hVRVifycmT0fQtA==} 426 | dependencies: 427 | '@babel/runtime': 7.16.5 428 | '@changesets/assemble-release-plan': 5.0.5 429 | '@changesets/config': 1.6.4 430 | '@changesets/pre': 1.0.9 431 | '@changesets/read': 0.5.3 432 | '@changesets/types': 4.0.2 433 | '@manypkg/get-packages': 1.1.3 434 | dev: true 435 | 436 | /@changesets/get-version-range-type/0.3.2: 437 | resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} 438 | dev: true 439 | 440 | /@changesets/git/1.3.0: 441 | resolution: {integrity: sha512-Ydj4lWX33d2PCDaTXOMSbyTjgk1go1V6EyXjKTmOV7nB/qvgKdDZLSt+AexKWKp3Ac2FTrtVnl9G5gMNVYNmuQ==} 442 | dependencies: 443 | '@babel/runtime': 7.16.5 444 | '@changesets/errors': 0.1.4 445 | '@changesets/types': 4.0.2 446 | '@manypkg/get-packages': 1.1.3 447 | is-subdir: 1.2.0 448 | spawndamnit: 2.0.0 449 | dev: true 450 | 451 | /@changesets/logger/0.0.5: 452 | resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} 453 | dependencies: 454 | chalk: 2.4.2 455 | dev: true 456 | 457 | /@changesets/parse/0.3.11: 458 | resolution: {integrity: sha512-w5/X8KijcCrvv5lHimXIBR9o35c78niiBoesBjBUlWeifwPz0DHc/lzVYJKRkA5w0BGqft6T/9hKI68GaYj5wA==} 459 | dependencies: 460 | '@changesets/types': 4.0.2 461 | js-yaml: 3.14.1 462 | dev: true 463 | 464 | /@changesets/pre/1.0.9: 465 | resolution: {integrity: sha512-F3+qMun89KlynecBD15fEpwGT/KxbYb3WGeut6w1xhZb0u7V/jdcPy9b+kJ2xmBqFZLn1WteWIP96IjxS57H7A==} 466 | dependencies: 467 | '@babel/runtime': 7.16.5 468 | '@changesets/errors': 0.1.4 469 | '@changesets/types': 4.0.2 470 | '@manypkg/get-packages': 1.1.3 471 | fs-extra: 7.0.1 472 | dev: true 473 | 474 | /@changesets/read/0.5.3: 475 | resolution: {integrity: sha512-zoj5NjNR4AhiGXz6aHTxsBLojChHgDOSbz6VfAVxMKX7tF7UhyNYptG2VEbSjxeamNKABx6k1pkM2IyVVlOcbQ==} 476 | dependencies: 477 | '@babel/runtime': 7.16.5 478 | '@changesets/git': 1.3.0 479 | '@changesets/logger': 0.0.5 480 | '@changesets/parse': 0.3.11 481 | '@changesets/types': 4.0.2 482 | chalk: 2.4.2 483 | fs-extra: 7.0.1 484 | p-filter: 2.1.0 485 | dev: true 486 | 487 | /@changesets/types/4.0.2: 488 | resolution: {integrity: sha512-OeDaB7D+WVy/ErymPzFm58IeGvz4DOl+oedyZETfnkfMezF/Uhrm1Ub6MHrO5LcAaQTW+ptDmr0fmaVyoTxgHw==} 489 | dev: true 490 | 491 | /@changesets/write/0.1.6: 492 | resolution: {integrity: sha512-JWE2gJs9eHhorxqembkf43fllKlCz+sp1TJKSheaWfhWILMHPdfa/xQG4+sMZkISo1qZ+IlJyiBLha6iGGjXyA==} 493 | dependencies: 494 | '@babel/runtime': 7.16.5 495 | '@changesets/types': 4.0.2 496 | fs-extra: 7.0.1 497 | human-id: 1.0.2 498 | prettier: 1.19.1 499 | dev: true 500 | 501 | /@eslint/eslintrc/1.0.5: 502 | resolution: {integrity: sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==} 503 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 504 | dependencies: 505 | ajv: 6.12.6 506 | debug: 4.3.3 507 | espree: 9.2.0 508 | globals: 13.12.0 509 | ignore: 4.0.6 510 | import-fresh: 3.3.0 511 | js-yaml: 4.1.0 512 | minimatch: 3.0.4 513 | strip-json-comments: 3.1.1 514 | transitivePeerDependencies: 515 | - supports-color 516 | dev: true 517 | 518 | /@humanwhocodes/config-array/0.9.2: 519 | resolution: {integrity: sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==} 520 | engines: {node: '>=10.10.0'} 521 | dependencies: 522 | '@humanwhocodes/object-schema': 1.2.1 523 | debug: 4.3.3 524 | minimatch: 3.0.4 525 | transitivePeerDependencies: 526 | - supports-color 527 | dev: true 528 | 529 | /@humanwhocodes/object-schema/1.2.1: 530 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 531 | dev: true 532 | 533 | /@manypkg/find-root/1.1.0: 534 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 535 | dependencies: 536 | '@babel/runtime': 7.16.5 537 | '@types/node': 12.20.44 538 | find-up: 4.1.0 539 | fs-extra: 8.1.0 540 | dev: true 541 | 542 | /@manypkg/get-packages/1.1.3: 543 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 544 | dependencies: 545 | '@babel/runtime': 7.16.5 546 | '@changesets/types': 4.0.2 547 | '@manypkg/find-root': 1.1.0 548 | fs-extra: 8.1.0 549 | globby: 11.0.4 550 | read-yaml-file: 1.1.0 551 | dev: true 552 | 553 | /@nodelib/fs.scandir/2.1.5: 554 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 555 | engines: {node: '>= 8'} 556 | dependencies: 557 | '@nodelib/fs.stat': 2.0.5 558 | run-parallel: 1.2.0 559 | dev: true 560 | 561 | /@nodelib/fs.stat/2.0.5: 562 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 563 | engines: {node: '>= 8'} 564 | dev: true 565 | 566 | /@nodelib/fs.walk/1.2.8: 567 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 568 | engines: {node: '>= 8'} 569 | dependencies: 570 | '@nodelib/fs.scandir': 2.1.5 571 | fastq: 1.13.0 572 | dev: true 573 | 574 | /@swc/cli/0.1.55_@swc+core@1.2.138: 575 | resolution: {integrity: sha512-akkLuRexFq8XTi6JNZ27mXD4wcKXLDSLj4g7YMU+/upFM8IeD1IEp1Mxtre7MzCZn+QOQgPF8N8IReJoHuSn3g==} 576 | engines: {node: '>= 12.13'} 577 | hasBin: true 578 | peerDependencies: 579 | '@swc/core': ^1.2.66 580 | chokidar: ^3.5.1 581 | peerDependenciesMeta: 582 | chokidar: 583 | optional: true 584 | dependencies: 585 | '@swc/core': 1.2.138 586 | commander: 7.2.0 587 | fast-glob: 3.2.7 588 | slash: 3.0.0 589 | source-map: 0.7.3 590 | dev: true 591 | 592 | /@swc/core-android-arm-eabi/1.2.138: 593 | resolution: {integrity: sha512-N79aTHj/jZNa8nXjOrfAaYYBkJxCQ9ZVFikQKSbBETU8usk7qAWDdCs94Y0q/Sow+9uiqguRVOrPFKSrN8LMTg==} 594 | engines: {node: '>=10'} 595 | cpu: [arm] 596 | os: [android] 597 | requiresBuild: true 598 | dev: true 599 | optional: true 600 | 601 | /@swc/core-android-arm64/1.2.138: 602 | resolution: {integrity: sha512-ZNRqTjZpNrB39pCX5OmtnNTnzU3X1GjZX2xDouS1jknEE+TPz1ZJsM4zNlz6AObd7caJhU7qRyWNDM0nlcnJZQ==} 603 | engines: {node: '>=10'} 604 | cpu: [arm64] 605 | os: [android] 606 | requiresBuild: true 607 | dev: true 608 | optional: true 609 | 610 | /@swc/core-darwin-arm64/1.2.138: 611 | resolution: {integrity: sha512-DlT0s3Iw3bmOCk4jln0Q9AC1H7q75bZojyODcPXQ2T24s6LcBeD1lNAfyQ2RmaQJTlBM04LjNYqvjA2HAR4ckw==} 612 | engines: {node: '>=10'} 613 | cpu: [arm64] 614 | os: [darwin] 615 | requiresBuild: true 616 | dev: true 617 | optional: true 618 | 619 | /@swc/core-darwin-x64/1.2.138: 620 | resolution: {integrity: sha512-+8ahwSnUTPCmpB1VkMTJdfcFU+ZGQ5JnA1dpSvDhB/u8wV2Dpk0ozpX+3xjqYXoUdhZvdHW1FxKZrhMhscJriA==} 621 | engines: {node: '>=10'} 622 | cpu: [x64] 623 | os: [darwin] 624 | requiresBuild: true 625 | dev: true 626 | optional: true 627 | 628 | /@swc/core-freebsd-x64/1.2.138: 629 | resolution: {integrity: sha512-4icXrpDBN2r24PIRF2DBZ9IPgnXnEqO7/bySIUoL7ul8su2yoRP4Xp3Xi+XP+uBvtrVttwYtzGPNikVggVSK1Q==} 630 | engines: {node: '>=10'} 631 | cpu: [x64] 632 | os: [freebsd] 633 | requiresBuild: true 634 | dev: true 635 | optional: true 636 | 637 | /@swc/core-linux-arm-gnueabihf/1.2.138: 638 | resolution: {integrity: sha512-YdEKUvT9GGBEsKSyXc/YJ0cWSetBV3JhxouYLCv4AoQsTrDU5vDQDFUWlT21pzlbwC66ffbpYxnugpsqBm5XKg==} 639 | engines: {node: '>=10'} 640 | cpu: [arm] 641 | os: [linux] 642 | requiresBuild: true 643 | dev: true 644 | optional: true 645 | 646 | /@swc/core-linux-arm64-gnu/1.2.138: 647 | resolution: {integrity: sha512-cn/YrVvghCgSpagzHins1BQnJ07J53aCvlp57iXDA2xfH/HwXTijIy+UzqpQaLeKKQ8gMXmfzj/M7WklccN8jw==} 648 | engines: {node: '>=10'} 649 | cpu: [arm64] 650 | os: [linux] 651 | requiresBuild: true 652 | dev: true 653 | optional: true 654 | 655 | /@swc/core-linux-arm64-musl/1.2.138: 656 | resolution: {integrity: sha512-aYoeZ46gaewTYYShHwlYhL8ARrLILiEnTWJFEWoUfAfbDwi4zaLyymRYmdpUyRHr+D9jloM5BKFNWnRPBTyCEg==} 657 | engines: {node: '>=10'} 658 | cpu: [arm64] 659 | os: [linux] 660 | requiresBuild: true 661 | dev: true 662 | optional: true 663 | 664 | /@swc/core-linux-x64-gnu/1.2.138: 665 | resolution: {integrity: sha512-gt9qP426kkIx4Yu2Dd9U2S44OE8ynRi47rt2HvdHaBlMsGfMH28EyMet3UT61ZVHMEoDxADQctz0JD1/29Ha1Q==} 666 | engines: {node: '>=10'} 667 | cpu: [x64] 668 | os: [linux] 669 | requiresBuild: true 670 | dev: true 671 | optional: true 672 | 673 | /@swc/core-linux-x64-musl/1.2.138: 674 | resolution: {integrity: sha512-lySbIVGApaDQVKPwH8D+9J5dkrawJTrBm86vY7F9sDPR5yCq5Buxx6Pn1X6VKE6e5vlEEb1zbVQmCrFgdUcgig==} 675 | engines: {node: '>=10'} 676 | cpu: [x64] 677 | os: [linux] 678 | requiresBuild: true 679 | dev: true 680 | optional: true 681 | 682 | /@swc/core-win32-arm64-msvc/1.2.138: 683 | resolution: {integrity: sha512-UmDtaC9ds1SNNfhYrHW1JvBhy7wKb/Y9RcQOsfG3StxqqnYkOWDkQt9dY5O9lAG8Iw/TCxzjJhm6ul48eMv9OQ==} 684 | engines: {node: '>=10'} 685 | cpu: [arm64] 686 | os: [win32] 687 | requiresBuild: true 688 | dev: true 689 | optional: true 690 | 691 | /@swc/core-win32-ia32-msvc/1.2.138: 692 | resolution: {integrity: sha512-evapKq/jVKMI5KDXUvpu3rhYf/L0VIg92TTphpxJSNjo7k5w9n68RY3MXtm1BmtCR4ZWtx0OEXzr9ckUDcqZDA==} 693 | engines: {node: '>=10'} 694 | cpu: [ia32] 695 | os: [win32] 696 | requiresBuild: true 697 | dev: true 698 | optional: true 699 | 700 | /@swc/core-win32-x64-msvc/1.2.138: 701 | resolution: {integrity: sha512-wYrARtnPg/svsQd0oovbth2JAhOugAgbnaOS0CMiWB4vaFBx+1GHJl5wzdhh9jt1kzsu4xZ4237tUeMH+s6d0A==} 702 | engines: {node: '>=10'} 703 | cpu: [x64] 704 | os: [win32] 705 | requiresBuild: true 706 | dev: true 707 | optional: true 708 | 709 | /@swc/core/1.2.138: 710 | resolution: {integrity: sha512-XMbpq6y2BiTju5KCtveM3h32Ma3chGm/fQEjErZmWNOcPIpupGLPosSU1bH35Udee4GHNJH3NfkZIDR0cjHWIg==} 711 | engines: {node: '>=10'} 712 | optionalDependencies: 713 | '@swc/core-android-arm-eabi': 1.2.138 714 | '@swc/core-android-arm64': 1.2.138 715 | '@swc/core-darwin-arm64': 1.2.138 716 | '@swc/core-darwin-x64': 1.2.138 717 | '@swc/core-freebsd-x64': 1.2.138 718 | '@swc/core-linux-arm-gnueabihf': 1.2.138 719 | '@swc/core-linux-arm64-gnu': 1.2.138 720 | '@swc/core-linux-arm64-musl': 1.2.138 721 | '@swc/core-linux-x64-gnu': 1.2.138 722 | '@swc/core-linux-x64-musl': 1.2.138 723 | '@swc/core-win32-arm64-msvc': 1.2.138 724 | '@swc/core-win32-ia32-msvc': 1.2.138 725 | '@swc/core-win32-x64-msvc': 1.2.138 726 | dev: true 727 | 728 | /@trivago/prettier-plugin-sort-imports/3.1.1_prettier@2.5.1: 729 | resolution: {integrity: sha512-T9EJNEOugWts4WxdmpWeY+sp+2fUHhvGh9QSBCowEGJfcbnu355HQRqok5bKwejdieMaI1+uGZhuTNMZwjqOCQ==} 730 | peerDependencies: 731 | prettier: 2.x 732 | dependencies: 733 | '@babel/core': 7.13.10 734 | '@babel/generator': 7.13.9 735 | '@babel/parser': 7.14.6 736 | '@babel/traverse': 7.13.0 737 | '@babel/types': 7.13.0 738 | javascript-natural-sort: 0.7.1 739 | lodash: 4.17.21 740 | prettier: 2.5.1 741 | transitivePeerDependencies: 742 | - supports-color 743 | dev: true 744 | 745 | /@types/is-ci/3.0.0: 746 | resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} 747 | dependencies: 748 | ci-info: 3.3.0 749 | dev: true 750 | 751 | /@types/json-schema/7.0.9: 752 | resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} 753 | dev: true 754 | 755 | /@types/minimist/1.2.2: 756 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} 757 | dev: true 758 | 759 | /@types/node/12.20.44: 760 | resolution: {integrity: sha512-aUN2KgwKSwUkrmr6lgvPtar5URwmQkxvZKmDqwhUMf8RJc2TbA1Ju2vfPPpyPum09fOF+7c838A6DJlD780HFQ==} 761 | dev: true 762 | 763 | /@types/normalize-package-data/2.4.1: 764 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} 765 | dev: true 766 | 767 | /@types/prettier/2.4.2: 768 | resolution: {integrity: sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==} 769 | dev: true 770 | 771 | /@types/prop-types/15.7.4: 772 | resolution: {integrity: sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==} 773 | dev: true 774 | 775 | /@types/react/17.0.39: 776 | resolution: {integrity: sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==} 777 | dependencies: 778 | '@types/prop-types': 15.7.4 779 | '@types/scheduler': 0.16.2 780 | csstype: 3.0.10 781 | dev: true 782 | 783 | /@types/scheduler/0.16.2: 784 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 785 | dev: true 786 | 787 | /@types/semver/6.2.3: 788 | resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} 789 | dev: true 790 | 791 | /@typescript-eslint/eslint-plugin/5.7.0_u33blfsakbfl3u66a57yxsw3gm: 792 | resolution: {integrity: sha512-8RTGBpNn5a9M628wBPrCbJ+v3YTEOE2qeZb7TDkGKTDXSj36KGRg92SpFFaR/0S3rSXQxM0Og/kV9EyadsYSBg==} 793 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 794 | peerDependencies: 795 | '@typescript-eslint/parser': ^5.0.0 796 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 797 | typescript: '*' 798 | peerDependenciesMeta: 799 | typescript: 800 | optional: true 801 | dependencies: 802 | '@typescript-eslint/experimental-utils': 5.7.0_2ogcmk6jnbn3xmgrqg7cazyxl4 803 | '@typescript-eslint/parser': 5.7.0_2ogcmk6jnbn3xmgrqg7cazyxl4 804 | '@typescript-eslint/scope-manager': 5.7.0 805 | debug: 4.3.3 806 | eslint: 8.5.0 807 | functional-red-black-tree: 1.0.1 808 | ignore: 5.1.9 809 | regexpp: 3.2.0 810 | semver: 7.3.5 811 | tsutils: 3.21.0_typescript@4.5.4 812 | typescript: 4.5.4 813 | transitivePeerDependencies: 814 | - supports-color 815 | dev: true 816 | 817 | /@typescript-eslint/experimental-utils/5.7.0_2ogcmk6jnbn3xmgrqg7cazyxl4: 818 | resolution: {integrity: sha512-u57eZ5FbEpzN5kSjmVrSesovWslH2ZyNPnaXQMXWgH57d5+EVHEt76W75vVuI9qKZ5BMDKNfRN+pxcPEjQjb2A==} 819 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 820 | peerDependencies: 821 | eslint: '*' 822 | dependencies: 823 | '@types/json-schema': 7.0.9 824 | '@typescript-eslint/scope-manager': 5.7.0 825 | '@typescript-eslint/types': 5.7.0 826 | '@typescript-eslint/typescript-estree': 5.7.0_typescript@4.5.4 827 | eslint: 8.5.0 828 | eslint-scope: 5.1.1 829 | eslint-utils: 3.0.0_eslint@8.5.0 830 | transitivePeerDependencies: 831 | - supports-color 832 | - typescript 833 | dev: true 834 | 835 | /@typescript-eslint/parser/5.7.0_2ogcmk6jnbn3xmgrqg7cazyxl4: 836 | resolution: {integrity: sha512-m/gWCCcS4jXw6vkrPQ1BjZ1vomP01PArgzvauBqzsoZ3urLbsRChexB8/YV8z9HwE3qlJM35FxfKZ1nfP/4x8g==} 837 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 838 | peerDependencies: 839 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 840 | typescript: '*' 841 | peerDependenciesMeta: 842 | typescript: 843 | optional: true 844 | dependencies: 845 | '@typescript-eslint/scope-manager': 5.7.0 846 | '@typescript-eslint/types': 5.7.0 847 | '@typescript-eslint/typescript-estree': 5.7.0_typescript@4.5.4 848 | debug: 4.3.3 849 | eslint: 8.5.0 850 | typescript: 4.5.4 851 | transitivePeerDependencies: 852 | - supports-color 853 | dev: true 854 | 855 | /@typescript-eslint/scope-manager/5.7.0: 856 | resolution: {integrity: sha512-7mxR520DGq5F7sSSgM0HSSMJ+TFUymOeFRMfUfGFAVBv8BR+Jv1vHgAouYUvWRZeszVBJlLcc9fDdktxb5kmxA==} 857 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 858 | dependencies: 859 | '@typescript-eslint/types': 5.7.0 860 | '@typescript-eslint/visitor-keys': 5.7.0 861 | dev: true 862 | 863 | /@typescript-eslint/types/5.7.0: 864 | resolution: {integrity: sha512-5AeYIF5p2kAneIpnLFve8g50VyAjq7udM7ApZZ9JYjdPjkz0LvODfuSHIDUVnIuUoxafoWzpFyU7Sqbxgi79mA==} 865 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 866 | dev: true 867 | 868 | /@typescript-eslint/typescript-estree/5.7.0_typescript@4.5.4: 869 | resolution: {integrity: sha512-aO1Ql+izMrTnPj5aFFlEJkpD4jRqC4Gwhygu2oHK2wfVQpmOPbyDSveJ+r/NQo+PWV43M6uEAeLVbTi09dFLhg==} 870 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 871 | peerDependencies: 872 | typescript: '*' 873 | peerDependenciesMeta: 874 | typescript: 875 | optional: true 876 | dependencies: 877 | '@typescript-eslint/types': 5.7.0 878 | '@typescript-eslint/visitor-keys': 5.7.0 879 | debug: 4.3.3 880 | globby: 11.0.4 881 | is-glob: 4.0.3 882 | semver: 7.3.5 883 | tsutils: 3.21.0_typescript@4.5.4 884 | typescript: 4.5.4 885 | transitivePeerDependencies: 886 | - supports-color 887 | dev: true 888 | 889 | /@typescript-eslint/visitor-keys/5.7.0: 890 | resolution: {integrity: sha512-hdohahZ4lTFcglZSJ3DGdzxQHBSxsLVqHzkiOmKi7xVAWC4y2c1bIMKmPJSrA4aOEoRUPOKQ87Y/taC7yVHpFg==} 891 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 892 | dependencies: 893 | '@typescript-eslint/types': 5.7.0 894 | eslint-visitor-keys: 3.1.0 895 | dev: true 896 | 897 | /acorn-jsx/5.3.2_acorn@8.6.0: 898 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 899 | peerDependencies: 900 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 901 | dependencies: 902 | acorn: 8.6.0 903 | dev: true 904 | 905 | /acorn/8.6.0: 906 | resolution: {integrity: sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==} 907 | engines: {node: '>=0.4.0'} 908 | hasBin: true 909 | dev: true 910 | 911 | /ajv/6.12.6: 912 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 913 | dependencies: 914 | fast-deep-equal: 3.1.3 915 | fast-json-stable-stringify: 2.1.0 916 | json-schema-traverse: 0.4.1 917 | uri-js: 4.4.1 918 | dev: true 919 | 920 | /ansi-colors/4.1.1: 921 | resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} 922 | engines: {node: '>=6'} 923 | dev: true 924 | 925 | /ansi-regex/5.0.1: 926 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 927 | engines: {node: '>=8'} 928 | dev: true 929 | 930 | /ansi-styles/3.2.1: 931 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 932 | engines: {node: '>=4'} 933 | dependencies: 934 | color-convert: 1.9.3 935 | dev: true 936 | 937 | /ansi-styles/4.3.0: 938 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 939 | engines: {node: '>=8'} 940 | dependencies: 941 | color-convert: 2.0.1 942 | dev: true 943 | 944 | /argparse/1.0.10: 945 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 946 | dependencies: 947 | sprintf-js: 1.0.3 948 | dev: true 949 | 950 | /argparse/2.0.1: 951 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 952 | dev: true 953 | 954 | /array-includes/3.1.4: 955 | resolution: {integrity: sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==} 956 | engines: {node: '>= 0.4'} 957 | dependencies: 958 | call-bind: 1.0.2 959 | define-properties: 1.1.3 960 | es-abstract: 1.19.1 961 | get-intrinsic: 1.1.1 962 | is-string: 1.0.7 963 | dev: true 964 | 965 | /array-union/2.1.0: 966 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 967 | engines: {node: '>=8'} 968 | dev: true 969 | 970 | /array.prototype.flatmap/1.2.5: 971 | resolution: {integrity: sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==} 972 | engines: {node: '>= 0.4'} 973 | dependencies: 974 | call-bind: 1.0.2 975 | define-properties: 1.1.3 976 | es-abstract: 1.19.1 977 | dev: true 978 | 979 | /arrify/1.0.1: 980 | resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} 981 | engines: {node: '>=0.10.0'} 982 | dev: true 983 | 984 | /balanced-match/1.0.2: 985 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 986 | dev: true 987 | 988 | /better-path-resolve/1.0.0: 989 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 990 | engines: {node: '>=4'} 991 | dependencies: 992 | is-windows: 1.0.2 993 | dev: true 994 | 995 | /brace-expansion/1.1.11: 996 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 997 | dependencies: 998 | balanced-match: 1.0.2 999 | concat-map: 0.0.1 1000 | dev: true 1001 | 1002 | /braces/3.0.2: 1003 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1004 | engines: {node: '>=8'} 1005 | dependencies: 1006 | fill-range: 7.0.1 1007 | dev: true 1008 | 1009 | /breakword/1.0.5: 1010 | resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} 1011 | dependencies: 1012 | wcwidth: 1.0.1 1013 | dev: true 1014 | 1015 | /browserslist/4.19.1: 1016 | resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} 1017 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1018 | hasBin: true 1019 | dependencies: 1020 | caniuse-lite: 1.0.30001291 1021 | electron-to-chromium: 1.4.24 1022 | escalade: 3.1.1 1023 | node-releases: 2.0.1 1024 | picocolors: 1.0.0 1025 | dev: true 1026 | 1027 | /call-bind/1.0.2: 1028 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 1029 | dependencies: 1030 | function-bind: 1.1.1 1031 | get-intrinsic: 1.1.1 1032 | dev: true 1033 | 1034 | /callsites/3.1.0: 1035 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1036 | engines: {node: '>=6'} 1037 | dev: true 1038 | 1039 | /camelcase-keys/6.2.2: 1040 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} 1041 | engines: {node: '>=8'} 1042 | dependencies: 1043 | camelcase: 5.3.1 1044 | map-obj: 4.3.0 1045 | quick-lru: 4.0.1 1046 | dev: true 1047 | 1048 | /camelcase/5.3.1: 1049 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 1050 | engines: {node: '>=6'} 1051 | dev: true 1052 | 1053 | /caniuse-lite/1.0.30001291: 1054 | resolution: {integrity: sha512-roMV5V0HNGgJ88s42eE70sstqGW/gwFndosYrikHthw98N5tLnOTxFqMLQjZVRxTWFlJ4rn+MsgXrR7MDPY4jA==} 1055 | dev: true 1056 | 1057 | /chalk/2.4.2: 1058 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1059 | engines: {node: '>=4'} 1060 | dependencies: 1061 | ansi-styles: 3.2.1 1062 | escape-string-regexp: 1.0.5 1063 | supports-color: 5.5.0 1064 | dev: true 1065 | 1066 | /chalk/3.0.0: 1067 | resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} 1068 | engines: {node: '>=8'} 1069 | dependencies: 1070 | ansi-styles: 4.3.0 1071 | supports-color: 7.2.0 1072 | dev: true 1073 | 1074 | /chalk/4.1.2: 1075 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1076 | engines: {node: '>=10'} 1077 | dependencies: 1078 | ansi-styles: 4.3.0 1079 | supports-color: 7.2.0 1080 | dev: true 1081 | 1082 | /chardet/0.7.0: 1083 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 1084 | dev: true 1085 | 1086 | /ci-info/3.3.0: 1087 | resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} 1088 | dev: true 1089 | 1090 | /cliui/6.0.0: 1091 | resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} 1092 | dependencies: 1093 | string-width: 4.2.3 1094 | strip-ansi: 6.0.1 1095 | wrap-ansi: 6.2.0 1096 | dev: true 1097 | 1098 | /clone/1.0.4: 1099 | resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} 1100 | engines: {node: '>=0.8'} 1101 | dev: true 1102 | 1103 | /color-convert/1.9.3: 1104 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1105 | dependencies: 1106 | color-name: 1.1.3 1107 | dev: true 1108 | 1109 | /color-convert/2.0.1: 1110 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1111 | engines: {node: '>=7.0.0'} 1112 | dependencies: 1113 | color-name: 1.1.4 1114 | dev: true 1115 | 1116 | /color-name/1.1.3: 1117 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 1118 | dev: true 1119 | 1120 | /color-name/1.1.4: 1121 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1122 | dev: true 1123 | 1124 | /commander/7.2.0: 1125 | resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} 1126 | engines: {node: '>= 10'} 1127 | dev: true 1128 | 1129 | /concat-map/0.0.1: 1130 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1131 | dev: true 1132 | 1133 | /convert-source-map/1.8.0: 1134 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1135 | dependencies: 1136 | safe-buffer: 5.1.2 1137 | dev: true 1138 | 1139 | /cross-spawn/5.1.0: 1140 | resolution: {integrity: sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=} 1141 | dependencies: 1142 | lru-cache: 4.1.5 1143 | shebang-command: 1.2.0 1144 | which: 1.3.1 1145 | dev: true 1146 | 1147 | /cross-spawn/7.0.3: 1148 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1149 | engines: {node: '>= 8'} 1150 | dependencies: 1151 | path-key: 3.1.1 1152 | shebang-command: 2.0.0 1153 | which: 2.0.2 1154 | dev: true 1155 | 1156 | /csstype/3.0.10: 1157 | resolution: {integrity: sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==} 1158 | dev: true 1159 | 1160 | /csv-generate/3.4.3: 1161 | resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} 1162 | dev: true 1163 | 1164 | /csv-parse/4.16.3: 1165 | resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} 1166 | dev: true 1167 | 1168 | /csv-stringify/5.6.5: 1169 | resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} 1170 | dev: true 1171 | 1172 | /csv/5.5.3: 1173 | resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} 1174 | engines: {node: '>= 0.1.90'} 1175 | dependencies: 1176 | csv-generate: 3.4.3 1177 | csv-parse: 4.16.3 1178 | csv-stringify: 5.6.5 1179 | stream-transform: 2.1.3 1180 | dev: true 1181 | 1182 | /dataloader/1.4.0: 1183 | resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} 1184 | dev: true 1185 | 1186 | /debug/4.3.3: 1187 | resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} 1188 | engines: {node: '>=6.0'} 1189 | peerDependencies: 1190 | supports-color: '*' 1191 | peerDependenciesMeta: 1192 | supports-color: 1193 | optional: true 1194 | dependencies: 1195 | ms: 2.1.2 1196 | dev: true 1197 | 1198 | /decamelize-keys/1.1.0: 1199 | resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=} 1200 | engines: {node: '>=0.10.0'} 1201 | dependencies: 1202 | decamelize: 1.2.0 1203 | map-obj: 1.0.1 1204 | dev: true 1205 | 1206 | /decamelize/1.2.0: 1207 | resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} 1208 | engines: {node: '>=0.10.0'} 1209 | dev: true 1210 | 1211 | /deep-is/0.1.4: 1212 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1213 | dev: true 1214 | 1215 | /defaults/1.0.3: 1216 | resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=} 1217 | dependencies: 1218 | clone: 1.0.4 1219 | dev: true 1220 | 1221 | /define-properties/1.1.3: 1222 | resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} 1223 | engines: {node: '>= 0.4'} 1224 | dependencies: 1225 | object-keys: 1.1.1 1226 | dev: true 1227 | 1228 | /detect-indent/6.1.0: 1229 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 1230 | engines: {node: '>=8'} 1231 | dev: true 1232 | 1233 | /dir-glob/3.0.1: 1234 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1235 | engines: {node: '>=8'} 1236 | dependencies: 1237 | path-type: 4.0.0 1238 | dev: true 1239 | 1240 | /doctrine/2.1.0: 1241 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1242 | engines: {node: '>=0.10.0'} 1243 | dependencies: 1244 | esutils: 2.0.3 1245 | dev: true 1246 | 1247 | /doctrine/3.0.0: 1248 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1249 | engines: {node: '>=6.0.0'} 1250 | dependencies: 1251 | esutils: 2.0.3 1252 | dev: true 1253 | 1254 | /dotenv/8.6.0: 1255 | resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} 1256 | engines: {node: '>=10'} 1257 | dev: true 1258 | 1259 | /electron-to-chromium/1.4.24: 1260 | resolution: {integrity: sha512-erwx5r69B/WFfFuF2jcNN0817BfDBdC4765kQ6WltOMuwsimlQo3JTEq0Cle+wpHralwdeX3OfAtw/mHxPK0Wg==} 1261 | dev: true 1262 | 1263 | /emoji-regex/8.0.0: 1264 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1265 | dev: true 1266 | 1267 | /enquirer/2.3.6: 1268 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 1269 | engines: {node: '>=8.6'} 1270 | dependencies: 1271 | ansi-colors: 4.1.1 1272 | dev: true 1273 | 1274 | /error-ex/1.3.2: 1275 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1276 | dependencies: 1277 | is-arrayish: 0.2.1 1278 | dev: true 1279 | 1280 | /es-abstract/1.19.1: 1281 | resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} 1282 | engines: {node: '>= 0.4'} 1283 | dependencies: 1284 | call-bind: 1.0.2 1285 | es-to-primitive: 1.2.1 1286 | function-bind: 1.1.1 1287 | get-intrinsic: 1.1.1 1288 | get-symbol-description: 1.0.0 1289 | has: 1.0.3 1290 | has-symbols: 1.0.2 1291 | internal-slot: 1.0.3 1292 | is-callable: 1.2.4 1293 | is-negative-zero: 2.0.2 1294 | is-regex: 1.1.4 1295 | is-shared-array-buffer: 1.0.1 1296 | is-string: 1.0.7 1297 | is-weakref: 1.0.2 1298 | object-inspect: 1.12.0 1299 | object-keys: 1.1.1 1300 | object.assign: 4.1.2 1301 | string.prototype.trimend: 1.0.4 1302 | string.prototype.trimstart: 1.0.4 1303 | unbox-primitive: 1.0.1 1304 | dev: true 1305 | 1306 | /es-to-primitive/1.2.1: 1307 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1308 | engines: {node: '>= 0.4'} 1309 | dependencies: 1310 | is-callable: 1.2.4 1311 | is-date-object: 1.0.5 1312 | is-symbol: 1.0.4 1313 | dev: true 1314 | 1315 | /escalade/3.1.1: 1316 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1317 | engines: {node: '>=6'} 1318 | dev: true 1319 | 1320 | /escape-string-regexp/1.0.5: 1321 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 1322 | engines: {node: '>=0.8.0'} 1323 | dev: true 1324 | 1325 | /escape-string-regexp/4.0.0: 1326 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1327 | engines: {node: '>=10'} 1328 | dev: true 1329 | 1330 | /eslint-plugin-react-hooks/4.3.0_eslint@8.5.0: 1331 | resolution: {integrity: sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==} 1332 | engines: {node: '>=10'} 1333 | peerDependencies: 1334 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1335 | dependencies: 1336 | eslint: 8.5.0 1337 | dev: true 1338 | 1339 | /eslint-plugin-react/7.27.1_eslint@8.5.0: 1340 | resolution: {integrity: sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==} 1341 | engines: {node: '>=4'} 1342 | peerDependencies: 1343 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1344 | dependencies: 1345 | array-includes: 3.1.4 1346 | array.prototype.flatmap: 1.2.5 1347 | doctrine: 2.1.0 1348 | eslint: 8.5.0 1349 | estraverse: 5.3.0 1350 | jsx-ast-utils: 3.2.1 1351 | minimatch: 3.0.4 1352 | object.entries: 1.1.5 1353 | object.fromentries: 2.0.5 1354 | object.hasown: 1.1.0 1355 | object.values: 1.1.5 1356 | prop-types: 15.7.2 1357 | resolve: 2.0.0-next.3 1358 | semver: 6.3.0 1359 | string.prototype.matchall: 4.0.6 1360 | dev: true 1361 | 1362 | /eslint-scope/5.1.1: 1363 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1364 | engines: {node: '>=8.0.0'} 1365 | dependencies: 1366 | esrecurse: 4.3.0 1367 | estraverse: 4.3.0 1368 | dev: true 1369 | 1370 | /eslint-scope/7.1.0: 1371 | resolution: {integrity: sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==} 1372 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1373 | dependencies: 1374 | esrecurse: 4.3.0 1375 | estraverse: 5.3.0 1376 | dev: true 1377 | 1378 | /eslint-utils/3.0.0_eslint@8.5.0: 1379 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1380 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1381 | peerDependencies: 1382 | eslint: '>=5' 1383 | dependencies: 1384 | eslint: 8.5.0 1385 | eslint-visitor-keys: 2.1.0 1386 | dev: true 1387 | 1388 | /eslint-visitor-keys/2.1.0: 1389 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1390 | engines: {node: '>=10'} 1391 | dev: true 1392 | 1393 | /eslint-visitor-keys/3.1.0: 1394 | resolution: {integrity: sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==} 1395 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1396 | dev: true 1397 | 1398 | /eslint/8.5.0: 1399 | resolution: {integrity: sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg==} 1400 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1401 | hasBin: true 1402 | dependencies: 1403 | '@eslint/eslintrc': 1.0.5 1404 | '@humanwhocodes/config-array': 0.9.2 1405 | ajv: 6.12.6 1406 | chalk: 4.1.2 1407 | cross-spawn: 7.0.3 1408 | debug: 4.3.3 1409 | doctrine: 3.0.0 1410 | enquirer: 2.3.6 1411 | escape-string-regexp: 4.0.0 1412 | eslint-scope: 7.1.0 1413 | eslint-utils: 3.0.0_eslint@8.5.0 1414 | eslint-visitor-keys: 3.1.0 1415 | espree: 9.2.0 1416 | esquery: 1.4.0 1417 | esutils: 2.0.3 1418 | fast-deep-equal: 3.1.3 1419 | file-entry-cache: 6.0.1 1420 | functional-red-black-tree: 1.0.1 1421 | glob-parent: 6.0.2 1422 | globals: 13.12.0 1423 | ignore: 4.0.6 1424 | import-fresh: 3.3.0 1425 | imurmurhash: 0.1.4 1426 | is-glob: 4.0.3 1427 | js-yaml: 4.1.0 1428 | json-stable-stringify-without-jsonify: 1.0.1 1429 | levn: 0.4.1 1430 | lodash.merge: 4.6.2 1431 | minimatch: 3.0.4 1432 | natural-compare: 1.4.0 1433 | optionator: 0.9.1 1434 | progress: 2.0.3 1435 | regexpp: 3.2.0 1436 | semver: 7.3.5 1437 | strip-ansi: 6.0.1 1438 | strip-json-comments: 3.1.1 1439 | text-table: 0.2.0 1440 | v8-compile-cache: 2.3.0 1441 | transitivePeerDependencies: 1442 | - supports-color 1443 | dev: true 1444 | 1445 | /espree/9.2.0: 1446 | resolution: {integrity: sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==} 1447 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1448 | dependencies: 1449 | acorn: 8.6.0 1450 | acorn-jsx: 5.3.2_acorn@8.6.0 1451 | eslint-visitor-keys: 3.1.0 1452 | dev: true 1453 | 1454 | /esprima/4.0.1: 1455 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1456 | engines: {node: '>=4'} 1457 | hasBin: true 1458 | dev: true 1459 | 1460 | /esquery/1.4.0: 1461 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1462 | engines: {node: '>=0.10'} 1463 | dependencies: 1464 | estraverse: 5.3.0 1465 | dev: true 1466 | 1467 | /esrecurse/4.3.0: 1468 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1469 | engines: {node: '>=4.0'} 1470 | dependencies: 1471 | estraverse: 5.3.0 1472 | dev: true 1473 | 1474 | /estraverse/4.3.0: 1475 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1476 | engines: {node: '>=4.0'} 1477 | dev: true 1478 | 1479 | /estraverse/5.3.0: 1480 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1481 | engines: {node: '>=4.0'} 1482 | dev: true 1483 | 1484 | /esutils/2.0.3: 1485 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1486 | engines: {node: '>=0.10.0'} 1487 | dev: true 1488 | 1489 | /extendable-error/0.1.7: 1490 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 1491 | dev: true 1492 | 1493 | /external-editor/3.1.0: 1494 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 1495 | engines: {node: '>=4'} 1496 | dependencies: 1497 | chardet: 0.7.0 1498 | iconv-lite: 0.4.24 1499 | tmp: 0.0.33 1500 | dev: true 1501 | 1502 | /fast-deep-equal/3.1.3: 1503 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1504 | dev: true 1505 | 1506 | /fast-glob/3.2.7: 1507 | resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} 1508 | engines: {node: '>=8'} 1509 | dependencies: 1510 | '@nodelib/fs.stat': 2.0.5 1511 | '@nodelib/fs.walk': 1.2.8 1512 | glob-parent: 5.1.2 1513 | merge2: 1.4.1 1514 | micromatch: 4.0.4 1515 | dev: true 1516 | 1517 | /fast-json-stable-stringify/2.1.0: 1518 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1519 | dev: true 1520 | 1521 | /fast-levenshtein/2.0.6: 1522 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 1523 | dev: true 1524 | 1525 | /fastq/1.13.0: 1526 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1527 | dependencies: 1528 | reusify: 1.0.4 1529 | dev: true 1530 | 1531 | /file-entry-cache/6.0.1: 1532 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1533 | engines: {node: ^10.12.0 || >=12.0.0} 1534 | dependencies: 1535 | flat-cache: 3.0.4 1536 | dev: true 1537 | 1538 | /fill-range/7.0.1: 1539 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1540 | engines: {node: '>=8'} 1541 | dependencies: 1542 | to-regex-range: 5.0.1 1543 | dev: true 1544 | 1545 | /find-up/4.1.0: 1546 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1547 | engines: {node: '>=8'} 1548 | dependencies: 1549 | locate-path: 5.0.0 1550 | path-exists: 4.0.0 1551 | dev: true 1552 | 1553 | /find-up/5.0.0: 1554 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1555 | engines: {node: '>=10'} 1556 | dependencies: 1557 | locate-path: 6.0.0 1558 | path-exists: 4.0.0 1559 | dev: true 1560 | 1561 | /find-yarn-workspace-root2/1.2.16: 1562 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} 1563 | dependencies: 1564 | micromatch: 4.0.4 1565 | pkg-dir: 4.2.0 1566 | dev: true 1567 | 1568 | /flat-cache/3.0.4: 1569 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1570 | engines: {node: ^10.12.0 || >=12.0.0} 1571 | dependencies: 1572 | flatted: 3.2.4 1573 | rimraf: 3.0.2 1574 | dev: true 1575 | 1576 | /flatted/3.2.4: 1577 | resolution: {integrity: sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==} 1578 | dev: true 1579 | 1580 | /fs-extra/7.0.1: 1581 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 1582 | engines: {node: '>=6 <7 || >=8'} 1583 | dependencies: 1584 | graceful-fs: 4.2.8 1585 | jsonfile: 4.0.0 1586 | universalify: 0.1.2 1587 | dev: true 1588 | 1589 | /fs-extra/8.1.0: 1590 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 1591 | engines: {node: '>=6 <7 || >=8'} 1592 | dependencies: 1593 | graceful-fs: 4.2.8 1594 | jsonfile: 4.0.0 1595 | universalify: 0.1.2 1596 | dev: true 1597 | 1598 | /fs.realpath/1.0.0: 1599 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1600 | dev: true 1601 | 1602 | /function-bind/1.1.1: 1603 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1604 | dev: true 1605 | 1606 | /functional-red-black-tree/1.0.1: 1607 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} 1608 | dev: true 1609 | 1610 | /gensync/1.0.0-beta.2: 1611 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1612 | engines: {node: '>=6.9.0'} 1613 | dev: true 1614 | 1615 | /get-caller-file/2.0.5: 1616 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1617 | engines: {node: 6.* || 8.* || >= 10.*} 1618 | dev: true 1619 | 1620 | /get-intrinsic/1.1.1: 1621 | resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} 1622 | dependencies: 1623 | function-bind: 1.1.1 1624 | has: 1.0.3 1625 | has-symbols: 1.0.2 1626 | dev: true 1627 | 1628 | /get-symbol-description/1.0.0: 1629 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1630 | engines: {node: '>= 0.4'} 1631 | dependencies: 1632 | call-bind: 1.0.2 1633 | get-intrinsic: 1.1.1 1634 | dev: true 1635 | 1636 | /glob-parent/5.1.2: 1637 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1638 | engines: {node: '>= 6'} 1639 | dependencies: 1640 | is-glob: 4.0.3 1641 | dev: true 1642 | 1643 | /glob-parent/6.0.2: 1644 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1645 | engines: {node: '>=10.13.0'} 1646 | dependencies: 1647 | is-glob: 4.0.3 1648 | dev: true 1649 | 1650 | /glob/7.2.0: 1651 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 1652 | dependencies: 1653 | fs.realpath: 1.0.0 1654 | inflight: 1.0.6 1655 | inherits: 2.0.4 1656 | minimatch: 3.0.4 1657 | once: 1.4.0 1658 | path-is-absolute: 1.0.1 1659 | dev: true 1660 | 1661 | /globals/11.12.0: 1662 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1663 | engines: {node: '>=4'} 1664 | dev: true 1665 | 1666 | /globals/13.12.0: 1667 | resolution: {integrity: sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==} 1668 | engines: {node: '>=8'} 1669 | dependencies: 1670 | type-fest: 0.20.2 1671 | dev: true 1672 | 1673 | /globby/11.0.4: 1674 | resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} 1675 | engines: {node: '>=10'} 1676 | dependencies: 1677 | array-union: 2.1.0 1678 | dir-glob: 3.0.1 1679 | fast-glob: 3.2.7 1680 | ignore: 5.1.9 1681 | merge2: 1.4.1 1682 | slash: 3.0.0 1683 | dev: true 1684 | 1685 | /graceful-fs/4.2.8: 1686 | resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} 1687 | dev: true 1688 | 1689 | /graceful-fs/4.2.9: 1690 | resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} 1691 | dev: true 1692 | 1693 | /grapheme-splitter/1.0.4: 1694 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1695 | dev: true 1696 | 1697 | /hard-rejection/2.1.0: 1698 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} 1699 | engines: {node: '>=6'} 1700 | dev: true 1701 | 1702 | /has-bigints/1.0.1: 1703 | resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} 1704 | dev: true 1705 | 1706 | /has-flag/3.0.0: 1707 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 1708 | engines: {node: '>=4'} 1709 | dev: true 1710 | 1711 | /has-flag/4.0.0: 1712 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1713 | engines: {node: '>=8'} 1714 | dev: true 1715 | 1716 | /has-symbols/1.0.2: 1717 | resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} 1718 | engines: {node: '>= 0.4'} 1719 | dev: true 1720 | 1721 | /has-tostringtag/1.0.0: 1722 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1723 | engines: {node: '>= 0.4'} 1724 | dependencies: 1725 | has-symbols: 1.0.2 1726 | dev: true 1727 | 1728 | /has/1.0.3: 1729 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1730 | engines: {node: '>= 0.4.0'} 1731 | dependencies: 1732 | function-bind: 1.1.1 1733 | dev: true 1734 | 1735 | /hosted-git-info/2.8.9: 1736 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 1737 | dev: true 1738 | 1739 | /human-id/1.0.2: 1740 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} 1741 | dev: true 1742 | 1743 | /husky/7.0.4: 1744 | resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} 1745 | engines: {node: '>=12'} 1746 | hasBin: true 1747 | dev: true 1748 | 1749 | /iconv-lite/0.4.24: 1750 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1751 | engines: {node: '>=0.10.0'} 1752 | dependencies: 1753 | safer-buffer: 2.1.2 1754 | dev: true 1755 | 1756 | /ignore/4.0.6: 1757 | resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} 1758 | engines: {node: '>= 4'} 1759 | dev: true 1760 | 1761 | /ignore/5.1.9: 1762 | resolution: {integrity: sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==} 1763 | engines: {node: '>= 4'} 1764 | dev: true 1765 | 1766 | /import-fresh/3.3.0: 1767 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1768 | engines: {node: '>=6'} 1769 | dependencies: 1770 | parent-module: 1.0.1 1771 | resolve-from: 4.0.0 1772 | dev: true 1773 | 1774 | /imurmurhash/0.1.4: 1775 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 1776 | engines: {node: '>=0.8.19'} 1777 | dev: true 1778 | 1779 | /indent-string/4.0.0: 1780 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1781 | engines: {node: '>=8'} 1782 | dev: true 1783 | 1784 | /inflight/1.0.6: 1785 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1786 | dependencies: 1787 | once: 1.4.0 1788 | wrappy: 1.0.2 1789 | dev: true 1790 | 1791 | /inherits/2.0.4: 1792 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1793 | dev: true 1794 | 1795 | /internal-slot/1.0.3: 1796 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 1797 | engines: {node: '>= 0.4'} 1798 | dependencies: 1799 | get-intrinsic: 1.1.1 1800 | has: 1.0.3 1801 | side-channel: 1.0.4 1802 | dev: true 1803 | 1804 | /is-arrayish/0.2.1: 1805 | resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} 1806 | dev: true 1807 | 1808 | /is-bigint/1.0.4: 1809 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1810 | dependencies: 1811 | has-bigints: 1.0.1 1812 | dev: true 1813 | 1814 | /is-boolean-object/1.1.2: 1815 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1816 | engines: {node: '>= 0.4'} 1817 | dependencies: 1818 | call-bind: 1.0.2 1819 | has-tostringtag: 1.0.0 1820 | dev: true 1821 | 1822 | /is-callable/1.2.4: 1823 | resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} 1824 | engines: {node: '>= 0.4'} 1825 | dev: true 1826 | 1827 | /is-ci/3.0.1: 1828 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} 1829 | hasBin: true 1830 | dependencies: 1831 | ci-info: 3.3.0 1832 | dev: true 1833 | 1834 | /is-core-module/2.8.0: 1835 | resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} 1836 | dependencies: 1837 | has: 1.0.3 1838 | dev: true 1839 | 1840 | /is-date-object/1.0.5: 1841 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1842 | engines: {node: '>= 0.4'} 1843 | dependencies: 1844 | has-tostringtag: 1.0.0 1845 | dev: true 1846 | 1847 | /is-extglob/2.1.1: 1848 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 1849 | engines: {node: '>=0.10.0'} 1850 | dev: true 1851 | 1852 | /is-fullwidth-code-point/3.0.0: 1853 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1854 | engines: {node: '>=8'} 1855 | dev: true 1856 | 1857 | /is-glob/4.0.3: 1858 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1859 | engines: {node: '>=0.10.0'} 1860 | dependencies: 1861 | is-extglob: 2.1.1 1862 | dev: true 1863 | 1864 | /is-negative-zero/2.0.2: 1865 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1866 | engines: {node: '>= 0.4'} 1867 | dev: true 1868 | 1869 | /is-number-object/1.0.6: 1870 | resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} 1871 | engines: {node: '>= 0.4'} 1872 | dependencies: 1873 | has-tostringtag: 1.0.0 1874 | dev: true 1875 | 1876 | /is-number/7.0.0: 1877 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1878 | engines: {node: '>=0.12.0'} 1879 | dev: true 1880 | 1881 | /is-plain-obj/1.1.0: 1882 | resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} 1883 | engines: {node: '>=0.10.0'} 1884 | dev: true 1885 | 1886 | /is-regex/1.1.4: 1887 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1888 | engines: {node: '>= 0.4'} 1889 | dependencies: 1890 | call-bind: 1.0.2 1891 | has-tostringtag: 1.0.0 1892 | dev: true 1893 | 1894 | /is-shared-array-buffer/1.0.1: 1895 | resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} 1896 | dev: true 1897 | 1898 | /is-string/1.0.7: 1899 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1900 | engines: {node: '>= 0.4'} 1901 | dependencies: 1902 | has-tostringtag: 1.0.0 1903 | dev: true 1904 | 1905 | /is-subdir/1.2.0: 1906 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 1907 | engines: {node: '>=4'} 1908 | dependencies: 1909 | better-path-resolve: 1.0.0 1910 | dev: true 1911 | 1912 | /is-symbol/1.0.4: 1913 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1914 | engines: {node: '>= 0.4'} 1915 | dependencies: 1916 | has-symbols: 1.0.2 1917 | dev: true 1918 | 1919 | /is-weakref/1.0.2: 1920 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1921 | dependencies: 1922 | call-bind: 1.0.2 1923 | dev: true 1924 | 1925 | /is-windows/1.0.2: 1926 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1927 | engines: {node: '>=0.10.0'} 1928 | dev: true 1929 | 1930 | /isexe/2.0.0: 1931 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 1932 | dev: true 1933 | 1934 | /javascript-natural-sort/0.7.1: 1935 | resolution: {integrity: sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=} 1936 | dev: true 1937 | 1938 | /js-tokens/4.0.0: 1939 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1940 | dev: true 1941 | 1942 | /js-yaml/3.14.1: 1943 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1944 | hasBin: true 1945 | dependencies: 1946 | argparse: 1.0.10 1947 | esprima: 4.0.1 1948 | dev: true 1949 | 1950 | /js-yaml/4.1.0: 1951 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1952 | hasBin: true 1953 | dependencies: 1954 | argparse: 2.0.1 1955 | dev: true 1956 | 1957 | /jsesc/2.5.2: 1958 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1959 | engines: {node: '>=4'} 1960 | hasBin: true 1961 | dev: true 1962 | 1963 | /json-parse-even-better-errors/2.3.1: 1964 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1965 | dev: true 1966 | 1967 | /json-schema-traverse/0.4.1: 1968 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1969 | dev: true 1970 | 1971 | /json-stable-stringify-without-jsonify/1.0.1: 1972 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} 1973 | dev: true 1974 | 1975 | /json5/2.2.0: 1976 | resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} 1977 | engines: {node: '>=6'} 1978 | hasBin: true 1979 | dependencies: 1980 | minimist: 1.2.5 1981 | dev: true 1982 | 1983 | /jsonfile/4.0.0: 1984 | resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=} 1985 | optionalDependencies: 1986 | graceful-fs: 4.2.9 1987 | dev: true 1988 | 1989 | /jsx-ast-utils/3.2.1: 1990 | resolution: {integrity: sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==} 1991 | engines: {node: '>=4.0'} 1992 | dependencies: 1993 | array-includes: 3.1.4 1994 | object.assign: 4.1.2 1995 | dev: true 1996 | 1997 | /kind-of/6.0.3: 1998 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 1999 | engines: {node: '>=0.10.0'} 2000 | dev: true 2001 | 2002 | /levn/0.4.1: 2003 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2004 | engines: {node: '>= 0.8.0'} 2005 | dependencies: 2006 | prelude-ls: 1.2.1 2007 | type-check: 0.4.0 2008 | dev: true 2009 | 2010 | /lines-and-columns/1.2.4: 2011 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2012 | dev: true 2013 | 2014 | /load-yaml-file/0.2.0: 2015 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} 2016 | engines: {node: '>=6'} 2017 | dependencies: 2018 | graceful-fs: 4.2.9 2019 | js-yaml: 3.14.1 2020 | pify: 4.0.1 2021 | strip-bom: 3.0.0 2022 | dev: true 2023 | 2024 | /locate-path/5.0.0: 2025 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2026 | engines: {node: '>=8'} 2027 | dependencies: 2028 | p-locate: 4.1.0 2029 | dev: true 2030 | 2031 | /locate-path/6.0.0: 2032 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2033 | engines: {node: '>=10'} 2034 | dependencies: 2035 | p-locate: 5.0.0 2036 | dev: true 2037 | 2038 | /lodash.merge/4.6.2: 2039 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2040 | dev: true 2041 | 2042 | /lodash.startcase/4.4.0: 2043 | resolution: {integrity: sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg=} 2044 | dev: true 2045 | 2046 | /lodash/4.17.21: 2047 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2048 | dev: true 2049 | 2050 | /loose-envify/1.4.0: 2051 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2052 | hasBin: true 2053 | dependencies: 2054 | js-tokens: 4.0.0 2055 | dev: true 2056 | 2057 | /lru-cache/4.1.5: 2058 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 2059 | dependencies: 2060 | pseudomap: 1.0.2 2061 | yallist: 2.1.2 2062 | dev: true 2063 | 2064 | /lru-cache/6.0.0: 2065 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2066 | engines: {node: '>=10'} 2067 | dependencies: 2068 | yallist: 4.0.0 2069 | dev: true 2070 | 2071 | /map-obj/1.0.1: 2072 | resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} 2073 | engines: {node: '>=0.10.0'} 2074 | dev: true 2075 | 2076 | /map-obj/4.3.0: 2077 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} 2078 | engines: {node: '>=8'} 2079 | dev: true 2080 | 2081 | /meow/6.1.1: 2082 | resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} 2083 | engines: {node: '>=8'} 2084 | dependencies: 2085 | '@types/minimist': 1.2.2 2086 | camelcase-keys: 6.2.2 2087 | decamelize-keys: 1.1.0 2088 | hard-rejection: 2.1.0 2089 | minimist-options: 4.1.0 2090 | normalize-package-data: 2.5.0 2091 | read-pkg-up: 7.0.1 2092 | redent: 3.0.0 2093 | trim-newlines: 3.0.1 2094 | type-fest: 0.13.1 2095 | yargs-parser: 18.1.3 2096 | dev: true 2097 | 2098 | /merge2/1.4.1: 2099 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2100 | engines: {node: '>= 8'} 2101 | dev: true 2102 | 2103 | /micromatch/4.0.4: 2104 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} 2105 | engines: {node: '>=8.6'} 2106 | dependencies: 2107 | braces: 3.0.2 2108 | picomatch: 2.3.0 2109 | dev: true 2110 | 2111 | /min-indent/1.0.1: 2112 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 2113 | engines: {node: '>=4'} 2114 | dev: true 2115 | 2116 | /minimatch/3.0.4: 2117 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} 2118 | dependencies: 2119 | brace-expansion: 1.1.11 2120 | dev: true 2121 | 2122 | /minimist-options/4.1.0: 2123 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} 2124 | engines: {node: '>= 6'} 2125 | dependencies: 2126 | arrify: 1.0.1 2127 | is-plain-obj: 1.1.0 2128 | kind-of: 6.0.3 2129 | dev: true 2130 | 2131 | /minimist/1.2.5: 2132 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} 2133 | dev: true 2134 | 2135 | /mixme/0.5.4: 2136 | resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} 2137 | engines: {node: '>= 8.0.0'} 2138 | dev: true 2139 | 2140 | /ms/2.1.2: 2141 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2142 | dev: true 2143 | 2144 | /natural-compare/1.4.0: 2145 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 2146 | dev: true 2147 | 2148 | /node-fetch/2.6.1: 2149 | resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==} 2150 | engines: {node: 4.x || >=6.0.0} 2151 | dev: true 2152 | 2153 | /node-releases/2.0.1: 2154 | resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} 2155 | dev: true 2156 | 2157 | /normalize-package-data/2.5.0: 2158 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 2159 | dependencies: 2160 | hosted-git-info: 2.8.9 2161 | resolve: 1.20.0 2162 | semver: 5.7.1 2163 | validate-npm-package-license: 3.0.4 2164 | dev: true 2165 | 2166 | /object-assign/4.1.1: 2167 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} 2168 | engines: {node: '>=0.10.0'} 2169 | dev: true 2170 | 2171 | /object-inspect/1.12.0: 2172 | resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} 2173 | dev: true 2174 | 2175 | /object-keys/1.1.1: 2176 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2177 | engines: {node: '>= 0.4'} 2178 | dev: true 2179 | 2180 | /object.assign/4.1.2: 2181 | resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} 2182 | engines: {node: '>= 0.4'} 2183 | dependencies: 2184 | call-bind: 1.0.2 2185 | define-properties: 1.1.3 2186 | has-symbols: 1.0.2 2187 | object-keys: 1.1.1 2188 | dev: true 2189 | 2190 | /object.entries/1.1.5: 2191 | resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} 2192 | engines: {node: '>= 0.4'} 2193 | dependencies: 2194 | call-bind: 1.0.2 2195 | define-properties: 1.1.3 2196 | es-abstract: 1.19.1 2197 | dev: true 2198 | 2199 | /object.fromentries/2.0.5: 2200 | resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==} 2201 | engines: {node: '>= 0.4'} 2202 | dependencies: 2203 | call-bind: 1.0.2 2204 | define-properties: 1.1.3 2205 | es-abstract: 1.19.1 2206 | dev: true 2207 | 2208 | /object.hasown/1.1.0: 2209 | resolution: {integrity: sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==} 2210 | dependencies: 2211 | define-properties: 1.1.3 2212 | es-abstract: 1.19.1 2213 | dev: true 2214 | 2215 | /object.values/1.1.5: 2216 | resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} 2217 | engines: {node: '>= 0.4'} 2218 | dependencies: 2219 | call-bind: 1.0.2 2220 | define-properties: 1.1.3 2221 | es-abstract: 1.19.1 2222 | dev: true 2223 | 2224 | /once/1.4.0: 2225 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 2226 | dependencies: 2227 | wrappy: 1.0.2 2228 | dev: true 2229 | 2230 | /optionator/0.9.1: 2231 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2232 | engines: {node: '>= 0.8.0'} 2233 | dependencies: 2234 | deep-is: 0.1.4 2235 | fast-levenshtein: 2.0.6 2236 | levn: 0.4.1 2237 | prelude-ls: 1.2.1 2238 | type-check: 0.4.0 2239 | word-wrap: 1.2.3 2240 | dev: true 2241 | 2242 | /os-tmpdir/1.0.2: 2243 | resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=} 2244 | engines: {node: '>=0.10.0'} 2245 | dev: true 2246 | 2247 | /outdent/0.5.0: 2248 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 2249 | dev: true 2250 | 2251 | /p-filter/2.1.0: 2252 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 2253 | engines: {node: '>=8'} 2254 | dependencies: 2255 | p-map: 2.1.0 2256 | dev: true 2257 | 2258 | /p-limit/2.3.0: 2259 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2260 | engines: {node: '>=6'} 2261 | dependencies: 2262 | p-try: 2.2.0 2263 | dev: true 2264 | 2265 | /p-limit/3.1.0: 2266 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2267 | engines: {node: '>=10'} 2268 | dependencies: 2269 | yocto-queue: 0.1.0 2270 | dev: true 2271 | 2272 | /p-locate/4.1.0: 2273 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2274 | engines: {node: '>=8'} 2275 | dependencies: 2276 | p-limit: 2.3.0 2277 | dev: true 2278 | 2279 | /p-locate/5.0.0: 2280 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2281 | engines: {node: '>=10'} 2282 | dependencies: 2283 | p-limit: 3.1.0 2284 | dev: true 2285 | 2286 | /p-map/2.1.0: 2287 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 2288 | engines: {node: '>=6'} 2289 | dev: true 2290 | 2291 | /p-try/2.2.0: 2292 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2293 | engines: {node: '>=6'} 2294 | dev: true 2295 | 2296 | /parent-module/1.0.1: 2297 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2298 | engines: {node: '>=6'} 2299 | dependencies: 2300 | callsites: 3.1.0 2301 | dev: true 2302 | 2303 | /parse-json/5.2.0: 2304 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2305 | engines: {node: '>=8'} 2306 | dependencies: 2307 | '@babel/code-frame': 7.16.7 2308 | error-ex: 1.3.2 2309 | json-parse-even-better-errors: 2.3.1 2310 | lines-and-columns: 1.2.4 2311 | dev: true 2312 | 2313 | /path-exists/4.0.0: 2314 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2315 | engines: {node: '>=8'} 2316 | dev: true 2317 | 2318 | /path-is-absolute/1.0.1: 2319 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 2320 | engines: {node: '>=0.10.0'} 2321 | dev: true 2322 | 2323 | /path-key/3.1.1: 2324 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2325 | engines: {node: '>=8'} 2326 | dev: true 2327 | 2328 | /path-parse/1.0.7: 2329 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2330 | dev: true 2331 | 2332 | /path-type/4.0.0: 2333 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2334 | engines: {node: '>=8'} 2335 | dev: true 2336 | 2337 | /picocolors/1.0.0: 2338 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2339 | dev: true 2340 | 2341 | /picomatch/2.3.0: 2342 | resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} 2343 | engines: {node: '>=8.6'} 2344 | dev: true 2345 | 2346 | /pify/4.0.1: 2347 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 2348 | engines: {node: '>=6'} 2349 | dev: true 2350 | 2351 | /pkg-dir/4.2.0: 2352 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2353 | engines: {node: '>=8'} 2354 | dependencies: 2355 | find-up: 4.1.0 2356 | dev: true 2357 | 2358 | /preferred-pm/3.0.3: 2359 | resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} 2360 | engines: {node: '>=10'} 2361 | dependencies: 2362 | find-up: 5.0.0 2363 | find-yarn-workspace-root2: 1.2.16 2364 | path-exists: 4.0.0 2365 | which-pm: 2.0.0 2366 | dev: true 2367 | 2368 | /prelude-ls/1.2.1: 2369 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2370 | engines: {node: '>= 0.8.0'} 2371 | dev: true 2372 | 2373 | /prettier/1.19.1: 2374 | resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} 2375 | engines: {node: '>=4'} 2376 | hasBin: true 2377 | dev: true 2378 | 2379 | /prettier/2.5.1: 2380 | resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} 2381 | engines: {node: '>=10.13.0'} 2382 | hasBin: true 2383 | dev: true 2384 | 2385 | /progress/2.0.3: 2386 | resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} 2387 | engines: {node: '>=0.4.0'} 2388 | dev: true 2389 | 2390 | /prop-types/15.7.2: 2391 | resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==} 2392 | dependencies: 2393 | loose-envify: 1.4.0 2394 | object-assign: 4.1.1 2395 | react-is: 16.13.1 2396 | dev: true 2397 | 2398 | /pseudomap/1.0.2: 2399 | resolution: {integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM=} 2400 | dev: true 2401 | 2402 | /punycode/2.1.1: 2403 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2404 | engines: {node: '>=6'} 2405 | dev: true 2406 | 2407 | /queue-microtask/1.2.3: 2408 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2409 | dev: true 2410 | 2411 | /quick-lru/4.0.1: 2412 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} 2413 | engines: {node: '>=8'} 2414 | dev: true 2415 | 2416 | /react-is/16.13.1: 2417 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2418 | dev: true 2419 | 2420 | /react/17.0.2: 2421 | resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} 2422 | engines: {node: '>=0.10.0'} 2423 | dependencies: 2424 | loose-envify: 1.4.0 2425 | object-assign: 4.1.1 2426 | dev: true 2427 | 2428 | /read-pkg-up/7.0.1: 2429 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 2430 | engines: {node: '>=8'} 2431 | dependencies: 2432 | find-up: 4.1.0 2433 | read-pkg: 5.2.0 2434 | type-fest: 0.8.1 2435 | dev: true 2436 | 2437 | /read-pkg/5.2.0: 2438 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 2439 | engines: {node: '>=8'} 2440 | dependencies: 2441 | '@types/normalize-package-data': 2.4.1 2442 | normalize-package-data: 2.5.0 2443 | parse-json: 5.2.0 2444 | type-fest: 0.6.0 2445 | dev: true 2446 | 2447 | /read-yaml-file/1.1.0: 2448 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 2449 | engines: {node: '>=6'} 2450 | dependencies: 2451 | graceful-fs: 4.2.8 2452 | js-yaml: 3.14.1 2453 | pify: 4.0.1 2454 | strip-bom: 3.0.0 2455 | dev: true 2456 | 2457 | /redent/3.0.0: 2458 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 2459 | engines: {node: '>=8'} 2460 | dependencies: 2461 | indent-string: 4.0.0 2462 | strip-indent: 3.0.0 2463 | dev: true 2464 | 2465 | /regenerator-runtime/0.13.9: 2466 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 2467 | dev: true 2468 | 2469 | /regexp.prototype.flags/1.3.1: 2470 | resolution: {integrity: sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==} 2471 | engines: {node: '>= 0.4'} 2472 | dependencies: 2473 | call-bind: 1.0.2 2474 | define-properties: 1.1.3 2475 | dev: true 2476 | 2477 | /regexpp/3.2.0: 2478 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 2479 | engines: {node: '>=8'} 2480 | dev: true 2481 | 2482 | /require-directory/2.1.1: 2483 | resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} 2484 | engines: {node: '>=0.10.0'} 2485 | dev: true 2486 | 2487 | /require-main-filename/2.0.0: 2488 | resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} 2489 | dev: true 2490 | 2491 | /resolve-from/4.0.0: 2492 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2493 | engines: {node: '>=4'} 2494 | dev: true 2495 | 2496 | /resolve-from/5.0.0: 2497 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2498 | engines: {node: '>=8'} 2499 | dev: true 2500 | 2501 | /resolve/1.20.0: 2502 | resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} 2503 | dependencies: 2504 | is-core-module: 2.8.0 2505 | path-parse: 1.0.7 2506 | dev: true 2507 | 2508 | /resolve/2.0.0-next.3: 2509 | resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} 2510 | dependencies: 2511 | is-core-module: 2.8.0 2512 | path-parse: 1.0.7 2513 | dev: true 2514 | 2515 | /reusify/1.0.4: 2516 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2517 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2518 | dev: true 2519 | 2520 | /rimraf/3.0.2: 2521 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2522 | hasBin: true 2523 | dependencies: 2524 | glob: 7.2.0 2525 | dev: true 2526 | 2527 | /run-parallel/1.2.0: 2528 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2529 | dependencies: 2530 | queue-microtask: 1.2.3 2531 | dev: true 2532 | 2533 | /safe-buffer/5.1.2: 2534 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2535 | dev: true 2536 | 2537 | /safer-buffer/2.1.2: 2538 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2539 | dev: true 2540 | 2541 | /semver/5.7.1: 2542 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 2543 | hasBin: true 2544 | dev: true 2545 | 2546 | /semver/6.3.0: 2547 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2548 | hasBin: true 2549 | dev: true 2550 | 2551 | /semver/7.3.5: 2552 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 2553 | engines: {node: '>=10'} 2554 | hasBin: true 2555 | dependencies: 2556 | lru-cache: 6.0.0 2557 | dev: true 2558 | 2559 | /set-blocking/2.0.0: 2560 | resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} 2561 | dev: true 2562 | 2563 | /shebang-command/1.2.0: 2564 | resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} 2565 | engines: {node: '>=0.10.0'} 2566 | dependencies: 2567 | shebang-regex: 1.0.0 2568 | dev: true 2569 | 2570 | /shebang-command/2.0.0: 2571 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2572 | engines: {node: '>=8'} 2573 | dependencies: 2574 | shebang-regex: 3.0.0 2575 | dev: true 2576 | 2577 | /shebang-regex/1.0.0: 2578 | resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} 2579 | engines: {node: '>=0.10.0'} 2580 | dev: true 2581 | 2582 | /shebang-regex/3.0.0: 2583 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2584 | engines: {node: '>=8'} 2585 | dev: true 2586 | 2587 | /side-channel/1.0.4: 2588 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2589 | dependencies: 2590 | call-bind: 1.0.2 2591 | get-intrinsic: 1.1.1 2592 | object-inspect: 1.12.0 2593 | dev: true 2594 | 2595 | /signal-exit/3.0.6: 2596 | resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} 2597 | dev: true 2598 | 2599 | /slash/3.0.0: 2600 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2601 | engines: {node: '>=8'} 2602 | dev: true 2603 | 2604 | /smartwrap/1.2.5: 2605 | resolution: {integrity: sha512-bzWRwHwu0RnWjwU7dFy7tF68pDAx/zMSu3g7xr9Nx5J0iSImYInglwEVExyHLxXljy6PWMjkSAbwF7t2mPnRmg==} 2606 | deprecated: Backported compatibility to node > 6 2607 | hasBin: true 2608 | dependencies: 2609 | breakword: 1.0.5 2610 | grapheme-splitter: 1.0.4 2611 | strip-ansi: 6.0.1 2612 | wcwidth: 1.0.1 2613 | yargs: 15.4.1 2614 | dev: true 2615 | 2616 | /source-map/0.5.7: 2617 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} 2618 | engines: {node: '>=0.10.0'} 2619 | dev: true 2620 | 2621 | /source-map/0.7.3: 2622 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} 2623 | engines: {node: '>= 8'} 2624 | dev: true 2625 | 2626 | /spawndamnit/2.0.0: 2627 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} 2628 | dependencies: 2629 | cross-spawn: 5.1.0 2630 | signal-exit: 3.0.6 2631 | dev: true 2632 | 2633 | /spdx-correct/3.1.1: 2634 | resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} 2635 | dependencies: 2636 | spdx-expression-parse: 3.0.1 2637 | spdx-license-ids: 3.0.11 2638 | dev: true 2639 | 2640 | /spdx-exceptions/2.3.0: 2641 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 2642 | dev: true 2643 | 2644 | /spdx-expression-parse/3.0.1: 2645 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 2646 | dependencies: 2647 | spdx-exceptions: 2.3.0 2648 | spdx-license-ids: 3.0.11 2649 | dev: true 2650 | 2651 | /spdx-license-ids/3.0.11: 2652 | resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} 2653 | dev: true 2654 | 2655 | /sprintf-js/1.0.3: 2656 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} 2657 | dev: true 2658 | 2659 | /stream-transform/2.1.3: 2660 | resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} 2661 | dependencies: 2662 | mixme: 0.5.4 2663 | dev: true 2664 | 2665 | /string-width/4.2.3: 2666 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2667 | engines: {node: '>=8'} 2668 | dependencies: 2669 | emoji-regex: 8.0.0 2670 | is-fullwidth-code-point: 3.0.0 2671 | strip-ansi: 6.0.1 2672 | dev: true 2673 | 2674 | /string.prototype.matchall/4.0.6: 2675 | resolution: {integrity: sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==} 2676 | dependencies: 2677 | call-bind: 1.0.2 2678 | define-properties: 1.1.3 2679 | es-abstract: 1.19.1 2680 | get-intrinsic: 1.1.1 2681 | has-symbols: 1.0.2 2682 | internal-slot: 1.0.3 2683 | regexp.prototype.flags: 1.3.1 2684 | side-channel: 1.0.4 2685 | dev: true 2686 | 2687 | /string.prototype.trimend/1.0.4: 2688 | resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} 2689 | dependencies: 2690 | call-bind: 1.0.2 2691 | define-properties: 1.1.3 2692 | dev: true 2693 | 2694 | /string.prototype.trimstart/1.0.4: 2695 | resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} 2696 | dependencies: 2697 | call-bind: 1.0.2 2698 | define-properties: 1.1.3 2699 | dev: true 2700 | 2701 | /strip-ansi/6.0.1: 2702 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2703 | engines: {node: '>=8'} 2704 | dependencies: 2705 | ansi-regex: 5.0.1 2706 | dev: true 2707 | 2708 | /strip-bom/3.0.0: 2709 | resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} 2710 | engines: {node: '>=4'} 2711 | dev: true 2712 | 2713 | /strip-indent/3.0.0: 2714 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 2715 | engines: {node: '>=8'} 2716 | dependencies: 2717 | min-indent: 1.0.1 2718 | dev: true 2719 | 2720 | /strip-json-comments/3.1.1: 2721 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2722 | engines: {node: '>=8'} 2723 | dev: true 2724 | 2725 | /supports-color/5.5.0: 2726 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2727 | engines: {node: '>=4'} 2728 | dependencies: 2729 | has-flag: 3.0.0 2730 | dev: true 2731 | 2732 | /supports-color/7.2.0: 2733 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2734 | engines: {node: '>=8'} 2735 | dependencies: 2736 | has-flag: 4.0.0 2737 | dev: true 2738 | 2739 | /term-size/2.2.1: 2740 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 2741 | engines: {node: '>=8'} 2742 | dev: true 2743 | 2744 | /text-table/0.2.0: 2745 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} 2746 | dev: true 2747 | 2748 | /tmp/0.0.33: 2749 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 2750 | engines: {node: '>=0.6.0'} 2751 | dependencies: 2752 | os-tmpdir: 1.0.2 2753 | dev: true 2754 | 2755 | /to-fast-properties/2.0.0: 2756 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2757 | engines: {node: '>=4'} 2758 | dev: true 2759 | 2760 | /to-regex-range/5.0.1: 2761 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2762 | engines: {node: '>=8.0'} 2763 | dependencies: 2764 | is-number: 7.0.0 2765 | dev: true 2766 | 2767 | /trim-newlines/3.0.1: 2768 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} 2769 | engines: {node: '>=8'} 2770 | dev: true 2771 | 2772 | /tslib/1.14.1: 2773 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2774 | dev: true 2775 | 2776 | /tsutils/3.21.0_typescript@4.5.4: 2777 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2778 | engines: {node: '>= 6'} 2779 | peerDependencies: 2780 | 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' 2781 | dependencies: 2782 | tslib: 1.14.1 2783 | typescript: 4.5.4 2784 | dev: true 2785 | 2786 | /tty-table/2.8.13: 2787 | resolution: {integrity: sha512-eVV/+kB6fIIdx+iUImhXrO22gl7f6VmmYh0Zbu6C196fe1elcHXd7U6LcLXu0YoVPc2kNesWiukYcdK8ZmJ6aQ==} 2788 | engines: {node: '>=8.16.0'} 2789 | hasBin: true 2790 | dependencies: 2791 | chalk: 3.0.0 2792 | csv: 5.5.3 2793 | smartwrap: 1.2.5 2794 | strip-ansi: 6.0.1 2795 | wcwidth: 1.0.1 2796 | yargs: 15.4.1 2797 | dev: true 2798 | 2799 | /type-check/0.4.0: 2800 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2801 | engines: {node: '>= 0.8.0'} 2802 | dependencies: 2803 | prelude-ls: 1.2.1 2804 | dev: true 2805 | 2806 | /type-fest/0.13.1: 2807 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 2808 | engines: {node: '>=10'} 2809 | dev: true 2810 | 2811 | /type-fest/0.20.2: 2812 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2813 | engines: {node: '>=10'} 2814 | dev: true 2815 | 2816 | /type-fest/0.6.0: 2817 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 2818 | engines: {node: '>=8'} 2819 | dev: true 2820 | 2821 | /type-fest/0.8.1: 2822 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 2823 | engines: {node: '>=8'} 2824 | dev: true 2825 | 2826 | /typescript/4.5.4: 2827 | resolution: {integrity: sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==} 2828 | engines: {node: '>=4.2.0'} 2829 | hasBin: true 2830 | dev: true 2831 | 2832 | /unbox-primitive/1.0.1: 2833 | resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} 2834 | dependencies: 2835 | function-bind: 1.1.1 2836 | has-bigints: 1.0.1 2837 | has-symbols: 1.0.2 2838 | which-boxed-primitive: 1.0.2 2839 | dev: true 2840 | 2841 | /universalify/0.1.2: 2842 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 2843 | engines: {node: '>= 4.0.0'} 2844 | dev: true 2845 | 2846 | /uri-js/4.4.1: 2847 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2848 | dependencies: 2849 | punycode: 2.1.1 2850 | dev: true 2851 | 2852 | /v8-compile-cache/2.3.0: 2853 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 2854 | dev: true 2855 | 2856 | /validate-npm-package-license/3.0.4: 2857 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 2858 | dependencies: 2859 | spdx-correct: 3.1.1 2860 | spdx-expression-parse: 3.0.1 2861 | dev: true 2862 | 2863 | /wcwidth/1.0.1: 2864 | resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} 2865 | dependencies: 2866 | defaults: 1.0.3 2867 | dev: true 2868 | 2869 | /which-boxed-primitive/1.0.2: 2870 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2871 | dependencies: 2872 | is-bigint: 1.0.4 2873 | is-boolean-object: 1.1.2 2874 | is-number-object: 1.0.6 2875 | is-string: 1.0.7 2876 | is-symbol: 1.0.4 2877 | dev: true 2878 | 2879 | /which-module/2.0.0: 2880 | resolution: {integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=} 2881 | dev: true 2882 | 2883 | /which-pm/2.0.0: 2884 | resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} 2885 | engines: {node: '>=8.15'} 2886 | dependencies: 2887 | load-yaml-file: 0.2.0 2888 | path-exists: 4.0.0 2889 | dev: true 2890 | 2891 | /which/1.3.1: 2892 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 2893 | hasBin: true 2894 | dependencies: 2895 | isexe: 2.0.0 2896 | dev: true 2897 | 2898 | /which/2.0.2: 2899 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2900 | engines: {node: '>= 8'} 2901 | hasBin: true 2902 | dependencies: 2903 | isexe: 2.0.0 2904 | dev: true 2905 | 2906 | /word-wrap/1.2.3: 2907 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2908 | engines: {node: '>=0.10.0'} 2909 | dev: true 2910 | 2911 | /wrap-ansi/6.2.0: 2912 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 2913 | engines: {node: '>=8'} 2914 | dependencies: 2915 | ansi-styles: 4.3.0 2916 | string-width: 4.2.3 2917 | strip-ansi: 6.0.1 2918 | dev: true 2919 | 2920 | /wrappy/1.0.2: 2921 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 2922 | dev: true 2923 | 2924 | /y18n/4.0.3: 2925 | resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} 2926 | dev: true 2927 | 2928 | /yallist/2.1.2: 2929 | resolution: {integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=} 2930 | dev: true 2931 | 2932 | /yallist/4.0.0: 2933 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2934 | dev: true 2935 | 2936 | /yargs-parser/18.1.3: 2937 | resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} 2938 | engines: {node: '>=6'} 2939 | dependencies: 2940 | camelcase: 5.3.1 2941 | decamelize: 1.2.0 2942 | dev: true 2943 | 2944 | /yargs/15.4.1: 2945 | resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} 2946 | engines: {node: '>=8'} 2947 | dependencies: 2948 | cliui: 6.0.0 2949 | decamelize: 1.2.0 2950 | find-up: 4.1.0 2951 | get-caller-file: 2.0.5 2952 | require-directory: 2.1.1 2953 | require-main-filename: 2.0.0 2954 | set-blocking: 2.0.0 2955 | string-width: 4.2.3 2956 | which-module: 2.0.0 2957 | y18n: 4.0.3 2958 | yargs-parser: 18.1.3 2959 | dev: true 2960 | 2961 | /yocto-queue/0.1.0: 2962 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2963 | engines: {node: '>=10'} 2964 | dev: true 2965 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - packages/** 3 | - playgrounds 4 | --------------------------------------------------------------------------------