From 24ddf9b39f6e954c31ff10202b18cbd492924cc5 Mon Sep 17 00:00:00 2001 From: Chris Cates Date: Sun, 24 Jul 2022 15:50:55 -0400 Subject: [PATCH] v1.0.0 --- .circleci/config.yml | 11 + .eslintrc.js | 20 + .gitignore | 127 + .gitkeep | 0 .husky/pre-commit | 5 + .npmignore | 4 + CHANGELOG.md | 16 + LICENSE | 48 + README.md | 59 + babel.config.js | 13 + banner.jpg | Bin 0 -> 71931 bytes dist/src/config.d.ts | 18 + dist/src/config.js | 45 + dist/src/config.js.map | 1 + dist/src/converter.d.ts | 3 + dist/src/converter.js | 108 + dist/src/converter.js.map | 1 + dist/src/generators/api.d.ts | 1 + dist/src/generators/api.js | 89 + dist/src/generators/api.js.map | 1 + dist/src/generators/component.d.ts | 1 + dist/src/generators/component.js | 118 + dist/src/generators/component.js.map | 1 + dist/src/generators/crud.d.ts | 1 + dist/src/generators/crud.js | 94 + dist/src/generators/crud.js.map | 1 + dist/src/generators/inject.d.ts | 1 + dist/src/generators/inject.js | 151 + dist/src/generators/inject.js.map | 1 + dist/src/generators/new.d.ts | 1 + dist/src/generators/new.js | 141 + dist/src/generators/new.js.map | 1 + dist/src/generators/page.d.ts | 1 + dist/src/generators/page.js | 99 + dist/src/generators/page.js.map | 1 + dist/src/generators/slice.d.ts | 1 + dist/src/generators/slice.js | 96 + dist/src/generators/slice.js.map | 1 + dist/src/generators/type.d.ts | 1 + dist/src/generators/type.js | 89 + dist/src/generators/type.js.map | 1 + dist/src/helpers/log.d.ts | 1 + dist/src/helpers/log.js | 39 + dist/src/helpers/log.js.map | 1 + dist/src/helpers/match.d.ts | 10 + dist/src/helpers/match.js | 36 + dist/src/helpers/match.js.map | 1 + dist/src/printer.d.ts | 3 + dist/src/printer.js | 189 + dist/src/printer.js.map | 1 + dist/src/templates/api.template | 17 + .../component/component.nostyle.template | 11 + .../templates/component/component.template | 11 + .../component/index.nostyle.template | 1 + dist/src/templates/component/index.template | 2 + dist/src/templates/component/style.template | 3 + dist/src/templates/component/test.template | 2 + dist/src/templates/crud/create.template | 23 + dist/src/templates/crud/delete.template | 23 + dist/src/templates/crud/get.template | 23 + dist/src/templates/crud/list.template | 19 + dist/src/templates/crud/update.template | 26 + dist/src/templates/new/_app.template | 22 + dist/src/templates/new/_document.template | 17 + dist/src/templates/new/babelrc.template | 4 + dist/src/templates/new/eslintrc.template | 37 + dist/src/templates/new/gitignore.template | 123 + dist/src/templates/new/index.template | 5 + dist/src/templates/new/package.template | 43 + dist/src/templates/new/precommit.template | 5 + .../src/templates/new/printer.config.template | 16 + dist/src/templates/new/printer.template | 4 + dist/src/templates/new/prisma.client.template | 15 + dist/src/templates/new/reducer.template | 1 + dist/src/templates/new/reset.template | 43 + dist/src/templates/new/schema.prisma.template | 16 + dist/src/templates/new/session.template | 9 + dist/src/templates/new/tsconfig.template | 31 + dist/src/templates/new/wrapper.template | 19 + dist/src/templates/page.template | 5 + dist/src/templates/page.url.template | 10 + dist/src/templates/slice/reducer.template | 5 + dist/src/templates/slice/slice.d.ts | 1 + dist/src/templates/slice/slice.js | 8 + dist/src/templates/slice/slice.js.map | 1 + dist/src/templates/slice/slice.template | 11 + dist/src/templates/slice/slice.ts | 17 + dist/src/templates/type.template | 5 + example/.babelrc | 4 + example/.eslintrc.js | 37 + example/.gitignore | 123 + example/.gitkeep | 0 example/.husky/pre-commit | 5 + example/components/other.tsx | 19 + example/components/sample/index.tsx | 1 + .../components/sample/sample.component.tsx | 17 + example/next-env.d.ts | 5 + example/package.json | 43 + example/pages/_app.tsx | 22 + example/pages/_document.tsx | 17 + example/pages/api/sample/create.tsx | 23 + example/pages/api/sample/delete.tsx | 23 + example/pages/api/sample/get.tsx | 23 + example/pages/api/sample/list.tsx | 19 + example/pages/api/sample/update.tsx | 26 + example/pages/api/test.tsx | 17 + example/pages/index.tsx | 13 + example/printer.config.json | 16 + example/prisma/client.ts | 15 + example/prisma/schema.prisma | 18 + example/public/.gitkeep | 0 example/public/assets/css/fonts.css | 0 example/public/assets/css/printer.css | 4 + example/public/assets/css/reset.css | 43 + example/public/assets/scss/printer.scss | 4 + example/redux/reducer.tsx | 5 + example/redux/reducers.json | 3 + example/redux/slice/sample.tsx | 23 + example/redux/wrapper.tsx | 19 + example/tsconfig.json | 31 + example/types/sample.tsx | 6 + example/types/wallet.tsx | 5 + example/util/session.ts | 9 + example/yarn.lock | 3557 +++++++++++++ jest.config.ts | 39 + package.json | 49 + prepend.ts | 7 + src/config.ts | 47 + src/converter.ts | 27 + src/generators/api.ts | 37 + src/generators/component.ts | 72 + src/generators/crud.ts | 45 + src/generators/inject.ts | 124 + src/generators/new.ts | 144 + src/generators/page.ts | 47 + src/generators/slice.ts | 49 + src/generators/type.ts | 37 + src/helpers/log.ts | 5 + src/helpers/match.ts | 34 + src/printer.ts | 94 + src/templates/api.template | 17 + .../component/component.nostyle.template | 11 + src/templates/component/component.template | 11 + .../component/index.nostyle.template | 1 + src/templates/component/index.template | 2 + src/templates/component/style.template | 3 + src/templates/component/test.template | 2 + src/templates/crud/create.template | 23 + src/templates/crud/delete.template | 23 + src/templates/crud/get.template | 23 + src/templates/crud/list.template | 19 + src/templates/crud/update.template | 26 + src/templates/new/_app.template | 22 + src/templates/new/_document.template | 17 + src/templates/new/babelrc.template | 4 + src/templates/new/eslintrc.template | 37 + src/templates/new/gitignore.template | 123 + src/templates/new/index.template | 5 + src/templates/new/package.template | 43 + src/templates/new/precommit.template | 5 + src/templates/new/printer.config.template | 16 + src/templates/new/printer.template | 4 + src/templates/new/prisma.client.template | 15 + src/templates/new/reducer.template | 1 + src/templates/new/reset.template | 43 + src/templates/new/schema.prisma.template | 16 + src/templates/new/session.template | 9 + src/templates/new/tsconfig.template | 31 + src/templates/new/wrapper.template | 19 + src/templates/page.template | 5 + src/templates/page.url.template | 10 + src/templates/slice/reducer.template | 5 + src/templates/slice/slice.template | 11 + src/templates/slice/slice.ts | 17 + src/templates/type.template | 5 + test/.gitkeep | 0 test/generators.test.ts | 76 + test/printer.test.ts | 5 + test/temporary.tsx | 11 + tsconfig.json | 24 + yarn.lock | 4648 +++++++++++++++++ 181 files changed, 12727 insertions(+) create mode 100644 .circleci/config.yml create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .gitkeep create mode 100755 .husky/pre-commit create mode 100644 .npmignore create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 banner.jpg create mode 100644 dist/src/config.d.ts create mode 100644 dist/src/config.js create mode 100644 dist/src/config.js.map create mode 100644 dist/src/converter.d.ts create mode 100644 dist/src/converter.js create mode 100644 dist/src/converter.js.map create mode 100644 dist/src/generators/api.d.ts create mode 100644 dist/src/generators/api.js create mode 100644 dist/src/generators/api.js.map create mode 100644 dist/src/generators/component.d.ts create mode 100644 dist/src/generators/component.js create mode 100644 dist/src/generators/component.js.map create mode 100644 dist/src/generators/crud.d.ts create mode 100644 dist/src/generators/crud.js create mode 100644 dist/src/generators/crud.js.map create mode 100644 dist/src/generators/inject.d.ts create mode 100644 dist/src/generators/inject.js create mode 100644 dist/src/generators/inject.js.map create mode 100644 dist/src/generators/new.d.ts create mode 100644 dist/src/generators/new.js create mode 100644 dist/src/generators/new.js.map create mode 100644 dist/src/generators/page.d.ts create mode 100644 dist/src/generators/page.js create mode 100644 dist/src/generators/page.js.map create mode 100644 dist/src/generators/slice.d.ts create mode 100644 dist/src/generators/slice.js create mode 100644 dist/src/generators/slice.js.map create mode 100644 dist/src/generators/type.d.ts create mode 100644 dist/src/generators/type.js create mode 100644 dist/src/generators/type.js.map create mode 100644 dist/src/helpers/log.d.ts create mode 100644 dist/src/helpers/log.js create mode 100644 dist/src/helpers/log.js.map create mode 100644 dist/src/helpers/match.d.ts create mode 100644 dist/src/helpers/match.js create mode 100644 dist/src/helpers/match.js.map create mode 100644 dist/src/printer.d.ts create mode 100755 dist/src/printer.js create mode 100644 dist/src/printer.js.map create mode 100644 dist/src/templates/api.template create mode 100644 dist/src/templates/component/component.nostyle.template create mode 100644 dist/src/templates/component/component.template create mode 100644 dist/src/templates/component/index.nostyle.template create mode 100644 dist/src/templates/component/index.template create mode 100644 dist/src/templates/component/style.template create mode 100644 dist/src/templates/component/test.template create mode 100644 dist/src/templates/crud/create.template create mode 100644 dist/src/templates/crud/delete.template create mode 100644 dist/src/templates/crud/get.template create mode 100644 dist/src/templates/crud/list.template create mode 100644 dist/src/templates/crud/update.template create mode 100644 dist/src/templates/new/_app.template create mode 100644 dist/src/templates/new/_document.template create mode 100644 dist/src/templates/new/babelrc.template create mode 100644 dist/src/templates/new/eslintrc.template create mode 100644 dist/src/templates/new/gitignore.template create mode 100644 dist/src/templates/new/index.template create mode 100644 dist/src/templates/new/package.template create mode 100644 dist/src/templates/new/precommit.template create mode 100644 dist/src/templates/new/printer.config.template create mode 100644 dist/src/templates/new/printer.template create mode 100644 dist/src/templates/new/prisma.client.template create mode 100644 dist/src/templates/new/reducer.template create mode 100644 dist/src/templates/new/reset.template create mode 100644 dist/src/templates/new/schema.prisma.template create mode 100644 dist/src/templates/new/session.template create mode 100644 dist/src/templates/new/tsconfig.template create mode 100644 dist/src/templates/new/wrapper.template create mode 100644 dist/src/templates/page.template create mode 100644 dist/src/templates/page.url.template create mode 100644 dist/src/templates/slice/reducer.template create mode 100644 dist/src/templates/slice/slice.d.ts create mode 100644 dist/src/templates/slice/slice.js create mode 100644 dist/src/templates/slice/slice.js.map create mode 100644 dist/src/templates/slice/slice.template create mode 100644 dist/src/templates/slice/slice.ts create mode 100644 dist/src/templates/type.template create mode 100644 example/.babelrc create mode 100644 example/.eslintrc.js create mode 100644 example/.gitignore create mode 100644 example/.gitkeep create mode 100644 example/.husky/pre-commit create mode 100644 example/components/other.tsx create mode 100644 example/components/sample/index.tsx create mode 100644 example/components/sample/sample.component.tsx create mode 100644 example/next-env.d.ts create mode 100644 example/package.json create mode 100644 example/pages/_app.tsx create mode 100644 example/pages/_document.tsx create mode 100644 example/pages/api/sample/create.tsx create mode 100644 example/pages/api/sample/delete.tsx create mode 100644 example/pages/api/sample/get.tsx create mode 100644 example/pages/api/sample/list.tsx create mode 100644 example/pages/api/sample/update.tsx create mode 100644 example/pages/api/test.tsx create mode 100644 example/pages/index.tsx create mode 100644 example/printer.config.json create mode 100644 example/prisma/client.ts create mode 100644 example/prisma/schema.prisma create mode 100644 example/public/.gitkeep create mode 100644 example/public/assets/css/fonts.css create mode 100644 example/public/assets/css/printer.css create mode 100644 example/public/assets/css/reset.css create mode 100644 example/public/assets/scss/printer.scss create mode 100644 example/redux/reducer.tsx create mode 100644 example/redux/reducers.json create mode 100644 example/redux/slice/sample.tsx create mode 100644 example/redux/wrapper.tsx create mode 100644 example/tsconfig.json create mode 100644 example/types/sample.tsx create mode 100644 example/types/wallet.tsx create mode 100644 example/util/session.ts create mode 100644 example/yarn.lock create mode 100644 jest.config.ts create mode 100644 package.json create mode 100644 prepend.ts create mode 100644 src/config.ts create mode 100644 src/converter.ts create mode 100644 src/generators/api.ts create mode 100644 src/generators/component.ts create mode 100644 src/generators/crud.ts create mode 100644 src/generators/inject.ts create mode 100644 src/generators/new.ts create mode 100644 src/generators/page.ts create mode 100644 src/generators/slice.ts create mode 100644 src/generators/type.ts create mode 100644 src/helpers/log.ts create mode 100644 src/helpers/match.ts create mode 100644 src/printer.ts create mode 100644 src/templates/api.template create mode 100644 src/templates/component/component.nostyle.template create mode 100644 src/templates/component/component.template create mode 100644 src/templates/component/index.nostyle.template create mode 100644 src/templates/component/index.template create mode 100644 src/templates/component/style.template create mode 100644 src/templates/component/test.template create mode 100644 src/templates/crud/create.template create mode 100644 src/templates/crud/delete.template create mode 100644 src/templates/crud/get.template create mode 100644 src/templates/crud/list.template create mode 100644 src/templates/crud/update.template create mode 100644 src/templates/new/_app.template create mode 100644 src/templates/new/_document.template create mode 100644 src/templates/new/babelrc.template create mode 100644 src/templates/new/eslintrc.template create mode 100644 src/templates/new/gitignore.template create mode 100644 src/templates/new/index.template create mode 100644 src/templates/new/package.template create mode 100644 src/templates/new/precommit.template create mode 100644 src/templates/new/printer.config.template create mode 100644 src/templates/new/printer.template create mode 100644 src/templates/new/prisma.client.template create mode 100644 src/templates/new/reducer.template create mode 100644 src/templates/new/reset.template create mode 100644 src/templates/new/schema.prisma.template create mode 100644 src/templates/new/session.template create mode 100644 src/templates/new/tsconfig.template create mode 100644 src/templates/new/wrapper.template create mode 100644 src/templates/page.template create mode 100644 src/templates/page.url.template create mode 100644 src/templates/slice/reducer.template create mode 100644 src/templates/slice/slice.template create mode 100644 src/templates/slice/slice.ts create mode 100644 src/templates/type.template create mode 100644 test/.gitkeep create mode 100644 test/generators.test.ts create mode 100644 test/printer.test.ts create mode 100644 test/temporary.tsx create mode 100644 tsconfig.json create mode 100644 yarn.lock diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..9fbea36 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,11 @@ +version: 2.1 + +orbs: + node: circleci/node@4.7 + +workflows: + basic: + jobs: + - node/test: + version: '16.10' + pkg-manager: yarn \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..745c20d --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,20 @@ +module.exports = { + env: { + browser: false, + es2021: true + }, + extends: [ + 'standard' + ], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module' + }, + plugins: [ + '@typescript-eslint' + ], + rules: { + 'no-tabs': 0 + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7fece6e --- /dev/null +++ b/.gitignore @@ -0,0 +1,127 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# Print +dist/test +home \ No newline at end of file diff --git a/.gitkeep b/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..660b820 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,5 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run lint +npm run test diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..53590b6 --- /dev/null +++ b/.npmignore @@ -0,0 +1,4 @@ +.circleci +.husky +example +test diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..9cb7929 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,16 @@ +# 🛠️ CHANGELOG + +## v1.0.0 + +#### Official API starts with the spec + +```bash +printer new [path] +printer component +printer type +printer inject +printer slice +printer page +printer api +crud +``` diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..97d3fde --- /dev/null +++ b/LICENSE @@ -0,0 +1,48 @@ +Printer is licensed under the terms of the GNU AGPLv3 with additional terms and +linking exceptions. The AGPLv3 license text can be found in the AGPLv3.txt file, the +additional terms are given below this paragraph. + +Linking exceptions +------------------ + +In addition to the terms in the AGPLv3 the following linking exceptions apply: + +The authors of this work grant the rights to dynamically link against the below +listed external sources or binaries during runtime, as an exception to the terms of +the GNU AGPLv3, under the terms that none of that linked code shall be deemed part of +this work, or a derivative work of this work, and as such are not required to meet +the license terms of the AGPLv3 and as such are not covered by the terms of the AGPLv3 +when conveying this work. + +The full and exhaustive list of those sources excepted from the AGPLv3 are: + +* The Google Maps API v3 located at: http://maps.google.com/maps/api/js +* The twitter "follow button" widget located at http://platform.twitter.com/widgets.js +* The GitHub Gist API located at http://gist.github.com/{id}.js. This applies only to + the javascript coded issues by GitHub Inc. and explicitly does not apply to the + content of any GitHub gist. +* The disqus API located at http://.disqus.com/embed.js where is the + userid of the forum. + + +Additional terms to AGPLv3 +------------------------- + +In compliance with section 7 of the GNU AGPLv3 the following additional terms apply: + +a) The contained and displayed copyright attribution footer notice may not be removed, + modified, altered or styled, or being removed, modified, altered or styled by + external software (scripts, stylesheets, filters) in a way that would considerably + affect visibility or readability of the notice to the user or any third party that + uses the software locally or over the network; this especially includes resizing, + overlaying, hiding or similar techniques. + +b) You may adjust or style the copyright footer to suit the appearance or layout of + your website, as long as this does not violate the terms given in section (a) + +c) Attribution hyperlinks in the footer have to be kept unaltered. + +d) You may add your name to the list of copyright holder(s) in the footer if you make + changes to the work, keeping intact all other copyright holder names + +e) Changes to these terms require written permission by the copyright holder(s). \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..14e5ab2 --- /dev/null +++ b/README.md @@ -0,0 +1,59 @@ +# 🖨️ Printer + +![Printer Banner](./banner.jpg "Printer Banner") + +## Automation Tooling for Next, Redux and Prisma + +![license](https://img.shields.io/badge/license-AGPLv3-blue.svg) +![version](https://img.shields.io/badge/version-1.0.0-blue.svg) +[![CircleCI](https://circleci.com/gh/PrinterFramework/CLI.svg?style=svg)](https://circleci.com/gh/PrinterFramework/CLI) +[![codecov](https://codecov.io/gh/PrinterFramework/CLI/branch/master/graph/badge.svg)](https://codecov.io/gh/PrinterFramework/CLI) + +## Why Printer? + +- Easy to use Code Generation Tool. + +- Boilerplate Automation + +- Modularized + +- Easy to scale + +- Easy to manage type systems and interfaces + +## How it works + +1. Install printer: + +```bash +# npm +npm install -g @printerframework/cli +# yarn +yarn global add @printerframework/cli +``` + +2. Create a new project: + +```bash +printer new printer-sample +cd printer-sample +``` + +3. Start developing: + +```bash +# Create a new component +printer component components/component +``` + +Review the documentation on [prntr.click/docs](https://prntr.click/docs). + +Review the [CHANGELOG](./CHANGELOG.md) for any updates made to the project. + +## Comments and Feedback + +Very open to comments and feedback. Very welcoming to people who open issues with reasonable constructive feedback. Please do not open PRs unless you're willing to commit code that matches the conventions and styles of the repository. + +## Licensing + +[AGPLv3](./LICENSE) - This applies to hard forking printer. Not to Next.js projects generated with Printer. diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..670e94f --- /dev/null +++ b/babel.config.js @@ -0,0 +1,13 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + node: 'current' + } + } + ], + '@babel/preset-typescript' + ] +} diff --git a/banner.jpg b/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25cde92b32d89d36a1d650b879a17c304d81c0b6 GIT binary patch literal 71931 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 pljrWuJ1G0zG(2SuY=SZe#YE$;5E>$G; +export declare function RecurseConverter(path: string): Promise; +export declare function ConvertTemplate(path: string, filename: string): Promise; diff --git a/dist/src/converter.js b/dist/src/converter.js new file mode 100644 index 0000000..86deb06 --- /dev/null +++ b/dist/src/converter.js @@ -0,0 +1,108 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConvertTemplate = exports.RecurseConverter = exports.Converter = void 0; +var path_1 = require("path"); +var fs_jetpack_1 = require("fs-jetpack"); +function Converter() { + return __awaiter(this, void 0, void 0, function () { + var path; + return __generator(this, function (_a) { + path = (0, path_1.join)(__dirname, 'templates'); + RecurseConverter(path); + return [2 /*return*/]; + }); + }); +} +exports.Converter = Converter; +function RecurseConverter(path) { + return __awaiter(this, void 0, void 0, function () { + var files, _a, _b, file, subpath; + var e_1, _c; + return __generator(this, function (_d) { + files = (0, fs_jetpack_1.list)(path); + try { + for (_a = __values(files || []), _b = _a.next(); !_b.done; _b = _a.next()) { + file = _b.value; + subpath = (0, path_1.join)(path, file); + if (file.indexOf('.template') !== -1) { + ConvertTemplate(subpath, file); + } + else if (file.indexOf('.') === -1) { + RecurseConverter(subpath); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_b && !_b.done && (_c = _a.return)) _c.call(_a); + } + finally { if (e_1) throw e_1.error; } + } + return [2 /*return*/]; + }); + }); +} +exports.RecurseConverter = RecurseConverter; +function ConvertTemplate(path, filename) { + var _a; + return __awaiter(this, void 0, void 0, function () { + var writePath, data; + return __generator(this, function (_b) { + writePath = (0, path_1.join)(process.cwd(), 'docs', 'templates', "".concat(filename, ".ts")); + data = "export default `".concat((_a = (0, fs_jetpack_1.read)(path)) === null || _a === void 0 ? void 0 : _a.toString().replaceAll('`', '\\`'), "`"); + (0, fs_jetpack_1.write)(writePath, data); + return [2 /*return*/]; + }); + }); +} +exports.ConvertTemplate = ConvertTemplate; +(function () { return Converter(); })(); +//# sourceMappingURL=converter.js.map \ No newline at end of file diff --git a/dist/src/converter.js.map b/dist/src/converter.js.map new file mode 100644 index 0000000..a173583 --- /dev/null +++ b/dist/src/converter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../src/converter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA2B;AAC3B,yCAA8C;AAE9C,SAAsB,SAAS;;;;YACvB,IAAI,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,WAAW,CAAC,CAAA;YACzC,gBAAgB,CAAC,IAAI,CAAC,CAAA;;;;CACvB;AAHD,8BAGC;AAED,SAAsB,gBAAgB,CAAE,IAAY;;;;;YAC5C,KAAK,GAAG,IAAA,iBAAI,EAAC,IAAI,CAAC,CAAA;;gBACxB,KAAmB,KAAA,SAAA,KAAK,IAAI,EAAE,CAAA,4CAAE;oBAArB,IAAI;oBACP,OAAO,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAA;oBAChC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;wBACpC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;qBAC/B;yBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;wBACnC,gBAAgB,CAAC,OAAO,CAAC,CAAA;qBAC1B;iBACF;;;;;;;;;;;;CACF;AAVD,4CAUC;AAED,SAAsB,eAAe,CAAE,IAAY,EAAE,QAAgB;;;;;YAC7D,SAAS,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,UAAG,QAAQ,QAAK,CAAC,CAAA;YACtE,IAAI,GAAG,0BAAoB,MAAA,IAAA,iBAAI,EAAC,IAAI,CAAC,0CAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,MAAI,CAAA;YAClF,IAAA,kBAAK,EAAC,SAAS,EAAE,IAAI,CAAC,CAAA;;;;CACvB;AAJD,0CAIC;AAED,CAAC,cAAM,OAAA,SAAS,EAAE,EAAX,CAAW,CAAC,EAAE,CAAA"} \ No newline at end of file diff --git a/dist/src/generators/api.d.ts b/dist/src/generators/api.d.ts new file mode 100644 index 0000000..0e9c895 --- /dev/null +++ b/dist/src/generators/api.d.ts @@ -0,0 +1 @@ +export declare function generateApi(path: string): Promise; diff --git a/dist/src/generators/api.js b/dist/src/generators/api.js new file mode 100644 index 0000000..928079f --- /dev/null +++ b/dist/src/generators/api.js @@ -0,0 +1,89 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generateApi = void 0; +var prompts_1 = __importDefault(require("prompts")); +var path_1 = require("path"); +var fs_jetpack_1 = require("fs-jetpack"); +var log_1 = require("../helpers/log"); +function generateApi(path) { + var _a; + return __awaiter(this, void 0, void 0, function () { + var apiPath, result, pathArray, fileName, name, apiTemplate; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + apiPath = (0, path_1.join)(process.cwd(), 'pages', 'api', "".concat(path, ".tsx")); + if (!((0, fs_jetpack_1.exists)(apiPath) !== false)) return [3 /*break*/, 2]; + return [4 /*yield*/, (0, prompts_1.default)({ + type: 'confirm', + name: 'overwrite', + message: 'This api already exists, overwrite it?' + })]; + case 1: + result = _b.sent(); + if (result.overwrite === false) { + return [2 /*return*/]; + } + _b.label = 2; + case 2: + pathArray = path.split('/'); + fileName = pathArray[pathArray.length - 1]; + name = fileName.replace(/[^\w\s]/gi, ''); + if (fileName.indexOf('.') !== -1) { + name = fileName.split('.').map(function (word) { return word[0].toUpperCase() + word.substring(1); }).join(''); + } + else if (fileName.indexOf('-') !== -1) { + name = fileName.split('-').map(function (word) { return word[0].toUpperCase() + word.substring(1); }).join(''); + } + else { + name = name[0].toUpperCase() + name.substring(1); + } + apiTemplate = (_a = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'api.template'))) === null || _a === void 0 ? void 0 : _a.replaceAll('{{name}}', name); + (0, fs_jetpack_1.write)(apiPath, apiTemplate || ''); + (0, log_1.Log)(" \u2705 Created pages/api/".concat(path, ".tsx").green); + return [2 /*return*/]; + } + }); + }); +} +exports.generateApi = generateApi; +//# sourceMappingURL=api.js.map \ No newline at end of file diff --git a/dist/src/generators/api.js.map b/dist/src/generators/api.js.map new file mode 100644 index 0000000..d6190d6 --- /dev/null +++ b/dist/src/generators/api.js.map @@ -0,0 +1 @@ +{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/generators/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA6B;AAC7B,6BAA2B;AAC3B,yCAAgD;AAChD,sCAAoC;AAEpC,SAAsB,WAAW,CAAE,IAAY;;;;;;;oBACvC,OAAO,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAG,IAAI,SAAM,CAAC,CAAA;yBAE9D,CAAA,IAAA,mBAAM,EAAC,OAAO,CAAC,KAAK,KAAK,CAAA,EAAzB,wBAAyB;oBACZ,qBAAM,IAAA,iBAAO,EAAC;4BAC3B,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,wCAAwC;yBAClD,CAAC,EAAA;;oBAJI,MAAM,GAAG,SAIb;oBAEF,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE;wBAC9B,sBAAM;qBACP;;;oBAGG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAC3B,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAC5C,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;oBAE5C,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;wBAChC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAzC,CAAyC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;qBAC3F;yBAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;wBACvC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAzC,CAAyC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;qBAC3F;yBAAM;wBACL,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;qBACjD;oBAEK,WAAW,GAAG,MAAA,IAAA,iBAAI,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,0CAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;oBAE1G,IAAA,kBAAK,EAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC,CAAA;oBACjC,IAAA,SAAG,EAAC,wCAA4B,IAAI,SAAM,CAAC,KAAK,CAAC,CAAA;;;;;CAClD;AA/BD,kCA+BC"} \ No newline at end of file diff --git a/dist/src/generators/component.d.ts b/dist/src/generators/component.d.ts new file mode 100644 index 0000000..4d3c424 --- /dev/null +++ b/dist/src/generators/component.d.ts @@ -0,0 +1 @@ +export declare function generateComponent(path: string): Promise; diff --git a/dist/src/generators/component.js b/dist/src/generators/component.js new file mode 100644 index 0000000..94d6aa0 --- /dev/null +++ b/dist/src/generators/component.js @@ -0,0 +1,118 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generateComponent = void 0; +var prompts_1 = __importDefault(require("prompts")); +var path_1 = require("path"); +var fs_jetpack_1 = require("fs-jetpack"); +var log_1 = require("../helpers/log"); +var config_1 = require("../config"); +function generateComponent(path) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; + return __awaiter(this, void 0, void 0, function () { + var result, pathArray, fileName, name, component, componentPath, style, stylePath, test_1, testPath, index, indexPath, component, componentPath; + return __generator(this, function (_l) { + switch (_l.label) { + case 0: + if (!((0, fs_jetpack_1.exists)((0, path_1.join)(process.cwd(), path)) !== false)) return [3 /*break*/, 2]; + return [4 /*yield*/, (0, prompts_1.default)({ + type: 'confirm', + name: 'overwrite', + message: 'This component already exists, overwrite it?' + })]; + case 1: + result = _l.sent(); + if (result.overwrite === false) { + return [2 /*return*/]; + } + _l.label = 2; + case 2: + pathArray = path.split('/'); + fileName = pathArray[pathArray.length - 1]; + name = fileName.replace(/[^\w\s]/gi, ''); + if (fileName.indexOf('.') !== -1) { + name = fileName.split('.').map(function (word) { return word[0].toUpperCase() + word.substring(1); }).join(''); + } + else if (fileName.indexOf('-') !== -1) { + name = fileName.split('-').map(function (word) { return word[0].toUpperCase() + word.substring(1); }).join(''); + } + else { + name = name[0].toUpperCase() + name.substring(1); + } + if (config_1.Config.componentFolder === true) { + component = (_a = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'component', 'component.nostyle.template'))) === null || _a === void 0 ? void 0 : _a.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path); + componentPath = (0, path_1.join)(process.cwd(), path, "".concat(fileName, ".component.tsx")); + if (((_b = config_1.Config.component) === null || _b === void 0 ? void 0 : _b.style) === true) { + component = (_c = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'component', 'component.template'))) === null || _c === void 0 ? void 0 : _c.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path); + style = (_d = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'component', 'style.template'))) === null || _d === void 0 ? void 0 : _d.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path); + stylePath = (0, path_1.join)(process.cwd(), path, "".concat(fileName, ".style.tsx")); + (0, fs_jetpack_1.write)(stylePath, style || ''); + (0, log_1.Log)(" \u2705 Created ".concat(fileName, ".style.tsx").green); + } + (0, fs_jetpack_1.write)(componentPath, component || ''); + (0, log_1.Log)(" \u2705 Created ".concat(fileName, ".component.tsx").green); + if ((_e = config_1.Config.component) === null || _e === void 0 ? void 0 : _e.test) { + test_1 = (_f = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'component', 'test.template'))) === null || _f === void 0 ? void 0 : _f.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName); + testPath = (0, path_1.join)(process.cwd(), path, "".concat(fileName, ".test.tsx")); + (0, fs_jetpack_1.write)(testPath, test_1 || ''); + (0, log_1.Log)(" \u2705 Created ".concat(fileName, ".test.tsx").green); + } + index = (_g = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'component', 'index.nostyle.template'))) === null || _g === void 0 ? void 0 : _g.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path); + indexPath = (0, path_1.join)(process.cwd(), path, 'index.tsx'); + if (((_h = config_1.Config.component) === null || _h === void 0 ? void 0 : _h.style) === true) { + index = (_j = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'component', 'index.template'))) === null || _j === void 0 ? void 0 : _j.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path).replaceAll('{{path}}', path); + } + (0, fs_jetpack_1.write)(indexPath, index || ''); + (0, log_1.Log)(' ✅ Created index.tsx'.green); + } + else { + component = (_k = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'component', 'component.nostyle.template'))) === null || _k === void 0 ? void 0 : _k.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path); + componentPath = (0, path_1.join)(process.cwd(), "".concat(path, ".tsx")); + (0, fs_jetpack_1.write)(componentPath, component || ''); + (0, log_1.Log)(" \u2705 Created ".concat(path, ".tsx").green); + } + return [2 /*return*/]; + } + }); + }); +} +exports.generateComponent = generateComponent; +//# sourceMappingURL=component.js.map \ No newline at end of file diff --git a/dist/src/generators/component.js.map b/dist/src/generators/component.js.map new file mode 100644 index 0000000..57651f6 --- /dev/null +++ b/dist/src/generators/component.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/generators/component.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/generators/crud.d.ts b/dist/src/generators/crud.d.ts new file mode 100644 index 0000000..5937261 --- /dev/null +++ b/dist/src/generators/crud.d.ts @@ -0,0 +1 @@ +export declare function generateCrud(model: string): Promise; diff --git a/dist/src/generators/crud.js b/dist/src/generators/crud.js new file mode 100644 index 0000000..0ad73d8 --- /dev/null +++ b/dist/src/generators/crud.js @@ -0,0 +1,94 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generateCrud = void 0; +var prompts_1 = __importDefault(require("prompts")); +var path_1 = require("path"); +var fs_jetpack_1 = require("fs-jetpack"); +var log_1 = require("../helpers/log"); +function generateCrud(model) { + var _a, _b, _c, _d, _e; + return __awaiter(this, void 0, void 0, function () { + var basePath, result, createPath, createTemplate, updatePath, updateTemplate, getPath, getTemplate, listPath, listTemplate, deletePath, deleteTemplate; + return __generator(this, function (_f) { + switch (_f.label) { + case 0: + basePath = (0, path_1.join)(process.cwd(), 'pages', 'api', model); + if (!((0, fs_jetpack_1.exists)(basePath) !== false)) return [3 /*break*/, 2]; + return [4 /*yield*/, (0, prompts_1.default)({ + type: 'confirm', + name: 'overwrite', + message: 'Routes already exist in this folder, overwrite it?' + })]; + case 1: + result = _f.sent(); + if (result.overwrite === false) { + return [2 /*return*/]; + } + _f.label = 2; + case 2: + createPath = (0, path_1.join)(basePath, 'create.tsx'); + createTemplate = (_a = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'crud', 'create.template'))) === null || _a === void 0 ? void 0 : _a.replaceAll('{{model}}', model); + (0, fs_jetpack_1.write)(createPath, createTemplate || ''); + (0, log_1.Log)(" \u2705 Created pages/api/".concat(model, "/create.tsx").green); + updatePath = (0, path_1.join)(basePath, 'update.tsx'); + updateTemplate = (_b = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'crud', 'update.template'))) === null || _b === void 0 ? void 0 : _b.replaceAll('{{model}}', model); + (0, fs_jetpack_1.write)(updatePath, updateTemplate || ''); + (0, log_1.Log)(" \u2705 Created pages/api/".concat(model, "/update.tsx").green); + getPath = (0, path_1.join)(basePath, 'get.tsx'); + getTemplate = (_c = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'crud', 'get.template'))) === null || _c === void 0 ? void 0 : _c.replaceAll('{{model}}', model); + (0, fs_jetpack_1.write)(getPath, getTemplate || ''); + (0, log_1.Log)(" \u2705 Created pages/api/".concat(model, "/get.tsx").green); + listPath = (0, path_1.join)(basePath, 'list.tsx'); + listTemplate = (_d = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'crud', 'list.template'))) === null || _d === void 0 ? void 0 : _d.replaceAll('{{model}}', model); + (0, fs_jetpack_1.write)(listPath, listTemplate || ''); + (0, log_1.Log)(" \u2705 Created pages/api/".concat(model, "/list.tsx").green); + deletePath = (0, path_1.join)(basePath, 'delete.tsx'); + deleteTemplate = (_e = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'crud', 'delete.template'))) === null || _e === void 0 ? void 0 : _e.replaceAll('{{model}}', model); + (0, fs_jetpack_1.write)(deletePath, deleteTemplate || ''); + (0, log_1.Log)(" \u2705 Created pages/api/".concat(model, "/delete.tsx").green); + return [2 /*return*/]; + } + }); + }); +} +exports.generateCrud = generateCrud; +//# sourceMappingURL=crud.js.map \ No newline at end of file diff --git a/dist/src/generators/crud.js.map b/dist/src/generators/crud.js.map new file mode 100644 index 0000000..cc89d9f --- /dev/null +++ b/dist/src/generators/crud.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud.js","sourceRoot":"","sources":["../../../src/generators/crud.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/generators/inject.d.ts b/dist/src/generators/inject.d.ts new file mode 100644 index 0000000..0c8fa92 --- /dev/null +++ b/dist/src/generators/inject.d.ts @@ -0,0 +1 @@ +export declare function inject(slice: string, component: string): Promise; diff --git a/dist/src/generators/inject.js b/dist/src/generators/inject.js new file mode 100644 index 0000000..1481df8 --- /dev/null +++ b/dist/src/generators/inject.js @@ -0,0 +1,151 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.inject = void 0; +var path_1 = require("path"); +var fs_jetpack_1 = require("fs-jetpack"); +var log_1 = require("../helpers/log"); +var match_1 = require("../helpers/match"); +function inject(slice, component) { + return __awaiter(this, void 0, void 0, function () { + var filePath, pathArray, fileName, fileContents, fileComponentPath, slicePath, sliceContents, matches, splitFile, sliceMatch, newContents, stateInjections, actionInjections, i, index, match, decorator, typeMap, varKey, varKey, hasExistingImport, i, stateInjection, typeName, i, stateInjection, injectionLine, tempContents, typeMap, typeName, injectionLine, tempContents, tempContents, fileComponentPath; + return __generator(this, function (_a) { + filePath = (0, path_1.join)(process.cwd(), component); + pathArray = component.split('/'); + fileName = pathArray[pathArray.length - 1]; + fileContents = ''; + if ((0, fs_jetpack_1.exists)(filePath) === 'dir') { + fileComponentPath = (0, path_1.join)(process.cwd(), component, "".concat(fileName, ".component.tsx")); + fileContents = (0, fs_jetpack_1.read)(fileComponentPath) || ''; + } + else { + fileContents = (0, fs_jetpack_1.read)("".concat(filePath, ".tsx")) || ''; + } + slicePath = (0, path_1.join)(process.cwd(), 'redux', 'slice', "".concat(slice, ".tsx")); + sliceContents = (0, fs_jetpack_1.read)(slicePath) || ''; + matches = (0, match_1.findMatches)(sliceContents, /@printer/gmi); + splitFile = sliceContents.split('\n'); + sliceMatch = (0, match_1.findMatches)(sliceContents, match_1.SliceMatcher)[0]; + newContents = fileContents; + stateInjections = []; + actionInjections = []; + for (i = 0; i < matches.length; i++) { + index = matches[i]; + match = splitFile[index + 1]; + decorator = splitFile[index].trim().split('::'); + typeMap = ''; + if (decorator.length > 2) { + typeMap = decorator[2]; + } + if (index < sliceMatch) { + varKey = match.split(':')[0].trim(); + stateInjections.push({ value: varKey, type: typeMap }); + } + else { + varKey = match.split('(')[0].trim(); + actionInjections.push(varKey); + } + } + if (stateInjections.length === 0 && actionInjections.length === 0) { + (0, log_1.Log)(' ⚠️ No printer decorators were found in the slice'.yellow); + return [2 /*return*/]; + } + hasExistingImport = (0, match_1.findMatches)(newContents, match_1.ReduxOptionalMatcher); + if (hasExistingImport.length > 0) { + newContents = newContents.replace(match_1.ReduxOptionalMatcher, 'import { useSelector, useDispatch } from \'react-redux\''); + } + else { + newContents = "import { useSelector, useDispatch } from 'react-redux'\n\n".concat(newContents); + } + for (i = 0; i < stateInjections.length; i++) { + stateInjection = stateInjections[i]; + if (stateInjection.type) { + typeName = "".concat(stateInjection.type[0].toUpperCase() + stateInjection.type.substring(1), "Type"); + if ((0, match_1.findMatches)(newContents, (0, match_1.typeMatcher)(typeName)).length === 0) { + newContents = "import ".concat(typeName, " from 'types/").concat(stateInjection.type, "'\n").concat(newContents); + } + } + } + for (i = 0; i < stateInjections.length; i++) { + stateInjection = stateInjections[i]; + if ((0, match_1.findMatches)(newContents, (0, match_1.selectorMatcher)(stateInjection.value)).length === 0) { + injectionLine = (0, match_1.findMatches)(newContents, (0, match_1.functionMatcher)(fileName))[0]; + tempContents = newContents.split('\n'); + typeMap = 'any'; + if (stateInjection.type) { + typeName = stateInjection.type[0].toUpperCase() + stateInjection.type.substring(1); + typeMap = "{ ".concat(stateInjection.type, ": { ").concat(stateInjection.value, ": ").concat(typeName, "Type } }"); + } + tempContents[injectionLine] = tempContents[injectionLine] + "\n const ".concat(stateInjection.value, " = useSelector((state: ").concat(typeMap, ") => ({ ...state.").concat(slice, ".").concat(stateInjection.value, " }))"); + if (i === stateInjections.length - 1) { + tempContents[injectionLine] = tempContents[injectionLine] + '\n'; + } + newContents = tempContents.join('\n'); + } + (0, log_1.Log)(" \u2705 State '".concat(stateInjection.value, "' was injected into the component ").concat(stateInjection.type ? "with the type ".concat(stateInjection.type) : null).green); + } + if (actionInjections.length > 0) { + if ((0, match_1.findMatches)(newContents, match_1.DispatchMatcher).length === 0) { + injectionLine = (0, match_1.findMatches)(newContents, (0, match_1.functionMatcher)(fileName))[0]; + tempContents = newContents.split('\n'); + tempContents[injectionLine] = tempContents[injectionLine] + '\n const dispatch = useDispatch()'; + newContents = tempContents.join('\n'); + } + if ((0, match_1.findMatches)(newContents, (0, match_1.actionMatcher)(actionInjections)).length > 0) { + newContents = newContents.replace((0, match_1.actionMatcher)(actionInjections), "import { ".concat(actionInjections.join(', '), " } from 'redux/slice/").concat(slice, "'")); + } + else { + tempContents = newContents.split('\n'); + tempContents[0] = tempContents[0] + "\nimport { ".concat(actionInjections.join(', '), " } from 'redux/slice/").concat(slice, "'"); + newContents = tempContents.join('\n'); + } + (0, log_1.Log)(" \u2705 ".concat(actionInjections.length, " action").concat(actionInjections.length > 1 ? 's were' : ' was', " injected into the component").green); + } + if ((0, fs_jetpack_1.exists)(filePath) === 'dir') { + fileComponentPath = (0, path_1.join)(process.cwd(), component, "".concat(fileName, ".component.tsx")); + (0, fs_jetpack_1.write)(fileComponentPath, newContents); + } + else { + (0, fs_jetpack_1.write)("".concat(filePath, ".tsx"), newContents); + } + return [2 /*return*/]; + }); + }); +} +exports.inject = inject; +//# sourceMappingURL=inject.js.map \ No newline at end of file diff --git a/dist/src/generators/inject.js.map b/dist/src/generators/inject.js.map new file mode 100644 index 0000000..86117c3 --- /dev/null +++ b/dist/src/generators/inject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../src/generators/inject.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/generators/new.d.ts b/dist/src/generators/new.d.ts new file mode 100644 index 0000000..6dfc600 --- /dev/null +++ b/dist/src/generators/new.d.ts @@ -0,0 +1 @@ +export declare function generateNewProject(path?: string): Promise; diff --git a/dist/src/generators/new.js b/dist/src/generators/new.js new file mode 100644 index 0000000..58526e9 --- /dev/null +++ b/dist/src/generators/new.js @@ -0,0 +1,141 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generateNewProject = void 0; +var prompts_1 = __importDefault(require("prompts")); +var path_1 = require("path"); +var fs_jetpack_1 = require("fs-jetpack"); +var log_1 = require("../helpers/log"); +var crypto_1 = require("crypto"); +function generateNewProject(path) { + var _a; + if (path === void 0) { path = '.'; } + return __awaiter(this, void 0, void 0, function () { + var appPath, documentPath, babelPath, gitignorePath, gitkeepPath, gitkeepPublicPath, indexPath, utilSessionPath, resetCssPath, fontsCssPath, printerCssPath, printerScssPath, prismaClientPath, prismaSchemaPath, packagePath, wrapperPath, reducerPath, reducersPath, tsconfigPath, precommitPath, eslintrcPath, printerConfigPath, result; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + appPath = (0, path_1.join)(process.cwd(), path, 'pages', '_app.tsx'); + documentPath = (0, path_1.join)(process.cwd(), path, 'pages', '_document.tsx'); + babelPath = (0, path_1.join)(process.cwd(), path, '.babelrc'); + gitignorePath = (0, path_1.join)(process.cwd(), path, '.gitignore'); + gitkeepPath = (0, path_1.join)(process.cwd(), path, '.gitkeep'); + gitkeepPublicPath = (0, path_1.join)(process.cwd(), path, 'public', '.gitkeep'); + indexPath = (0, path_1.join)(process.cwd(), path, 'pages', 'index.tsx'); + utilSessionPath = (0, path_1.join)(process.cwd(), path, 'util', 'session.ts'); + resetCssPath = (0, path_1.join)(process.cwd(), path, 'public', 'assets', 'css', 'reset.css'); + fontsCssPath = (0, path_1.join)(process.cwd(), path, 'public', 'assets', 'css', 'fonts.css'); + printerCssPath = (0, path_1.join)(process.cwd(), path, 'public', 'assets', 'css', 'printer.css'); + printerScssPath = (0, path_1.join)(process.cwd(), path, 'public', 'assets', 'scss', 'printer.scss'); + prismaClientPath = (0, path_1.join)(process.cwd(), path, 'prisma', 'client.ts'); + prismaSchemaPath = (0, path_1.join)(process.cwd(), path, 'prisma', 'schema.prisma'); + packagePath = (0, path_1.join)(process.cwd(), path, 'package.json'); + wrapperPath = (0, path_1.join)(process.cwd(), path, 'redux', 'wrapper.tsx'); + reducerPath = (0, path_1.join)(process.cwd(), path, 'redux', 'reducer.tsx'); + reducersPath = (0, path_1.join)(process.cwd(), path, 'redux', 'reducers.json'); + tsconfigPath = (0, path_1.join)(process.cwd(), path, 'tsconfig.json'); + precommitPath = (0, path_1.join)(process.cwd(), path, '.husky', 'pre-commit'); + eslintrcPath = (0, path_1.join)(process.cwd(), path, '.eslintrc.js'); + printerConfigPath = (0, path_1.join)(process.cwd(), path, 'printer.config.json'); + if (!((0, fs_jetpack_1.exists)(printerConfigPath) !== false)) return [3 /*break*/, 2]; + return [4 /*yield*/, (0, prompts_1.default)({ + type: 'confirm', + name: 'overwrite', + message: 'A project already exists here, overwrite it?' + })]; + case 1: + result = _b.sent(); + if (result.overwrite === false) { + return [2 /*return*/]; + } + _b.label = 2; + case 2: + (0, fs_jetpack_1.write)(babelPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'babelrc.template')) || ''); + (0, log_1.Log)(' ✅ Created .babelrc'.green); + (0, fs_jetpack_1.write)(gitignorePath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'gitignore.template')) || ''); + (0, log_1.Log)(' ✅ Created .gitignore'.green); + (0, fs_jetpack_1.write)(gitkeepPath, ''); + (0, log_1.Log)(' ✅ Created .gitkeep'.green); + (0, fs_jetpack_1.write)(gitkeepPublicPath, ''); + (0, log_1.Log)(' ✅ Created public/.gitkeep'.green); + (0, fs_jetpack_1.write)(appPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', '_app.template')) || ''); + (0, log_1.Log)(' ✅ Created pages/_app.tsx'.green); + (0, fs_jetpack_1.write)(documentPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', '_document.template')) || ''); + (0, log_1.Log)(' ✅ Created pages/_document.tsx'.green); + (0, fs_jetpack_1.write)(indexPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'index.template')) || ''); + (0, log_1.Log)(' ✅ Created pages/index.tsx'.green); + (0, fs_jetpack_1.write)(utilSessionPath, ((_a = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'session.template'))) === null || _a === void 0 ? void 0 : _a.replaceAll('{{password}}', (0, crypto_1.randomBytes)(32).toString('hex'))) || ''); + (0, log_1.Log)(' ✅ Created util/session.ts'.green); + (0, fs_jetpack_1.write)(resetCssPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'reset.template')) || ''); + (0, log_1.Log)(' ✅ Created public/assets/css/reset.css'.green); + (0, fs_jetpack_1.write)(fontsCssPath, ''); + (0, log_1.Log)(' ✅ Created public/assets/css/fonts.css'.green); + (0, fs_jetpack_1.write)(printerCssPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'printer.template')) || ''); + (0, log_1.Log)(' ✅ Created public/assets/css/printer.css'.green); + (0, fs_jetpack_1.write)(printerScssPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'printer.template')) || ''); + (0, log_1.Log)(' ✅ Created public/assets/scss/printer.scss'.green); + (0, fs_jetpack_1.write)(prismaClientPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'prisma.client.template')) || ''); + (0, log_1.Log)(' ✅ Created prisma/client.ts'.green); + (0, fs_jetpack_1.write)(prismaSchemaPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'schema.prisma.template')) || ''); + (0, log_1.Log)(' ✅ Created prisma/schema.prisma'.green); + (0, fs_jetpack_1.write)(packagePath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'package.template')) || ''); + (0, log_1.Log)(' ✅ Created package.json'.green); + (0, fs_jetpack_1.write)(wrapperPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'wrapper.template')) || ''); + (0, log_1.Log)(' ✅ Created redux/wrapper.tsx'.green); + (0, fs_jetpack_1.write)(reducerPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'reducer.template')) || ''); + (0, log_1.Log)(' ✅ Created redux/reducer.tsx'.green); + (0, fs_jetpack_1.write)(reducersPath, '[]'); + (0, log_1.Log)(' ✅ Created redux/reducers.json'.green); + (0, fs_jetpack_1.write)(tsconfigPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'tsconfig.template')) || ''); + (0, log_1.Log)(' ✅ Created tsconfig.json'.green); + (0, fs_jetpack_1.write)(precommitPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'precommit.template')) || ''); + (0, log_1.Log)(' ✅ Created .husky/pre-commit'.green); + (0, fs_jetpack_1.write)(eslintrcPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'eslintrc.template')) || ''); + (0, log_1.Log)(' ✅ Created printer.config.json'.green); + (0, fs_jetpack_1.write)(printerConfigPath, (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'new', 'printer.config.template')) || ''); + (0, log_1.Log)(' ✅ Created .eslintrc.js'.green); + return [2 /*return*/]; + } + }); + }); +} +exports.generateNewProject = generateNewProject; +//# sourceMappingURL=new.js.map \ No newline at end of file diff --git a/dist/src/generators/new.js.map b/dist/src/generators/new.js.map new file mode 100644 index 0000000..b51ee2d --- /dev/null +++ b/dist/src/generators/new.js.map @@ -0,0 +1 @@ +{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/generators/new.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/generators/page.d.ts b/dist/src/generators/page.d.ts new file mode 100644 index 0000000..77dd970 --- /dev/null +++ b/dist/src/generators/page.d.ts @@ -0,0 +1 @@ +export declare function generatePage(path: string): Promise; diff --git a/dist/src/generators/page.js b/dist/src/generators/page.js new file mode 100644 index 0000000..6c77ec8 --- /dev/null +++ b/dist/src/generators/page.js @@ -0,0 +1,99 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generatePage = void 0; +var prompts_1 = __importDefault(require("prompts")); +var path_1 = require("path"); +var fs_jetpack_1 = require("fs-jetpack"); +var log_1 = require("../helpers/log"); +function generatePage(path) { + var _a, _b; + return __awaiter(this, void 0, void 0, function () { + var pagePath, result, pathArray, fileName, urls, name, pageTemplate; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + pagePath = (0, path_1.join)(process.cwd(), 'pages', "".concat(path, ".tsx")); + if (!((0, fs_jetpack_1.exists)(pagePath) !== false)) return [3 /*break*/, 2]; + return [4 /*yield*/, (0, prompts_1.default)({ + type: 'confirm', + name: 'overwrite', + message: 'This page already exists, overwrite it?' + })]; + case 1: + result = _c.sent(); + if (result.overwrite === false) { + return [2 /*return*/]; + } + _c.label = 2; + case 2: + pathArray = path.split('/'); + fileName = pathArray[pathArray.length - 1]; + urls = []; + name = fileName.replace(/[^\w\s]/gi, ''); + pageTemplate = ''; + if (path.match(/\[(.*?)\]/g)) { + urls = path.match(/\[(.*?)\]/g); + urls = urls.map(function (url) { return url.replace(/\[/g, '').replace(/\]/g, ''); }); + name = name[0].toUpperCase() + name.substring(1); + pageTemplate = ((_a = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'page.url.template'))) === null || _a === void 0 ? void 0 : _a.replaceAll('{{name}}', name).replaceAll('{{url}}', urls.join(', '))) || ''; + } + else { + if (fileName.indexOf('.') !== -1) { + name = fileName.split('.').map(function (word) { return word[0].toUpperCase() + word.substring(1); }).join(''); + } + else if (fileName.indexOf('-') !== -1) { + name = fileName.split('-').map(function (word) { return word[0].toUpperCase() + word.substring(1); }).join(''); + } + else { + name = name[0].toUpperCase() + name.substring(1); + } + pageTemplate = ((_b = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'page.template'))) === null || _b === void 0 ? void 0 : _b.replaceAll('{{name}}', name)) || ''; + } + (0, fs_jetpack_1.write)(pagePath, pageTemplate); + (0, log_1.Log)(" \u2705 Created pages/".concat(path, ".tsx").green); + return [2 /*return*/]; + } + }); + }); +} +exports.generatePage = generatePage; +//# sourceMappingURL=page.js.map \ No newline at end of file diff --git a/dist/src/generators/page.js.map b/dist/src/generators/page.js.map new file mode 100644 index 0000000..44f5a04 --- /dev/null +++ b/dist/src/generators/page.js.map @@ -0,0 +1 @@ +{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/generators/page.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/generators/slice.d.ts b/dist/src/generators/slice.d.ts new file mode 100644 index 0000000..89fca63 --- /dev/null +++ b/dist/src/generators/slice.d.ts @@ -0,0 +1 @@ +export declare function generateSlice(name: string): Promise; diff --git a/dist/src/generators/slice.js b/dist/src/generators/slice.js new file mode 100644 index 0000000..217730f --- /dev/null +++ b/dist/src/generators/slice.js @@ -0,0 +1,96 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generateSlice = void 0; +var prompts_1 = __importDefault(require("prompts")); +var path_1 = require("path"); +var fs_jetpack_1 = require("fs-jetpack"); +var log_1 = require("../helpers/log"); +function generateSlice(name) { + var _a, _b; + return __awaiter(this, void 0, void 0, function () { + var slicePath, reducerPath, reducersPath, reducers, result, error_1; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + slicePath = (0, path_1.join)(process.cwd(), 'redux', 'slice', "".concat(name, ".tsx")); + reducerPath = (0, path_1.join)(process.cwd(), 'redux', 'reducer.tsx'); + reducersPath = (0, path_1.join)(process.cwd(), 'redux', 'reducers.json'); + reducers = []; + _c.label = 1; + case 1: + _c.trys.push([1, 4, , 5]); + reducers = JSON.parse((0, fs_jetpack_1.read)(reducersPath)); + if (!(reducers.indexOf(name) !== -1)) return [3 /*break*/, 3]; + return [4 /*yield*/, (0, prompts_1.default)({ + type: 'confirm', + name: 'overwrite', + message: 'This slice already exists, overwrite it?' + })]; + case 2: + result = _c.sent(); + if (result.overwrite === false) { + return [2 /*return*/]; + } + _c.label = 3; + case 3: + if (reducers.indexOf(name) === -1) { + reducers.push(name); + } + (0, fs_jetpack_1.write)(reducersPath, JSON.stringify(reducers, null, 2)); + return [3 /*break*/, 5]; + case 4: + error_1 = _c.sent(); + (0, log_1.Log)(' ❗ redux/reducers.json is invalid, please make sure it\'s a JSON Array'.red); + process.exit(); + return [3 /*break*/, 5]; + case 5: + (0, fs_jetpack_1.write)(slicePath, ((_a = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'slice', 'slice.template'))) === null || _a === void 0 ? void 0 : _a.replaceAll('{{name}}', name)) || ''); + (0, log_1.Log)(" \u2705 Created redux/slice/".concat(name, ".tsx").green); + (0, fs_jetpack_1.write)(reducerPath, ((_b = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'slice', 'reducer.template'))) === null || _b === void 0 ? void 0 : _b.replaceAll('{{import}}', reducers.map(function (slice) { return "import { ".concat(slice, "Slice } from 'redux/slice/").concat(slice, "'"); }).join('\n')).replaceAll('{{reducer}}', reducers.map(function (slice) { return " ".concat(slice, ": ").concat(slice, "Slice.reducer,"); }).join('\n'))) || ''); + (0, log_1.Log)(' ✅ Updated redux/reducer.tsx'.green); + return [2 /*return*/]; + } + }); + }); +} +exports.generateSlice = generateSlice; +//# sourceMappingURL=slice.js.map \ No newline at end of file diff --git a/dist/src/generators/slice.js.map b/dist/src/generators/slice.js.map new file mode 100644 index 0000000..683f248 --- /dev/null +++ b/dist/src/generators/slice.js.map @@ -0,0 +1 @@ +{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../../src/generators/slice.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA6B;AAC7B,6BAA2B;AAC3B,yCAAwC;AACxC,sCAAoC;AAEpC,SAAsB,aAAa,CAAE,IAAY;;;;;;;oBACzC,SAAS,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAG,IAAI,SAAM,CAAC,CAAA;oBAChE,WAAW,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;oBACzD,YAAY,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,CAAA;oBAE9D,QAAQ,GAAG,EAAE,CAAA;;;;oBAGf,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAI,EAAC,YAAY,CAAW,CAAa,CAAA;yBAE3D,CAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA,EAA7B,wBAA6B;oBAChB,qBAAM,IAAA,iBAAO,EAAC;4BAC3B,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,0CAA0C;yBACpD,CAAC,EAAA;;oBAJI,MAAM,GAAG,SAIb;oBAEF,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE;wBAC9B,sBAAM;qBACP;;;oBAGH,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;wBACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;qBACpB;oBACD,IAAA,kBAAK,EAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;;;oBAEtD,IAAA,SAAG,EAAC,4EAA4E,CAAC,GAAG,CAAC,CAAA;oBACrF,OAAO,CAAC,IAAI,EAAE,CAAA;;;oBAGhB,IAAA,kBAAK,EACH,SAAS,EACT,CAAA,MAAA,IAAA,iBAAI,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,0CAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,KAAI,EAAE,CACxG,CAAA;oBACD,IAAA,SAAG,EAAC,0CAA8B,IAAI,SAAM,CAAC,KAAK,CAAC,CAAA;oBACnD,IAAA,kBAAK,EACH,WAAW,EACX,CAAA,MAAA,IAAA,iBAAI,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,0CACjE,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,mBAAY,KAAK,uCAA6B,KAAK,MAAG,EAAtD,CAAsD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAClH,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,YAAK,KAAK,eAAK,KAAK,mBAAgB,EAApC,CAAoC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAI,EAAE,CAC3G,CAAA;oBACD,IAAA,SAAG,EAAC,kCAAkC,CAAC,KAAK,CAAC,CAAA;;;;;CAC9C;AA3CD,sCA2CC"} \ No newline at end of file diff --git a/dist/src/generators/type.d.ts b/dist/src/generators/type.d.ts new file mode 100644 index 0000000..80b9d68 --- /dev/null +++ b/dist/src/generators/type.d.ts @@ -0,0 +1 @@ +export declare function generateType(path: string): Promise; diff --git a/dist/src/generators/type.js b/dist/src/generators/type.js new file mode 100644 index 0000000..7910dcd --- /dev/null +++ b/dist/src/generators/type.js @@ -0,0 +1,89 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generateType = void 0; +var prompts_1 = __importDefault(require("prompts")); +var path_1 = require("path"); +var fs_jetpack_1 = require("fs-jetpack"); +var log_1 = require("../helpers/log"); +function generateType(path) { + var _a; + return __awaiter(this, void 0, void 0, function () { + var typePath, result, pathArray, fileName, name, typeTemplate; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + typePath = (0, path_1.join)(process.cwd(), 'types', "".concat(path, ".tsx")); + if (!((0, fs_jetpack_1.exists)(typePath) !== false)) return [3 /*break*/, 2]; + return [4 /*yield*/, (0, prompts_1.default)({ + type: 'confirm', + name: 'overwrite', + message: 'This api already exists, overwrite it?' + })]; + case 1: + result = _b.sent(); + if (result.overwrite === false) { + return [2 /*return*/]; + } + _b.label = 2; + case 2: + pathArray = path.split('/'); + fileName = pathArray[pathArray.length - 1]; + name = fileName.replace(/[^\w\s]/gi, ''); + if (fileName.indexOf('.') !== -1) { + name = fileName.split('.').map(function (word) { return word[0].toUpperCase() + word.substring(1); }).join(''); + } + else if (fileName.indexOf('-') !== -1) { + name = fileName.split('-').map(function (word) { return word[0].toUpperCase() + word.substring(1); }).join(''); + } + else { + name = name[0].toUpperCase() + name.substring(1); + } + typeTemplate = (_a = (0, fs_jetpack_1.read)((0, path_1.join)(__dirname, '..', 'templates', 'type.template'))) === null || _a === void 0 ? void 0 : _a.replaceAll('{{name}}', name); + (0, fs_jetpack_1.write)(typePath, typeTemplate || ''); + (0, log_1.Log)(" \u2705 Created types/".concat(path, ".tsx").green); + return [2 /*return*/]; + } + }); + }); +} +exports.generateType = generateType; +//# sourceMappingURL=type.js.map \ No newline at end of file diff --git a/dist/src/generators/type.js.map b/dist/src/generators/type.js.map new file mode 100644 index 0000000..32fe632 --- /dev/null +++ b/dist/src/generators/type.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type.js","sourceRoot":"","sources":["../../../src/generators/type.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA6B;AAC7B,6BAA2B;AAC3B,yCAAgD;AAChD,sCAAoC;AAEpC,SAAsB,YAAY,CAAE,IAAY;;;;;;;oBACxC,QAAQ,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,UAAG,IAAI,SAAM,CAAC,CAAA;yBAExD,CAAA,IAAA,mBAAM,EAAC,QAAQ,CAAC,KAAK,KAAK,CAAA,EAA1B,wBAA0B;oBACb,qBAAM,IAAA,iBAAO,EAAC;4BAC3B,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,wCAAwC;yBAClD,CAAC,EAAA;;oBAJI,MAAM,GAAG,SAIb;oBAEF,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE;wBAC9B,sBAAM;qBACP;;;oBAGG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAC3B,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAC5C,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;oBAE5C,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;wBAChC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAzC,CAAyC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;qBAC3F;yBAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;wBACvC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAzC,CAAyC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;qBAC3F;yBAAM;wBACL,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;qBACjD;oBAEK,YAAY,GAAG,MAAA,IAAA,iBAAI,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,0CAAE,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;oBAE5G,IAAA,kBAAK,EAAC,QAAQ,EAAE,YAAY,IAAI,EAAE,CAAC,CAAA;oBACnC,IAAA,SAAG,EAAC,oCAAwB,IAAI,SAAM,CAAC,KAAK,CAAC,CAAA;;;;;CAC9C;AA/BD,oCA+BC"} \ No newline at end of file diff --git a/dist/src/helpers/log.d.ts b/dist/src/helpers/log.d.ts new file mode 100644 index 0000000..e37bc16 --- /dev/null +++ b/dist/src/helpers/log.d.ts @@ -0,0 +1 @@ +export declare function Log(...output: string[]): void; diff --git a/dist/src/helpers/log.js b/dist/src/helpers/log.js new file mode 100644 index 0000000..3e5732d --- /dev/null +++ b/dist/src/helpers/log.js @@ -0,0 +1,39 @@ +"use strict"; +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Log = void 0; +function Log() { + var output = []; + for (var _i = 0; _i < arguments.length; _i++) { + output[_i] = arguments[_i]; + } + if (process.env.NODE_ENV !== 'test') { + console.log.apply(console, __spreadArray([], __read(output), false)); + } +} +exports.Log = Log; +//# sourceMappingURL=log.js.map \ No newline at end of file diff --git a/dist/src/helpers/log.js.map b/dist/src/helpers/log.js.map new file mode 100644 index 0000000..a75cb89 --- /dev/null +++ b/dist/src/helpers/log.js.map @@ -0,0 +1 @@ +{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/helpers/log.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAgB,GAAG;IAAE,gBAAmB;SAAnB,UAAmB,EAAnB,qBAAmB,EAAnB,IAAmB;QAAnB,2BAAmB;;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;QACnC,OAAO,CAAC,GAAG,OAAX,OAAO,2BAAQ,MAAM,WAAC;KACvB;AACH,CAAC;AAJD,kBAIC"} \ No newline at end of file diff --git a/dist/src/helpers/match.d.ts b/dist/src/helpers/match.d.ts new file mode 100644 index 0000000..caed6cc --- /dev/null +++ b/dist/src/helpers/match.d.ts @@ -0,0 +1,10 @@ +export declare const SliceMatcher: RegExp; +export declare const ImportMatcher: RegExp; +export declare const ReduxMatcher: RegExp; +export declare const ReduxOptionalMatcher: RegExp; +export declare const DispatchMatcher: RegExp; +export declare function functionMatcher(name: string): RegExp; +export declare function selectorMatcher(name: string): RegExp; +export declare function actionMatcher(name: string[]): RegExp; +export declare function typeMatcher(name: string): RegExp; +export declare function findMatches(text: any, pattern: any): number[]; diff --git a/dist/src/helpers/match.js b/dist/src/helpers/match.js new file mode 100644 index 0000000..935d061 --- /dev/null +++ b/dist/src/helpers/match.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.findMatches = exports.typeMatcher = exports.actionMatcher = exports.selectorMatcher = exports.functionMatcher = exports.DispatchMatcher = exports.ReduxOptionalMatcher = exports.ReduxMatcher = exports.ImportMatcher = exports.SliceMatcher = void 0; +exports.SliceMatcher = /^(?=.*export)(?=.*createSlice).*$/gmi; +exports.ImportMatcher = /^(?=.*import)(?=.*from).*$/gmi; +exports.ReduxMatcher = /^(?=.*import)(?=.*from)(?=.*useSelector)(?=.*useDispatch).*$/gmi; +exports.ReduxOptionalMatcher = /^(?=.*import)(?=.*from)(?=.*useSelector|useDispatch).*$/gmi; +exports.DispatchMatcher = /^(?=.*const)(?=.*dispatch)(?=.*useDispatch).*$/gmi; +function functionMatcher(name) { + return new RegExp("^(?=.*function)(?=.*".concat(name, ").*$"), 'gmi'); +} +exports.functionMatcher = functionMatcher; +function selectorMatcher(name) { + return new RegExp("^(?=.*".concat(name, ")(?=.*useSelector).*$"), 'gmi'); +} +exports.selectorMatcher = selectorMatcher; +function actionMatcher(name) { + return new RegExp("^(?=.*import)(?=.*".concat(name.join('|'), ")(?=.*from).*$"), 'gmi'); +} +exports.actionMatcher = actionMatcher; +function typeMatcher(name) { + return new RegExp("^(?=.*import)(?=.*".concat(name, ")(?=.*from).*$"), 'gmi'); +} +exports.typeMatcher = typeMatcher; +function findMatches(text, pattern) { + var matchingLines = []; + var allLines = text.split('\n'); + for (var i = 0; i < allLines.length; i++) { + if (allLines[i].match(pattern)) { + matchingLines.push(i); + } + } + return matchingLines; +} +exports.findMatches = findMatches; +//# sourceMappingURL=match.js.map \ No newline at end of file diff --git a/dist/src/helpers/match.js.map b/dist/src/helpers/match.js.map new file mode 100644 index 0000000..911348c --- /dev/null +++ b/dist/src/helpers/match.js.map @@ -0,0 +1 @@ +{"version":3,"file":"match.js","sourceRoot":"","sources":["../../../src/helpers/match.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,sCAAsC,CAAA;AACrD,QAAA,aAAa,GAAG,+BAA+B,CAAA;AAC/C,QAAA,YAAY,GAAG,iEAAiE,CAAA;AAChF,QAAA,oBAAoB,GAAG,4DAA4D,CAAA;AACnF,QAAA,eAAe,GAAG,mDAAmD,CAAA;AAElF,SAAgB,eAAe,CAAE,IAAY;IAC3C,OAAO,IAAI,MAAM,CAAC,8BAAuB,IAAI,SAAM,EAAE,KAAK,CAAC,CAAA;AAC7D,CAAC;AAFD,0CAEC;AAED,SAAgB,eAAe,CAAE,IAAY;IAC3C,OAAO,IAAI,MAAM,CAAC,gBAAS,IAAI,0BAAuB,EAAE,KAAK,CAAC,CAAA;AAChE,CAAC;AAFD,0CAEC;AAED,SAAgB,aAAa,CAAE,IAAc;IAC3C,OAAO,IAAI,MAAM,CAAC,4BAAqB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAgB,EAAE,KAAK,CAAC,CAAA;AAC/E,CAAC;AAFD,sCAEC;AAED,SAAgB,WAAW,CAAE,IAAY;IACvC,OAAO,IAAI,MAAM,CAAC,4BAAqB,IAAI,mBAAgB,EAAE,KAAK,CAAC,CAAA;AACrE,CAAC;AAFD,kCAEC;AAGD,SAAgB,WAAW,CAAE,IAAS,EAAE,OAAY;IAClD,IAAM,aAAa,GAAG,EAAE,CAAA;IACxB,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC9B,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SACtB;KACF;IAED,OAAO,aAAa,CAAA;AACtB,CAAC;AAXD,kCAWC"} \ No newline at end of file diff --git a/dist/src/printer.d.ts b/dist/src/printer.d.ts new file mode 100644 index 0000000..38cba6b --- /dev/null +++ b/dist/src/printer.d.ts @@ -0,0 +1,3 @@ +import 'colors'; +import { Command } from 'commander'; +export declare const Printer: Command; diff --git a/dist/src/printer.js b/dist/src/printer.js new file mode 100755 index 0000000..4dd855f --- /dev/null +++ b/dist/src/printer.js @@ -0,0 +1,189 @@ +#!/usr/bin/env node + +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Printer = void 0; +require("colors"); +var commander_1 = require("commander"); +var log_1 = require("./helpers/log"); +var config_1 = require("./config"); +var new_1 = require("./generators/new"); +var component_1 = require("./generators/component"); +var slice_1 = require("./generators/slice"); +var type_1 = require("./generators/type"); +var page_1 = require("./generators/page"); +var api_1 = require("./generators/api"); +var crud_1 = require("./generators/crud"); +var inject_1 = require("./generators/inject"); +exports.Printer = new commander_1.Command('🖨️ Printer'); +exports.Printer + .version('1.0.0') + .description('🖨️ Printer: Automation Tooling for Next, Redux and Prisma.'); +exports.Printer + .command('new [path]') + .description('Generate a new Printer project') + .action(function (path) { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + (0, config_1.registerConfig)(); + (0, log_1.Log)('👷 Generating new Printer project'.green); + return [4 /*yield*/, (0, new_1.generateNewProject)(path || '.')]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); +}); }); +exports.Printer + .command('component ') + .description('Generate a new Printer component') + .action(function (path) { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + (0, config_1.registerConfig)(); + (0, log_1.Log)("\uD83D\uDC77 Generating new Printer component ".concat(path).green); + return [4 /*yield*/, (0, component_1.generateComponent)(path)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); +}); }); +exports.Printer + .command('type ') + .description('Generate a new Printer type') + .action(function (path) { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + (0, config_1.registerConfig)(); + (0, log_1.Log)("\uD83D\uDC77 Generating new Printer type ".concat(path).green); + return [4 /*yield*/, (0, type_1.generateType)(path)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); +}); }); +exports.Printer + .command('inject ') + .description('Inject a slice into a component or page') + .action(function (slice, component) { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + (0, config_1.registerConfig)(); + (0, log_1.Log)("\uD83D\uDC89 Injecting ".concat(slice, " into ").concat(component).green); + return [4 /*yield*/, (0, inject_1.inject)(slice, component)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); +}); }); +exports.Printer + .command('slice ') + .description('Generate a new Printer slice') + .action(function (name) { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + (0, config_1.registerConfig)(); + (0, log_1.Log)("\uD83D\uDC77 Generating new Printer slice ".concat(name).green); + return [4 /*yield*/, (0, slice_1.generateSlice)(name)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); +}); }); +exports.Printer + .command('page ') + .description('Generate a new Printer page') + .action(function (path) { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + (0, config_1.registerConfig)(); + (0, log_1.Log)('👷 Generating new Printer page'.green); + return [4 /*yield*/, (0, page_1.generatePage)(path)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); +}); }); +exports.Printer + .command('api ') + .description('Generate a new Printer API route') + .action(function (path) { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + (0, config_1.registerConfig)(); + (0, log_1.Log)('👷 Generating new Printer API route'.green); + return [4 /*yield*/, (0, api_1.generateApi)(path)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); +}); }); +exports.Printer + .command('crud ') + .description('Generate a CRUD boilerplate for a Prisma model') + .action(function (model) { return __awaiter(void 0, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + (0, config_1.registerConfig)(); + (0, log_1.Log)("\uD83D\uDC77 Generating new CRUD boilerplate for ".concat(model).green); + return [4 /*yield*/, (0, crud_1.generateCrud)(model)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); +}); }); +if (process.env.NODE_ENV !== 'test') { + exports.Printer.parse(process.argv); +} +//# sourceMappingURL=printer.js.map \ No newline at end of file diff --git a/dist/src/printer.js.map b/dist/src/printer.js.map new file mode 100644 index 0000000..99d3d50 --- /dev/null +++ b/dist/src/printer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"printer.js","sourceRoot":"","sources":["../../src/printer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/templates/api.template b/dist/src/templates/api.template new file mode 100644 index 0000000..b57d379 --- /dev/null +++ b/dist/src/templates/api.template @@ -0,0 +1,17 @@ +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const {{name}}Route = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + res.status(200).send({ status: 'OK' }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default {{name}}Route diff --git a/dist/src/templates/component/component.nostyle.template b/dist/src/templates/component/component.nostyle.template new file mode 100644 index 0000000..cc9309b --- /dev/null +++ b/dist/src/templates/component/component.nostyle.template @@ -0,0 +1,11 @@ +export interface {{name}}I {} + +export function {{name}}Component({}: {{name}}I) { + return ( +
+

Component {{name}}

+
+ ) +} + +export default {{name}}Component diff --git a/dist/src/templates/component/component.template b/dist/src/templates/component/component.template new file mode 100644 index 0000000..e1dac72 --- /dev/null +++ b/dist/src/templates/component/component.template @@ -0,0 +1,11 @@ +import { {{name}}Style } from '{{path}}/{{prefix}}.style' + +export interface {{name}}I {} + +export function {{name}}Component({}: {{name}}I) { + return ( + <{{name}}Style> +

Component {{name}}

+ + ) +} diff --git a/dist/src/templates/component/index.nostyle.template b/dist/src/templates/component/index.nostyle.template new file mode 100644 index 0000000..bf2ba54 --- /dev/null +++ b/dist/src/templates/component/index.nostyle.template @@ -0,0 +1 @@ +export * from '{{path}}/{{prefix}}.component' diff --git a/dist/src/templates/component/index.template b/dist/src/templates/component/index.template new file mode 100644 index 0000000..db1dc73 --- /dev/null +++ b/dist/src/templates/component/index.template @@ -0,0 +1,2 @@ +export * from '{{path}}/{{prefix}}.component' +export * from '{{path}}/{{prefix}}.style' diff --git a/dist/src/templates/component/style.template b/dist/src/templates/component/style.template new file mode 100644 index 0000000..1f9e6af --- /dev/null +++ b/dist/src/templates/component/style.template @@ -0,0 +1,3 @@ +import styled from 'styled-components' + +export const {{name}}Style = styled.div`` diff --git a/dist/src/templates/component/test.template b/dist/src/templates/component/test.template new file mode 100644 index 0000000..c0dd185 --- /dev/null +++ b/dist/src/templates/component/test.template @@ -0,0 +1,2 @@ +import { {{name}}Component } from '{{path}}/{{prefix}}.component' +import { {{name}} } from '{{path}}/{{prefix}}.connect' diff --git a/dist/src/templates/crud/create.template b/dist/src/templates/crud/create.template new file mode 100644 index 0000000..367b425 --- /dev/null +++ b/dist/src/templates/crud/create.template @@ -0,0 +1,23 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const CreateRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const {{model}} = await prisma.{{model}}.create({ + data: { + ...req.body + } + }) + res.status(200).send({ status: 'OK', {{model}} }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default CreateRoute diff --git a/dist/src/templates/crud/delete.template b/dist/src/templates/crud/delete.template new file mode 100644 index 0000000..2c8eb11 --- /dev/null +++ b/dist/src/templates/crud/delete.template @@ -0,0 +1,23 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const DeleteRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const {{model}} = await prisma.{{model}}.delete({ + where: { + id: req.query.id || req.body.id + } + }) + res.status(200).send({ status: 'OK', {{model}} }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default DeleteRoute diff --git a/dist/src/templates/crud/get.template b/dist/src/templates/crud/get.template new file mode 100644 index 0000000..8798c7d --- /dev/null +++ b/dist/src/templates/crud/get.template @@ -0,0 +1,23 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const GetRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const {{model}} = await prisma.{{model}}.findUnique({ + where: { + id: req.query.id || req.body.id + } + }) + res.status(200).send({ status: 'OK', {{model}} }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default GetRoute diff --git a/dist/src/templates/crud/list.template b/dist/src/templates/crud/list.template new file mode 100644 index 0000000..6afad5a --- /dev/null +++ b/dist/src/templates/crud/list.template @@ -0,0 +1,19 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const ListRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const results = await prisma.{{model}}.findMany() + res.status(200).send({ status: 'OK', results }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default ListRoute diff --git a/dist/src/templates/crud/update.template b/dist/src/templates/crud/update.template new file mode 100644 index 0000000..1ad606d --- /dev/null +++ b/dist/src/templates/crud/update.template @@ -0,0 +1,26 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const UpdateRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const id = req.body.id + const data = req.body + delete data.id + + const {{model}} = await prisma.{{model}}.update({ + where: { id }, + data, + }) + res.status(200).send({ status: 'OK', {{model}} }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default UpdateRoute diff --git a/dist/src/templates/new/_app.template b/dist/src/templates/new/_app.template new file mode 100644 index 0000000..836dfdc --- /dev/null +++ b/dist/src/templates/new/_app.template @@ -0,0 +1,22 @@ +import App, { AppContext, AppInitialProps } from 'next/app' +import { wrapper } from 'redux/wrapper' + +export class AppComponent extends App { + public static getInitialProps = async ({ Component, ctx }: AppContext) => { + return { + pageProps: { + ...(Component.getInitialProps + ? await Component.getInitialProps(ctx) + : {}) + }, + appProp: ctx.pathname + } + } + + public render() { + const { Component, pageProps } = this.props + return + } +} + +export default wrapper.withRedux(AppComponent) diff --git a/dist/src/templates/new/_document.template b/dist/src/templates/new/_document.template new file mode 100644 index 0000000..734def5 --- /dev/null +++ b/dist/src/templates/new/_document.template @@ -0,0 +1,17 @@ +import { Html, Head, Main, NextScript } from 'next/document' + +export default function Document() { + return ( + + + + + + + +
+ + + + ) +} diff --git a/dist/src/templates/new/babelrc.template b/dist/src/templates/new/babelrc.template new file mode 100644 index 0000000..eef1b55 --- /dev/null +++ b/dist/src/templates/new/babelrc.template @@ -0,0 +1,4 @@ +{ + "plugins": [["styled-components", { "ssr": true, "displayName": true, "preprocess": false } ]], + "presets": ["next/babel"] +} diff --git a/dist/src/templates/new/eslintrc.template b/dist/src/templates/new/eslintrc.template new file mode 100644 index 0000000..df21694 --- /dev/null +++ b/dist/src/templates/new/eslintrc.template @@ -0,0 +1,37 @@ +module.exports = { + env: { + browser: true, + es2021: true, + node: true + }, + extends: [ + 'plugin:react/recommended', + 'standard', + 'prettier', + 'plugin:prettier/recommended' + ], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaFeatures: { + jsx: true + }, + ecmaVersion: 'latest', + sourceType: 'module' + }, + plugins: ['react', '@typescript-eslint'], + rules: { + 'prettier/prettier': [ + 'warn', + { + singleQuote: true, + semi: false, + trailingComma: 'none' + } + ], + 'react/react-in-jsx-scope': 0, + 'no-empty-pattern': 0, + 'no-unused-vars': 0, + 'max-statements-per-line': 0, + 'new-cap': 0 + } +} diff --git a/dist/src/templates/new/gitignore.template b/dist/src/templates/new/gitignore.template new file mode 100644 index 0000000..9f2da9e --- /dev/null +++ b/dist/src/templates/new/gitignore.template @@ -0,0 +1,123 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* diff --git a/dist/src/templates/new/index.template b/dist/src/templates/new/index.template new file mode 100644 index 0000000..2056f9e --- /dev/null +++ b/dist/src/templates/new/index.template @@ -0,0 +1,5 @@ +export interface IndexI {} + +export default function Index({}: IndexI) { + return

Page Index

+} diff --git a/dist/src/templates/new/package.template b/dist/src/templates/new/package.template new file mode 100644 index 0000000..cf0a371 --- /dev/null +++ b/dist/src/templates/new/package.template @@ -0,0 +1,43 @@ +{ + "name": "print-template", + "version": "1.0.0", + "scripts": { + "dev": "next dev --port 4200", + "build": "next build", + "start": "next start", + "prepare": "husky install", + "lint": "eslint . --ext ts,tsx --resolve-plugins-relative-to .", + "scss": "node-sass --output-style compact -rw public/assets/scss/printer.scss -o public/assets/css", + "prisma": "npx prisma generate && npx prisma db push" + }, + "dependencies": { + "@prisma/client": "^4.1.0", + "@reduxjs/toolkit": "^1.7.1", + "iron-session": "^6.1.2", + "next": "^12.0.7", + "next-redux-wrapper": "^7.0.5", + "prisma": "^4.1.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-redux": "^7.2.6", + "styled-components": "^5.3.3" + }, + "devDependencies": { + "@types/node": "^17.0.13", + "@typescript-eslint/eslint-plugin": "^5.14.0", + "@typescript-eslint/parser": "^5.14.0", + "babel-plugin-styled-components": "^2.0.2", + "eslint": "^8.10.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-promise": "^5.2.0", + "eslint-plugin-react": "^7.29.3", + "husky": "^7.0.4", + "node-sass": "^7.0.1", + "prettier": "^2.5.1", + "typescript": "^4.5.4" + } +} diff --git a/dist/src/templates/new/precommit.template b/dist/src/templates/new/precommit.template new file mode 100644 index 0000000..cb9e1eb --- /dev/null +++ b/dist/src/templates/new/precommit.template @@ -0,0 +1,5 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run lint +npm run build diff --git a/dist/src/templates/new/printer.config.template b/dist/src/templates/new/printer.config.template new file mode 100644 index 0000000..b5193dc --- /dev/null +++ b/dist/src/templates/new/printer.config.template @@ -0,0 +1,16 @@ +{ + "componentFolder": false, + "component": { + "index": true, + "component": true, + "style": true, + "test": false + }, + "crud": { + "create": true, + "update": true, + "delete": true, + "list": true, + "get": true + } +} diff --git a/dist/src/templates/new/printer.template b/dist/src/templates/new/printer.template new file mode 100644 index 0000000..7090b34 --- /dev/null +++ b/dist/src/templates/new/printer.template @@ -0,0 +1,4 @@ +* { + transition: all 0.25s cubic-bezier(0.33, 1, 0.68, 1); + box-sizing: border-box; +} diff --git a/dist/src/templates/new/prisma.client.template b/dist/src/templates/new/prisma.client.template new file mode 100644 index 0000000..06f179a --- /dev/null +++ b/dist/src/templates/new/prisma.client.template @@ -0,0 +1,15 @@ +import { PrismaClient } from '@prisma/client' + +let prisma: PrismaClient + +if (process.env.NODE_ENV === 'production') { + prisma = new PrismaClient() +} else { + if (!global.prisma) { + global.prisma = new PrismaClient() + } + + prisma = global.prisma +} + +export default prisma diff --git a/dist/src/templates/new/reducer.template b/dist/src/templates/new/reducer.template new file mode 100644 index 0000000..d020248 --- /dev/null +++ b/dist/src/templates/new/reducer.template @@ -0,0 +1 @@ +export const reducer = { } diff --git a/dist/src/templates/new/reset.template b/dist/src/templates/new/reset.template new file mode 100644 index 0000000..cc10ae7 --- /dev/null +++ b/dist/src/templates/new/reset.template @@ -0,0 +1,43 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1.5; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/dist/src/templates/new/schema.prisma.template b/dist/src/templates/new/schema.prisma.template new file mode 100644 index 0000000..eae3e94 --- /dev/null +++ b/dist/src/templates/new/schema.prisma.template @@ -0,0 +1,16 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "mongodb" + url = env("DATABASE_URL") +} + +model Template { + id String @id @default(auto()) @map("_id") @db.ObjectId + dateCreated DateTime @default(now()) + dateUpdated DateTime @updatedAt + + @@index(dateCreated) +} diff --git a/dist/src/templates/new/session.template b/dist/src/templates/new/session.template new file mode 100644 index 0000000..95c3318 --- /dev/null +++ b/dist/src/templates/new/session.template @@ -0,0 +1,9 @@ +export const password = '{{password}}'; + +export const Session = { + cookieName: 'printer', + password, + cookieOptions: { + secure: process.env.NODE_ENV === 'production', + }, +} diff --git a/dist/src/templates/new/tsconfig.template b/dist/src/templates/new/tsconfig.template new file mode 100644 index 0000000..0a6352a --- /dev/null +++ b/dist/src/templates/new/tsconfig.template @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "baseUrl": "./", + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/dist/src/templates/new/wrapper.template b/dist/src/templates/new/wrapper.template new file mode 100644 index 0000000..b957db4 --- /dev/null +++ b/dist/src/templates/new/wrapper.template @@ -0,0 +1,19 @@ +import { configureStore, ThunkAction } from '@reduxjs/toolkit' +import { Action } from 'redux' +import { createWrapper } from 'next-redux-wrapper' +import { reducer } from 'redux/reducer' + +export function makeStore() { + return configureStore({ reducer }) +} + +export type AppStore = ReturnType +export type AppState = ReturnType +export type AppThunk = ThunkAction< + ReturnType, + AppState, + unknown, + Action +> + +export const wrapper = createWrapper(makeStore) diff --git a/dist/src/templates/page.template b/dist/src/templates/page.template new file mode 100644 index 0000000..1ba2ffc --- /dev/null +++ b/dist/src/templates/page.template @@ -0,0 +1,5 @@ +export interface {{name}}I {} + +export default function {{name}}({}: {{name}}I) { + return

Page {{name}}

+} diff --git a/dist/src/templates/page.url.template b/dist/src/templates/page.url.template new file mode 100644 index 0000000..28a7cee --- /dev/null +++ b/dist/src/templates/page.url.template @@ -0,0 +1,10 @@ +import { useRouter } from 'next/router' + +export interface {{name}}I {} + +export default function {{name}}({}: {{name}}I) { + const router = useRouter() + const { {{url}} } = router.query + + return

Page {{name}}

+} diff --git a/dist/src/templates/slice/reducer.template b/dist/src/templates/slice/reducer.template new file mode 100644 index 0000000..f3518ee --- /dev/null +++ b/dist/src/templates/slice/reducer.template @@ -0,0 +1,5 @@ +{{import}} + +export const reducer = { +{{reducer}} +} diff --git a/dist/src/templates/slice/slice.d.ts b/dist/src/templates/slice/slice.d.ts new file mode 100644 index 0000000..b6f1cad --- /dev/null +++ b/dist/src/templates/slice/slice.d.ts @@ -0,0 +1 @@ +export declare function SliceTemplate(name: string): string; diff --git a/dist/src/templates/slice/slice.js b/dist/src/templates/slice/slice.js new file mode 100644 index 0000000..db5577b --- /dev/null +++ b/dist/src/templates/slice/slice.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SliceTemplate = void 0; +function SliceTemplate(name) { + return "import { createSlice } from \"@reduxjs/toolkit\";\n\nexport const ".concat(name, "InitialState = {\n\n}\n\nexport const ").concat(name, "Slice = createSlice({\n name: '").concat(name, "',\n initialState: ").concat(name, "InitialState,\n reducers: {\n\n },\n});\n\nexport const { } = ").concat(name, "Slice.actions;"); +} +exports.SliceTemplate = SliceTemplate; +//# sourceMappingURL=slice.js.map \ No newline at end of file diff --git a/dist/src/templates/slice/slice.js.map b/dist/src/templates/slice/slice.js.map new file mode 100644 index 0000000..bd2a522 --- /dev/null +++ b/dist/src/templates/slice/slice.js.map @@ -0,0 +1 @@ +{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../../../src/templates/slice/slice.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAAE,IAAY;IACzC,OAAO,4EAEM,IAAI,mDAIJ,IAAI,+CACN,IAAI,mCACG,IAAI,iFAMH,IAAI,mBAAgB,CAAA;AACzC,CAAC;AAhBD,sCAgBC"} \ No newline at end of file diff --git a/dist/src/templates/slice/slice.template b/dist/src/templates/slice/slice.template new file mode 100644 index 0000000..969be17 --- /dev/null +++ b/dist/src/templates/slice/slice.template @@ -0,0 +1,11 @@ +import { createSlice } from '@reduxjs/toolkit' + +export const {{name}}InitialState = {} + +export const {{name}}Slice = createSlice({ + name: '{{name}}', + initialState: {{name}}InitialState, + reducers: {} +}) + +export const {} = {{name}}Slice.actions diff --git a/dist/src/templates/slice/slice.ts b/dist/src/templates/slice/slice.ts new file mode 100644 index 0000000..5a88183 --- /dev/null +++ b/dist/src/templates/slice/slice.ts @@ -0,0 +1,17 @@ +export function SliceTemplate (name: string) { + return `import { createSlice } from "@reduxjs/toolkit"; + +export const ${name}InitialState = { + +} + +export const ${name}Slice = createSlice({ + name: '${name}', + initialState: ${name}InitialState, + reducers: { + + }, +}); + +export const { } = ${name}Slice.actions;` +} diff --git a/dist/src/templates/type.template b/dist/src/templates/type.template new file mode 100644 index 0000000..524710c --- /dev/null +++ b/dist/src/templates/type.template @@ -0,0 +1,5 @@ +export interface {{name}}Type { + +} + +export default {{name}}Type diff --git a/example/.babelrc b/example/.babelrc new file mode 100644 index 0000000..eef1b55 --- /dev/null +++ b/example/.babelrc @@ -0,0 +1,4 @@ +{ + "plugins": [["styled-components", { "ssr": true, "displayName": true, "preprocess": false } ]], + "presets": ["next/babel"] +} diff --git a/example/.eslintrc.js b/example/.eslintrc.js new file mode 100644 index 0000000..df21694 --- /dev/null +++ b/example/.eslintrc.js @@ -0,0 +1,37 @@ +module.exports = { + env: { + browser: true, + es2021: true, + node: true + }, + extends: [ + 'plugin:react/recommended', + 'standard', + 'prettier', + 'plugin:prettier/recommended' + ], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaFeatures: { + jsx: true + }, + ecmaVersion: 'latest', + sourceType: 'module' + }, + plugins: ['react', '@typescript-eslint'], + rules: { + 'prettier/prettier': [ + 'warn', + { + singleQuote: true, + semi: false, + trailingComma: 'none' + } + ], + 'react/react-in-jsx-scope': 0, + 'no-empty-pattern': 0, + 'no-unused-vars': 0, + 'max-statements-per-line': 0, + 'new-cap': 0 + } +} diff --git a/example/.gitignore b/example/.gitignore new file mode 100644 index 0000000..9f2da9e --- /dev/null +++ b/example/.gitignore @@ -0,0 +1,123 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* diff --git a/example/.gitkeep b/example/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/example/.husky/pre-commit b/example/.husky/pre-commit new file mode 100644 index 0000000..cb9e1eb --- /dev/null +++ b/example/.husky/pre-commit @@ -0,0 +1,5 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run lint +npm run build diff --git a/example/components/other.tsx b/example/components/other.tsx new file mode 100644 index 0000000..4a60957 --- /dev/null +++ b/example/components/other.tsx @@ -0,0 +1,19 @@ +import SampleType from 'types/sample' +import { setData } from 'redux/slice/sample' +import { useSelector, useDispatch } from 'react-redux' + +export interface OtherI {} + +export function OtherComponent({}: OtherI) { + const dispatch = useDispatch() + const data = useSelector((state: { sample: { data: SampleType } }) => ({ ...state.sample.data })) + + return ( +
+

Component Other

+

{data.value2}

+
+ ) +} + +export default OtherComponent diff --git a/example/components/sample/index.tsx b/example/components/sample/index.tsx new file mode 100644 index 0000000..322117c --- /dev/null +++ b/example/components/sample/index.tsx @@ -0,0 +1 @@ +export * from 'components/sample/sample.component' diff --git a/example/components/sample/sample.component.tsx b/example/components/sample/sample.component.tsx new file mode 100644 index 0000000..0cc08c5 --- /dev/null +++ b/example/components/sample/sample.component.tsx @@ -0,0 +1,17 @@ +import SampleType from 'types/sample' +import { setData } from 'redux/slice/sample' +import { useSelector, useDispatch } from 'react-redux' + +export interface SampleI {} + +export function SampleComponent({}: SampleI) { + const dispatch = useDispatch() + const data = useSelector((state: { sample: { data: SampleType } }) => ({ ...state.sample.data })) + + return ( +
+

Component Sample

+

{data.value1}

+
+ ) +} diff --git a/example/next-env.d.ts b/example/next-env.d.ts new file mode 100644 index 0000000..4f11a03 --- /dev/null +++ b/example/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/example/package.json b/example/package.json new file mode 100644 index 0000000..cf0a371 --- /dev/null +++ b/example/package.json @@ -0,0 +1,43 @@ +{ + "name": "print-template", + "version": "1.0.0", + "scripts": { + "dev": "next dev --port 4200", + "build": "next build", + "start": "next start", + "prepare": "husky install", + "lint": "eslint . --ext ts,tsx --resolve-plugins-relative-to .", + "scss": "node-sass --output-style compact -rw public/assets/scss/printer.scss -o public/assets/css", + "prisma": "npx prisma generate && npx prisma db push" + }, + "dependencies": { + "@prisma/client": "^4.1.0", + "@reduxjs/toolkit": "^1.7.1", + "iron-session": "^6.1.2", + "next": "^12.0.7", + "next-redux-wrapper": "^7.0.5", + "prisma": "^4.1.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-redux": "^7.2.6", + "styled-components": "^5.3.3" + }, + "devDependencies": { + "@types/node": "^17.0.13", + "@typescript-eslint/eslint-plugin": "^5.14.0", + "@typescript-eslint/parser": "^5.14.0", + "babel-plugin-styled-components": "^2.0.2", + "eslint": "^8.10.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-promise": "^5.2.0", + "eslint-plugin-react": "^7.29.3", + "husky": "^7.0.4", + "node-sass": "^7.0.1", + "prettier": "^2.5.1", + "typescript": "^4.5.4" + } +} diff --git a/example/pages/_app.tsx b/example/pages/_app.tsx new file mode 100644 index 0000000..836dfdc --- /dev/null +++ b/example/pages/_app.tsx @@ -0,0 +1,22 @@ +import App, { AppContext, AppInitialProps } from 'next/app' +import { wrapper } from 'redux/wrapper' + +export class AppComponent extends App { + public static getInitialProps = async ({ Component, ctx }: AppContext) => { + return { + pageProps: { + ...(Component.getInitialProps + ? await Component.getInitialProps(ctx) + : {}) + }, + appProp: ctx.pathname + } + } + + public render() { + const { Component, pageProps } = this.props + return + } +} + +export default wrapper.withRedux(AppComponent) diff --git a/example/pages/_document.tsx b/example/pages/_document.tsx new file mode 100644 index 0000000..734def5 --- /dev/null +++ b/example/pages/_document.tsx @@ -0,0 +1,17 @@ +import { Html, Head, Main, NextScript } from 'next/document' + +export default function Document() { + return ( + + + + + + + +
+ + + + ) +} diff --git a/example/pages/api/sample/create.tsx b/example/pages/api/sample/create.tsx new file mode 100644 index 0000000..3e1ac6a --- /dev/null +++ b/example/pages/api/sample/create.tsx @@ -0,0 +1,23 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const CreateRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const sample = await prisma.sample.create({ + data: { + ...req.body + } + }) + res.status(200).send({ status: 'OK', sample }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default CreateRoute diff --git a/example/pages/api/sample/delete.tsx b/example/pages/api/sample/delete.tsx new file mode 100644 index 0000000..0ecab6b --- /dev/null +++ b/example/pages/api/sample/delete.tsx @@ -0,0 +1,23 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const DeleteRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const sample = await prisma.sample.delete({ + where: { + id: req.query.id || req.body.id + } + }) + res.status(200).send({ status: 'OK', sample }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default DeleteRoute diff --git a/example/pages/api/sample/get.tsx b/example/pages/api/sample/get.tsx new file mode 100644 index 0000000..b0bf8f7 --- /dev/null +++ b/example/pages/api/sample/get.tsx @@ -0,0 +1,23 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const GetRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const sample = await prisma.sample.findUnique({ + where: { + id: req.query.id || req.body.id + } + }) + res.status(200).send({ status: 'OK', sample }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default GetRoute diff --git a/example/pages/api/sample/list.tsx b/example/pages/api/sample/list.tsx new file mode 100644 index 0000000..449c62d --- /dev/null +++ b/example/pages/api/sample/list.tsx @@ -0,0 +1,19 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const ListRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const results = await prisma.sample.findMany() + res.status(200).send({ status: 'OK', results }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default ListRoute diff --git a/example/pages/api/sample/update.tsx b/example/pages/api/sample/update.tsx new file mode 100644 index 0000000..f8e37f5 --- /dev/null +++ b/example/pages/api/sample/update.tsx @@ -0,0 +1,26 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const UpdateRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const id = req.body.id + const data = req.body + delete data.id + + const sample = await prisma.sample.update({ + where: { id }, + data, + }) + res.status(200).send({ status: 'OK', sample }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default UpdateRoute diff --git a/example/pages/api/test.tsx b/example/pages/api/test.tsx new file mode 100644 index 0000000..87d2212 --- /dev/null +++ b/example/pages/api/test.tsx @@ -0,0 +1,17 @@ +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const TestRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + res.status(200).send({ status: 'OK' }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default TestRoute diff --git a/example/pages/index.tsx b/example/pages/index.tsx new file mode 100644 index 0000000..ddca033 --- /dev/null +++ b/example/pages/index.tsx @@ -0,0 +1,13 @@ +import OtherComponent from "components/other"; +import { SampleComponent } from "components/sample"; + +export interface IndexI {} + +export default function Index({}: IndexI) { + return ( + <> + + + + ) +} diff --git a/example/printer.config.json b/example/printer.config.json new file mode 100644 index 0000000..b5193dc --- /dev/null +++ b/example/printer.config.json @@ -0,0 +1,16 @@ +{ + "componentFolder": false, + "component": { + "index": true, + "component": true, + "style": true, + "test": false + }, + "crud": { + "create": true, + "update": true, + "delete": true, + "list": true, + "get": true + } +} diff --git a/example/prisma/client.ts b/example/prisma/client.ts new file mode 100644 index 0000000..06f179a --- /dev/null +++ b/example/prisma/client.ts @@ -0,0 +1,15 @@ +import { PrismaClient } from '@prisma/client' + +let prisma: PrismaClient + +if (process.env.NODE_ENV === 'production') { + prisma = new PrismaClient() +} else { + if (!global.prisma) { + global.prisma = new PrismaClient() + } + + prisma = global.prisma +} + +export default prisma diff --git a/example/prisma/schema.prisma b/example/prisma/schema.prisma new file mode 100644 index 0000000..a308cb5 --- /dev/null +++ b/example/prisma/schema.prisma @@ -0,0 +1,18 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "mongodb" + url = env("DATABASE_URL") +} + +model Sample { + id String @id @default(auto()) @map("_id") @db.ObjectId + value1 String + value2 String + dateCreated DateTime @default(now()) + dateUpdated DateTime @updatedAt + + @@index(dateCreated) +} diff --git a/example/public/.gitkeep b/example/public/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/example/public/assets/css/fonts.css b/example/public/assets/css/fonts.css new file mode 100644 index 0000000..e69de29 diff --git a/example/public/assets/css/printer.css b/example/public/assets/css/printer.css new file mode 100644 index 0000000..7090b34 --- /dev/null +++ b/example/public/assets/css/printer.css @@ -0,0 +1,4 @@ +* { + transition: all 0.25s cubic-bezier(0.33, 1, 0.68, 1); + box-sizing: border-box; +} diff --git a/example/public/assets/css/reset.css b/example/public/assets/css/reset.css new file mode 100644 index 0000000..cc10ae7 --- /dev/null +++ b/example/public/assets/css/reset.css @@ -0,0 +1,43 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1.5; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/example/public/assets/scss/printer.scss b/example/public/assets/scss/printer.scss new file mode 100644 index 0000000..7090b34 --- /dev/null +++ b/example/public/assets/scss/printer.scss @@ -0,0 +1,4 @@ +* { + transition: all 0.25s cubic-bezier(0.33, 1, 0.68, 1); + box-sizing: border-box; +} diff --git a/example/redux/reducer.tsx b/example/redux/reducer.tsx new file mode 100644 index 0000000..8695f79 --- /dev/null +++ b/example/redux/reducer.tsx @@ -0,0 +1,5 @@ +import { sampleSlice } from 'redux/slice/sample' + +export const reducer = { + sample: sampleSlice.reducer, +} diff --git a/example/redux/reducers.json b/example/redux/reducers.json new file mode 100644 index 0000000..9224f43 --- /dev/null +++ b/example/redux/reducers.json @@ -0,0 +1,3 @@ +[ + "sample" +] \ No newline at end of file diff --git a/example/redux/slice/sample.tsx b/example/redux/slice/sample.tsx new file mode 100644 index 0000000..7e1d362 --- /dev/null +++ b/example/redux/slice/sample.tsx @@ -0,0 +1,23 @@ +import { createSlice } from '@reduxjs/toolkit' +import SampleType from 'types/sample' + +export const sampleInitialState = { + // @printer::inject::sample + data: { + value1: 'hello', + value2: 'world' + } as SampleType +} + +export const sampleSlice = createSlice({ + name: 'sample', + initialState: sampleInitialState, + reducers: { + // @printer::inject + setData(state, action) { + state.data = action.payload + } + } +}) + +export const { setData } = sampleSlice.actions diff --git a/example/redux/wrapper.tsx b/example/redux/wrapper.tsx new file mode 100644 index 0000000..b957db4 --- /dev/null +++ b/example/redux/wrapper.tsx @@ -0,0 +1,19 @@ +import { configureStore, ThunkAction } from '@reduxjs/toolkit' +import { Action } from 'redux' +import { createWrapper } from 'next-redux-wrapper' +import { reducer } from 'redux/reducer' + +export function makeStore() { + return configureStore({ reducer }) +} + +export type AppStore = ReturnType +export type AppState = ReturnType +export type AppThunk = ThunkAction< + ReturnType, + AppState, + unknown, + Action +> + +export const wrapper = createWrapper(makeStore) diff --git a/example/tsconfig.json b/example/tsconfig.json new file mode 100644 index 0000000..0a6352a --- /dev/null +++ b/example/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "baseUrl": "./", + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/example/types/sample.tsx b/example/types/sample.tsx new file mode 100644 index 0000000..d666e02 --- /dev/null +++ b/example/types/sample.tsx @@ -0,0 +1,6 @@ +export interface SampleType { + value1: string + value2: string +} + +export default SampleType diff --git a/example/types/wallet.tsx b/example/types/wallet.tsx new file mode 100644 index 0000000..9b602f1 --- /dev/null +++ b/example/types/wallet.tsx @@ -0,0 +1,5 @@ +export interface WalletType { + +} + +export default WalletType diff --git a/example/util/session.ts b/example/util/session.ts new file mode 100644 index 0000000..b0efd06 --- /dev/null +++ b/example/util/session.ts @@ -0,0 +1,9 @@ +export const password = 'fb07d942a7d5d79b689b10eb3dbb412464d322a7e8e7833436ba874327464822'; + +export const Session = { + cookieName: 'printer', + password, + cookieOptions: { + secure: process.env.NODE_ENV === 'production', + }, +} diff --git a/example/yarn.lock b/example/yarn.lock new file mode 100644 index 0000000..5b59e7a --- /dev/null +++ b/example/yarn.lock @@ -0,0 +1,3557 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" + integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== + dependencies: + "@babel/types" "^7.18.9" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.18.6", "@babel/parser@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" + integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== + +"@babel/runtime@^7.15.4", "@babel/runtime@^7.9.2": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" + integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/traverse@^7.4.5": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" + integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.9" + "@babel/types" "^7.18.9" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.18.6", "@babel/types@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" + integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@emotion/is-prop-valid@^1.1.0": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.3.tgz#f0907a416368cf8df9e410117068e20fe87c0a3a" + integrity sha512-RFg04p6C+1uO19uG8N+vqanzKqiM9eeV1LDOG3bmkYmuOj7NbKNlFC/4EZq5gnwAIlcC/jOT24f8Td0iax2SXA== + dependencies: + "@emotion/memoize" "^0.7.4" + +"@emotion/memoize@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" + integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@eslint/eslintrc@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" + integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.3.2" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@gar/promisify@^1.0.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@hapi/b64@5.x.x": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@hapi/b64/-/b64-5.0.0.tgz#b8210cbd72f4774985e78569b77e97498d24277d" + integrity sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw== + dependencies: + "@hapi/hoek" "9.x.x" + +"@hapi/boom@9.x.x": + version "9.1.4" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.4.tgz#1f9dad367c6a7da9f8def24b4a986fc5a7bd9db6" + integrity sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw== + dependencies: + "@hapi/hoek" "9.x.x" + +"@hapi/bourne@2.x.x": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-2.1.0.tgz#66aff77094dc3080bd5df44ec63881f2676eb020" + integrity sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q== + +"@hapi/cryptiles@5.x.x": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/cryptiles/-/cryptiles-5.1.0.tgz#655de4cbbc052c947f696148c83b187fc2be8f43" + integrity sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA== + dependencies: + "@hapi/boom" "9.x.x" + +"@hapi/hoek@9.x.x": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/iron@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@hapi/iron/-/iron-6.0.0.tgz#ca3f9136cda655bdd6028de0045da0de3d14436f" + integrity sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw== + dependencies: + "@hapi/b64" "5.x.x" + "@hapi/boom" "9.x.x" + "@hapi/bourne" "2.x.x" + "@hapi/cryptiles" "5.x.x" + "@hapi/hoek" "9.x.x" + +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@next/env@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.2.3.tgz#64f210e74c137d3d9feea738795b055a7f8aebe2" + integrity sha512-2lWKP5Xcvnor70NaaROZXBvU8z9mFReePCG8NhZw6NyNGnPvC+8s+Cre/63LAB1LKzWw/e9bZJnQUg0gYFRb2Q== + +"@next/swc-android-arm-eabi@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.3.tgz#91388c8ec117d59ee80d2c1d4dc65fdfd267d2d4" + integrity sha512-JxmCW9XB5PYnkGE67BdnBTdqW0SW6oMCiPMHLdjeRi4T3U4JJKJGnjQld99+6TPOfPWigtw3W7Cijp5gc+vJ/w== + +"@next/swc-android-arm64@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.2.3.tgz#9be33553861f6494616b910a23abd5a1b0d7fb4b" + integrity sha512-3l4zXpWnzy0fqoedsFRxzMy/eGlMMqn6IwPEuBmtEQ4h7srmQFHyT+Bk+eVHb0o1RQ7/TloAa+mu8JX5tz/5tA== + +"@next/swc-darwin-arm64@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.3.tgz#ce1a5a7320936b2644b765ace3283e5d1676b6a0" + integrity sha512-eutDO/RH6pf7+8zHo3i2GKLhF0qaMtxWpY8k3Oa1k+CyrcJ0IxwkfH/x3f75jTMeCrThn6Uu8j3WeZOxvhto1Q== + +"@next/swc-darwin-x64@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.3.tgz#f70ce07016501c6f823035bc67296b8f80201145" + integrity sha512-lve+lnTiddXbcT3Lh2ujOFywQSEycTYQhuf6j6JrPu9oLQGS01kjIqqSj3/KMmSoppEnXo3BxkgYu+g2+ecHkA== + +"@next/swc-freebsd-x64@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.3.tgz#ccc6fa4588dadec85458091aa19c17bc3e99a10d" + integrity sha512-V4bZU1qBFkULTPW53phY8ypioh3EERzHu9YKAasm9RxU4dj+8c/4s60y+kbFkFEEpIUgEU6yNuYZRR4lHHbUGA== + +"@next/swc-linux-arm-gnueabihf@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.3.tgz#d7a481d3ede14dee85707d0807b4a05cd2300950" + integrity sha512-MWxS/i+XSEKdQE0ZmdYkPPrWKBi4JwMVaXdOW9J/T/sZJsHsLlSC9ErBcNolKAJEVka+tnw9oPRyRCKOj+q0sw== + +"@next/swc-linux-arm64-gnu@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.3.tgz#6d105c971cc0957c25563aa98af475291b4cd8aa" + integrity sha512-ikXkqAmvEcWTzIQFDdmrUHLWzdDAF5s2pVsSpQn9rk/gK1i9webH1GRQd2bSM7JLuPBZSaYrNGvDTyHZdSEYlg== + +"@next/swc-linux-arm64-musl@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.3.tgz#bebfe490130e3cb8746a03d35a5a9e23ac0e6f9b" + integrity sha512-wE45gGFkeLLLnCoveKaBrdpYkkypl3qwNF2YhnfvfVK7etuu1O679LwClhCWinDVBr+KOkmyHok00Z+0uI1ycg== + +"@next/swc-linux-x64-gnu@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.3.tgz#84a3d99f9d656fbc139f3a19f9b1baf73877d18f" + integrity sha512-MbFI6413VSXiREzHwYD8YAJLTknBaC+bmjXgdHEEdloeOuBFQGE3NWn3izOCTy8kV+s98VDQO8au7EKKs+bW0g== + +"@next/swc-linux-x64-musl@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.3.tgz#a283431f8c6c830b4bd61147094f150ea7deeb6e" + integrity sha512-jMBD0Va6fInbPih/dNySlNY2RpjkK6MXS+UGVEvuTswl1MZr+iahvurmshwGKpjaRwVU4DSFMD8+gfWxsTFs1Q== + +"@next/swc-win32-arm64-msvc@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.3.tgz#bab9ba8736d81db128badb70024268469eaa9b34" + integrity sha512-Cq8ToPdc0jQP2C7pjChYctAsEe7+lO/B826ZCK5xFzobuHPiCyJ2Mzx/nEQwCY4SpYkeJQtCbwlCz5iyGW5zGg== + +"@next/swc-win32-ia32-msvc@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.3.tgz#feea6ada1ba3e897f39ded9f2de5006f4e1c928b" + integrity sha512-BtFq4c8IpeB0sDhJMHJFgm86rPkOvmYI8k3De8Y2kgNVWSeLQ0Q929PWf7e+GqcX1015ei/gEB41ZH8Iw49NzA== + +"@next/swc-win32-x64-msvc@12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.3.tgz#403e1575a84c31cbd7f3c0ecd51b61bc25b7f808" + integrity sha512-huSNb98KSG77Kl96CoPgCwom28aamuUsPpRmn/4s9L0RNbbHVSkp9E6HA4yOAykZCEuWcdNsRLbVVuAbt8rtIw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@prisma/client@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-4.1.0.tgz#7c5341b2276c083821e432536ff97d8cc8f8b936" + integrity sha512-MvfPGAd42vHTiCYxwS6N+2U3F+ukoJ48D2QRnX1zSPJHBkh1CBtshl75daKzvVfgQwSouzSQeugKDej5di+E/g== + dependencies: + "@prisma/engines-version" "4.1.0-48.8d8414deb360336e4698a65aa45a1fbaf1ce13d8" + +"@prisma/engines-version@4.1.0-48.8d8414deb360336e4698a65aa45a1fbaf1ce13d8": + version "4.1.0-48.8d8414deb360336e4698a65aa45a1fbaf1ce13d8" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-4.1.0-48.8d8414deb360336e4698a65aa45a1fbaf1ce13d8.tgz#ce00e6377126e491a8b1e0e2039c97e2924bd6d9" + integrity sha512-cRRJwpHFGFJZvtHbY3GZjMffNBEjjZk68ztn+S2hDgPCGB4H66IK26roK94GJxBodSehwRJ0wGyebC2GoIH1JQ== + +"@prisma/engines@4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-4.1.0.tgz#da8002d4b75c92e3fd564ba5b0bd04847ffb3c4c" + integrity sha512-quqHXD3P83NBLVtRlts4SgKHmqgA8GMiyDTJ7af03Wg0gl6F5t65mBYvIuwmD+52vHm42JtIsp/fAO9YIV0JBA== + +"@reduxjs/toolkit@^1.7.1": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.8.3.tgz#9c6a9c497bde43a67618d37a4175a00ae12efeb2" + integrity sha512-lU/LDIfORmjBbyDLaqFN2JB9YmAT1BElET9y0ZszwhSBa5Ef3t6o5CrHupw5J1iOXwd+o92QfQZ8OJpwXvsssg== + dependencies: + immer "^9.0.7" + redux "^4.1.2" + redux-thunk "^2.4.1" + reselect "^4.1.5" + +"@swc/helpers@0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.3.tgz#16593dfc248c53b699d4b5026040f88ddb497012" + integrity sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA== + dependencies: + tslib "^2.4.0" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/cookie@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.5.1.tgz#b29aa1f91a59f35e29ff8f7cb24faf1a3a750554" + integrity sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g== + +"@types/express-serve-static-core@^4.17.18": + version "4.17.29" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz#2a1795ea8e9e9c91b4a4bbe475034b20c1ec711c" + integrity sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@^4.17.13": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/hoist-non-react-statics@^3.3.0": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + +"@types/minimist@^1.2.0": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + +"@types/node@*": + version "18.0.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.6.tgz#0ba49ac517ad69abe7a1508bc9b3a5483df9d5d7" + integrity sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw== + +"@types/node@^16.11.7": + version "16.11.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.45.tgz#155b13a33c665ef2b136f7f245fa525da419e810" + integrity sha512-3rKg/L5x0rofKuuUt5zlXzOnKyIHXmIu5R8A0TuNDMF2062/AOIDBciFIjToLEJ/9F9DzkHNot+BpNsMI1OLdQ== + +"@types/node@^17.0.13": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/react-redux@^7.1.20": + version "7.1.24" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.24.tgz#6caaff1603aba17b27d20f8ad073e4c077e975c0" + integrity sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ== + dependencies: + "@types/hoist-non-react-statics" "^3.3.0" + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + redux "^4.0.0" + +"@types/react@*": + version "18.0.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.15.tgz#d355644c26832dc27f3e6cbf0c4f4603fc4ab7fe" + integrity sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/serve-static@*": + version "1.13.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@typescript-eslint/eslint-plugin@^5.14.0": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.7.tgz#1621dabc1ae4084310e19e9efc80dfdbb97e7493" + integrity sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw== + dependencies: + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/type-utils" "5.30.7" + "@typescript-eslint/utils" "5.30.7" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.14.0": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.7.tgz#99d09729392aec9e64b1de45cd63cb81a4ddd980" + integrity sha512-Rg5xwznHWWSy7v2o0cdho6n+xLhK2gntImp0rJroVVFkcYFYQ8C8UJTSuTw/3CnExBmPjycjmUJkxVmjXsld6A== + dependencies: + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/typescript-estree" "5.30.7" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz#8269a931ef1e5ae68b5eb80743cc515c4ffe3dd7" + integrity sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw== + dependencies: + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/visitor-keys" "5.30.7" + +"@typescript-eslint/type-utils@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.7.tgz#5693dc3db6f313f302764282d614cfdbc8a9fcfd" + integrity sha512-nD5qAE2aJX/YLyKMvOU5jvJyku4QN5XBVsoTynFrjQZaDgDV6i7QHFiYCx10wvn7hFvfuqIRNBtsgaLe0DbWhw== + dependencies: + "@typescript-eslint/utils" "5.30.7" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.7.tgz#18331487cc92d0f1fb1a6f580c8ec832528079d0" + integrity sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg== + +"@typescript-eslint/typescript-estree@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz#05da9f1b281985bfedcf62349847f8d168eecc07" + integrity sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA== + dependencies: + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/visitor-keys" "5.30.7" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.7.tgz#7135be070349e9f7caa262b0ca59dc96123351bb" + integrity sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/typescript-estree" "5.30.7" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz#c093abae75b4fd822bfbad9fc337f38a7a14909a" + integrity sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw== + dependencies: + "@typescript-eslint/types" "5.30.7" + eslint-visitor-keys "^3.3.0" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.7.1: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agentkeepalive@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" + integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== + dependencies: + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +are-we-there-yet@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" + integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-includes@^3.1.4, array-includes@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +"babel-plugin-styled-components@>= 1.12.0", babel-plugin-styled-components@^2.0.2: + version "2.0.7" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" + integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + picomatch "^2.3.0" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +cacache@^15.2.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg== + +caniuse-lite@^1.0.30001332: + version "1.0.30001369" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001369.tgz#58ca6974acf839a72a02003258a005cbb0cb340d" + integrity sha512-OY1SBHaodJc4wflDIKnlkdqWzJZd1Ls/2zbVJHBSv3AT7vgOJ58yAhd2CN4d57l2kPJrgMb7P9+N1Mhy4tNSQA== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.2, color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +cookie@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +csstype@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" + integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decamelize-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encoding@^0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-prettier@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + +eslint-config-standard@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" + integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.25.4: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" + has "^1.0.3" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-prettier@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-promise@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971" + integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== + +eslint-plugin-react@^7.29.3: + version "7.30.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22" + integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg== + dependencies: + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.1" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.7" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.10.0: + version "8.20.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.20.0.tgz#048ac56aa18529967da8354a478be4ec0a2bc81b" + integrity sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA== + dependencies: + "@eslint/eslintrc" "^1.3.0" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.2" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" + integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== + dependencies: + acorn "^8.7.1" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" + integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@~7.1.1: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.15.0: + version "13.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globule@^1.0.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.4.tgz#7c11c43056055a75a6e68294453c17f2796170fb" + integrity sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg== + dependencies: + glob "~7.1.1" + lodash "^4.17.21" + minimatch "~3.0.2" + +graceful-fs@^4.2.6: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +http-cache-semantics@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +husky@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" + integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ignore@^5.1.1, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immer@^9.0.7: + version "9.0.15" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc" + integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + +iron-session@^6.1.2: + version "6.1.3" + resolved "https://registry.yarnpkg.com/iron-session/-/iron-session-6.1.3.tgz#c900102560e7d19541a9e6b8bbabc5436b01a230" + integrity sha512-o5ErwzAtTBKPtxo4nDmxOZAjK4Stku//5sFM0vac3/Px34530gTwnXoa8zwsC4/koqCtKY0yC0KF/1K+ZMGuHA== + dependencies: + "@hapi/iron" "^6.0.0" + "@types/cookie" "^0.5.1" + "@types/express" "^4.17.13" + "@types/node" "^16.11.7" + cookie "^0.5.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +js-base64@^2.4.3: + version "2.6.4" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.2" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" + integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.2" + +kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-fetch-happen@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + dependencies: + agentkeepalive "^4.1.3" + cacache "^15.2.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.2" + promise-retry "^2.0.1" + socks-proxy-agent "^6.0.0" + ssri "^8.0.0" + +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize "^1.2.0" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@~3.0.2: + version "3.0.8" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" + integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== + dependencies: + brace-expansion "^1.1.7" + +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: + version "3.3.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" + integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== + dependencies: + yallist "^4.0.0" + +minizlib@^2.0.0, minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.0.0, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nan@^2.13.2: + version "2.16.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" + integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +next-redux-wrapper@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/next-redux-wrapper/-/next-redux-wrapper-7.0.5.tgz#109cd3fe02183b18fbd094924cfcbd21262039dc" + integrity sha512-UFXdAWG5i+GFT8+Hoqpx3GArkPh34fVWF9YoA2VSHlBzsrPtnRd7NWM6FNSYUennpommTpWJ09mu+r/1UxyIkg== + +next@^12.0.7: + version "12.2.3" + resolved "https://registry.yarnpkg.com/next/-/next-12.2.3.tgz#c29d235ce480e589894dfab3120dade25d015a22" + integrity sha512-TA0tmSA6Dk6S6kfvCNbF7CWYW8468gZUxr/3/30z4KvAQbXnl2ASYZElVe7q/hBW/1F1ee0tSBlHa4/sn+ZIBw== + dependencies: + "@next/env" "12.2.3" + "@swc/helpers" "0.4.3" + caniuse-lite "^1.0.30001332" + postcss "8.4.14" + styled-jsx "5.0.2" + use-sync-external-store "1.2.0" + optionalDependencies: + "@next/swc-android-arm-eabi" "12.2.3" + "@next/swc-android-arm64" "12.2.3" + "@next/swc-darwin-arm64" "12.2.3" + "@next/swc-darwin-x64" "12.2.3" + "@next/swc-freebsd-x64" "12.2.3" + "@next/swc-linux-arm-gnueabihf" "12.2.3" + "@next/swc-linux-arm64-gnu" "12.2.3" + "@next/swc-linux-arm64-musl" "12.2.3" + "@next/swc-linux-x64-gnu" "12.2.3" + "@next/swc-linux-x64-musl" "12.2.3" + "@next/swc-win32-arm64-msvc" "12.2.3" + "@next/swc-win32-ia32-msvc" "12.2.3" + "@next/swc-win32-x64-msvc" "12.2.3" + +node-gyp@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" + nopt "^5.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + +node-sass@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-7.0.1.tgz#ad4f6bc663de8acc0a9360db39165a1e2620aa72" + integrity sha512-uMy+Xt29NlqKCFdFRZyXKOTqGt+QaKHexv9STj2WeLottnlqZEEWx6Bj0MXNthmFRRdM/YwyNo/8Tr46TOM0jQ== + dependencies: + async-foreach "^0.1.3" + chalk "^4.1.2" + cross-spawn "^7.0.3" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + lodash "^4.17.15" + meow "^9.0.0" + nan "^2.13.2" + node-gyp "^8.4.1" + npmlog "^5.0.0" + request "^2.88.0" + sass-graph "4.0.0" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +npmlog@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.0, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.19.5" + +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.3.0, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss-value-parser@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.5.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +prisma@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-4.1.0.tgz#5d43597f0f2603a4a75d9586346c74110d8e221f" + integrity sha512-iwqpAT6In1uvMSwQAM3PqmaBdhh2OaQ/2t+n3RjpW4vAKP3R7E1T34FZUU4zGOWtMWm5dt0sPThQkT/h87r6gw== + dependencies: + "@prisma/engines" "4.1.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-redux@^7.2.6: + version "7.2.8" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.8.tgz#a894068315e65de5b1b68899f9c6ee0923dd28de" + integrity sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw== + dependencies: + "@babel/runtime" "^7.15.4" + "@types/react-redux" "^7.1.20" + hoist-non-react-statics "^3.3.2" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^17.0.2" + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +readable-stream@^2.0.1: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +redux-thunk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714" + integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q== + +redux@^4.0.0, redux@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" + integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== + dependencies: + "@babel/runtime" "^7.9.2" + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpp@^3.0.0, regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +reselect@^4.1.5: + version "4.1.6" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656" + integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.20.0, resolve@^1.22.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.3: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-graph@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-4.0.0.tgz#fff8359efc77b31213056dfd251d05dadc74c613" + integrity sha512-WSO/MfXqKH7/TS8RdkCX3lVkPFQzCgbqdGsmSKq6tlPU+GpGEsa/5aW18JqItnqh+lPtcjifqdZ/VmiILkKckQ== + dependencies: + glob "^7.0.0" + lodash "^4.17.11" + scss-tokenizer "^0.3.0" + yargs "^17.2.1" + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +scss-tokenizer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.3.0.tgz#ef7edc3bc438b25cd6ffacf1aa5b9ad5813bf260" + integrity sha512-14Zl9GcbBvOT9057ZKjpz5yPOyUWG2ojd9D5io28wHRYsOrs7U95Q+KNL87+32p8rc+LvDpbu/i9ZYjM9Q+FsQ== + dependencies: + js-base64 "^2.4.3" + source-map "^0.7.1" + +"semver@2 || 3 || 4 || 5": + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.1.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" + integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.7.0" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.0.tgz#f9225acdb841e874dca25f870e9130990f3913d0" + integrity sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map@^0.7.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^8.0.0, ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== + dependencies: + readable-stream "^2.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +styled-components@^5.3.3: + version "5.3.5" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.5.tgz#a750a398d01f1ca73af16a241dec3da6deae5ec4" + integrity sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^1.1.0" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +styled-jsx@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.2.tgz#ff230fd593b737e9e68b630a694d460425478729" + integrity sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ== + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tar@^6.0.2, tar@^6.1.2: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== + dependencies: + glob "^7.1.2" + +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typescript@^4.5.4: + version "4.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +use-sync-external-store@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.2, wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + +yargs@^17.2.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..091bfdd --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,39 @@ +export default { + clearMocks: true, + + collectCoverage: true, + collectCoverageFrom: ['src/**/*.ts'], + coverageDirectory: 'test/coverage', + coveragePathIgnorePatterns: [ + 'node_modules', + 'docs', + 'dist', + 'example', + 'home', + 'temporary', + 'test/temporary' + ], + + coverageProvider: 'v8', + + extensionsToTreatAsEsm: ['.ts'], + globals: { + 'ts-jest': { + useESM: true + } + }, + + rootDir: '.', + + testMatch: [ + '**/?(*.)+(spec|test).[tj]s?(x)' + ], + testPathIgnorePatterns: [ + 'node_modules', + 'docs', + 'dist', + 'example', + 'test/temporary', + 'src' + ] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..22b446b --- /dev/null +++ b/package.json @@ -0,0 +1,49 @@ +{ + "name": "@printerframework/cli", + "description": "🖨️ Automation Tooling for Next, Redux and Prisma.", + "version": "1.0.0", + "private": false, + "preferGlobal": true, + "repository": "https://github.com/PrinterFramework/CLI.git", + "author": "Chris Cates ", + "license": "AGPLv3", + "scripts": { + "prepare": "husky install", + "start": "npm run build && node dist/src/printer.js", + "build": "tsc && npx ts-node prepend.ts && npm run move", + "move": "cp -r src/templates dist/src", + "lint": "eslint src --ext ts", + "test": "jest", + "codecov": "CODECOV_TOKEN='0644b00b-7cc1-4392-9427-1e8387f28ffb' npx codecov", + "convert": "npm run build && node dist/src/converter.js" + }, + "bin": { + "printer": "./dist/src/printer.js" + }, + "devDependencies": { + "@babel/preset-env": "^7.16.11", + "@babel/preset-typescript": "^7.16.7", + "@types/inquirer": "^8.2.1", + "@types/jest": "^27.4.0", + "@types/node": "^17.0.0", + "@types/prompts": "^2.0.14", + "@typescript-eslint/eslint-plugin": "^5.10.1", + "@typescript-eslint/parser": "^5.10.1", + "codecov": "^3.8.3", + "eslint": "^7.32.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.2.0", + "husky": "^7.0.4", + "jest": "^27.4.7", + "ts-node": "^10.4.0", + "typescript": "^4.5.4" + }, + "dependencies": { + "colors": "^1.4.0", + "commander": "^8.3.0", + "fs-jetpack": "^4.3.0", + "prompts": "^2.4.2" + } +} diff --git a/prepend.ts b/prepend.ts new file mode 100644 index 0000000..4212842 --- /dev/null +++ b/prepend.ts @@ -0,0 +1,7 @@ +import { read, write } from 'fs-jetpack' +import { join } from 'path' + +const file = read(join('dist', 'src', 'printer.js')) +const prependedFile = '#!/usr/bin/env node\n\n' + file + +write(join('dist', 'src', 'printer.js'), prependedFile) diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000..279d27f --- /dev/null +++ b/src/config.ts @@ -0,0 +1,47 @@ +import { read } from 'fs-jetpack' +import { join } from 'path' +import { Log } from './helpers/log' + +export interface PrinterConfig { + componentFolder?: boolean + component?: { + index?: boolean + component?: boolean + style?: boolean + test?: boolean + } + crud?: { + create: boolean + update: boolean + delete: boolean + list: boolean + get: boolean + } +} + +export let Config: PrinterConfig = { + componentFolder: false, + component: { + index: true, + component: true, + style: false, + test: false + }, + crud: { + create: true, + update: true, + delete: true, + list: true, + get: true + } +} + +export function registerConfig () { + try { + const config = read(join(process.cwd(), 'printer.config.json')) || '' + const data = JSON.parse(config) + Config = { ...data } + } catch (error) { + Log('👷 Could not load Printer config'.yellow) + } +} diff --git a/src/converter.ts b/src/converter.ts new file mode 100644 index 0000000..89bf037 --- /dev/null +++ b/src/converter.ts @@ -0,0 +1,27 @@ +import { join } from 'path' +import { write, read, list } from 'fs-jetpack' + +export async function Converter () { + const path = join(__dirname, 'templates') + RecurseConverter(path) +} + +export async function RecurseConverter (path: string) { + const files = list(path) + for (const file of files || []) { + const subpath = join(path, file) + if (file.indexOf('.template') !== -1) { + ConvertTemplate(subpath, file) + } else if (file.indexOf('.') === -1) { + RecurseConverter(subpath) + } + } +} + +export async function ConvertTemplate (path: string, filename: string) { + const writePath = join(process.cwd(), 'docs', 'templates', `${filename}.ts`) + const data = `export default \`${read(path)?.toString().replaceAll('`', '\\`')}\`` + write(writePath, data) +} + +(() => Converter())() diff --git a/src/generators/api.ts b/src/generators/api.ts new file mode 100644 index 0000000..b847541 --- /dev/null +++ b/src/generators/api.ts @@ -0,0 +1,37 @@ +import prompts from 'prompts' +import { join } from 'path' +import { exists, read, write } from 'fs-jetpack' +import { Log } from '../helpers/log' + +export async function generateApi (path: string) { + const apiPath = join(process.cwd(), 'pages', 'api', `${path}.tsx`) + + if (exists(apiPath) !== false) { + const result = await prompts({ + type: 'confirm', + name: 'overwrite', + message: 'This api already exists, overwrite it?' + }) + + if (result.overwrite === false) { + return + } + } + + const pathArray = path.split('/') + const fileName = pathArray[pathArray.length - 1] + let name = fileName.replace(/[^\w\s]/gi, '') + + if (fileName.indexOf('.') !== -1) { + name = fileName.split('.').map(word => word[0].toUpperCase() + word.substring(1)).join('') + } else if (fileName.indexOf('-') !== -1) { + name = fileName.split('-').map(word => word[0].toUpperCase() + word.substring(1)).join('') + } else { + name = name[0].toUpperCase() + name.substring(1) + } + + const apiTemplate = read(join(__dirname, '..', 'templates', 'api.template'))?.replaceAll('{{name}}', name) + + write(apiPath, apiTemplate || '') + Log(` ✅ Created pages/api/${path}.tsx`.green) +} diff --git a/src/generators/component.ts b/src/generators/component.ts new file mode 100644 index 0000000..e65baf9 --- /dev/null +++ b/src/generators/component.ts @@ -0,0 +1,72 @@ +import prompts from 'prompts' +import { join } from 'path' +import { exists, read, write } from 'fs-jetpack' +import { Log } from '../helpers/log' +import { Config } from '../config' + +export async function generateComponent (path: string) { + if (exists(join(process.cwd(), path)) !== false) { + const result = await prompts({ + type: 'confirm', + name: 'overwrite', + message: 'This component already exists, overwrite it?' + }) + + if (result.overwrite === false) { + return + } + } + + const pathArray = path.split('/') + const fileName = pathArray[pathArray.length - 1] + let name = fileName.replace(/[^\w\s]/gi, '') + + if (fileName.indexOf('.') !== -1) { + name = fileName.split('.').map(word => word[0].toUpperCase() + word.substring(1)).join('') + } else if (fileName.indexOf('-') !== -1) { + name = fileName.split('-').map(word => word[0].toUpperCase() + word.substring(1)).join('') + } else { + name = name[0].toUpperCase() + name.substring(1) + } + + if (Config.componentFolder === true) { + let component = read(join(__dirname, '..', 'templates', 'component', 'component.nostyle.template'))?.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path) + const componentPath = join(process.cwd(), path, `${fileName}.component.tsx`) + + if (Config.component?.style === true) { + component = read(join(__dirname, '..', 'templates', 'component', 'component.template'))?.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path) + + const style = read(join(__dirname, '..', 'templates', 'component', 'style.template'))?.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path) + const stylePath = join(process.cwd(), path, `${fileName}.style.tsx`) + write(stylePath, style || '') + Log(` ✅ Created ${fileName}.style.tsx`.green) + } + + write(componentPath, component || '') + Log(` ✅ Created ${fileName}.component.tsx`.green) + + if (Config.component?.test) { + const test = read(join(__dirname, '..', 'templates', 'component', 'test.template'))?.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName) + const testPath = join(process.cwd(), path, `${fileName}.test.tsx`) + + write(testPath, test || '') + Log(` ✅ Created ${fileName}.test.tsx`.green) + } + + let index = read(join(__dirname, '..', 'templates', 'component', 'index.nostyle.template'))?.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path) + const indexPath = join(process.cwd(), path, 'index.tsx') + + if (Config.component?.style === true) { + index = read(join(__dirname, '..', 'templates', 'component', 'index.template'))?.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path).replaceAll('{{path}}', path) + } + + write(indexPath, index || '') + Log(' ✅ Created index.tsx'.green) + } else { + const component = read(join(__dirname, '..', 'templates', 'component', 'component.nostyle.template'))?.replaceAll('{{name}}', name).replaceAll('{{prefix}}', fileName).replaceAll('{{path}}', path) + const componentPath = join(process.cwd(), `${path}.tsx`) + + write(componentPath, component || '') + Log(` ✅ Created ${path}.tsx`.green) + } +} diff --git a/src/generators/crud.ts b/src/generators/crud.ts new file mode 100644 index 0000000..25a3dff --- /dev/null +++ b/src/generators/crud.ts @@ -0,0 +1,45 @@ +import prompts from 'prompts' +import { join } from 'path' +import { exists, read, write } from 'fs-jetpack' +import { Log } from '../helpers/log' + +export async function generateCrud (model: string) { + const basePath = join(process.cwd(), 'pages', 'api', model) + + if (exists(basePath) !== false) { + const result = await prompts({ + type: 'confirm', + name: 'overwrite', + message: 'Routes already exist in this folder, overwrite it?' + }) + + if (result.overwrite === false) { + return + } + } + + const createPath = join(basePath, 'create.tsx') + const createTemplate = read(join(__dirname, '..', 'templates', 'crud', 'create.template'))?.replaceAll('{{model}}', model) + write(createPath, createTemplate || '') + Log(` ✅ Created pages/api/${model}/create.tsx`.green) + + const updatePath = join(basePath, 'update.tsx') + const updateTemplate = read(join(__dirname, '..', 'templates', 'crud', 'update.template'))?.replaceAll('{{model}}', model) + write(updatePath, updateTemplate || '') + Log(` ✅ Created pages/api/${model}/update.tsx`.green) + + const getPath = join(basePath, 'get.tsx') + const getTemplate = read(join(__dirname, '..', 'templates', 'crud', 'get.template'))?.replaceAll('{{model}}', model) + write(getPath, getTemplate || '') + Log(` ✅ Created pages/api/${model}/get.tsx`.green) + + const listPath = join(basePath, 'list.tsx') + const listTemplate = read(join(__dirname, '..', 'templates', 'crud', 'list.template'))?.replaceAll('{{model}}', model) + write(listPath, listTemplate || '') + Log(` ✅ Created pages/api/${model}/list.tsx`.green) + + const deletePath = join(basePath, 'delete.tsx') + const deleteTemplate = read(join(__dirname, '..', 'templates', 'crud', 'delete.template'))?.replaceAll('{{model}}', model) + write(deletePath, deleteTemplate || '') + Log(` ✅ Created pages/api/${model}/delete.tsx`.green) +} diff --git a/src/generators/inject.ts b/src/generators/inject.ts new file mode 100644 index 0000000..a5abcc0 --- /dev/null +++ b/src/generators/inject.ts @@ -0,0 +1,124 @@ +import { join } from 'path' +import { exists, read, write } from 'fs-jetpack' +import { Log } from '../helpers/log' +import { findMatches, DispatchMatcher, SliceMatcher, ReduxOptionalMatcher, functionMatcher, selectorMatcher, actionMatcher, typeMatcher } from '../helpers/match' + +export async function inject (slice: string, component: string) { + const filePath = join(process.cwd(), component) + const pathArray = component.split('/') + const fileName = pathArray[pathArray.length - 1] + let fileContents = '' + + if (exists(filePath) === 'dir') { + const fileComponentPath = join(process.cwd(), component, `${fileName}.component.tsx`) + fileContents = read(fileComponentPath) || '' + } else { + fileContents = read(`${filePath}.tsx`) || '' + } + + const slicePath = join(process.cwd(), 'redux', 'slice', `${slice}.tsx`) + const sliceContents = read(slicePath) || '' + + const matches = findMatches(sliceContents, /@printer/gmi) + const splitFile = sliceContents.split('\n') + const sliceMatch = findMatches(sliceContents, SliceMatcher)[0] + + let newContents = fileContents + const stateInjections = [] + const actionInjections = [] + + for (let i = 0; i < matches.length; i++) { + const index = matches[i] + const match = splitFile[index + 1] + + const decorator = splitFile[index].trim().split('::') + + let typeMap = '' + + if (decorator.length > 2) { + typeMap = decorator[2] + } + + if (index < sliceMatch) { + const varKey = match.split(':')[0].trim() + stateInjections.push({ value: varKey, type: typeMap }) + } else { + const varKey = match.split('(')[0].trim() + actionInjections.push(varKey) + } + } + + if (stateInjections.length === 0 && actionInjections.length === 0) { + Log(' ⚠️ No printer decorators were found in the slice'.yellow) + return + } + + const hasExistingImport = findMatches(newContents, ReduxOptionalMatcher) + + if (hasExistingImport.length > 0) { + newContents = newContents.replace(ReduxOptionalMatcher, 'import { useSelector, useDispatch } from \'react-redux\'') + } else { + newContents = `import { useSelector, useDispatch } from 'react-redux'\n\n${newContents}` + } + + for (let i = 0; i < stateInjections.length; i++) { + const stateInjection = stateInjections[i] + + if (stateInjection.type) { + const typeName = `${stateInjection.type[0].toUpperCase() + stateInjection.type.substring(1)}Type` + if (findMatches(newContents, typeMatcher(typeName)).length === 0) { + newContents = `import ${typeName} from 'types/${stateInjection.type}'\n${newContents}` + } + } + } + + for (let i = 0; i < stateInjections.length; i++) { + const stateInjection = stateInjections[i] + if (findMatches(newContents, selectorMatcher(stateInjection.value)).length === 0) { + const injectionLine = findMatches(newContents, functionMatcher(fileName))[0] + const tempContents = newContents.split('\n') + + let typeMap = 'any' + if (stateInjection.type) { + const typeName = stateInjection.type[0].toUpperCase() + stateInjection.type.substring(1) + typeMap = `{ ${stateInjection.type}: { ${stateInjection.value}: ${typeName}Type } }` + } + + tempContents[injectionLine] = tempContents[injectionLine] + `\n const ${stateInjection.value} = useSelector((state: ${typeMap}) => ({ ...state.${slice}.${stateInjection.value} }))` + + if (i === stateInjections.length - 1) { + tempContents[injectionLine] = tempContents[injectionLine] + '\n' + } + + newContents = tempContents.join('\n') + } + + Log(` ✅ State '${stateInjection.value}' was injected into the component ${stateInjection.type ? `with the type ${stateInjection.type}` : null}`.green) + } + + if (actionInjections.length > 0) { + if (findMatches(newContents, DispatchMatcher).length === 0) { + const injectionLine = findMatches(newContents, functionMatcher(fileName))[0] + const tempContents = newContents.split('\n') + tempContents[injectionLine] = tempContents[injectionLine] + '\n const dispatch = useDispatch()' + newContents = tempContents.join('\n') + } + + if (findMatches(newContents, actionMatcher(actionInjections)).length > 0) { + newContents = newContents.replace(actionMatcher(actionInjections), `import { ${actionInjections.join(', ')} } from 'redux/slice/${slice}'`) + } else { + const tempContents = newContents.split('\n') + tempContents[0] = tempContents[0] + `\nimport { ${actionInjections.join(', ')} } from 'redux/slice/${slice}'` + newContents = tempContents.join('\n') + } + + Log(` ✅ ${actionInjections.length} action${actionInjections.length > 1 ? 's were' : ' was'} injected into the component`.green) + } + + if (exists(filePath) === 'dir') { + const fileComponentPath = join(process.cwd(), component, `${fileName}.component.tsx`) + write(fileComponentPath, newContents) + } else { + write(`${filePath}.tsx`, newContents) + } +} diff --git a/src/generators/new.ts b/src/generators/new.ts new file mode 100644 index 0000000..4d7df4f --- /dev/null +++ b/src/generators/new.ts @@ -0,0 +1,144 @@ +import prompts from 'prompts' +import { join } from 'path' +import { exists, read, write } from 'fs-jetpack' +import { Log } from '../helpers/log' +import { randomBytes } from 'crypto' + +export async function generateNewProject (path: string = '.') { + const appPath = join(process.cwd(), path, 'pages', '_app.tsx') + const documentPath = join(process.cwd(), path, 'pages', '_document.tsx') + const babelPath = join(process.cwd(), path, '.babelrc') + const gitignorePath = join(process.cwd(), path, '.gitignore') + const gitkeepPath = join(process.cwd(), path, '.gitkeep') + const gitkeepPublicPath = join(process.cwd(), path, 'public', '.gitkeep') + const indexPath = join(process.cwd(), path, 'pages', 'index.tsx') + const utilSessionPath = join(process.cwd(), path, 'util', 'session.ts') + const resetCssPath = join(process.cwd(), path, 'public', 'assets', 'css', 'reset.css') + const fontsCssPath = join(process.cwd(), path, 'public', 'assets', 'css', 'fonts.css') + const printerCssPath = join(process.cwd(), path, 'public', 'assets', 'css', 'printer.css') + const printerScssPath = join(process.cwd(), path, 'public', 'assets', 'scss', 'printer.scss') + const prismaClientPath = join(process.cwd(), path, 'prisma', 'client.ts') + const prismaSchemaPath = join(process.cwd(), path, 'prisma', 'schema.prisma') + const packagePath = join(process.cwd(), path, 'package.json') + const wrapperPath = join(process.cwd(), path, 'redux', 'wrapper.tsx') + const reducerPath = join(process.cwd(), path, 'redux', 'reducer.tsx') + const reducersPath = join(process.cwd(), path, 'redux', 'reducers.json') + const tsconfigPath = join(process.cwd(), path, 'tsconfig.json') + const precommitPath = join(process.cwd(), path, '.husky', 'pre-commit') + const eslintrcPath = join(process.cwd(), path, '.eslintrc.js') + const printerConfigPath = join(process.cwd(), path, 'printer.config.json') + + if (exists(printerConfigPath) !== false) { + const result = await prompts({ + type: 'confirm', + name: 'overwrite', + message: 'A project already exists here, overwrite it?' + }) + + if (result.overwrite === false) { + return + } + } + + write( + babelPath, + read(join(__dirname, '..', 'templates', 'new', 'babelrc.template')) || '' + ) + Log(' ✅ Created .babelrc'.green) + write( + gitignorePath, + read(join(__dirname, '..', 'templates', 'new', 'gitignore.template')) || '' + ) + Log(' ✅ Created .gitignore'.green) + write(gitkeepPath, '') + Log(' ✅ Created .gitkeep'.green) + write(gitkeepPublicPath, '') + Log(' ✅ Created public/.gitkeep'.green) + write( + appPath, + read(join(__dirname, '..', 'templates', 'new', '_app.template')) || '' + ) + Log(' ✅ Created pages/_app.tsx'.green) + write( + documentPath, + read(join(__dirname, '..', 'templates', 'new', '_document.template')) || '' + ) + Log(' ✅ Created pages/_document.tsx'.green) + write( + indexPath, + read(join(__dirname, '..', 'templates', 'new', 'index.template')) || '' + ) + Log(' ✅ Created pages/index.tsx'.green) + write( + utilSessionPath, + read(join(__dirname, '..', 'templates', 'new', 'session.template'))?.replaceAll('{{password}}', randomBytes(32).toString('hex')) || '' + ) + Log(' ✅ Created util/session.ts'.green) + write( + resetCssPath, + read(join(__dirname, '..', 'templates', 'new', 'reset.template')) || '' + ) + Log(' ✅ Created public/assets/css/reset.css'.green) + write( + fontsCssPath, + '' + ) + Log(' ✅ Created public/assets/css/fonts.css'.green) + write( + printerCssPath, + read(join(__dirname, '..', 'templates', 'new', 'printer.template')) || '' + ) + Log(' ✅ Created public/assets/css/printer.css'.green) + write( + printerScssPath, + read(join(__dirname, '..', 'templates', 'new', 'printer.template')) || '' + ) + Log(' ✅ Created public/assets/scss/printer.scss'.green) + write( + prismaClientPath, + read(join(__dirname, '..', 'templates', 'new', 'prisma.client.template')) || '' + ) + Log(' ✅ Created prisma/client.ts'.green) + write( + prismaSchemaPath, + read(join(__dirname, '..', 'templates', 'new', 'schema.prisma.template')) || '' + ) + Log(' ✅ Created prisma/schema.prisma'.green) + write( + packagePath, + read(join(__dirname, '..', 'templates', 'new', 'package.template')) || '' + ) + Log(' ✅ Created package.json'.green) + write( + wrapperPath, + read(join(__dirname, '..', 'templates', 'new', 'wrapper.template')) || '' + ) + Log(' ✅ Created redux/wrapper.tsx'.green) + write( + reducerPath, + read(join(__dirname, '..', 'templates', 'new', 'reducer.template')) || '' + ) + Log(' ✅ Created redux/reducer.tsx'.green) + write(reducersPath, '[]') + Log(' ✅ Created redux/reducers.json'.green) + write( + tsconfigPath, + read(join(__dirname, '..', 'templates', 'new', 'tsconfig.template')) || '' + ) + Log(' ✅ Created tsconfig.json'.green) + write( + precommitPath, + read(join(__dirname, '..', 'templates', 'new', 'precommit.template')) || '' + ) + Log(' ✅ Created .husky/pre-commit'.green) + write( + eslintrcPath, + read(join(__dirname, '..', 'templates', 'new', 'eslintrc.template')) || '' + ) + Log(' ✅ Created printer.config.json'.green) + write( + printerConfigPath, + read(join(__dirname, '..', 'templates', 'new', 'printer.config.template')) || '' + ) + Log(' ✅ Created .eslintrc.js'.green) +} diff --git a/src/generators/page.ts b/src/generators/page.ts new file mode 100644 index 0000000..3a583b0 --- /dev/null +++ b/src/generators/page.ts @@ -0,0 +1,47 @@ +import prompts from 'prompts' +import { join } from 'path' +import { exists, read, write } from 'fs-jetpack' +import { Log } from '../helpers/log' + +export async function generatePage (path: string) { + const pagePath = join(process.cwd(), 'pages', `${path}.tsx`) + + if (exists(pagePath) !== false) { + const result = await prompts({ + type: 'confirm', + name: 'overwrite', + message: 'This page already exists, overwrite it?' + }) + + if (result.overwrite === false) { + return + } + } + + const pathArray = path.split('/') + const fileName = pathArray[pathArray.length - 1] + let urls = [] + let name = fileName.replace(/[^\w\s]/gi, '') + let pageTemplate = '' + + if (path.match(/\[(.*?)\]/g)) { + urls = path.match(/\[(.*?)\]/g) as string[] + urls = urls.map(url => url.replace(/\[/g, '').replace(/\]/g, '')) + name = name[0].toUpperCase() + name.substring(1) + + pageTemplate = read(join(__dirname, '..', 'templates', 'page.url.template'))?.replaceAll('{{name}}', name).replaceAll('{{url}}', urls.join(', ')) || '' + } else { + if (fileName.indexOf('.') !== -1) { + name = fileName.split('.').map(word => word[0].toUpperCase() + word.substring(1)).join('') + } else if (fileName.indexOf('-') !== -1) { + name = fileName.split('-').map(word => word[0].toUpperCase() + word.substring(1)).join('') + } else { + name = name[0].toUpperCase() + name.substring(1) + } + + pageTemplate = read(join(__dirname, '..', 'templates', 'page.template'))?.replaceAll('{{name}}', name) || '' + } + + write(pagePath, pageTemplate) + Log(` ✅ Created pages/${path}.tsx`.green) +} diff --git a/src/generators/slice.ts b/src/generators/slice.ts new file mode 100644 index 0000000..66f55fa --- /dev/null +++ b/src/generators/slice.ts @@ -0,0 +1,49 @@ +import prompts from 'prompts' +import { join } from 'path' +import { read, write } from 'fs-jetpack' +import { Log } from '../helpers/log' + +export async function generateSlice (name: string) { + const slicePath = join(process.cwd(), 'redux', 'slice', `${name}.tsx`) + const reducerPath = join(process.cwd(), 'redux', 'reducer.tsx') + const reducersPath = join(process.cwd(), 'redux', 'reducers.json') + + let reducers = [] + + try { + reducers = JSON.parse(read(reducersPath) as string) as string[] + + if (reducers.indexOf(name) !== -1) { + const result = await prompts({ + type: 'confirm', + name: 'overwrite', + message: 'This slice already exists, overwrite it?' + }) + + if (result.overwrite === false) { + return + } + } + + if (reducers.indexOf(name) === -1) { + reducers.push(name) + } + write(reducersPath, JSON.stringify(reducers, null, 2)) + } catch (error) { + Log(' ❗ redux/reducers.json is invalid, please make sure it\'s a JSON Array'.red) + process.exit() + } + + write( + slicePath, + read(join(__dirname, '..', 'templates', 'slice', 'slice.template'))?.replaceAll('{{name}}', name) || '' + ) + Log(` ✅ Created redux/slice/${name}.tsx`.green) + write( + reducerPath, + read(join(__dirname, '..', 'templates', 'slice', 'reducer.template')) + ?.replaceAll('{{import}}', reducers.map(slice => `import { ${slice}Slice } from 'redux/slice/${slice}'`).join('\n')) + .replaceAll('{{reducer}}', reducers.map(slice => ` ${slice}: ${slice}Slice.reducer,`).join('\n')) || '' + ) + Log(' ✅ Updated redux/reducer.tsx'.green) +} diff --git a/src/generators/type.ts b/src/generators/type.ts new file mode 100644 index 0000000..6275192 --- /dev/null +++ b/src/generators/type.ts @@ -0,0 +1,37 @@ +import prompts from 'prompts' +import { join } from 'path' +import { exists, read, write } from 'fs-jetpack' +import { Log } from '../helpers/log' + +export async function generateType (path: string) { + const typePath = join(process.cwd(), 'types', `${path}.tsx`) + + if (exists(typePath) !== false) { + const result = await prompts({ + type: 'confirm', + name: 'overwrite', + message: 'This api already exists, overwrite it?' + }) + + if (result.overwrite === false) { + return + } + } + + const pathArray = path.split('/') + const fileName = pathArray[pathArray.length - 1] + let name = fileName.replace(/[^\w\s]/gi, '') + + if (fileName.indexOf('.') !== -1) { + name = fileName.split('.').map(word => word[0].toUpperCase() + word.substring(1)).join('') + } else if (fileName.indexOf('-') !== -1) { + name = fileName.split('-').map(word => word[0].toUpperCase() + word.substring(1)).join('') + } else { + name = name[0].toUpperCase() + name.substring(1) + } + + const typeTemplate = read(join(__dirname, '..', 'templates', 'type.template'))?.replaceAll('{{name}}', name) + + write(typePath, typeTemplate || '') + Log(` ✅ Created types/${path}.tsx`.green) +} diff --git a/src/helpers/log.ts b/src/helpers/log.ts new file mode 100644 index 0000000..a3fbbb3 --- /dev/null +++ b/src/helpers/log.ts @@ -0,0 +1,5 @@ +export function Log (...output: string[]): void { + if (process.env.NODE_ENV !== 'test') { + console.log(...output) + } +} diff --git a/src/helpers/match.ts b/src/helpers/match.ts new file mode 100644 index 0000000..dc4fac2 --- /dev/null +++ b/src/helpers/match.ts @@ -0,0 +1,34 @@ +export const SliceMatcher = /^(?=.*export)(?=.*createSlice).*$/gmi +export const ImportMatcher = /^(?=.*import)(?=.*from).*$/gmi +export const ReduxMatcher = /^(?=.*import)(?=.*from)(?=.*useSelector)(?=.*useDispatch).*$/gmi +export const ReduxOptionalMatcher = /^(?=.*import)(?=.*from)(?=.*useSelector|useDispatch).*$/gmi +export const DispatchMatcher = /^(?=.*const)(?=.*dispatch)(?=.*useDispatch).*$/gmi + +export function functionMatcher (name: string) { + return new RegExp(`^(?=.*function)(?=.*${name}).*$`, 'gmi') +} + +export function selectorMatcher (name: string) { + return new RegExp(`^(?=.*${name})(?=.*useSelector).*$`, 'gmi') +} + +export function actionMatcher (name: string[]) { + return new RegExp(`^(?=.*import)(?=.*${name.join('|')})(?=.*from).*$`, 'gmi') +} + +export function typeMatcher (name: string) { + return new RegExp(`^(?=.*import)(?=.*${name})(?=.*from).*$`, 'gmi') +} + +export function findMatches (text: any, pattern: any) { + const matchingLines = [] + const allLines = text.split('\n') + + for (let i = 0; i < allLines.length; i++) { + if (allLines[i].match(pattern)) { + matchingLines.push(i) + } + } + + return matchingLines +} diff --git a/src/printer.ts b/src/printer.ts new file mode 100644 index 0000000..078aee5 --- /dev/null +++ b/src/printer.ts @@ -0,0 +1,94 @@ +import 'colors' +import { Command } from 'commander' +import { Log } from './helpers/log' +import { registerConfig } from './config' +import { generateNewProject } from './generators/new' +import { generateComponent } from './generators/component' +import { generateSlice } from './generators/slice' +import { generateType } from './generators/type' +import { generatePage } from './generators/page' +import { generateApi } from './generators/api' +import { generateCrud } from './generators/crud' +import { inject } from './generators/inject' + +export const Printer = new Command('🖨️ Printer') + +Printer + .version('1.0.0') + .description('🖨️ Printer: Automation Tooling for Next, Redux and Prisma.') + +Printer + .command('new [path]') + .description('Generate a new Printer project') + .action(async path => { + registerConfig() + Log('👷 Generating new Printer project'.green) + await generateNewProject(path || '.') + }) + +Printer + .command('component ') + .description('Generate a new Printer component') + .action(async path => { + registerConfig() + Log(`👷 Generating new Printer component ${path}`.green) + await generateComponent(path) + }) + +Printer + .command('type ') + .description('Generate a new Printer type') + .action(async path => { + registerConfig() + Log(`👷 Generating new Printer type ${path}`.green) + await generateType(path) + }) + +Printer + .command('inject ') + .description('Inject a slice into a component or page') + .action(async (slice, component) => { + registerConfig() + Log(`💉 Injecting ${slice} into ${component}`.green) + await inject(slice, component) + }) + +Printer + .command('slice ') + .description('Generate a new Printer slice') + .action(async name => { + registerConfig() + Log(`👷 Generating new Printer slice ${name}`.green) + await generateSlice(name) + }) + +Printer + .command('page ') + .description('Generate a new Printer page') + .action(async path => { + registerConfig() + Log('👷 Generating new Printer page'.green) + await generatePage(path) + }) + +Printer + .command('api ') + .description('Generate a new Printer API route') + .action(async path => { + registerConfig() + Log('👷 Generating new Printer API route'.green) + await generateApi(path) + }) + +Printer + .command('crud ') + .description('Generate a CRUD boilerplate for a Prisma model') + .action(async model => { + registerConfig() + Log(`👷 Generating new CRUD boilerplate for ${model}`.green) + await generateCrud(model) + }) + +if (process.env.NODE_ENV !== 'test') { + Printer.parse(process.argv) +} diff --git a/src/templates/api.template b/src/templates/api.template new file mode 100644 index 0000000..b57d379 --- /dev/null +++ b/src/templates/api.template @@ -0,0 +1,17 @@ +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const {{name}}Route = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + res.status(200).send({ status: 'OK' }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default {{name}}Route diff --git a/src/templates/component/component.nostyle.template b/src/templates/component/component.nostyle.template new file mode 100644 index 0000000..cc9309b --- /dev/null +++ b/src/templates/component/component.nostyle.template @@ -0,0 +1,11 @@ +export interface {{name}}I {} + +export function {{name}}Component({}: {{name}}I) { + return ( +
+

Component {{name}}

+
+ ) +} + +export default {{name}}Component diff --git a/src/templates/component/component.template b/src/templates/component/component.template new file mode 100644 index 0000000..e1dac72 --- /dev/null +++ b/src/templates/component/component.template @@ -0,0 +1,11 @@ +import { {{name}}Style } from '{{path}}/{{prefix}}.style' + +export interface {{name}}I {} + +export function {{name}}Component({}: {{name}}I) { + return ( + <{{name}}Style> +

Component {{name}}

+ + ) +} diff --git a/src/templates/component/index.nostyle.template b/src/templates/component/index.nostyle.template new file mode 100644 index 0000000..bf2ba54 --- /dev/null +++ b/src/templates/component/index.nostyle.template @@ -0,0 +1 @@ +export * from '{{path}}/{{prefix}}.component' diff --git a/src/templates/component/index.template b/src/templates/component/index.template new file mode 100644 index 0000000..db1dc73 --- /dev/null +++ b/src/templates/component/index.template @@ -0,0 +1,2 @@ +export * from '{{path}}/{{prefix}}.component' +export * from '{{path}}/{{prefix}}.style' diff --git a/src/templates/component/style.template b/src/templates/component/style.template new file mode 100644 index 0000000..1f9e6af --- /dev/null +++ b/src/templates/component/style.template @@ -0,0 +1,3 @@ +import styled from 'styled-components' + +export const {{name}}Style = styled.div`` diff --git a/src/templates/component/test.template b/src/templates/component/test.template new file mode 100644 index 0000000..c0dd185 --- /dev/null +++ b/src/templates/component/test.template @@ -0,0 +1,2 @@ +import { {{name}}Component } from '{{path}}/{{prefix}}.component' +import { {{name}} } from '{{path}}/{{prefix}}.connect' diff --git a/src/templates/crud/create.template b/src/templates/crud/create.template new file mode 100644 index 0000000..367b425 --- /dev/null +++ b/src/templates/crud/create.template @@ -0,0 +1,23 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const CreateRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const {{model}} = await prisma.{{model}}.create({ + data: { + ...req.body + } + }) + res.status(200).send({ status: 'OK', {{model}} }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default CreateRoute diff --git a/src/templates/crud/delete.template b/src/templates/crud/delete.template new file mode 100644 index 0000000..2c8eb11 --- /dev/null +++ b/src/templates/crud/delete.template @@ -0,0 +1,23 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const DeleteRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const {{model}} = await prisma.{{model}}.delete({ + where: { + id: req.query.id || req.body.id + } + }) + res.status(200).send({ status: 'OK', {{model}} }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default DeleteRoute diff --git a/src/templates/crud/get.template b/src/templates/crud/get.template new file mode 100644 index 0000000..8798c7d --- /dev/null +++ b/src/templates/crud/get.template @@ -0,0 +1,23 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const GetRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const {{model}} = await prisma.{{model}}.findUnique({ + where: { + id: req.query.id || req.body.id + } + }) + res.status(200).send({ status: 'OK', {{model}} }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default GetRoute diff --git a/src/templates/crud/list.template b/src/templates/crud/list.template new file mode 100644 index 0000000..6afad5a --- /dev/null +++ b/src/templates/crud/list.template @@ -0,0 +1,19 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const ListRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const results = await prisma.{{model}}.findMany() + res.status(200).send({ status: 'OK', results }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default ListRoute diff --git a/src/templates/crud/update.template b/src/templates/crud/update.template new file mode 100644 index 0000000..1ad606d --- /dev/null +++ b/src/templates/crud/update.template @@ -0,0 +1,26 @@ +import prisma from 'prisma/client' +import { NextApiRequest, NextApiResponse } from 'next' +import { withIronSessionApiRoute } from 'iron-session/next' +import { Session } from 'util/session' + +export const UpdateRoute = withIronSessionApiRoute( + async (req: NextApiRequest, res: NextApiResponse) => { + try { + const id = req.body.id + const data = req.body + delete data.id + + const {{model}} = await prisma.{{model}}.update({ + where: { id }, + data, + }) + res.status(200).send({ status: 'OK', {{model}} }) + } catch (error) { + console.error(error) + res.status(500).send({ status: 'ERROR', error }) + } + }, + Session +) + +export default UpdateRoute diff --git a/src/templates/new/_app.template b/src/templates/new/_app.template new file mode 100644 index 0000000..836dfdc --- /dev/null +++ b/src/templates/new/_app.template @@ -0,0 +1,22 @@ +import App, { AppContext, AppInitialProps } from 'next/app' +import { wrapper } from 'redux/wrapper' + +export class AppComponent extends App { + public static getInitialProps = async ({ Component, ctx }: AppContext) => { + return { + pageProps: { + ...(Component.getInitialProps + ? await Component.getInitialProps(ctx) + : {}) + }, + appProp: ctx.pathname + } + } + + public render() { + const { Component, pageProps } = this.props + return + } +} + +export default wrapper.withRedux(AppComponent) diff --git a/src/templates/new/_document.template b/src/templates/new/_document.template new file mode 100644 index 0000000..734def5 --- /dev/null +++ b/src/templates/new/_document.template @@ -0,0 +1,17 @@ +import { Html, Head, Main, NextScript } from 'next/document' + +export default function Document() { + return ( + + + + + + + +
+ + + + ) +} diff --git a/src/templates/new/babelrc.template b/src/templates/new/babelrc.template new file mode 100644 index 0000000..eef1b55 --- /dev/null +++ b/src/templates/new/babelrc.template @@ -0,0 +1,4 @@ +{ + "plugins": [["styled-components", { "ssr": true, "displayName": true, "preprocess": false } ]], + "presets": ["next/babel"] +} diff --git a/src/templates/new/eslintrc.template b/src/templates/new/eslintrc.template new file mode 100644 index 0000000..df21694 --- /dev/null +++ b/src/templates/new/eslintrc.template @@ -0,0 +1,37 @@ +module.exports = { + env: { + browser: true, + es2021: true, + node: true + }, + extends: [ + 'plugin:react/recommended', + 'standard', + 'prettier', + 'plugin:prettier/recommended' + ], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaFeatures: { + jsx: true + }, + ecmaVersion: 'latest', + sourceType: 'module' + }, + plugins: ['react', '@typescript-eslint'], + rules: { + 'prettier/prettier': [ + 'warn', + { + singleQuote: true, + semi: false, + trailingComma: 'none' + } + ], + 'react/react-in-jsx-scope': 0, + 'no-empty-pattern': 0, + 'no-unused-vars': 0, + 'max-statements-per-line': 0, + 'new-cap': 0 + } +} diff --git a/src/templates/new/gitignore.template b/src/templates/new/gitignore.template new file mode 100644 index 0000000..9f2da9e --- /dev/null +++ b/src/templates/new/gitignore.template @@ -0,0 +1,123 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* diff --git a/src/templates/new/index.template b/src/templates/new/index.template new file mode 100644 index 0000000..2056f9e --- /dev/null +++ b/src/templates/new/index.template @@ -0,0 +1,5 @@ +export interface IndexI {} + +export default function Index({}: IndexI) { + return

Page Index

+} diff --git a/src/templates/new/package.template b/src/templates/new/package.template new file mode 100644 index 0000000..cf0a371 --- /dev/null +++ b/src/templates/new/package.template @@ -0,0 +1,43 @@ +{ + "name": "print-template", + "version": "1.0.0", + "scripts": { + "dev": "next dev --port 4200", + "build": "next build", + "start": "next start", + "prepare": "husky install", + "lint": "eslint . --ext ts,tsx --resolve-plugins-relative-to .", + "scss": "node-sass --output-style compact -rw public/assets/scss/printer.scss -o public/assets/css", + "prisma": "npx prisma generate && npx prisma db push" + }, + "dependencies": { + "@prisma/client": "^4.1.0", + "@reduxjs/toolkit": "^1.7.1", + "iron-session": "^6.1.2", + "next": "^12.0.7", + "next-redux-wrapper": "^7.0.5", + "prisma": "^4.1.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-redux": "^7.2.6", + "styled-components": "^5.3.3" + }, + "devDependencies": { + "@types/node": "^17.0.13", + "@typescript-eslint/eslint-plugin": "^5.14.0", + "@typescript-eslint/parser": "^5.14.0", + "babel-plugin-styled-components": "^2.0.2", + "eslint": "^8.10.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.25.4", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-promise": "^5.2.0", + "eslint-plugin-react": "^7.29.3", + "husky": "^7.0.4", + "node-sass": "^7.0.1", + "prettier": "^2.5.1", + "typescript": "^4.5.4" + } +} diff --git a/src/templates/new/precommit.template b/src/templates/new/precommit.template new file mode 100644 index 0000000..cb9e1eb --- /dev/null +++ b/src/templates/new/precommit.template @@ -0,0 +1,5 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run lint +npm run build diff --git a/src/templates/new/printer.config.template b/src/templates/new/printer.config.template new file mode 100644 index 0000000..b5193dc --- /dev/null +++ b/src/templates/new/printer.config.template @@ -0,0 +1,16 @@ +{ + "componentFolder": false, + "component": { + "index": true, + "component": true, + "style": true, + "test": false + }, + "crud": { + "create": true, + "update": true, + "delete": true, + "list": true, + "get": true + } +} diff --git a/src/templates/new/printer.template b/src/templates/new/printer.template new file mode 100644 index 0000000..7090b34 --- /dev/null +++ b/src/templates/new/printer.template @@ -0,0 +1,4 @@ +* { + transition: all 0.25s cubic-bezier(0.33, 1, 0.68, 1); + box-sizing: border-box; +} diff --git a/src/templates/new/prisma.client.template b/src/templates/new/prisma.client.template new file mode 100644 index 0000000..06f179a --- /dev/null +++ b/src/templates/new/prisma.client.template @@ -0,0 +1,15 @@ +import { PrismaClient } from '@prisma/client' + +let prisma: PrismaClient + +if (process.env.NODE_ENV === 'production') { + prisma = new PrismaClient() +} else { + if (!global.prisma) { + global.prisma = new PrismaClient() + } + + prisma = global.prisma +} + +export default prisma diff --git a/src/templates/new/reducer.template b/src/templates/new/reducer.template new file mode 100644 index 0000000..d020248 --- /dev/null +++ b/src/templates/new/reducer.template @@ -0,0 +1 @@ +export const reducer = { } diff --git a/src/templates/new/reset.template b/src/templates/new/reset.template new file mode 100644 index 0000000..cc10ae7 --- /dev/null +++ b/src/templates/new/reset.template @@ -0,0 +1,43 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1.5; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/src/templates/new/schema.prisma.template b/src/templates/new/schema.prisma.template new file mode 100644 index 0000000..eae3e94 --- /dev/null +++ b/src/templates/new/schema.prisma.template @@ -0,0 +1,16 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "mongodb" + url = env("DATABASE_URL") +} + +model Template { + id String @id @default(auto()) @map("_id") @db.ObjectId + dateCreated DateTime @default(now()) + dateUpdated DateTime @updatedAt + + @@index(dateCreated) +} diff --git a/src/templates/new/session.template b/src/templates/new/session.template new file mode 100644 index 0000000..95c3318 --- /dev/null +++ b/src/templates/new/session.template @@ -0,0 +1,9 @@ +export const password = '{{password}}'; + +export const Session = { + cookieName: 'printer', + password, + cookieOptions: { + secure: process.env.NODE_ENV === 'production', + }, +} diff --git a/src/templates/new/tsconfig.template b/src/templates/new/tsconfig.template new file mode 100644 index 0000000..0a6352a --- /dev/null +++ b/src/templates/new/tsconfig.template @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "baseUrl": "./", + "allowJs": true, + "skipLibCheck": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "incremental": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve" + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/src/templates/new/wrapper.template b/src/templates/new/wrapper.template new file mode 100644 index 0000000..b957db4 --- /dev/null +++ b/src/templates/new/wrapper.template @@ -0,0 +1,19 @@ +import { configureStore, ThunkAction } from '@reduxjs/toolkit' +import { Action } from 'redux' +import { createWrapper } from 'next-redux-wrapper' +import { reducer } from 'redux/reducer' + +export function makeStore() { + return configureStore({ reducer }) +} + +export type AppStore = ReturnType +export type AppState = ReturnType +export type AppThunk = ThunkAction< + ReturnType, + AppState, + unknown, + Action +> + +export const wrapper = createWrapper(makeStore) diff --git a/src/templates/page.template b/src/templates/page.template new file mode 100644 index 0000000..1ba2ffc --- /dev/null +++ b/src/templates/page.template @@ -0,0 +1,5 @@ +export interface {{name}}I {} + +export default function {{name}}({}: {{name}}I) { + return

Page {{name}}

+} diff --git a/src/templates/page.url.template b/src/templates/page.url.template new file mode 100644 index 0000000..28a7cee --- /dev/null +++ b/src/templates/page.url.template @@ -0,0 +1,10 @@ +import { useRouter } from 'next/router' + +export interface {{name}}I {} + +export default function {{name}}({}: {{name}}I) { + const router = useRouter() + const { {{url}} } = router.query + + return

Page {{name}}

+} diff --git a/src/templates/slice/reducer.template b/src/templates/slice/reducer.template new file mode 100644 index 0000000..f3518ee --- /dev/null +++ b/src/templates/slice/reducer.template @@ -0,0 +1,5 @@ +{{import}} + +export const reducer = { +{{reducer}} +} diff --git a/src/templates/slice/slice.template b/src/templates/slice/slice.template new file mode 100644 index 0000000..969be17 --- /dev/null +++ b/src/templates/slice/slice.template @@ -0,0 +1,11 @@ +import { createSlice } from '@reduxjs/toolkit' + +export const {{name}}InitialState = {} + +export const {{name}}Slice = createSlice({ + name: '{{name}}', + initialState: {{name}}InitialState, + reducers: {} +}) + +export const {} = {{name}}Slice.actions diff --git a/src/templates/slice/slice.ts b/src/templates/slice/slice.ts new file mode 100644 index 0000000..5a88183 --- /dev/null +++ b/src/templates/slice/slice.ts @@ -0,0 +1,17 @@ +export function SliceTemplate (name: string) { + return `import { createSlice } from "@reduxjs/toolkit"; + +export const ${name}InitialState = { + +} + +export const ${name}Slice = createSlice({ + name: '${name}', + initialState: ${name}InitialState, + reducers: { + + }, +}); + +export const { } = ${name}Slice.actions;` +} diff --git a/src/templates/type.template b/src/templates/type.template new file mode 100644 index 0000000..524710c --- /dev/null +++ b/src/templates/type.template @@ -0,0 +1,5 @@ +export interface {{name}}Type { + +} + +export default {{name}}Type diff --git a/test/.gitkeep b/test/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/test/generators.test.ts b/test/generators.test.ts new file mode 100644 index 0000000..5bc28e2 --- /dev/null +++ b/test/generators.test.ts @@ -0,0 +1,76 @@ +import { inspect, write, remove } from 'fs-jetpack' +import { join } from 'path' + +import { generateNewProject } from '../src/generators/new' +import { generateComponent } from '../src/generators/component' +import { generatePage } from '../src/generators/page' +import { generateSlice } from '../src/generators/slice' +import { generateApi } from '../src/generators/api' + +test('Generator - New Project', async () => { + const path = join('test', 'temporary') + await generateNewProject(path) + + expect(inspect(join(path, '.babelrc'))?.type).toBe('file') + expect(inspect(join(path, '.gitignore'))?.type).toBe('file') + expect(inspect(join(path, '.gitkeep'))?.type).toBe('file') + expect(inspect(join(path, 'package.json'))?.type).toBe('file') + expect(inspect(join(path, 'tsconfig.json'))?.type).toBe('file') + expect(inspect(join(path, 'pages', '_app.tsx'))?.type).toBe('file') + expect(inspect(join(path, 'pages', '_document.tsx'))?.type).toBe('file') + expect(inspect(join(path, 'pages', 'index.tsx'))?.type).toBe('file') + expect(inspect(join(path, 'public', '.gitkeep'))?.type).toBe('file') + expect(inspect(join(path, 'tsconfig.json'))?.type).toBe('file') + expect(inspect(join(path, 'redux', 'wrapper.tsx'))?.type).toBe('file') + expect(inspect(join(path, 'redux', 'reducer.tsx'))?.type).toBe('file') + expect(inspect(join(path, 'redux', 'reducers.json'))?.type).toBe('file') + + remove(path) +}) + +test('Generator - Component', async () => { + const path = join('test', 'temporary') + await generateComponent(path) + expect(inspect(join(`${path}.tsx`))?.type).toBe('file') + + remove(path) +}) + +test('Generator - Page', async () => { + const expectedPath = join(process.cwd(), 'pages', 'test.tsx') + + await generatePage('test') + expect(inspect(expectedPath)?.type).toBe('file') + + remove(join(process.cwd(), 'pages')) +}) + +test('Generator - Page URL', async () => { + const expectedPath = join(process.cwd(), 'pages', '[url].tsx') + + await generatePage('[url]') + expect(inspect(expectedPath)?.type).toBe('file') + + remove(join(process.cwd(), 'pages')) +}) + +test('Generator - API Route', async () => { + const expectedPath = join(process.cwd(), 'pages', 'api', 'test.tsx') + + await generateApi('test') + expect(inspect(expectedPath)?.type).toBe('file') + + remove(join(process.cwd(), 'pages')) +}) + +test('Generator - Slice', async () => { + const reducersPath = join(process.cwd(), 'redux', 'reducers.json') + write(reducersPath, '[]') + + const expectedPath = join(process.cwd(), 'redux', 'slice', 'test.tsx') + + await generateSlice('test') + expect(inspect(expectedPath)?.type).toBe('file') + + remove(join(process.cwd(), 'redux')) +}) diff --git a/test/printer.test.ts b/test/printer.test.ts new file mode 100644 index 0000000..7030d83 --- /dev/null +++ b/test/printer.test.ts @@ -0,0 +1,5 @@ +import { Printer } from '../src/printer' + +test('Printer - Basic sanity check', () => { + expect(typeof Printer.parse).toBe('function') +}) diff --git a/test/temporary.tsx b/test/temporary.tsx new file mode 100644 index 0000000..4c11241 --- /dev/null +++ b/test/temporary.tsx @@ -0,0 +1,11 @@ +export interface TemporaryI {} + +export function TemporaryComponent({}: TemporaryI) { + return ( +
+

Component Temporary

+
+ ) +} + +export default TemporaryComponent diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..76430be --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "outDir": "dist", + "moduleResolution": "node", + "target": "ES5", + "module": "CommonJS", + "lib": ["ESNext"], + "baseUrl": "src", + "sourceMap": true, + "declaration": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "downlevelIteration": true, + "strict": true + }, + "exclude": [ + "node_modules" + ], + "include": [ + "src/**/*.ts", + "src/**/*.template", + "test/**/*.ts" + ] + } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..909f1ae --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4648 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.8": + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz" + integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz" + integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.9" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.18.9", "@babel/generator@^7.7.2": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz" + integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== + dependencies: + "@babel/types" "^7.18.9" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.18.6": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz" + integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz" + integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.1.0" + +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.18.6", "@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== + +"@babel/helper-remap-async-to-generator@^7.18.6": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz" + integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz" + integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-wrap-function@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz" + integrity sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ== + dependencies: + "@babel/helper-function-name" "^7.18.9" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz" + integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + +"@babel/plugin-proposal-async-generator-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz" + integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" + integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz" + integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.18.8" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" + integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz" + integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz" + integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" + integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz" + integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-classes@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz" + integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-destructuring@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz" + integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.18.8": + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz" + integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz" + integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz" + integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-identifier" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz" + integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.18.8": + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz" + integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" + integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + regenerator-transform "^0.15.0" + +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz" + integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typescript@^7.18.6": + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.8.tgz" + integrity sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-typescript" "^7.18.6" + +"@babel/plugin-transform-unicode-escapes@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz" + integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.16.11": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.9.tgz" + integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.18.6" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.6" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.9" + babel-plugin-polyfill-corejs2 "^0.3.1" + babel-plugin-polyfill-corejs3 "^0.5.2" + babel-plugin-polyfill-regenerator "^0.3.1" + core-js-compat "^3.22.1" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.16.7": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-typescript" "^7.18.6" + +"@babel/runtime@^7.8.4": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz" + integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz" + integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.9" + "@babel/types" "^7.18.9" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz" + integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.14" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.1.19" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz" + integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.17.1" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz" + integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/inquirer@^8.2.1": + version "8.2.1" + resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-8.2.1.tgz#28a139be3105a1175e205537e8ac10830e38dbf4" + integrity sha512-wKW3SKIUMmltbykg4I5JzCVzUhkuD9trD6efAmYgN2MrSntY0SMRQzEnD3mkyJ/rv9NLbTC7g3hKKE86YwEDLw== + dependencies: + "@types/through" "*" + rxjs "^7.2.0" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^27.4.0": + version "27.5.2" + resolved "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz" + integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== + dependencies: + jest-matcher-utils "^27.0.0" + pretty-format "^27.0.0" + +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/node@*", "@types/node@^17.0.0": + version "17.0.45" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + +"@types/prettier@^2.1.5": + version "2.6.3" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz" + integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== + +"@types/prompts@^2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@types/prompts/-/prompts-2.0.14.tgz#10cb8899844bb0771cabe57c1becaaaca9a3b521" + integrity sha512-HZBd99fKxRWpYCErtm2/yxUZv6/PBI9J7N4TNFffl5JbrYMHBwF25DjQGTW3b3jmXq+9P6/8fCIb2ee57BFfYA== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/through@*": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" + integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^5.10.1": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.7.tgz" + integrity sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw== + dependencies: + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/type-utils" "5.30.7" + "@typescript-eslint/utils" "5.30.7" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.10.1": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.7.tgz" + integrity sha512-Rg5xwznHWWSy7v2o0cdho6n+xLhK2gntImp0rJroVVFkcYFYQ8C8UJTSuTw/3CnExBmPjycjmUJkxVmjXsld6A== + dependencies: + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/typescript-estree" "5.30.7" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz" + integrity sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw== + dependencies: + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/visitor-keys" "5.30.7" + +"@typescript-eslint/type-utils@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.30.7.tgz" + integrity sha512-nD5qAE2aJX/YLyKMvOU5jvJyku4QN5XBVsoTynFrjQZaDgDV6i7QHFiYCx10wvn7hFvfuqIRNBtsgaLe0DbWhw== + dependencies: + "@typescript-eslint/utils" "5.30.7" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.30.7.tgz" + integrity sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg== + +"@typescript-eslint/typescript-estree@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz" + integrity sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA== + dependencies: + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/visitor-keys" "5.30.7" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.30.7.tgz" + integrity sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/typescript-estree" "5.30.7" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.30.7": + version "5.30.7" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz" + integrity sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw== + dependencies: + "@typescript-eslint/types" "5.30.7" + eslint-visitor-keys "^3.3.0" + +abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4, acorn@^8.4.1: + version "8.8.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.11.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argv@0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz" + integrity sha512-dEamhpPEwRUBpLNHeuCm/v+g0anFByHahxodVO/BbAarHVBBg2MccCwf9K+o1Pof+2btdnkJelYVUWjW/VrATw== + +array-includes@^3.1.4: + version "3.1.5" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.2.5: + version "1.3.0" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-polyfill-corejs2@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" + +babel-plugin-polyfill-regenerator@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserslist@^4.20.2, browserslist@^4.21.2: + version "4.21.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz" + integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA== + dependencies: + caniuse-lite "^1.0.30001366" + electron-to-chromium "^1.4.188" + node-releases "^2.0.6" + update-browserslist-db "^1.0.4" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001366: + version "1.0.30001369" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001369.tgz" + integrity sha512-OY1SBHaodJc4wflDIKnlkdqWzJZd1Ls/2zbVJHBSv3AT7vgOJ58yAhd2CN4d57l2kPJrgMb7P9+N1Mhy4tNSQA== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +ci-info@^3.2.0: + version "3.3.2" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +codecov@^3.8.3: + version "3.8.3" + resolved "https://registry.npmjs.org/codecov/-/codecov-3.8.3.tgz" + integrity sha512-Y8Hw+V3HgR7V71xWH2vQ9lyS358CbGCldWlJFR0JirqoGtOoas3R3/OclRTvgUYFK29mmJICDPauVKmpqbwhOA== + dependencies: + argv "0.0.2" + ignore-walk "3.0.4" + js-yaml "3.14.1" + teeny-request "7.1.1" + urlgrey "1.0.0" + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.23.5" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.5.tgz" + integrity sha512-fHYozIFIxd+91IIbXJgWd/igXIc8Mf9is0fusswjnGIWVG96y2cwyUdlCkGOw6rMLHKAxg7xtCIVaHsyOUnJIg== + dependencies: + browserslist "^4.21.2" + semver "7.0.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decimal.js@^10.2.1: + version "10.3.1" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +electron-to-chromium@^1.4.188: + version "1.4.199" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz" + integrity sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg== + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: + version "1.20.1" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-standard@^16.0.3: + version "16.0.3" + resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz" + integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.7.3: + version "2.7.3" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.25.4: + version "2.26.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" + has "^1.0.3" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-promise@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz" + integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^7.32.0: + version "7.32.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-url-parser@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz" + integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== + dependencies: + punycode "^1.3.2" + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.6" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz" + integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs-jetpack@^4.3.0: + version "4.3.1" + resolved "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-4.3.1.tgz" + integrity sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ== + dependencies: + minimatch "^3.0.2" + rimraf "^2.6.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.6.0, globals@^13.9.0: + version "13.17.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +husky@^7.0.4: + version "7.0.4" + resolved "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz" + integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== + dependencies: + minimatch "^3.0.4" + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.1, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" + +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== + dependencies: + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" + +jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" + +jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.4.7: + version "27.5.1" + resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@3.14.1, js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +node-fetch@^2.6.1: + version "2.6.7" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nwsapi@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz" + integrity sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg== + +object-inspect@^1.12.0, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +pretty-format@^27.0.0, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prompts@^2.0.1, prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpp@^3.0.0, regexpp@^3.1.0, regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz" + integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@^1.10.1, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0: + version "1.22.1" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.2.0: + version "7.5.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" + integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== + dependencies: + tslib "^2.1.0" + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1, semver@^7.3.2, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +source-map-support@^0.5.6: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + +stream-events@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz" + integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== + dependencies: + stubs "^3.0.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +stubs@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz" + integrity sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^6.0.9: + version "6.8.0" + resolved "https://registry.npmjs.org/table/-/table-6.8.0.tgz" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +teeny-request@7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-7.1.1.tgz" + integrity sha512-iwY6rkW5DDGq8hE2YgNQlKbptYpY5Nn2xecjQiNjOXWbKzPGUfmeUBCSQbbr306d7Z7U2N0TPl+/SwYRfua1Dg== + dependencies: + http-proxy-agent "^4.0.0" + https-proxy-agent "^5.0.0" + node-fetch "^2.6.1" + stream-events "^1.0.5" + uuid "^8.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-node@^10.4.0: + version "10.9.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@^4.5.4: + version "4.7.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +update-browserslist-db@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz" + integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urlgrey@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz" + integrity sha512-hJfIzMPJmI9IlLkby8QrsCykQ+SXDeO2W5Q9QTW3QpqZVTx4a/K7p8/5q+/isD8vsbVaFgql/gvAoQCRQ2Cb5w== + dependencies: + fast-url-parser "^1.1.3" + +uuid@^8.0.0: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==