diff --git a/.github/workflows/docs-version.yml b/.github/workflows/docs-version.yml new file mode 100644 index 00000000..fa31f398 --- /dev/null +++ b/.github/workflows/docs-version.yml @@ -0,0 +1,24 @@ +name: "Docs Version Update" + +on: + create: + tags: + - "*" + +jobs: + bump-version-in-docs: + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v2 + name: checkout repo + with: + ref: "refs/heads/master" + + - run: sed -i "s|^\\(git clone.*--branch \\).*$|\\1v$(cat version.txt)|" docs/guide/getting-started.md + name: replace version in docs + + - uses: stefanzweifel/git-auto-commit-action@v4 + name: commit docs version update + with: + commit_message: "docs: update version in install instructions" diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a525e7fe..033284f2 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,24 +1,59 @@ name: Docs on: - create: - tags: - - "*" + # trigger deployment on every push to main branch + push: + paths: + - "docs/**" + branches: + - master + # trigger deployment manually + workflow_dispatch: jobs: - bump-version-in-docs: + docs: runs-on: ubuntu-latest + defaults: + run: + working-directory: docs/ + steps: - - uses: actions/checkout@v2 - name: checkout repo with: - ref: "refs/heads/master" + # fetch all commits to get last updated time or other git log info + fetch-depth: 0 - - run: sed -i "s|^\\(git clone.*--branch \\).*$|\\1v$(cat version.txt)|" docs/core-manage-asdf.md - name: replace version in docs - - - uses: stefanzweifel/git-auto-commit-action@v4 - name: commit docs version update + - name: Setup Node.js + uses: actions/setup-node@v1 with: - commit_message: "docs: update version in install instructions" + node-version: "16" + + - name: Cache dependencies + uses: actions/cache@v2 + id: npm-cache + with: + path: | + **/node_modules + key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-npm- + + - name: Install dependencies + if: steps.npm-cache.outputs.cache-hit != 'true' + run: npm install + + - name: Build VuePress site + run: npm run build + + - name: Bundle CNAME with site dist + run: cp docs/CNAME docs/.vuepress/dist + + - name: Deploy to GitHub Pages + uses: crazy-max/ghaction-github-pages@v2 + with: + # deploy to gh-pages branch + target_branch: gh-pages + # deploy the default output dir of VuePress + build_dir: docs/.vuepress/dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a0316476..d7e3fbd5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,43 +1,39 @@ # How to Contribute to asdf -## Did you find a bug? +There are many ways to contribute to `asdf`, thanks for taking the time to read and help. -**Ensure the bug is actually an issue with asdf and not a plugin.** If the bug -only occurs when using one tool installed by asdf and not others it's likely an -issue with the asdf plugin. Find the plugin repository on -[asdf-vm/asdf-plugins](https://github.com/asdf-vm/asdf-plugins) and follow the -plugin creators instructions for reporting the bug. +## `asdf` Core -**Ensure the bug was not already reported** by searching on GitHub under -[Issues](https://github.com/asdf-vm/asdf/issues). +### Did you find a bug? -If you are unable to find an open issue addressing the problem please [open -a new one](https://github.com/asdf-vm/asdf/issues/new). Please be as specific -as possible when reporting the issue. Include the observed behavior as well as -what you thought should have happened. Please also provide environmental -details like asdf version, shell, OS, etc... +Ensure the bug is actually an issue with asdf and not a plugin. If the bug only occurs when using one tool installed by `asdf` and not others it is likely an issue with the **plugin**. Find the plugin repo URL with `asdf plugin list --urls`, browse their repo Issues and if no solution is found open a new Issue there. -## Did you write a patch that fixes a bug? +Ensure the bug was not already reported in existing [Issues](https://github.com/asdf-vm/asdf/issues). If not, then please [open a new Issue](https://github.com/asdf-vm/asdf/issues/new/choose). Please be as specific as possible when reporting the issue. -Open a new GitHub pull request with the patch. Refer to the [Development -section of the README](http://asdf-vm.github.io/asdf/#/contributing-core-asdf) for the -details on how to run the unit tests. Please make sure that unit tests pass on -Travis CI. +### New Features/Proposals -Pull request must contain changes that add new features, fix bugs, or fix -incorrect documentation. Unsolicited pull requests that only contain formatting -changes like indentation, or line length, or letter case will be rejected. +Please [open a new Feature Request](https://github.com/asdf-vm/asdf/issues/new/choose) to discuss the feature before implementing a solution. -## Did you create a plugin for asdf? +### Developing with the Core -Please read the [creating plugins](docs/plugins-create.md) guide. +See [docs/contribute/core.md](docs/contribute/core.md) or on our [Docs Site](https://asdf-vm.com/contribute/core.html). -## Do you want to contribute the asdf documentation? +## Documentation -Documentation can always be improved! Right now there is just the -[README](README.md) and the [creating plugins](docs/creating-plugins.md) guide. -The [wiki](https://github.com/asdf-vm/asdf/wiki) exists but is in a state of -disrepair. If you see something that can be improved please submit a pull -request or edit the wiki. +Documentation can always be improved! See [docs/contribute/documentation.md](docs/contribute/documentation.md) or on our [Docs Site](https://asdf-vm.com/contribute/documentation.html). + +## First-Party Plugins + +We always need help to maintain our plugins. See [docs/contribute/first-party-plugins.md](docs/contribute/first-party-plugins.md) or on our [Docs Site](https://asdf-vm.com/contribute/first-party-plugins.html). + +## Create a Plugin? + +Please read the [docs/plugins/create.md](docs/plugins/create.md) or on our [Docs Site](https://asdf-vm.com/plugins/create.html). + +## GitHub Action + +See the [asdf actions repo](https://github.com/asdf-vm/actions) for existing Issues, conversations and Contributing Guidelines. + +--- Thanks for contributing! diff --git a/README.md b/README.md index 92fd247b..6c0d21b8 100644 --- a/README.md +++ b/README.md @@ -19,10 +19,10 @@ asdf is a CLI tool that can manage multiple language runtime versions on a per-p [Please head over to the documentation site for more information](https://asdf-vm.github.io/asdf/)! -- [Getting Started](https://asdf-vm.github.io/asdf/#/core-manage-asdf) -- [All Commands](https://asdf-vm.github.io/asdf/#/core-commands) -- [All Plugins](https://asdf-vm.github.io/asdf/#/plugins-all) -- [Create a Plugin](https://asdf-vm.github.io/asdf/#/plugins-create) with our [asdf-plugin-template](https://github.com/asdf-vm/asdf-plugin-template) +- [Getting Started](https://asdf-vm.github.io/asdf/guide/getting-started.html) +- [All Commands](https://asdf-vm.github.io/asdf/manage/commands.html) +- [All Plugins](https://github.com/asdf-vm/asdf-plugins) +- [Create a Plugin](https://asdf-vm.github.io/asdf/plugins/create.html) with our [asdf-plugin-template](https://github.com/asdf-vm/asdf-plugin-template) - [asdf GitHub Actions](https://github.com/asdf-vm/actions) ## Contributing @@ -31,6 +31,45 @@ See [CONTRIBUTING.md in the repo](https://github.com/asdf-vm/asdf/blob/master/CO ## Community & Questions +- [FAQ](https://asdf-vm.github.io/asdf/learn-more/faq.html) - [![GitHub Issues](https://icongr.am/simple/github.svg?color=808080&size=16) GitHub Issues](https://github.com/asdf-vm/asdf/issues): report a bug or raise a feature request to the `asdf` core team - [![GitHub Discussions](https://icongr.am/simple/github.svg?color=808080&size=16) GitHub Discussions](https://github.com/asdf-vm/asdf/discussions): our preferred method for community Q&A and interaction - [![StackOverflow Tag](https://icongr.am/fontawesome/stack-overflow.svg?size=16&color=808080) StackOverflow Tag](https://stackoverflow.com/questions/tagged/asdf-vm): see existing Q&A for `asdf`. Some of the core team watch this tag in addition to our helpful community + +## Ballad of asdf + +> Once upon a time there was a programming language
+> There were many versions of it
+> So people wrote a version manager for it
+> To switch between versions for projects
+> Different, old, new. + +> Then there came more programming languages
+> So there came more version managers
+> And many commands for them + +> I installed a lot of them
+> I learnt a lot of commands + +> Then I said, just one more version manager
+> Which I will write instead + +> So, there came another version manager
+> **asdf version manager** - + +> A version manager so extendable
+> for which anyone can create a plugin
+> To support their favourite language
+> No more installing more version managers
+> Or learning more commands + +--- + +
+
+ This was the mail I wrote to a few friends to tell them about the project. Thanks to @roshanvid for suggesting that this go into the readme +
+
+ @HashNuke +
+
diff --git a/docs/.gitattributes b/docs/.gitattributes new file mode 100644 index 00000000..ada13ce0 --- /dev/null +++ b/docs/.gitattributes @@ -0,0 +1,199 @@ +## GITATTRIBUTES FOR WEB PROJECTS +# +# These settings are for any web project. +# +# Details per file setting: +# text These files should be normalized (i.e. convert CRLF to LF). +# binary These files are binary and should be left untouched. +# +# Note that binary is a macro for -text -diff. +###################################################################### + +# Auto detect +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto + +# Source code +*.bash text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf +*.coffee text +*.css text +*.htm text diff=html +*.html text diff=html +*.inc text +*.ini text +*.js text +*.json text +*.jsx text +*.less text +*.ls text +*.map text -diff +*.od text +*.onlydata text +*.php text diff=php +*.pl text +*.ps1 text eol=crlf +*.py text diff=python +*.rb text diff=ruby +*.sass text +*.scm text +*.scss text diff=css +*.sh text eol=lf +*.sql text +*.styl text +*.tag text +*.ts text +*.tsx text +*.xml text +*.xhtml text diff=html + +# Docker +Dockerfile text + +# Documentation +*.ipynb text +*.markdown text +*.md text +*.mdwn text +*.mdown text +*.mkd text +*.mkdn text +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +*COPYRIGHT* text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +# Templates +*.dot text +*.ejs text +*.haml text +*.handlebars text +*.hbs text +*.hbt text +*.jade text +*.latte text +*.mustache text +*.njk text +*.phtml text +*.tmpl text +*.tpl text +*.twig text +*.vue text + +# Configs +*.cnf text +*.conf text +*.config text +.editorconfig text +.env text +.gitattributes text +.gitconfig text +.htaccess text +*.lock text -diff +package-lock.json text -diff +*.toml text +*.yaml text +*.yml text +browserslist text +Makefile text +makefile text + +# Heroku +Procfile text + +# Graphics +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.gifv binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +# SVG treated as an asset (binary) by default. +*.svg text +# If you want to treat it as binary, +# use the following line instead. +# *.svg binary +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + +# Audio +*.kar binary +*.m4a binary +*.mid binary +*.midi binary +*.mp3 binary +*.ogg binary +*.ra binary + +# Video +*.3gpp binary +*.3gp binary +*.as binary +*.asf binary +*.asx binary +*.fla binary +*.flv binary +*.m4v binary +*.mng binary +*.mov binary +*.mp4 binary +*.mpeg binary +*.mpg binary +*.ogv binary +*.swc binary +*.swf binary +*.webm binary + +# Archives +*.7z binary +*.gz binary +*.jar binary +*.rar binary +*.tar binary +*.zip binary + +# Fonts +*.ttf binary +*.eot binary +*.otf binary +*.woff binary +*.woff2 binary + +# Executables +*.exe binary +*.pyc binary + +# RC files (like .babelrc or .eslintrc) +*.*rc text + +# Ignore files (like .npmignore or .gitignore) +*.*ignore text diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..cdd62105 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,126 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/node +# Edit at https://www.toptal.com/developers/gitignore?templates=node + +### Node ### +# 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 + +# 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 variables file +.env +.env.test +.env.production + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# 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/.cache +.vuepress/.temp + +# 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.* + +# End of https://www.toptal.com/developers/gitignore/api/node diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/.tool-versions b/docs/.tool-versions new file mode 100644 index 00000000..ac02ca90 --- /dev/null +++ b/docs/.tool-versions @@ -0,0 +1 @@ +nodejs 16.4.2 diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js new file mode 100644 index 00000000..108d932b --- /dev/null +++ b/docs/.vuepress/config.js @@ -0,0 +1,55 @@ +const navbar = require("./navbar"); +const sidebar = require("./sidebar"); + +module.exports = { + base: "/", + head: [], + locales: { + "/": { + lang: "en-US", + title: "asdf", + description: "Manage multiple runtime versions with a single CLI tool" + } + // "/pt-BR/": { + // lang: "pt-BR", + // title: "asdf", + // description: "TODO: translate" + // } + }, + + themeConfig: { + // logo: "https://vuejs.org/images/logo.png", + repo: "asdf-vm/asdf", + docsBranch: "master", + docsDir: "docs", + locales: { + "/": { + selectLanguageName: "English", + sidebar: sidebar.en, + navbar: navbar.en + } + // "/pt-BR/": { + // selectLanguageName: "Brazilian Portuguese", + // sidebar: sidebar.pt_br, + // navbar: navbar.pt_br + // } + } + }, + + plugins: [ + [ + "@vuepress/plugin-search", + { + locales: { + "/": { + placeholder: "Search" + } + // "/pt-BR/": { + // placeholder: "Search" + // } + } + } + ], + ["@vuepress/plugin-shiki", { theme: "monokai" }] + ] +}; diff --git a/docs/.vuepress/navbar.js b/docs/.vuepress/navbar.js new file mode 100644 index 00000000..85b4e8e3 --- /dev/null +++ b/docs/.vuepress/navbar.js @@ -0,0 +1,138 @@ +const en = [ + { + text: "Getting Started", + link: "/guide/getting-started.html", + activeMatch: "/guide/" + }, + { + text: "Reference", + children: [ + { + text: "Manage", + children: [ + "/manage/core.md", + "/manage/plugins.md", + "/manage/versions.md", + "/manage/configuration.md", + "/manage/commands.md", + { + text: "Changelog", + link: "https://github.com/asdf-vm/asdf/blob/master/CHANGELOG.md" + } + ] + } + ] + }, + { + text: "Plugins", + children: [ + { + text: "Author", + children: [ + "/plugins/create.md", + { + text: "GitHub Plugin Template", + link: "https://github.com/asdf-vm/asdf-plugin-template" + } + ] + }, + { + text: "First Party Plugins", + children: [ + { + text: "Elixir", + link: "https://github.com/asdf-vm/asdf-elixir" + }, + { + text: "Erlang", + link: "https://github.com/asdf-vm/asdf-erlang" + }, + { + text: "Node.js", + link: "https://github.com/asdf-vm/asdf-nodejs" + }, + { + text: "Ruby", + link: "https://github.com/asdf-vm/asdf-ruby" + } + ] + }, + { + text: "Community Plugins", + children: [ + { + text: "asdf-community", + link: "https://github.com/asdf-community" + }, + { + text: "GitHub Topics Search", + link: "https://github.com/topics/asdf-plugin" + } + ] + }, + { + text: "Reference", + children: [ + { + text: "Plugin Shortname Index", + link: "https://github.com/asdf-vm/asdf-plugins" + } + ] + } + ] + }, + { + text: "Contribute", + children: [ + { + text: "Core", + children: ["/contribute/core.md", "/contribute/documentation.md"] + }, + { + text: "Plugins", + children: ["/contribute/first-party-plugins.md"] + }, + { + text: "CICD", + children: ["/contribute/github-actions.md"] + } + ] + }, + { + text: "Learn More", + children: [ + { + text: "Questions", + children: [ + "/learn-more/faq.md", + { + text: "GitHub Issues", + link: "https://github.com/asdf-vm/asdf/issues" + }, + { + text: "GitHub Discussions", + link: "https://github.com/asdf-vm/asdf/discussions" + }, + { + text: "StackOverflow Tag", + link: "https://stackoverflow.com/questions/tagged/asdf-vm" + } + ] + }, + { + text: "Resources", + children: ["/learn-more/thanks.md"] + } + ] + } +]; + +const pt_br = [ + { + text: "Getting Started", + link: "/pt-BR/guide/getting-started.html", + activeMatch: "/pt-BR/guide/" + } +]; + +module.exports = { en, pt_br }; diff --git a/docs/.vuepress/sidebar.js b/docs/.vuepress/sidebar.js new file mode 100644 index 00000000..0faf5387 --- /dev/null +++ b/docs/.vuepress/sidebar.js @@ -0,0 +1,115 @@ +const en = { + "/guide/": ["/guide/introduction.md", "/guide/getting-started.md"], + "/manage/": [ + { + text: "Manage", + children: [ + "/manage/core.md", + "/manage/plugins.md", + "/manage/versions.md", + "/manage/configuration.md", + "/manage/commands.md", + { + text: "Changelog", + link: "https://github.com/asdf-vm/asdf/blob/master/CHANGELOG.md" + } + ] + } + ], + "/plugins/": [ + { + text: "Author", + children: [ + "/plugins/create.md", + { + text: "GitHub Plugin Template", + link: "https://github.com/asdf-vm/asdf-plugin-template" + } + ] + }, + { + text: "First Party Plugins", + children: [ + { + text: "Elixir", + link: "https://github.com/asdf-vm/asdf-elixir" + }, + { + text: "Erlang", + link: "https://github.com/asdf-vm/asdf-erlang" + }, + { + text: "Node.js", + link: "https://github.com/asdf-vm/asdf-nodejs" + }, + { + text: "Ruby", + link: "https://github.com/asdf-vm/asdf-ruby" + } + ] + }, + { + text: "Community Plugins", + children: [ + { + text: "asdf-community", + link: "https://github.com/asdf-community/" + } + ] + }, + { + text: "Reference", + children: [ + { + text: "Plugin Shortname Index", + link: "https://github.com/asdf-vm/asdf-plugins" + } + ] + } + ], + "/contribute/": [ + { + text: "Contribute", + children: [ + "/contribute/core.md", + "/contribute/documentation.md", + "/contribute/first-party-plugins.md", + "/contribute/github-actions.md" + ] + } + ], + "/learn-more/": [ + { + text: "Questions", + children: [ + "/learn-more/faq.md", + + { + text: "GitHub Issues", + link: "https://github.com/asdf-vm/asdf/issues" + }, + { + text: "GitHub Discussions", + link: "https://github.com/asdf-vm/asdf/discussions" + }, + { + text: "StackOverflow Tag", + link: "https://stackoverflow.com/questions/tagged/asdf-vm" + } + ] + }, + { + text: "Resources", + children: ["/learn-more/thanks.md"] + } + ] +}; + +const pt_br = { + "/pt-BR/guide/": [ + "/pt-BR/guide/introduction.md", + "/pt-BR/guide/getting-started.md" + ] +}; + +module.exports = { en, pt_br }; diff --git a/docs/.vuepress/styles/index.scss b/docs/.vuepress/styles/index.scss new file mode 100644 index 00000000..defb410e --- /dev/null +++ b/docs/.vuepress/styles/index.scss @@ -0,0 +1,17 @@ +:root { + scroll-behavior: smooth; + --c-brand: #b744b8; + --c-brand-light: #a379c9; + // tip container + --c-tip: #0070f3; + --c-tip-bg: #e3eeff; + --c-tip-title: #004bad; + --c-tip-text: #002974; +} + +html.dark { + --c-brand: #b744b8; + --c-brand-light: #a379c9; + // tip container + --c-tip: #31558a; +} diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 2ff35d65..00000000 --- a/docs/README.md +++ /dev/null @@ -1,7 +0,0 @@ - - - -[](https://raw.githubusercontent.com/asdf-vm/asdf/master/README.md ':include') - - -[](https://raw.githubusercontent.com/asdf-vm/asdf/master/ballad-of-asdf.md ':include') \ No newline at end of file diff --git a/docs/_404.md b/docs/_404.md deleted file mode 100644 index 4a4ebe72..00000000 --- a/docs/_404.md +++ /dev/null @@ -1,13 +0,0 @@ -

404

