├── .changeset ├── README.md └── config.json ├── .github ├── FUNDING.yml └── workflows │ ├── main.yml │ └── publish.yml ├── .gitignore ├── .prettierrc ├── .vscode └── settings.json ├── CHANGELOG.md ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src ├── components │ ├── end │ │ └── end.tsx │ ├── field │ │ └── field.tsx │ ├── index.ts │ ├── onboarding │ │ └── onboarding.tsx │ └── step │ │ └── step.tsx ├── core │ ├── constants │ │ └── index.ts │ ├── index.core.ts │ ├── services │ │ ├── core.service.ts │ │ └── onboarding-context.ts │ └── utils │ │ ├── index.ts │ │ └── snake-case.util.ts └── index.ts └── tsconfig.json /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: alexvcasillas 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | push: 4 | branches: 5 | - "**" 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - uses: pnpm/action-setup@v2 13 | with: 14 | version: 7 15 | - uses: actions/setup-node@v3 16 | with: 17 | node-version: 16.x 18 | cache: "pnpm" 19 | 20 | - run: pnpm install --frozen-lockfile 21 | - run: pnpm run lint && pnpm run build 22 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish 2 | on: 3 | push: 4 | branches: 5 | - 'main' 6 | 7 | concurrency: ${{ github.workflow }}-${{ github.ref }} 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v3 14 | - uses: pnpm/action-setup@v2 15 | with: 16 | version: 7 17 | - uses: actions/setup-node@v3 18 | with: 19 | node-version: 16.x 20 | cache: 'pnpm' 21 | 22 | - run: pnpm install --frozen-lockfile 23 | 24 | - name: Create Release Pull Request or Publish 25 | id: changesets 26 | uses: changesets/action@v1 27 | with: 28 | publish: pnpm run build 29 | env: 30 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 31 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | .env.test 62 | 63 | # parcel-bundler cache (https://parceljs.org/) 64 | .cache 65 | 66 | # next.js build output 67 | .next 68 | 69 | # nuxt.js build output 70 | .nuxt 71 | 72 | # vuepress build output 73 | .vuepress/dist 74 | 75 | # Serverless directories 76 | .serverless/ 77 | 78 | # FuseBox cache 79 | .fusebox/ 80 | 81 | # DynamoDB Local files 82 | .dynamodb/ 83 | 84 | # RTS2 Cache 85 | .rts2_cache_cjs 86 | .rts2_cache_es 87 | .rts2_cache_umd 88 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "tabWidth": 2, 4 | "semi": true, 5 | "singleQuote": true 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "esbenp.prettier-vscode", 3 | "editor.formatOnSave": true 4 | } 5 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # @alexvcasillas/react-onboarding 2 | 3 | ## 1.0.0 4 | 5 | ### Major Changes 6 | 7 | - 59629f9: Move to React 18 and improve Core 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Onboarding 2 | 3 | - [Motivation](#motivation) 4 | - [Demo](#demo) 5 | - [Why Onboarding?](#why-onboarding) 6 | - [What Onboarding is not](#what-onboarding-is-not) 7 | - [Installation](#installation) 8 | - [Onboarding components](#onboarding-components) 9 | 10 | # Motivation 11 | 12 | TLDR; **Onboarding** is an open source library that aims to create a robust onboarding system for your web application without any headaches or having to manage complex form logics. 13 | 14 | After working for long days building onboarding applications for clients and companies and their clients; having to build almost the same over and over again but adapting the logic for each of the use cases, I though that maybe we could have some generic solution easy to import in whatever project we're working on and being able to easily declare specific onboarding logics like validations and related stuff, that's why this project started taking shape and became what's nowdays: **Onboarding**. 15 | 16 | We also knew that the user would like to use any UI component library so we have to develop **Onboarding** as generic as possible and providing the enough abstractions to link the internal logic of this library with the logic of a UI component, like field statuses, triggers, event handlers, etc. This way we came up with a, as much as generic as we could, solution. We developed some components that will provide you with the logic needed to build the onboarding process. Using this components should be as simple and straightforward as to put them into your React application without doing any configurations or other related stuff. We tried to keep things as simple as possible within some reasonable React limitations. 17 | 18 | # Demo 19 | 20 | If you would like to take a look at what **Onboarding** could do for you, you should take a look at this demo: 21 | 22 | Reactive Labs demo | [https://onboarding-demo.reactive-labs.com/](https://onboarding-demo.reactive-labs.com/) 23 | 24 | If you've created some open-source project that relies on **Onboarding** and would like to showcase your project here, feel free to send a PR with the link to your website/demo. 25 | 26 | # Why Onboarding? 27 | 28 | Currently there are formidable solutions in the React ecosystem to handle form's state and logic but we haven't found a solution that let you deal with a full onboarding process, and putting together this solutions could give you a hard time and maybe you could end up giving up. **Onboarding** is a complete solution that will delight you from the beginning to the end of your onboarding application development process. **Onboarding** will provide you all of the tools that you could need to create a delightful onboarding experience for your company or any project that you wanted to use it on. 29 | 30 | # What onboarding is not 31 | 32 | **Onboarding** doesn't provide any UI components, it only provides with logical components that you would use in your application and then you'll tie your UI components to **Onboarding**'s logical components. So, if you're here thinking that this is an UI library for React, we have to tell you that this is not what you're looking for. Or maybe it is and you can take a look around and realize that this is what you need for your project. 33 | 34 | # Installation 35 | 36 | NPM 37 | 38 | ``` 39 | npm i --save @alexvcasillas/react-onboarding 40 | ``` 41 | 42 | Yarn 43 | 44 | ``` 45 | yarn add @alexvcasillas/react-onboarding 46 | ``` 47 | 48 | # Onboarding components 49 | 50 | **Onboarding** provides you a series of components that you will combine to generate the full onboarding experience. Those components are: 51 | 52 | - [Onboarding component](#onboarding-component) 53 | - [Step component](#step-component) 54 | - [Field component](#field-component) 55 | - [Info component](#info-component) 56 | - [End component](#end-component) 57 | 58 | ## Onboarding component 59 | 60 | The Onboarding Component is what you'll need at the top-level of your application. It's that one that will be in charge of handling the Step generations and dealing with rendering Steps, Infos, End components and rending everything that's not related to a particular step or end page. 61 | 62 | ``` 63 | import { Onboarding } from '@alexvcasillas/react-onboarding'; 64 | 65 | 66 | ... 67 | 68 | ``` 69 | 70 | It won't take any props so you just drop it there and it will start working out of the box for you. 71 | 72 | ## Step component 73 | 74 | The Step component is what you will have to include within an Onboarding component to tell the system that you would want a step to be rendered and therefore, displayed in the browser. 75 | 76 | ``` 77 | import { Step } from '@alexvcasillas/react-onboarding'; 78 | 79 | 80 | {({ nextStep, prevStep, validStep, finish }) => ( 81 | ... 82 | )} 83 | 84 | ``` 85 | 86 | The Step component that's a single prop that's called `name` and it has to be a unique identifier of this step as it would be used later on to fill the data that's gonna be provided to you at the end or any point of the onboarding process. 87 | 88 | As you can see, the Step component is a component that takes a function as a child and provides you with data a logical functions that we're gonna describe right now: 89 | 90 | - nextStep 91 | - type: Function 92 | - description: This property will let you navigate to the next step of the onboarding process. 93 | - Gotchas: this function won't let you move forwards to the next step if the step is not valid, meaning that the fields within this step have processed and valid. 94 | - prevSte 95 | - type: Function 96 | - description: this function will let you navigate to the previous step of the onboarding process. 97 | - Gotchas: none. 98 | - validStep 99 | - type: Boolean 100 | - description: this boolean variable will tell you if this step is valid or not, meaning that all the fields within this step that required validation are fulfilling it. 101 | - finish 102 | - type: Function 103 | - description: this function will let you finish the current form. When this function is called, the End component that is within the Onboarding component will be rendered instead of anything else. 104 | 105 | ## Field component 106 | 107 | The Field component is what you will have to include within a Field component to tell the system that this is a field that could have validations attached to them to deal with your business logic. 108 | 109 | ``` 110 | import { Step } from '@alexvcasillas/react-onboarding'; 111 | 112 | 113 | {({ type, value, onChange, onFocus, onBlur, onEnter, valid, error }) => ( 114 | ... 115 | )} 116 | 117 | ``` 118 | 119 | The field component has various props as: 120 | 121 | - name 122 | - type: String 123 | - description: a unique identifier of this field that will be user later on to give you back the data. 124 | - type 125 | - type: String 126 | - description: this will define the value type of this field, meaning that if you provide a type of number, we will give you at the end of the process a value with a typeof as the same as you've defined here. This prop is passed down to the child function exactly as you have declared it. 127 | - validations 128 | - type: Validations[] 129 | - description: this property takes an array with the shape of a Validation object. We will explain this with more detail in a section bellow. 130 | 131 | As you can see, the Field component is a component that takes a function as a child and provides you with data a logical functions that we're gonna describe right now: 132 | 133 | - type 134 | - type: String 135 | - description: this will tell you the type of the field you're setting. This will be the exactly same value at the `type` prop you had defined previously. 136 | - value 137 | - type: String 138 | - description: this is the actual value of this field. You would pass this value property to your UI component to display it. 139 | - onChange 140 | - type: Function 141 | - description: this function will be in charge to update the value of the field. You can tie it to your UI component as you with. As an example, you can pass this function to the `onChange` prop of an input element and it will update the property value of the field component for you. This function will also be in charge of running all of the validations that are linked to the "change" event. 142 | - onFocus 143 | - type: Function 144 | - description: this function will be in charge to trigger all of the "focus" validations that you could have declared in the validations prop. You can link this function to an input's "onFocus" property. 145 | - onBlur 146 | - type: Function 147 | - description: this function will be in charge to trigger all of the "blur" validations that you could have declared in the validations prop. You can link this function to an input's "onBlur" property. 148 | - onEnter 149 | - type: Function 150 | - arguments: Function?. 151 | - description: this function will be in charge of running all of the "enter" validations that you could have declared in the validations prop. You can link this function to an input's "onKeyPress" property. This function could be expecting a function callback for when the validations have been run, meaning that you could do something like: `() => onEnter(nextStep)` meaning that when all of the validations have run, it will try to move to the next step if the step is valid. Be aware that this `nextStep` described is provided by the Step component and you have it on scope at the Field level. 152 | - valid 153 | - type: Boolean 154 | - description: this boolean variable will tell you if this field is valid or not based on the validations run for this field, meaning that it will return false if the any of the validations have not met the requirements and true otherwise. You can use this variable to update the visual state of your UI component. As an example, turning an input's border red if some validations are failing. 155 | - error 156 | - type: String 157 | - description: this string will contain the message of the validation that have failed. You would declare this message within the Validation Object that we will see below. It will only contain the message of the first validation that haven't met the requirements. 158 | 159 | ## Info component 160 | 161 | Work in progress. 162 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@alexvcasillas/react-onboarding", 3 | "version": "1.0.0", 4 | "description": "Onboarding library for React", 5 | "main": "dist/index.js", 6 | "module": "dist/index.mjs", 7 | "types": "dist/index.d.ts", 8 | "repository": "https://github.com/alexvcasillas/react-onboarding.git", 9 | "author": "Alex Casillas (https://alexvcasillas.com)", 10 | "license": "MIT", 11 | "private": false, 12 | "scripts": { 13 | "build": "tsup src/index.ts --format cjs,esm --dts", 14 | "lint": "tsc" 15 | }, 16 | "dependencies": { 17 | "react": "^18.2.0", 18 | "react-dom": "^18.2.0", 19 | "react-use": "^17.4.0" 20 | }, 21 | "devDependencies": { 22 | "@changesets/cli": "^2.26.0", 23 | "@types/react": "^16.8.7", 24 | "prettier": "^2.8.3", 25 | "tsup": "^6.5.0", 26 | "typescript": "^4.9.4" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@changesets/cli': ^2.26.0 5 | '@types/react': ^16.8.7 6 | prettier: ^2.8.3 7 | react: ^18.2.0 8 | react-dom: ^18.2.0 9 | react-use: ^17.4.0 10 | tsup: ^6.5.0 11 | typescript: ^4.9.4 12 | 13 | dependencies: 14 | react: 18.2.0 15 | react-dom: 18.2.0_react@18.2.0 16 | react-use: 17.4.0_biqbaboplfbrettd7655fr4n2y 17 | 18 | devDependencies: 19 | '@changesets/cli': 2.26.0 20 | '@types/react': 16.14.34 21 | prettier: 2.8.3 22 | tsup: 6.5.0_typescript@4.9.4 23 | typescript: 4.9.4 24 | 25 | packages: 26 | 27 | /@babel/code-frame/7.18.6: 28 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 29 | engines: {node: '>=6.9.0'} 30 | dependencies: 31 | '@babel/highlight': 7.18.6 32 | dev: true 33 | 34 | /@babel/helper-validator-identifier/7.19.1: 35 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 36 | engines: {node: '>=6.9.0'} 37 | dev: true 38 | 39 | /@babel/highlight/7.18.6: 40 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 41 | engines: {node: '>=6.9.0'} 42 | dependencies: 43 | '@babel/helper-validator-identifier': 7.19.1 44 | chalk: 2.4.2 45 | js-tokens: 4.0.0 46 | dev: true 47 | 48 | /@babel/runtime/7.20.7: 49 | resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} 50 | engines: {node: '>=6.9.0'} 51 | dependencies: 52 | regenerator-runtime: 0.13.11 53 | 54 | /@changesets/apply-release-plan/6.1.3: 55 | resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} 56 | dependencies: 57 | '@babel/runtime': 7.20.7 58 | '@changesets/config': 2.3.0 59 | '@changesets/get-version-range-type': 0.3.2 60 | '@changesets/git': 2.0.0 61 | '@changesets/types': 5.2.1 62 | '@manypkg/get-packages': 1.1.3 63 | detect-indent: 6.1.0 64 | fs-extra: 7.0.1 65 | lodash.startcase: 4.4.0 66 | outdent: 0.5.0 67 | prettier: 2.8.3 68 | resolve-from: 5.0.0 69 | semver: 5.7.1 70 | dev: true 71 | 72 | /@changesets/assemble-release-plan/5.2.3: 73 | resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} 74 | dependencies: 75 | '@babel/runtime': 7.20.7 76 | '@changesets/errors': 0.1.4 77 | '@changesets/get-dependents-graph': 1.3.5 78 | '@changesets/types': 5.2.1 79 | '@manypkg/get-packages': 1.1.3 80 | semver: 5.7.1 81 | dev: true 82 | 83 | /@changesets/changelog-git/0.1.14: 84 | resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} 85 | dependencies: 86 | '@changesets/types': 5.2.1 87 | dev: true 88 | 89 | /@changesets/cli/2.26.0: 90 | resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==} 91 | hasBin: true 92 | dependencies: 93 | '@babel/runtime': 7.20.7 94 | '@changesets/apply-release-plan': 6.1.3 95 | '@changesets/assemble-release-plan': 5.2.3 96 | '@changesets/changelog-git': 0.1.14 97 | '@changesets/config': 2.3.0 98 | '@changesets/errors': 0.1.4 99 | '@changesets/get-dependents-graph': 1.3.5 100 | '@changesets/get-release-plan': 3.0.16 101 | '@changesets/git': 2.0.0 102 | '@changesets/logger': 0.0.5 103 | '@changesets/pre': 1.0.14 104 | '@changesets/read': 0.5.9 105 | '@changesets/types': 5.2.1 106 | '@changesets/write': 0.2.3 107 | '@manypkg/get-packages': 1.1.3 108 | '@types/is-ci': 3.0.0 109 | '@types/semver': 6.2.3 110 | ansi-colors: 4.1.3 111 | chalk: 2.4.2 112 | enquirer: 2.3.6 113 | external-editor: 3.1.0 114 | fs-extra: 7.0.1 115 | human-id: 1.0.2 116 | is-ci: 3.0.1 117 | meow: 6.1.1 118 | outdent: 0.5.0 119 | p-limit: 2.3.0 120 | preferred-pm: 3.0.3 121 | resolve-from: 5.0.0 122 | semver: 5.7.1 123 | spawndamnit: 2.0.0 124 | term-size: 2.2.1 125 | tty-table: 4.1.6 126 | dev: true 127 | 128 | /@changesets/config/2.3.0: 129 | resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} 130 | dependencies: 131 | '@changesets/errors': 0.1.4 132 | '@changesets/get-dependents-graph': 1.3.5 133 | '@changesets/logger': 0.0.5 134 | '@changesets/types': 5.2.1 135 | '@manypkg/get-packages': 1.1.3 136 | fs-extra: 7.0.1 137 | micromatch: 4.0.5 138 | dev: true 139 | 140 | /@changesets/errors/0.1.4: 141 | resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} 142 | dependencies: 143 | extendable-error: 0.1.7 144 | dev: true 145 | 146 | /@changesets/get-dependents-graph/1.3.5: 147 | resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} 148 | dependencies: 149 | '@changesets/types': 5.2.1 150 | '@manypkg/get-packages': 1.1.3 151 | chalk: 2.4.2 152 | fs-extra: 7.0.1 153 | semver: 5.7.1 154 | dev: true 155 | 156 | /@changesets/get-release-plan/3.0.16: 157 | resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} 158 | dependencies: 159 | '@babel/runtime': 7.20.7 160 | '@changesets/assemble-release-plan': 5.2.3 161 | '@changesets/config': 2.3.0 162 | '@changesets/pre': 1.0.14 163 | '@changesets/read': 0.5.9 164 | '@changesets/types': 5.2.1 165 | '@manypkg/get-packages': 1.1.3 166 | dev: true 167 | 168 | /@changesets/get-version-range-type/0.3.2: 169 | resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} 170 | dev: true 171 | 172 | /@changesets/git/2.0.0: 173 | resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} 174 | dependencies: 175 | '@babel/runtime': 7.20.7 176 | '@changesets/errors': 0.1.4 177 | '@changesets/types': 5.2.1 178 | '@manypkg/get-packages': 1.1.3 179 | is-subdir: 1.2.0 180 | micromatch: 4.0.5 181 | spawndamnit: 2.0.0 182 | dev: true 183 | 184 | /@changesets/logger/0.0.5: 185 | resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} 186 | dependencies: 187 | chalk: 2.4.2 188 | dev: true 189 | 190 | /@changesets/parse/0.3.16: 191 | resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} 192 | dependencies: 193 | '@changesets/types': 5.2.1 194 | js-yaml: 3.14.1 195 | dev: true 196 | 197 | /@changesets/pre/1.0.14: 198 | resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} 199 | dependencies: 200 | '@babel/runtime': 7.20.7 201 | '@changesets/errors': 0.1.4 202 | '@changesets/types': 5.2.1 203 | '@manypkg/get-packages': 1.1.3 204 | fs-extra: 7.0.1 205 | dev: true 206 | 207 | /@changesets/read/0.5.9: 208 | resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} 209 | dependencies: 210 | '@babel/runtime': 7.20.7 211 | '@changesets/git': 2.0.0 212 | '@changesets/logger': 0.0.5 213 | '@changesets/parse': 0.3.16 214 | '@changesets/types': 5.2.1 215 | chalk: 2.4.2 216 | fs-extra: 7.0.1 217 | p-filter: 2.1.0 218 | dev: true 219 | 220 | /@changesets/types/4.1.0: 221 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 222 | dev: true 223 | 224 | /@changesets/types/5.2.1: 225 | resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} 226 | dev: true 227 | 228 | /@changesets/write/0.2.3: 229 | resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} 230 | dependencies: 231 | '@babel/runtime': 7.20.7 232 | '@changesets/types': 5.2.1 233 | fs-extra: 7.0.1 234 | human-id: 1.0.2 235 | prettier: 2.8.3 236 | dev: true 237 | 238 | /@esbuild/android-arm/0.15.18: 239 | resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} 240 | engines: {node: '>=12'} 241 | cpu: [arm] 242 | os: [android] 243 | requiresBuild: true 244 | dev: true 245 | optional: true 246 | 247 | /@esbuild/linux-loong64/0.15.18: 248 | resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} 249 | engines: {node: '>=12'} 250 | cpu: [loong64] 251 | os: [linux] 252 | requiresBuild: true 253 | dev: true 254 | optional: true 255 | 256 | /@manypkg/find-root/1.1.0: 257 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 258 | dependencies: 259 | '@babel/runtime': 7.20.7 260 | '@types/node': 12.20.55 261 | find-up: 4.1.0 262 | fs-extra: 8.1.0 263 | dev: true 264 | 265 | /@manypkg/get-packages/1.1.3: 266 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 267 | dependencies: 268 | '@babel/runtime': 7.20.7 269 | '@changesets/types': 4.1.0 270 | '@manypkg/find-root': 1.1.0 271 | fs-extra: 8.1.0 272 | globby: 11.1.0 273 | read-yaml-file: 1.1.0 274 | dev: true 275 | 276 | /@nodelib/fs.scandir/2.1.5: 277 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 278 | engines: {node: '>= 8'} 279 | dependencies: 280 | '@nodelib/fs.stat': 2.0.5 281 | run-parallel: 1.2.0 282 | dev: true 283 | 284 | /@nodelib/fs.stat/2.0.5: 285 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 286 | engines: {node: '>= 8'} 287 | dev: true 288 | 289 | /@nodelib/fs.walk/1.2.8: 290 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 291 | engines: {node: '>= 8'} 292 | dependencies: 293 | '@nodelib/fs.scandir': 2.1.5 294 | fastq: 1.15.0 295 | dev: true 296 | 297 | /@types/is-ci/3.0.0: 298 | resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} 299 | dependencies: 300 | ci-info: 3.7.1 301 | dev: true 302 | 303 | /@types/js-cookie/2.2.7: 304 | resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} 305 | dev: false 306 | 307 | /@types/minimist/1.2.2: 308 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} 309 | dev: true 310 | 311 | /@types/node/12.20.55: 312 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 313 | dev: true 314 | 315 | /@types/normalize-package-data/2.4.1: 316 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} 317 | dev: true 318 | 319 | /@types/prop-types/15.7.5: 320 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 321 | dev: true 322 | 323 | /@types/react/16.14.34: 324 | resolution: {integrity: sha512-b99nWeGGReLh6aKBppghVqp93dFJtgtDOzc8NXM6hewD8PQ2zZG5kBLgbx+VJr7Q7WBMjHxaIl3dwpwwPIUgyA==} 325 | dependencies: 326 | '@types/prop-types': 15.7.5 327 | '@types/scheduler': 0.16.2 328 | csstype: 3.1.1 329 | dev: true 330 | 331 | /@types/scheduler/0.16.2: 332 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 333 | dev: true 334 | 335 | /@types/semver/6.2.3: 336 | resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} 337 | dev: true 338 | 339 | /@xobotyi/scrollbar-width/1.9.5: 340 | resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} 341 | dev: false 342 | 343 | /ansi-colors/4.1.3: 344 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 345 | engines: {node: '>=6'} 346 | dev: true 347 | 348 | /ansi-regex/5.0.1: 349 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 350 | engines: {node: '>=8'} 351 | dev: true 352 | 353 | /ansi-styles/3.2.1: 354 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 355 | engines: {node: '>=4'} 356 | dependencies: 357 | color-convert: 1.9.3 358 | dev: true 359 | 360 | /ansi-styles/4.3.0: 361 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 362 | engines: {node: '>=8'} 363 | dependencies: 364 | color-convert: 2.0.1 365 | dev: true 366 | 367 | /any-promise/1.3.0: 368 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 369 | dev: true 370 | 371 | /anymatch/3.1.3: 372 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 373 | engines: {node: '>= 8'} 374 | dependencies: 375 | normalize-path: 3.0.0 376 | picomatch: 2.3.1 377 | dev: true 378 | 379 | /argparse/1.0.10: 380 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 381 | dependencies: 382 | sprintf-js: 1.0.3 383 | dev: true 384 | 385 | /array-union/2.1.0: 386 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 387 | engines: {node: '>=8'} 388 | dev: true 389 | 390 | /array.prototype.flat/1.3.1: 391 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} 392 | engines: {node: '>= 0.4'} 393 | dependencies: 394 | call-bind: 1.0.2 395 | define-properties: 1.1.4 396 | es-abstract: 1.21.1 397 | es-shim-unscopables: 1.0.0 398 | dev: true 399 | 400 | /arrify/1.0.1: 401 | resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} 402 | engines: {node: '>=0.10.0'} 403 | dev: true 404 | 405 | /available-typed-arrays/1.0.5: 406 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 407 | engines: {node: '>= 0.4'} 408 | dev: true 409 | 410 | /balanced-match/1.0.2: 411 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 412 | dev: true 413 | 414 | /better-path-resolve/1.0.0: 415 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 416 | engines: {node: '>=4'} 417 | dependencies: 418 | is-windows: 1.0.2 419 | dev: true 420 | 421 | /binary-extensions/2.2.0: 422 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 423 | engines: {node: '>=8'} 424 | dev: true 425 | 426 | /brace-expansion/1.1.11: 427 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 428 | dependencies: 429 | balanced-match: 1.0.2 430 | concat-map: 0.0.1 431 | dev: true 432 | 433 | /braces/3.0.2: 434 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 435 | engines: {node: '>=8'} 436 | dependencies: 437 | fill-range: 7.0.1 438 | dev: true 439 | 440 | /breakword/1.0.5: 441 | resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} 442 | dependencies: 443 | wcwidth: 1.0.1 444 | dev: true 445 | 446 | /bundle-require/3.1.2_esbuild@0.15.18: 447 | resolution: {integrity: sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA==} 448 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 449 | peerDependencies: 450 | esbuild: '>=0.13' 451 | dependencies: 452 | esbuild: 0.15.18 453 | load-tsconfig: 0.2.3 454 | dev: true 455 | 456 | /cac/6.7.14: 457 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 458 | engines: {node: '>=8'} 459 | dev: true 460 | 461 | /call-bind/1.0.2: 462 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 463 | dependencies: 464 | function-bind: 1.1.1 465 | get-intrinsic: 1.1.3 466 | dev: true 467 | 468 | /camelcase-keys/6.2.2: 469 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} 470 | engines: {node: '>=8'} 471 | dependencies: 472 | camelcase: 5.3.1 473 | map-obj: 4.3.0 474 | quick-lru: 4.0.1 475 | dev: true 476 | 477 | /camelcase/5.3.1: 478 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 479 | engines: {node: '>=6'} 480 | dev: true 481 | 482 | /chalk/2.4.2: 483 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 484 | engines: {node: '>=4'} 485 | dependencies: 486 | ansi-styles: 3.2.1 487 | escape-string-regexp: 1.0.5 488 | supports-color: 5.5.0 489 | dev: true 490 | 491 | /chalk/4.1.2: 492 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 493 | engines: {node: '>=10'} 494 | dependencies: 495 | ansi-styles: 4.3.0 496 | supports-color: 7.2.0 497 | dev: true 498 | 499 | /chardet/0.7.0: 500 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 501 | dev: true 502 | 503 | /chokidar/3.5.3: 504 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 505 | engines: {node: '>= 8.10.0'} 506 | dependencies: 507 | anymatch: 3.1.3 508 | braces: 3.0.2 509 | glob-parent: 5.1.2 510 | is-binary-path: 2.1.0 511 | is-glob: 4.0.3 512 | normalize-path: 3.0.0 513 | readdirp: 3.6.0 514 | optionalDependencies: 515 | fsevents: 2.3.2 516 | dev: true 517 | 518 | /ci-info/3.7.1: 519 | resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} 520 | engines: {node: '>=8'} 521 | dev: true 522 | 523 | /cliui/6.0.0: 524 | resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} 525 | dependencies: 526 | string-width: 4.2.3 527 | strip-ansi: 6.0.1 528 | wrap-ansi: 6.2.0 529 | dev: true 530 | 531 | /cliui/8.0.1: 532 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 533 | engines: {node: '>=12'} 534 | dependencies: 535 | string-width: 4.2.3 536 | strip-ansi: 6.0.1 537 | wrap-ansi: 7.0.0 538 | dev: true 539 | 540 | /clone/1.0.4: 541 | resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} 542 | engines: {node: '>=0.8'} 543 | dev: true 544 | 545 | /color-convert/1.9.3: 546 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 547 | dependencies: 548 | color-name: 1.1.3 549 | dev: true 550 | 551 | /color-convert/2.0.1: 552 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 553 | engines: {node: '>=7.0.0'} 554 | dependencies: 555 | color-name: 1.1.4 556 | dev: true 557 | 558 | /color-name/1.1.3: 559 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 560 | dev: true 561 | 562 | /color-name/1.1.4: 563 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 564 | dev: true 565 | 566 | /commander/4.1.1: 567 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 568 | engines: {node: '>= 6'} 569 | dev: true 570 | 571 | /concat-map/0.0.1: 572 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 573 | dev: true 574 | 575 | /copy-to-clipboard/3.3.3: 576 | resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} 577 | dependencies: 578 | toggle-selection: 1.0.6 579 | dev: false 580 | 581 | /cross-spawn/5.1.0: 582 | resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} 583 | dependencies: 584 | lru-cache: 4.1.5 585 | shebang-command: 1.2.0 586 | which: 1.3.1 587 | dev: true 588 | 589 | /cross-spawn/7.0.3: 590 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 591 | engines: {node: '>= 8'} 592 | dependencies: 593 | path-key: 3.1.1 594 | shebang-command: 2.0.0 595 | which: 2.0.2 596 | dev: true 597 | 598 | /css-in-js-utils/3.1.0: 599 | resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} 600 | dependencies: 601 | hyphenate-style-name: 1.0.4 602 | dev: false 603 | 604 | /css-tree/1.1.3: 605 | resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} 606 | engines: {node: '>=8.0.0'} 607 | dependencies: 608 | mdn-data: 2.0.14 609 | source-map: 0.6.1 610 | dev: false 611 | 612 | /csstype/3.1.1: 613 | resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} 614 | 615 | /csv-generate/3.4.3: 616 | resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} 617 | dev: true 618 | 619 | /csv-parse/4.16.3: 620 | resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} 621 | dev: true 622 | 623 | /csv-stringify/5.6.5: 624 | resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} 625 | dev: true 626 | 627 | /csv/5.5.3: 628 | resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} 629 | engines: {node: '>= 0.1.90'} 630 | dependencies: 631 | csv-generate: 3.4.3 632 | csv-parse: 4.16.3 633 | csv-stringify: 5.6.5 634 | stream-transform: 2.1.3 635 | dev: true 636 | 637 | /debug/4.3.4: 638 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 639 | engines: {node: '>=6.0'} 640 | peerDependencies: 641 | supports-color: '*' 642 | peerDependenciesMeta: 643 | supports-color: 644 | optional: true 645 | dependencies: 646 | ms: 2.1.2 647 | dev: true 648 | 649 | /decamelize-keys/1.1.1: 650 | resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} 651 | engines: {node: '>=0.10.0'} 652 | dependencies: 653 | decamelize: 1.2.0 654 | map-obj: 1.0.1 655 | dev: true 656 | 657 | /decamelize/1.2.0: 658 | resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} 659 | engines: {node: '>=0.10.0'} 660 | dev: true 661 | 662 | /defaults/1.0.4: 663 | resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} 664 | dependencies: 665 | clone: 1.0.4 666 | dev: true 667 | 668 | /define-properties/1.1.4: 669 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 670 | engines: {node: '>= 0.4'} 671 | dependencies: 672 | has-property-descriptors: 1.0.0 673 | object-keys: 1.1.1 674 | dev: true 675 | 676 | /detect-indent/6.1.0: 677 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 678 | engines: {node: '>=8'} 679 | dev: true 680 | 681 | /dir-glob/3.0.1: 682 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 683 | engines: {node: '>=8'} 684 | dependencies: 685 | path-type: 4.0.0 686 | dev: true 687 | 688 | /emoji-regex/8.0.0: 689 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 690 | dev: true 691 | 692 | /enquirer/2.3.6: 693 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 694 | engines: {node: '>=8.6'} 695 | dependencies: 696 | ansi-colors: 4.1.3 697 | dev: true 698 | 699 | /error-ex/1.3.2: 700 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 701 | dependencies: 702 | is-arrayish: 0.2.1 703 | dev: true 704 | 705 | /error-stack-parser/2.1.4: 706 | resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} 707 | dependencies: 708 | stackframe: 1.3.4 709 | dev: false 710 | 711 | /es-abstract/1.21.1: 712 | resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} 713 | engines: {node: '>= 0.4'} 714 | dependencies: 715 | available-typed-arrays: 1.0.5 716 | call-bind: 1.0.2 717 | es-set-tostringtag: 2.0.1 718 | es-to-primitive: 1.2.1 719 | function-bind: 1.1.1 720 | function.prototype.name: 1.1.5 721 | get-intrinsic: 1.1.3 722 | get-symbol-description: 1.0.0 723 | globalthis: 1.0.3 724 | gopd: 1.0.1 725 | has: 1.0.3 726 | has-property-descriptors: 1.0.0 727 | has-proto: 1.0.1 728 | has-symbols: 1.0.3 729 | internal-slot: 1.0.4 730 | is-array-buffer: 3.0.1 731 | is-callable: 1.2.7 732 | is-negative-zero: 2.0.2 733 | is-regex: 1.1.4 734 | is-shared-array-buffer: 1.0.2 735 | is-string: 1.0.7 736 | is-typed-array: 1.1.10 737 | is-weakref: 1.0.2 738 | object-inspect: 1.12.3 739 | object-keys: 1.1.1 740 | object.assign: 4.1.4 741 | regexp.prototype.flags: 1.4.3 742 | safe-regex-test: 1.0.0 743 | string.prototype.trimend: 1.0.6 744 | string.prototype.trimstart: 1.0.6 745 | typed-array-length: 1.0.4 746 | unbox-primitive: 1.0.2 747 | which-typed-array: 1.1.9 748 | dev: true 749 | 750 | /es-set-tostringtag/2.0.1: 751 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} 752 | engines: {node: '>= 0.4'} 753 | dependencies: 754 | get-intrinsic: 1.1.3 755 | has: 1.0.3 756 | has-tostringtag: 1.0.0 757 | dev: true 758 | 759 | /es-shim-unscopables/1.0.0: 760 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 761 | dependencies: 762 | has: 1.0.3 763 | dev: true 764 | 765 | /es-to-primitive/1.2.1: 766 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 767 | engines: {node: '>= 0.4'} 768 | dependencies: 769 | is-callable: 1.2.7 770 | is-date-object: 1.0.5 771 | is-symbol: 1.0.4 772 | dev: true 773 | 774 | /esbuild-android-64/0.15.18: 775 | resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} 776 | engines: {node: '>=12'} 777 | cpu: [x64] 778 | os: [android] 779 | requiresBuild: true 780 | dev: true 781 | optional: true 782 | 783 | /esbuild-android-arm64/0.15.18: 784 | resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} 785 | engines: {node: '>=12'} 786 | cpu: [arm64] 787 | os: [android] 788 | requiresBuild: true 789 | dev: true 790 | optional: true 791 | 792 | /esbuild-darwin-64/0.15.18: 793 | resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} 794 | engines: {node: '>=12'} 795 | cpu: [x64] 796 | os: [darwin] 797 | requiresBuild: true 798 | dev: true 799 | optional: true 800 | 801 | /esbuild-darwin-arm64/0.15.18: 802 | resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} 803 | engines: {node: '>=12'} 804 | cpu: [arm64] 805 | os: [darwin] 806 | requiresBuild: true 807 | dev: true 808 | optional: true 809 | 810 | /esbuild-freebsd-64/0.15.18: 811 | resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} 812 | engines: {node: '>=12'} 813 | cpu: [x64] 814 | os: [freebsd] 815 | requiresBuild: true 816 | dev: true 817 | optional: true 818 | 819 | /esbuild-freebsd-arm64/0.15.18: 820 | resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} 821 | engines: {node: '>=12'} 822 | cpu: [arm64] 823 | os: [freebsd] 824 | requiresBuild: true 825 | dev: true 826 | optional: true 827 | 828 | /esbuild-linux-32/0.15.18: 829 | resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} 830 | engines: {node: '>=12'} 831 | cpu: [ia32] 832 | os: [linux] 833 | requiresBuild: true 834 | dev: true 835 | optional: true 836 | 837 | /esbuild-linux-64/0.15.18: 838 | resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} 839 | engines: {node: '>=12'} 840 | cpu: [x64] 841 | os: [linux] 842 | requiresBuild: true 843 | dev: true 844 | optional: true 845 | 846 | /esbuild-linux-arm/0.15.18: 847 | resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} 848 | engines: {node: '>=12'} 849 | cpu: [arm] 850 | os: [linux] 851 | requiresBuild: true 852 | dev: true 853 | optional: true 854 | 855 | /esbuild-linux-arm64/0.15.18: 856 | resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} 857 | engines: {node: '>=12'} 858 | cpu: [arm64] 859 | os: [linux] 860 | requiresBuild: true 861 | dev: true 862 | optional: true 863 | 864 | /esbuild-linux-mips64le/0.15.18: 865 | resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} 866 | engines: {node: '>=12'} 867 | cpu: [mips64el] 868 | os: [linux] 869 | requiresBuild: true 870 | dev: true 871 | optional: true 872 | 873 | /esbuild-linux-ppc64le/0.15.18: 874 | resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} 875 | engines: {node: '>=12'} 876 | cpu: [ppc64] 877 | os: [linux] 878 | requiresBuild: true 879 | dev: true 880 | optional: true 881 | 882 | /esbuild-linux-riscv64/0.15.18: 883 | resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} 884 | engines: {node: '>=12'} 885 | cpu: [riscv64] 886 | os: [linux] 887 | requiresBuild: true 888 | dev: true 889 | optional: true 890 | 891 | /esbuild-linux-s390x/0.15.18: 892 | resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} 893 | engines: {node: '>=12'} 894 | cpu: [s390x] 895 | os: [linux] 896 | requiresBuild: true 897 | dev: true 898 | optional: true 899 | 900 | /esbuild-netbsd-64/0.15.18: 901 | resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} 902 | engines: {node: '>=12'} 903 | cpu: [x64] 904 | os: [netbsd] 905 | requiresBuild: true 906 | dev: true 907 | optional: true 908 | 909 | /esbuild-openbsd-64/0.15.18: 910 | resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} 911 | engines: {node: '>=12'} 912 | cpu: [x64] 913 | os: [openbsd] 914 | requiresBuild: true 915 | dev: true 916 | optional: true 917 | 918 | /esbuild-sunos-64/0.15.18: 919 | resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} 920 | engines: {node: '>=12'} 921 | cpu: [x64] 922 | os: [sunos] 923 | requiresBuild: true 924 | dev: true 925 | optional: true 926 | 927 | /esbuild-windows-32/0.15.18: 928 | resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} 929 | engines: {node: '>=12'} 930 | cpu: [ia32] 931 | os: [win32] 932 | requiresBuild: true 933 | dev: true 934 | optional: true 935 | 936 | /esbuild-windows-64/0.15.18: 937 | resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} 938 | engines: {node: '>=12'} 939 | cpu: [x64] 940 | os: [win32] 941 | requiresBuild: true 942 | dev: true 943 | optional: true 944 | 945 | /esbuild-windows-arm64/0.15.18: 946 | resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} 947 | engines: {node: '>=12'} 948 | cpu: [arm64] 949 | os: [win32] 950 | requiresBuild: true 951 | dev: true 952 | optional: true 953 | 954 | /esbuild/0.15.18: 955 | resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} 956 | engines: {node: '>=12'} 957 | hasBin: true 958 | requiresBuild: true 959 | optionalDependencies: 960 | '@esbuild/android-arm': 0.15.18 961 | '@esbuild/linux-loong64': 0.15.18 962 | esbuild-android-64: 0.15.18 963 | esbuild-android-arm64: 0.15.18 964 | esbuild-darwin-64: 0.15.18 965 | esbuild-darwin-arm64: 0.15.18 966 | esbuild-freebsd-64: 0.15.18 967 | esbuild-freebsd-arm64: 0.15.18 968 | esbuild-linux-32: 0.15.18 969 | esbuild-linux-64: 0.15.18 970 | esbuild-linux-arm: 0.15.18 971 | esbuild-linux-arm64: 0.15.18 972 | esbuild-linux-mips64le: 0.15.18 973 | esbuild-linux-ppc64le: 0.15.18 974 | esbuild-linux-riscv64: 0.15.18 975 | esbuild-linux-s390x: 0.15.18 976 | esbuild-netbsd-64: 0.15.18 977 | esbuild-openbsd-64: 0.15.18 978 | esbuild-sunos-64: 0.15.18 979 | esbuild-windows-32: 0.15.18 980 | esbuild-windows-64: 0.15.18 981 | esbuild-windows-arm64: 0.15.18 982 | dev: true 983 | 984 | /escalade/3.1.1: 985 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 986 | engines: {node: '>=6'} 987 | dev: true 988 | 989 | /escape-string-regexp/1.0.5: 990 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 991 | engines: {node: '>=0.8.0'} 992 | dev: true 993 | 994 | /esprima/4.0.1: 995 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 996 | engines: {node: '>=4'} 997 | hasBin: true 998 | dev: true 999 | 1000 | /execa/5.1.1: 1001 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1002 | engines: {node: '>=10'} 1003 | dependencies: 1004 | cross-spawn: 7.0.3 1005 | get-stream: 6.0.1 1006 | human-signals: 2.1.0 1007 | is-stream: 2.0.1 1008 | merge-stream: 2.0.0 1009 | npm-run-path: 4.0.1 1010 | onetime: 5.1.2 1011 | signal-exit: 3.0.7 1012 | strip-final-newline: 2.0.0 1013 | dev: true 1014 | 1015 | /extendable-error/0.1.7: 1016 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 1017 | dev: true 1018 | 1019 | /external-editor/3.1.0: 1020 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 1021 | engines: {node: '>=4'} 1022 | dependencies: 1023 | chardet: 0.7.0 1024 | iconv-lite: 0.4.24 1025 | tmp: 0.0.33 1026 | dev: true 1027 | 1028 | /fast-deep-equal/3.1.3: 1029 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1030 | dev: false 1031 | 1032 | /fast-glob/3.2.12: 1033 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1034 | engines: {node: '>=8.6.0'} 1035 | dependencies: 1036 | '@nodelib/fs.stat': 2.0.5 1037 | '@nodelib/fs.walk': 1.2.8 1038 | glob-parent: 5.1.2 1039 | merge2: 1.4.1 1040 | micromatch: 4.0.5 1041 | dev: true 1042 | 1043 | /fast-loops/1.1.3: 1044 | resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} 1045 | dev: false 1046 | 1047 | /fast-shallow-equal/1.0.0: 1048 | resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} 1049 | dev: false 1050 | 1051 | /fastest-stable-stringify/2.0.2: 1052 | resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} 1053 | dev: false 1054 | 1055 | /fastq/1.15.0: 1056 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1057 | dependencies: 1058 | reusify: 1.0.4 1059 | dev: true 1060 | 1061 | /fill-range/7.0.1: 1062 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1063 | engines: {node: '>=8'} 1064 | dependencies: 1065 | to-regex-range: 5.0.1 1066 | dev: true 1067 | 1068 | /find-up/4.1.0: 1069 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1070 | engines: {node: '>=8'} 1071 | dependencies: 1072 | locate-path: 5.0.0 1073 | path-exists: 4.0.0 1074 | dev: true 1075 | 1076 | /find-up/5.0.0: 1077 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1078 | engines: {node: '>=10'} 1079 | dependencies: 1080 | locate-path: 6.0.0 1081 | path-exists: 4.0.0 1082 | dev: true 1083 | 1084 | /find-yarn-workspace-root2/1.2.16: 1085 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} 1086 | dependencies: 1087 | micromatch: 4.0.5 1088 | pkg-dir: 4.2.0 1089 | dev: true 1090 | 1091 | /for-each/0.3.3: 1092 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1093 | dependencies: 1094 | is-callable: 1.2.7 1095 | dev: true 1096 | 1097 | /fs-extra/7.0.1: 1098 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 1099 | engines: {node: '>=6 <7 || >=8'} 1100 | dependencies: 1101 | graceful-fs: 4.2.10 1102 | jsonfile: 4.0.0 1103 | universalify: 0.1.2 1104 | dev: true 1105 | 1106 | /fs-extra/8.1.0: 1107 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 1108 | engines: {node: '>=6 <7 || >=8'} 1109 | dependencies: 1110 | graceful-fs: 4.2.10 1111 | jsonfile: 4.0.0 1112 | universalify: 0.1.2 1113 | dev: true 1114 | 1115 | /fs.realpath/1.0.0: 1116 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1117 | dev: true 1118 | 1119 | /fsevents/2.3.2: 1120 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1121 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1122 | os: [darwin] 1123 | requiresBuild: true 1124 | dev: true 1125 | optional: true 1126 | 1127 | /function-bind/1.1.1: 1128 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1129 | dev: true 1130 | 1131 | /function.prototype.name/1.1.5: 1132 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1133 | engines: {node: '>= 0.4'} 1134 | dependencies: 1135 | call-bind: 1.0.2 1136 | define-properties: 1.1.4 1137 | es-abstract: 1.21.1 1138 | functions-have-names: 1.2.3 1139 | dev: true 1140 | 1141 | /functions-have-names/1.2.3: 1142 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1143 | dev: true 1144 | 1145 | /get-caller-file/2.0.5: 1146 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1147 | engines: {node: 6.* || 8.* || >= 10.*} 1148 | dev: true 1149 | 1150 | /get-intrinsic/1.1.3: 1151 | resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} 1152 | dependencies: 1153 | function-bind: 1.1.1 1154 | has: 1.0.3 1155 | has-symbols: 1.0.3 1156 | dev: true 1157 | 1158 | /get-stream/6.0.1: 1159 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1160 | engines: {node: '>=10'} 1161 | dev: true 1162 | 1163 | /get-symbol-description/1.0.0: 1164 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1165 | engines: {node: '>= 0.4'} 1166 | dependencies: 1167 | call-bind: 1.0.2 1168 | get-intrinsic: 1.1.3 1169 | dev: true 1170 | 1171 | /glob-parent/5.1.2: 1172 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1173 | engines: {node: '>= 6'} 1174 | dependencies: 1175 | is-glob: 4.0.3 1176 | dev: true 1177 | 1178 | /glob/7.1.6: 1179 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1180 | dependencies: 1181 | fs.realpath: 1.0.0 1182 | inflight: 1.0.6 1183 | inherits: 2.0.4 1184 | minimatch: 3.1.2 1185 | once: 1.4.0 1186 | path-is-absolute: 1.0.1 1187 | dev: true 1188 | 1189 | /globalthis/1.0.3: 1190 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1191 | engines: {node: '>= 0.4'} 1192 | dependencies: 1193 | define-properties: 1.1.4 1194 | dev: true 1195 | 1196 | /globby/11.1.0: 1197 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1198 | engines: {node: '>=10'} 1199 | dependencies: 1200 | array-union: 2.1.0 1201 | dir-glob: 3.0.1 1202 | fast-glob: 3.2.12 1203 | ignore: 5.2.4 1204 | merge2: 1.4.1 1205 | slash: 3.0.0 1206 | dev: true 1207 | 1208 | /gopd/1.0.1: 1209 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1210 | dependencies: 1211 | get-intrinsic: 1.1.3 1212 | dev: true 1213 | 1214 | /graceful-fs/4.2.10: 1215 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1216 | dev: true 1217 | 1218 | /grapheme-splitter/1.0.4: 1219 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1220 | dev: true 1221 | 1222 | /hard-rejection/2.1.0: 1223 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} 1224 | engines: {node: '>=6'} 1225 | dev: true 1226 | 1227 | /has-bigints/1.0.2: 1228 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1229 | dev: true 1230 | 1231 | /has-flag/3.0.0: 1232 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1233 | engines: {node: '>=4'} 1234 | dev: true 1235 | 1236 | /has-flag/4.0.0: 1237 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1238 | engines: {node: '>=8'} 1239 | dev: true 1240 | 1241 | /has-property-descriptors/1.0.0: 1242 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1243 | dependencies: 1244 | get-intrinsic: 1.1.3 1245 | dev: true 1246 | 1247 | /has-proto/1.0.1: 1248 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1249 | engines: {node: '>= 0.4'} 1250 | dev: true 1251 | 1252 | /has-symbols/1.0.3: 1253 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1254 | engines: {node: '>= 0.4'} 1255 | dev: true 1256 | 1257 | /has-tostringtag/1.0.0: 1258 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1259 | engines: {node: '>= 0.4'} 1260 | dependencies: 1261 | has-symbols: 1.0.3 1262 | dev: true 1263 | 1264 | /has/1.0.3: 1265 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1266 | engines: {node: '>= 0.4.0'} 1267 | dependencies: 1268 | function-bind: 1.1.1 1269 | dev: true 1270 | 1271 | /hosted-git-info/2.8.9: 1272 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 1273 | dev: true 1274 | 1275 | /human-id/1.0.2: 1276 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} 1277 | dev: true 1278 | 1279 | /human-signals/2.1.0: 1280 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1281 | engines: {node: '>=10.17.0'} 1282 | dev: true 1283 | 1284 | /hyphenate-style-name/1.0.4: 1285 | resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} 1286 | dev: false 1287 | 1288 | /iconv-lite/0.4.24: 1289 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1290 | engines: {node: '>=0.10.0'} 1291 | dependencies: 1292 | safer-buffer: 2.1.2 1293 | dev: true 1294 | 1295 | /ignore/5.2.4: 1296 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1297 | engines: {node: '>= 4'} 1298 | dev: true 1299 | 1300 | /indent-string/4.0.0: 1301 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1302 | engines: {node: '>=8'} 1303 | dev: true 1304 | 1305 | /inflight/1.0.6: 1306 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1307 | dependencies: 1308 | once: 1.4.0 1309 | wrappy: 1.0.2 1310 | dev: true 1311 | 1312 | /inherits/2.0.4: 1313 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1314 | dev: true 1315 | 1316 | /inline-style-prefixer/6.0.4: 1317 | resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} 1318 | dependencies: 1319 | css-in-js-utils: 3.1.0 1320 | fast-loops: 1.1.3 1321 | dev: false 1322 | 1323 | /internal-slot/1.0.4: 1324 | resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} 1325 | engines: {node: '>= 0.4'} 1326 | dependencies: 1327 | get-intrinsic: 1.1.3 1328 | has: 1.0.3 1329 | side-channel: 1.0.4 1330 | dev: true 1331 | 1332 | /is-array-buffer/3.0.1: 1333 | resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} 1334 | dependencies: 1335 | call-bind: 1.0.2 1336 | get-intrinsic: 1.1.3 1337 | is-typed-array: 1.1.10 1338 | dev: true 1339 | 1340 | /is-arrayish/0.2.1: 1341 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1342 | dev: true 1343 | 1344 | /is-bigint/1.0.4: 1345 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1346 | dependencies: 1347 | has-bigints: 1.0.2 1348 | dev: true 1349 | 1350 | /is-binary-path/2.1.0: 1351 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1352 | engines: {node: '>=8'} 1353 | dependencies: 1354 | binary-extensions: 2.2.0 1355 | dev: true 1356 | 1357 | /is-boolean-object/1.1.2: 1358 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1359 | engines: {node: '>= 0.4'} 1360 | dependencies: 1361 | call-bind: 1.0.2 1362 | has-tostringtag: 1.0.0 1363 | dev: true 1364 | 1365 | /is-callable/1.2.7: 1366 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1367 | engines: {node: '>= 0.4'} 1368 | dev: true 1369 | 1370 | /is-ci/3.0.1: 1371 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} 1372 | hasBin: true 1373 | dependencies: 1374 | ci-info: 3.7.1 1375 | dev: true 1376 | 1377 | /is-core-module/2.11.0: 1378 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 1379 | dependencies: 1380 | has: 1.0.3 1381 | dev: true 1382 | 1383 | /is-date-object/1.0.5: 1384 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1385 | engines: {node: '>= 0.4'} 1386 | dependencies: 1387 | has-tostringtag: 1.0.0 1388 | dev: true 1389 | 1390 | /is-extglob/2.1.1: 1391 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1392 | engines: {node: '>=0.10.0'} 1393 | dev: true 1394 | 1395 | /is-fullwidth-code-point/3.0.0: 1396 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1397 | engines: {node: '>=8'} 1398 | dev: true 1399 | 1400 | /is-glob/4.0.3: 1401 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1402 | engines: {node: '>=0.10.0'} 1403 | dependencies: 1404 | is-extglob: 2.1.1 1405 | dev: true 1406 | 1407 | /is-negative-zero/2.0.2: 1408 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1409 | engines: {node: '>= 0.4'} 1410 | dev: true 1411 | 1412 | /is-number-object/1.0.7: 1413 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1414 | engines: {node: '>= 0.4'} 1415 | dependencies: 1416 | has-tostringtag: 1.0.0 1417 | dev: true 1418 | 1419 | /is-number/7.0.0: 1420 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1421 | engines: {node: '>=0.12.0'} 1422 | dev: true 1423 | 1424 | /is-plain-obj/1.1.0: 1425 | resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} 1426 | engines: {node: '>=0.10.0'} 1427 | dev: true 1428 | 1429 | /is-regex/1.1.4: 1430 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1431 | engines: {node: '>= 0.4'} 1432 | dependencies: 1433 | call-bind: 1.0.2 1434 | has-tostringtag: 1.0.0 1435 | dev: true 1436 | 1437 | /is-shared-array-buffer/1.0.2: 1438 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1439 | dependencies: 1440 | call-bind: 1.0.2 1441 | dev: true 1442 | 1443 | /is-stream/2.0.1: 1444 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1445 | engines: {node: '>=8'} 1446 | dev: true 1447 | 1448 | /is-string/1.0.7: 1449 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1450 | engines: {node: '>= 0.4'} 1451 | dependencies: 1452 | has-tostringtag: 1.0.0 1453 | dev: true 1454 | 1455 | /is-subdir/1.2.0: 1456 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 1457 | engines: {node: '>=4'} 1458 | dependencies: 1459 | better-path-resolve: 1.0.0 1460 | dev: true 1461 | 1462 | /is-symbol/1.0.4: 1463 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1464 | engines: {node: '>= 0.4'} 1465 | dependencies: 1466 | has-symbols: 1.0.3 1467 | dev: true 1468 | 1469 | /is-typed-array/1.1.10: 1470 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} 1471 | engines: {node: '>= 0.4'} 1472 | dependencies: 1473 | available-typed-arrays: 1.0.5 1474 | call-bind: 1.0.2 1475 | for-each: 0.3.3 1476 | gopd: 1.0.1 1477 | has-tostringtag: 1.0.0 1478 | dev: true 1479 | 1480 | /is-weakref/1.0.2: 1481 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1482 | dependencies: 1483 | call-bind: 1.0.2 1484 | dev: true 1485 | 1486 | /is-windows/1.0.2: 1487 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1488 | engines: {node: '>=0.10.0'} 1489 | dev: true 1490 | 1491 | /isexe/2.0.0: 1492 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1493 | dev: true 1494 | 1495 | /joycon/3.1.1: 1496 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1497 | engines: {node: '>=10'} 1498 | dev: true 1499 | 1500 | /js-cookie/2.2.1: 1501 | resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} 1502 | dev: false 1503 | 1504 | /js-tokens/4.0.0: 1505 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1506 | 1507 | /js-yaml/3.14.1: 1508 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1509 | hasBin: true 1510 | dependencies: 1511 | argparse: 1.0.10 1512 | esprima: 4.0.1 1513 | dev: true 1514 | 1515 | /json-parse-even-better-errors/2.3.1: 1516 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1517 | dev: true 1518 | 1519 | /jsonfile/4.0.0: 1520 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 1521 | optionalDependencies: 1522 | graceful-fs: 4.2.10 1523 | dev: true 1524 | 1525 | /kind-of/6.0.3: 1526 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 1527 | engines: {node: '>=0.10.0'} 1528 | dev: true 1529 | 1530 | /kleur/4.1.5: 1531 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1532 | engines: {node: '>=6'} 1533 | dev: true 1534 | 1535 | /lilconfig/2.0.6: 1536 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} 1537 | engines: {node: '>=10'} 1538 | dev: true 1539 | 1540 | /lines-and-columns/1.2.4: 1541 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1542 | dev: true 1543 | 1544 | /load-tsconfig/0.2.3: 1545 | resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==} 1546 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1547 | dev: true 1548 | 1549 | /load-yaml-file/0.2.0: 1550 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} 1551 | engines: {node: '>=6'} 1552 | dependencies: 1553 | graceful-fs: 4.2.10 1554 | js-yaml: 3.14.1 1555 | pify: 4.0.1 1556 | strip-bom: 3.0.0 1557 | dev: true 1558 | 1559 | /locate-path/5.0.0: 1560 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1561 | engines: {node: '>=8'} 1562 | dependencies: 1563 | p-locate: 4.1.0 1564 | dev: true 1565 | 1566 | /locate-path/6.0.0: 1567 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1568 | engines: {node: '>=10'} 1569 | dependencies: 1570 | p-locate: 5.0.0 1571 | dev: true 1572 | 1573 | /lodash.sortby/4.7.0: 1574 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1575 | dev: true 1576 | 1577 | /lodash.startcase/4.4.0: 1578 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 1579 | dev: true 1580 | 1581 | /loose-envify/1.4.0: 1582 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1583 | hasBin: true 1584 | dependencies: 1585 | js-tokens: 4.0.0 1586 | dev: false 1587 | 1588 | /lru-cache/4.1.5: 1589 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 1590 | dependencies: 1591 | pseudomap: 1.0.2 1592 | yallist: 2.1.2 1593 | dev: true 1594 | 1595 | /map-obj/1.0.1: 1596 | resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} 1597 | engines: {node: '>=0.10.0'} 1598 | dev: true 1599 | 1600 | /map-obj/4.3.0: 1601 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} 1602 | engines: {node: '>=8'} 1603 | dev: true 1604 | 1605 | /mdn-data/2.0.14: 1606 | resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} 1607 | dev: false 1608 | 1609 | /meow/6.1.1: 1610 | resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} 1611 | engines: {node: '>=8'} 1612 | dependencies: 1613 | '@types/minimist': 1.2.2 1614 | camelcase-keys: 6.2.2 1615 | decamelize-keys: 1.1.1 1616 | hard-rejection: 2.1.0 1617 | minimist-options: 4.1.0 1618 | normalize-package-data: 2.5.0 1619 | read-pkg-up: 7.0.1 1620 | redent: 3.0.0 1621 | trim-newlines: 3.0.1 1622 | type-fest: 0.13.1 1623 | yargs-parser: 18.1.3 1624 | dev: true 1625 | 1626 | /merge-stream/2.0.0: 1627 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1628 | dev: true 1629 | 1630 | /merge2/1.4.1: 1631 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1632 | engines: {node: '>= 8'} 1633 | dev: true 1634 | 1635 | /micromatch/4.0.5: 1636 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1637 | engines: {node: '>=8.6'} 1638 | dependencies: 1639 | braces: 3.0.2 1640 | picomatch: 2.3.1 1641 | dev: true 1642 | 1643 | /mimic-fn/2.1.0: 1644 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1645 | engines: {node: '>=6'} 1646 | dev: true 1647 | 1648 | /min-indent/1.0.1: 1649 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1650 | engines: {node: '>=4'} 1651 | dev: true 1652 | 1653 | /minimatch/3.1.2: 1654 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1655 | dependencies: 1656 | brace-expansion: 1.1.11 1657 | dev: true 1658 | 1659 | /minimist-options/4.1.0: 1660 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} 1661 | engines: {node: '>= 6'} 1662 | dependencies: 1663 | arrify: 1.0.1 1664 | is-plain-obj: 1.1.0 1665 | kind-of: 6.0.3 1666 | dev: true 1667 | 1668 | /mixme/0.5.4: 1669 | resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} 1670 | engines: {node: '>= 8.0.0'} 1671 | dev: true 1672 | 1673 | /ms/2.1.2: 1674 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1675 | dev: true 1676 | 1677 | /mz/2.7.0: 1678 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1679 | dependencies: 1680 | any-promise: 1.3.0 1681 | object-assign: 4.1.1 1682 | thenify-all: 1.6.0 1683 | dev: true 1684 | 1685 | /nano-css/5.3.5_biqbaboplfbrettd7655fr4n2y: 1686 | resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==} 1687 | peerDependencies: 1688 | react: '*' 1689 | react-dom: '*' 1690 | dependencies: 1691 | css-tree: 1.1.3 1692 | csstype: 3.1.1 1693 | fastest-stable-stringify: 2.0.2 1694 | inline-style-prefixer: 6.0.4 1695 | react: 18.2.0 1696 | react-dom: 18.2.0_react@18.2.0 1697 | rtl-css-js: 1.16.1 1698 | sourcemap-codec: 1.4.8 1699 | stacktrace-js: 2.0.2 1700 | stylis: 4.1.3 1701 | dev: false 1702 | 1703 | /normalize-package-data/2.5.0: 1704 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 1705 | dependencies: 1706 | hosted-git-info: 2.8.9 1707 | resolve: 1.22.1 1708 | semver: 5.7.1 1709 | validate-npm-package-license: 3.0.4 1710 | dev: true 1711 | 1712 | /normalize-path/3.0.0: 1713 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1714 | engines: {node: '>=0.10.0'} 1715 | dev: true 1716 | 1717 | /npm-run-path/4.0.1: 1718 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1719 | engines: {node: '>=8'} 1720 | dependencies: 1721 | path-key: 3.1.1 1722 | dev: true 1723 | 1724 | /object-assign/4.1.1: 1725 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1726 | engines: {node: '>=0.10.0'} 1727 | dev: true 1728 | 1729 | /object-inspect/1.12.3: 1730 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 1731 | dev: true 1732 | 1733 | /object-keys/1.1.1: 1734 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1735 | engines: {node: '>= 0.4'} 1736 | dev: true 1737 | 1738 | /object.assign/4.1.4: 1739 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 1740 | engines: {node: '>= 0.4'} 1741 | dependencies: 1742 | call-bind: 1.0.2 1743 | define-properties: 1.1.4 1744 | has-symbols: 1.0.3 1745 | object-keys: 1.1.1 1746 | dev: true 1747 | 1748 | /once/1.4.0: 1749 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1750 | dependencies: 1751 | wrappy: 1.0.2 1752 | dev: true 1753 | 1754 | /onetime/5.1.2: 1755 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1756 | engines: {node: '>=6'} 1757 | dependencies: 1758 | mimic-fn: 2.1.0 1759 | dev: true 1760 | 1761 | /os-tmpdir/1.0.2: 1762 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 1763 | engines: {node: '>=0.10.0'} 1764 | dev: true 1765 | 1766 | /outdent/0.5.0: 1767 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 1768 | dev: true 1769 | 1770 | /p-filter/2.1.0: 1771 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 1772 | engines: {node: '>=8'} 1773 | dependencies: 1774 | p-map: 2.1.0 1775 | dev: true 1776 | 1777 | /p-limit/2.3.0: 1778 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1779 | engines: {node: '>=6'} 1780 | dependencies: 1781 | p-try: 2.2.0 1782 | dev: true 1783 | 1784 | /p-limit/3.1.0: 1785 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1786 | engines: {node: '>=10'} 1787 | dependencies: 1788 | yocto-queue: 0.1.0 1789 | dev: true 1790 | 1791 | /p-locate/4.1.0: 1792 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1793 | engines: {node: '>=8'} 1794 | dependencies: 1795 | p-limit: 2.3.0 1796 | dev: true 1797 | 1798 | /p-locate/5.0.0: 1799 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1800 | engines: {node: '>=10'} 1801 | dependencies: 1802 | p-limit: 3.1.0 1803 | dev: true 1804 | 1805 | /p-map/2.1.0: 1806 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 1807 | engines: {node: '>=6'} 1808 | dev: true 1809 | 1810 | /p-try/2.2.0: 1811 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1812 | engines: {node: '>=6'} 1813 | dev: true 1814 | 1815 | /parse-json/5.2.0: 1816 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1817 | engines: {node: '>=8'} 1818 | dependencies: 1819 | '@babel/code-frame': 7.18.6 1820 | error-ex: 1.3.2 1821 | json-parse-even-better-errors: 2.3.1 1822 | lines-and-columns: 1.2.4 1823 | dev: true 1824 | 1825 | /path-exists/4.0.0: 1826 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1827 | engines: {node: '>=8'} 1828 | dev: true 1829 | 1830 | /path-is-absolute/1.0.1: 1831 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1832 | engines: {node: '>=0.10.0'} 1833 | dev: true 1834 | 1835 | /path-key/3.1.1: 1836 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1837 | engines: {node: '>=8'} 1838 | dev: true 1839 | 1840 | /path-parse/1.0.7: 1841 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1842 | dev: true 1843 | 1844 | /path-type/4.0.0: 1845 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1846 | engines: {node: '>=8'} 1847 | dev: true 1848 | 1849 | /picomatch/2.3.1: 1850 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1851 | engines: {node: '>=8.6'} 1852 | dev: true 1853 | 1854 | /pify/4.0.1: 1855 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 1856 | engines: {node: '>=6'} 1857 | dev: true 1858 | 1859 | /pirates/4.0.5: 1860 | resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 1861 | engines: {node: '>= 6'} 1862 | dev: true 1863 | 1864 | /pkg-dir/4.2.0: 1865 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 1866 | engines: {node: '>=8'} 1867 | dependencies: 1868 | find-up: 4.1.0 1869 | dev: true 1870 | 1871 | /postcss-load-config/3.1.4: 1872 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1873 | engines: {node: '>= 10'} 1874 | peerDependencies: 1875 | postcss: '>=8.0.9' 1876 | ts-node: '>=9.0.0' 1877 | peerDependenciesMeta: 1878 | postcss: 1879 | optional: true 1880 | ts-node: 1881 | optional: true 1882 | dependencies: 1883 | lilconfig: 2.0.6 1884 | yaml: 1.10.2 1885 | dev: true 1886 | 1887 | /preferred-pm/3.0.3: 1888 | resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} 1889 | engines: {node: '>=10'} 1890 | dependencies: 1891 | find-up: 5.0.0 1892 | find-yarn-workspace-root2: 1.2.16 1893 | path-exists: 4.0.0 1894 | which-pm: 2.0.0 1895 | dev: true 1896 | 1897 | /prettier/2.8.3: 1898 | resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} 1899 | engines: {node: '>=10.13.0'} 1900 | hasBin: true 1901 | dev: true 1902 | 1903 | /pseudomap/1.0.2: 1904 | resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} 1905 | dev: true 1906 | 1907 | /punycode/2.2.0: 1908 | resolution: {integrity: sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==} 1909 | engines: {node: '>=6'} 1910 | dev: true 1911 | 1912 | /queue-microtask/1.2.3: 1913 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1914 | dev: true 1915 | 1916 | /quick-lru/4.0.1: 1917 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} 1918 | engines: {node: '>=8'} 1919 | dev: true 1920 | 1921 | /react-dom/18.2.0_react@18.2.0: 1922 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 1923 | peerDependencies: 1924 | react: ^18.2.0 1925 | dependencies: 1926 | loose-envify: 1.4.0 1927 | react: 18.2.0 1928 | scheduler: 0.23.0 1929 | dev: false 1930 | 1931 | /react-universal-interface/0.6.2_react@18.2.0+tslib@2.4.1: 1932 | resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} 1933 | peerDependencies: 1934 | react: '*' 1935 | tslib: '*' 1936 | dependencies: 1937 | react: 18.2.0 1938 | tslib: 2.4.1 1939 | dev: false 1940 | 1941 | /react-use/17.4.0_biqbaboplfbrettd7655fr4n2y: 1942 | resolution: {integrity: sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==} 1943 | peerDependencies: 1944 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1945 | react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 1946 | dependencies: 1947 | '@types/js-cookie': 2.2.7 1948 | '@xobotyi/scrollbar-width': 1.9.5 1949 | copy-to-clipboard: 3.3.3 1950 | fast-deep-equal: 3.1.3 1951 | fast-shallow-equal: 1.0.0 1952 | js-cookie: 2.2.1 1953 | nano-css: 5.3.5_biqbaboplfbrettd7655fr4n2y 1954 | react: 18.2.0 1955 | react-dom: 18.2.0_react@18.2.0 1956 | react-universal-interface: 0.6.2_react@18.2.0+tslib@2.4.1 1957 | resize-observer-polyfill: 1.5.1 1958 | screenfull: 5.2.0 1959 | set-harmonic-interval: 1.0.1 1960 | throttle-debounce: 3.0.1 1961 | ts-easing: 0.2.0 1962 | tslib: 2.4.1 1963 | dev: false 1964 | 1965 | /react/18.2.0: 1966 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 1967 | engines: {node: '>=0.10.0'} 1968 | dependencies: 1969 | loose-envify: 1.4.0 1970 | dev: false 1971 | 1972 | /read-pkg-up/7.0.1: 1973 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 1974 | engines: {node: '>=8'} 1975 | dependencies: 1976 | find-up: 4.1.0 1977 | read-pkg: 5.2.0 1978 | type-fest: 0.8.1 1979 | dev: true 1980 | 1981 | /read-pkg/5.2.0: 1982 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 1983 | engines: {node: '>=8'} 1984 | dependencies: 1985 | '@types/normalize-package-data': 2.4.1 1986 | normalize-package-data: 2.5.0 1987 | parse-json: 5.2.0 1988 | type-fest: 0.6.0 1989 | dev: true 1990 | 1991 | /read-yaml-file/1.1.0: 1992 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 1993 | engines: {node: '>=6'} 1994 | dependencies: 1995 | graceful-fs: 4.2.10 1996 | js-yaml: 3.14.1 1997 | pify: 4.0.1 1998 | strip-bom: 3.0.0 1999 | dev: true 2000 | 2001 | /readdirp/3.6.0: 2002 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2003 | engines: {node: '>=8.10.0'} 2004 | dependencies: 2005 | picomatch: 2.3.1 2006 | dev: true 2007 | 2008 | /redent/3.0.0: 2009 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 2010 | engines: {node: '>=8'} 2011 | dependencies: 2012 | indent-string: 4.0.0 2013 | strip-indent: 3.0.0 2014 | dev: true 2015 | 2016 | /regenerator-runtime/0.13.11: 2017 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 2018 | 2019 | /regexp.prototype.flags/1.4.3: 2020 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 2021 | engines: {node: '>= 0.4'} 2022 | dependencies: 2023 | call-bind: 1.0.2 2024 | define-properties: 1.1.4 2025 | functions-have-names: 1.2.3 2026 | dev: true 2027 | 2028 | /require-directory/2.1.1: 2029 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 2030 | engines: {node: '>=0.10.0'} 2031 | dev: true 2032 | 2033 | /require-main-filename/2.0.0: 2034 | resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} 2035 | dev: true 2036 | 2037 | /resize-observer-polyfill/1.5.1: 2038 | resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} 2039 | dev: false 2040 | 2041 | /resolve-from/5.0.0: 2042 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2043 | engines: {node: '>=8'} 2044 | dev: true 2045 | 2046 | /resolve/1.22.1: 2047 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 2048 | hasBin: true 2049 | dependencies: 2050 | is-core-module: 2.11.0 2051 | path-parse: 1.0.7 2052 | supports-preserve-symlinks-flag: 1.0.0 2053 | dev: true 2054 | 2055 | /reusify/1.0.4: 2056 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2057 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2058 | dev: true 2059 | 2060 | /rollup/3.10.0: 2061 | resolution: {integrity: sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==} 2062 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 2063 | hasBin: true 2064 | optionalDependencies: 2065 | fsevents: 2.3.2 2066 | dev: true 2067 | 2068 | /rtl-css-js/1.16.1: 2069 | resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} 2070 | dependencies: 2071 | '@babel/runtime': 7.20.7 2072 | dev: false 2073 | 2074 | /run-parallel/1.2.0: 2075 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2076 | dependencies: 2077 | queue-microtask: 1.2.3 2078 | dev: true 2079 | 2080 | /safe-regex-test/1.0.0: 2081 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 2082 | dependencies: 2083 | call-bind: 1.0.2 2084 | get-intrinsic: 1.1.3 2085 | is-regex: 1.1.4 2086 | dev: true 2087 | 2088 | /safer-buffer/2.1.2: 2089 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2090 | dev: true 2091 | 2092 | /scheduler/0.23.0: 2093 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2094 | dependencies: 2095 | loose-envify: 1.4.0 2096 | dev: false 2097 | 2098 | /screenfull/5.2.0: 2099 | resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} 2100 | engines: {node: '>=0.10.0'} 2101 | dev: false 2102 | 2103 | /semver/5.7.1: 2104 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 2105 | hasBin: true 2106 | dev: true 2107 | 2108 | /set-blocking/2.0.0: 2109 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 2110 | dev: true 2111 | 2112 | /set-harmonic-interval/1.0.1: 2113 | resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} 2114 | engines: {node: '>=6.9'} 2115 | dev: false 2116 | 2117 | /shebang-command/1.2.0: 2118 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} 2119 | engines: {node: '>=0.10.0'} 2120 | dependencies: 2121 | shebang-regex: 1.0.0 2122 | dev: true 2123 | 2124 | /shebang-command/2.0.0: 2125 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2126 | engines: {node: '>=8'} 2127 | dependencies: 2128 | shebang-regex: 3.0.0 2129 | dev: true 2130 | 2131 | /shebang-regex/1.0.0: 2132 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} 2133 | engines: {node: '>=0.10.0'} 2134 | dev: true 2135 | 2136 | /shebang-regex/3.0.0: 2137 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2138 | engines: {node: '>=8'} 2139 | dev: true 2140 | 2141 | /side-channel/1.0.4: 2142 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2143 | dependencies: 2144 | call-bind: 1.0.2 2145 | get-intrinsic: 1.1.3 2146 | object-inspect: 1.12.3 2147 | dev: true 2148 | 2149 | /signal-exit/3.0.7: 2150 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2151 | dev: true 2152 | 2153 | /slash/3.0.0: 2154 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2155 | engines: {node: '>=8'} 2156 | dev: true 2157 | 2158 | /smartwrap/2.0.2: 2159 | resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} 2160 | engines: {node: '>=6'} 2161 | hasBin: true 2162 | dependencies: 2163 | array.prototype.flat: 1.3.1 2164 | breakword: 1.0.5 2165 | grapheme-splitter: 1.0.4 2166 | strip-ansi: 6.0.1 2167 | wcwidth: 1.0.1 2168 | yargs: 15.4.1 2169 | dev: true 2170 | 2171 | /source-map/0.5.6: 2172 | resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} 2173 | engines: {node: '>=0.10.0'} 2174 | dev: false 2175 | 2176 | /source-map/0.6.1: 2177 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2178 | engines: {node: '>=0.10.0'} 2179 | dev: false 2180 | 2181 | /source-map/0.8.0-beta.0: 2182 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 2183 | engines: {node: '>= 8'} 2184 | dependencies: 2185 | whatwg-url: 7.1.0 2186 | dev: true 2187 | 2188 | /sourcemap-codec/1.4.8: 2189 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2190 | deprecated: Please use @jridgewell/sourcemap-codec instead 2191 | dev: false 2192 | 2193 | /spawndamnit/2.0.0: 2194 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} 2195 | dependencies: 2196 | cross-spawn: 5.1.0 2197 | signal-exit: 3.0.7 2198 | dev: true 2199 | 2200 | /spdx-correct/3.1.1: 2201 | resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} 2202 | dependencies: 2203 | spdx-expression-parse: 3.0.1 2204 | spdx-license-ids: 3.0.12 2205 | dev: true 2206 | 2207 | /spdx-exceptions/2.3.0: 2208 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 2209 | dev: true 2210 | 2211 | /spdx-expression-parse/3.0.1: 2212 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 2213 | dependencies: 2214 | spdx-exceptions: 2.3.0 2215 | spdx-license-ids: 3.0.12 2216 | dev: true 2217 | 2218 | /spdx-license-ids/3.0.12: 2219 | resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} 2220 | dev: true 2221 | 2222 | /sprintf-js/1.0.3: 2223 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 2224 | dev: true 2225 | 2226 | /stack-generator/2.0.10: 2227 | resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} 2228 | dependencies: 2229 | stackframe: 1.3.4 2230 | dev: false 2231 | 2232 | /stackframe/1.3.4: 2233 | resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} 2234 | dev: false 2235 | 2236 | /stacktrace-gps/3.1.2: 2237 | resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} 2238 | dependencies: 2239 | source-map: 0.5.6 2240 | stackframe: 1.3.4 2241 | dev: false 2242 | 2243 | /stacktrace-js/2.0.2: 2244 | resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} 2245 | dependencies: 2246 | error-stack-parser: 2.1.4 2247 | stack-generator: 2.0.10 2248 | stacktrace-gps: 3.1.2 2249 | dev: false 2250 | 2251 | /stream-transform/2.1.3: 2252 | resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} 2253 | dependencies: 2254 | mixme: 0.5.4 2255 | dev: true 2256 | 2257 | /string-width/4.2.3: 2258 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2259 | engines: {node: '>=8'} 2260 | dependencies: 2261 | emoji-regex: 8.0.0 2262 | is-fullwidth-code-point: 3.0.0 2263 | strip-ansi: 6.0.1 2264 | dev: true 2265 | 2266 | /string.prototype.trimend/1.0.6: 2267 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 2268 | dependencies: 2269 | call-bind: 1.0.2 2270 | define-properties: 1.1.4 2271 | es-abstract: 1.21.1 2272 | dev: true 2273 | 2274 | /string.prototype.trimstart/1.0.6: 2275 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 2276 | dependencies: 2277 | call-bind: 1.0.2 2278 | define-properties: 1.1.4 2279 | es-abstract: 1.21.1 2280 | dev: true 2281 | 2282 | /strip-ansi/6.0.1: 2283 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2284 | engines: {node: '>=8'} 2285 | dependencies: 2286 | ansi-regex: 5.0.1 2287 | dev: true 2288 | 2289 | /strip-bom/3.0.0: 2290 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2291 | engines: {node: '>=4'} 2292 | dev: true 2293 | 2294 | /strip-final-newline/2.0.0: 2295 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2296 | engines: {node: '>=6'} 2297 | dev: true 2298 | 2299 | /strip-indent/3.0.0: 2300 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 2301 | engines: {node: '>=8'} 2302 | dependencies: 2303 | min-indent: 1.0.1 2304 | dev: true 2305 | 2306 | /stylis/4.1.3: 2307 | resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} 2308 | dev: false 2309 | 2310 | /sucrase/3.29.0: 2311 | resolution: {integrity: sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==} 2312 | engines: {node: '>=8'} 2313 | hasBin: true 2314 | dependencies: 2315 | commander: 4.1.1 2316 | glob: 7.1.6 2317 | lines-and-columns: 1.2.4 2318 | mz: 2.7.0 2319 | pirates: 4.0.5 2320 | ts-interface-checker: 0.1.13 2321 | dev: true 2322 | 2323 | /supports-color/5.5.0: 2324 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2325 | engines: {node: '>=4'} 2326 | dependencies: 2327 | has-flag: 3.0.0 2328 | dev: true 2329 | 2330 | /supports-color/7.2.0: 2331 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2332 | engines: {node: '>=8'} 2333 | dependencies: 2334 | has-flag: 4.0.0 2335 | dev: true 2336 | 2337 | /supports-preserve-symlinks-flag/1.0.0: 2338 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2339 | engines: {node: '>= 0.4'} 2340 | dev: true 2341 | 2342 | /term-size/2.2.1: 2343 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 2344 | engines: {node: '>=8'} 2345 | dev: true 2346 | 2347 | /thenify-all/1.6.0: 2348 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2349 | engines: {node: '>=0.8'} 2350 | dependencies: 2351 | thenify: 3.3.1 2352 | dev: true 2353 | 2354 | /thenify/3.3.1: 2355 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2356 | dependencies: 2357 | any-promise: 1.3.0 2358 | dev: true 2359 | 2360 | /throttle-debounce/3.0.1: 2361 | resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} 2362 | engines: {node: '>=10'} 2363 | dev: false 2364 | 2365 | /tmp/0.0.33: 2366 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 2367 | engines: {node: '>=0.6.0'} 2368 | dependencies: 2369 | os-tmpdir: 1.0.2 2370 | dev: true 2371 | 2372 | /to-regex-range/5.0.1: 2373 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2374 | engines: {node: '>=8.0'} 2375 | dependencies: 2376 | is-number: 7.0.0 2377 | dev: true 2378 | 2379 | /toggle-selection/1.0.6: 2380 | resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} 2381 | dev: false 2382 | 2383 | /tr46/1.0.1: 2384 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 2385 | dependencies: 2386 | punycode: 2.2.0 2387 | dev: true 2388 | 2389 | /tree-kill/1.2.2: 2390 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 2391 | hasBin: true 2392 | dev: true 2393 | 2394 | /trim-newlines/3.0.1: 2395 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} 2396 | engines: {node: '>=8'} 2397 | dev: true 2398 | 2399 | /ts-easing/0.2.0: 2400 | resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} 2401 | dev: false 2402 | 2403 | /ts-interface-checker/0.1.13: 2404 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2405 | dev: true 2406 | 2407 | /tslib/2.4.1: 2408 | resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} 2409 | dev: false 2410 | 2411 | /tsup/6.5.0_typescript@4.9.4: 2412 | resolution: {integrity: sha512-36u82r7rYqRHFkD15R20Cd4ercPkbYmuvRkz3Q1LCm5BsiFNUgpo36zbjVhCOgvjyxNBWNKHsaD5Rl8SykfzNA==} 2413 | engines: {node: '>=14'} 2414 | hasBin: true 2415 | peerDependencies: 2416 | '@swc/core': ^1 2417 | postcss: ^8.4.12 2418 | typescript: ^4.1.0 2419 | peerDependenciesMeta: 2420 | '@swc/core': 2421 | optional: true 2422 | postcss: 2423 | optional: true 2424 | typescript: 2425 | optional: true 2426 | dependencies: 2427 | bundle-require: 3.1.2_esbuild@0.15.18 2428 | cac: 6.7.14 2429 | chokidar: 3.5.3 2430 | debug: 4.3.4 2431 | esbuild: 0.15.18 2432 | execa: 5.1.1 2433 | globby: 11.1.0 2434 | joycon: 3.1.1 2435 | postcss-load-config: 3.1.4 2436 | resolve-from: 5.0.0 2437 | rollup: 3.10.0 2438 | source-map: 0.8.0-beta.0 2439 | sucrase: 3.29.0 2440 | tree-kill: 1.2.2 2441 | typescript: 4.9.4 2442 | transitivePeerDependencies: 2443 | - supports-color 2444 | - ts-node 2445 | dev: true 2446 | 2447 | /tty-table/4.1.6: 2448 | resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} 2449 | engines: {node: '>=8.0.0'} 2450 | hasBin: true 2451 | dependencies: 2452 | chalk: 4.1.2 2453 | csv: 5.5.3 2454 | kleur: 4.1.5 2455 | smartwrap: 2.0.2 2456 | strip-ansi: 6.0.1 2457 | wcwidth: 1.0.1 2458 | yargs: 17.6.2 2459 | dev: true 2460 | 2461 | /type-fest/0.13.1: 2462 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 2463 | engines: {node: '>=10'} 2464 | dev: true 2465 | 2466 | /type-fest/0.6.0: 2467 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 2468 | engines: {node: '>=8'} 2469 | dev: true 2470 | 2471 | /type-fest/0.8.1: 2472 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 2473 | engines: {node: '>=8'} 2474 | dev: true 2475 | 2476 | /typed-array-length/1.0.4: 2477 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 2478 | dependencies: 2479 | call-bind: 1.0.2 2480 | for-each: 0.3.3 2481 | is-typed-array: 1.1.10 2482 | dev: true 2483 | 2484 | /typescript/4.9.4: 2485 | resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} 2486 | engines: {node: '>=4.2.0'} 2487 | hasBin: true 2488 | dev: true 2489 | 2490 | /unbox-primitive/1.0.2: 2491 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2492 | dependencies: 2493 | call-bind: 1.0.2 2494 | has-bigints: 1.0.2 2495 | has-symbols: 1.0.3 2496 | which-boxed-primitive: 1.0.2 2497 | dev: true 2498 | 2499 | /universalify/0.1.2: 2500 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 2501 | engines: {node: '>= 4.0.0'} 2502 | dev: true 2503 | 2504 | /validate-npm-package-license/3.0.4: 2505 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 2506 | dependencies: 2507 | spdx-correct: 3.1.1 2508 | spdx-expression-parse: 3.0.1 2509 | dev: true 2510 | 2511 | /wcwidth/1.0.1: 2512 | resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} 2513 | dependencies: 2514 | defaults: 1.0.4 2515 | dev: true 2516 | 2517 | /webidl-conversions/4.0.2: 2518 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 2519 | dev: true 2520 | 2521 | /whatwg-url/7.1.0: 2522 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 2523 | dependencies: 2524 | lodash.sortby: 4.7.0 2525 | tr46: 1.0.1 2526 | webidl-conversions: 4.0.2 2527 | dev: true 2528 | 2529 | /which-boxed-primitive/1.0.2: 2530 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2531 | dependencies: 2532 | is-bigint: 1.0.4 2533 | is-boolean-object: 1.1.2 2534 | is-number-object: 1.0.7 2535 | is-string: 1.0.7 2536 | is-symbol: 1.0.4 2537 | dev: true 2538 | 2539 | /which-module/2.0.0: 2540 | resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} 2541 | dev: true 2542 | 2543 | /which-pm/2.0.0: 2544 | resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} 2545 | engines: {node: '>=8.15'} 2546 | dependencies: 2547 | load-yaml-file: 0.2.0 2548 | path-exists: 4.0.0 2549 | dev: true 2550 | 2551 | /which-typed-array/1.1.9: 2552 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} 2553 | engines: {node: '>= 0.4'} 2554 | dependencies: 2555 | available-typed-arrays: 1.0.5 2556 | call-bind: 1.0.2 2557 | for-each: 0.3.3 2558 | gopd: 1.0.1 2559 | has-tostringtag: 1.0.0 2560 | is-typed-array: 1.1.10 2561 | dev: true 2562 | 2563 | /which/1.3.1: 2564 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 2565 | hasBin: true 2566 | dependencies: 2567 | isexe: 2.0.0 2568 | dev: true 2569 | 2570 | /which/2.0.2: 2571 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2572 | engines: {node: '>= 8'} 2573 | hasBin: true 2574 | dependencies: 2575 | isexe: 2.0.0 2576 | dev: true 2577 | 2578 | /wrap-ansi/6.2.0: 2579 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 2580 | engines: {node: '>=8'} 2581 | dependencies: 2582 | ansi-styles: 4.3.0 2583 | string-width: 4.2.3 2584 | strip-ansi: 6.0.1 2585 | dev: true 2586 | 2587 | /wrap-ansi/7.0.0: 2588 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2589 | engines: {node: '>=10'} 2590 | dependencies: 2591 | ansi-styles: 4.3.0 2592 | string-width: 4.2.3 2593 | strip-ansi: 6.0.1 2594 | dev: true 2595 | 2596 | /wrappy/1.0.2: 2597 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2598 | dev: true 2599 | 2600 | /y18n/4.0.3: 2601 | resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} 2602 | dev: true 2603 | 2604 | /y18n/5.0.8: 2605 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 2606 | engines: {node: '>=10'} 2607 | dev: true 2608 | 2609 | /yallist/2.1.2: 2610 | resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} 2611 | dev: true 2612 | 2613 | /yaml/1.10.2: 2614 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 2615 | engines: {node: '>= 6'} 2616 | dev: true 2617 | 2618 | /yargs-parser/18.1.3: 2619 | resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} 2620 | engines: {node: '>=6'} 2621 | dependencies: 2622 | camelcase: 5.3.1 2623 | decamelize: 1.2.0 2624 | dev: true 2625 | 2626 | /yargs-parser/21.1.1: 2627 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 2628 | engines: {node: '>=12'} 2629 | dev: true 2630 | 2631 | /yargs/15.4.1: 2632 | resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} 2633 | engines: {node: '>=8'} 2634 | dependencies: 2635 | cliui: 6.0.0 2636 | decamelize: 1.2.0 2637 | find-up: 4.1.0 2638 | get-caller-file: 2.0.5 2639 | require-directory: 2.1.1 2640 | require-main-filename: 2.0.0 2641 | set-blocking: 2.0.0 2642 | string-width: 4.2.3 2643 | which-module: 2.0.0 2644 | y18n: 4.0.3 2645 | yargs-parser: 18.1.3 2646 | dev: true 2647 | 2648 | /yargs/17.6.2: 2649 | resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} 2650 | engines: {node: '>=12'} 2651 | dependencies: 2652 | cliui: 8.0.1 2653 | escalade: 3.1.1 2654 | get-caller-file: 2.0.5 2655 | require-directory: 2.1.1 2656 | string-width: 4.2.3 2657 | y18n: 5.0.8 2658 | yargs-parser: 21.1.1 2659 | dev: true 2660 | 2661 | /yocto-queue/0.1.0: 2662 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2663 | engines: {node: '>=10'} 2664 | dev: true 2665 | -------------------------------------------------------------------------------- /src/components/end/end.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { END_TYPE_KEY } from '../../core/constants'; 3 | import { OnboardingService } from '../../core/services/core.service'; 4 | 5 | export const End = ({ 6 | children, 7 | }: { 8 | children: ({ result }: { result: object }) => React.ReactNode; 9 | }): React.ReactNode => { 10 | return children({ result: OnboardingService.getResult() }); 11 | }; 12 | 13 | End.__type = END_TYPE_KEY; 14 | -------------------------------------------------------------------------------- /src/components/field/field.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { useMount } from 'react-use'; 3 | import { FIELD_TYPE_KEY } from '../../core/constants'; 4 | 5 | import { FieldEnhancements } from '../../core/index.core'; 6 | import { OnboardingService } from '../../core/services/core.service'; 7 | import { snakeCase } from '../../core/utils'; 8 | 9 | interface EnterValidation { 10 | name: string; 11 | on: string; 12 | validations?: string[]; 13 | } 14 | 15 | interface Validation { 16 | name: string; 17 | on: 'change' | 'focus' | 'blur' | 'enter'; 18 | validator: Function; 19 | errorMessage: string; 20 | } 21 | 22 | interface FieldHanders { 23 | value: string; 24 | type: string; 25 | onChange: Function; 26 | onBlur: Function; 27 | onFocus: Function; 28 | onEnter: Function; 29 | error: string | null; 30 | valid: boolean; 31 | } 32 | 33 | interface Props { 34 | __enhancements: FieldEnhancements; 35 | validations: Validation[]; 36 | name: string; 37 | type: string; 38 | children: (props: FieldHanders) => JSX.Element; 39 | } 40 | 41 | export const Field = ({ 42 | children, 43 | name, 44 | type, 45 | validations = [], 46 | __enhancements, 47 | }: Props) => { 48 | const [value, setValue] = useState(''); 49 | const [valid, setValid] = useState(true); 50 | const [error, setError] = useState(null); 51 | 52 | const snakedName = snakeCase(name); 53 | const { step, setProcessed, setValidStep } = __enhancements; 54 | 55 | useMount(() => { 56 | // Register the field on the Onboarding Service 57 | OnboardingService.setField(snakedName, step); 58 | // Retrieve the value in case there's already a value stored for this field 59 | const serviceValue = OnboardingService.getFieldValue(snakedName, step); 60 | setValue(serviceValue); 61 | }); 62 | 63 | const onChange = (value: string) => { 64 | setValue(value); 65 | OnboardingService.setFieldValue(snakedName, step, value); 66 | 67 | if (validations.length === 0) { 68 | setProcessed(true); 69 | return; 70 | } 71 | 72 | const onChangeValidations = validations.filter( 73 | (validation) => validation.on === 'change', 74 | ); 75 | 76 | if (onChangeValidations.length === 0) { 77 | setProcessed(true); 78 | return; 79 | } 80 | 81 | const amountOfOnChangeValidations = onChangeValidations.length; 82 | 83 | let errored = false; 84 | 85 | for (let i = 0; i < amountOfOnChangeValidations && !errored; i++) { 86 | const validationOk = onChangeValidations[i]?.validator(value); 87 | const validation = onChangeValidations[i] as Validation; 88 | 89 | if (!validationOk) { 90 | setError(validation.errorMessage); 91 | errored = true; 92 | } 93 | 94 | setValidStep(validationOk); 95 | setValid(validationOk); 96 | } 97 | }; 98 | 99 | const onFocus = () => { 100 | if (validations.length === 0) { 101 | setProcessed(true); 102 | return; 103 | } 104 | 105 | const onFocusValidations = validations.filter( 106 | (validation) => validation.on === 'focus', 107 | ); 108 | 109 | if (onFocusValidations.length === 0) { 110 | setProcessed(true); 111 | return; 112 | } 113 | 114 | const amountOfOnFocusValidations = onFocusValidations.length; 115 | 116 | let errored = false; 117 | 118 | for (let i = 0; i < amountOfOnFocusValidations && !errored; i++) { 119 | const validationOk = onFocusValidations[i]?.validator(value); 120 | const validation = onFocusValidations[i] as Validation; 121 | 122 | if (!validationOk) { 123 | setError(validation.errorMessage); 124 | errored = true; 125 | } 126 | 127 | setValidStep(validationOk); 128 | setValid(validationOk); 129 | } 130 | }; 131 | 132 | const onBlur = () => { 133 | if (validations.length === 0) { 134 | setProcessed(true); 135 | return; 136 | } 137 | 138 | const onBlurValidations = validations.filter( 139 | (validation) => validation.on === 'blur', 140 | ); 141 | 142 | if (onBlurValidations.length === 0) { 143 | setProcessed(true); 144 | return; 145 | } 146 | 147 | const amountOfOnBlurValidations = onBlurValidations.length; 148 | 149 | let errored = false; 150 | 151 | for (let i = 0; i < amountOfOnBlurValidations && !errored; i++) { 152 | const validationOk = onBlurValidations[i]?.validator(value); 153 | const validation = onBlurValidations[i] as Validation; 154 | 155 | if (!validationOk) { 156 | setError(validation.errorMessage); 157 | errored = true; 158 | } 159 | 160 | setValidStep(validationOk); 161 | setValid(validationOk); 162 | } 163 | }; 164 | 165 | const onEnter = (callback?: () => void) => { 166 | if (validations.length === 0) { 167 | setProcessed(true); 168 | return; 169 | } 170 | 171 | const onEnterValidations = validations.filter( 172 | (validation) => validation.on === 'enter', 173 | ); 174 | 175 | if (onEnterValidations.length === 0) { 176 | setProcessed(true); 177 | return; 178 | } 179 | 180 | const amountOfOnEnterValidations = onEnterValidations.length; 181 | 182 | let errored = false; 183 | 184 | for (let i = 0; i < amountOfOnEnterValidations && !errored; i++) { 185 | const validationOk = onEnterValidations[i]?.validator(value); 186 | const validation = onEnterValidations[i] as Validation; 187 | 188 | if (!validationOk) { 189 | setError(validation.errorMessage); 190 | errored = true; 191 | } 192 | 193 | setValidStep(validationOk); 194 | setValid(validationOk); 195 | } 196 | 197 | if (valid && callback) { 198 | callback(); 199 | } 200 | }; 201 | 202 | return children({ 203 | value, 204 | type, 205 | onChange, 206 | onBlur, 207 | onFocus, 208 | onEnter, 209 | error, 210 | valid, 211 | }); 212 | }; 213 | 214 | Field.__type = FIELD_TYPE_KEY; 215 | -------------------------------------------------------------------------------- /src/components/index.ts: -------------------------------------------------------------------------------- 1 | import { Onboarding } from './onboarding/onboarding'; 2 | import { Step } from './step/step'; 3 | import { Field } from './field/field'; 4 | import { End } from './end/end'; 5 | 6 | export { Onboarding, Step, Field, End }; 7 | -------------------------------------------------------------------------------- /src/components/onboarding/onboarding.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useRef } from 'react'; 2 | import { END_TYPE_KEY, STEP_TYPE_KEY } from '../../core/constants'; 3 | import { calculateNumberOfSteps, enhanceStep } from '../../core/index.core'; 4 | import { OnboardingContext } from '../../core/services/onboarding-context'; 5 | 6 | interface Props { 7 | initialStep: number; 8 | finished: boolean; 9 | children: JSX.Element | JSX.Element[]; 10 | } 11 | 12 | interface State { 13 | initialStep: number; 14 | currentStep: number; 15 | finished: boolean; 16 | } 17 | 18 | export const Onboarding = ({ initialStep, finished, children }: Props) => { 19 | const [state, setState] = useState({ 20 | initialStep: initialStep || 0, 21 | currentStep: initialStep || 0, 22 | finished: false, 23 | }); 24 | 25 | const numberOfSteps = useRef(calculateNumberOfSteps(children)); 26 | 27 | const nextStep = () => { 28 | if (state.currentStep + 1 >= numberOfSteps.current) return; 29 | setState((prev) => ({ ...prev, currentStep: prev.currentStep + 1 })); 30 | }; 31 | 32 | const prevStep = () => { 33 | if (state.currentStep - 1 < 0) return; 34 | setState((prev) => ({ ...prev, currentStep: state.currentStep - 1 })); 35 | }; 36 | 37 | const finishForm = () => { 38 | setState((prev) => ({ ...prev, finished: true })); 39 | }; 40 | 41 | let encounteredStep = 0; 42 | let stepFound = false; 43 | let processedSteps: JSX.Element[] = []; 44 | 45 | const elements = React.Children.map(children, (child: JSX.Element) => { 46 | // Somehow, there could be childs that are null 47 | // Maybe related to {onboardingComplete && ()} expressions 48 | // We have to skip those null child since we don't want to render them 49 | if (!child) return; 50 | const type = child.type.__type; 51 | // Components that are not type STEP or END 52 | // didn't have a TYPE_KEY so we could have ended 53 | // with a end page with aditional unwanted components 54 | if (!finished && !type) return child; 55 | if (!finished && type === END_TYPE_KEY) return; 56 | if (!finished && type !== END_TYPE_KEY && type !== STEP_TYPE_KEY) 57 | return child; 58 | if (!finished && type === STEP_TYPE_KEY) { 59 | // Check to avoid duplicated step identifiers 60 | if (processedSteps.includes(child.props.name)) { 61 | throw new Error( 62 | `You have defined a duplicated step. ${child.props.name} step has already been defined.`, 63 | ); 64 | } 65 | processedSteps = [...processedSteps, child.props.name]; 66 | if (encounteredStep === state.currentStep && !stepFound) { 67 | stepFound = true; 68 | return enhanceStep(child, { 69 | nextStep: nextStep, 70 | prevStep: prevStep, 71 | finish: finishForm, 72 | }); 73 | } 74 | encounteredStep = encounteredStep + 1; 75 | return; 76 | } 77 | if (finished && type !== END_TYPE_KEY) return; 78 | if (finished && type === END_TYPE_KEY) return child; 79 | }); 80 | 81 | return ( 82 | 91 | {elements} 92 | 93 | ); 94 | }; 95 | -------------------------------------------------------------------------------- /src/components/step/step.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import { useMount } from 'react-use'; 3 | import { FIELD_TYPE_KEY, STEP_TYPE_KEY } from '../../core/constants'; 4 | import { enhanceField, StepEnhancements } from '../../core/index.core'; 5 | import { OnboardingService } from '../../core/services/core.service'; 6 | import { snakeCase } from '../../core/utils'; 7 | 8 | interface Props { 9 | name: string; 10 | /** 11 | * There's a special step type: the conversational step 12 | * This field is ment to be a source of feedback to the user 13 | * meaning that, it won't have any fields or validations so, 14 | * this step should be processed and valid by default. 15 | */ 16 | conversational: boolean; 17 | children: (props: StepEnhancements) => JSX.Element; 18 | __enhancements: StepEnhancements; 19 | } 20 | 21 | export const Step = ({ 22 | name, 23 | conversational, 24 | children, 25 | __enhancements, 26 | }: Props) => { 27 | const [valid, setValidStep] = useState(true); 28 | const [processed, setProcessed] = useState(conversational); 29 | 30 | const snakedName = snakeCase(name); 31 | const { finish, nextStep, prevStep, validStep } = __enhancements; 32 | 33 | useMount(() => { 34 | if (!conversational) { 35 | OnboardingService.setStep(snakedName); 36 | } 37 | /** 38 | * To be able to have optional steps 39 | * we have to check if some of the children have validations attached 40 | * this way. A step, by default has an unprocessed state (!processed) 41 | * meaning that the user have to provide some input. By checking if 42 | * the child have validations we could declare this step as processed beforehand 43 | * so we can click next without having to provide any input 44 | */ 45 | const { 46 | props: { children: stepContents }, 47 | } = children({ 48 | nextStep: () => {}, 49 | prevStep: () => {}, 50 | finish: () => {}, 51 | validStep: true, 52 | }); 53 | 54 | const someHaveValidations = stepContents.some( 55 | (child: JSX.Element) => child.props.validations, 56 | ); 57 | 58 | if (someHaveValidations) return; 59 | 60 | setProcessed(true); 61 | }); 62 | 63 | const stepContents = children({ 64 | nextStep: processed ? nextStep : () => null, 65 | prevStep: prevStep ? prevStep : () => null, 66 | finish: processed ? finish : () => null, 67 | validStep: validStep, 68 | }); 69 | 70 | return { 71 | ...stepContents, 72 | props: { 73 | children: React.Children.map( 74 | stepContents.props.children, 75 | (child: JSX.Element) => { 76 | if (!child) return; 77 | const type = child.type.__type; 78 | if (type === FIELD_TYPE_KEY) { 79 | return enhanceField(child, { 80 | step: snakedName, 81 | setValidStep: setValidStep, 82 | setProcessed: setProcessed, 83 | }); 84 | } 85 | return child; 86 | }, 87 | ), 88 | }, 89 | }; 90 | }; 91 | 92 | Step.__type = STEP_TYPE_KEY; 93 | -------------------------------------------------------------------------------- /src/core/constants/index.ts: -------------------------------------------------------------------------------- 1 | export const STEP_TYPE_KEY: string = 'STEP'; 2 | export const FIELD_TYPE_KEY: string = 'FIELD'; 3 | export const END_TYPE_KEY: string = 'END'; 4 | -------------------------------------------------------------------------------- /src/core/index.core.ts: -------------------------------------------------------------------------------- 1 | import { Children } from 'react'; 2 | import { STEP_TYPE_KEY, FIELD_TYPE_KEY } from './constants'; 3 | 4 | export interface StepEnhancements { 5 | nextStep: Function; 6 | prevStep: Function; 7 | finish: Function; 8 | validStep?: boolean; 9 | } 10 | 11 | export interface EnhancedStep extends JSX.Element { 12 | nextStep: Function; 13 | prevStep: Function; 14 | finish: Function; 15 | } 16 | 17 | export interface FieldEnhancements { 18 | step: string; 19 | setProcessed: Function; 20 | setValidStep: Function; 21 | } 22 | 23 | export interface EnhancedField extends JSX.Element { 24 | step: string; 25 | setProcessed: Function; 26 | setValidStep: Function; 27 | } 28 | 29 | /** 30 | * PUBLIC 31 | * This function calculates the number of steps that 32 | * are present in an Array of React Components. 33 | * This will only count the first level of steps due to 34 | * there's no reason for a step to be within a step. 35 | * @param {Array} tree 36 | */ 37 | export function calculateNumberOfSteps( 38 | tree: JSX.Element[] | JSX.Element, 39 | ): number { 40 | return Children.map(tree, (leaf) => { 41 | if (leaf.type.__type === STEP_TYPE_KEY) return leaf; 42 | return; 43 | }).length; 44 | } 45 | /** 46 | * PUBLIC 47 | * This function enhaces a step (React Object) with 48 | * some required internal data to make the system work 49 | * as expected. 50 | * @param {Object} step 51 | * @param {Object} enhancements 52 | */ 53 | export function enhanceStep( 54 | step: JSX.Element, 55 | enhancements: StepEnhancements, 56 | ): JSX.Element | EnhancedStep { 57 | const type = step.type.__type; 58 | if (type !== STEP_TYPE_KEY) return step; 59 | return { 60 | ...step, 61 | key: step.props.name, 62 | props: { 63 | ...step.props, 64 | __enhancements: enhancements, 65 | }, 66 | }; 67 | } 68 | /** 69 | * PUBLIC 70 | * This function enhaces a field (React Object) with 71 | * some required internal data to make the system work 72 | * as expected. 73 | * @param {Object} step 74 | * @param {Object} enhancements 75 | */ 76 | export function enhanceField( 77 | field: JSX.Element, 78 | enhancements: FieldEnhancements, 79 | ): JSX.Element | EnhancedField { 80 | const type = field.type.__type; 81 | if (type !== FIELD_TYPE_KEY) return field; 82 | return { 83 | ...field, 84 | key: field.props.name, 85 | props: { 86 | ...field.props, 87 | __enhancements: enhancements, 88 | }, 89 | }; 90 | } 91 | -------------------------------------------------------------------------------- /src/core/services/core.service.ts: -------------------------------------------------------------------------------- 1 | export type Field = Map; 2 | export type Steps = Map; 3 | 4 | interface IOnboardingService { 5 | tree: object; 6 | setStep(step: string): void; 7 | setField(field: string, step: string): void; 8 | setFieldValue(field: string, step: string, value: string): void; 9 | getFieldValue(field: string, step: string): string; 10 | getResult: () => object; 11 | } 12 | 13 | function OnboardingService(): IOnboardingService { 14 | const tree: Steps = new Map(); 15 | 16 | function setStep(name: string) { 17 | if (tree.get(name)) return; 18 | 19 | tree.set(name, new Map()); 20 | } 21 | 22 | function setField(fieldName: string, stepName: string) { 23 | const step = tree.get(stepName); 24 | 25 | if (!step) { 26 | throw new Error( 27 | `Tying to set the value of a field on a non-existing step [${stepName}]`, 28 | ); 29 | } 30 | 31 | const field = step.get(fieldName); 32 | 33 | // If the field already exists, do nothing, we don't want to override it 34 | if (field) { 35 | return; 36 | } 37 | 38 | step.set(fieldName, ''); 39 | } 40 | 41 | function setFieldValue(fieldName: string, stepName: string, value: string) { 42 | const step = tree.get(stepName); 43 | 44 | if (!step) { 45 | throw new Error( 46 | `Tying to set the value of a field on a non-existing step [${stepName}]`, 47 | ); 48 | } 49 | 50 | const field = step.get(fieldName); 51 | 52 | // If the field already exists, do nothing, we don't want to override it 53 | if (!field) { 54 | throw new Error( 55 | `Trying to set a value on a non-existing field [${fieldName}]`, 56 | ); 57 | } 58 | 59 | step.set(fieldName, value); 60 | } 61 | 62 | function getFieldValue(fieldName: string, stepName: string) { 63 | const step = tree.get(stepName); 64 | 65 | if (!step) { 66 | throw new Error( 67 | `Tying to set the value of a field on a non-existing step [${stepName}]`, 68 | ); 69 | } 70 | 71 | return step.get(fieldName); 72 | } 73 | 74 | function getResult() { 75 | return Object.fromEntries(tree); 76 | } 77 | 78 | return { 79 | tree, 80 | setStep, 81 | setField, 82 | setFieldValue, 83 | getFieldValue, 84 | getResult, 85 | }; 86 | } 87 | 88 | const onboardingService = OnboardingService(); 89 | export { onboardingService as OnboardingService }; 90 | -------------------------------------------------------------------------------- /src/core/services/onboarding-context.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | export const OnboardingContext = createContext({}); 4 | -------------------------------------------------------------------------------- /src/core/utils/index.ts: -------------------------------------------------------------------------------- 1 | import { snakeCase } from './snake-case.util'; 2 | 3 | export { snakeCase }; 4 | -------------------------------------------------------------------------------- /src/core/utils/snake-case.util.ts: -------------------------------------------------------------------------------- 1 | export function snakeCase(value: string): string { 2 | return value.replace(/-/gi, '_'); 3 | } 4 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { Onboarding, Step, Field, End } from './components'; 2 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2019", 4 | "module": "commonjs", 5 | "esModuleInterop": true, 6 | "forceConsistentCasingInFileNames": true, 7 | "strict": true, 8 | "skipLibCheck": true, 9 | "noUncheckedIndexedAccess": true, 10 | "noEmit": true, 11 | "jsx": "react" 12 | } 13 | } 14 | --------------------------------------------------------------------------------