- -
- -Woops! It seems we're lost! :sweat_smile: - -Let's [go home](/) and try again. - -If we end up lost again, [yell out for some help](https://github.com/asdf-vm/asdf/issues/new) :mega: - -If you are here because of a missing section or translation, please [think of contributing](contributing-doc-site) :two_hearts: - -
diff --git a/docs/_coverpage.md b/docs/_coverpage.md deleted file mode 100644 index 460192c7..00000000 --- a/docs/_coverpage.md +++ /dev/null @@ -1,14 +0,0 @@ - - -# asdf - -> Manage multiple runtime versions with a single CLI tool - - - -- Bash, Zsh, Fish -- Node.js, Ruby, Python, Elixir ... [your favourite language?](plugins-all?id=plugin-list) -- Extend with a simple plugin system - -[GitHub](https://github.com/asdf-vm/asdf) -[Get Started](core-manage-asdf) diff --git a/docs/_navbar.md b/docs/_navbar.md deleted file mode 100644 index 5c365614..00000000 --- a/docs/_navbar.md +++ /dev/null @@ -1,4 +0,0 @@ -- Translations - - [:uk: English](/) - - [:brazil: Português](/pt-br/) - - [Add translation](contributing-doc-site?id=translations) diff --git a/docs/_sidebar.md b/docs/_sidebar.md deleted file mode 100644 index 797b7161..00000000 --- a/docs/_sidebar.md +++ /dev/null @@ -1,20 +0,0 @@ - - -- **Core** -- [Manage asdf](core-manage-asdf) -- [Manage Plugins](core-manage-plugins) -- [Manage Versions](core-manage-versions) -- [Configuration](core-configuration) -- [All Commands](core-commands) -- [Changelog](changelog) -- **Plugins** -- [Creating Plugins](plugins-create) -- [All Plugins](plugins-all) -- **Contributing** -- [Core asdf](contributing-core-asdf) -- [Documentation Site](contributing-doc-site) -- [Thanks](thanks) -- **Community & Questions** -- [![GitHub Issues](https://icongr.am/simple/github.svg?color=808080&size=16) GitHub Issues](https://github.com/asdf-vm/asdf/issues) -- [![GitHub Discussions](https://icongr.am/simple/github.svg?color=808080&size=16) GitHub Discussions](https://github.com/asdf-vm/asdf/discussions) -- [![StackOverflow Tag](https://icongr.am/fontawesome/stack-overflow.svg?size=16&color=808080) StackOverflow Tag](https://stackoverflow.com/questions/tagged/asdf-vm) diff --git a/docs/contribute/core.md b/docs/contribute/core.md new file mode 100644 index 00000000..d22457ed --- /dev/null +++ b/docs/contribute/core.md @@ -0,0 +1,113 @@ +# asdf + +`asdf` core contribution guide. + +## Initial Setup + +Fork `asdf` on GitHub and/or Git clone the default branch: + +```shell:no-line-numbers +# clone your fork +git clone https://github.com//asdf.git +# or clone asdf +git clone https://github.com/asdf-vm/asdf.git +``` + +The tools for core development are in this repo's `.tool-versions`. If you wish to manage with `asdf` itself, add the plugins: + +```shell:no-line-numbers +asdf plugin add bats https://github.com/timgluz/asdf-bats.git +asdf plugin add shellcheck https://github.com/luizm/asdf-shellcheck.git +asdf plugin add shfmt https://github.com/luizm/asdf-shfmt.git +``` + +Install the versions to develop `asdf` with: + +```shell:no-line-numbers +asdf install +``` + +It *may* be useful to not use `asdf` to manage the tools during development on your local machine as you may need to break functionality which would then break your dev tooling. Here's the raw list of tools: + +- [bats-core](https://github.com/bats-core/bats-core): Bash Automated Testing System, for unit testing Bash or POSIX compliant scripts. +- [shellcheck](https://github.com/koalaman/shellcheck): Static analysis tool for shell scripts. +- [shfmt](https://github.com/mvdan/sh): A shell parser, formatter, and interpreter with bash support; includes shfmt + +## Development + +If you want to try out your changes without making change to your installed `asdf`, you can set the `$ASDF_DIR` variable to the path where you cloned the repository, and temporarily prepend the `bin` and `shims` directory of the directory to your path. + +It is best to format, lint and test your code locally before you commit or push to the remote. Use the following scripts/commands: + +```shell:no-line-numbers +# Shellcheck +./scripts/shellcheck.bash + +# Format +./scripts/shfmt.bash + +# Test: all tests +bats test/ +# Test: for specific command +bats test/list_commands.bash +``` + +::: tip + +**Add tests!** - Tests are **required** for new features and speed up review of bug fixes. Please cover new code paths before you create a Pull Request. See [bats-core documentation](https://bats-core.readthedocs.io/en/stable/index.html) + +::: + +## Bats Testing + +It is **strongly encouraged** to examine the existing test suite and the [bats-core documentation](https://bats-core.readthedocs.io/en/stable/index.html) before writing tests. + +Bats debugging can be difficult at times. Using the TAP output with `-t` flag will enable you to print outputs with the special file descriptor `>&3` during test execution, simplifying debugging. As an example: + +```shell +# test/some_tests.bats + +printf "%s\n" "Will not be printed during bats test/some_tests.bats" +printf "%s\n" "Will be printed during bats -t test/some_tests.bats" >&3 +``` + +This is further documented in bats-core [Printing to the Terminal](https://bats-core.readthedocs.io/en/stable/writing-tests.html#printing-to-the-terminal). + +## Pull Requests, Releases & Conventional Commits + +`asdf` is using an automated release tool called [Release Please](https://github.com/googleapis/release-please) to automatically bump the [SemVer](https://semver.org/) version and generate the [Changelog](https://github.com/asdf-vm/asdf/blob/master/CHANGELOG.md). This information is determined by reading the commit history since the last release. + +[Conventional Commit messages](https://www.conventionalcommits.org/) define the format of the Pull Request Title which becomes the commit message format on the default branch. This is enforced with GitHub Action [`amannn/action-semantic-pull-request`](https://github.com/amannn/action-semantic-pull-request). + +Conventional Commit follows this format: + +```:no-line-numbers +[optional scope][optional !]: + + +fix: some fix +feat: a new feature +docs: some documentation update +docs(website): some change for the website +feat!: feature with breaking change +``` + +The full list of `` are: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`. + +The `!` indicates a breaking change. + +`fix`: will create a new SemVer `patch` +`feat`: will create a new SemVer `minor` +`!`: will create a new SemVer `major` + +The Pull Request Title must follow this format. + +::: tip + +Use Conventional Commit message format for your Pull Request Title. + +::: + +## Docker Images + +The [asdf-alpine](https://github.com/vic/asdf-alpine) and [asdf-ubuntu](https://github.com/vic/asdf-ubuntu) projects are an ongoing effort to provide Dockerized images of some asdf tools. You can use these docker images as base for your development servers, or for running your production apps. diff --git a/docs/contribute/documentation.md b/docs/contribute/documentation.md new file mode 100644 index 00000000..d42e7a13 --- /dev/null +++ b/docs/contribute/documentation.md @@ -0,0 +1,119 @@ +# Docs & Site + +Documentation & site contribution guide. + +## Initial Setup + +Fork `asdf` on GitHub and/or Git clone the default branch: + +```shell:no-line-numbers +# clone your fork +git clone https://github.com//asdf.git +# or clone asdf +git clone https://github.com/asdf-vm/asdf.git +``` + +The tools for Docs site development are managed with `asdf` in the `docs/.tool-versions`. Add the plugins with: + +```shell:no-line-numbers +asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs +``` + +Install the tool version(s) with: + +```shell:no-line-numbers +asdf install +``` + +- [Node.js](https://nodejs.org): JavaScript runtime built on Chrome's V8 JavaScript engine. + +Install Node.js dependencies from `docs/package.json`: + +```shell:no-line-numbers +npm install +``` + +## Development + +[Vuepress (v2)](https://v2.vuepress.vuejs.org/) is the Static Site Generator (SSG) we use to build the asdf documentation site. It was chosen to replace [Docsify.js](https://docsify.js.org/) as we would like to support an HTML only fallback when users do not have JavaScript available or enabled. This was not possible with Docsify. Other than this, the feature-set is largely the same, with the focus on writing Markdown files with minimal configuration. + +`package.json` contains the scripts required for development: + +@[code json{3-5}](../package.json) + +To start the local development server: + +```shell:no-line-numbers +npm run dev +``` + +Format the code before committing: + +```shell:no-line-numbers +npm run format +``` + +## Pull Requests, Releases & Conventional Commits + +`asdf` is using an automated release pipeline which relies on Conventional Commits in PR titles. Detailed documentation found in the [core contribution guide](./core.md). + +When creating a PR for documentation changes please make the PR title with the Conventional Commit type `docs` in the format `docs: `. + +## Vuepress + +Configuration of the site is contained within a few JavaScript files with JS Objects used to represent the config. They are: + +- `docs/.vuepress/config.js`: the root config file for the site. Read the [Vuepress documentation](https://v2.vuepress.vuejs.org/guide/configuration.html#config-file) for it's spec. + +To simplify the root config, the larger JS Objects representing the _navbar_ and _sidebar_ configuration have been extracted and separated by their locale. See both in: + +- `docs/.vuepress/navbar.js` +- `docs/.vuepress/sidebar.js` + +With the official documentation for these configs living in the [Default Theme Reference](https://v2.vuepress.vuejs.org/reference/default-theme/config.html#locale-config). + +## I18n + +Vuepress has first-class support for internationalization. The +root config `docs/.vuepress/config.js` defines the supported locales with their URL, title in the selection dropdown menu and navbar/sidebar configs references. + +The navbar/sidebar configs are captured in the aforementioned config files, separated by locale and exported individually. + +The markdown content for each locale must fall under a folder with the same name as the keys for `locales` in the root config. That is: + +```js +{ + ... + themeConfig: { + locales: { + "/": { + selectLanguageName: "English (US)", + sidebar: sidebar.en, + navbar: navbar.en + }, + "/pt-BR/": { + selectLanguageName: "Brazilian Portuguese", + sidebar: sidebar.pt_br, + navbar: navbar.pt_br + } + } + } +} +``` + +`/pt-BR/` will require the same set of markdown files located under `docs/pt-BR/`, like so: + +```shell:no-line-numbers +docs +├─ README.md +├─ foo.md +├─ nested +│ └─ README.md +└─ pt-BR + ├─ README.md + ├─ foo.md + └─ nested + └─ README.md +``` + +The [official Vuepress i18n documentation](https://v2.vuepress.vuejs.org/guide/i18n.html#site-i18n-config) goes into more detail. diff --git a/docs/contribute/first-party-plugins.md b/docs/contribute/first-party-plugins.md new file mode 100644 index 00000000..b34c1a04 --- /dev/null +++ b/docs/contribute/first-party-plugins.md @@ -0,0 +1,14 @@ +# First-Party Plugins + +The asdf core team has authored some plugins relevant to their daily work life. Help is always welcome in maintaining and improving these plugins. See the associated repo for each linked below: + +- [Elixir](https://github.com/asdf-vm/asdf-elixir) +- [Erlang](https://github.com/asdf-vm/asdf-erlang) +- [Node.js](https://github.com/asdf-vm/asdf-nodejs) +- [Ruby](https://github.com/asdf-vm/asdf-ruby) + +For community plugins, see: + +- [`asdf-community` organisation](https://github.com/asdf-community): A collaborative, community-driven project for long-term maintenance of `asdf` plugins. +- [`asdf-plugins` shortname repo](https://github.com/asdf-vm/asdf-plugins): Short-name list used by `asdf` core to lookup popular `asdf` plugins. +- [GitHub `asdf-plugin` topic search](https://github.com/topics/asdf-plugin) diff --git a/docs/contribute/github-actions.md b/docs/contribute/github-actions.md new file mode 100644 index 00000000..051ab736 --- /dev/null +++ b/docs/contribute/github-actions.md @@ -0,0 +1,3 @@ +# GitHub Actions + +Thanks for your interest, please see the [asdf actions repo](https://github.com/asdf-vm/actions) for their existing Issues, conversations and Contributing Guidelines. diff --git a/docs/contributing-core-asdf.md b/docs/contributing-core-asdf.md deleted file mode 100644 index 3655c015..00000000 --- a/docs/contributing-core-asdf.md +++ /dev/null @@ -1,21 +0,0 @@ -## Development - -To develop the project, simply `git clone` the master branch. - -If you want to try out your changes without making change to your installed `asdf`, you can set the `$ASDF_DIR` variable to the path where you cloned the repository, and temporarily prepend the `bin` and `shims` directory of the directory to your path. - -Tools we use: - -- [bats](https://github.com/bats-core/bats-core) for testing. Make sure - `bats test/` passes after you made your changes. -- [Shellcheck](https://github.com/koalaman/shellcheck) for static analysis of our shell scripts. - -## Docker Images - -The [asdf-alpine][asdf-alpine] and [asdf-ubuntu][asdf-ubuntu] projects are an -ongoing effort to provide Dockerized images of some asdf tools. You can use -these docker images as base for your development servers, or for running your -production apps. - -[asdf-alpine]: https://github.com/vic/asdf-alpine -[asdf-ubuntu]: https://github.com/vic/asdf-ubuntu diff --git a/docs/contributing-doc-site.md b/docs/contributing-doc-site.md deleted file mode 100644 index 9ad8788d..00000000 --- a/docs/contributing-doc-site.md +++ /dev/null @@ -1,69 +0,0 @@ -## Improvements - -Here is a list of improvements we are looking at making to the documentation. If you wish to contribute, try something out here: - -- customise the docsify theme -- cover-page background image -- cover-page/readme gif of a terminal using asdf showing it's features (automatic version switching, .tool-versions with multiple runtime configs) -- custom doc site domain -- change the typography -- get a logo? -- improve "edit on GitHub" button/link -- add asdf to awesome-docsify showcase - -## Setup Your Environment - -We're using: - -- [Node.js](https://github.com/asdf-vm/asdf-nodejs) `v10.15.0` to support the other required tools -- [docsify](https://docsify.js.org/#/) to create our documentation site -- [prettier](https://prettier.io/) to format our markdown files - -### Install Dependencies - -We are trying to **avoid polluting** the core repo with tooling for this documentation site. As such, it would be great if you could install these development tools **globally** so we don't need to commit them to this project. - -```shell -npm i docsify-cli prettier -g -``` - -## Serve the Site - -From the root of this repo run: - -```shell -docsify serve docs -``` - -## Format before Committing - -From the root of this repo run: - -```shell -prettier --write "docs/**/*.md" -``` - -## Translations - -It would be great to provide translations for other languages. - -Docsify makes adding new languages quite easy. Look in `docs/index.html` for commented out `zh-cn` examples. - -### Adding a new Translation - -1. create a folder in `docs/` for the new translation - ``` - docs/ - docs/zh-cn/ - ``` -2. copy file from root `docs/_404.md` to new folder `docs/zh-cn/_404.md` - ``` - docs/_404.md - docs/zh-cn/_404.md - ``` -3. replace text with translated text. -4. repeat for all files. -5. add a link to the new translation in `_navbar.md`. -6. run `prettier` before committing. - -For more information, see the [Configuration](https://docsify.js.org/#/configuration) docsify docs, the [Custom navbar](https://docsify.js.org/#/custom-navbar) docsify docs, and have a look at their own `index.html`'s [search section](https://github.com/docsifyjs/docsify/blob/6ac7bace213145cb655e9a5e9e209384db08e5f9/docs/index.html#L48). diff --git a/docs/core-commands.md b/docs/core-commands.md deleted file mode 100644 index d8ec8394..00000000 --- a/docs/core-commands.md +++ /dev/null @@ -1,9 +0,0 @@ - - -`asdf` or `asdf help` will list all available commands for your current asdf version. - -[](https://raw.githubusercontent.com/asdf-vm/asdf/master/help.txt ':include') diff --git a/docs/core-manage-asdf.md b/docs/core-manage-asdf.md deleted file mode 100644 index 27fa93e4..00000000 --- a/docs/core-manage-asdf.md +++ /dev/null @@ -1,630 +0,0 @@ -1. [Manage asdf](/core-manage-asdf): install `asdf` **and** add `asdf` to your shell -2. [Manage Plugins](/core-manage-plugins): add a plugin for your tool `asdf plugin add nodejs` -3. [Manage Versions](/core-manage-versions): install a version of that tool `asdf install nodejs 13.14.0` -4. [Configuration](/core-configuration): set global and project tool versions via `.tool-versions` config - -## Install - -### Dependencies - - - - -#### -- Linux,Aptitude -- - -```shell -sudo apt install curl git -``` - -#### -- Linux,DNF -- - -```shell -sudo dnf install curl git -``` - -#### -- Linux,Pacman -- - -```shell -sudo pacman -S curl git -``` - -#### -- Linux,Zypper -- - -```shell -sudo zypper install curl git -``` - -#### -- macOS,Homebrew -- - -Dependencies will be automatically installed by Homebrew. - -#### -- macOS,Spack -- - -```shell -spack install coreutils curl git -``` - -### -- Docsify Select Default -- - -No match for _Operating System_ and _Installation Method_ selections. Please try another combination. - - - -### asdf - - - - -### --Git-- - -Clone only the latest branch: - -```shell -git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.1 -``` - -Alternately, you can clone the whole repo and checkout the latest branch: - -```shell -git clone https://github.com/asdf-vm/asdf.git ~/.asdf -git -C ~/.asdf checkout "$(git -C ~/.asdf describe --abbrev=0 --tags)" -``` - -### --Homebrew-- - -!> See `asdf` and Homebrew compatibility [issues in #785](https://github.com/asdf-vm/asdf/issues/785) before continuing. - -Install using the Homebrew package manager: - -```shell -brew install asdf -``` - -To use the latest changes, you can point Homebrew to the master branch of the repo: - -```shell -brew install asdf --HEAD -``` - -### --Pacman-- - -Install using `pacman`: - -```shell -git clone https://aur.archlinux.org/asdf-vm.git -cd asdf-vm -makepkg -si -``` - -Or use your preferred [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers) - - - -### Add to your Shell - - - - -#### --Linux,Bash,Git-- - -Add the following to `~/.bashrc`: - -```shell -. $HOME/.asdf/asdf.sh -``` - -?> Completions must be configured by adding the following to your `.bashrc`: - -```shell -. $HOME/.asdf/completions/asdf.bash -``` - -#### --Linux,Fish,Git-- - -Add the following to `~/.config/fish/config.fish`: - -```shell -source ~/.asdf/asdf.fish -``` - -?> Completions must be configured manually with the following command: - -```shell -mkdir -p ~/.config/fish/completions; and ln -s ~/.asdf/completions/asdf.fish ~/.config/fish/completions -``` - -#### --Linux,ZSH,Git-- - -Add the following to `~/.zshrc`: - -```shell -. $HOME/.asdf/asdf.sh -``` - -**OR** use a ZSH Framework plugin like [asdf for oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/asdf) which will source this script and setup completions. - -?> Completions are configured by either a ZSH Framework `asdf` plugin or by adding the following to your `.zshrc`: - -```shell -# append completions to fpath -fpath=(${ASDF_DIR}/completions $fpath) -# initialise completions with ZSH's compinit -autoload -Uz compinit -compinit -``` - -- if you are using a custom `compinit` setup, ensure `compinit` is below your sourcing of `asdf.sh` -- if you are using a custom `compinit` setup with a ZSH Framework, ensure `compinit` is below your sourcing of the framework - -!> if you are using a ZSH Framework the associated `asdf` plugin may need to be updated to use the new ZSH completions properly via `fpath`. The Oh-My-ZSH asdf plugin is yet to be updated, see https://github.com/ohmyzsh/ohmyzsh/pull/8837. - -#### --Linux,Bash,Pacman-- - -Add the following to `~/.bashrc`: - -```shell -. /opt/asdf-vm/asdf.sh -``` - -?> [`bash-completion` needs to be installed for the completions to work](https://wiki.archlinux.org/title/bash#Common_programs_and_options) - -#### --Linux,Fish,Pacman-- - -Add the following to `~/.config/fish/config.fish`: - -```shell -source /opt/asdf-vm/asdf.fish -``` - -!> Completions are automatically configured on installation by the AUR package. - -#### --Linux,ZSH,Pacman-- - -Add the following to `~/.zshrc`: - -```shell -. /opt/asdf-vm/asdf.sh -``` - -?> Completions are placed in a ZSH friendly location, but [ZSH must be configured to use the autocompletions](https://wiki.archlinux.org/index.php/zsh#Command_completion). - -#### --macOS,Bash,Git-- - -If using **macOS Catalina or newer**, the default shell has changed to **ZSH**. Unless changing back to Bash, follow the ZSH instructions. - -Add the following to `~/.bash_profile`: - -```shell -. $HOME/.asdf/asdf.sh -``` - -?> Completions must be configured manually with the following entry in your `.bash_profile`: - -```shell -. $HOME/.asdf/completions/asdf.bash -``` - -#### --macOS,Fish,Git-- - -Add the following to `~/.config/fish/config.fish`: - -```shell -source ~/.asdf/asdf.fish -``` - -?> Completions must be configured manually with the following command: - -```shell -mkdir -p ~/.config/fish/completions; and cp ~/.asdf/completions/asdf.fish ~/.config/fish/completions -``` - -#### --macOS,ZSH,Git-- - -Add the following to `~/.zshrc`: - -```shell -. $HOME/.asdf/asdf.sh -``` - -**OR** use a ZSH Framework plugin like [asdf for oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/asdf) which will source this script and setup completions. - -?> Completions are configured by either a ZSH Framework `asdf` plugin or by adding the following to your `.zshrc`: - -```shell -# append completions to fpath -fpath=(${ASDF_DIR}/completions $fpath) -# initialise completions with ZSH's compinit -autoload -Uz compinit -compinit -``` - -- if you are using a custom `compinit` setup, ensure `compinit` is below your sourcing of `asdf.sh` -- if you are using a custom `compinit` setup with a ZSH Framework, ensure `compinit` is below your sourcing of the framework - -!> if you are using a ZSH Framework the associated `asdf` plugin may need to be updated to use the new ZSH completions properly via `fpath`. The Oh-My-ZSH asdf plugin is yet to be updated, see https://github.com/ohmyzsh/ohmyzsh/pull/8837. - -#### --macOS,Bash,Homebrew-- - -If using **macOS Catalina or newer**, the default shell has changed to **ZSH**. Unless changing back to Bash, follow the ZSH instructions. - -Add `asdf.sh` to your `~/.bash_profile` with: - -```shell -echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ~/.bash_profile -``` - -?> Completions will need to be [configured as per Homebrew's instructions](https://docs.brew.sh/Shell-Completion#configuring-completions-in-bash) or with the following: - -```shell -echo -e "\n. $(brew --prefix asdf)/etc/bash_completion.d/asdf.bash" >> ~/.bash_profile -``` - -#### --macOS,Fish,Homebrew-- - -Add `asdf.fish` to your `~/.config/fish/config.fish` with: - -```shell -echo -e "\nsource "(brew --prefix asdf)"/asdf.fish" >> ~/.config/fish/config.fish -``` - -?> Completions are [handled by Homebrew for the Fish shell](https://docs.brew.sh/Shell-Completion#configuring-completions-in-fish). Friendly! - -#### --macOS,ZSH,Homebrew-- - -Add `asdf.sh` to your `~/.zshrc` with: - -```shell -echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc -``` - -**OR** use a ZSH Framework plugin like [asdf for oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/asdf) which will source this script and setup completions. - -?> Completions are configured by either a ZSH Framework `asdf` or will need to be [configured as per Homebrew's instructions](https://docs.brew.sh/Shell-Completion#configuring-completions-in-zsh). If you are using a ZSH Framework the associated asdf plugin may need to be updated to use the new ZSH completions properly via fpath. The Oh-My-ZSH asdf plugin is yet to be updated, see [ohmyzsh/ohmyzsh#8837](https://github.com/ohmyzsh/ohmyzsh/pull/8837). - -### --Docsify Select Default-- - -!> The `Homebrew` `asdf` Formulae has not been tested on `Linux` by the core asdf team. Please raise an issue if this has changed and we will update the docs. - - - -Restart your shell so that PATH changes take effect. (Opening a new terminal -tab will usually do it.) - -You are ready to use asdf 🎉 - -### Having Issues? - -If you're having issues with your shell not detecting newly installed shims, it's most-likely due to the sourcing of `asdf.sh` or `asdf.fish` not being at the **BOTTOM** of your `.bash_profile`, `.zshrc`, `config.fish` config file. It needs to be sourced **AFTER** you have set your `$PATH` and **AFTER** you have sourced your framework (oh-my-zsh etc). - -### Migrating Tools - -If you're migrating from other tools and want to use your existing version files (eg: `.node-version` or `.ruby-version`), look at the `legacy_version_file` [flag in the configuration section](core-configuration?id=homeasdfrc). - -## Update - - - - -### -- Git -- - -```shell -asdf update -``` - -If you want the latest changes that aren't yet included in a stable release: - -```shell -asdf update --head -``` - -### -- Homebrew -- - -```shell -brew upgrade asdf -``` - -### -- Pacman -- - -Manually download a new `PKGBUILD` and rebuild or use your preferred AUR helper. - - - -## Remove - -To uninstall `asdf` follow these steps: - - - - -### --Linux,Bash,Git-- - -1. In your `~/.bashrc` remove the lines that source `asdf.sh` and the completions: - -```shell -. $HOME/.asdf/asdf.sh -. $HOME/.asdf/completions/asdf.bash -``` - -2. Remove the `$HOME/.asdf` dir: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --Linux,Fish,Git-- - -1. In your `~/.config/fish/config.fish` remove the lines that source `asdf.sh`: - -```shell -source ~/.asdf/asdf.fish -``` - -and remove completions with this command: - -```shell -rm -rf ~/.config/fish/completions/asdf.fish -``` - -2. Remove the `$HOME/.asdf` dir: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --Linux,ZSH,Git-- - -1. In your `~/.zshrc` remove the lines that source `asdf.sh` and completions: - -```shell -. $HOME/.asdf/asdf.sh -# ... -fpath=(${ASDF_DIR}/completions $fpath) -autoload -Uz compinit -compinit -``` - -**OR** the ZSH Framework plugin if used. - -2. Remove the `$HOME/.asdf` dir: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --Linux,Bash,Pacman-- - -1. In your `~/.bashrc` remove the lines that source `asdf.sh` and the completions: - -```shell -. /opt/asdf-vm/asdf.sh -``` - -2. Uninstall with your package manager: - -```shell -pacman -Rs asdf-vm -``` - -3. Remove the `$HOME/.asdf` dir: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -4. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --Linux,Fish,Pacman-- - -1. In your `~/.config/fish/config.fish` remove the lines that source `asdf.fish`: - -```shell -source /opt/asdf-vm/asdf.fish -``` - -2. Uninstall with your package manager: - -```shell -pacman -Rs asdf-vm -``` - -3. Remove the `$HOME/.asdf` dir: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -4. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --Linux,ZSH,Pacman-- - -1. In your `~/.zshrc` remove the lines that source `asdf.sh`: - -```shell -. /opt/asdf-vm/asdf.sh -``` - -2. Uninstall with your package manager: - -```shell -pacman -Rs asdf-vm -``` - -3. Remove the `$HOME/.asdf` dir: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -4. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,Bash,Git-- - -1. In your `~/.bash_profile` remove the lines that source `asdf.sh` and the completions: - -```shell -. $HOME/.asdf/asdf.sh -. $HOME/.asdf/completions/asdf.bash -``` - -2. Remove the `$HOME/.asdf` dir: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,Fish,Git-- - -1. In your `~/.config/fish/config.fish` remove the lines that source `asdf.fish`: - -```shell -source ~/.asdf/asdf.fish -``` - -and remove completions with this command: - -```shell -rm -rf ~/.config/fish/completions/asdf.fish -``` - -2. Remove the `$HOME/.asdf` dir: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,ZSH,Git-- - -1. In your `~/.zshrc` remove the lines that source `asdf.sh` and completions: - -```shell -. $HOME/.asdf/asdf.sh -# ... -fpath=(${ASDF_DIR}/completions $fpath) -autoload -Uz compinit -compinit -``` - -**OR** the ZSH Framework plugin if used. - -2. Remove the `$HOME/.asdf` dir: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,Bash,Homebrew-- - -If using **macOS Catalina or newer**, the default shell has changed to **ZSH**. If you can't find any config in your `~/.bash_profile` it may be in a `~/.zshrc` in which case please follow the ZSH instructions. - -1. In your `~/.bash_profile` remove the lines that source `asdf.sh` and the completions: - -```shell -. $(brew --prefix asdf)/asdf.sh -. $(brew --prefix asdf)/etc/bash_completion.d/asdf.bash -``` - -?> Completions may have been [configured as per Homebrew's instructions](https://docs.brew.sh/Shell-Completion#configuring-completions-in-bash) so follow their guide to find out what to remove. - -2. Uninstall with your package manager: - -```shell -brew uninstall asdf --force -``` - -3. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,Fish,Homebrew-- - -1. In your `~/.config/fish/config.fish` remove the lines that source `asdf.fish`: - -```shell -source "(brew --prefix asdf)"/asdf.fish -``` - -2. Uninstall with your package manager: - -```shell -brew uninstall asdf --force -``` - -3. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,ZSH,Homebrew-- - -1. In your `~/.zshrc` remove the lines that source `asdf.sh`: - -```shell -. $(brew --prefix asdf)/asdf.sh -``` - -2. Uninstall with your package manager: - -```shell -brew uninstall asdf --force && brew autoremove -``` - -3. Run this command to remove all `asdf` config files: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - - - -That's it! 🎉 diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md new file mode 100644 index 00000000..6fea3e96 --- /dev/null +++ b/docs/guide/getting-started.md @@ -0,0 +1,295 @@ +# Getting Started + +`asdf` installation involves: + +1. Installing dependencies +2. Installing `asdf` core +3. Adding `asdf` to your shell +4. install a plugin for each tool/runtime you wish to manage +5. install a version of the tool/runtime +6. set global and project versions via `.tool-versions` config files + +## 1. Install Dependencies + +**Linux**: + +| Package Manager | Command | +| --------------- | ------------------------------ | +| Aptitude | `sudo apt install curl git` | +| DNF | `sudo dnf install curl git` | +| Pacman | `sudo pacman -S curl git` | +| Zypper | `sudo zypper install curl git` | + +**macOS**: + +| Package Manager | Command | +| --------------- | --------------------------------------------------------- | +| Homebrew | Dependencies will be automatically installed by Homebrew. | +| Spack | `spack install coreutils curl git` | + +## 2. Install asdf + +We recommend installing via Git, though there are other platform specific methods: + +| Method | Command | +| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Git | `git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.1` | +| Homebrew | `brew install asdf` | +| Pacman | `git clone https://aur.archlinux.org/asdf-vm.git && cd asdf-vm && makepkg -si` or use your preferred [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers) | + +## 3. Add to your Shell + +There are many different combinations of Shells, OSs & Installation methods all of which affect the configuration here. Expand the selection below that best matches your system: + +::: details Bash & Git + +Add the following to `~/.bashrc`: + +```shell +. $HOME/.asdf/asdf.sh +``` + +Completions must be configured by adding the following to your `.bashrc`: + +```shell +. $HOME/.asdf/completions/asdf.bash +``` + +::: + +::: details Bash & Git (macOS) + +If using **macOS Catalina or newer**, the default shell has changed to **ZSH**. Unless changing back to Bash, follow the ZSH instructions. + +Add the following to `~/.bash_profile`: + +```shell +. $HOME/.asdf/asdf.sh +``` + +Completions must be configured manually with the following entry in your `.bash_profile`: + +```shell +. $HOME/.asdf/completions/asdf.bash +``` + +::: + +::: details Bash & Homebrew (macOS) + +If using **macOS Catalina or newer**, the default shell has changed to **ZSH**. Unless changing back to Bash, follow the ZSH instructions. + +Add `asdf.sh` to your `~/.bash_profile` with: + +```shell:no-line-numbers +echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ~/.bash_profile +``` + +Completions will need to be [configured as per Homebrew's instructions](https://docs.brew.sh/Shell-Completion#configuring-completions-in-bash) or with the following: + +```shell:no-line-numbers +echo -e "\n. $(brew --prefix asdf)/etc/bash_completion.d/asdf.bash" >> ~/.bash_profile +``` + +::: + +::: details Bash & Pacman + +Add the following to `~/.bashrc`: + +```shell +. /opt/asdf-vm/asdf.sh +``` + +[`bash-completion`](https://wiki.archlinux.org/title/bash#Common_programs_and_options) needs to be installed for the completions to work. +::: + +::: details Fish & Git + +Add the following to `~/.config/fish/config.fish`: + +```shell +source ~/.asdf/asdf.fish +``` + +Completions must be configured manually with the following command: + +```shell:no-line-numbers +mkdir -p ~/.config/fish/completions; and ln -s ~/.asdf/completions/asdf.fish ~/.config/fish/completions +``` + +::: + +::: details Fish & Homebrew + +Add `asdf.fish` to your `~/.config/fish/config.fish` with: + +```shell:no-line-numbers +echo -e "\nsource "(brew --prefix asdf)"/asdf.fish" >> ~/.config/fish/config.fish +``` + +Completions are [handled by Homebrew for the Fish shell](https://docs.brew.sh/Shell-Completion#configuring-completions-in-fish). Friendly! +::: + +::: details Fish & Pacman + +Add the following to `~/.config/fish/config.fish`: + +```shell +source /opt/asdf-vm/asdf.fish +``` + +Completions are automatically configured on installation by the AUR package. +::: + +::: details ZSH & Git + +Add the following to `~/.zshrc`: + +```shell +. $HOME/.asdf/asdf.sh +``` + +**OR** use a ZSH Framework plugin like [asdf for oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/asdf) which will source this script and setup completions. + +Completions are configured by either a ZSH Framework `asdf` plugin or by adding the following to your `.zshrc`: + +```shell +# append completions to fpath +fpath=(${ASDF_DIR}/completions $fpath) +# initialise completions with ZSH's compinit +autoload -Uz compinit && compinit +``` + +- if you are using a custom `compinit` setup, ensure `compinit` is below your sourcing of `asdf.sh` +- if you are using a custom `compinit` setup with a ZSH Framework, ensure `compinit` is below your sourcing of the framework + +**Warning** + +If you are using a ZSH Framework the associated `asdf` plugin may need to be updated to use the new ZSH completions properly via `fpath`. The Oh-My-ZSH asdf plugin is yet to be updated, see [ohmyzsh/ohmyzsh#8837](https://github.com/ohmyzsh/ohmyzsh/pull/8837). +::: + +::: details ZSH & Homebrew + +Add `asdf.sh` to your `~/.zshrc` with: + +```shell +echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc +``` + +**OR** use a ZSH Framework plugin like [asdf for oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/asdf) which will source this script and setup completions. + +Completions are configured by either a ZSH Framework `asdf` or will need to be [configured as per Homebrew's instructions](https://docs.brew.sh/Shell-Completion#configuring-completions-in-zsh). If you are using a ZSH Framework the associated plugin for asdf may need to be updated to use the new ZSH completions properly via `fpath`. The Oh-My-ZSH asdf plugin is yet to be updated, see [ohmyzsh/ohmyzsh#8837](https://github.com/ohmyzsh/ohmyzsh/pull/8837). +::: + +::: details ZSH & Pacman + +Add the following to `~/.zshrc`: + +```shell +. /opt/asdf-vm/asdf.sh +``` + +Completions are placed in a ZSH friendly location, but [ZSH must be configured to use the autocompletions](https://wiki.archlinux.org/index.php/zsh#Command_completion). +::: + +`asdf` scripts need to be sourced **after** you have set your `$PATH` and **after** you have sourced your framework (oh-my-zsh etc). + +Restart your shell so that `PATH` changes take effect. Opening a new terminal tab will usually do it. + +## 4. Install a Plugin + +For demonstration purposes we will install & set [Node.js](https://nodejs.org/) via the [`asdf-nodejs`](https://github.com/asdf-vm/asdf-nodejs/) plugin. + +### Plugin Dependencies + +Each plugin has dependencies so we need to check the plugin repo where they should be listed. For `asdf-nodejs` they are: + +| OS | Dependency Installation | +| -------------- | --------------------------------------- | +| Linux (Debian) | `apt-get install dirmngr gpg curl gawk` | +| macOS | `brew install gpg gawk` | + +We should install dependencies first as some Plugins have post-install hooks. + +### Install the Plugin + +```shell:no-line-numbers +asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git +``` + +## 5. Install a Version + +Now we have a plugin for Node.js we can install a version of the tool. + +We can observer which versions are available with `asdf list all nodejs` or a subset of versions with `asdf list all nodejs 14`. + +We will just install the `latest` available version: + +```shell:no-line-numbers +asdf install nodejs latest +``` + +::: tip Note +`asdf` enforces exact versions. `latest` is a helper throughout `asdf` that will resolve to the actual version number at the time of execution. +::: + +## 6. Set a Version + +`asdf` performs a version lookup of a tool in all `.tool-versions` files from the current working directory up to the `$HOME` directory. The lookup occurs just-in-time when you execute a tool that `asdf` manages. + +::: warning +Without a version listed for a tool execution of the tool will **error**. `asdf current` will show you the tool & version resolution, or absence of, from your current directory so you can observe which tools will fail to execute. +::: + +### Global + +Global defaults are managed in `$HOME/.tool-versions`. Set a global version with: + +```shell:no-line-numbers +asdf global nodejs latest +``` + +`$HOME/.tool-versions` will then look like: + +``` +nodejs 16.5.0 +``` + +Some OSs already have tools installed that are managed by the system and not `asdf`, `python` is a common example. You need to tell `asdf` to pass the management back to the system. The [Versions reference section](/manage/versions.md) will guide you. + +### Local + +Local versions are defined in the `$PWD/.tool-versions` file (your current working directory). Usually, this will be the Git respository for a project. When in your desired directory execute: + +```shell:no-line-numbers +asdf local nodejs latest +``` + +`$PWD/.tool-versions` will then look like: + +``` +nodejs 16.5.0 +``` + +### Using Existing Tool Version Files + +`asdf` supports the migration from existing version files from other version managers. Eg: `.ruby-version` for the case of `rbenv`. This is supported on a per-plugin basis. + +[`asdf-nodejs`](https://github.com/asdf-vm/asdf-nodejs/) supports this via both `.nvmrc` and `.node-version` files. To enable this, add the following to your `asdf` configuration file `$HOME/.asdfrc`: + +``` +legacy_version_file = yes +``` + +See the [configuration](/manage/configuration.md) reference page for more config options. + +## Setup Complete! + +That completes the initial setup of `asdf` :tada: You can now manage `nodejs` versions for your project. Follow similar steps for each type of tool in your project! + +`asdf` has a many more commands to become familiar with, you can see them all by running `asdf --help` or `asdf`. The core of the commands are broken into three categories: + +- [core `asdf`](/manage/core.md) +- [plugins](/manage/plugins.md) +- [versions (of tools)](/manage/versions.md) diff --git a/docs/guide/introduction.md b/docs/guide/introduction.md new file mode 100644 index 00000000..f1b8a874 --- /dev/null +++ b/docs/guide/introduction.md @@ -0,0 +1,57 @@ +# Introduction + +`asdf` is a tool version manager. All tool version definitions are contained within one file (`.tool-versions`) which you can check-in to your project's Git repository to share with your team, ensuring everyone is using the **exact** same versions of tools. + +The old way of working required multiple CLI version managers, each with their distinct API, configurations files and implementation (e.g. `$PATH` manipulation, shims, environment variables, etc...). `asdf` provides a single interface and configuration file to simplify development workflows, and can be extended to all tools and runtimes via a simple plugin interface. + +## How It Works + +Once `asdf` core is setup with your Shell configuration, plugins are installed to manage particular tools. When a tool is installed by a plugin, the executables that are installed have [shims]() created for each of them. When you try and run one of these executables, the shim is run instead, allowing `asdf` to identify which version of the tool is set in `.tool-versions` and execute that version. + +## Related Projects + +### nvm / n / rbenv etc + +Tools like [nvm](https://github.com/nvm-sh/nvm), [n](https://github.com/tj/n) and [rbenv](https://github.com/rbenv/rbenv) are all written as Shell scripts which create shims for the executables installed by these tools. + +`asdf` is very similar and was built to compete in this space of tool/runtime version management. The differentiating factor for `asdf` is it's plugin system which removes the need for a manager per tool/runtime, different commands per manager and different `*-version` files in your repo. + + + +### direnv + +> augments existing shells with a new feature that can load and unload environment variables depending on the current directory. + +`asdf` does not manage Environment Variables, however there is a plugin [`asdf-direnv`](https://github.com/asdf-community/asdf-direnv) to integrate direnv behaviour with `asdf`. + +See [direnv docs](https://direnv.net/) for more. + +### Homebrew + +> The Missing Package Manager for macOS (or Linux) + +Homebrew manages your packages and their upstream dependencies. `asdf` does not manage upstream dependencies, it is not a package manager, that burden is upon the user, though we try and keep the dependency list small. + +See [Homebrew docs](https://brew.sh/) for more. + +### NixOS + +> Nix is a tool that takes a unique approach to package management and system configuration + +NixOS aims to build truly reproducible environments by managing exact versions of packages up the entire dependency tree of each tool, something `asdf` does not do. NixOS does this with it's own programming language, many CLI tools and a pacakges collection of over 60,000 packages. + +Again `asdf` does not manage upstream dependencies and is not a package manager. + +See [NixOS docs](https://nixos.org/guides/how-nix-works.html) for more. + +## Why use asdf? + +`asdf` ensures teams are using the **exact** same versions of tools, with support for **many** tools via a plugin system, and the _simplicity and familiarity_ of being a single **Shell** script you include in your Shell config. + +::: tip Note +`asdf` is not intended to be a system package manager. It is a tool version manager. Just because you can create a plugin for any tool and manage it's versions with `asdf`, does not mean that is the best course of action for that specific tool. +::: diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 538c0bf7..00000000 --- a/docs/index.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - asdf - An extendable version manager - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..5441e1ab --- /dev/null +++ b/docs/index.md @@ -0,0 +1,26 @@ +--- +home: true +title: Home +# heroImage: https://vuejs.org/images/logo.png +actions: + - text: Get Started + link: /guide/getting-started.html + type: primary + - text: Introduction + link: /guide/introduction.html + type: secondary +features: + - title: One Tool + details: "Manage each of your project runtimes with a single CLI tool and command interface." + - title: Plugins + details: "Large ecosystem of existing runtimes & tools. Simple API to add support for new tools as you need!" + - title: Backwards Compatible + details: "Support for existing config files .nvmrc, .node-versions, .ruby-version for smooth migration!" + - title: "One Config File" + details: ".tool-versions to manage all your tools, runtimes and their versions in a single, sharable place." + - title: "Shells" + details: "Supports Bash, ZSH & Fish with completions available." + - title: "GitHub Actions" + details: "Provides a GitHub Action to install and utilize your .tool-verions in your CICD workflows." +# footer: MIT Licensed +--- diff --git a/docs/learn-more/faq.md b/docs/learn-more/faq.md new file mode 100644 index 00000000..b66f8050 --- /dev/null +++ b/docs/learn-more/faq.md @@ -0,0 +1,25 @@ +# FAQ + +Here are some common questions regarding `asdf`. + +## WSL1 support? + +WSL1 ([Windows Subsystem for Linux](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux) 1) is not officially supported. Some aspects of `asdf` may not work properly. We do not intend to add official support for WSL1. + +## WSL2 support? + +WSL2 ([Windows Subsystem for Linux](https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux#WSL_2) 2) should work using the setup & dependency instructions for you chosen WSL distro. + +Importantly, WSL2 is _only_ expected to work properly when the current working directory is a Unix drive and not a bound Windows drive. + +We intend to run out test suite on WSL2 when host runner support is available on GitHub Actions, currently this does not appear to be the case. + +## Newly installed exectable not running? + +> I just `npm install -g yarn`, but cannot execute `yarn`. What gives? + +`asdf` uses [shims]() to manage executables. Those installed by plugins have shims automatically created, whereas installing executables via an `asdf` managed tool will require you to notify `asdf` of the need to create shims. In this instance, to create a shim for [Yarn](https://yarnpkg.com/). See the [`asdf reshim` command docs](/manage/core.md#reshim). + +## Shell not detecting newly installed shims? + +If `asdf reshim` is not resolving your issue, then it is most-likely due to the sourcing of `asdf.sh` or `asdf.fish` _not_ being at the **BOTTOM** of your Shell config file (`.bash_profile`, `.zshrc`, `config.fish` etc). It needs to be sourced **AFTER** you have set your `$PATH` and **AFTER** you have sourced your framework (oh-my-zsh etc) if any. diff --git a/docs/thanks.md b/docs/learn-more/thanks.md similarity index 89% rename from docs/thanks.md rename to docs/learn-more/thanks.md index 28131959..c4fcdc12 100644 --- a/docs/thanks.md +++ b/docs/learn-more/thanks.md @@ -1,3 +1,7 @@ +# Thanks + +Thank you page to the asdf authors & contributors! + ## Credits Me ([@HashNuke](https://github.com/HashNuke)), High-fever, cold, cough. diff --git a/docs/manage/commands.md b/docs/manage/commands.md new file mode 100644 index 00000000..fe1d9fbd --- /dev/null +++ b/docs/manage/commands.md @@ -0,0 +1,5 @@ +# All Commands + +The list of all commands available in `asdf`. This list is the `asdf help` command text. + +@[code](../../help.txt) diff --git a/docs/core-configuration.md b/docs/manage/configuration.md similarity index 86% rename from docs/core-configuration.md rename to docs/manage/configuration.md index 6ccd3665..a976b8d1 100644 --- a/docs/core-configuration.md +++ b/docs/manage/configuration.md @@ -1,12 +1,18 @@ -## .tool-versions +# Configuration + +Configuration of `asdf` encompasses both the sharable `.tool-versions` files as well as user specific customisations with `.asdfrc` and Environment Variables. + +## `.tool-versions` Whenever `.tool-versions` file is present in a directory, the tool versions it declares will be used in that directory and any subdirectories. -?> Global defaults can be set in the file `$HOME/.tool-versions` +::: warning Note +Global defaults can be set in the file `$HOME/.tool-versions` +::: This is what a `.tool-versions` file looks like: -``` +```:no-line-numbers ruby 2.5.3 nodejs 10.15.0 ``` @@ -18,25 +24,26 @@ The versions can be in the following format: - `path:/src/elixir` - a path to custom compiled version of a tool to use. For use by language developers and such. - `system` - this keyword causes asdf to passthrough to the version of the tool on the system that is not managed by asdf. -Multiple versions can be set by separating them with a space. For example, to use -Python 3.7.2, fallback to Python 2.7.15 and finally to the system Python, the -following line can be added to `.tool-versions`. +::: tip +Multiple versions can be set by separating them with a space. For example, to use Python `3.7.2`, fallback to Python `2.7.15` and finally to the `system` Python, the following line can be added to `.tool-versions`. -``` +```:no-line-numbers python 3.7.2 2.7.15 system ``` +::: + To install all the tools defined in a `.tool-versions` file run `asdf install` with no other arguments in the directory containing the `.tool-versions` file. To install a single tool defined in a `.tool-versions` file run `asdf install ` in the directory containing the `.tool-versions` file. The tool will be installed at the version specified in the `.tool-versions` file. Edit the file directly or use `asdf local` (or `asdf global`) which updates it. -## \$HOME/.asdfrc +## `$HOME/.asdfrc` Add a `.asdfrc` file to your home directory and asdf will use the settings specified in the file. The file should be formatted like this: -``` +```:no-line-numbers legacy_version_file = yes ``` diff --git a/docs/manage/core.md b/docs/manage/core.md new file mode 100644 index 00000000..f88767ce --- /dev/null +++ b/docs/manage/core.md @@ -0,0 +1,338 @@ +# Core + +The core `asdf` command list is rather small, but can facilitate many workflows. + +## Installation & Setup + +Covered in the [Getting Started](/guide/getting-started.md) guide. + +## Exec + +```shell:no-line-numbers +asdf exec [args...] +``` + +Executes the command shim for the current version. + + + +## Env + +```shell:no-line-numbers +asdf env [util] +``` + + + +## Info + +```shell:no-line-numbers +asdf info +``` + +A helper command to print the OS, Shell and `asdf` debug information. Share this when making a bug report. + +## Reshim + +```shell:no-line-numbers +asdf reshim +``` + +This recreates the shims for the current version of a package. By default, shims are created by plugins during installation of a tool. Some tools like the [npm CLI](https://docs.npmjs.com/cli/) allow global installation of executables, for example, installing [Yarn](https://yarnpkg.com/) via `npm install -g yarn`. Since this executable was not installed via the plugin lifecycle, no shim exists for it yet. `asdf reshim nodejs ` will force recalculation of shims for any new executables, like `yarn`, for `` of `nodejs` . + +## Shim-versions + +```shell:no-line-numbers +asdf shim-versions +``` + +Lists the plugins and versions that provide shims for a command. + +As an example, [Node.js](https://nodejs.org/) ships with two executables, `node` and `npm`. When many versions of the tools are installed with [`asdf-nodejs`](https://github.com/asdf-vm/asdf-nodejs/) `shim-versions` can return: + +```shell:no-line-numbers +➜ asdf shim-versions node +nodejs 14.8.0 +nodejs 14.17.3 +nodejs 16.5.0 +``` + +```shell:no-line-numbers +➜ asdf shim-versions npm +nodejs 14.8.0 +nodejs 14.17.3 +nodejs 16.5.0 +``` + +## Update + +`asdf` has a built in command to update which relies on Git (our recommended installation method). If you installed using a different method you should follow the steps for that method: + +| Method | Latest Stable Release | Latest commit on `master` | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------ | -------------------------- | +| asdf (via Git) | `asdf update` | `asdf update --head` | +| Homebrew | `brew upgrade asdf` | `brew upgrade asdf --HEAD` | +| Pacman | Download a new `PKGBUILD` & rebuild
or use your preferred [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers) | | + +## Uninstall + +To uninstall `asdf` follow these steps: + +::: details Bash & Git + +1. In your `~/.bashrc` remove the lines that source `asdf.sh` and the completions: + +```shell +. $HOME/.asdf/asdf.sh +. $HOME/.asdf/completions/asdf.bash +``` + +2. Remove the `$HOME/.asdf` dir: + +```shell:no-line-numbers +rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} +``` + +3. Run this command to remove all `asdf` config files: + +```shell:no-line-numbers +rm -rf $HOME/.tool-versions $HOME/.asdfrc +``` + +::: + +::: details Bash & Git (macOS) + +1. In your `~/.bash_profile` remove the lines that source `asdf.sh` and the completions: + +```shell +. $HOME/.asdf/asdf.sh +. $HOME/.asdf/completions/asdf.bash +``` + +2. Remove the `$HOME/.asdf` dir: + +```shell:no-line-numbers +rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} +``` + +3. Run this command to remove all `asdf` config files: + +```shell:no-line-numbers +rm -rf $HOME/.tool-versions $HOME/.asdfrc +``` + +::: + +::: details Bash & Homebrew (macOS) + +If using **macOS Catalina or newer**, the default shell has changed to **ZSH**. If you can't find any config in your `~/.bash_profile` it may be in a `~/.zshrc` in which case please follow the ZSH instructions. + +1. In your `~/.bash_profile` remove the lines that source `asdf.sh` and the completions: + +```shell +. $(brew --prefix asdf)/asdf.sh +. $(brew --prefix asdf)/etc/bash_completion.d/asdf.bash +``` + +Completions may have been [configured as per Homebrew's instructions](https://docs.brew.sh/Shell-Completion#configuring-completions-in-bash) so follow their guide to find out what to remove. + +2. Uninstall with your package manager: + +```shell:no-line-numbers +brew uninstall asdf --force +``` + +3. Run this command to remove all `asdf` config files: + +```shell:no-line-numbers +rm -rf $HOME/.tool-versions $HOME/.asdfrc +``` + +::: + +::: details Bash & Pacman + +1. In your `~/.bashrc` remove the lines that source `asdf.sh` and the completions: + +```shell +. /opt/asdf-vm/asdf.sh +``` + +2. Uninstall with your package manager: + +```shell:no-line-numbers +pacman -Rs asdf-vm +``` + +3. Remove the `$HOME/.asdf` dir: + +```shell:no-line-numbers +rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} +``` + +4. Run this command to remove all `asdf` config files: + +```shell:no-line-numbers +rm -rf $HOME/.tool-versions $HOME/.asdfrc +``` + +::: + +::: details Fish & Git + +1. In your `~/.config/fish/config.fish` remove the lines that source `asdf.fish`: + +```shell +source ~/.asdf/asdf.fish +``` + +and remove completions with this command: + +```shell:no-line-numbers +rm -rf ~/.config/fish/completions/asdf.fish +``` + +2. Remove the `$HOME/.asdf` dir: + +```shell:no-line-numbers +rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} +``` + +3. Run this command to remove all `asdf` config files: + +```shell:no-line-numbers +rm -rf $HOME/.tool-versions $HOME/.asdfrc +``` + +::: + +::: details Fish & Homebrew + +1. In your `~/.config/fish/config.fish` remove the lines that source `asdf.fish`: + +```shell +source "(brew --prefix asdf)"/asdf.fish +``` + +2. Uninstall with your package manager: + +```shell:no-line-numbers +brew uninstall asdf --force +``` + +3. Run this command to remove all `asdf` config files: + +```shell:no-line-numbers +rm -rf $HOME/.tool-versions $HOME/.asdfrc +``` + +::: + +::: details Fish & Pacman + +1. In your `~/.config/fish/config.fish` remove the lines that source `asdf.fish`: + +```shell +source /opt/asdf-vm/asdf.fish +``` + +2. Uninstall with your package manager: + +```shell:no-line-numbers +pacman -Rs asdf-vm +``` + +3. Remove the `$HOME/.asdf` dir: + +```shell:no-line-numbers +rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} +``` + +4. Run this command to remove all `asdf` config files: + +```shell:no-line-numbers +rm -rf $HOME/.tool-versions $HOME/.asdfrc +``` + +::: + +::: details ZSH & Git + +1. In your `~/.zshrc` remove the lines that source `asdf.sh` and completions: + +```shell +. $HOME/.asdf/asdf.sh +# ... +fpath=(${ASDF_DIR}/completions $fpath) +autoload -Uz compinit +compinit +``` + +**OR** the ZSH Framework plugin if used. + +2. Remove the `$HOME/.asdf` dir: + +```shell:no-line-numbers +rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} +``` + +3. Run this command to remove all `asdf` config files: + +```shell:no-line-numbers +rm -rf $HOME/.tool-versions $HOME/.asdfrc +``` + +::: + +::: details ZSH & Homebrew + +1. In your `~/.zshrc` remove the lines that source `asdf.sh`: + +```shell +. $(brew --prefix asdf)/asdf.sh +``` + +2. Uninstall with your package manager: + +```shell:no-line-numbers +brew uninstall asdf --force && brew autoremove +``` + +3. Run this command to remove all `asdf` config files: + +```shell:no-line-numbers +rm -rf $HOME/.tool-versions $HOME/.asdfrc +``` + +::: + +::: details ZSH & Pacman + +1. In your `~/.zshrc` remove the lines that source `asdf.sh`: + +```shell +. /opt/asdf-vm/asdf.sh +``` + +2. Uninstall with your package manager: + +```shell:no-line-numbers +pacman -Rs asdf-vm +``` + +3. Remove the `$HOME/.asdf` dir: + +```shell:no-line-numbers +rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} +``` + +4. Run this command to remove all `asdf` config files: + +```shell:no-line-numbers +rm -rf $HOME/.tool-versions $HOME/.asdfrc +``` + +::: + +That's it! 🎉 diff --git a/docs/core-manage-plugins.md b/docs/manage/plugins.md similarity index 61% rename from docs/core-manage-plugins.md rename to docs/manage/plugins.md index a2c0b10b..a2a82433 100644 --- a/docs/core-manage-plugins.md +++ b/docs/manage/plugins.md @@ -1,35 +1,39 @@ -Plugins are how asdf knows how to handle different tools like Node.js, Ruby, Elixir etc. +# Plugins -See [Creating Plugins](plugins-create) for the plugin API used to support more tools. +Plugins are how `asdf` knows to handle different tools like Node.js, Ruby, Elixir etc. + +See [Creating Plugins](/plugins/create.md) for the plugin API used to support more tools. ## Add Add plugins via their Git URL: -```shell +```shell:no-line-numbers asdf plugin add # asdf plugin add elm https://github.com/vic/asdf-elm ``` or via the short-name association in the plugins repository: -```shell +```shell:no-line-numbers asdf plugin add # asdf plugin add erlang ``` -When scripting, prefer the longer `git-url` method as it is independent of the short-name repo. +::: tip Recommendation +Prefer the longer `git-url` method as it is independent of the short-name repo. +::: ## List Installed -```shell +```shell:no-line-numbers asdf plugin list # asdf plugin list # java # nodejs ``` -```shell +```shell:no-line-numbers asdf plugin list --urls # asdf plugin list # java https://github.com/halcyon/asdf-java.git @@ -38,30 +42,30 @@ asdf plugin list --urls ## List All in Short-name Repository -```shell +```shell:no-line-numbers asdf plugin list all ``` -See [All plugins](plugins-all) for the short-name list of plugins. +See [Plugins Shortname Index](https://github.com/asdf-vm/asdf-plugin-template) for the entire short-name list of plugins. ## Update -```shell +```shell:no-line-numbers asdf plugin update --all ``` If you want to update a specific package, just say so. -```shell +```shell:no-line-numbers asdf plugin update # asdf plugin update erlang ``` -This update will fetch the *latest commit* on the *default branch* of the *origin* of the plugin repository. Versioned plugins and updates are currently being developed - https://github.com/asdf-vm/asdf/pull/916 +This update will fetch the _latest commit_ on the _default branch_ of the _origin_ of the plugin repository. Versioned plugins and updates are currently being developed ([#916](https://github.com/asdf-vm/asdf/pull/916)) ## Remove -```bash +```bash:no-line-numbers asdf plugin remove # asdf plugin remove erlang ``` @@ -74,4 +78,4 @@ The short-name repo is synced to your local machine and periodically refreshed. - commands `asdf plugin add ` or `asdf plugin list all` can trigger a sync - a sync occurs if there has not been one in the last `X` minutes -- `X` defaults to `60`, but can be configured in your `.asdfrc` via the `plugin_repository_last_check_duration` option. See the [asdf config docs](core-configuration) for more. +- `X` defaults to `60`, but can be configured in your `.asdfrc` via the `plugin_repository_last_check_duration` option. See the [asdf config docs](/manage/configuration.md) for more. diff --git a/docs/core-manage-versions.md b/docs/manage/versions.md similarity index 76% rename from docs/core-manage-versions.md rename to docs/manage/versions.md index 848b1313..3ca29d2e 100644 --- a/docs/core-manage-versions.md +++ b/docs/manage/versions.md @@ -1,71 +1,73 @@ +# Versions + ## Install Version -```shell +```shell:no-line-numbers asdf install # asdf install erlang 17.3 ``` -_If a plugin supports downloading & compiling from source, you can specify `ref:foo` where `foo` is a specific branch, tag, or commit. You'll need to use the same name and reference when uninstalling too._ +If a plugin supports downloading & compiling from source, you can specify `ref:foo` where `foo` is a specific branch, tag, or commit. You'll need to use the same name and reference when uninstalling too. ## Install Latest Stable Version -```shell +```shell:no-line-numbers asdf install latest # asdf install erlang latest ``` Install latest stable version that begins with a given string. -```shell +```shell:no-line-numbers asdf install latest: # asdf install erlang latest:17 ``` ## List Installed Versions -```shell +```shell:no-line-numbers asdf list # asdf list erlang ``` -Limit versions to those that begin with a given string. +Filter versions to those that begin with a given string. -```shell +```shell:no-line-numbers asdf list # asdf list erlang 17 ``` ## List All Available Versions -```shell +```shell:no-line-numbers asdf list all # asdf list all erlang ``` -Limit versions to those that begin with a given string. +Filter versions to those that begin with a given string. -```shell +```shell:no-line-numbers asdf list all # asdf list all erlang 17 ``` ## Show Latest Stable Version -```shell +```shell:no-line-numbers asdf latest # asdf latest erlang ``` Show latest stable version that begins with a given string. -```shell +```shell:no-line-numbers asdf latest # asdf latest erlang 17 ``` ## Set Current Version -```shell +```shell:no-line-numbers asdf global [...] asdf shell [...] asdf local [...] @@ -82,11 +84,13 @@ asdf local latest[:] `local` writes the version to `$PWD/.tool-versions`, creating it if needed. -See the `.tool-versions` [file in the Configuration section](core-configuration) for details. +See the `.tool-versions` [file in the Configuration section](/manage/configuration.md) for details. -?> Alternatively, if you want to set a version only for the current shell session +:::warning Alternatively +If you want to set a version only for the current shell session or for executing just a command under a particular tool version, you can set an environment variable like `ASDF_${TOOL}_VERSION`. +::: The following example runs tests on an Elixir project with version `1.4.0`. The version format is the same supported by the `.tool-versions` file. @@ -101,14 +105,14 @@ To use the system version of tool `` instead of an asdf managed version yo Set system with either `global`, `local` or `shell` as outlined in [Set Current Version](#set-current-version) section above. -```shell +```shell:no-line-numbers asdf local system # asdf local python system ``` ## View Current Version -```shell +```shell:no-line-numbers asdf current # asdf current # erlang 17.3 (set by /Users/kim/.tool-versions) @@ -121,7 +125,7 @@ asdf current ## Uninstall Version -```shell +```shell:no-line-numbers asdf uninstall # asdf uninstall erlang 17.3 ``` @@ -134,7 +138,9 @@ The shims themselves are really simple wrappers that `exec` a helper program `as The `asdf exec` helper determines the version of the package to use (as specified in `.tool-versions` file, selected by `asdf local ...` or `asdf global ...`), the final path to the executable in the package installation directory (this can be manipulated by the `exec-path` callback in the plugin) and the environment to execute in (also provided by the plugin - `exec-env` script), and finally it executes it. -!> Note that because this system uses `exec` calls, any scripts in the package that are meant to be sourced by the shell instead of executed need to be accessed directly instead of via the shim wrapper. The two asdf commands: `which` and `where` can help with this by returning the path to the installed package: +::: warning Note +Because this system uses `exec` calls, any scripts in the package that are meant to be sourced by the shell instead of executed need to be accessed directly instead of via the shim wrapper. The two `asdf` commands: `which` and `where` can help with this by returning the path to the installed package: +::: ```shell # returns path to main executable in current version diff --git a/docs/package-lock.json b/docs/package-lock.json new file mode 100644 index 00000000..c67fbc40 --- /dev/null +++ b/docs/package-lock.json @@ -0,0 +1,5999 @@ +{ + "name": "docs", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@vue/component-compiler-utils": "^3.2.2", + "@vuepress/plugin-back-to-top": "^2.0.0-beta.22", + "@vuepress/plugin-search": "^2.0.0-beta.22", + "@vuepress/plugin-shiki": "^2.0.0-beta.22", + "vuepress-vite": "^2.0.0-beta.22" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/debug": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.6.tgz", + "integrity": "sha512-7fDOJFA/x8B+sO1901BmHlf5dE1cxBU8mRXj8QOEDnn16hhGJv/IHxJtZhvsabZsIMn0eLIyeOKAeqSNJJYTpA==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "7.2.14", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.14.tgz", + "integrity": "sha512-pESyhSbUOskqrGcaN+bCXIQDyT5zTaRWfj5ZjjSlMatgGjIn3QQPfocAu4WSabUR7CGyLZ2CQaZyISOEX7/saw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.48", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", + "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", + "dev": true + }, + "node_modules/@types/fs-extra": { + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.12.tgz", + "integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hash-sum": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/hash-sum/-/hash-sum-1.0.0.tgz", + "integrity": "sha512-FdLBT93h3kcZ586Aee66HPCVJ6qvxVjBlDWNmxSGSbCZe9hTsjRKdSsl4y1T+3zfujxo9auykQMnFsfyHWD7wg==", + "dev": true + }, + "node_modules/@types/highlight.js": { + "version": "9.12.4", + "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.4.tgz", + "integrity": "sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", + "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", + "dev": true, + "peer": true + }, + "node_modules/@types/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.0.3.tgz", + "integrity": "sha512-MIhDl8e64vKJv3GX8irH5I/cNarX18edtdfg/+lbS92mArVl5VeaL4WKf8i06Zt2vsNuze2Vc8ELqrjoWO6hDQ==", + "dev": true, + "dependencies": { + "@types/highlight.js": "^9.7.0", + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.0.tgz", + "integrity": "sha512-OydMCocGMGqw/1BnWbhtK+AtwyWTOigtrQlRe57OQmTNcI3HKlVI5FGlh+c4mSqInMPLynFrTlYjfajPu9O/eQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.2.4.tgz", + "integrity": "sha512-D/3H9plevPQGgQGwmV6eecvOnooLTecPR63HPffVVWPEhbfvmtYLWgznzs456NBb2DItiRTCIa1yWxvGqC+I8A==", + "dev": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@vue/compiler-sfc": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.4.tgz", + "integrity": "sha512-TnUz+1z0y74O/A4YKAbzsdUfamyHV73MihrEfvettWpm9bQKVoZd1nEmR1cGN9LsXWlwAvVQBetBlWdOjmQO5Q==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.12.0", + "@babel/types": "^7.12.0", + "@vue/shared": "3.1.4", + "estree-walker": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.4.tgz", + "integrity": "sha512-3tG2ScHkghhUBuFwl9KgyZhrS8CPFZsO7hUDekJgIp5b1OMkROr4AvxHu6rRMl4WkyvYkvidFNBS2VfOnwa6Kw==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.1.4", + "@vue/shared": "3.1.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.1.4.tgz", + "integrity": "sha512-4KDQg60Khy3SgnF+V/TB2NZqzmM4TyGRmzsxqG1SebGdMSecCweFDSlI/F1vDYk6dKiCHgmpoT9A1sLxswkJ0A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.13.9", + "@babel/types": "^7.13.0", + "@types/estree": "^0.0.48", + "@vue/compiler-core": "3.1.4", + "@vue/compiler-dom": "3.1.4", + "@vue/compiler-ssr": "3.1.4", + "@vue/shared": "3.1.4", + "consolidate": "^0.16.0", + "estree-walker": "^2.0.1", + "hash-sum": "^2.0.0", + "lru-cache": "^5.1.1", + "magic-string": "^0.25.7", + "merge-source-map": "^1.1.0", + "postcss": "^8.1.10", + "postcss-modules": "^4.0.0", + "postcss-selector-parser": "^6.0.4", + "source-map": "^0.6.1" + }, + "peerDependencies": { + "vue": "3.1.4" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/consolidate": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz", + "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.7.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "node_modules/@vue/compiler-sfc/node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", + "dev": true, + "dependencies": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-modules": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.1.3.tgz", + "integrity": "sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ==", + "dev": true, + "dependencies": { + "generic-names": "^2.0.1", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.1.4.tgz", + "integrity": "sha512-Box8fCuCFPp0FuimIswjDkjwiSDCBkHvt/xVALyFkYCiIMWv2eR53fIjmlsnEHhcBuZ+VgRC+UanCTcKvSA1gA==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.1.4", + "@vue/shared": "3.1.4" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.2.tgz", + "integrity": "sha512-rAYMLmgMuqJFWAOb3Awjqqv5X3Q3hVr4jH/kgrFJpiU0j3a90tnNBplqbj+snzrgZhC9W128z+dtgMifOiMfJg==", + "dev": true, + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.0.0-beta.15", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.15.tgz", + "integrity": "sha512-quBx4Jjpexo6KDiNUGFr/zF/2A4srKM9S9v2uHgMXSU//hjgq1eGzqkIFql8T9gfX5ZaVOUzYBP3jIdIR3PKIA==", + "dev": true + }, + "node_modules/@vue/reactivity": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.4.tgz", + "integrity": "sha512-YDlgii2Cr9yAoKVZFzgY4j0mYlVT73986X3e5SPp6ifqckSEoFSUWXZK2Tb53TB/9qO29BEEbspnKD3m3wAwkA==", + "dev": true, + "dependencies": { + "@vue/shared": "3.1.4" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.1.4.tgz", + "integrity": "sha512-qmVJgJuFxfT7M4qHQ4M6KqhKC66fjuswK+aBivE8dWiZ2rtIGl9gtJGpwqwjQEcKEBTOfvvrtrwBncYArJUO8Q==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.1.4", + "@vue/shared": "3.1.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.1.4.tgz", + "integrity": "sha512-vbmwgTxku1BU87Kw7r29adv0OIrDXCW0PslOPQT0O/9R5SqcXgS94Yj6zsztDjvghegenwIAPNLlDR1Auh5s+w==", + "dev": true, + "dependencies": { + "@vue/runtime-core": "3.1.4", + "@vue/shared": "3.1.4", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.1.4.tgz", + "integrity": "sha512-STyvZLeoQwljTMqA94Zmlo20AEBOdF57nuIz0tw+fsJvkmLt3R9HEngvHPmB0Aht9XnVP9h7oG61/5luhsbfDA==", + "dev": true, + "dependencies": { + "@vue/compiler-ssr": "3.1.4", + "@vue/shared": "3.1.4" + }, + "peerDependencies": { + "vue": "3.1.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.4.tgz", + "integrity": "sha512-6O45kZAmkLvzGLToBxEz4lR2W6kXohCtebV2UxjH9GXjd8X9AhEn68FN9eNanFtWNzvgw1hqd6HkPRVQalqf7Q==", + "dev": true + }, + "node_modules/@vuepress/bundler-vite": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/bundler-vite/-/bundler-vite-2.0.0-beta.22.tgz", + "integrity": "sha512-w0Zpsy3bOm+4vYY8qo3mwHg2E5xS+toGDoooHRhRUPnsaRVzaM8sSGE5ZRAtpo1OEj5IgkgJyLRm9xS1L9YTEQ==", + "dev": true, + "dependencies": { + "@vitejs/plugin-vue": "^1.2.4", + "@vue/compiler-sfc": "^3.1.4", + "@vue/server-renderer": "^3.1.4", + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "autoprefixer": "^10.2.6", + "connect-history-api-fallback": "^1.6.0", + "postcss": "^8.3.5", + "postcss-csso": "^5.0.1", + "rollup": "^2.52.7", + "vite": "^2.3.8", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "node_modules/@vuepress/bundler-vite/node_modules/autoprefixer": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.0.tgz", + "integrity": "sha512-BzVzdjs47nT3MphTddr8eSsPVEIUCF96X6iC8V5iEB8RtxrU+ybtdhHV5rsqRqOsoyh/acQaYs7YupHPUECgmg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-lite": "^1.0.30001243", + "colorette": "^1.2.2", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/@vuepress/bundler-vite/node_modules/postcss": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", + "dev": true, + "dependencies": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/@vuepress/bundler-vite/node_modules/postcss-csso": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-csso/-/postcss-csso-5.0.1.tgz", + "integrity": "sha512-TI99uhhJK2L5IQXPuyNcT3XV9bffSvDPmNpHi5f+tBq+R/01ucgLsUCcTDcVNqKMxO28klI6NwgjrHrM99x9KA==", + "dev": true, + "dependencies": { + "csso": "^4.0.2" + }, + "engines": { + "node": ">=10.12.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@vuepress/cli": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/cli/-/cli-2.0.0-beta.22.tgz", + "integrity": "sha512-cEh1/03a9ycMXqjmzIuCAmQ74mQkOYl4yWZyVF5g+dgNIQcv+xUyfGM1zbOpkm4zZ9eWp01NdX6CNYrDNcw0Mw==", + "dev": true, + "dependencies": { + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "cac": "^6.7.3", + "chokidar": "^3.5.2", + "envinfo": "^7.8.1", + "esbuild": "^0.12.14" + }, + "bin": { + "vuepress": "bin/vuepress.js" + } + }, + "node_modules/@vuepress/client": { + "version": "2.0.0-beta.21", + "resolved": "https://registry.npmjs.org/@vuepress/client/-/client-2.0.0-beta.21.tgz", + "integrity": "sha512-kMZRq4qgED7+p4/7pHRfTDWXZPvvCRbt5GA6tvEhqAVJZ/wvmPckXxzLA7MQcuwsPjNuqJuFnofMmTte8wV07Q==", + "dev": true, + "dependencies": { + "@vuepress/shared": "2.0.0-beta.21", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "node_modules/@vuepress/core": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-2.0.0-beta.22.tgz", + "integrity": "sha512-22kwkGIbJxgMevj+byXfKvPVzXQsHvUguftBiBQEMFly09lz4g3bJNa3M6RD4JjciLWWavHKeyt8Rr21OX7R/w==", + "dev": true, + "dependencies": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/markdown": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "gray-matter": "^4.0.3", + "toml": "^3.0.0" + } + }, + "node_modules/@vuepress/markdown": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-2.0.0-beta.22.tgz", + "integrity": "sha512-QQQmmbSuIN/Up4ne4PIsLfgXdE2rGTZwWTrR4hT8aFxv18v9gnz/PqUCsprIcm7UAWzSp5EQZg6RexPqHbzIpQ==", + "dev": true, + "dependencies": { + "@types/markdown-it": "^12.0.2", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "markdown-it": "^12.1.0", + "markdown-it-anchor": "^8.1.0", + "markdown-it-emoji": "^2.0.0", + "mdurl": "^1.0.1" + } + }, + "node_modules/@vuepress/plugin-active-header-links": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-beta.22.tgz", + "integrity": "sha512-Jo0fHImfykMOlER1vYtd3EkVRjv/ZgnS0awFsfbCIR6lZdU41DRQC9AbBuIIap8DGClIM33oQs5Wwtd2HFBDkw==", + "dev": true, + "dependencies": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "ts-debounce": "^3.0.0", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "node_modules/@vuepress/plugin-back-to-top": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-beta.22.tgz", + "integrity": "sha512-T4jp8NCvEfKI6tOJp1ZcuSyhBY8l43/2ZB2b6RQawU9nRmcMaGTUPyy0KZF2mZQdo5LHQPOm88Qgoh+nMyg4mw==", + "dev": true, + "dependencies": { + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "ts-debounce": "^3.0.0", + "vue": "^3.1.4" + } + }, + "node_modules/@vuepress/plugin-container": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-container/-/plugin-container-2.0.0-beta.22.tgz", + "integrity": "sha512-mGC6VTN/g+W5JMqaxjzrJY4GohsFP/l2uLUs6mJfxKEV3sA/GhFhC5BKAo3XCdjWGWwajTab+9IhGzz7myThpQ==", + "dev": true, + "dependencies": { + "@types/markdown-it": "^12.0.2", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/markdown": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "markdown-it": "^12.1.0", + "markdown-it-container": "^3.0.0" + } + }, + "node_modules/@vuepress/plugin-git": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-git/-/plugin-git-2.0.0-beta.22.tgz", + "integrity": "sha512-VKFvNUgwOQ2Erpdis5Dx0NFcQFSHrOjKmMtKH+pyFQiCUf2sxPoq2jcigsfpUTk3owDbmfeZ2PXiKlA7qBsing==", + "dev": true, + "dependencies": { + "@vuepress/core": "2.0.0-beta.22", + "execa": "^5.1.1" + } + }, + "node_modules/@vuepress/plugin-medium-zoom": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-beta.22.tgz", + "integrity": "sha512-8yoreaxsS3vgycXrvp6yMrmhzuy9Xg1cMVRQh3Zr56sTw9Hby48y0ubzTWm3VN5JyECXXuN6Yk3o6czbnPIzDQ==", + "dev": true, + "dependencies": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "medium-zoom": "^1.0.6", + "vue": "^3.1.4" + } + }, + "node_modules/@vuepress/plugin-nprogress": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-beta.22.tgz", + "integrity": "sha512-9A4STLBMDD4ZY8QpMuwhZORXaQi0qI4Uy1G7EW5+tJCDre86652u9GPhVWpy1kfQIaJw/1xr7ur9EAZtuTvUZA==", + "dev": true, + "dependencies": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "nprogress": "^0.2.0", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "node_modules/@vuepress/plugin-palette": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-palette/-/plugin-palette-2.0.0-beta.22.tgz", + "integrity": "sha512-BKFM/KN8BXmHizYWbrQDK+aJfuKuhq2aO1LHMwN1TKzuYlCCc//sJD1JlRS66rv2+2ZIbUW2y/g0SE4iuudu+Q==", + "dev": true, + "dependencies": { + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "chokidar": "^3.5.2" + } + }, + "node_modules/@vuepress/plugin-prismjs": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-beta.22.tgz", + "integrity": "sha512-13Q/xBiW6UUbwxfRoijitcA0rr6QZ1dyh5XvqLUcm8SQIY6PejEAXp2pnb2MGAdCJIa5ILcrhvjTK1aru4AdHw==", + "dev": true, + "dependencies": { + "@vuepress/core": "2.0.0-beta.22", + "prismjs": "^1.24.1" + } + }, + "node_modules/@vuepress/plugin-search": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-2.0.0-beta.22.tgz", + "integrity": "sha512-QwMns4aBFS3kuQgQgtPd4RbcYIoNlux+hx6Tb3ze9Z7xTk7yh0U5GIR96vT3bJ4jQ7axVp72HucZBK+XjIJhTQ==", + "dev": true, + "dependencies": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "chokidar": "^3.5.2", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "node_modules/@vuepress/plugin-shiki": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-shiki/-/plugin-shiki-2.0.0-beta.22.tgz", + "integrity": "sha512-ZkAm6eBXcTfgV9qAGn9RkA9IHtA0c9se12aUb2WFuk6jsnnJGfYT4sWXymzFctla7ZSY/DLz0V9opLS/5O9q/g==", + "dev": true, + "dependencies": { + "@vuepress/core": "2.0.0-beta.22", + "shiki": "^0.9.5" + } + }, + "node_modules/@vuepress/plugin-theme-data": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-beta.22.tgz", + "integrity": "sha512-SF2spYJ9GBgiFUspxrpQGErOrc0UYJpzE1RzzNqXPVFhE8r9JPXcQkK6wVxpDcFb31VlB5kr2dYgMYGOjM5L6w==", + "dev": true, + "dependencies": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "vue": "^3.1.4" + } + }, + "node_modules/@vuepress/shared": { + "version": "2.0.0-beta.21", + "resolved": "https://registry.npmjs.org/@vuepress/shared/-/shared-2.0.0-beta.21.tgz", + "integrity": "sha512-G5+iJRNEEq+TBYCOkUMS32dLAsv2bQ/3qTxSwa/ccX6UDSMAkCm/85GLN5DwrCPmyf2SHHomG8C/qvIZp3+jRA==", + "dev": true, + "dependencies": { + "@vue/shared": "^3.1.4" + } + }, + "node_modules/@vuepress/theme-default": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-2.0.0-beta.22.tgz", + "integrity": "sha512-+FfsY0QCjfgUH2jeEmopdOQ47+PxaZvDCoThnmnW1AN8UMtNUDZOlUn7xQRs/TtkDQQ5zl6cxyPv0jUudtn8RA==", + "dev": true, + "dependencies": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/plugin-active-header-links": "2.0.0-beta.22", + "@vuepress/plugin-back-to-top": "2.0.0-beta.22", + "@vuepress/plugin-container": "2.0.0-beta.22", + "@vuepress/plugin-git": "2.0.0-beta.22", + "@vuepress/plugin-medium-zoom": "2.0.0-beta.22", + "@vuepress/plugin-nprogress": "2.0.0-beta.22", + "@vuepress/plugin-palette": "2.0.0-beta.22", + "@vuepress/plugin-prismjs": "2.0.0-beta.22", + "@vuepress/plugin-theme-data": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "sass": "^1.35.1", + "sass-loader": "^12.1.0", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "node_modules/@vuepress/utils": { + "version": "2.0.0-beta.21", + "resolved": "https://registry.npmjs.org/@vuepress/utils/-/utils-2.0.0-beta.21.tgz", + "integrity": "sha512-PMqGIbjKlLEfIoabj7yKuXTxXc7IkHUuUzmG4aF+RZ1YVVGeUUmrXLRocLOrke9Lx5aSBZ+XxjqAQlkptXWPQw==", + "dev": true, + "dependencies": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "@types/hash-sum": "^1.0.0", + "@vuepress/shared": "2.0.0-beta.21", + "chalk": "^4.1.1", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "globby": "^11.0.4", + "hash-sum": "^2.0.0", + "ora": "^5.4.1", + "upath": "^2.0.1" + } + }, + "node_modules/@vuepress/utils/node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true, + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "peer": true + }, + "node_modules/acorn": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", + "dev": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true, + "peer": true + }, + "node_modules/cac": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.3.tgz", + "integrity": "sha512-ECVqVZh74qgSuZG9YOt2OJPI3wGcf+EwwuF/XIOYqZBD0KZYLtgPWqFPxmDPQ6joxI1nOlvVgRV6VT53Ooyocg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001243", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz", + "integrity": "sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "2.6.17", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", + "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.772", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.772.tgz", + "integrity": "sha512-X/6VRCXWALzdX+RjCtBU6cyg8WZgoxm9YA02COmDOiNJEZ59WkQggDbWZ4t/giHi/3GS+cvdrP6gbLISANAGYA==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", + "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", + "dev": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", + "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", + "dev": true, + "peer": true + }, + "node_modules/esbuild": { + "version": "0.12.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.15.tgz", + "integrity": "sha512-72V4JNd2+48eOVCXx49xoSWHgC3/cCy96e7mbXKY+WOWghN00cCmlGnwVLRhRHorvv0dgCyuMYBZlM2xDM5OQw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "peer": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "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==", + "dev": true, + "peer": true + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "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==", + "dev": true, + "peer": true + }, + "node_modules/fastq": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/generic-names": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", + "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "peer": true + }, + "node_modules/json-schema-traverse": { + "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==", + "dev": true, + "peer": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/markdown-it": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.1.0.tgz", + "integrity": "sha512-7temG6IFOOxfU0SgzhqR+vr2diuMhyO5uUIEZ3C5NbXhqC9uFUHoU41USYuDFoZRsaY7BEIEei874Z20VMLF6A==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-anchor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.1.0.tgz", + "integrity": "sha512-QgnJbBhoDL8YIxeOnxxjhuMPsnjhHSixs3NuZBW8srNrwHlZUncY0j75bukEQoLRV+YCuwfVSqY4ShFfnzTaDQ==", + "dev": true, + "peerDependencies": { + "markdown-it": "*" + } + }, + "node_modules/markdown-it-container": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-3.0.0.tgz", + "integrity": "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==", + "dev": true + }, + "node_modules/markdown-it-emoji": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.0.tgz", + "integrity": "sha512-39j7/9vP/CPCKbEI44oV8yoPJTpvfeReTn/COgRhSpNrjWF3PfP/JUxxB0hxV6ynOY8KH8Y8aX9NMDdo6z+6YQ==", + "dev": true + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "node_modules/medium-zoom": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.0.6.tgz", + "integrity": "sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==", + "dev": true + }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "dev": true, + "peer": true, + "dependencies": { + "mime-db": "1.48.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=", + "dev": true + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onigasm": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", + "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", + "dev": true, + "dependencies": { + "lru-cache": "^5.1.1" + } + }, + "node_modules/onigasm/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/onigasm/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "node_modules/postcss/node_modules/ansi-styles": { + "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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prismjs": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz", + "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "2.53.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.53.1.tgz", + "integrity": "sha512-yiTCvcYXZEulNWNlEONOQVlhXA/hgxjelFSjNcrwAAIfYx/xqjSHwqg/cCaWOyFRKr+IQBaXwt723m8tCaIUiw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/sass": { + "version": "1.35.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.35.2.tgz", + "integrity": "sha512-jhO5KAR+AMxCEwIH3v+4zbB2WB0z67V1X0jbapfVwQQdjHZUGUyukpnoM6+iCMfsIUC016w9OPKQ5jrNOS9uXw==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/sass-loader": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", + "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0", + "sass": "^1.3.0", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.5.tgz", + "integrity": "sha512-XFn+rl3wIowDjzdr5DlHoHgQphXefgUTs2bNp/bZu4WF9gTrTLnKwio3f28VjiFG6Jpip7yQn/p4mMj6OrjrtQ==", + "dev": true, + "dependencies": { + "json5": "^2.2.0", + "onigasm": "^2.2.5", + "vscode-textmate": "5.2.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true, + "peer": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "dev": true, + "peer": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz", + "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==", + "dev": true, + "peer": true, + "dependencies": { + "jest-worker": "^27.0.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "dev": true + }, + "node_modules/ts-debounce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ts-debounce/-/ts-debounce-3.0.0.tgz", + "integrity": "sha512-7jiRWgN4/8IdvCxbIwnwg2W0bbYFBH6BxFqBjMKk442t7+liF2Z1H6AUCcl8e/pD93GjPru+axeiJwFmRww1WQ==", + "dev": true + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/vite": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.4.1.tgz", + "integrity": "sha512-4BpKRis9uxIqPfIEcJ18LTBsamqnDFxTx45CXwagHjNltHa6PFEvf8Pe6OpgIHb0OyWT30OXOSSQvdOaX4OBiQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.12.8", + "postcss": "^8.3.5", + "resolve": "^1.20.0", + "rollup": "^2.38.5" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/vite/node_modules/postcss": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", + "dev": true, + "dependencies": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/vscode-textmate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", + "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", + "dev": true + }, + "node_modules/vue": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.1.4.tgz", + "integrity": "sha512-p8dcdyeCgmaAiZsbLyDkmOLcFGZb/jEVdCLW65V68LRCXTNX8jKsgah2F7OZ/v/Ai2V0Fb1MNO0vz/GFqsPVMA==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.1.4", + "@vue/runtime-dom": "3.1.4", + "@vue/shared": "3.1.4" + } + }, + "node_modules/vue-router": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.10.tgz", + "integrity": "sha512-YbPf6QnZpyyWfnk7CUt2Bme+vo7TLfg1nGZNkvYqKYh4vLaFw6Gn8bPGdmt5m4qrGnKoXLqc4htAsd3dIukICA==", + "dev": true, + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.14" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "node_modules/vuepress-vite": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/vuepress-vite/-/vuepress-vite-2.0.0-beta.22.tgz", + "integrity": "sha512-6bhdpih2bKO+aJ7xJssYxKInAafNxfg3XQ76IE8C39W7UR30sOfX04CdkDTgNOvqrE2LVQz7/frIg4LY3r9A1A==", + "dev": true, + "dependencies": { + "@vuepress/bundler-vite": "2.0.0-beta.22", + "@vuepress/cli": "2.0.0-beta.22", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/theme-default": "2.0.0-beta.22" + }, + "bin": { + "vuepress": "bin/vuepress.js", + "vuepress-vite": "bin/vuepress.js" + } + }, + "node_modules/watchpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", + "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "dev": true, + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.44.0.tgz", + "integrity": "sha512-I1S1w4QLoKmH19pX6YhYN0NiSXaWY8Ou00oA+aMcr9IUGeF5azns+IKBkfoAAG9Bu5zOIzZt/mN35OffBya8AQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.0", + "es-module-lexer": "^0.7.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.2.0", + "webpack-sources": "^2.3.0" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz", + "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==", + "dev": true, + "peer": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true, + "peer": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true + }, + "@babel/parser": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "dev": true + }, + "@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@types/debug": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.6.tgz", + "integrity": "sha512-7fDOJFA/x8B+sO1901BmHlf5dE1cxBU8mRXj8QOEDnn16hhGJv/IHxJtZhvsabZsIMn0eLIyeOKAeqSNJJYTpA==", + "dev": true + }, + "@types/eslint": { + "version": "7.2.14", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.14.tgz", + "integrity": "sha512-pESyhSbUOskqrGcaN+bCXIQDyT5zTaRWfj5ZjjSlMatgGjIn3QQPfocAu4WSabUR7CGyLZ2CQaZyISOEX7/saw==", + "dev": true, + "peer": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.48", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", + "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", + "dev": true + }, + "@types/fs-extra": { + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.12.tgz", + "integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/hash-sum": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/hash-sum/-/hash-sum-1.0.0.tgz", + "integrity": "sha512-FdLBT93h3kcZ586Aee66HPCVJ6qvxVjBlDWNmxSGSbCZe9hTsjRKdSsl4y1T+3zfujxo9auykQMnFsfyHWD7wg==", + "dev": true + }, + "@types/highlight.js": { + "version": "9.12.4", + "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.4.tgz", + "integrity": "sha512-t2szdkwmg2JJyuCM20e8kR2X59WCE5Zkl4bzm1u1Oukjm79zpbiAv+QjnwLnuuV0WHEcX2NgUItu0pAMKuOPww==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", + "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==", + "dev": true, + "peer": true + }, + "@types/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", + "dev": true + }, + "@types/markdown-it": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.0.3.tgz", + "integrity": "sha512-MIhDl8e64vKJv3GX8irH5I/cNarX18edtdfg/+lbS92mArVl5VeaL4WKf8i06Zt2vsNuze2Vc8ELqrjoWO6hDQ==", + "dev": true, + "requires": { + "@types/highlight.js": "^9.7.0", + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "dev": true + }, + "@types/node": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.0.tgz", + "integrity": "sha512-OydMCocGMGqw/1BnWbhtK+AtwyWTOigtrQlRe57OQmTNcI3HKlVI5FGlh+c4mSqInMPLynFrTlYjfajPu9O/eQ==", + "dev": true + }, + "@vitejs/plugin-vue": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.2.4.tgz", + "integrity": "sha512-D/3H9plevPQGgQGwmV6eecvOnooLTecPR63HPffVVWPEhbfvmtYLWgznzs456NBb2DItiRTCIa1yWxvGqC+I8A==", + "dev": true, + "requires": {} + }, + "@vue/compiler-core": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.4.tgz", + "integrity": "sha512-TnUz+1z0y74O/A4YKAbzsdUfamyHV73MihrEfvettWpm9bQKVoZd1nEmR1cGN9LsXWlwAvVQBetBlWdOjmQO5Q==", + "dev": true, + "requires": { + "@babel/parser": "^7.12.0", + "@babel/types": "^7.12.0", + "@vue/shared": "3.1.4", + "estree-walker": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.4.tgz", + "integrity": "sha512-3tG2ScHkghhUBuFwl9KgyZhrS8CPFZsO7hUDekJgIp5b1OMkROr4AvxHu6rRMl4WkyvYkvidFNBS2VfOnwa6Kw==", + "dev": true, + "requires": { + "@vue/compiler-core": "3.1.4", + "@vue/shared": "3.1.4" + } + }, + "@vue/compiler-sfc": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.1.4.tgz", + "integrity": "sha512-4KDQg60Khy3SgnF+V/TB2NZqzmM4TyGRmzsxqG1SebGdMSecCweFDSlI/F1vDYk6dKiCHgmpoT9A1sLxswkJ0A==", + "dev": true, + "requires": { + "@babel/parser": "^7.13.9", + "@babel/types": "^7.13.0", + "@types/estree": "^0.0.48", + "@vue/compiler-core": "3.1.4", + "@vue/compiler-dom": "3.1.4", + "@vue/compiler-ssr": "3.1.4", + "@vue/shared": "3.1.4", + "consolidate": "^0.16.0", + "estree-walker": "^2.0.1", + "hash-sum": "^2.0.0", + "lru-cache": "^5.1.1", + "magic-string": "^0.25.7", + "merge-source-map": "^1.1.0", + "postcss": "^8.1.10", + "postcss-modules": "^4.0.0", + "postcss-selector-parser": "^6.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "consolidate": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz", + "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==", + "dev": true, + "requires": { + "bluebird": "^3.7.2" + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "postcss": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + }, + "postcss-modules": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.1.3.tgz", + "integrity": "sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ==", + "dev": true, + "requires": { + "generic-names": "^2.0.1", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@vue/compiler-ssr": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.1.4.tgz", + "integrity": "sha512-Box8fCuCFPp0FuimIswjDkjwiSDCBkHvt/xVALyFkYCiIMWv2eR53fIjmlsnEHhcBuZ+VgRC+UanCTcKvSA1gA==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.1.4", + "@vue/shared": "3.1.4" + } + }, + "@vue/component-compiler-utils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.2.tgz", + "integrity": "sha512-rAYMLmgMuqJFWAOb3Awjqqv5X3Q3hVr4jH/kgrFJpiU0j3a90tnNBplqbj+snzrgZhC9W128z+dtgMifOiMfJg==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + } + }, + "@vue/devtools-api": { + "version": "6.0.0-beta.15", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.15.tgz", + "integrity": "sha512-quBx4Jjpexo6KDiNUGFr/zF/2A4srKM9S9v2uHgMXSU//hjgq1eGzqkIFql8T9gfX5ZaVOUzYBP3jIdIR3PKIA==", + "dev": true + }, + "@vue/reactivity": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.4.tgz", + "integrity": "sha512-YDlgii2Cr9yAoKVZFzgY4j0mYlVT73986X3e5SPp6ifqckSEoFSUWXZK2Tb53TB/9qO29BEEbspnKD3m3wAwkA==", + "dev": true, + "requires": { + "@vue/shared": "3.1.4" + } + }, + "@vue/runtime-core": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.1.4.tgz", + "integrity": "sha512-qmVJgJuFxfT7M4qHQ4M6KqhKC66fjuswK+aBivE8dWiZ2rtIGl9gtJGpwqwjQEcKEBTOfvvrtrwBncYArJUO8Q==", + "dev": true, + "requires": { + "@vue/reactivity": "3.1.4", + "@vue/shared": "3.1.4" + } + }, + "@vue/runtime-dom": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.1.4.tgz", + "integrity": "sha512-vbmwgTxku1BU87Kw7r29adv0OIrDXCW0PslOPQT0O/9R5SqcXgS94Yj6zsztDjvghegenwIAPNLlDR1Auh5s+w==", + "dev": true, + "requires": { + "@vue/runtime-core": "3.1.4", + "@vue/shared": "3.1.4", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.1.4.tgz", + "integrity": "sha512-STyvZLeoQwljTMqA94Zmlo20AEBOdF57nuIz0tw+fsJvkmLt3R9HEngvHPmB0Aht9XnVP9h7oG61/5luhsbfDA==", + "dev": true, + "requires": { + "@vue/compiler-ssr": "3.1.4", + "@vue/shared": "3.1.4" + } + }, + "@vue/shared": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.4.tgz", + "integrity": "sha512-6O45kZAmkLvzGLToBxEz4lR2W6kXohCtebV2UxjH9GXjd8X9AhEn68FN9eNanFtWNzvgw1hqd6HkPRVQalqf7Q==", + "dev": true + }, + "@vuepress/bundler-vite": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/bundler-vite/-/bundler-vite-2.0.0-beta.22.tgz", + "integrity": "sha512-w0Zpsy3bOm+4vYY8qo3mwHg2E5xS+toGDoooHRhRUPnsaRVzaM8sSGE5ZRAtpo1OEj5IgkgJyLRm9xS1L9YTEQ==", + "dev": true, + "requires": { + "@vitejs/plugin-vue": "^1.2.4", + "@vue/compiler-sfc": "^3.1.4", + "@vue/server-renderer": "^3.1.4", + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "autoprefixer": "^10.2.6", + "connect-history-api-fallback": "^1.6.0", + "postcss": "^8.3.5", + "postcss-csso": "^5.0.1", + "rollup": "^2.52.7", + "vite": "^2.3.8", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + }, + "dependencies": { + "autoprefixer": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.0.tgz", + "integrity": "sha512-BzVzdjs47nT3MphTddr8eSsPVEIUCF96X6iC8V5iEB8RtxrU+ybtdhHV5rsqRqOsoyh/acQaYs7YupHPUECgmg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-lite": "^1.0.30001243", + "colorette": "^1.2.2", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + }, + "postcss-csso": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-csso/-/postcss-csso-5.0.1.tgz", + "integrity": "sha512-TI99uhhJK2L5IQXPuyNcT3XV9bffSvDPmNpHi5f+tBq+R/01ucgLsUCcTDcVNqKMxO28klI6NwgjrHrM99x9KA==", + "dev": true, + "requires": { + "csso": "^4.0.2" + } + } + } + }, + "@vuepress/cli": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/cli/-/cli-2.0.0-beta.22.tgz", + "integrity": "sha512-cEh1/03a9ycMXqjmzIuCAmQ74mQkOYl4yWZyVF5g+dgNIQcv+xUyfGM1zbOpkm4zZ9eWp01NdX6CNYrDNcw0Mw==", + "dev": true, + "requires": { + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "cac": "^6.7.3", + "chokidar": "^3.5.2", + "envinfo": "^7.8.1", + "esbuild": "^0.12.14" + } + }, + "@vuepress/client": { + "version": "2.0.0-beta.21", + "resolved": "https://registry.npmjs.org/@vuepress/client/-/client-2.0.0-beta.21.tgz", + "integrity": "sha512-kMZRq4qgED7+p4/7pHRfTDWXZPvvCRbt5GA6tvEhqAVJZ/wvmPckXxzLA7MQcuwsPjNuqJuFnofMmTte8wV07Q==", + "dev": true, + "requires": { + "@vuepress/shared": "2.0.0-beta.21", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "@vuepress/core": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-2.0.0-beta.22.tgz", + "integrity": "sha512-22kwkGIbJxgMevj+byXfKvPVzXQsHvUguftBiBQEMFly09lz4g3bJNa3M6RD4JjciLWWavHKeyt8Rr21OX7R/w==", + "dev": true, + "requires": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/markdown": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "gray-matter": "^4.0.3", + "toml": "^3.0.0" + } + }, + "@vuepress/markdown": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-2.0.0-beta.22.tgz", + "integrity": "sha512-QQQmmbSuIN/Up4ne4PIsLfgXdE2rGTZwWTrR4hT8aFxv18v9gnz/PqUCsprIcm7UAWzSp5EQZg6RexPqHbzIpQ==", + "dev": true, + "requires": { + "@types/markdown-it": "^12.0.2", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "markdown-it": "^12.1.0", + "markdown-it-anchor": "^8.1.0", + "markdown-it-emoji": "^2.0.0", + "mdurl": "^1.0.1" + } + }, + "@vuepress/plugin-active-header-links": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-beta.22.tgz", + "integrity": "sha512-Jo0fHImfykMOlER1vYtd3EkVRjv/ZgnS0awFsfbCIR6lZdU41DRQC9AbBuIIap8DGClIM33oQs5Wwtd2HFBDkw==", + "dev": true, + "requires": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "ts-debounce": "^3.0.0", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "@vuepress/plugin-back-to-top": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-beta.22.tgz", + "integrity": "sha512-T4jp8NCvEfKI6tOJp1ZcuSyhBY8l43/2ZB2b6RQawU9nRmcMaGTUPyy0KZF2mZQdo5LHQPOm88Qgoh+nMyg4mw==", + "dev": true, + "requires": { + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "ts-debounce": "^3.0.0", + "vue": "^3.1.4" + } + }, + "@vuepress/plugin-container": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-container/-/plugin-container-2.0.0-beta.22.tgz", + "integrity": "sha512-mGC6VTN/g+W5JMqaxjzrJY4GohsFP/l2uLUs6mJfxKEV3sA/GhFhC5BKAo3XCdjWGWwajTab+9IhGzz7myThpQ==", + "dev": true, + "requires": { + "@types/markdown-it": "^12.0.2", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/markdown": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "markdown-it": "^12.1.0", + "markdown-it-container": "^3.0.0" + } + }, + "@vuepress/plugin-git": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-git/-/plugin-git-2.0.0-beta.22.tgz", + "integrity": "sha512-VKFvNUgwOQ2Erpdis5Dx0NFcQFSHrOjKmMtKH+pyFQiCUf2sxPoq2jcigsfpUTk3owDbmfeZ2PXiKlA7qBsing==", + "dev": true, + "requires": { + "@vuepress/core": "2.0.0-beta.22", + "execa": "^5.1.1" + } + }, + "@vuepress/plugin-medium-zoom": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-beta.22.tgz", + "integrity": "sha512-8yoreaxsS3vgycXrvp6yMrmhzuy9Xg1cMVRQh3Zr56sTw9Hby48y0ubzTWm3VN5JyECXXuN6Yk3o6czbnPIzDQ==", + "dev": true, + "requires": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "medium-zoom": "^1.0.6", + "vue": "^3.1.4" + } + }, + "@vuepress/plugin-nprogress": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-beta.22.tgz", + "integrity": "sha512-9A4STLBMDD4ZY8QpMuwhZORXaQi0qI4Uy1G7EW5+tJCDre86652u9GPhVWpy1kfQIaJw/1xr7ur9EAZtuTvUZA==", + "dev": true, + "requires": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "nprogress": "^0.2.0", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "@vuepress/plugin-palette": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-palette/-/plugin-palette-2.0.0-beta.22.tgz", + "integrity": "sha512-BKFM/KN8BXmHizYWbrQDK+aJfuKuhq2aO1LHMwN1TKzuYlCCc//sJD1JlRS66rv2+2ZIbUW2y/g0SE4iuudu+Q==", + "dev": true, + "requires": { + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/utils": "2.0.0-beta.21", + "chokidar": "^3.5.2" + } + }, + "@vuepress/plugin-prismjs": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-beta.22.tgz", + "integrity": "sha512-13Q/xBiW6UUbwxfRoijitcA0rr6QZ1dyh5XvqLUcm8SQIY6PejEAXp2pnb2MGAdCJIa5ILcrhvjTK1aru4AdHw==", + "dev": true, + "requires": { + "@vuepress/core": "2.0.0-beta.22", + "prismjs": "^1.24.1" + } + }, + "@vuepress/plugin-search": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-2.0.0-beta.22.tgz", + "integrity": "sha512-QwMns4aBFS3kuQgQgtPd4RbcYIoNlux+hx6Tb3ze9Z7xTk7yh0U5GIR96vT3bJ4jQ7axVp72HucZBK+XjIJhTQ==", + "dev": true, + "requires": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "chokidar": "^3.5.2", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "@vuepress/plugin-shiki": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-shiki/-/plugin-shiki-2.0.0-beta.22.tgz", + "integrity": "sha512-ZkAm6eBXcTfgV9qAGn9RkA9IHtA0c9se12aUb2WFuk6jsnnJGfYT4sWXymzFctla7ZSY/DLz0V9opLS/5O9q/g==", + "dev": true, + "requires": { + "@vuepress/core": "2.0.0-beta.22", + "shiki": "^0.9.5" + } + }, + "@vuepress/plugin-theme-data": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-beta.22.tgz", + "integrity": "sha512-SF2spYJ9GBgiFUspxrpQGErOrc0UYJpzE1RzzNqXPVFhE8r9JPXcQkK6wVxpDcFb31VlB5kr2dYgMYGOjM5L6w==", + "dev": true, + "requires": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "vue": "^3.1.4" + } + }, + "@vuepress/shared": { + "version": "2.0.0-beta.21", + "resolved": "https://registry.npmjs.org/@vuepress/shared/-/shared-2.0.0-beta.21.tgz", + "integrity": "sha512-G5+iJRNEEq+TBYCOkUMS32dLAsv2bQ/3qTxSwa/ccX6UDSMAkCm/85GLN5DwrCPmyf2SHHomG8C/qvIZp3+jRA==", + "dev": true, + "requires": { + "@vue/shared": "^3.1.4" + } + }, + "@vuepress/theme-default": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-2.0.0-beta.22.tgz", + "integrity": "sha512-+FfsY0QCjfgUH2jeEmopdOQ47+PxaZvDCoThnmnW1AN8UMtNUDZOlUn7xQRs/TtkDQQ5zl6cxyPv0jUudtn8RA==", + "dev": true, + "requires": { + "@vuepress/client": "2.0.0-beta.21", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/plugin-active-header-links": "2.0.0-beta.22", + "@vuepress/plugin-back-to-top": "2.0.0-beta.22", + "@vuepress/plugin-container": "2.0.0-beta.22", + "@vuepress/plugin-git": "2.0.0-beta.22", + "@vuepress/plugin-medium-zoom": "2.0.0-beta.22", + "@vuepress/plugin-nprogress": "2.0.0-beta.22", + "@vuepress/plugin-palette": "2.0.0-beta.22", + "@vuepress/plugin-prismjs": "2.0.0-beta.22", + "@vuepress/plugin-theme-data": "2.0.0-beta.22", + "@vuepress/shared": "2.0.0-beta.21", + "@vuepress/utils": "2.0.0-beta.21", + "sass": "^1.35.1", + "sass-loader": "^12.1.0", + "vue": "^3.1.4", + "vue-router": "^4.0.10" + } + }, + "@vuepress/utils": { + "version": "2.0.0-beta.21", + "resolved": "https://registry.npmjs.org/@vuepress/utils/-/utils-2.0.0-beta.21.tgz", + "integrity": "sha512-PMqGIbjKlLEfIoabj7yKuXTxXc7IkHUuUzmG4aF+RZ1YVVGeUUmrXLRocLOrke9Lx5aSBZ+XxjqAQlkptXWPQw==", + "dev": true, + "requires": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "@types/hash-sum": "^1.0.0", + "@vuepress/shared": "2.0.0-beta.21", + "chalk": "^4.1.1", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "globby": "^11.0.4", + "hash-sum": "^2.0.0", + "ora": "^5.4.1", + "upath": "^2.0.1" + }, + "dependencies": { + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true, + "peer": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "peer": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true, + "peer": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "peer": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "peer": true + }, + "acorn": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", + "dev": true, + "peer": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, + "requires": { + "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-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peer": true, + "requires": {} + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true, + "peer": true + }, + "cac": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.3.tgz", + "integrity": "sha512-ECVqVZh74qgSuZG9YOt2OJPI3wGcf+EwwuF/XIOYqZBD0KZYLtgPWqFPxmDPQ6joxI1nOlvVgRV6VT53Ooyocg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001243", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz", + "integrity": "sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "peer": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", + "dev": true + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "csstype": { + "version": "2.6.17", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", + "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==", + "dev": true + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "electron-to-chromium": { + "version": "1.3.772", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.772.tgz", + "integrity": "sha512-X/6VRCXWALzdX+RjCtBU6cyg8WZgoxm9YA02COmDOiNJEZ59WkQggDbWZ4t/giHi/3GS+cvdrP6gbLISANAGYA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", + "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "es-module-lexer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", + "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", + "dev": true, + "peer": true + }, + "esbuild": { + "version": "0.12.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.15.tgz", + "integrity": "sha512-72V4JNd2+48eOVCXx49xoSWHgC3/cCy96e7mbXKY+WOWghN00cCmlGnwVLRhRHorvv0dgCyuMYBZlM2xDM5OQw==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "peer": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "peer": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "peer": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "peer": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "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" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fast-deep-equal": { + "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==", + "dev": true, + "peer": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@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": { + "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==", + "dev": true, + "peer": true + }, + "fastq": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", + "dev": true + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "generic-names": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", + "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "peer": true + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "jest-worker": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "peer": true + }, + "json-schema-traverse": { + "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==", + "dev": true, + "peer": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true + }, + "linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "peer": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "markdown-it": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.1.0.tgz", + "integrity": "sha512-7temG6IFOOxfU0SgzhqR+vr2diuMhyO5uUIEZ3C5NbXhqC9uFUHoU41USYuDFoZRsaY7BEIEei874Z20VMLF6A==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + } + } + }, + "markdown-it-anchor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.1.0.tgz", + "integrity": "sha512-QgnJbBhoDL8YIxeOnxxjhuMPsnjhHSixs3NuZBW8srNrwHlZUncY0j75bukEQoLRV+YCuwfVSqY4ShFfnzTaDQ==", + "dev": true, + "requires": {} + }, + "markdown-it-container": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-3.0.0.tgz", + "integrity": "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==", + "dev": true + }, + "markdown-it-emoji": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.0.tgz", + "integrity": "sha512-39j7/9vP/CPCKbEI44oV8yoPJTpvfeReTn/COgRhSpNrjWF3PfP/JUxxB0hxV6ynOY8KH8Y8aX9NMDdo6z+6YQ==", + "dev": true + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "medium-zoom": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.0.6.tgz", + "integrity": "sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true, + "peer": true + }, + "mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "dev": true, + "peer": true, + "requires": { + "mime-db": "1.48.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "onigasm": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", + "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "peer": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "ansi-styles": { + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "optional": true + }, + "prismjs": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.24.1.tgz", + "integrity": "sha512-mNPsedLuk90RVJioIky8ANZEwYm5w9LcvCXrxHlwf4fNVSn8jEipMybMkWUyyF0JhnC+C4VcOVSBuHRKs1L5Ow==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "peer": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "peer": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rollup": { + "version": "2.53.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.53.1.tgz", + "integrity": "sha512-yiTCvcYXZEulNWNlEONOQVlhXA/hgxjelFSjNcrwAAIfYx/xqjSHwqg/cCaWOyFRKr+IQBaXwt723m8tCaIUiw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "sass": { + "version": "1.35.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.35.2.tgz", + "integrity": "sha512-jhO5KAR+AMxCEwIH3v+4zbB2WB0z67V1X0jbapfVwQQdjHZUGUyukpnoM6+iCMfsIUC016w9OPKQ5jrNOS9uXw==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", + "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "peer": true, + "requires": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "peer": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shiki": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.9.5.tgz", + "integrity": "sha512-XFn+rl3wIowDjzdr5DlHoHgQphXefgUTs2bNp/bZu4WF9gTrTLnKwio3f28VjiFG6Jpip7yQn/p4mMj6OrjrtQ==", + "dev": true, + "requires": { + "json5": "^2.2.0", + "onigasm": "^2.2.5", + "vscode-textmate": "5.2.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true, + "peer": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "peer": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true, + "peer": true + }, + "terser": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "dev": true, + "peer": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "peer": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz", + "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==", + "dev": true, + "peer": true, + "requires": { + "jest-worker": "^27.0.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "dev": true + }, + "ts-debounce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ts-debounce/-/ts-debounce-3.0.0.tgz", + "integrity": "sha512-7jiRWgN4/8IdvCxbIwnwg2W0bbYFBH6BxFqBjMKk442t7+liF2Z1H6AUCcl8e/pD93GjPru+axeiJwFmRww1WQ==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "peer": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "vite": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.4.1.tgz", + "integrity": "sha512-4BpKRis9uxIqPfIEcJ18LTBsamqnDFxTx45CXwagHjNltHa6PFEvf8Pe6OpgIHb0OyWT30OXOSSQvdOaX4OBiQ==", + "dev": true, + "requires": { + "esbuild": "^0.12.8", + "fsevents": "~2.3.2", + "postcss": "^8.3.5", + "resolve": "^1.20.0", + "rollup": "^2.38.5" + }, + "dependencies": { + "postcss": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + } + } + }, + "vscode-textmate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.2.0.tgz", + "integrity": "sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==", + "dev": true + }, + "vue": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.1.4.tgz", + "integrity": "sha512-p8dcdyeCgmaAiZsbLyDkmOLcFGZb/jEVdCLW65V68LRCXTNX8jKsgah2F7OZ/v/Ai2V0Fb1MNO0vz/GFqsPVMA==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.1.4", + "@vue/runtime-dom": "3.1.4", + "@vue/shared": "3.1.4" + } + }, + "vue-router": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.10.tgz", + "integrity": "sha512-YbPf6QnZpyyWfnk7CUt2Bme+vo7TLfg1nGZNkvYqKYh4vLaFw6Gn8bPGdmt5m4qrGnKoXLqc4htAsd3dIukICA==", + "dev": true, + "requires": { + "@vue/devtools-api": "^6.0.0-beta.14" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "vuepress-vite": { + "version": "2.0.0-beta.22", + "resolved": "https://registry.npmjs.org/vuepress-vite/-/vuepress-vite-2.0.0-beta.22.tgz", + "integrity": "sha512-6bhdpih2bKO+aJ7xJssYxKInAafNxfg3XQ76IE8C39W7UR30sOfX04CdkDTgNOvqrE2LVQz7/frIg4LY3r9A1A==", + "dev": true, + "requires": { + "@vuepress/bundler-vite": "2.0.0-beta.22", + "@vuepress/cli": "2.0.0-beta.22", + "@vuepress/core": "2.0.0-beta.22", + "@vuepress/theme-default": "2.0.0-beta.22" + } + }, + "watchpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", + "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "dev": true, + "peer": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.44.0.tgz", + "integrity": "sha512-I1S1w4QLoKmH19pX6YhYN0NiSXaWY8Ou00oA+aMcr9IUGeF5azns+IKBkfoAAG9Bu5zOIzZt/mN35OffBya8AQ==", + "dev": true, + "peer": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.0", + "es-module-lexer": "^0.7.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.2.0", + "webpack-sources": "^2.3.0" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true, + "peer": true + } + } + }, + "webpack-sources": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz", + "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==", + "dev": true, + "peer": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "peer": true + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 00000000..4bb122f8 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,14 @@ +{ + "scripts": { + "dev": "vuepress-vite dev .", + "build": "vuepress-vite build .", + "format": "npx -y prettier --write '{.vuepress/{config,navbar,sidebar}.js,./**/*.md}'" + }, + "devDependencies": { + "@vue/component-compiler-utils": "^3.2.2", + "@vuepress/plugin-back-to-top": "^2.0.0-beta.22", + "@vuepress/plugin-search": "^2.0.0-beta.22", + "@vuepress/plugin-shiki": "^2.0.0-beta.22", + "vuepress-vite": "^2.0.0-beta.22" + } +} diff --git a/docs/plugins-create.md b/docs/plugins-create.md deleted file mode 100644 index 7766d431..00000000 --- a/docs/plugins-create.md +++ /dev/null @@ -1,281 +0,0 @@ -## What's in a Plugin - -A plugin is a git repo, with a couple executable scripts, to support versioning another language or tool. These scripts are run when `list-all`, `install` or `uninstall` commands are run. You can set or unset env vars and do anything required to setup the environment for the tool. - -## Required Scripts - -- `bin/list-all` - lists all installable versions -- `bin/download` - download source code or binary for the specified version -- `bin/install` - installs the specified version - -## Environment Variables - -All scripts except `bin/list-all` will have access to the following env vars to act upon: - -- `ASDF_INSTALL_TYPE` - `version` or `ref` -- `ASDF_INSTALL_VERSION` - if `ASDF_INSTALL_TYPE` is `version` then this will be the version number. Else it will be the git ref that is passed. Might point to a tag/commit/branch on the repo. -- `ASDF_INSTALL_PATH` - the dir where the it _has been_ installed (or _should_ be installed in case of the `bin/install` script) - -These additional environment variables will be available to the `bin/install` script: - -- `ASDF_CONCURRENCY` - the number of cores to use when compiling the source code. Useful for setting `make -j`. -- `ASDF_DOWNLOAD_PATH` - the path to where the source code or binary was downloaded by the `bin/download` script. - -These additional environment variables will be available to the `bin/download` script: - -- `ASDF_DOWNLOAD_PATH` - the path to where the source code or binary should be downloaded. - -#### bin/list-all - -Must print a string with a space-separated list of versions. Example output would be the following: - -``` -1.0.1 1.0.2 1.3.0 1.4 -``` - -Note that the newest version should be listed last so it appears closer to the user's prompt. This is helpful since the `list-all` command prints each version on it's own line. If there are many versions it's possible the early versions will be off screen. - -If versions are being pulled from releases page on a website it's recommended to not sort the versions if at all possible. Often the versions are already in the correct order or, in reverse order, in which case something like `tac` should suffice. If you must sort versions manually you cannot rely on `sort -V` since it is not supported on OSX. An alternate sort function [like this is a better choice](https://github.com/vic/asdf-idris/blob/master/bin/list-all#L6). - -#### bin/download - -This script must download the source or binary, in the path contained in the `ASDF_DOWNLOAD_PATH` environment variable. If the downloaded source or binary is compressed, only the uncompressed source code or binary may be placed in the `ASDF_DOWNLOAD_PATH` directory. - -The script must exit with a status of `0` when the download is successful. If the download fails the script must exit with any non-zero exit status. - -If possible the script should only place files in the `ASDF_DOWNLOAD_PATH`. If the download fails no files should be placed in the directory. - -If this script is not present asdf will assume that the `bin/install` script is present and will download and install the version. asdf only works without this script to support legacy plugins. All plugins must include this script, and eventually support for legacy plugins will be removed. - -#### bin/install - -This script should install the version, in the path mentioned in `ASDF_INSTALL_PATH`. By default, asdf will create shims for any files in `$ASDF_INSTALL_PATH/bin` (this can be customized with the optional [bin/list-bin-paths](#binlist-bin-paths) script). - -The install script should exit with a status of `0` when the installation is successful. If the installation fails the script should exit with any non-zero exit status. - -If possible the script should only place files in the `ASDF_INSTALL_PATH` directory once the build and installation of the tool is deemed successful by the install script. asdf [checks for the existence](https://github.com/asdf-vm/asdf/blob/242d132afbf710fe3c7ec23c68cec7bdd2c78ab5/lib/utils.sh#L44) of the `ASDF_INSTALL_PATH` directory in order to determine if that version of the tool is installed. If the `ASDF_INSTALL_PATH` directory is populated at the beginning of the installation process other asdf commands run in other terminals during the installation may consider that version of the tool installed, even when it is not fully installed. - -If you want your plugin to work with asdf version 0.7.* and earlier and version 0.8.* and newer check for the presence of the `ASDF_DOWNLOAD_PATH` environment variable. If it is not set download the source code in the bin/install callback. If it is set assume the `bin/download` script already downloaded it. - -## Optional Scripts - -#### bin/help scripts - -This is not one callback script but rather a set of callback scripts that each print different documentation to STDOUT. The possible callback scripts are listed below. Note that `bin/help.overview` is a special case as it must be present for any help output to be displayed for the script. - -* `bin/help.overview` - This script should output a general description about the plugin and the tool being managed. No heading should be printed as asdf will print headings. Output may be free-form text but ideally only one short paragraph. This script must be present if you want asdf to provide help information for your plugin. All other help callback scripts are optional. -* `bin/help.deps` - This script should output the list of dependencies tailored to the operating system. One dependency per line. -* `bin/help.config` - This script should print any required or optional configuration that may be available for the plugin and tool. Any environment variables or other flags needed to install or compile the tool (for the users operating system when possible). Output can be free-form text. -* `bin/help.links` - This should be a list of links relevant to the plugin and tool (again, tailored to the current operating system when possible). One link per line. Lines may be in the format `: <link>` or just `<link>`. - -Each of these scripts should tailor their output to the current operating system. For example, when on Ubuntu the deps script could output the dependencies as apt-get packages that must be installed. The script should also tailor its output to the value of `ASDF_INSTALL_VERSION` and `ASDF_INSTALL_TYPE` when the variables are set. They are optional and will not always be set. - -The help callback script MUST NOT output any information that is already covered in the core asdf-vm documentation. General asdf usage information must not be present. - -#### bin/list-bin-paths - -List executables for the specified version of the tool. Must print a string with a space-separated list of dir paths that contain executables. The paths must be relative to the install path passed. Example output would be: - -``` -bin tools veggies -``` - -This will instruct asdf to create shims for the files in `<install-path>/bin`, `<install-path>/tools` and `<install-path>/veggies` - -If this script is not specified, asdf will look for the `bin` dir in an installation and create shims for those. - -#### bin/exec-env - -Setup the env to run the binaries in the package. - -#### bin/exec-path - -Get the executable path for the specified version of the tool. Must print a string with the relative executable path. This allows the plugin to conditionally override the shim's specified executable path, otherwise return the default path specified by the shim. - -``` -Usage: - plugin/bin/exec-path <install-path> <command> <executable-path> - -Example Call: - ~/.asdf/plugins/foo/bin/exec-path "~/.asdf/installs/foo/1.0" "foo" "bin/foo" - -Output: - bin/foox -``` - -#### bin/uninstall - -Uninstalls a specific version of a tool. - -#### bin/list-legacy-filenames - -Register additional setter files for this plugin. Must print a string with a space-separated list of filenames. - -``` -.ruby-version .rvmrc -``` - -Note: This will only apply for users who have enabled the `legacy_version_file` option in their `~/.asdfrc`. - -#### bin/parse-legacy-file - -This can be used to further parse the legacy file found by asdf. If `parse-legacy-file` isn't implemented, asdf will simply cat the file to determine the version. The script will be passed the file path as its first argument. - -#### bin/post-plugin-add - -This can be used to run any post-installation actions after the plugin has been added to asdf. - -The script has access to the path the plugin was installed (`${ASDF_PLUGIN_PATH}`) and the source URL (`${ASDF_PLUGIN_SOURCE_URL}`), if any was used. - -See also the related hooks: - -* `pre_asdf_plugin_add` -* `pre_asdf_plugin_add_${plugin_name}` -* `post_asdf_plugin_add` -* `post_asdf_plugin_add_${plugin_name}` - -#### bin/pre-plugin-remove - -This can be used to run any pre-removal actions before the plugin will be removed from asdf. - -The script has access to the path the plugin was installed in (`${ASDF_PLUGIN_PATH}`). - -See also the related hooks: - -* `pre_asdf_plugin_remove` -* `pre_asdf_plugin_remove_${plugin_name}` -* `post_asdf_plugin_remove` -* `post_asdf_plugin_remove_${plugin_name}` - -## Extension commands for asdf CLI. - -It's possible for plugins to define new asdf commands by providing `lib/commands/command*.bash` scripts or executables that -will be callable using the asdf command line interface by using the plugin name as a subcommand. - -For example, suppose a `foo` plugin has: - -```shell -foo/ - lib/commands/ - command.bash - command-bat.bash - command-bat-man.bash - command-help.bash -``` - -Users can now execute - -```shell -$ asdf foo # same as running `$ASDF_DATA_DIR/plugins/foo/lib/commands/command.bash` -$ asdf foo bar # same as running `$ASDF_DATA_DIR/plugins/foo/lib/commands/command.bash bar` -$ asdf foo help # same as running `$ASDF_DATA_DIR/plugins/foo/lib/commands/command-help.bash` -$ asdf foo bat man # same as running `$ASDF_DATA_DIR/plugins/foo/lib/commands/command-bat-man.bash` -$ asdf foo bat baz # same as running `$ASDF_DATA_DIR/plugins/foo/lib/commands/command-bat.bash baz` -``` - -Plugin authors can use this feature to provide utilities related to their tools, -or even create plugins that are just new command extensions for asdf itself. - -When invoked, if extension commands do not have their executable-bit set, they will be -sourced as bash scripts, having all of the functions from `$ASDF_DIR/lib/utils.bash` available. -Also, the `$ASDF_CMD_FILE` resolves to the full path of the file being sourced. -If the executable bit is set, they are just executed and replace the asdf execution. - -A good example of this feature is for plugins like [`haxe`](https://github.com/asdf-community/asdf-haxe) -which provides the `asdf haxe neko-dylibs-link` to fix an issue where haxe executables expect to find -dynamic libraries relative to the executable directory. - -If your plugin provides an asdf extension command, be sure to mention about it on your plugin's README. - -## Custom shim templates - -**PLEASE use this feature only if absolutely required** - -asdf allows custom shim templates. For an executable called `foo`, if there's a `shims/foo` file in the plugin, then asdf will copy that file instead of using it's standard shim template. - -This must be used wisely. For now AFAIK, it's only being used in the Elixir plugin, because an executable is also read as an Elixir file apart from just being an executable. Which makes it not possible to use the standard bash shim. - -## Testing plugins - -`asdf` contains the `plugin-test` command to test your plugin. You can use it as follows - -```sh -asdf plugin test <plugin-name> <plugin-url> [--asdf-tool-version <version>] [--asdf-plugin-gitref <git-ref>] [test-command*] -``` - -Only the two first arguments are required. -If __version_ is specified, the tool will be installed with that specific version. Defaults to whatever returns `asdf latest <plugin-name>`. -If _git-ref_ is specified, the plugin itself is checked out at that commit/branch/tag, useful for testing a pull-request on your plugin's CI. - -Rest arguments are considered the command to execute to ensure the installed tool works correctly. -Normally it would be something that takes `--version` or `--help`. -For example, to test the NodeJS plugin, we could run - -```sh -asdf plugin test nodejs https://github.com/asdf-vm/asdf-nodejs.git node --version -``` - -We strongly recommend you test your plugin on a CI environment and make sure it works on both Linux and OSX. - -#### Example GitHub Action - -The [asdf-vm/actions](https://github.com/asdf-vm/actions) repo provides a GitHub Action for testing your plugins hosted on github. - -```yaml -steps: - - name: asdf_plugin_test - uses: asdf-vm/actions/plugin-test@v1 - with: - command: "my_tool --version" - env: - GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} # automatically provided -``` - -#### Example TravisCI config - -Here is a sample `.travis.yml` file, customize it to your needs - -```yaml -language: c -script: asdf plugin test nodejs $TRAVIS_BUILD_DIR 'node --version' -before_script: - - git clone https://github.com/asdf-vm/asdf.git asdf - - . asdf/asdf.sh -os: - - linux - - osx -``` - -Note: -When using another CI, you will need to check what variable maps to the repo path. - -You also have the option to pass a relative path to `plugin-test`. - -For example, if the test script is ran in the repo directory: `asdf plugin test nodejs . 'node --version'`. - -## GitHub API Rate Limiting - -If your plugin's `list-all` depends on accessing the GitHub API, make sure you provide an Authorization token when accessing it, otherwise your tests might fail due to rate limiting. - -To do so, create a [new personal token](https://github.com/settings/tokens/new) with only `public_repo` access. - -Then on your travis.ci build settings add a _secure_ environment variable for it named something like `GITHUB_API_TOKEN`. And _DO NOT_ EVER publish your token in your code. - -Finally, add something like the following to `bin/list-all` - -```shell -cmd="curl -s" -if [ -n "$GITHUB_API_TOKEN" ]; then - cmd="$cmd -H 'Authorization: token $GITHUB_API_TOKEN'" -fi - -cmd="$cmd $releases_path" -``` - -## Submitting plugins to the official plugins repository - -`asdf` can easily install plugins by specifying the plugin repository url, e.g. `plugin add my-plugin https://github.com/user/asdf-my-plugin.git`. - -To make it easier on your users, you can add your plugin to the official plugins repository to have your plugin listed and easily installable using a shorter command, e.g. `asdf plugin add my-plugin`. - -Follow the instruction at the plugins repository: [asdf-vm/asdf-plugins](https://github.com/asdf-vm/asdf-plugins). diff --git a/docs/pt-br/plugins-create.md b/docs/plugins/create.md similarity index 98% rename from docs/pt-br/plugins-create.md rename to docs/plugins/create.md index c4a5e8f5..4c61577b 100644 --- a/docs/pt-br/plugins-create.md +++ b/docs/plugins/create.md @@ -1,3 +1,5 @@ +# Create a Plugin + ## What's in a Plugin A plugin is a git repo, with a couple executable scripts, to support versioning another language or tool. These scripts are run when `list-all`, `install` or `uninstall` commands are run. You can set or unset env vars and do anything required to setup the environment for the tool. @@ -29,7 +31,7 @@ These additional environment variables will be available to the `bin/download` s Must print a string with a space-separated list of versions. Example output would be the following: -``` +```shell 1.0.1 1.0.2 1.3.0 1.4 ``` @@ -55,7 +57,7 @@ The install script should exit with a status of `0` when the installation is suc If possible the script should only place files in the `ASDF_INSTALL_PATH` directory once the build and installation of the tool is deemed successful by the install script. asdf [checks for the existence](https://github.com/asdf-vm/asdf/blob/242d132afbf710fe3c7ec23c68cec7bdd2c78ab5/lib/utils.sh#L44) of the `ASDF_INSTALL_PATH` directory in order to determine if that version of the tool is installed. If the `ASDF_INSTALL_PATH` directory is populated at the beginning of the installation process other asdf commands run in other terminals during the installation may consider that version of the tool installed, even when it is not fully installed. -If you want your plugin to work with asdf version 0.7.* and earlier and version 0.8.* and newer check for the presence of the `ASDF_DOWNLOAD_PATH` environment variable. If it is not set download the source code in the bin/install callback. If it is set assume the `bin/download` script already downloaded it. +If you want your plugin to work with asdf version 0.7._ and earlier and version 0.8._ and newer check for the presence of the `ASDF_DOWNLOAD_PATH` environment variable. If it is not set download the source code in the bin/install callback. If it is set assume the `bin/download` script already downloaded it. ## Optional Scripts @@ -76,7 +78,7 @@ The help callback script MUST NOT output any information that is already covered List executables for the specified version of the tool. Must print a string with a space-separated list of dir paths that contain executables. The paths must be relative to the install path passed. Example output would be: -``` +```shell bin tools veggies ``` @@ -92,7 +94,7 @@ Setup the env to run the binaries in the package. Get the executable path for the specified version of the tool. Must print a string with the relative executable path. This allows the plugin to conditionally override the shim's specified executable path, otherwise return the default path specified by the shim. -``` +```shell Usage: plugin/bin/exec-path <install-path> <command> <executable-path> @@ -111,7 +113,7 @@ Uninstalls a specific version of a tool. Register additional setter files for this plugin. Must print a string with a space-separated list of filenames. -``` +```shell .ruby-version .rvmrc ``` @@ -199,7 +201,7 @@ This must be used wisely. For now AFAIK, it's only being used in the Elixir plug `asdf` contains the `plugin-test` command to test your plugin. You can use it as follows -```sh +```shell asdf plugin test <plugin-name> <plugin-url> [--asdf-tool-version <version>] [--asdf-plugin-gitref <git-ref>] [test-command*] ``` @@ -211,7 +213,7 @@ Rest arguments are considered the command to execute to ensure the installed too Normally it would be something that takes `--version` or `--help`. For example, to test the NodeJS plugin, we could run -```sh +```shell asdf plugin test nodejs https://github.com/asdf-vm/asdf-nodejs.git node --version ``` diff --git a/docs/pt-BR/guide/getting-started.md b/docs/pt-BR/guide/getting-started.md new file mode 100644 index 00000000..8b8363b8 --- /dev/null +++ b/docs/pt-BR/guide/getting-started.md @@ -0,0 +1,3 @@ +# Getting Started + +TODO: Translate diff --git a/docs/pt-BR/guide/introduction.md b/docs/pt-BR/guide/introduction.md new file mode 100644 index 00000000..31b344e1 --- /dev/null +++ b/docs/pt-BR/guide/introduction.md @@ -0,0 +1,3 @@ +# Introduction + +TODO: Translate diff --git a/docs/pt-BR/index.md b/docs/pt-BR/index.md new file mode 100644 index 00000000..6d3775ce --- /dev/null +++ b/docs/pt-BR/index.md @@ -0,0 +1,26 @@ +--- +home: true +title: Home +# heroImage: https://vuejs.org/images/logo.png +actions: + - text: "TODO: Translate" + link: /pt-BR/guide/getting-started.html + type: primary + - text: "TODO: Translate" + link: /pt-BR/guide/introduction.html + type: secondary +features: + - title: One Tool + details: "Manage each of your project runtimes with a single CLI tool and command interface." + - title: Plugins + details: "Large ecosystem of existing runtimes & tools. Simple API to add support for new tools as you need!" + - title: Backwards Compatible + details: "Support for existing config files .nvmrc, .node-versions, .ruby-version for smooth migration!" + - title: "One Config File" + details: ".tool-versions to manage all your tools, runtimes and their versions in a single, sharable place." + - title: "Shells" + details: "Supports Bash, ZSH & Fish with completions available." + - title: "GitHub Actions" + details: "Provides a GitHub Action to install and utilize your .tool-verions in your CICD workflows." +# footer: MIT Licensed +--- diff --git a/docs/pt-br/_404.md b/docs/pt-br/_404.md deleted file mode 100644 index 52d8cb59..00000000 --- a/docs/pt-br/_404.md +++ /dev/null @@ -1,13 +0,0 @@ -<h2 align="center">404</h2> - -<div style="text-align:center"> - -Parece que estamos perdido! :sweat_smile: - -Voltar para a [página inicial](/pt-br/). - -Se estiver perdido novamente, [grite por ajuda ](https://github.com/asdf-vm/asdf/issues/new) :mega: - -Se você está aqui por causa de uma página ou tradução faltando, [pense em contribuir ](contributing-doc-site) :two_hearts: - -</div> diff --git a/docs/pt-br/_coverpage.md b/docs/pt-br/_coverpage.md deleted file mode 100644 index d83ce83e..00000000 --- a/docs/pt-br/_coverpage.md +++ /dev/null @@ -1,14 +0,0 @@ -<!-- ![logo](_media.asdf-logo.svg) --> - -# asdf - -> Gerencie múltiplas versões com um simples CLI - -<!-- insert asciinema or other gif here --> - -- Bash, Zsh, Fish -- Node.js, Ruby, Python, Elixir ... [qual sua linguagem favorita?](plugins-all?id=plugin-list) -- Extensivo com um simples sistema de plugins - -[GitHub](https://github.com/asdf-vm/asdf) -[Começar](/pt-br/core-manage-asdf) diff --git a/docs/pt-br/_navbar.md b/docs/pt-br/_navbar.md deleted file mode 100644 index 659c4249..00000000 --- a/docs/pt-br/_navbar.md +++ /dev/null @@ -1,4 +0,0 @@ -- Tradução - - [:uk: English](/) - - [:brazil: Português](/pt-br/) - - [Adicionar tradução](/pt-br/contributing-doc-site?id=translations) diff --git a/docs/pt-br/_sidebar.md b/docs/pt-br/_sidebar.md deleted file mode 100644 index f5d62580..00000000 --- a/docs/pt-br/_sidebar.md +++ /dev/null @@ -1,20 +0,0 @@ -<!-- docs/_sidebar.md --> - -- **Núcleo** -- [Gerenciar asdf](/pt-br/core-manage-asdf) -- [Gerenciar Plugins](/pt-br/core-manage-plugins) -- [Gerenciar Versões](/pt-br/core-manage-versions) -- [Configuração](/pt-br/core-configuration) -- [Todos os comandos](/pt-br/core-commands) -- [Alterações](/pt-br/changelog) <!-- pulls in changelog from repo --> -- **Plugins** -- [Criar Plugins](/pt-br/plugins-create) -- [Todos os Plugins](/pt-br/plugins-all) <!-- pulls in asdf-vm/asdf-plugins readme --> -- **Contribuições** -- [Núcleo asdf](/pt-br/contributing-core-asdf) -- [Documentação](/pt-br/contributing-doc-site) -- [Agradecimentos](/pt-br/thanks) -- **Comunidade & Questões** -- [![GitHub Issues](https://icongr.am/simple/github.svg?color=808080&size=16) GitHub Issues](https://github.com/asdf-vm/asdf/issues) -- [![GitHub Discussions](https://icongr.am/simple/github.svg?color=808080&size=16) GitHub Discussions](https://github.com/asdf-vm/asdf/discussions) -- [![StackOverflow Tag](https://icongr.am/fontawesome/stack-overflow.svg?size=16&color=808080) StackOverflow Tag](https://stackoverflow.com/questions/tagged/asdf-vm) diff --git a/docs/pt-br/contributing-core-asdf.md b/docs/pt-br/contributing-core-asdf.md deleted file mode 100644 index a8688970..00000000 --- a/docs/pt-br/contributing-core-asdf.md +++ /dev/null @@ -1,20 +0,0 @@ -## Desenvolvimento - -Para desenvolver o projeto, use `git clone` na _master branch_. - -Se você quiser experimentar suas mudanças sem fazer alterações em seu `asdf` instalado, você pode definir a variável `$ ASDF_DIR` para o caminho onde você clonou o repositório, e adicionar temporariamente o diretório `bin` e `shims`. - -Ferramentas que usamos: - -- [bats](https://github.com/bats-core/bats-core) para testes. Certificar-se de que `bats test /` passa nos testes após você fazer suas alterações. -- [Shellcheck](https://github.com/koalaman/shellcheck) para análise estática dos scripts shell. - -## Imagem Docker - -Os projetos [asdf-alpine] [asdf-alpine] e [asdf-ubuntu] [asdf-ubuntu] são um -esforço contínuo para fornecer imagens docker de algumas ferramentas asdf. Você pode usar -essas imagens docker como base para seus servidores de desenvolvimento, ou para executar seu -aplicativos em produção. - -[asdf-alpine]: https://github.com/vic/asdf-alpine -[asdf-ubuntu]: https://github.com/vic/asdf-ubuntu diff --git a/docs/pt-br/contributing-doc-site.md b/docs/pt-br/contributing-doc-site.md deleted file mode 100644 index 04d187b0..00000000 --- a/docs/pt-br/contributing-doc-site.md +++ /dev/null @@ -1,69 +0,0 @@ -## Melhorias - -Aqui está uma lista de melhorias que estamos tentando fazer na documentação. Se você deseja contribuir, de uma olhadinha nisso: - -- customise the docsify theme -- cover-page background image -- cover-page/readme gif of a terminal using asdf showing it's features (automatic version switching, .tool-versions with multiple runtime configs) -- custom doc site domain -- change the typography -- get a logo? -- improve "edit on GitHub" button/link -- add asdf to awesome-docsify showcase - -## Configure seu ambiente - -Estamos usando: - -- [Node.js](https://github.com/asdf-vm/asdf-nodejs) `v10.15.0` para dar suporte as outras ferramentas necessárias -- [docsify](https://docsify.js.org/#/) para criar a documentação -- [prettier](https://prettier.io/) para formatar arquivos de _markdown_ (.md) - -### Instalar dependências - -Estamos tentando **evitar poluir** o repositório central com ferramentas para esta documentação. Sendo assim, seria ótimo se você pudesse instalar essas ferramentas de desenvolvimento **globalmente** para não comprometê-las com este projeto. - -```shell -npm i docsify-cli prettier -g -``` - -## Subir servidor - -Execute na raiz do projeto: - -```shell -docsify serve docs -``` - -## Formatar arquivos - -Execute na raiz do projeto: - -```shell -prettier --write "docs/**/*.md" -``` - -## Traduções - -Seria ótimo fornecer traduções para outros idiomas. - -O Docsify torna a adição de novos idiomas bastante fácil. Veja em `docs/index.html` para exemplos de `zh-cn`. - -### Adicionar uma nova tradução - -1. Crie uma pasta dentro do `docs/` para adicionar sua nova tradução - ``` - docs/ - docs/zh-cn/ - ``` -2. copie o arquivo `docs/_404.md` para sua nova pasta `docs/zh-cn/_404.md` - ``` - docs/_404.md - docs/zh-cn/_404.md - ``` -3. troque o texto com a sua tradução. -4. repita o processo para todos os arquivos. -5. adicione o _link_ da sua tradução em `_navbar.md`. -6. execute o `prettier` antes de fazer o _commit_ das alterações. - -Para mais informações veja em [configurações do docsify](https://docsify.js.org/#/configuration), para [barra lateral (navbar)](https://docsify.js.org/#/custom-navbar), verifique o `index.html` e [campo de pesquisa](https://github.com/docsifyjs/docsify/blob/6ac7bace213145cb655e9a5e9e209384db08e5f9/docs/index.html#L48). diff --git a/docs/pt-br/core-commands.md b/docs/pt-br/core-commands.md deleted file mode 100644 index 27ec52ee..00000000 --- a/docs/pt-br/core-commands.md +++ /dev/null @@ -1,9 +0,0 @@ -<!-- - single source of truth. - import commands list from master branch of repo. - not amenable to docs supporting git refs. Solution to be determined. - --> - -`asdf` ou `asdf help` para listar todos os comandos disponíveis para sua versão. - -[](https://raw.githubusercontent.com/asdf-vm/asdf/master/help.txt ':include') diff --git a/docs/pt-br/core-configuration.md b/docs/pt-br/core-configuration.md deleted file mode 100644 index eaa11681..00000000 --- a/docs/pt-br/core-configuration.md +++ /dev/null @@ -1,56 +0,0 @@ -## .tool-versions - -Sempre que o arquivo `.tool-versions` estiver presente em um diretório, as versões da ferramenta que ele declara serão usadas nesse diretório e em seus subdiretórios. - -?> Configurações globais podem ser modificadas no arquivo `$HOME/.tool-versions` - -O arquivo `.tool-versions` se parece assim: - -``` -ruby 2.5.3 -nodejs 10.15.0 -``` - -As versões podem estar no seguinte formato: - -- `10.15.0` - uma versão real. Os plugins que suportam o download de binários farão o download de binários. -- `ref:v1.0.2-a` ou `ref:39cb398vb39` - _tag/commit/branch_ para download pelo github e compilação - um path costumizado e compi -- `path:/src/elixir` - um path para uma versão compilada e personalizada de uma ferramenta pronta para usar. Para uso por linguagens de desenvolvimento e outros. -- `system` - faz com que asdf passe para a versão da ferramenta no sistema que não é gerenciada por asdf . - -Várias versões podem ser definidas, separando-as com um espaço. Por exemplo, para usar Python 3.7.2, e também Python 2.7.15, use a linha abaixo em seu arquivo `.tool-versions`. - -``` -python 3.7.2 2.7.15 system -``` - -Para instalar todas as ferramentas definidas em `.tool-versions`, execute o camando `asdf install` sem argumentos no mesmo diretório de `.tool-versions`. - -Para isntalar somente uma ferramenta definida em `.tool-versions`, execute o camando `asdf install` sem argumentos no mesmo diretório de `.tool-versions`. A ferramenta será instalada na versão especificada no arquivo `.tool-versions`. - -Edite o arquivo diretamente no diretório ou use `asdf local` (ou `asdf global`) para atualiza-lo. - -## \$HOME/.asdfrc - -Adicione um arquivo `.asdfrc` ao seu diretório home e asdf usará as configurações especificadas no arquivo. O arquivo deve ser formatado assim: - -``` -legacy_version_file = yes -``` - -**Configurações** - -- `legacy_version_file` - por padrão é `no`. Se definido como `yes`, fará com que os plug-ins que suportam esse recurso leiam os arquivos de versão usados por outros gerenciadores de versão (por exemplo, `.ruby-version` no caso do ` rbenv` do Ruby). -- `use_release_candidates` - por padrão é `no`. Se definido como `yes`, fará com que o comando `asdf update` atualize para o mais recente em vez da versão semântica mais recente. - -- `always_keep_download` - por padrão é `no`. Se definido como `yes`, fará com que o ` asdf install` sempre mantenha o código-fonte ou binário baixado. Se definido como `no`, o código fonte ou binário baixado por ` asdf install` será excluído após a instalação bem sucedida. - -- `plugin_repository_last_check_duration` - por padrão é `60` min (1 hrs). Ele define a duração da última verificação do repositório de plugins asdf. Quando o comando `asdf plugin add <nome>`, `asdf plugin list all` for executado, ele verificará a duração da última atualização para atualizar o repositório. Se definido como `0`, ele atualizará o repositório de plugins asdf todas as vezes. - -## Variáveis de ambiente - -- `ASDF_CONFIG_FILE` - O padrão é `~ / .asdfrc` conforme descrito acima. Pode ser definido para qualquer local. -- `ASDF_DEFAULT_TOOL_VERSIONS_FILENAME` - O nome do arquivo que armazena os nomes e versões das ferramentas. O padrão é `.tool-versions`. Pode ser qualquer nome de arquivo válido. Normalmente você não deve substituir o valor padrão, a menos que deseja que o asdf ignore os arquivos `.tool-versions`. -- `ASDF_DIR` - O padrão é `~/.asdf` - Localização dos arquivos `asdf`. Se você instalar `asdf` em algum outro diretório, defina-o para esse diretório. Por exemplo, se você estiver instalando através do AUR, você deve definir isso para `/ opt / asdf-vm`. -- `ASDF_DATA_DIR` - O padrão é `~/.asdf` - Local onde `asdf` instala plugins, correções e instalações. Pode ser definido para qualquer local antes de fornecer `asdf.sh` ou` asdf.fish` mencionado na seção acima. diff --git a/docs/pt-br/core-manage-asdf.md b/docs/pt-br/core-manage-asdf.md deleted file mode 100644 index 82767752..00000000 --- a/docs/pt-br/core-manage-asdf.md +++ /dev/null @@ -1,634 +0,0 @@ -1. [Gerenciar asdf](/pt-br/core-manage-asdf): instalar `asdf` **e** adicionar `asdf` ao seu shell -2. [Gerenciar Plugins](/pt-br/core-manage-plugins): adicionar plugin para sua ferramenta `asdf plugin add nodejs` -3. [Gerenciar Versões](/pt-br/core-manage-versions): instalar uma versão da sua ferramenta `asdf install nodejs 13.14.0` -4. [Configuração](/pt-br/core-configuration): configurações globais e de seu projeto em `.tool-versions` - -## Instalar - -### Dependências - -<!-- select:start --> -<!-- select-menu-labels: Sistema Operacional,Método de Instalação --> - -#### -- Linux,Aptitude -- - -```shell -sudo apt install curl git -``` - -#### -- Linux,DNF -- - -```shell -sudo dnf install curl git -``` - -#### -- Linux,Pacman -- - -```shell -sudo pacman -S curl git -``` - -#### -- Linux,Zypper -- - -```shell -sudo zypper install curl git -``` - -#### -- macOS,Homebrew -- - -Dependências seram instaladas automaticamente pelo Homebrew. - -#### -- macOS,Spack -- - -```shell -spack install coreutils curl git -``` - -### -- Docsify Select Default -- - -Não encontrado seleção para seu _Sistema Operacional_ e _Método de Instalação_. Por favor tente outra combinação. - -<!-- select:end --> - -### asdf - -<!-- select:start --> -<!-- select-menu-labels: Método de Instalação --> - -### --Git-- - -Clone somente a _branch_ mais recente: - -```shell -git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.8.1 -``` - -Alternativa, você pode clonar o repositório completo e verificar a _branch_ mais recente: - -```shell -git clone https://github.com/asdf-vm/asdf.git ~/.asdf -cd ~/.asdf -git checkout "$(git describe --abbrev=0 --tags)" -``` - -### --Homebrew-- - -Seja a compatibilidade de `asdf` e Homebrew em [issues in #785](https://github.com/asdf-vm/asdf/issues/785). - -Instalar usando o gerenciador de pacotes Homebrew: - -```shell -brew install asdf -``` - -Para pegar as mudanças mais recentes, você pode mandar o Homebrew obter a _branch_ central do repositório: - -```shell -brew install asdf --HEAD -``` - -### --Pacman-- - -Instalar usando `pacman`: - -```shell -git clone https://aur.archlinux.org/asdf-vm.git -cd asdf-vm -makepkg -si -``` - -Ou use outro de sua preferência [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers) - -<!-- select:end --> - -### Adicionando ao seu Shell - -<!-- select:start --> -<!-- select-menu-labels: Sistema Operacional,Shell,Método de Instalação --> - -#### --Linux,Bash,Git-- - -Adicione em seu `~/.bashrc`: - -```shell -. $HOME/.asdf/asdf.sh -``` - -?> Adicione também em seu `.bashrc`: - -```shell -. $HOME/.asdf/completions/asdf.bash -``` - -#### --Linux,Fish,Git-- - -Adicione em seu `~/.config/fish/config.fish`: - -```shell -source ~/.asdf/asdf.fish -``` - -?> Execute o comando: - -```shell -mkdir -p ~/.config/fish/completions; and ln -s ~/.asdf/completions/asdf.fish ~/.config/fish/completions -``` - -#### --Linux,ZSH,Git-- - -Adicione em seu `~/.zshrc`: - -```shell -. $HOME/.asdf/asdf.sh -``` - -**Ou** use o ZSH Framework plugin descrito em [asdf para oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/asdf) para concluir sua configuração. - -?> As configurações são completadas através do ZSH Framework `asdf` plugin ou pelas modificações feitas em `.zshrc`: - -```shell -# adicione ao seu fpath -fpath=(${ASDF_DIR}/completions $fpath) -# termine usando os comandos do ZSH's compinit -autoload -Uz compinit -compinit -``` - -- Caso tiver usando uma costumização de `compinit`, garanta que seu `compinit` esteja dentro do arquivo `asdf.sh` -- Caso tiver usando uma costumização de `compinit` e ZSH Framework, garanta que `compinit` esteja dentro do framework - -!> Caso tiver usando ZSH Framework em conjunto com `asdf`, talvez seja necessário atualizar os complementos de ZSH no `fpath`. Para atualizar Oh-My-ZSH asdf plugin, seja em https://github.com/ohmyzsh/ohmyzsh/pull/8837. - -#### --Linux,Bash,Pacman-- - -Adicione em seu `~/.bashrc`: - -```shell -. /opt/asdf-vm/asdf.sh -``` - -?> [`bash-completion` needs to be installed for the completions to work](https://wiki.archlinux.org/title/bash#Common_programs_and_options) - -#### --Linux,Fish,Pacman-- - -Adicione em seu `~/.config/fish/config.fish`: - -```shell -source /opt/asdf-vm/asdf.fish -``` - -!> Os complementos são automaticamente configurados na instalação feita pelo pacote AUR. - -#### --Linux,ZSH,Pacman-- - -Adicione em seu `~/.zshrc`: - -```shell -. /opt/asdf-vm/asdf.sh -``` - -?> Os complementos são colocados em um local escolhido pelo ZHS, para mais [ZSH deve ser usado para configurações dos complementos](https://wiki.archlinux.org/index.php/zsh#Command_completion). - -#### --macOS,Bash,Git-- - -Caso esteja usando **macOs Catalina ou mais recente**, por padrão o _shell_ é **ZSH**. Para voltar ao _Bash_ siga as instruções do ZSH. - -Adicione em seu `~/.bash_profile`: - -```shell -. $HOME/.asdf/asdf.sh -``` - -?> Os complementos precisam ser configurados manualmente em seu arquivo `.bash_profile`: - -```shell -. $HOME/.asdf/completions/asdf.bash -``` - -#### --macOS,Fish,Git-- - -Adicione em seu `~/.config/fish/config.fish`: - -```shell -source ~/.asdf/asdf.fish -``` - -?> Os complementos precisam ser configurados manualmente com esse comando: - -```shell -mkdir -p ~/.config/fish/completions; and cp ~/.asdf/completions/asdf.fish ~/.config/fish/completions -``` - -#### --macOS,ZSH,Git-- - -Adicione em seu `~/.zshrc`: - -```shell -. $HOME/.asdf/asdf.sh -``` - -**Ou** use ZSH Framework plugin descrito em [asdf para oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/asdf) que irá realizar as configurações. - -?> Os complementos são conficurados usando ZSH Framework `asdf` plugin ou através do arquivo `.zshrc`: - -```shell -# adicione em seu fpath -fpath=(${ASDF_DIR}/completions $fpath) -# termine usando os comandos do ZSH's compinit -autoload -Uz compinit -compinit -``` - -- Caso tiver usando uma costumização de `compinit`, garanta que seu `compinit` esteja dentro do arquivo `asdf.sh` -- Caso tiver usando uma costumização de `compinit` e ZSH Framework, garanta que `compinit` esteja dentro do framework - -!> Caso tiver usando ZSH Framework em conjunto com `asdf`, talvez seja necessário atualizar os complementos de ZSH no `fpath`. Para atualizar Oh-My-ZSH asdf plugin, seja em https://github.com/ohmyzsh/ohmyzsh/pull/8837. - -#### --macOS,Bash,Homebrew-- - -Caso esteja usando **macOs Catalina ou mais recente**, por padrão o _shell_ é **ZSH**. Para voltar ao _Bash_ siga as instruções do ZSH. - -Adicione `asdf.sh` ao seu `~/.bash_profile` usando: - -```shell -echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ~/.bash_profile -``` - -?> Os complementos precisam [instruções de configuração do Homebrew](https://docs.brew.sh/Shell-Completion#configuring-completions-in-bash) ou usando: - -```shell -echo -e "\n. $(brew --prefix asdf)/etc/bash_completion.d/asdf.bash" >> ~/.bash_profile -``` - -#### --macOS,Fish,Homebrew-- - -Adicione `asdf.fish` ao seu `~/.config/fish/config.fish` usando: - -```shell -echo -e "\nsource "(brew --prefix asdf)"/asdf.fish" >> ~/.config/fish/config.fish -``` - -?> Os complementos são [manipulados pelo Homebrew para o Fish shell](https://docs.brew.sh/Shell-Completion#configuring-completions-in-fish). Legal! - -#### --macOS,ZSH,Homebrew-- - -Adicione `asdf.sh` ao seu `~/.zshrc` usando: - -```shell -echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc -``` - -**Ou** use ZSH Framework plugin descrito em [asdf para oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/asdf) que irá realizar as configurações. - -?> Os complementos são configurados pelo ZSH Framework `asdf` ou precisam [instruções de configuração do Homebrew](https://docs.brew.sh/Shell-Completion#configuring-completions-in-zsh) - -Caso tiver usando ZSH Framework em conjunto com `asdf`, talvez seja necessário atualizar os complementos de ZSH no `fpath`. Para atualizar Oh-My-ZSH asdf plugin, seja em https://github.com/ohmyzsh/ohmyzsh/pull/8837. - -### --Docsify Select Default-- - -!> O `Homebrew` `asdf` não possui testes no `Linux` feitos pelo time central do asdf. Por favor reporte os problemas para que possamos atualizar nossa documentação. - -<!-- select:end --> - -Reinicie seu _shell_ para que as mudanças no _PATH_ sejam efetivadas. - -Esta tudo pronto para usar asdf 🎉 - -### Possui questionamentos? - -Caso tenha questionamentos sobre seu _shell_ não detectadas em instalações mais recentes, pode ser que `asdf.sh` ou `asdf.fish` não iniciou o **BOTTOM** em seu arquivo de configuração `.bash_profile`, `.zshrc`, `config.fish`. É preciso do **AFETER** em seu `$PATH` e **AFTER** precisa estar em seu framework (oh-my-zsh etc). -you have sourced your framework (oh-my-zsh etc). - -### Migrando de ferramentas - -Caso tenha migrado para outra ferramenta e precisar usar as arquivos de versão (ex: `.node-version` ou `.ruby-version`), -olhe em seu `legacy_version_file` [marcação de seleção de configuração](core-configuration?id=homeasdfrc). - -## Atualizar - -<!-- select:start --> -<!-- select-menu-labels: Método de Instalação --> - -### -- Git -- - -```shell -asdf update -``` - -Caso queira as últimas mudanças, essas mudanças não estão incluídas na versão estável: - -```shell -asdf update --head -``` - -### -- Homebrew -- - -```shell -brew upgrade asdf -``` - -### -- Pacman -- - -Obter manualmente um novo `PKGBUILD` e reconstruir ou usar suas preferências de AUR. - -<!-- select:end --> - -## Remover - -Para desinstalar `asdf` siga os passos: - -<!-- select:start --> -<!-- select-menu-labels: Sistema Operacional,Shell,Método de Instalação --> - -### --Linux,Bash,Git-- - -1. Em seu `~/.bashrc` remova as linhas do `asdf.sh` e seus complementos: - -```shell -. $HOME/.asdf/asdf.sh -. $HOME/.asdf/completions/asdf.bash -``` - -2. Remova o diretório `$HOME/.asdf`: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --Linux,Fish,Git-- - -1. Em seu `~/.config/fish/config.fish` remova as linhas do `asdf.sh`: - -```shell -source ~/.asdf/asdf.fish -``` - -e remova os complementos de com esse comando: - -```shell -rm -rf ~/.config/fish/completions/asdf.fish -``` - -2. Remova o diretório `$HOME/.asdf`: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --Linux,ZSH,Git-- - -1. Em seu `~/.zshrc` remova as linhas do `asdf.sh` e seus complementos: - -```shell -. $HOME/.asdf/asdf.sh -# ... -fpath=(${ASDF_DIR}/completions $fpath) -autoload -Uz compinit -compinit -``` - -**Ou** use ZSH Framework plugin. - -2. Remova o diretório `$HOME/.asdf`: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --Linux,Bash,Pacman-- - -1. Em seu `~/.bashrc` remova as linhas do `asdf.sh` e seus complementos: - -```shell -. /opt/asdf-vm/asdf.sh -``` - -2. Desinstale usando seu gerenciador de pacotes: - -```shell -pacman -Rs asdf-vm -``` - -3. Remova o diretório `$HOME/.asdf`: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -4. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --Linux,Fish,Pacman-- - -1. Em seu `~/.config/fish/config.fish` remova as linhas do `asdf.fish`: - -```shell -source /opt/asdf-vm/asdf.fish -``` - -2. Desinstale usando seu gerenciador de pacotes: - -```shell -pacman -Rs asdf-vm -``` - -3. Remova o diretório `$HOME/.asdf`: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -4. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --Linux,ZSH,Pacman-- - -1. Em seu `~/.zshrc` remova as linhas do `asdf.sh`: - -```shell -. /opt/asdf-vm/asdf.sh -``` - -2. Desinstale usando seu gerenciador de pacotes: - -```shell -pacman -Rs asdf-vm -``` - -3. Remova o diretório `$HOME/.asdf`: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -4. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,Bash,Git-- - -1. Em seu `~/.bash_profile` remova as linhas do `asdf.sh` e remova seus complementos: - -```shell -. $HOME/.asdf/asdf.sh -. $HOME/.asdf/completions/asdf.bash -``` - -2. Remova o diretório `$HOME/.asdf`: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,Fish,Git-- - -1. Em seu `~/.config/fish/config.fish` remova as linhas do `asdf.fish`: - -```shell -source ~/.asdf/asdf.fish -``` - -e remova os complementos de com esse comando: - -```shell -rm -rf ~/.config/fish/completions/asdf.fish -``` - -2. Remova o diretório `$HOME/.asdf`: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,ZSH,Git-- - -1. Em seu `~/.zshrc` remova as linhas do `asdf.sh` e remova seus complementos: - -```shell -. $HOME/.asdf/asdf.sh -# ... -fpath=(${ASDF_DIR}/completions $fpath) -autoload -Uz compinit -compinit -``` - -**Ou** use ZSH Framework plugin. - -2. Remova o diretório `$HOME/.asdf`: - -```shell -rm -rf ${ASDF_DATA_DIR:-$HOME/.asdf} -``` - -3. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,Bash,Homebrew-- - -Caso esteja usando **macOs Catalina ou mais recente**, por padrão o _shell_ é **ZSH**. Se não achar alguma configuração em seu `~/.bash_profile` talvez esteja em `~/.zshrc` em cada caso siga as intruções do ZSH. - -1. Em seu `~/.bash_profile` remova as linhas do `asdf.sh` e remova seus complementos: - -```shell -. $(brew --prefix asdf)/asdf.sh -. $(brew --prefix asdf)/etc/bash_completion.d/asdf.bash -``` - -?> Os complementos precisam [instruções de configuração do Homebrew](https://docs.brew.sh/Shell-Completion#configuring-completions-in-bash) e siga o guia de remoção. - -2. Desinstale usando seu gerenciador de pacotes: - -```shell -brew uninstall asdf --force -``` - -3. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,Fish,Homebrew-- - -1. Em seu `~/.config/fish/config.fish` remova as linhas do `asdf.fish`: - -```shell -source "(brew --prefix asdf)"/asdf.fish -``` - -2. Desinstale usando seu gerenciador de pacotes: - -```shell -brew uninstall asdf --force -``` - -3. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -### --macOS,ZSH,Homebrew-- - -1. Em seu `~/.zshrc` remova as linhas do `asdf.sh`: - -```shell -. $(brew --prefix asdf)/asdf.sh -``` - -2. Desinstale usando seu gerenciador de pacotes: - -```shell -brew uninstall asdf --force -``` - -3. Execute o comando para remover todos os arquivos de configurações do `asdf`: - -```shell -rm -rf $HOME/.tool-versions $HOME/.asdfrc -``` - -<!-- select:end --> - -Tudo pronto! 🎉 diff --git a/docs/pt-br/core-manage-plugins.md b/docs/pt-br/core-manage-plugins.md deleted file mode 100644 index ad62e9b9..00000000 --- a/docs/pt-br/core-manage-plugins.md +++ /dev/null @@ -1,77 +0,0 @@ -Plugins são como asdf sabe lidar com diferentes ferramentas, tais quais Node.js, Ruby, Elixir etc. - -Seja em [Criar Plugins](/pt-br/plugins-create) para usar API de plugin e ter suporte as ferramentas. - -## Adicionar - -Adicione os plugins via sua Url Git: - -```shell -asdf plugin add <name> <git-url> -# asdf plugin add elm https://github.com/vic/asdf-elm -``` - -ou pelo nome abreviado dentro do repositório de plugins: - -```shell -asdf plugin add <name> -# asdf plugin add erlang -``` - -Ao criar scripts, prefira o método mais longo `git-url`, pois ele é independente do repositório de nome abreviado. - -## Listar Instalados - -```shell -asdf plugin list -# asdf plugin list -# java -# nodejs -``` - -```shell -asdf plugin list --urls -# asdf plugin list -# java https://github.com/halcyon/asdf-java.git -# nodejs https://github.com/asdf-vm/asdf-nodejs.git -``` - -## Listar todos nomes abreviados no repositório - -```shell -asdf plugin list all -``` - -Veja Todos os plugins(/pt-br/plugins-all) para os nomes abreviados dos plugins. - -## Atualizar - -```shell -asdf plugin update --all -``` - -Se você quiser atualizar um pacote específico, apenas use. - -```shell -asdf plugin update <name> -# asdf plugin update erlang -``` - -Esta atualização irá buscar o último _commit_ na _branch_ padrão no _origin_ de seu respositório. Plugins e atualizações das versões estão sendo desenvolvidas - https://github.com/asdf-vm/asdf/pull/916 - -## Remover - -```bash -asdf plugin remove <name> -# asdf plugin remove erlang -``` - -Removendo o plugin irá remover todas as instalações feitas com o plugin. Isso pode ser usado como um atalho para apagar/remover sujeiras de versões não utilizadas de uma ferramenta. - -## Sincronizar nome abreviado no repositório - -O nome abreviado do repositório é sincronizado em seu máquina local e periodicamente atualizado. Esse período pode ser determinado com o seguinte método: - -- comandos `asdf plugin add <name>` ou `asdf plugin list all` disparam a sincronização -- ocorre uma sincronização se não houver nenhuma nos últimos `X` minutos -- `X` por padrão é `60`, mas pode ser mudado em `.asdfrc` via as opções do `plugin_repository_last_check_duration`. Seja mais em [asdf documentação de configuração](/pt-br/core-configuration). diff --git a/docs/pt-br/core-manage-versions.md b/docs/pt-br/core-manage-versions.md deleted file mode 100644 index 3124717f..00000000 --- a/docs/pt-br/core-manage-versions.md +++ /dev/null @@ -1,137 +0,0 @@ -## Instalar Versão - -```shell -asdf install <name> <version> -# asdf install erlang 17.3 -``` - -_Se um plugin suporta o download e compilação do código-fonte, você pode especificar `ref:foo` no qual `foo` é uma 'branch' especifica, 'tag', ou 'commit'. Você também precisará usar o mesmo nome e referência ao desinstalar._ - -## Instalar última versão estável - -```shell -asdf install <name> latest -# asdf install erlang latest -``` - -Instale a última versão estável que inicia com um texto. - -```shell -asdf install <name> latest:<version> -# asdf install erlang latest:17 -``` - -## Listar versões instaladas - -```shell -asdf list <name> -# asdf list erlang -``` - -## Listar todas as versões disponíveis - -```shell -asdf list all <name> -# asdf list all erlang -``` - -Limite as versões que inicie com um determinado texto. - -```shell -asdf list all <name> <version> -# asdf list all erlang 17 -``` - -## Mostrar última versão estável - -```shell -asdf latest <name> -# asdf latest erlang -``` - -Mostrar última versão estável que inicie com um determinado texto. - -```shell -asdf latest <name> <version> -# asdf latest erlang 17 -``` - -## Selecionar versão atual - -```shell -asdf global <name> <version> [<version>...] -asdf shell <name> <version> [<version>...] -asdf local <name> <version> [<version>...] -# asdf global elixir 1.2.4 -``` - -`global` escreve a versão para `$HOME/.tool-versions`. - -`shell` selecione a versão na variável de ambiente `ASDF_${LANG}_VERSION`, para a atual seção do _shell_. - -`local` escreve a versão para `$PWD/.tool-versions`, crie se necessário . - -Veja em `.tool-versions` [arquivo de seleção de configuração](/pt-br/core-configuration) para mais detalhes. - -?> Alternativa, se você quiser selecionar a versão atual do seu _shell_ ou para executar um comando em uma versão específica de sua ferramenta, você pode selecionar a versão na variável de ambiente `ASDF_${TOOL}_VERSION`. - -O seguinte exemplo executa os testes em um projeto Elixir na versão `1.4.0`. -O formato da versão é o mesmo suportado pelo arquivo `.tool-versions`. - -```shell -ASDF_ELIXIR_VERSION=1.4.0 mix test -``` - -## Resposta do sistema de versão - -Para usar o sistema de versão da ferramenta `<name>` inicie um gerenciador de versões do asdf para selecionar a versão na ferramenta do `system`. - -Selecione o sistema com `global`, `local` ou `shell` -Set system with either `global`, `local` or `shell` conforme descrito em [Selecionar versão atual](#selecionar-versão-atual). - -```shell -asdf local <name> system -# asdf local python system -``` - -## Verificar a versão atual - -```shell -asdf current -# asdf current -# erlang 17.3 (set by /Users/kim/.tool-versions) -# nodejs 6.11.5 (set by /Users/kim/cool-node-project/.tool-versions) - -asdf current <name> -# asdf current erlang -# 17.3 (set by /Users/kim/.tool-versions) -``` - -## Desinstalar versão - -```shell -asdf uninstall <name> <version> -# asdf uninstall erlang 17.3 -``` - -## Shims - -Quando asdf instala um pacote é criado _shims_ para cada programa executado no pacote do diretório `$ASDF_DATA_DIR/shims` (padrão `~/.asdf/shims`). Esse diretório começa no `$PATH` (pelos `asdf.sh` ou `asdf.fish`) é como o programa instalado é disponibilizado no ambiente do sistema. - -Os _shims_ em si são atalhos simples que executam um programa auxiliar `asdf exec` passando o nome do plugin e o caminho para o executável no pacote instalado que o _shim_ está contido. - -O `asdf exec` ajuda a determinar a versão do pacote usado (como especificado no arquivo `.tool-versions`, pelo `asdf local ...` ou `asdf global ...`), o final do _path_ do executavél no pacote instalado no diretório (pode ser manipulado pelo `exec-path` no _callback_ do plugin) e o ambiente executado em (também fornecido pelo plugin - `exec-env`) e finalmente executado. - -!> Observe que, como este sistema usa chamadas `exec`, qualquer _scripts_ no pacote devem ser fornecidos pelo _shell_, a instancia em execução precisa ser aessado diretamente ao invés do _shim_. Os dois comandos do asdf: `which` e `where` pode ajudar com o retorno do caminho para o pacote instalado: - -```shell -# retorna o 'path' da versão atual em execução -source $(asdf which ${PLUGIN})/../script.sh - -# retorna o 'path' do pacote instalado no diretório -source $(asdf where ${PLUGIN} $(asdf current ${PLUGIN}))/bin/script.sh -``` - -### Ignorando _shims_ do asdf - -Se por algum motivo você deseja ignorar _shims_ do asdf ou deseja que suas variáveis de ambiente sejam definidas automaticamente ao entrar no diretório do seu projeto, pode ser útil o [asdf-direnv](https://github.com/asdf-community/asdf-direnv). Verifique o README para mais detalhes. diff --git a/docs/pt-br/thanks.md b/docs/pt-br/thanks.md deleted file mode 100644 index fd85e758..00000000 --- a/docs/pt-br/thanks.md +++ /dev/null @@ -1,17 +0,0 @@ -## Créditos - -Eu ([@HashNuke](https://github.com/HashNuke)), febre alta, resfriado e tosse. - -Copyright 2014 até o final dos tempos ([MIT License](https://github.com/asdf-vm/asdf/blob/master/LICENSE)) - -## Mantenedores - -- [@HashNuke](https://github.com/HashNuke) -- [@danhper](https://github.com/danhper) -- [@Stratus3D](https://github.com/Stratus3D) -- [@vic](https://github.com/vic) -- [@jthegedus](https://github.com/jthegedus) - -## Contribuidores - -Veja em [lista de contribuidores](https://github.com/asdf-vm/asdf/graphs/contributors) :pray: no GitHub diff --git a/docs/scripts/docsify-edit-on-github.js b/docs/scripts/docsify-edit-on-github.js deleted file mode 100644 index e89292fb..00000000 --- a/docs/scripts/docsify-edit-on-github.js +++ /dev/null @@ -1,47 +0,0 @@ -;(function(win) { - win.EditOnGithubPlugin = {} - - function create(docBase, options) { - options = options || {} - title = options.title || 'Edit on github' - customURLs = options.customURLs || {} - var docEditBase = docBase.replace(/\/blob\//, '/edit/') - - function editDoc(event, vm) { - var docName = vm.route.file - - if (docName) { - var editLink = customURLs[docName] || docEditBase + docName - window.open(editLink) - event.preventDefault() - return false - } else { - return true - } - } - - win.EditOnGithubPlugin.editDoc = editDoc - - return function(hook, vm) { - win.EditOnGithubPlugin.onClick = function(event) { - EditOnGithubPlugin.editDoc(event, vm) - } - - var header = [ - '<div style="overflow: auto">', - '<p style="float: right"><a href="', - docBase, - '" target="_blank" onclick="EditOnGithubPlugin.onClick(event)">', - title, - '</a></p>', - '</div>' - ].join('') - - hook.afterEach(function (html) { - return header + html - }) - } - } - - win.EditOnGithubPlugin.create = create -}) (window)