Repository: remorses/bundless Branch: master Commit: c7c167a78b03 Files: 422 Total size: 1.0 MB Directory structure: gitextract_cw0f3mmf/ ├── .changeset/ │ ├── README.md │ └── config.json ├── .github/ │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .prettierrc ├── .vscode/ │ └── settings.json ├── README.md ├── TODOS.md ├── bundless/ │ ├── CHANGELOG.md │ ├── bin.js │ ├── package.json │ ├── src/ │ │ ├── build/ │ │ │ └── index.ts │ │ ├── cli.ts │ │ ├── client/ │ │ │ ├── template.ts │ │ │ └── types.ts │ │ ├── config.ts │ │ ├── constants.ts │ │ ├── hmr-graph.ts │ │ ├── index.ts │ │ ├── logger.ts │ │ ├── middleware/ │ │ │ ├── history-fallback.ts │ │ │ ├── index.ts │ │ │ ├── open-in-editor.ts │ │ │ ├── plugins.ts │ │ │ ├── sourcemap.ts │ │ │ └── static-serve.ts │ │ ├── plugins/ │ │ │ ├── assets.ts │ │ │ ├── buffer.ts │ │ │ ├── css.ts │ │ │ ├── env.ts │ │ │ ├── esbuild.ts │ │ │ ├── hmr-client.ts │ │ │ ├── html-ingest.ts │ │ │ ├── html-resolver.ts │ │ │ ├── html-transform.ts │ │ │ ├── index.ts │ │ │ ├── json.ts │ │ │ ├── resolve-sourcemaps.ts │ │ │ ├── rewrite/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── commonjs.test.ts.snap │ │ │ │ ├── commonjs.test.ts │ │ │ │ ├── commonjs.ts │ │ │ │ ├── index.ts │ │ │ │ └── rewrite.ts │ │ │ ├── source-map-support.ts │ │ │ └── url-resolver.ts │ │ ├── plugins-executor.ts │ │ ├── prebundle/ │ │ │ ├── __snapshots__/ │ │ │ │ └── prebundle.test.ts.snap │ │ │ ├── esbuild.ts │ │ │ ├── index.ts │ │ │ ├── prebundle.test.ts │ │ │ ├── prebundle.ts │ │ │ ├── stats.ts │ │ │ ├── support.ts │ │ │ └── traverse.ts │ │ ├── serve.ts │ │ └── utils/ │ │ ├── index.ts │ │ ├── path.test.ts │ │ ├── path.ts │ │ ├── profiling.test.ts │ │ ├── profiling.ts │ │ ├── sourcemaps.ts │ │ └── utils.ts │ └── tsconfig.json ├── examples/ │ ├── react-javascript/ │ │ ├── .gitignore │ │ ├── bundless.config.js │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ └── src/ │ │ ├── app.jsx │ │ ├── index.jsx │ │ └── styles.css │ ├── react-typescript/ │ │ ├── .gitignore │ │ ├── bundless.config.js │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ ├── index.tsx │ │ │ └── styles.css │ │ └── tsconfig.json │ ├── svelte/ │ │ ├── .gitignore │ │ ├── bundless.config.js │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ ├── scripts/ │ │ │ └── setupTypeScript.js │ │ └── src/ │ │ ├── App.svelte │ │ ├── global.css │ │ └── main.js │ └── vanilla-javascript/ │ ├── .gitignore │ ├── bundless.config.js │ ├── package.json │ ├── public/ │ │ └── index.html │ └── src/ │ ├── index.js │ └── styles.css ├── fixtures/ │ ├── html-page/ │ │ ├── __mirror__/ │ │ │ └── index.html │ │ ├── __snapshots__ │ │ └── index.html │ ├── outsider.js │ ├── resolve-sourcemap/ │ │ ├── __mirror__/ │ │ │ ├── folder/ │ │ │ │ └── main.js │ │ │ └── index.html │ │ ├── __snapshots__ │ │ ├── folder/ │ │ │ └── main.js │ │ └── index.html │ ├── serve-outside-root/ │ │ ├── __mirror__/ │ │ │ ├── __..__/ │ │ │ │ └── outsider.js │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── index.html │ │ └── main.js │ ├── simple-js/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── index.html │ │ └── main.js │ ├── with-alias-plugin/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ ├── main.tsx │ │ │ └── text.ts │ │ ├── __snapshots__ │ │ ├── bundless.config.js │ │ ├── index.html │ │ ├── main.tsx │ │ ├── package.json │ │ └── text.ts │ ├── with-assets-imports/ │ │ ├── __mirror__/ │ │ │ ├── dynamic-import.js │ │ │ ├── file.css.cssjs │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── bundless.config.js │ │ ├── dynamic-import.js │ │ ├── file.css │ │ ├── index.html │ │ └── main.js │ ├── with-babel-plugin/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ └── main.tsx │ │ ├── __snapshots__ │ │ ├── bundless.config.js │ │ ├── index.html │ │ ├── main.tsx │ │ └── package.json │ ├── with-commonjs-transform/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ └── main.jsx │ │ ├── __snapshots__ │ │ ├── index.html │ │ ├── main.jsx │ │ └── package.json │ ├── with-css/ │ │ ├── __mirror__/ │ │ │ ├── file.css.cssjs │ │ │ ├── file.js │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── file.css │ │ ├── file.js │ │ ├── index.html │ │ └── main.js │ ├── with-css-modules/ │ │ ├── __mirror__/ │ │ │ ├── file.js │ │ │ ├── file.module.css.cssjs │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── file.js │ │ ├── file.module.css │ │ ├── index.html │ │ └── main.js │ ├── with-custom-assets/ │ │ ├── __mirror__/ │ │ │ ├── file.fakecss.cssjs │ │ │ ├── file.fakejs │ │ │ ├── file.js │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── x.DAC │ │ ├── __snapshots__ │ │ ├── bundless.config.js │ │ ├── file.fakecss │ │ ├── file.fakejs │ │ ├── file.js │ │ ├── index.html │ │ ├── main.js │ │ └── x.DAC │ ├── with-dependencies/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── index.html │ │ └── main.js │ ├── with-dependencies-assets/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── index.html │ │ ├── main.js │ │ └── package.json │ ├── with-dynamic-import/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── text.js │ │ ├── __snapshots__ │ │ ├── index.html │ │ ├── main.js │ │ └── text.js │ ├── with-env-plugin/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ └── main.tsx │ │ ├── __snapshots__ │ │ ├── bundless.config.js │ │ ├── envfile │ │ ├── index.html │ │ └── main.tsx │ ├── with-esbuild-plugins/ │ │ ├── __mirror__/ │ │ │ ├── fake.js │ │ │ ├── file.gql │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── bundless.config.js │ │ ├── fake.js │ │ ├── file.gql │ │ ├── index.html │ │ └── main.js │ ├── with-imports/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── text.js │ │ ├── __snapshots__ │ │ ├── index.html │ │ ├── main.js │ │ └── text.js │ ├── with-json/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── text.json │ │ ├── __snapshots__ │ │ ├── index.html │ │ ├── main.js │ │ └── text.json │ ├── with-linked-workspace/ │ │ ├── __mirror__/ │ │ │ ├── __..__/ │ │ │ │ └── with-many-dependencies/ │ │ │ │ └── main.js │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── index.html │ │ ├── main.js │ │ └── package.json │ ├── with-links/ │ │ ├── __mirror__/ │ │ │ └── index.html │ │ ├── __snapshots__ │ │ ├── index.html │ │ ├── public/ │ │ │ ├── manifest.json │ │ │ └── styles1.css │ │ └── styles2.css │ ├── with-many-dependencies/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── bundless.config.js │ │ ├── index.html │ │ ├── main.js │ │ └── package.json │ ├── with-many-entries/ │ │ ├── __mirror__/ │ │ │ ├── a/ │ │ │ │ ├── index.html │ │ │ │ ├── main.css.cssjs │ │ │ │ └── main.js │ │ │ ├── b/ │ │ │ │ ├── index.html │ │ │ │ ├── main.js │ │ │ │ └── text.js │ │ │ └── common.css.cssjs │ │ ├── __snapshots__ │ │ ├── a/ │ │ │ ├── index.html │ │ │ ├── main.css │ │ │ └── main.js │ │ ├── b/ │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── text.js │ │ ├── bundless.config.js │ │ └── common.css │ ├── with-node-polyfills/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── path │ │ ├── __snapshots__ │ │ ├── index.html │ │ └── main.js │ ├── with-sourcemaps/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ ├── js.js │ │ │ ├── main.ts │ │ │ └── text.js │ │ ├── __snapshots__ │ │ ├── index.html │ │ ├── js.js │ │ ├── main.ts │ │ ├── package.json │ │ └── text.js │ ├── with-svelte/ │ │ ├── App.svelte │ │ ├── __mirror__/ │ │ │ ├── App.svelte │ │ │ ├── App.svelte.css │ │ │ ├── index.html │ │ │ └── main.js │ │ ├── __snapshots__ │ │ ├── bundless.config.js │ │ ├── index.html │ │ ├── main.js │ │ └── package.json │ ├── with-tsconfig-paths/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ ├── main.tsx │ │ │ └── text.ts │ │ ├── __snapshots__ │ │ ├── bundless.config.js │ │ ├── index.html │ │ ├── main.tsx │ │ ├── package.json │ │ └── text.ts │ ├── with-tsx/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ ├── main.tsx │ │ │ ├── text.ts │ │ │ └── utils.ts │ │ ├── __snapshots__ │ │ ├── index.html │ │ ├── main.tsx │ │ ├── text.ts │ │ └── utils.ts │ ├── with-typescript/ │ │ ├── __mirror__/ │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── text.ts │ │ │ └── utils.ts │ │ ├── __snapshots__ │ │ ├── index.html │ │ ├── main.ts │ │ ├── text.ts │ │ └── utils.ts │ └── with-yarn-berry-paths/ │ ├── __mirror__/ │ │ ├── index.html │ │ └── main.js │ ├── __snapshots__ │ ├── index.html │ └── main.js ├── hmr-test-app/ │ ├── __snapshots__/ │ │ ├── bundless │ │ ├── snowpack │ │ └── vite │ ├── bundless.config.js │ ├── index.test.ts │ ├── package.json │ ├── public/ │ │ ├── bundless/ │ │ │ └── index.html │ │ ├── index.html │ │ ├── snowpack/ │ │ │ └── index.html │ │ └── vite/ │ │ └── index.html │ ├── snowpack.config.js │ ├── src/ │ │ ├── bridge.jsx │ │ ├── file.css │ │ ├── file.json │ │ ├── file.jsx │ │ ├── file.module.css │ │ ├── file2.js │ │ ├── imported-many-times.js │ │ └── main.jsx │ ├── tsconfig.json │ └── vite.config.js ├── jest.config.js ├── package.json ├── paged/ │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── client/ │ │ │ ├── context.ts │ │ │ └── index.ts │ │ ├── constants.ts │ │ ├── export.tsx │ │ ├── index.tsx │ │ ├── plugin.tsx │ │ ├── routes.ts │ │ └── server.tsx │ └── tsconfig.json ├── plugins/ │ ├── alias/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── babel/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── react-refresh/ │ │ ├── CHANGELOG.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── svelte/ │ │ ├── CHANGELOG.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── typescript.ts │ │ ├── tsconfig.json │ │ └── yarn-error.log │ └── tsconfig-paths/ │ ├── package.json │ ├── src/ │ │ └── index.ts │ └── tsconfig.json ├── scripts/ │ ├── analyze.ts │ ├── index.html │ ├── partition.ts │ ├── scc.ts │ ├── topological.ts │ ├── tsconfig.json │ └── ws.ts ├── tests/ │ ├── CHANGELOG.md │ ├── fixtures.test.ts │ ├── package.json │ └── utils.ts ├── tsconfig.base.json ├── website/ │ ├── .gitignore │ ├── components/ │ │ └── GradientBg.tsx │ ├── constants.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── package.json │ ├── pages/ │ │ ├── _app.tsx │ │ ├── docs/ │ │ │ ├── benchmarks.mdx │ │ │ ├── cli.mdx │ │ │ ├── config.mdx │ │ │ ├── faq.mdx │ │ │ ├── how-it-works.mdx │ │ │ ├── index.mdx │ │ │ ├── integrations/ │ │ │ │ ├── alias.mdx │ │ │ │ ├── babel.mdx │ │ │ │ └── react-refresh.mdx │ │ │ └── migration.mdx │ │ └── index.tsx │ └── tsconfig.json └── with-pages/ ├── CHANGELOG.md ├── components.tsx ├── export.js ├── index.test.ts ├── package.json ├── pages/ │ ├── about.tsx │ ├── dynamic-import.tsx │ ├── folder/ │ │ ├── about.tsx │ │ └── index.tsx │ ├── index.tsx │ └── slugs/ │ ├── [slug].tsx │ └── all/ │ └── [...slugs].tsx ├── rpc/ │ └── example.ts └── server.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .changeset/README.md ================================================ # Changesets Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works with multi-package repos, or single-package repos to help you version and publish your code. You can find the full documentation for it [in our repository](https://github.com/changesets/changesets) We have a quick list of common questions to get you started engaging with this project in [our documentation](https://github.com/changesets/changesets/blob/master/docs/common-questions.md) ================================================ FILE: .changeset/config.json ================================================ { "$schema": "https://unpkg.com/@changesets/config@1.4.0/schema.json", "changelog": "@changesets/cli/changelog", "commit": false, "linked": [], "access": "public", "baseBranch": "master", "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { "onlyUpdatePeerDependentsWhenOutOfRange": true }, "updateInternalDependencies": "patch" } ================================================ FILE: .github/workflows/ci.yml ================================================ name: Npm Package on: push: branches: - master jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: - macos-latest - windows-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - uses: actions/setup-node@v1 with: node-version: 12 registry-url: https://registry.npmjs.org/ # caching - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - uses: actions/cache@v2 id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - uses: actions/cache@v2 with: path: ~/.npm key: ${{ runner.os }}-npm- restore-keys: | ${{ runner.os }}-npm- # scripts - run: yarn - run: yarn ultra --rebuild -r --filter '@bundless/*' build - run: yarn test tests && yarn test ./bundless/src - run: git diff # - name: Create Release # id: changesets # uses: changesets/action@master # with: # publish: yarn release # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # NPM_TOKEN: ${{ secrets.NPM_TOKEN }} ================================================ FILE: .gitignore ================================================ node_modules dist esm .DS_Store *.tsbuildinfo .ultra.cache.json **/web_modules/deps_hash **/web_modules/**/**.js **/web_modules/**/**.js.map out temp fixtures/with-pages/node_dist *_out with-pages/web_modules with-pages/out *_dist _hmr_client.js .bundless scripts/metafile.json ================================================ FILE: .prettierrc ================================================ { "arrowParens": "always", "jsxSingleQuote": true, "tabWidth": 4, "semi": false, "singleQuote": true, "trailingComma": "all" } ================================================ FILE: .vscode/settings.json ================================================ { "todo-tree.filtering.excludeGlobs": [ "**/web_modules/**", "**/web_modules/**", "**/fixtures/**" ] } ================================================ FILE: README.md ================================================


bundless

Next gen dev server and bundler

this project was a Vite alternative with many improvements like plugins, monorepo support, etc, most of them were added back to Vite 2, use Vite instead


# Features - 10x faster than traditional bundlers - Error panel with sourcemap support - jsx, typescript out of the box - import assets, import css ### What's the difference with traditional tools like Webpack? - Faster dev server times and faster build speeds (thanks to [esbuild](https://esbuild.github.io)) - Bundless serves native ES modules to the browser, removing the overhead of parsing each module before serving - Bundless uses a superset of [esbuild plugin system](https://esbuild.github.io/plugins/) to let users enrich its capabilities ### What's the difference with tools like vite? Bundless is very similar to vite, both serve native es modules to the browser and build a bundled version for production. Also both are based on a plugin system that can be shared between the dev server and the bundler. Some differences are: - Bundless uses the esbuild plugin system instead of rollup - Bundless uses esbuild instead of rollup for the production bundle - Bundless still lacks some features like css modules (depends on [esbuild](https://github.com/evanw/esbuild/issues/20)) and more framework support (coming soon) ================================================ FILE: TODOS.md ================================================ - fix stack trace parsing in client, use https://github.com/marvinhagemeister/errorstacks - make node polyfills an optional plugins list, but include it by default on default config - add support for multiple errors in error panel - check that inline sourcemaps are used by esbuild transformer - add crypto polyfill - when there is an error and using HMR, do not refresh, instead try to run react refresh and see if it works - ~~use data url for loading svgs~~ - ~~resolved paths that map from a real file to a fake file won't receive HMR updates because there is no way to resolve them during file change~~ - ~~make a config for assetExtensions, to let user import any file and return its path~~ - ~~put the onResolve function in the plugins executor, this way it does not depend on the presence of node-resolve plugin~~ - ~~replace node-resolve in the traversal with bare imports plugin~~ - ~~add a way to order plugins after or before the builtin plugins~~ - ~~do not rely on the node resolve package for anything, add an additional plugin and add node-resolve only when in yarn pnp~~ - ~~replace external but in meta with a dummy plugin that registers imports~~ - ~~do not run esbuild transform if loader is already js~~ - ~~run all user plugins first, make react refresh use the js loader as output~~ - only use sourcemaps on user packages, npm packages seem to not publish src directory - ~~dynamic imports should not reorder exports, depend on esbuild~~ - add warning for multiple node modules paths for same package when this package is peer of something - remove require warnings from paged (only use require when platform is node) - ~~investigate if using new extensions in a plugins require you to add a resolver, maybe add a universal resolver that resolves all extensions (if they are present in the import path)~~ - think about core feature for bundless for promotion in twitter (esbuild plugins, benchmarks, ssr, meta framework, build speed, monorepo support, hmr fixes, multiple entrypoints,) - how to make project sustainable? offer migration support for react-scripts and stuff like that? - ~~makes bundless internal stuff paths start with .bundless, makes easier to analyze network requests~~ - ~~put everything inside .bundless, make this directory path configurable, this way tools like vitro can use .vitro~~ - use basePath to change the index.html page relative urls, this way there is no need to %PUBLIC_URL% need, / -> /base-path/ - more tests for hmr, using puppeteer - test sourcemaps are correct, throwing errors and checking the browser error line - test the html entries resolution (public, name.html, html paths in entries, ...) - implement postcss processing to enable sass, tailwind, ... ================================================ FILE: bundless/CHANGELOG.md ================================================ # @bundless/cli ## 0.6.0 ### Minor Changes - Fixed problems with yarn berry and missing prebundled packages, better console messages ## 0.5.1 ### Patch Changes - Fix dead lock when not passing entries during prebundle ## 0.5.0 ### Minor Changes - Implemented immutable cache for all files, much faster refresh speed ## 0.4.0 ### Minor Changes - Cache dependencies, fix NODE_ENV variable always in production when prebundling ## 0.3.0 ### Minor Changes - Many improvements ## 0.2.6 ### Patch Changes - Updated esbuild ## 0.2.5 ### Patch Changes - Added support for importableAssetsExtensions ## 0.2.4 ### Patch Changes - 717a68e: Fix npm release, removed bin ## 0.2.3 ### Patch Changes - bd7ed34: Added enforce option to plugins ## 0.2.2 ### Patch Changes - 709ef96: Fix define assignments in client template ## 0.2.1 ### Patch Changes - ca42b40: Fix define runtime error in client code ## 0.2.0 ### Minor Changes - 9a0b4e5: Do not use esbuild when loader is js, inject defines in window ## 0.1.9 ### Patch Changes - 0c5c9b2: Store web_modules inside .bundless ## 0.1.8 ### Patch Changes - bbbd527: Bump ## 0.1.7 ### Patch Changes - 325516d: rename dotdot encondig to **..** - f7684e8: Added basepath support ## 0.1.6 ### Patch Changes - 3541033: Added includeWorkspacePackages option ## 0.1.5 ### Patch Changes - 2e6022f: Small improvements ## 0.1.4 ### Patch Changes - 9c57b90: Better build logs ## 0.1.3 ### Patch Changes - 1b976b6: Less noise in logs, prebundle at start ## 0.1.2 ### Patch Changes - 410f40a: Better logs on nonResolved ## 0.1.1 ### Patch Changes - 7eaff10: Export babelParserOptions ## 0.1.0 ### Minor Changes - 81c8e26: First release ================================================ FILE: bundless/bin.js ================================================ #!/usr/bin/env node require('./dist/cli') ================================================ FILE: bundless/package.json ================================================ { "name": "@bundless/cli", "version": "0.6.0", "description": "", "main": "dist/index.js", "module": "esm/index.js", "types": "dist/index.d.ts", "repository": "https://github.com/remorses/esbuild-plugins.git", "scripts": { "build": "tsc && tsc -m esnext --outDir esm", "watch:esm": "tsc -w -m esnext --outDir esm", "watch:cjs": "tsc -w", "watch": "run-p watch:esm watch:cjs", "local": "yarn publish --force --registry http://localhost:4873 --access restricted --no-git-tag-version --patch --message 'Local registry publish'", "cli": "node bin.js" }, "files": [ "dist", "src", "esm", "bin.js" ], "bin": { "bundless": "bin.js" }, "keywords": [], "author": "Tommaso De Rossi, morse ", "license": "ISC", "devDependencies": { "@babel/core": "^7.12.10", "@types/chokidar": "^2.1.3", "@types/dotenv": "^8.2.0", "@types/es-module-lexer": "^0.3.0", "@types/find-up": "^4.0.0", "@types/fs-extra": "^9.0.5", "@types/koa": "^2.11.6", "@types/koa-send": "^4.1.2", "@types/node": "^14.14.13", "@types/prompts": "^2.0.9", "@types/qs": "^6.9.5", "@types/ws": "^7.4.0", "@types/yargs": "^15.0.11", "npm-run-all": "^4.1.5", "qs": "^6.9.4" }, "dependencies": { "@babel/parser": "^7.12.11", "@babel/types": "^7.12.10", "@esbuild-plugins/all": "^0.0.27", "@koa/cors": "^3.1.0", "chalk": "^4.1.0", "chokidar": "^3.5.1", "deepmerge": "^4.2.2", "degit": "^2.8.0", "dotenv": "^8.2.0", "dotenv-expand": "^5.1.0", "@esbuild-plugins/node-globals-polyfill": "^0.1.0", "es-module-lexer": "^0.3.26", "esbuild": "^0.11.3", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", "fromentries": "^1.3.2", "fs-extra": "^9.0.1", "get-port-please": "^2.1.0", "hash-sum": "^2.0.0", "koa": "^2.13.0", "koa-etag": "^4.0.0", "koa-send": "^5.0.1", "launch-editor": "^2.2.1", "lodash": "^4.17.20", "lru-cache": "^6.0.0", "magic-string": "^0.25.7", "merge-source-map": "^1.1.0", "micro-memoize": "^4.0.9", "mime-types": "^2.1.29", "ora": "^5.2.0", "picomatch": "^2.2.2", "posthtml": "^0.15.1", "prompts": "^2.4.0", "qs": "^6.9.4", "simple-statistics": "^7.4.0", "slash": "^3.0.0", "source-map": "^0.7.3", "source-map-support": "^0.5.19", "strip-ansi": "^6.0.0", "tmpfile": "^0.2.0", "ws": "^7.4.1", "yargs": "^16.2.0" }, "peerDependencies": {} } ================================================ FILE: bundless/src/build/index.ts ================================================ import deepmerge from 'deepmerge' import * as esbuild from 'esbuild' import fromEntries from 'fromentries' import fs from 'fs-extra' import path from 'path' import { Plugin } from '../plugins-executor' import posthtml, { Node } from 'posthtml' import slash from 'slash' import { Config, defaultConfig, getEntries, normalizeConfig } from '../config' import { MAIN_FIELDS } from '../constants' import { Logger } from '../logger' import * as plugins from '../plugins' import { PluginsExecutor } from '../plugins-executor' import { commonEsbuildOptions, generateDefineObject, metafileToBundleMap, metafileToStats, defaultResolvableExtensions, } from '../prebundle/esbuild' import { printStats } from '../prebundle/stats' import { isUrl, runFunctionOnPaths, stripColon } from '../prebundle/support' import { metaToTraversalResult } from '../prebundle/traverse' import { cleanUrl, computeDuration, osAgnosticPath, partition, removeLeadingSlash, } from '../utils' interface OwnArgs { logger?: Logger incremental?: boolean } // how to get entrypoints? to support multi entry i should let the user pass them, for the single entry i can just get public/index.html or index.html // TODO add watch feature for build export async function build({ logger = new Logger(), incremental, ...config }: Config & OwnArgs): Promise<{ bundleMap traversalGraph rebuild?: esbuild.BuildInvalidate }> { config = normalizeConfig(config) const { minify = false, outDir = 'out', jsTarget = 'es2018', basePath = '/', } = config.build || {} const startTime = Date.now() const { platform = 'browser', root = '' } = config const isBrowser = platform === 'browser' const userPlugins = config.plugins || [] await fs.remove(outDir) await fs.ensureDir(outDir) const publicDir = path.resolve(root, 'public') const esbuildCwd = process.cwd() if (fs.existsSync(publicDir)) { await fs.copy(publicDir, outDir) } const mainFields = isBrowser ? MAIN_FIELDS : ['main', 'module'] const initialOptions: esbuild.BuildOptions = { ...commonEsbuildOptions(config), incremental, metafile: true, logLevel: 'warning', bundle: true, platform, target: jsTarget, publicPath: basePath, splitting: isBrowser, // external: externalPackages, minifyIdentifiers: Boolean(minify), minifySyntax: Boolean(minify), minifyWhitespace: Boolean(minify), mainFields, define: { ...generateDefineObject({ config, platform, isProd: true }), }, // tsconfig: tsconfigTempFile, format: isBrowser ? 'esm' : 'cjs', write: true, outdir: outDir, minify: Boolean(minify), } const allPlugins: Plugin[] = [ ...userPlugins, plugins.HtmlResolverPlugin(), plugins.HtmlIngestPlugin({ root, name: 'html-ingest', transformImportPath: cleanUrl, }), plugins.UrlResolverPlugin(), plugins.NodeResolvePlugin({ name: 'node-resolve', onNonResolved: (p) => { // throw new Error(`Cannot resolve '${p}'`) }, onResolved: (p) => { if (platform !== 'node') { return } // needed for linked workspaces // const isOutside = path.relative(root, p).startsWith('..') // TODO should i bundle linked dependencies in ssr build? if (p.endsWith('.js') && p.includes('node_modules')) { return { path: p, external: true, } } }, mainFields, extensions: [ ...defaultResolvableExtensions, ...(Object.keys(config.loader || {}) || []), ], }), ...(isBrowser ? [ plugins.NodeModulesPolyfillPlugin(), plugins.NodeGlobalsPolyfillPlugin({ buffer: true, process: true, define: initialOptions.define, }), ] : []), // html ingest should override other html plugins in build, this is because html is transformed to js ] const pluginsExecutor = new PluginsExecutor({ plugins: allPlugins, initialOptions, isProfiling: config.printStats, ctx: { config, isBuild: true, root }, }) const initialEntries = await getEntries(pluginsExecutor, config) const entryPoints = await Promise.all( initialEntries.map(async (x) => { const resolved = await pluginsExecutor.resolve({ path: x, resolveDir: root, }) if (!resolved || !resolved.path) { throw new Error(`Cannot resolve entry ${x} with plugins`) } return resolved.path }), ) logger.log( `Building with esbuild ${entryPoints .filter((f) => fs.existsSync(f)) .map((x) => osAgnosticPath(x, root)) .join(', ')}\n`, ) let { rebuild, metafile } = await esbuild.build({ ...initialOptions, entryPoints, plugins: pluginsExecutor.esbuildPlugins(), }) let meta: esbuild.Metafile = metafile! if (config.printStats && !logger.silent) { console.info(pluginsExecutor.printProfilingResult()) } logger.debug('finished esbuild build') meta = runFunctionOnPaths(meta!, (p) => { p = stripColon(p) // namespace:/path/to/file -> /path/to/file return p }) const bundleMap = metafileToBundleMap({ esbuildCwd, meta, root, }) const traversalGraph = await metaToTraversalResult({ meta, entryPoints, root, esbuildCwd, }) // no outputs? if (!Object.keys(bundleMap).length) { return { bundleMap, traversalGraph, rebuild: rebuild, } } const cssToPreload: Record = fromEntries( entryPoints.map((x) => osAgnosticPath(x, root)).map((k) => [k, []]), ) // find all the css files, for every entry file traverse its imports and collect all css files, add the css outputs to cssToInject for (let entry of entryPoints.map((x) => osAgnosticPath(x, root))) { traverseGraphDown({ entryPoints: [entry], traversalGraph, onNode(imported) { if (cleanUrl(imported).endsWith('.css')) { const abs = path.resolve(root, imported) let output = Object.keys(meta.outputs).find((x) => { if (!x.endsWith('.css')) { return } const info = meta.outputs[x] const absInputs = new Set( Object.keys(info.inputs).map((x) => path.resolve(esbuildCwd, x), ), ) if (absInputs.has(abs)) { return true } }) if (!output) { throw new Error(`Cannot find output for '${imported}'`) } output = path.resolve(esbuildCwd, output) cssToPreload[entry].push(output) } }, }) } // TODO remove complete css injection after esbuild has css code splitting via js const cssToInject = Object.keys(meta.outputs).filter((x) => x.endsWith('.css'), ) // needed to run the onTransform on html entries const htmlPluginsExecutor = new PluginsExecutor({ initialOptions: initialOptions, plugins: [plugins.HtmlResolverPlugin(), ...userPlugins], ctx: pluginsExecutor.ctx, }) for (let entry of entryPoints) { if (path.extname(entry) === '.html') { const relativePath = osAgnosticPath(entry, root) if (!bundleMap[relativePath]) { throw new Error( `Cannot find output for '${relativePath}' in ${JSON.stringify( bundleMap, null, 4, )}`, ) } let outputJs = path.resolve(root, bundleMap[relativePath]!) // let outputHtmlPath = path.resolve( // root, // path.dirname(bundleMap[relativePath]!), // path.basename(entry), // ) // await fs.copyFile(entry, outputHtmlPath) const { contents: html = '', } = await htmlPluginsExecutor.resolveLoadTransform({ path: entry }) if (!html) { throw new Error(`Cannot load html for ${entry}`) } const transformer = posthtml( [ (tree) => { // remove previous script tags tree.walk((node) => { if ( node && node.tag === 'script' && node.attrs && node.attrs['type'] === 'module' && node.attrs['src'] && !isUrl(node.attrs['src']) ) { // TODO maybe leave script tags that are not resolved by plugin executor, maybe they are loaded from some cdn or who knows what, resolver should be able to resolve relative urls node.tag = false as any node.content = [] } return node }) // add new output files back to html tree.match({ tag: 'body' }, (node) => { const jsSrc = path.posix.join( basePath, slash(path.relative(outDir, outputJs)), ) node.content = [ MyNode({ tag: 'script', attrs: { type: 'module', src: jsSrc }, }), ...(node.content || []), ] return node }) // insert head if missing if (!/ { html.content = insertAfterStrings( html.content, MyNode({ tag: 'head', content: [] }), ) return html }) } else { if (Array.isArray(tree)) { tree = Object.assign( tree, insertAfterStrings( tree, MyNode({ tag: 'head', content: [], }), ), ) } } } tree.match({ tag: 'head' }, (node) => { const cssPreloadHrefs = cssToPreload[osAgnosticPath(entry, root)] || [] node.content = [ // TODO maybe include imported fonts as links? ...cssPreloadHrefs.map((href) => { href = path.posix.join( basePath, slash(path.relative(outDir, href)), ) return MyNode({ tag: 'link', attrs: { href, rel: 'preload', as: 'style', }, }) }), ...cssToInject.map((href) => { href = path.posix.join( basePath, slash(path.relative(outDir, href)), ) return MyNode({ tag: 'link', attrs: { href, rel: 'stylesheet', }, }) }), ...(node.content || []), ] return node }) }, // !minify && beautify({ rules: { indent: 2 } }), ].filter(Boolean), ) const result = await transformer.process(html).catch((e) => { throw new Error( `Cannot process html with posthtml: ${e}\n${html}`, ) }) let htmlOutputDirname = path.normalize( path.dirname(path.relative(root, entry)), ) // remove `public` from entry path if (htmlOutputDirname.startsWith('public')) { htmlOutputDirname = htmlOutputDirname.replace( /public(\/|\\)?/, '', ) } const outputHtmlPath = path.resolve( outDir, htmlOutputDirname, path.basename(entry), ) await fs.ensureDir(path.dirname(outputHtmlPath)) await fs.writeFile(outputHtmlPath, result.html) // emit html to dist directory, in dirname same as the output files corresponding to html entries } else { // if entry is not html, create an html file that imports the js output bundle } } logger.log(`Saved files to ./${osAgnosticPath(outDir, process.cwd())}`) if (!logger.silent) { console.info( printStats({ dependencyStats: metafileToStats({ meta, destLoc: outDir }), destLoc: path.basename(outDir), }), ) } logger.log( `Built to ${ /^\w/.test(outDir) ? './' + outDir : outDir } in ${computeDuration(startTime)}`, ) return { bundleMap, // TODO rebuild should also trigger index.html rewrite, wrap rebuild function rebuild, traversalGraph, } } function insertAfterStrings(items, node) { const [strings, nonStrings] = partition(items, (x) => typeof x === 'string') return [...strings, node, ...nonStrings] } function MyNode(x: Partial): Node { return x as any } function traverseGraphDown(args: { traversalGraph: Record entryPoints: string[] onNode }) { const { entryPoints, traversalGraph, onNode } = args const toVisit: string[] = entryPoints const visited = new Set() while (toVisit.length) { const entry = toVisit.shift() if (!entry || visited.has(entry)) { break } visited.add(entry) const imports = traversalGraph[entry] if (!imports) { throw new Error( `Node for '${entry}' not found in graph: ${JSON.stringify( JSON.stringify(Object.keys(traversalGraph), null, 4), )}`, ) } if (onNode) { onNode(entry) } toVisit.push(...imports) } } ================================================ FILE: bundless/src/cli.ts ================================================ #!/usr/bin/env node require('source-map-support').install() if (process.argv.includes('--debug')) { process.env.DEBUG_BUNDLESS = 'true' } import degit from 'degit' import prompts from 'prompts' import deepMerge from 'deepmerge' import yargs, { CommandModule } from 'yargs' import { build } from './build' import { Config, loadConfig } from './config' import { CONFIG_NAME, EXAMPLES_FOLDERS } from './constants' import { serve } from './serve' import { logger } from './logger' import path from 'path' const serveCommand: CommandModule = { command: ['dev', 'serve', '*'], builder: (argv) => { argv.option('port', { alias: 'p', type: 'number', description: 'The port for the dev server', }) argv.option('force', { alias: 'f', type: 'boolean', description: 'Force prebundling even if dependencies did not change', }) return argv }, handler: prettyPrintErrors(async (argv: any) => { const loadedConfig = loadConfig(process.cwd(), argv.config) const configFromArgv: Config = { prebundle: { force: argv.force }, server: { port: argv.port, }, printStats: argv.stats, } let config: Config = deepMerge(loadedConfig, configFromArgv) return await serve(config) }), } const buildCommand: CommandModule = { command: ['build'], builder: (argv) => { argv.option('outDir', { alias: 'o', type: 'string', description: 'The output directory', }) return argv }, handler: prettyPrintErrors(async (argv: any) => { let config = loadConfig(process.cwd(), argv.config) const configFromArgv: Config = { build: { outDir: argv.outDir, }, printStats: argv.stats, } config = deepMerge(config, configFromArgv) return await build({ ...config, }) }), } const quickstartCommand: CommandModule = { command: ['quickstart '], builder: (argv) => { argv.positional('outDir', { type: 'string' }) return argv }, handler: prettyPrintErrors(async (argv: any) => { const exampleDir = await prompts({ type: 'select', name: 'value', message: 'What example do you want to use?', choices: EXAMPLES_FOLDERS.map( (message: string): prompts.Choice => ({ title: message, value: message, }), ), }) if (!exampleDir.value) { logger.log(`Nothing done`) return } logger.log(`Downloading ${exampleDir.value} example to ${argv.outDir}`) const emitter = degit( path.posix.join('remorses/bundless/examples', exampleDir.value), { verbose: true, }, ) emitter.on('info', (info) => { logger.debug(info.message) }) await emitter.clone(argv.outDir) logger.log(`Downloaded example to ./${path.normalize(argv.outDir)}`) }), } yargs .scriptName('bundless') .locale('en') .option('config', { alias: 'c', type: 'string', default: CONFIG_NAME, description: `The config path to use`, }) .option('debug', { type: 'boolean', description: `Enables debug logging`, }) .option('stats', { type: 'boolean', description: 'Show profiling stats', }) .command(serveCommand) .command(buildCommand) .command(quickstartCommand) .version() .help('help', 'h').argv function prettyPrintErrors(fn) { return async (...args) => { try { return await fn(...args) } catch (e) { logger.error(e.message) logger.error(e.stack) } } } ================================================ FILE: bundless/src/client/template.ts ================================================ // This file runs in the browser. // injected by serverPluginClient when served declare const sourceMapSupport: any declare const __HMR_PROTOCOL__: string declare const __HMR_HOSTNAME__: string declare const __HMR_PORT__: string declare const __HMR_TIMEOUT__: number declare const __HMR_ENABLE_OVERLAY__: boolean declare const __DEFINES__: Record const defines = __DEFINES__ Object.keys(defines).forEach((key) => { const segs = key.split('.') let target = window as any for (let i = 0; i < segs.length; i++) { const seg = segs[i] if (i === segs.length - 1) { target[seg] = defines[key] } else { target = target[seg] || (target[seg] = {}) } } }) import { OverlayErrorPayload, HMRPayload, UpdatePayload, OverlayInfoOpenPayload, } from './types' // use server configuration, then fallback to inference const socketProtocol = __HMR_PROTOCOL__ || (location.protocol === 'https:' ? 'wss' : 'ws') const socketHost = `${__HMR_HOSTNAME__ || location.hostname}:${__HMR_PORT__}` const socketURL = `${socketProtocol}://${socketHost}` const isWindowDefined = typeof window !== 'undefined' function log(...args) { console.info('[ESM-HMR]', ...args) } function reload() { if (!isWindowDefined) { return } location.reload(true) } let SOCKET_MESSAGE_QUEUE: HMRPayload[] = [] let connected = false function _sendSocketMessage(msg) { socket.send(JSON.stringify(msg)) } function sendSocketMessage(msg: HMRPayload) { if (!connected) { SOCKET_MESSAGE_QUEUE.push(msg) } else { _sendSocketMessage(msg) } } const socket = new WebSocket(socketURL, 'esm-hmr') const REGISTERED_MODULES: { [path: string]: HotModuleState } = {} class HotModuleState { data = {} isLocked = false isDeclined = false isAccepted = false acceptCallbacks: { deps: string[]; callback: Function }[] = [] disposeCallbacks: Function[] = [] path = '' constructor(path) { this.path = path } lock() { this.isLocked = true } dispose(callback) { this.disposeCallbacks.push(callback) } invalidate() { reload() } decline() { this.isDeclined = true } accept(_deps, callback: Function | true = true) { if (this.isLocked) { return } if (!this.isAccepted) { sendSocketMessage({ path: this.path, type: 'hotAccept' }) this.isAccepted = true } if (!Array.isArray(_deps)) { callback = _deps || callback _deps = [] } if (callback === true) { callback = () => {} } const deps = _deps.map((dep) => { return new URL(dep, `${window.location.origin}${this.path}`) .pathname }) this.acceptCallbacks.push({ deps, callback, }) } } export function createHotContext(fullUrl) { const id = new URL(fullUrl).pathname const existing = REGISTERED_MODULES[id] if (existing) { existing.lock() runModuleDispose(id) return existing } const state = new HotModuleState(id) REGISTERED_MODULES[id] = state return state } /** Called when a new module is loaded, to pass the updated module to the "active" module */ // uses the graph lastUsedTimestamp to make the new timestamp to fetch, pass this in the hmr message? async function runModuleAccept({ path, namespace, updateID }: UpdatePayload) { const state = REGISTERED_MODULES[path] if (!state) { log(`${path} has not been registered, reloading`) log(Object.keys(REGISTERED_MODULES)) return false } if (state.isDeclined) { log(`${path} has declined HMR, reloading`) return false } const acceptCallbacks = state.acceptCallbacks for (const { deps, callback: acceptCallback } of acceptCallbacks) { const encodedNamespace = encodeURIComponent(namespace || 'file') const [module, ...depModules] = await Promise.all([ import( appendQuery(path, `namespace=${encodedNamespace}&t=${updateID}`) ), ...deps.map( (d) => import(appendQuery(d, `t=${Date.now()}&namespace=file`)), ), // TODO deps should have the namespace and their update ids too, how? ]) acceptCallback({ module, deps: depModules }) } return true } /** Called when a new module is loaded, to run cleanup on the old module (if needed) */ async function runModuleDispose(id) { const state = REGISTERED_MODULES[id] if (!state) { return false } if (state.isDeclined) { return false } const disposeCallbacks = state.disposeCallbacks state.disposeCallbacks = [] state.data = {} disposeCallbacks.map((callback) => callback()) return true } function getErrorMessageMappedSource(message) { if (typeof sourceMapSupport !== 'undefined') { return ( sourceMapSupport.getErrorSource({ message, name: '', stack: '', }) || message ) } return message } function getErrorStackMappedSource(stack) { if (typeof sourceMapSupport !== 'undefined') { return ( sourceMapSupport .getErrorSource({ stack, message: '', name: '', }) ?.trim?.() || stack ) } return stack } socket.addEventListener('message', ({ data: _data }) => { if (!_data) { return } const data: HMRPayload = JSON.parse(_data) if (data.type === 'connected') { connected = true SOCKET_MESSAGE_QUEUE.forEach(_sendSocketMessage) SOCKET_MESSAGE_QUEUE = [] setInterval(() => { try { socket.send(JSON.stringify({ type: 'ping' })) } catch {} }, __HMR_TIMEOUT__) return } if (data.type === 'reload') { log('message: reload') reload() return } if (data.type === 'overlay-error') { log('message: error') InfoOverlay.clear() ErrorOverlay.show(data.err) return } if (data.type === 'overlay-info-open') { log('message: info open') ErrorOverlay.clear() InfoOverlay.show({ ...data.info, stack: '' }) return } if (data.type === 'overlay-info-close') { log('message: info close') InfoOverlay.clear() return } if (data.type === 'update') { if (ErrorOverlay.isOpen()) { log(`error overlay is open: reloading`) return reload() } log('message: update', data) runModuleAccept(data) .then((ok) => { if (ok) { ErrorOverlay.clear() InfoOverlay.clear() } else { reload() } }) .catch((err) => { console.error('[ESM-HMR] Hot Update Error', err) // A failed import gives a TypeError, but invalid ESM imports/exports give a SyntaxError. // Failed build results already get reported via a better WebSocket update. // We only want to report invalid code like a bad import that doesn't exist. if (err instanceof SyntaxError) { ErrorOverlay.show({ message: `Hot Update Error for ${data.path}: ${err.message}`, stack: err.stack || '', }) } }) return } log('message: unknown', data) }) log('listening for file changes...') /** Runtime error reporting: If a runtime error occurs, show it in an overlay. */ if (isWindowDefined) { window.addEventListener('error', function (event) { const err: OverlayErrorPayload['err'] = { message: `${event.message}`, stack: event.error ? event.error.stack : '', } ErrorOverlay.show(err) }) } const enableOverlay = __HMR_ENABLE_OVERLAY__ function appendQuery(url: string, query: string) { if (query.startsWith('?')) { query = query.slice(1) } if (url.includes('?')) { return url + query } return `${url}?${query}` } const template = ({ mainColor, tip = '' }) => /*html*/ `
    
  

  

  

  ${
      tip &&
      `
${tip}
` }
` class CommonOverlay extends HTMLElement { root?: ShadowRoot static overlayId: string = 'overlay' static isOpen() { const elements = document.querySelectorAll(this.overlayId) return elements.length > 0 } static show(arg) { if (!enableOverlay) return this.clear() // @ts-ignore const instance = new this(arg) document.body.appendChild(instance) } static clear() { document .querySelectorAll(this.overlayId) .forEach((n) => (n as ErrorOverlay).close()) } close() { this.parentNode?.removeChild(this) } displayText(selector: string, text: string, linkFiles = false) { const el = this.root!.querySelector(selector)! if (!linkFiles) { el.textContent = text } else { // TODO also match normal file paths const matches = getAllMatches(text, /(https?:\/\/.*)/g) for (let { frag, matched } of matches) { el.appendChild(document.createTextNode(frag)) const link = document.createElement('a') link.textContent = matched link.className = 'file-link' const isUrl = /https?:\/\//.test(matched) let path = isUrl ? new URL(matched).pathname : matched const fileLocationRegex = /(:\d+:\d+)$/ if (!fileLocationRegex.test(path)) { const lineNumAndCol = fileLocationRegex.exec(matched)?.[1] || '' path += lineNumAndCol } link.onclick = () => { console.info(`Opening ${path} in editor`) fetch('/__open-in-editor?file=' + encodeURIComponent(path)) } el.appendChild(link) } } } } function getAllMatches(text: string, regex: RegExp) { let curIndex = 0 let match const matches: { frag: string; matched: string }[] = [] while ((match = regex.exec(text))) { let { 0: matched, index } = match matched = matched.trim() if (index != null) { const frag = text.slice(curIndex, index) matches.push({ frag, matched }) curIndex += frag.length + matched.length } } return matches } export class ErrorOverlay extends CommonOverlay { root: ShadowRoot static overlayId = 'bundless-error-overlay' constructor(err: OverlayErrorPayload['err']) { console.log({ err }) super() this.root = this.attachShadow({ mode: 'open' }) this.root.innerHTML = template({ mainColor: '--red', tip: `Click outside or fix the code to dismiss.
`, }) if (err.plugin) { this.displayText('.plugin', `[plugin:${err.plugin}] `) } const message = getErrorMessageMappedSource(err.message) this.displayText('.message-body', message.trim()) const stack = getErrorStackMappedSource(err.stack) this.displayText('.stack', stack.trim(), true) this.root.querySelector('.window')!.addEventListener('click', (e) => { e.stopPropagation() }) this.addEventListener('click', () => { this.close() }) } } customElements.define(ErrorOverlay.overlayId, ErrorOverlay) export class InfoOverlay extends CommonOverlay { root: ShadowRoot static overlayId = 'bundless-info-overlay' constructor(info: OverlayInfoOpenPayload['info']) { super() this.root = this.attachShadow({ mode: 'open' }) this.root.innerHTML = template({ mainColor: '--cyan' }) this.displayText('.message-body', info.message.trim()) this.root.querySelector('.window')!.addEventListener('click', (e) => { e.stopPropagation() }) // this.addEventListener('click', () => { // this.close() // }) } } customElements.define(InfoOverlay.overlayId, InfoOverlay) // InfoOverlay.show({ message: 'Prebundling modules' }) ================================================ FILE: bundless/src/client/types.ts ================================================ export type HMRPayload = | ConnectedPayload | UpdatePayload | FullReloadPayload | OverlayErrorPayload | OverlayInfoOpenPayload | OverlayInfoClosePayload | HotAcceptPayload | ConnectPayload interface ConnectedPayload { type: 'connected' } export interface UpdatePayload { type: 'update' path: string updateID: string namespace: string // changeSrcPath: string // timestamp: number } interface FullReloadPayload { type: 'reload' } interface HotAcceptPayload { type: 'hotAccept' path: string } interface ConnectPayload { type: 'connected' } export interface OverlayErrorPayload { type: 'overlay-error' err: { // [name: string]: any message: string stack: string id?: string frame?: string plugin?: string pluginCode?: string } } export interface OverlayInfoOpenPayload { type: 'overlay-info-open' info: { [name: string]: any message: string showSpinner?: boolean } } export interface OverlayInfoClosePayload { type: 'overlay-info-close' } ================================================ FILE: bundless/src/config.ts ================================================ import { CONFIG_NAME, DEFAULT_PORT } from './constants' import findUp from 'find-up' import fs from 'fs' import { Plugin, PluginsExecutor } from './plugins-executor' import path from 'path' import * as esbuild from 'esbuild' import deepmerge from 'deepmerge' export async function getEntries( pluginsExecutor: PluginsExecutor, config: Config, ) { const root = pluginsExecutor.ctx.root if (config.entries) { // for (let entry of config.entries) { // if (config.platform === 'browser' && !entry.endsWith('.html')) { // throw new Error( // `When targeting browser config.entries can only contain html files: ${entry}`, // ) // } // } return ( await Promise.all( config.entries.map((x) => pluginsExecutor .resolve({ path: x, resolveDir: config.root, skipOnResolved: true, }) .then((x) => x?.path || ''), ), ) ) .filter(Boolean) .map((x) => path.resolve(root, x)) } // public folder logic is already in the html resolver plugin const index1 = await pluginsExecutor.resolve({ path: 'index.html', skipOnResolved: true, resolveDir: config.root, }) if (index1?.path) { return [path.resolve(root, index1.path)] } throw new Error( `Cannot find entries, neither config.entries, index.html or public/index.html files are present\n${JSON.stringify( config, null, 4, )}`, ) } export type Platform = 'node' | 'browser' export function normalizeConfig(config: Config) { config = deepmerge(defaultConfig, config) config.plugins = (config.plugins || []) .filter(Boolean) .map((x) => ({ ...x, enforce: x.enforce || 'pre' })) return config } // TODO add config.mainFields // TODO add config.build.chunkNames, assetNames, entryNames // TODO add config.inject // TODO add config.watch // TODO add config.resolveExtensions // TODO add config.jsxFactory, jsxFragment export interface Config { server?: ServerConfig define?: Record prebundle?: PrebundlingConfig build?: BuildConfig printStats?: boolean platform?: Platform root?: string // env?: Record entries?: string[] plugins?: Plugin[] // TODO rename to loader to stay closer to esbuild loader?: Record // TODO support more than file jsx?: | 'vue' | 'preact' | 'react' | { factory?: string fragment?: string } } export interface PrebundlingConfig { force?: boolean includeWorkspacePackages?: string[] | boolean // TODO if bundless is called on root this won't work (example is vitro), every path won't ever be outside root } export interface ServerConfig { openBrowser?: boolean cors?: boolean port?: number | string hmr?: HmrConfig | boolean } export const defaultConfig: Config = { // entries: ['index.html'], // entry files server: { port: 3000, hmr: true, openBrowser: false, // opens browser on server start }, prebundle: { includeWorkspacePackages: false, // linked packages to prebundle force: false, // forces prebundling dependencies on server start }, build: { basePath: '/', jsTarget: 'es2018', // target es version minify: true, // run esbuild minification outDir: './out', // output directory }, platform: 'browser', // target platform, browser or node loader: {}, // extension that return their path when imported jsx: 'react', // jsx preset plugins: [], define: {}, } export function loadConfig(from: string, name = CONFIG_NAME): Config { const configPath = findUp.sync(name, { cwd: from }) let config: Config = {} if (configPath) { config = require(configPath) } if (!config.root) { config = { ...config, root: process.cwd() } } return config } export interface HmrConfig { protocol?: string hostname?: string port?: number path?: string /** * If you are using hmr ws proxy, it maybe timeout with your proxy program. * You can set this option to let client send ping socket to keep connection alive. * The option use `millisecond` as unit. * @default 30000ms */ timeout?: number } export interface BuildConfig { basePath?: string outDir?: string minify?: boolean jsTarget?: string } ================================================ FILE: bundless/src/constants.ts ================================================ import { logger } from './logger' import * as esbuild from 'esbuild' export let isRunningWithYarnPnp: boolean = false export let pnpapi: any try { pnpapi = require('pnpapi') isRunningWithYarnPnp = Boolean(pnpapi) logger.debug('Using Yarn PnP') } catch {} export const hmrClientNamespace = 'hmr-client' export const DEFAULT_PORT = 3000 export const CLIENT_PUBLIC_PATH = `/_hmr_client.js?namespace=${hmrClientNamespace}` export const COMMONJS_ANALYSIS_PATH = '.bundless/commonjs.json' export const WEB_MODULES_PATH = '.bundless/node_modules' export const BUNDLE_MAP_PATH = '.bundless/bundleMap.json' export const HMR_SERVER_NAME = 'esm-hmr' export const CONFIG_NAME = 'bundless.config.js' export const EXAMPLES_FOLDERS = [ 'react-typescript', 'react-javascript', 'vanilla-javascript', 'svelte', ] export const MAIN_FIELDS = ['browser:module', 'browser', 'module', 'main'] export const showGraph = process.env.SHOW_HMR_GRAPH export const JS_EXTENSIONS = ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.cjs'] export const defaultLoader: Record = { '.jpg': 'file', '.jpeg': 'file', '.png': 'file', '.svg': 'dataurl', '.gif': 'file', '.ico': 'file', '.webp': 'file', '.jp2': 'file', '.avif': 'file', '.woff': 'file', '.woff2': 'file', '.ttf': 'file', } export const defaultImportableAssets = Object.keys(defaultLoader) export const hmrPreamble = `import * as __HMR__ from '${CLIENT_PUBLIC_PATH}'; import.meta.hot = __HMR__.createHotContext(import.meta.url); ` ================================================ FILE: bundless/src/hmr-graph.ts ================================================ import path from 'path' import WebSocket from 'ws' import net from 'net' import crypto from 'crypto' import chalk from 'chalk' import { osAgnosticPath } from './utils' import { fileToImportPath, importPathToFile } from './utils' import { HMRPayload } from './client/types' import { logger } from './logger' import { HMR_SERVER_NAME } from './constants' import slash from 'slash' import { PluginsExecutor } from './plugins-executor' // examples are ./main.js and ../folder/main.js type OsAgnosticPath = string // examples are /path/file.js or /__..__/file.js type ImportPath = string export interface HmrNode { hash: string importers(): Set // returns osAgnosticPaths importees: Set dirtyImportersCount: number // modules that have imported this and have been updated lastUsedTimestamp: number isHmrEnabled?: boolean hasHmrAccept?: boolean computedModules?: Set } export class HmrGraph { // keys are always os agnostic paths and not public paths nodes: { [osAgnosticPath: string]: HmrNode } = {} root wss: WebSocket.Server server: net.Server realToFake: Record> constructor({ root, server }: { root: string; server: net.Server }) { this.realToFake = {} this.nodes = {} this.root = root this.server = server const wss = new WebSocket.Server({ noServer: true }) this.wss = wss server.once('close', () => { wss.close(() => logger.debug('closing wss')) wss.clients.forEach((client) => { client.close() }) }) server.on('upgrade', (req, socket, head) => { if (req.headers['sec-websocket-protocol'] === HMR_SERVER_NAME) { wss.handleUpgrade(req, socket, head, (ws) => { wss.emit('connection', ws, req) }) } }) wss.on('connection', (socket) => { socket.send(JSON.stringify({ type: 'connected' })) socket.on('message', (data) => { const message: HMRPayload = JSON.parse(data.toString()) if (message.type === 'hotAccept') { this.ensureEntry(importPathToFile(root, message.path), { hasHmrAccept: true, isHmrEnabled: true, }) } }) }) wss.on('error', (e: Error & { code: string }) => { if (e.code !== 'EADDRINUSE') { console.error(chalk.red(`WebSocket server error:`)) console.error(e) } }) } sendHmrMessage(payload: HMRPayload) { if (!this.wss) { throw new Error(`HMR Websocket server has not started yet`) } const stringified = JSON.stringify(payload, null, 4) logger.debug(`hmr: ${stringified}`) if (!this.wss.clients.size) { logger.debug(`No clients listening for HMR message`) } let clientIndex = 1 for (let client of this.wss.clients.values()) { if (client.readyState === WebSocket.OPEN) { client.send(stringified) } else { logger.log( chalk.red( `Cannot send HMR message, hmr client ${clientIndex} is not open`, ), ) } clientIndex += 1 } } ensureEntry(path: string, newNode?: Partial): HmrNode { path = osAgnosticPath(path, this.root) if (this.nodes[path]) { Object.assign(this.nodes[path], newNode || {}) return this.nodes[path] } this.nodes[path] = { hash: process.env.BUNDLESS_CONSISTENT_HMR_GRAPH_HASH != null ? process.env.BUNDLESS_CONSISTENT_HMR_GRAPH_HASH : crypto.randomBytes(4).toString('hex'), dirtyImportersCount: 0, lastUsedTimestamp: 0, hasHmrAccept: false, isHmrEnabled: false, importees: new Set(), ...newNode, importers: () => { const importPath = fileToImportPath(this.root, path) return new Set( Object.entries(this.nodes) .filter(([_, v]) => { return v.importees?.has(importPath) }) .map(([k, _]) => k), ) }, } return this.nodes[path] } toString() { const content = Object.keys(this.nodes) .map((k) => { const node = this.nodes[k] let key = slash(path.relative(process.cwd(), k)) if (node.hasHmrAccept) { key = chalk.redBright(chalk.underline(key)) } else if (node.isHmrEnabled) { key = chalk.yellow(chalk.underline(key)) } key += ' ' + chalk.cyan(node.dirtyImportersCount) return ` ${key} -> ${JSON.stringify( [...node.importees], null, 4, ) .split('\n') .map((x) => ' ' + x) .join('\n') .trim()}` }) .join('\n') const legend = `\nLegend:\n` + // `${'[ ]'} has no HMR\n` + `${chalk.redBright('[ ]')} accepts HMR\n` + `${chalk.yellow('[ ]')} HMR enabled\n\n` return legend + `ImportGraph {\n${content}\n}\n` } // TODO maybe rewrite should happen before to prune the graph from removed imports? in case old imports remain in the graph what could happen? the hmr algo only depend on the importers, this means that the worst thing could be that a non importer could be updated, but this is impossible because the only changed imports can only be the ones in the updated file, this means that only the current file imports could be invalid, which means that changed files importers will always be valid // TODO to make this work for vue and vite, i need to support virtual files?, vite files will be rewritten as js files with imports of virtual css files, the current implementation will see the change in the vite file, but it cannot know about changed virtual files, maybe i can put a property in the result of onTransform or onLoad to say `computedFiles: [virtualFile]`, save this info in graph (taken during rewrite) and in onChange i can send an update to these dependent modules too // TODO batch changes? this way if user dopy pastes a directory i don't have to traverse the graph for every file async onFileChange({ filePath }: { filePath: string }) { const graph = this const root = this.root const resolvedPaths = this.realToFake[filePath] ? [...this.realToFake[filePath]] : [filePath] const initialRelativePaths = resolvedPaths.map((resolvedPath) => osAgnosticPath(resolvedPath, root), ) const messages: HMRPayload[] = [] const nodesToBeFetched: Set = new Set([]) // update all importers query fetch to not use browser cached module await this.traverseUpwards({ entries: initialRelativePaths, onTraverse: async ( relativePath: string, node: HmrNode, importers: Set, ) => { // can be a non js file, like index.html if (!node) { return true } nodesToBeFetched.add(relativePath) if (node.computedModules) { for (let computed of node.computedModules) { const node = graph.nodes[computed] node.lastUsedTimestamp++ } } for (let importer of importers) { nodesToBeFetched.add(importer) } return true }, }) for (const relativePath of nodesToBeFetched) { const node = graph.ensureEntry(relativePath) node.lastUsedTimestamp++ } await this.traverseUpwards({ entries: initialRelativePaths, onTraverse: async ( relativePath: string, node: HmrNode, importers: Set, ) => { const importPath = fileToImportPath(root, relativePath) // can be a non js file, like index.html if (!node) { logger.log( `node for '${relativePath}' not found in graph, reloading`, ) this.sendHmrMessage({ type: 'reload' }) return } // trigger an update if the module is able to handle it if (node.isHmrEnabled) { messages.push({ type: 'update', namespace: 'file', path: importPath, updateID: node.hash + node.lastUsedTimestamp, }) // computed nodes are virtual nodes whose code depends on another node if (node.computedModules) { for (let computed of node.computedModules) { const node = graph.nodes[computed] node.dirtyImportersCount++ messages.push({ type: 'update', namespace: 'file', // TODO do not hard code namespace for computed nodes path: fileToImportPath(root, computed), updateID: node.hash + node.lastUsedTimestamp, }) } } } // reached a boundary, stop hmr propagation if (node.hasHmrAccept) { return } // reached another boundary, reload if (!importers.size) { logger.log( `reached top boundary '${relativePath}', reloading`, ) this.sendHmrMessage({ type: 'reload' }) return } for (let importer of importers) { graph.ensureEntry(importer) // mark module as dirty, importers will refetch this module to see updates node.dirtyImportersCount++ // TODO this means that the current node t must be changed, not the importer one, but given that now i include the t on every one maybe no nee d for this? } return true }, }) messages.forEach((m) => this.sendHmrMessage(m)) } async traverseUpwards({ onTraverse, entries }) { const graph = this const toVisit: string[] = [...entries] const visited: string[] = [] while (toVisit.length) { const relativePath = toVisit.shift() if (!relativePath || visited.includes(relativePath)) { continue } visited.push(relativePath) // TODO if plugin resolver like css changes filename, it won't be found in graph const node = graph.nodes[relativePath] if (!node) { return } const importers = node.importers() const res = await onTraverse(relativePath, node, importers) if (res) { toVisit.push(...importers) } } } } ================================================ FILE: bundless/src/index.ts ================================================ export { serve } from './serve' export { build } from './build' export { Config, loadConfig } from './config' export { Plugin, PluginsExecutor } from './plugins-executor' export { logger, Logger } from './logger' export { HmrGraph, HmrNode } from './hmr-graph' export { MAIN_FIELDS } from './constants' ================================================ FILE: bundless/src/logger.ts ================================================ import chalk from 'chalk' import ora, { Ora } from 'ora' const defaultPrefix = '[bundless] ' const DEBUG = process.env.DEBUG_BUNDLESS export class Logger { prefix: string = '' silent: boolean constructor({ prefix = defaultPrefix, silent = false } = {}) { this.prefix = prefix this.silent = silent } private print(x) { if (this.silent) { return } if (this.spinner) { this.spinner.info(x) } else { process.stderr.write(chalk.dim(this.prefix) + x + '\n') } } log(...x) { this.print(x.join(' ')) } warn(...x) { this.print(chalk.yellow(x.join(' '))) } error(...x) { this.print(chalk.red(x.join(' '))) } private spinner?: Ora spinStart(text: string) { if (this.silent) { return } this.spinner = ora(text + '\n\n').start() } spinSucceed(text: string) { if (this.spinner) { this.spinner.succeed(text) } this.spinner = undefined } spinFail(text: string) { if (this.spinner) { this.spinner.fail(chalk.redBright(text)) } this.spinner = undefined } debug = DEBUG ? (...x) => { if (this.spinner) { this.spinner.info(x.join(' ') + '\n') } else { process.stderr.write( chalk.dim(this.prefix + x.join(' ') + '\n'), ) } } : () => {} } export const logger = new Logger() ================================================ FILE: bundless/src/middleware/history-fallback.ts ================================================ import { Middleware } from 'koa' import path from 'path' import slash from 'slash' import { logger } from '../logger' import { PluginsExecutor } from '../plugins-executor' import { cleanUrl, importPathToFile } from '../utils' export function historyFallbackMiddleware({ root, pluginsExecutor, }: { root: string pluginsExecutor: PluginsExecutor }): Middleware { return async (ctx, next) => { if (ctx.status !== 404) { return next() } if (ctx.method !== 'GET') { logger.debug(`not redirecting ${ctx.url} (not GET)`) return next() } const accept = ctx.headers && ctx.headers.accept if (typeof accept !== 'string') { logger.debug(`not redirecting ${ctx.url} (no headers.accept)`) return next() } if (accept.includes('application/json')) { logger.debug(`not redirecting ${ctx.url} (json)`) return next() } if (!accept.includes('text/html')) { logger.debug(`not redirecting ${ctx.url} (not accepting html)`) return next() } // use the executor to resolve virtual html files // TODO decide if we want to pass to plugins the path with appended index.html or the normal path and let the plugins decide if they watn to serve html, the second way is harder because html should be served as last thing (fallback) but user plugins run first let filePath = !cleanUrl(ctx.path).endsWith('.html') ? path.posix.join(ctx.path, 'index.html') : ctx.path const { contents: resolvedHtml, path: resolveHtmlPath, } = await pluginsExecutor.resolveLoadTransform({ path: importPathToFile(root, filePath), skipOnResolved: true, expectedExtensions: ['.html'], }) if (resolvedHtml) { send( ctx, resolvedHtml, '/' + slash(path.relative(root, resolveHtmlPath || '')), ) return next() } logger.debug(`fallback ${ctx.url} to html`) // html resolver already search in public const { contents: resolvedTopHtml, } = await pluginsExecutor.resolveLoadTransform({ path: path.resolve(root, 'index.html'), skipOnResolved: true, expectedExtensions: ['.html'], }) if (resolvedTopHtml) { send(ctx, resolvedTopHtml, '/index.html') return next() } return next() // return next() } } function send(ctx, resolvedHtml, as = '') { logger.debug(`Resolved html for ${ctx.path} as ${as}`) ctx.body = resolvedHtml ctx.status = 200 ctx.type = 'html' // return next() } ================================================ FILE: bundless/src/middleware/index.ts ================================================ export { sourcemapMiddleware } from './sourcemap' export { historyFallbackMiddleware } from './history-fallback' export { staticServeMiddleware } from './static-serve' export { openInEditorMiddleware } from './open-in-editor' export { pluginsMiddleware } from './plugins' ================================================ FILE: bundless/src/middleware/open-in-editor.ts ================================================ import { logger } from '..' import fs from 'fs' import launchEditor from 'launch-editor' import { importPathToFile } from '../utils' import { Middleware } from 'koa' const fileLocationRegex = /(:\d+:\d+)$/ export function openInEditorMiddleware({ root }): Middleware { return function(ctx, next) { if (ctx.path !== '/__open-in-editor') { return next() } const { file = '' } = ctx.query || {} if (!file) { ctx.res.statusCode = 500 ctx.body = `launch-editor-middleware: required query param "file" is missing.` return } let realPath = fs.existsSync(file.replace(fileLocationRegex, '')) ? file : importPathToFile(root, file) logger.log(`Opening editor at ${realPath}`) launchEditor(realPath) ctx.res.statusCode = 200 ctx.body = `Opened ${realPath}` } } ================================================ FILE: bundless/src/middleware/plugins.ts ================================================ import { FSWatcher } from 'chokidar' import { Middleware } from 'koa' import { WEB_MODULES_PATH } from '../constants' import { logger } from '../logger' import { PluginsExecutor } from '../plugins-executor' import { importPathToFile, dotdotEncoding, genSourceMapString } from '../utils' export function pluginsMiddleware({ root, watcher, pluginsExecutor, }: { root: string watcher: FSWatcher pluginsExecutor: PluginsExecutor }): Middleware { return async function pluginsMiddleware(ctx, next) { if ( ctx.query.namespace == null || ctx.req.headers['accept'] !== '*/*' ) { return next() } if (ctx.path.startsWith('.')) { throw new Error( `All import paths should have been rewritten to absolute paths (start with /)\n` + ` make sure import paths for '${ctx.path}' are statically analyzable`, ) } const isVirtual = ctx.query.namespace && ctx.query.namespace !== 'file' // do not resolve virtual files like node builtins to an absolute path const resolvedPath = isVirtual ? ctx.path.slice(1) // remove leading / : importPathToFile(root, ctx.path) // watch files outside root if ( ctx.path.startsWith('/' + dotdotEncoding) && !resolvedPath.includes('node_modules') ) { watcher.add(resolvedPath) } const namespace = ctx.query.namespace || 'file' const loaded = await pluginsExecutor.load({ path: resolvedPath, pluginData: undefined, namespace, }) if (loaded?.pluginData) { logger.warn( `esbuild pluginData is not supported by bundless, used by plugin ${loaded.pluginName}`, ) } if (loaded == null || loaded.contents == null) { return next() } const transformed = await pluginsExecutor.transform({ path: resolvedPath, loader: loaded.loader || 'default', namespace, contents: String(loaded.contents), }) if (transformed == null) { return next() } const sourcemap = transformed.map ? genSourceMapString(transformed.map) : '' ctx.body = transformed.contents + sourcemap ctx.status = 200 ctx.type = 'js' const isDep = ctx.path.includes(WEB_MODULES_PATH) const isCacheableModule = ctx.query.t != null ctx.set( 'Cache-Control', isDep || isCacheableModule ? 'max-age=31536000,immutable' : 'no-cache', ) return next() } } ================================================ FILE: bundless/src/middleware/sourcemap.ts ================================================ import chalk from 'chalk' import { Middleware } from 'koa' import path from 'path' import { RawSourceMap } from 'source-map' import { logger } from '../logger' import { importPathToFile, readFile } from '../utils' // changes sourcemaps to point to right files export const sourcemapMiddleware = ({ root }): Middleware => { return async function sourcemap(ctx, next) { if (!ctx.path.endsWith('.map')) { return next() } logger.debug(`Handling sourcemap request for '${ctx.path}'`) const filename = importPathToFile(root, ctx.path) const content = await readFile(filename) const map: RawSourceMap = JSON.parse(content) if (!map.sources) { logger.warn(`No sources found for sourcemap '${ctx.path}'`) return next() } if (map.sourcesContent && map.sources.every(path.isAbsolute)) { return next() } const sourcesContent = map.sourcesContent || [] const sourceRoot = path.resolve( path.dirname(filename), map.sourceRoot || '', ) map.sources = await Promise.all( map.sources.map(async (source, i) => { const originalPath = path.resolve(sourceRoot, source) if (!sourcesContent[i]) { try { sourcesContent[i] = await readFile(originalPath) } catch (err) { if (err.code === 'ENOENT') { console.error( chalk.red( `Sourcemap "${filename}" points to non-existent source: "${originalPath}"`, ), ) return source } throw err } } return originalPath }), ) map.sourcesContent = sourcesContent const contents = JSON.stringify(map) ctx.body = contents ctx.status = 200 ctx.type = 'application/json' } } ================================================ FILE: bundless/src/middleware/static-serve.ts ================================================ import { Middleware } from 'koa' import send, { SendOptions } from 'koa-send' import { WEB_MODULES_PATH } from '../constants' import { logger } from '../logger' // like koa static but executes other middlewares after serving, needed to transform html afterwards export function staticServeMiddleware(opts: SendOptions): Middleware { opts.index = opts.index || 'index.html' opts.hidden = opts.hidden || true const cacheOptions: send.SendOptions = { maxAge: 1000 * 60 * 60, immutable: true, } return async function serve(ctx, next) { if (ctx.method !== 'HEAD' && ctx.method !== 'GET') { return next() } if (ctx.body) { return next() } const isDep = ctx.path.includes(WEB_MODULES_PATH) try { logger.debug('Statically serving ' + ctx.path) await send(ctx, ctx.path, { ...opts, ...(isDep && cacheOptions) }) } catch (err) { if (err.status !== 404 && err.code !== 'ENOENT') { throw new Error(`Cannot static serve ${ctx.path}: ${err}`) } } await next() } } ================================================ FILE: bundless/src/plugins/assets.ts ================================================ import { NodeResolvePlugin } from '@esbuild-plugins/all' import * as esbuild from 'esbuild' import escapeStringRegexp from 'escape-string-regexp' import fs from 'fs-extra' import mime from 'mime-types' import path from 'path' import { defaultLoader } from '../constants' import { PluginHooks } from '../plugins-executor' import { fileToImportPath } from '../utils' import { transform } from './esbuild' export function AssetsPlugin({ loader: _loader, }: { loader?: Record }) { let loader = _loader || {} loader = { ...defaultLoader, ...loader, } const extensions = Object.keys(loader) const extensionsSet = new Set(extensions) return { name: 'assets', setup: (hooks: PluginHooks) => { const { onLoad, onResolve, ctx: { root, config } } = hooks const filter = new RegExp( '(' + extensions .filter((x) => x !== '.css') // css is handled in css plugin .map(escapeStringRegexp) .join('|') + ')$', ) // what if an image is in another module and this resolver bypasses the node resolve plugin that runs the prebundle? maybe i need to throw? no because assets do not need to be optimized, i just need to make sure that node resolve is called before all other resolvers NodeResolvePlugin({ name: 'assets-node-resolve', isExtensionRequiredInImportPath: true, extensions, }).setup({ ...hooks, onLoad() {}, }) onLoad({ filter }, async (args) => { const extension = path.extname(args.path) if (!extensionsSet.has(extension)) { return } const publicPath = fileToImportPath(root, args.path) const loadedType = loader[extension] if (loadedType === 'file') { return { contents: `export default ${JSON.stringify( publicPath, )}`, } } let data = await await fs.readFile(args.path) if (loadedType === 'js') { return { contents: data.toString(), loader: 'js' } } if ( loadedType === 'jsx' || loadedType === 'ts' || loadedType === 'tsx' ) { const res = await transform({ filePath: args.path, src: data.toString(), loader: loadedType, config, }) return { contents: res.contents || '', loader: 'js', } } if (loadedType === 'base64') { return { contents: `export default "${data.toString('base64')}`, loader: 'js', } } if (loadedType === 'dataurl') { const mimeType = mime.lookup(args.path) return { contents: `export default "data:${mimeType};base64,${data.toString( 'base64', )}"`, loader: 'js', } } if (loadedType === 'text') { return { contents: `export default ${JSON.stringify( data.toString(), )}`, loader: 'js', } } if (loadedType === 'json') { const transformed = await esbuild.transform( data.toString(), { format: 'esm', loader: 'json', sourcefile: args.path, }, ) return { contents: transformed.code, loader: 'js', } } if (loadedType === 'binary') { return { contents: data.toString(), // how can i serve binary data to browser? loader: 'js', } } return null }) }, } } ================================================ FILE: bundless/src/plugins/buffer.ts ================================================ import * as esbuild from 'esbuild' import { Plugin } from '../plugins-executor' import { importPathToFile, readFile } from '../utils' const BUFFER_PATH = '_bundless-node-buffer-polyfill_.js' export function NodeBufferGlobal(): Plugin { return { name: 'buffer-global', setup({ onResolve, onLoad, onTransform }) { onTransform({ filter: /\.html$/ }, (args) => { const contents = args.contents.replace( //, `$&\n` + `\n`, ) return { contents, } }) onResolve({ filter: new RegExp(BUFFER_PATH) }, (arg) => { return { path: BUFFER_PATH, } }) onLoad({ filter: new RegExp(BUFFER_PATH) }, async (arg) => { const polyfill = await readFile( require.resolve( `@esbuild-plugins/node-globals-polyfill/Buffer.js`, ), ) return { contents: polyfill + `\nwindow.Buffer = Buffer;`, loader: 'js', } }) }, } } ================================================ FILE: bundless/src/plugins/css.ts ================================================ import { NodeResolvePlugin, resolveAsync } from '@esbuild-plugins/all' import { transform } from 'esbuild' import escapeStringRegexp from 'escape-string-regexp' import hash_sum from 'hash-sum' import path from 'path' import fs from 'fs-extra' import { CLIENT_PUBLIC_PATH, hmrPreamble } from '../constants' import { PluginHooks } from '../plugins-executor' import { osAgnosticPath } from '../utils' const CSS_UTILS_PATH = '_bundless_css_utils.js' /* importing a css module file does 2 things - import a js file that calls ensureCssLink and exports the class names as js object - add the link in the html entry at build time This way even if you load the app from a different entrypoint and you change location via history API, you get ensureCssLink that adds the link to the html Global css files instead must be all loaded at once because its classnames are not unique */ export function CssPlugin({} = {}) { return { name: 'css', setup: ({ ctx: { root, config, isBuild, graph }, onLoad, onResolve, onTransform, }: PluginHooks) => { // TODO use custom resolver that adds the .js extension to css paths? async function cssResolver(args) { try { const res = await resolveAsync(args.path, { basedir: args.resolveDir, }) const virtualPath = res + '.cssjs' if (res) { return { path: virtualPath, } } } catch {} } onResolve({ filter: /\.css$/ }, cssResolver) const cssExtensions = Object.keys(config.loader || {}) .filter((k) => config.loader?.[k] === 'css') .map(escapeStringRegexp) if (cssExtensions.length) { onResolve( { filter: new RegExp( '(' + cssExtensions.join('|') + ')$', ), }, cssResolver, ) } onLoad({ filter: /\.cssjs$/ }, async (args) => { try { const css = await ( await fs.readFile(args.path.replace(/\.cssjs$/, '')) ).toString() // const id = hash_sum(args.path) let contents = await codegenCssForDev(css, args.path) if (!isBuild) { contents = hmrPreamble + '\n' + contents } return { contents, loader: 'js' } } catch {} }) // needed for other plugins that return css and are not resolved by this plugin onTransform({ filter: /\.css$/ }, async (args) => { let contents = await codegenCssForDev(args.contents, args.path) if (!isBuild) { contents = hmrPreamble + '\n' + contents } return { contents, loader: 'js' } }) onResolve( { filter: new RegExp(escapeStringRegexp(CSS_UTILS_PATH)) }, (args) => { return { path: path.resolve(root, cssUtilsTemplate), } }, ) onLoad( { filter: new RegExp(escapeStringRegexp(CSS_UTILS_PATH)) }, (args) => { return { contents: cssUtilsTemplate, loader: 'js', } }, ) }, } } const cssUtilsTemplate = ` function ensureCss(href) { const existingLinkTags = document.getElementsByTagName('link') for (let i = 0; i < existingLinkTags.length; i++) { if (tag.rel === 'stylesheet' && tag.getAttribute('href') === href) { return } } const linkTag = document.createElement('link') linkTag.rel = 'stylesheet' linkTag.type = 'text/css' linkTag.href = href const head = document.getElementsByTagName('head')[0] head.appendChild(linkTag) } ` export async function codegenCssForDev( css: string, sourcefile: string, modules?: Record, ) { let code = ` const css = ${JSON.stringify(css)}; if (typeof document !== 'undefined') { import.meta.hot.accept(); import.meta.hot.dispose(() => { document.head.removeChild(styleEl); }); const styleEl = document.createElement("style"); const codeEl = document.createTextNode(css); styleEl.type = 'text/css'; styleEl.appendChild(codeEl); document.head.appendChild(styleEl); } ` if (modules) { const transformed = await transform(JSON.stringify(modules), { format: 'esm', loader: 'json', sourcefile, }) code += transformed.code } else { code += `export default css` } return code } export function codegenCssForProduction( cssPath: string, modules?: Record, ): string { let code = hmrPreamble + ` import { ensureCSS } from '${CSS_UTILS_PATH}' if (typeof window !== 'undefined') { ensureCSS(${JSON.stringify(cssPath)}) } ` return code } ================================================ FILE: bundless/src/plugins/env.ts ================================================ import dotenv from 'dotenv' import dotenvExpand from 'dotenv-expand' import findUp from 'find-up' import fs from 'fs-extra' import path from 'path' import { logger } from '../logger' import { PluginHooks } from '../plugins-executor' export function EnvPlugin({ envFiles = [] as string[], env = {} as Record, findUp: isFindUp = false, } = {}) { return { name: 'env', setup: ({ initialOptions, ctx: { root } }: PluginHooks) => { let define = {} for (let _envFile of envFiles) { let envFile if (fs.existsSync(path.resolve(root, _envFile))) { envFile = path.resolve(root, _envFile) } else if (isFindUp) { envFile = findUp.sync(_envFile, { cwd: root }) || '' } if (!envFile) { logger.warn(`Cannot find env file '${_envFile}'`) continue } const data = fs.readFileSync(envFile).toString() const parsed = dotenv.parse(data, { debug: !!process.env.DEBUG || undefined, }) // let environment variables use each other dotenvExpand({ parsed, // prevent process.env mutation ignoreProcessEnv: true, } as any) for (const k in parsed) { define[`process.env.${k}`] = JSON.stringify(parsed[k]) } } for (const k in env) { define[`process.env.${k}`] = JSON.stringify(env[k]) } Object.assign(initialOptions.define, define) }, } } ================================================ FILE: bundless/src/plugins/esbuild.ts ================================================ import chalk from 'chalk' import * as esbuild from 'esbuild' import { Loader, Message, TransformOptions } from 'esbuild' import path from 'path' import { Config } from '../config' import { OnTransformResult, PluginHooks } from '../plugins-executor' import { generateDefineObject } from '../prebundle/esbuild' import { generateCodeFrame } from '../utils' export function EsbuildTransformPlugin({} = {}) { return { name: 'esbuild-transform', setup: ({ onTransform, onClose, ctx: { config } }: PluginHooks) => { onTransform({ filter: /\.(tsx?|jsx)$/ }, async (args) => { // do not transpile again if already transpiled if (args.loader === 'js') { return } return transform({ src: args.contents, filePath: args.path, config, }) }) }, } } const JsxPresets: Record< string, Pick > = { vue: { jsxFactory: 'jsx', jsxFragment: 'Fragment' }, preact: { jsxFactory: 'h', jsxFragment: 'Fragment' }, react: {}, // react: { jsxFactory: 'React.createElement', }, // use esbuild default } export function resolveJsxOptions(options: Config['jsx'] = 'react') { if (typeof options === 'string') { if (!(options in JsxPresets)) { console.error(`unknown jsx preset: '${options}'.`) } return JsxPresets[options] || {} } else if (options) { return { jsxFactory: options.factory, jsxFragment: options.fragment, } } } // transform used in server plugins with a more friendly API export const transform = async ({ src, filePath, loader, config, }: { src: string filePath: string config?: Config loader?: esbuild.Loader exitOnFailure?: boolean }): Promise => { const options: TransformOptions = { loader: loader || (path.extname(filePath).slice(1) as Loader), logLevel: 'error', sourcemap: true, // format: 'esm', // passing format reorders exports https://github.com/evanw/esbuild/issues/710 // ensure source file name contains full query sourcefile: filePath, // TODO use define object here? this way it works the same as in build, but this way it won't work when using another transformer target: 'es2020', ...resolveJsxOptions(config?.jsx), } try { const result = await esbuild.transform(src, options) let contents = result.code // if transpiling (j|t)sx file, inject the imports for the jsx helper and // Fragment. if (filePath.endsWith('x')) { // if (!jsxOption || jsxOption === 'vue') { // code += // `\nimport { jsx } from '${vueJsxPublicPath}'` + // `\nimport { Fragment } from 'vue'` // } if (config?.jsx === 'preact') { contents += `\nimport { h, Fragment } from 'preact'` } } return { contents, map: JSON.parse(result.map), } } catch (e) { if (e.errors) { e.errors.forEach((m: Message) => printMessage(m, src)) } else { console.error(e) } throw new Error( `Error while transforming ${filePath} with esbuild: ${e}`, ) } } function printMessage(m: Message, code: string) { console.error(chalk.yellow(m.text)) if (m.location) { const lines = code.split(/\r?\n/g) const line = Number(m.location.line) const column = Number(m.location.column) const offset = lines .slice(0, line - 1) .map((l) => l.length) .reduce((total, l) => total + l + 1, 0) + column console.error(generateCodeFrame(code, offset, offset + 1)) } } ================================================ FILE: bundless/src/plugins/hmr-client.ts ================================================ import fs from 'fs-extra' import { CLIENT_PUBLIC_PATH, hmrClientNamespace } from '../constants' import { PluginHooks } from '../plugins-executor' import { generateDefineObject } from '../prebundle/esbuild' export const clientFilePath = require.resolve('../../esm/client/template.js') export const sourceMapSupportPath = '__source-map-support.js?namespace=source-map-support' export function HmrClientPlugin({ getPort }) { return { name: 'hmr-client', setup: ({ onLoad, onTransform, ctx: { config, root }, }: PluginHooks) => { onTransform({ filter: /\.html$/ }, (args) => { const contents = args.contents.replace( //, `$&\n` + `\n`, ) return { contents, } }) onLoad( { filter: /.*/, namespace: 'source-map-support' }, async () => { return { contents: await fs.readFile( require.resolve( 'source-map-support/browser-source-map-support.js', ), ), } }, ) onLoad( { filter: /.*/, namespace: hmrClientNamespace }, async (args) => { const defines = generateDefineObject({ config }) const clientCode = fs .readFileSync(clientFilePath, 'utf-8') .replace( `__DEFINES__`, '{\n' + Object.keys(defines) .sort((a, b) => a.length - b.length) .map( (k) => ` ${JSON.stringify(k)}: ${ defines[k] },`, ) .join('\n') + '\n}', ) .replace(`//# sourceMappingURL=`, '//') let socketPort: number | string = getPort() // infer on client by default let socketProtocol: any = null let socketHostname: any = null let socketTimeout = 30000 const hmrConfig = config.server?.hmr || true if (hmrConfig && typeof hmrConfig === 'object') { // hmr option has highest priory socketProtocol = hmrConfig.protocol || null socketHostname = hmrConfig.hostname || null socketPort = hmrConfig.port || getPort() if (hmrConfig.timeout) { socketTimeout = hmrConfig.timeout } if (hmrConfig.path) { socketPort = `${socketPort}/${hmrConfig.path}` } } return { contents: clientCode .replace( `__HMR_PROTOCOL__`, JSON.stringify(socketProtocol), ) .replace( `__HMR_HOSTNAME__`, JSON.stringify(socketHostname), ) .replace(`__HMR_PORT__`, JSON.stringify(socketPort)) .replace( `__HMR_ENABLE_OVERLAY__`, JSON.stringify(true), ) .replace( `__HMR_TIMEOUT__`, JSON.stringify(socketTimeout), ), } }, ) }, } } ================================================ FILE: bundless/src/plugins/html-ingest.ts ================================================ import fs from 'fs' import posthtml, { Node, Plugin as PosthtmlPlugin } from 'posthtml' import path from 'path' import { Plugin } from '../plugins-executor' import { cleanUrl } from '../utils' import slash from 'slash' const NAME = 'html-ingest' interface Options { name?: string root: string // to resolve paths in case the html page is not in root transformImportPath?: (importPath: string) => string // emitHtml?: (arg: { path: string; html: string }) => Promise } /** * Let you use html files as entrypoints for esbuild */ export function HtmlIngestPlugin({ name = NAME, root, transformImportPath, }: Options): Plugin { return { name, setup: function setup({ onLoad, onTransform, onResolve }) { onTransform({ filter: /\.html$/ }, async (args) => { try { const html = args.contents const jsUrls = await getHtmlScriptsUrls(html) // const folder = path.relative(root, path.dirname(args.path)) const pathToRoot = slash( path.relative(path.dirname(args.path), root), ) const contents = jsUrls .map((importPath) => { // src='/file.js' -> ../../file.js if (importPath.startsWith('/')) { importPath = path.posix.join( pathToRoot, '.' + importPath, ) } // src='file.js' -> ./file.js if (bareImportRE.test(importPath)) { importPath = './' + importPath } return importPath }) .map((x) => transformImportPath ? transformImportPath(x) : x, ) .map((importPath) => `export * from '${importPath}'`) .join('\n') return { loader: 'js', contents, } } catch (e) { throw new Error(`Cannot transform html ${args.path}, ${e}`) } }) }, } } export async function getHtmlScriptsUrls(html: string) { const urls: string[] = [] const transformer = posthtml([ (tree) => { tree.walk((node) => { if ( node && node.tag === 'script' && node.attrs && node.attrs['type'] === 'module' && node.attrs['src'] && isRelative(node.attrs['src']) ) { urls.push(node.attrs['src']) } return node }) }, ]) try { await transformer.process(html) } catch (e) { throw new Error(`Cannot process html with posthtml: ${e}\n${html}`) } return urls.filter(Boolean) } const bareImportRE = /^[^\/\.]/ function isRelative(x: string) { x = cleanUrl(x) return bareImportRE.test(x) || x.startsWith('.') || x.startsWith('/') } ================================================ FILE: bundless/src/plugins/html-resolver.ts ================================================ import fs from 'fs-extra' import path from 'path' import { PluginHooks } from '../plugins-executor' export function HtmlResolverPlugin({} = {}) { return { name: 'html-resolver', setup: ({ ctx: { root }, onLoad, onResolve }: PluginHooks) => { onResolve({ filter: /\.html/ }, async (args) => { args.path = path.resolve(root, args.path) var resolved = path.resolve(args.resolveDir || root, args.path) if (resolved && fs.existsSync(resolved)) { return { path: resolved, } } const relativePath = path.relative(root, args.path) var resolved = path.resolve( path.resolve(root, path.join('public', relativePath)), ) if (resolved && fs.existsSync(resolved)) { return { path: resolved, } } return null }) onLoad({ filter: /\.html$/ }, async (args) => { try { const realFilePath = args.path // .replace('.html.js', '.html') const html = await ( await fs.readFile(realFilePath, { encoding: 'utf-8', }) ).toString() return { contents: html, loader: 'html' as any, } } catch (e) { return null throw new Error(`Cannot load ${args.path}, ${e}`) } }) }, } } ================================================ FILE: bundless/src/plugins/html-transform.ts ================================================ import posthtml, { Plugin } from 'posthtml' import { PluginHooks } from '../plugins-executor' import { cleanUrl } from '../utils' export function HtmlTransformUrlsPlugin({ transforms, }: { transforms: Plugin[] }) { return { name: 'html-transform-urls', setup: ({ onTransform }: PluginHooks) => { onTransform({ filter: /\.html$/ }, async (args) => { const transformer = posthtml([...transforms]) const result = await transformer.process(args.contents) const contents = result.html return { contents } }) }, } } // TODO transformer to rewrite inline script imports ================================================ FILE: bundless/src/plugins/index.ts ================================================ export { EsbuildTransformPlugin } from './esbuild' export { RewritePlugin } from './rewrite' export { CssPlugin } from './css' export { ResolveSourcemapPlugin } from './resolve-sourcemaps' export { HmrClientPlugin } from './hmr-client' export { JSONPlugin } from './json' export { AssetsPlugin } from './assets' export { UrlResolverPlugin } from './url-resolver' export { HtmlTransformUrlsPlugin } from './html-transform' export { HtmlResolverPlugin } from './html-resolver' export { HtmlIngestPlugin } from './html-ingest' export { SourceMapSupportPlugin } from './source-map-support' export { EnvPlugin } from './env' export { NodeBufferGlobal } from './buffer' export { NodeModulesPolyfillPlugin, NodeResolvePlugin, NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/all' ================================================ FILE: bundless/src/plugins/json.ts ================================================ import { NodeResolvePlugin } from '@esbuild-plugins/all' import { transform } from 'esbuild' import { PluginHooks } from '../plugins-executor' import { readFile } from '../utils' export function JSONPlugin({} = {}) { return { name: 'json', setup: (hooks: PluginHooks) => { const { onLoad, onResolve } = hooks NodeResolvePlugin({ name: 'json-node-resolve', isExtensionRequiredInImportPath: true, extensions: ['.json'], }).setup({ ...hooks, onLoad() {}, }) onLoad({ filter: /\.json$/ }, async (args) => { const json = await readFile(args.path) const transformed = await transform(json, { format: 'esm', loader: 'json', sourcefile: args.path, }) const contents = transformed.code return { contents } }) }, } } ================================================ FILE: bundless/src/plugins/resolve-sourcemaps.ts ================================================ import chalk from 'chalk' import fs from 'fs' import path from 'path' import { RawSourceMap } from 'source-map' import { PluginHooks } from '../plugins-executor' import { fileToImportPath, jsTypeRegex, readFile } from '../utils' const sourcemapRegex = /\/\/#\ssourceMappingURL=([\w\d-_\.]+)\n*$/ export function ResolveSourcemapPlugin({} = {}) { return { name: 'resolve-sourcemaps', setup: ({ onTransform, pluginsExecutor, ctx: { root }, }: PluginHooks) => { onTransform({ filter: jsTypeRegex }, async (args) => { let contents = args.contents const match = contents.match(sourcemapRegex) if (!match) { return } let filePath = match[1] if (!filePath || filePath.startsWith('data:')) { // TODO skip other data: non base64 formats in sourcemaps return } if (!filePath.startsWith('.') && !filePath.startsWith('/')) { filePath = './' + filePath } const resolved = await pluginsExecutor.resolve({ importer: args.path, path: filePath.trim(), namespace: '', resolveDir: path.dirname(args.path), }) if (!resolved?.path) { return } contents = contents.replace( sourcemapRegex, `//# sourceMappingURL=${fileToImportPath( root, resolved?.path, )}`, ) return { contents, } }) }, } } ================================================ FILE: bundless/src/plugins/rewrite/__snapshots__/commonjs.test.ts.snap ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`rewrite commonjs imports 0 "import React from 'react'" 1`] = `"import react_cjsImport0 from \\"react\\"; const React = react_cjsImport0 && react_cjsImport0.__esModule ? react_cjsImport0.default : react_cjsImport0;"`; exports[`rewrite commonjs imports 1 "import * as React from 'react'" 1`] = `"import react_cjsImport0 from \\"react\\"; const React = {default: react_cjsImport0, ...(typeof react_cjsImport0 === 'object' && react_cjsImport0)};"`; exports[`rewrite commonjs imports 2 "import React, { useState } from 'react'" 1`] = `"import react_cjsImport0 from \\"react\\"; const React = react_cjsImport0 && react_cjsImport0.__esModule ? react_cjsImport0.default : react_cjsImport0; const useState = react_cjsImport0[\\"useState\\"];"`; exports[`rewrite commonjs imports 3 "import { useState } from 'react'" 1`] = `"import react_cjsImport0 from \\"react\\"; const useState = react_cjsImport0[\\"useState\\"];"`; exports[`rewrite commonjs imports 4 "import { useState, useEffect } from 'react'" 1`] = `"import react_cjsImport0 from \\"react\\"; const useState = react_cjsImport0[\\"useState\\"]; const useEffect = react_cjsImport0[\\"useEffect\\"];"`; exports[`rewrite commonjs imports 5 "import { useState as something } from 'react'" 1`] = `"import react_cjsImport0 from \\"react\\"; const something = react_cjsImport0[\\"useState\\"];"`; exports[`rewrite commonjs imports 6 "import { useState as something, useEffect } from 'react'" 1`] = `"import react_cjsImport0 from \\"react\\"; const something = react_cjsImport0[\\"useState\\"]; const useEffect = react_cjsImport0[\\"useEffect\\"];"`; exports[`rewrite commonjs imports 7 "import { useState as something, useEffect as alias } from 'react'" 1`] = `"import react_cjsImport0 from \\"react\\"; const something = react_cjsImport0[\\"useState\\"]; const alias = react_cjsImport0[\\"useEffect\\"];"`; exports[`rewrite commonjs imports 8 "import { default as Default } from 'react'" 1`] = `"import react_cjsImport0 from \\"react\\"; const Default = react_cjsImport0 && react_cjsImport0.__esModule ? react_cjsImport0.default : react_cjsImport0;"`; exports[`rewrite commonjs imports 9 "import { default as Default, useEffect } from 'react'" 1`] = `"import react_cjsImport0 from \\"react\\"; const Default = react_cjsImport0 && react_cjsImport0.__esModule ? react_cjsImport0.default : react_cjsImport0; const useEffect = react_cjsImport0[\\"useEffect\\"];"`; ================================================ FILE: bundless/src/plugins/rewrite/commonjs.test.ts ================================================ import { parse } from '../../utils' import { transformCjsImport } from './commonjs' describe('rewrite commonjs imports', () => { const cases = [ `import React from 'react'`, `import * as React from 'react'`, `import React, { useState } from 'react'`, `import { useState } from 'react'`, `import { useState, useEffect } from 'react'`, `import { useState as something } from 'react'`, `import { useState as something, useEffect } from 'react'`, `import { useState as something, useEffect as alias } from 'react'`, `import { default as Default } from 'react'`, `import { default as Default, useEffect } from 'react'`, ] for (let [i, testCase] of cases.entries()) { test(`${i} "${testCase}"`, () => { const res = transformCjsImport(testCase, 'react', 'react', 0) expect(res).not.toContain('\n') parse(res) // check that it's valid code expect(res).toMatchSnapshot() }) } }) ================================================ FILE: bundless/src/plugins/rewrite/commonjs.ts ================================================ import { ImportDeclaration } from '@babel/types' import fs from 'fs-extra' import { isPlainObject } from 'lodash' import memoize from 'micro-memoize' import path from 'path' import { COMMONJS_ANALYSIS_PATH, WEB_MODULES_PATH } from '../../constants' import { logger } from '../../logger' import { onResolveLock } from '../../serve' import { makeLegalIdentifier, osAgnosticPath, parse } from '../../utils' export interface OptimizeAnalysisResult { isCommonjs: { [name: string]: true } } /** * read analysis result from optimize step * If we can't find analysis result, return null * (maybe because user set optimizeDeps.auto to false) */ export const getAnalysis = memoize(function getAnalysis( root: string, ): OptimizeAnalysisResult | null { let analysis: OptimizeAnalysisResult | null try { analysis = fs.readJsonSync(path.resolve(root, COMMONJS_ANALYSIS_PATH)) } catch (error) { logger.debug( `Cannot find commonjs analysis at ${path.resolve( root, COMMONJS_ANALYSIS_PATH, )}`, ) analysis = null } if (analysis && !isPlainObject(analysis.isCommonjs)) { throw new Error(`invalid ${COMMONJS_ANALYSIS_PATH}`) } logger.debug( `Got new commonjs analysis: ${JSON.stringify( analysis?.isCommonjs, null, 4, )}`, ) return analysis }) export function clearCommonjsAnalysisCache() { logger.debug(`Invalidating commonjs cache`) getAnalysis.cache.keys.length = 0 getAnalysis.cache.values.length = 0 } export function isOptimizedCjs(root: string, filename: string) { if (!onResolveLock.isReady) { throw new Error( `Cannot call isOptimizedCjs when onResolveLock is locked!`, ) } const analysis = getAnalysis(root) if (!analysis) { return false } const isCommonjs = !!analysis.isCommonjs[osAgnosticPath(filename, root)] return isCommonjs } type ImportNameSpecifier = { importedName: string; localName: string } // todo if module has __esModule and there is only a default import, transform to .default, -> const imported = realImport.__esModule ? realImport.default : realImport export function transformCjsImport( exp: string, id: string, resolvedPath: string, importIndex: number, ): string { const ast = parse(exp)[0] as ImportDeclaration const importNames = getImportNames(ast) return generateCjsImport(importNames, id, resolvedPath, importIndex) } function getImportNames(ast: ImportDeclaration) { const importNames: ImportNameSpecifier[] = [] ast.specifiers.forEach((obj) => { if ( obj.type === 'ImportSpecifier' && obj.imported.type === 'Identifier' ) { const importedName = obj.imported.name const localName = obj.local.name importNames.push({ importedName, localName }) } else if (obj.type === 'ImportDefaultSpecifier') { importNames.push({ importedName: 'default', localName: obj.local.name, }) } else if (obj.type === 'ImportNamespaceSpecifier') { importNames.push({ importedName: '*', localName: obj.local.name }) } }) return importNames } function generateCjsImport( importNames: ImportNameSpecifier[], id: string, resolvedPath: string, importIndex: number, ): string { // If there is multiple import for same id in one file, // importIndex will prevent the cjsModuleName to be duplicate const cjsModuleName = makeLegalIdentifier(`${id}_cjsImport${importIndex}`) const lines: string[] = [`import ${cjsModuleName} from "${resolvedPath}";`] importNames.forEach(({ importedName, localName }) => { // __esModule means the module has been compiled from ESM: ESM -> commonjs -> ESM // we consider commonjs all modules with only a default export, but if the module has been compiled from ESM, it will contain double default export: default.default if (importedName === 'default') { lines.push( `const ${localName} = ${cjsModuleName} && ${cjsModuleName}.__esModule ? ${cjsModuleName}.default : ${cjsModuleName};`, ) } else if (importedName === '*') { lines.push( `const ${localName} = {default: ${cjsModuleName}, ...(typeof ${cjsModuleName} === 'object' && ${cjsModuleName})};`, ) } else { lines.push( `const ${localName} = ${cjsModuleName}["${importedName}"];`, ) } }) return lines.join(' ') } // adds the default export to the namespace in case this is an iterable object, this is to support the case `import * as namespace from 'mod'; namespace.default()` // TODO namespace imports can be polluted in case default import is an object and user is doing import * on a ES module with only a default export, this can be solved adding isCommonjs to esbuild metafile export function generateNamespaceExport(mId: string) { return `({...${mId}, ...(${mId}.default instanceof Object && ${mId}.default.constructor === Object && m.default)})` } ================================================ FILE: bundless/src/plugins/rewrite/index.ts ================================================ export * from './rewrite' ================================================ FILE: bundless/src/plugins/rewrite/rewrite.ts ================================================ import chalk from 'chalk' import { ImportSpecifier, parse as parseImports } from 'es-module-lexer' import MagicString from 'magic-string' import path from 'path' import { CLIENT_PUBLIC_PATH, hmrPreamble } from '../../constants' import { HmrGraph } from '../../hmr-graph' import { logger } from '../../logger' import { PluginHooks, PluginsExecutor } from '../../plugins-executor' import { onResolveLock } from '../../serve' import { appendQuery, cleanUrl, fileToImportPath, isExternalUrl, jsTypeRegex, osAgnosticPath, } from '../../utils' import { generateNamespaceExport, isOptimizedCjs, transformCjsImport, } from './commonjs' export function RewritePlugin({ filter = jsTypeRegex } = {}) { return { name: 'rewrite', setup: ({ onTransform, pluginsExecutor, ctx: { graph, config, root, isBuild }, }: PluginHooks) => { if (config.platform !== 'browser') { return } if (isBuild || !graph) { return } onTransform({ filter }, async (args) => { const { contents, map } = await rewriteImports({ graph, namespace: args.namespace || 'file', importer: args.path, root, pluginsExecutor, source: args.contents, }) return { contents, // TODO module rewrite needs not need sourcemaps? How? map, } }) }, } } export async function rewriteImports({ source, importer, graph, pluginsExecutor, namespace, root, }: { source: string namespace: string importer: string pluginsExecutor: PluginsExecutor root: string graph: HmrGraph }): Promise<{ contents: string; map?: any }> { // strip UTF-8 BOM if (source.charCodeAt(0) === 0xfeff) { source = source.slice(1) } const relativeImporter = osAgnosticPath(importer, root) // TODO how are computed files path removed? graph.ensureEntry(importer) try { await onResolveLock.wait() let imports: ImportSpecifier[] = [] try { imports = parseImports(source)[0] } catch (e) { throw new Error( `Failed to parse ${chalk.cyan( importer, )} for import rewrite.\nIf you are using ` + `JSX, make sure to named the file with the .jsx extension.`, ) } const isHmrEnabled = source.includes('import.meta.hot') const hasEnv = source.includes('import.meta.env') if (!imports.length && !isHmrEnabled && !hasEnv) { return { contents: source } } const magicString = new MagicString(source) if (isHmrEnabled) { magicString.prepend(hmrPreamble) } const currentNode = graph.ensureEntry(importer, { isHmrEnabled, importees: new Set(), }) for (let i = 0; i < imports.length; i++) { const { s: start, e: end, d: dynamicIndex, ss: expStart, se: expEnd, } = imports[i] let id = source.substring(start, end) const hasIgnore = /\/\*\s*@bundless-ignore\s*\*\//.test(id) let hasLiteralDynamicId = false const isDynamicImport = dynamicIndex >= 0 if (isDynamicImport) { id = id.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, '') const literalIdMatch = id.match( /^\s*(?:'([^']+)'|"([^"]+)")\s*$/, ) if (literalIdMatch) { hasLiteralDynamicId = true id = literalIdMatch[1] || literalIdMatch[2] } } if (dynamicIndex === -1 || hasLiteralDynamicId) { // do not rewrite external imports if (isExternalUrl(id)) { continue } const resolveResult = await pluginsExecutor.resolve({ importer, namespace, resolveDir: path.dirname(importer), path: id, }) if (!resolveResult || !resolveResult.path) { // do not fail on unresolved dynamic imports if (isDynamicImport) { logger.log( `Cannot resolve '${id}' from '${relativeImporter}'`, ) continue } throw new Error( `Cannot resolve '${id}' from '${relativeImporter}'`, ) } if (resolveResult?.pluginData) { logger.warn( `esbuild pluginData is not supported by bundless, used by plugin ${resolveResult.pluginName}`, ) } let resolvedImportPath = '' const isVirtual = resolveResult.namespace && resolveResult.namespace !== 'file' // handle bare imports like node builtins, virtual files, ... if (isVirtual || !path.isAbsolute(resolveResult.path || '')) { resolvedImportPath = '/' + resolveResult.path } else { resolvedImportPath = fileToImportPath( root, resolveResult?.path || '', ) } const newNamespace = encodeURIComponent( resolveResult.namespace || namespace, ) resolvedImportPath = appendQuery( resolvedImportPath, `namespace=${newNamespace}`, ) // TODO maybe also register virtual files, ok onFileChange will never get triggered but maybe there is virtual css file or stuff like that that needs to be updated? if (!isVirtual) { const importeeNode = graph.ensureEntry(resolveResult.path) // do not use stale modules resolvedImportPath = appendQuery( resolvedImportPath, `t=${ importeeNode.hash + importeeNode.lastUsedTimestamp }`, ) } if (resolvedImportPath !== id) { if (isOptimizedCjs(root, resolveResult.path || '')) { if (dynamicIndex === -1) { const exp = source.substring(expStart, expEnd) const replacement = transformCjsImport( exp, id, resolvedImportPath, i, ) magicString.overwrite(expStart, expEnd, replacement) } else if (hasLiteralDynamicId) { // rewrite `import('package')` to // import('/package').then(m=>({...((m.default instanceof Object && m.default.constructor === Object) && m.default), ...m}))); magicString.overwrite( dynamicIndex, end + 1, `import('${resolvedImportPath}').then(m=>${generateNamespaceExport( 'm', )})`, ) } } else { magicString.overwrite( start, end, hasLiteralDynamicId ? `'${resolvedImportPath}'` : resolvedImportPath, ) } } // save the import chain for hmr analysis const cleanImportee = cleanUrl(resolvedImportPath) if ( // no need to track hmr client or module dependencies cleanImportee !== CLIENT_PUBLIC_PATH ) { currentNode.importees.add(cleanImportee) } } else if (id !== 'import.meta' && !hasIgnore) { logger.log( chalk.yellow( `Cannot rewrite dynamic import(${id}) in ${relativeImporter}.`, ), ) } } return { contents: magicString.toString(), map: undefined, // do i really need sourcemaps? code is readable enough } } catch (e) { e.message = `Invalid module ${relativeImporter}\n` + e throw e } } ================================================ FILE: bundless/src/plugins/source-map-support.ts ================================================ import fs from 'fs-extra' import { CLIENT_PUBLIC_PATH } from '../constants' import { PluginHooks } from '../plugins-executor' export const sourceMapSupportPath = '__source-map-support.js?namespace=source-map-support' export function SourceMapSupportPlugin({} = {}) { return { name: 'hmr-client', setup: ({ onLoad, onTransform, ctx: { config, root }, }: PluginHooks) => { // TODO reenable source map support return onTransform({ filter: /\.html$/ }, (args) => { const contents = args.contents.replace( //, `$&\n` + `\n` + `\n`, ) return { contents, } }) onLoad( { filter: /.*/, namespace: 'source-map-support' }, async () => { return { contents: await fs.readFile( require.resolve( 'source-map-support/browser-source-map-support.js', ), ), } }, ) }, } } ================================================ FILE: bundless/src/plugins/url-resolver.ts ================================================ import { NodeResolvePlugin } from '@esbuild-plugins/all' import { PluginHooks } from '../plugins-executor' import { importPathToFile, readFile } from '../utils' import url from 'url' import { logger } from '../logger' import qs from 'qs' export function UrlResolverPlugin({} = {}) { return { name: 'url-resolver', setup: ({ ctx: { root }, onResolve }: PluginHooks) => { onResolve({ filter: /\?/ }, async (arg) => { if (!arg.path.includes('?')) { return } const parsed = url.parse(arg.path) if (!parsed.pathname) { throw new Error('no pathname in ' + arg.path) } const query = qs.parse(parsed.query || '') if ( query.namespace && typeof query.namespace === 'string' && query.namespace !== 'file' ) { // logger.log(`Removed query from path ${arg.path}`) return { path: parsed.pathname.slice(1), // TODO write a spec for virtual files in url behaviour namespace: query.namespace, } } return { path: importPathToFile(root, parsed.pathname), } }) }, } } ================================================ FILE: bundless/src/plugins-executor.ts ================================================ import { O_TRUNC } from 'constants' import * as esbuild from 'esbuild' import { cloneDeep } from 'lodash' import { promises } from 'fs-extra' import { Config } from './config' import url from 'url' import fs from 'fs-extra' import { HmrGraph } from './hmr-graph' import { logger } from './logger' import { flatten, osAgnosticPath } from './utils' import qs from 'qs' import { mergeSourceMap } from './utils/sourcemaps' import path from 'path' import { ansiChart } from './utils/profiling' import { FSWatcher } from 'chokidar' import { resolveAsync } from '@esbuild-plugins/all' import { MAIN_FIELDS } from './constants' export interface Plugin { name: string modulesToPrebundle?: string[] enforce?: 'pre' | 'post' setup: (build: PluginHooks) => void } type OnResolveCallback = ( args: esbuild.OnResolveArgs, ) => Maybe>> type OnLoadCallback = ( args: esbuild.OnLoadArgs, ) => Maybe>> type OnTransformCallback = ( args: OnTransformArgs, ) => Maybe>> type OnCloseCallback = () => void | Promise export interface PluginsExecutorCtx { config: Config root: string graph?: HmrGraph isBuild: boolean watcher?: FSWatcher } export interface PluginHooks extends esbuild.PluginBuild { ctx: PluginsExecutorCtx pluginsExecutor: PluginsExecutor onResolve( options: esbuild.OnResolveOptions, callback: OnResolveCallback, ): void onLoad(options: esbuild.OnLoadOptions, callback: OnLoadCallback): void onTransform( options: esbuild.OnLoadOptions, callback: OnTransformCallback, ): void onClose(options: any, callback: OnCloseCallback): void } export interface OnTransformArgs { path: string loader: esbuild.Loader namespace?: string contents: string } export interface OnTransformResult { contents: string map?: any loader?: esbuild.Loader } type Maybe = x | undefined | null type PluginInternalObject = { name: string options: { filter: RegExp; namespace?: string } callback: CB } export type OnResolved = ( result: esbuild.OnResolveResult & { importer: string }, ) => Promise> | Maybe // TODO let plugins modify the options, pass an esbuild options as argument and you can access the mutated version as class instance export class PluginsExecutor { ctx: PluginsExecutorCtx plugins: Plugin[] isProfiling: boolean onResolved?: OnResolved initialOptions: esbuild.BuildOptions private startingInitialOptions: esbuild.BuildOptions private transforms: PluginInternalObject[] = [] private resolvers: PluginInternalObject[] = [] private loaders: PluginInternalObject[] = [] private closers: PluginInternalObject[] = [] constructor(_args: { plugins: Array ctx: PluginsExecutorCtx initialOptions: esbuild.BuildOptions isProfiling?: boolean onResolved?: OnResolved }) { const { ctx, plugins, isProfiling = false, onResolved, initialOptions, } = _args this.ctx = ctx this.initialOptions = initialOptions this.startingInitialOptions = cloneDeep(initialOptions) this.onResolved = onResolved this.plugins = plugins this.isProfiling = isProfiling for (let plugin of plugins) { if (isProfiling) { plugin = this.wrapPluginForProfiling(plugin) } const { name, setup } = plugin setup({ ctx, initialOptions, pluginsExecutor: this, onLoad: (options, callback) => { this.loaders.push({ options, callback, name }) }, onResolve: (options, callback) => { this.resolvers.push({ options, callback, name }) }, onTransform: (options, callback) => { this.transforms.push({ options, callback, name }) }, onClose: (options, callback) => { this.closers.push({ options, callback, name }) }, }) } } modulesToPrebundle() { return flatten(this.plugins.map((p) => p.modulesToPrebundle || [])) } private matches( options: { filter: RegExp; namespace?: string }, arg: { path?: string; namespace?: string }, ) { if (!arg.path) { return false } if (options.filter && !options.filter.test(arg.path)) { return false } const optsNamespace = options.namespace || 'file' const argNamespace = arg.namespace || 'file' if (argNamespace !== optsNamespace) { return false } return true } async load(arg: esbuild.OnLoadArgs): Promise> { let result for (let { callback, options, name } of this.loaders) { if (this.matches(options, arg)) { try { logger.debug( `loading '${osAgnosticPath( arg.path, this.ctx.root, )}' with '${name}'`, ) const newResult = await callback(arg) if (newResult) { result = newResult if (!result.pluginName) { result.pluginName = name } break } } catch (e) { if (e && e?.message) { e.plugin = name } throw e } } } if (result) { return { ...result, namespace: result.namespace || 'file' } } } async transform(arg: OnTransformArgs): Promise { let result: OnTransformResult = { contents: arg.contents } for (let { callback, options, name } of this.transforms) { try { if (this.matches(options, arg)) { logger.debug(`transforming '${arg.path}' with '${name}'`) const newResult = await callback(arg) if (newResult?.contents != null) { arg.contents = newResult.contents result.contents = newResult.contents } if (newResult?.loader) { arg.loader = newResult.loader result.loader = newResult.loader } // merge with previous source maps if (newResult?.map) { if (result.map) { result.map = mergeSourceMap( result.map, newResult.map, ) } else { result.map = newResult.map } } } } catch (e) { if (e && e?.message) { e.plugin = name } throw e } } return result } /** * Resolve filter should match on basename and not rely on absolute path, "virtual" could be passed as absolute paths from root: /path/to/virtual_file */ async resolve( arg: Partial & { skipOnResolved?: boolean }, ): Promise> { let result // support for resolving paths with queries for (let { callback, options, name } of this.resolvers) { if (this.matches(options, arg)) { logger.debug(`resolving '${arg.path}' with '${name}'`) const newResult = await callback({ importer: '', namespace: 'file', pluginData: undefined, resolveDir: '', path: '', kind: 'import-statement', // TODO fix wrong kind in resolve ...arg, }) if (newResult && newResult.path) { logger.debug( `resolved '${ arg.path }' with '${name}' as '${osAgnosticPath( newResult.path, this.ctx.root, )}'`, ) result = newResult if (!result.pluginName) { result.pluginName = name } break } // break } } if (result) { result = { ...result, namespace: result.namespace || 'file' } // register resolved modules that do not exist to real file paths, so that i can resolve them in onFileChange if (this.ctx?.graph && arg.path && !fs.existsSync(result.path)) { try { const realPath = await resolveAsync(arg.path, { basedir: arg.resolveDir || arg.importer, mainFields: MAIN_FIELDS, }) if (realPath) { if (this.ctx.graph.realToFake[realPath]) { this.ctx.graph.realToFake[realPath].add(result.path) } else { this.ctx.graph.realToFake[realPath] = new Set([ result.path, ]) } } } catch {} } if (!arg.skipOnResolved && this.onResolved) { const newResult = await this.onResolved({ ...result, importer: arg.importer, }) if (newResult) { return newResult } } return result } } async close() { let result for (let { callback, options, name } of this.closers) { logger.debug(`cleaning resources for '${name}'`) await callback() } return result } async resolveLoadTransform({ path: p, importer = '', namespace = 'file', expectedExtensions, skipOnResolved, }: { path: string importer?: string namespace?: string skipOnResolved?: boolean expectedExtensions?: string[] }): Promise<{ path?: string; contents?: string }> { let resolveDir = path.dirname(p) if (resolveDir === '/' || resolveDir === '.') { resolveDir = '' } const resolved = await this.resolve({ importer, namespace, path: p, resolveDir, skipOnResolved, }) if (resolved?.pluginData) { logger.warn( `pluginData is not supported by bundless, used by plugin ${resolved.pluginName}`, ) } if (!resolved || !resolved.path) { return {} } if ( expectedExtensions && !expectedExtensions.includes(path.extname(resolved.path)) ) { return {} } const loaded = await this.load({ namespace: resolved.namespace || 'file', path: resolved.path, pluginData: undefined, }) if (loaded?.pluginData) { logger.warn( `esbuild pluginData is not supported by bundless, used by plugin ${loaded.pluginName}`, ) } if (!loaded) { return {} } const transformed = await this.transform({ contents: String(loaded.contents), path: resolved.path, loader: loaded.loader || 'default', namespace: resolved.namespace || 'file', }) if (!transformed) { return { contents: String(loaded.contents), path: resolved.path } } return { contents: String(transformed.contents), path: resolved.path } } esbuildPlugins() { return this.plugins.map((plugin, index) => this.wrapPluginForEsbuild(plugin), ) } profilingData: { resolvers: Record loaders: Record transforms: Record } = { resolvers: {}, loaders: {}, transforms: {}, } printProfilingResult() { let str = '\n\nProfiling data:\n\n' // console.log(this.profilingData) const data = Object.keys(this.profilingData).map((k) => { const timeConsume: number = Object.values( this.profilingData[k], ).reduce(sum, 0) as any return { path: k, timeConsume, } }) if (data.map((x) => x.timeConsume).reduce(sum, 0) === 0) { return '' } str += ansiChart(data) str += '\n\nResolvers\n\n' const resolversData = Object.keys(this.profilingData.resolvers).map( (pluginName) => { return { path: pluginName, timeConsume: this.profilingData.resolvers[pluginName], } }, ) const opts = { limit: 3 } str += ansiChart(resolversData, opts) str += '\n\nLoaders\n\n' const loadersData = Object.keys(this.profilingData.loaders).map( (pluginName) => { return { path: pluginName, timeConsume: this.profilingData.loaders[pluginName], } }, ) str += ansiChart(loadersData, opts) str += '\n\nTransforms\n\n' const transformsData = Object.keys(this.profilingData.transforms).map( (pluginName) => { return { path: pluginName, timeConsume: this.profilingData.transforms[pluginName], } }, ) str += ansiChart(transformsData, opts) str += '\n' return str } private wrapPluginForProfiling(plugin: Plugin): Plugin { const pluginsExecutor: PluginsExecutor = this const { profilingData: profiledData } = this const { name } = plugin function wrapMethod(method, type: string) { return async (...args) => { const timeStart = Date.now() const res = await method(...args) const delta = Date.now() - timeStart profiledData[type][name] = (profiledData[type][name] || 0) + delta return res } } return { name, setup(hooks) { plugin.setup({ ...hooks, pluginsExecutor, // wrap onLoad to execute other plugins transforms onLoad: wrapMethod(hooks.onLoad, 'loaders'), onResolve: wrapMethod(hooks.onResolve, 'resolvers'), onTransform: wrapMethod(hooks.onTransform, 'transforms'), }) }, } } private wrapPluginForEsbuild(plugin: Plugin): esbuild.Plugin { const pluginsExecutor: PluginsExecutor = this const ctx = this.ctx const executor = this return { name: plugin.name, setup({ onLoad, onResolve }) { // TODO running setup 2 times plugin.setup({ onResolve, // the plugin transform is already inside pluginsExecutor onTransform() {}, onClose() {}, ctx, pluginsExecutor, initialOptions: executor.startingInitialOptions, // wrap onLoad to execute other plugins transforms onLoad(options, callback) { onLoad(options, async (args) => { const result = await callback(args) if (!result) { return } // run all transforms from other plugins const transformed = await pluginsExecutor.transform( { path: args.path, contents: String(result?.contents), loader: result.loader || 'default', }, ) if (!transformed) { return result } return { ...result, contents: transformed.contents, loader: transformed.loader || result.loader, resolveDir: result.resolveDir, } }) }, }) }, } } } const sum = (a, b): number => a + b export function sortPlugins(plugins?: Plugin[]): [Plugin[], Plugin[]] { if (!plugins) { return [[], []] } const [pre, post]: Plugin[][] = [[], []] for (let plugin of plugins) { if (plugin.enforce === 'pre') { pre.push(plugin) } else if (plugin.enforce === 'post') { post.push(plugin) } else { pre.push(plugin) } } return [pre, post] } ================================================ FILE: bundless/src/prebundle/__snapshots__/prebundle.test.ts.snap ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`traverseWithEsbuild 1`] = ` Array [ "index.html", "main.js", "../../node_modules/slash/index.js", "../../node_modules/react/index.js", "node_modules/preact/hooks/dist/hooks.module.js", "../../node_modules/react-dom/index.js", ] `; ================================================ FILE: bundless/src/prebundle/esbuild.ts ================================================ import * as esbuild from 'esbuild' import { Metafile } from 'esbuild' import fromEntries from 'fromentries' import fs from 'fs-extra' import path from 'path' import slash from 'slash' import tmpfile from 'tmpfile' import { Config, Platform } from '../config' import { osAgnosticPath } from '../utils' import * as plugins from '../plugins' import { defaultImportableAssets as defaultImportableAssets, defaultLoader, isRunningWithYarnPnp, JS_EXTENSIONS, MAIN_FIELDS, } from '../constants' import { logger } from '../logger' import { DependencyStatsOutput } from './stats' import { OptimizeAnalysisResult, runFunctionOnPaths, stripColon, } from './support' import { PluginsExecutor } from '../plugins-executor' export const commonEsbuildOptions = ( config: Config = {}, ): esbuild.BuildOptions => { const omitHashes = process.env.BUNDLESS_CONSISTENT_HMR_GRAPH_HASH != null return { target: 'es2020', entryNames: !omitHashes ? '[dir]/[name]-[hash]' : '[dir]/[name]', chunkNames: 'chunks/[name]-[hash]', minify: false, minifyIdentifiers: false, minifySyntax: false, metafile: true, minifyWhitespace: false, mainFields: MAIN_FIELDS, sourcemap: false, bundle: true, platform: 'browser', format: 'esm', write: true, logLevel: 'error', loader: { '.js': 'jsx', '.cjs': 'js', // '.svg': 'dataurl', // TODO enable svg as data uri in development and in build ...defaultLoader, ...config.loader, }, define: generateDefineObject({ config }), } } export function generateDefineObject({ config = {} as Config, platform = 'browser' as Platform, isProd = false, }) { if (platform === 'node') { return { 'process.browser': 'false', ...config.define, // TODO mock browser stuff like fetch? this allows me to target other platform like cloudflare workers ... } } const noop = 'String' const nodeEnv = process.env.NODE_ENV || (isProd ? 'production' : 'development') return { 'process.env.NODE_ENV': JSON.stringify(nodeEnv), // ...generateEnvReplacements(config.env || {}), 'process.pid': '0', // global: 'window', __filename: '""', __dirname: '""', // TODO remove defines and use inject instead // TODO use the process inject instead of define // process: '{}', global: 'window', // 'process.env': '{}', 'process.browser': 'true', 'process.version': '""', // 'process.argv': '[]', // module: '{}', // Buffer: noop, // 'process.cwd': noop, // 'process.chdir': noop, clearImmediate: noop, setImmediate: noop, ...config.define, } } export const defaultResolvableExtensions = [ ...JS_EXTENSIONS, ...defaultImportableAssets, '.json', '.css', ] export async function bundleWithEsBuild({ entryPoints, root, dest: destLoc, config, ...options }) { const { alias = {}, externalPackages = [], minify = false } = options const tsconfigTempFile = tmpfile('.json') await fs.promises.writeFile(tsconfigTempFile, makeTsConfig({ alias })) // rimraf.sync(destLoc) // do not delete or on flight imports will return 404 const initialOptions: esbuild.BuildOptions = { entryPoints, ...commonEsbuildOptions(config), splitting: true, // needed to dedupe modules external: externalPackages, minify: Boolean(minify), minifyIdentifiers: Boolean(minify), minifySyntax: Boolean(minify), minifyWhitespace: Boolean(minify), mainFields: MAIN_FIELDS, tsconfig: tsconfigTempFile, sourcemap: 'inline', bundle: true, write: true, outdir: destLoc, metafile: true, } const executor = new PluginsExecutor({ initialOptions, ctx: { config: { root }, isBuild: true, root, }, plugins: [ ...(config.plugins || []), plugins.NodeGlobalsPolyfillPlugin({ buffer: true, process: true, define: initialOptions.define, }), plugins.NodeModulesPolyfillPlugin({ namespace: 'node-modules-polyfills', }), plugins.CssPlugin(), plugins.NodeResolvePlugin({ name: 'prebundle-node-resolve', mainFields: MAIN_FIELDS, extensions: [ ...defaultResolvableExtensions, ...(Object.keys(config.loader || {}) || []), ], onNonResolved: (p, importer, e) => { logger.debug(e.message + '\n' + e.stack) // logger.warn( // `Cannot resolve '${p}' from '${importer}' during traversal, using yarn pnp: ${isRunningWithYarnPnp}`, // ) }, }), plugins.UrlResolverPlugin(), ], }) const buildResult = await esbuild.build({ ...initialOptions, plugins: executor.esbuildPlugins(), }) await fs.promises.unlink(tsconfigTempFile) let meta = buildResult.metafile! meta = runFunctionOnPaths(meta, (p) => { p = stripColon(p) // namespace:/path/to/file -> /path/to/file return p }) const esbuildCwd = process.cwd() const bundleMap = metafileToBundleMap({ meta, esbuildCwd, root, }) const analysis = metafileToAnalysis({ meta, root, esbuildCwd }) const stats = metafileToStats({ meta, destLoc }) return { stats, bundleMap, analysis } } function makeTsConfig({ alias }) { const aliases = Object.keys(alias || {}).map((k) => { return { [k]: [alias[k]], } }) const tsconfig = { compilerOptions: { baseUrl: '.', paths: Object.assign({}, ...aliases) }, } return JSON.stringify(tsconfig) } export type BundleMap = Partial> /** * Returns aon object that maps from entry (relative path from root) to output (relative path from root too) */ export function metafileToBundleMap(_options: { root: string esbuildCwd: string meta: Metafile }): BundleMap { const { meta, root, esbuildCwd } = _options const maps: Array<[string, string]> = Object.keys(meta.outputs) .map((output): [string, string] | undefined => { // chunks cannot be entrypoints const entry = meta.outputs[output].entryPoint if (!entry) { return } return [ osAgnosticPath(path.resolve(esbuildCwd, entry), root), osAgnosticPath(path.resolve(esbuildCwd, output), root), ] }) .filter(Boolean) as any const bundleMap = fromEntries(maps) return bundleMap } function metafileToAnalysis(_options: { meta: Metafile root: string esbuildCwd: string }): OptimizeAnalysisResult { const { meta, root, esbuildCwd } = _options const analysis: OptimizeAnalysisResult = { isCommonjs: fromEntries( Object.keys(meta.outputs) .map((output): [string, true] | undefined => { if (path.basename(output).startsWith('chunk.')) { return } const info = meta.outputs[output] if (!info) { throw new Error(`cannot find output info for ${output}`) } const isCommonjs = info.exports?.length === 1 && info.exports?.[0] === 'default' if (!isCommonjs) { return } // what if imported path ahs not yet been converted by prebundler? then prebundler should lock server, it's impossible return [ osAgnosticPath(path.resolve(esbuildCwd, output), root), isCommonjs, ] }) .filter(Boolean) as any, ), } return analysis } export function metafileToStats(_options: { meta: Metafile destLoc: string }): DependencyStatsOutput { const { meta, destLoc } = _options const stats = Object.keys(meta.outputs).map((output) => { const value = meta.outputs[output] // const inputs = meta.outputs[output].bytes; return { path: output, isCommon: ['chunk.'].some((x) => path.basename(output).startsWith(x), ), bytes: value.bytes, } }) function makeStatObject(value) { const relativePath = slash(path.relative(destLoc, value.path)) return { [relativePath]: { size: value.bytes, // gzip: zlib.gzipSync(contents).byteLength, // brotli: zlib.brotliCompressSync ? zlib.brotliCompressSync(contents).byteLength : 0, }, } } return { common: Object.assign( {}, ...stats.filter((x) => x.isCommon).map(makeStatObject), ), direct: Object.assign( {}, ...stats.filter((x) => !x.isCommon).map(makeStatObject), ), } } ================================================ FILE: bundless/src/prebundle/index.ts ================================================ export { prebundle } from './prebundle' ================================================ FILE: bundless/src/prebundle/prebundle.test.ts ================================================ import memoize from 'micro-memoize' import path from 'path' import { makeEntryObject } from './prebundle' import { traverseWithEsbuild } from './traverse' test('traverseWithEsbuild', async () => { const entry = path.resolve('fixtures/with-many-dependencies/index.html') const deps = await traverseWithEsbuild({ entryPoints: [entry], // esbuildCwd: process.cwd(), config: {}, root: path.dirname(entry), }) expect(deps).toMatchSnapshot() }) test('memoize', () => { let i = 0 const fn = memoize((x) => { return i++ }) fn(1) fn(1) fn.cache.keys = [] fn.cache.values = [] fn(1) fn(1) fn(1) expect(i).toBe(2) }) test('makeEntryObject', () => { const deps = ['xxx', 'xxx', 'xxx', 'yyy', 'aaa'] const obj = makeEntryObject(deps) console.log(obj) expect(Object.keys(obj).length).toBe(deps.length) }) ================================================ FILE: bundless/src/prebundle/prebundle.ts ================================================ import fs from 'fs-extra' import path from 'path' import chalk from 'chalk' import { BUNDLE_MAP_PATH, COMMONJS_ANALYSIS_PATH, pnpapi, WEB_MODULES_PATH, } from '../constants' import { logger } from '../logger' import { clearCommonjsAnalysisCache } from '../plugins/rewrite/commonjs' import { bundleWithEsBuild, generateDefineObject } from './esbuild' import { printStats } from './stats' import { isEmpty, needsPrebundle, osAgnosticPath } from '../utils' import { traverseWithEsbuild } from './traverse' export async function prebundle({ entryPoints, config, root, dest }) { try { logger.spinStart(`Prebundling modules in '${WEB_MODULES_PATH}'`) const traversalResult = await traverseWithEsbuild({ entryPoints, root, config, filter: /^[\w@][^:]/, // bare name imports (no relative imports) }) logger.debug(`traversed files`) const dependenciesPaths = traversalResult.filter((p) => needsPrebundle(config, p), ) await fs.remove(dest) if (!dependenciesPaths.length) { logger.log(`No dependencies to prebundle found`) return {} } logger.log( `Prebundling \n ${dependenciesPaths .map((x) => getClearDependencyPath(x)) .map((x) => (path.isAbsolute(x) ? osAgnosticPath(x, root) : x)) .map((x) => chalk.cyanBright(x)) .join('\n ')}\n`, ) // TODO separate build for workspaces and dependencies, build workspaces in watch mode, also pass user plugins // TODO do not stop traversal on workspaces, grab all dependencies including inside workspaces (to node duplicate deps) // TODO build workspaces in separate build step, make external dependencies using the needsPrebundle logic let { bundleMap, analysis, stats } = await bundleWithEsBuild({ dest, root, config, entryPoints: makeEntryObject( dependenciesPaths.map((x) => path.resolve(root, x)), ), }) logger.spinSucceed('\nFinish') const analysisFile = path.resolve(root, COMMONJS_ANALYSIS_PATH) await fs.createFile(analysisFile) await fs.writeFile(analysisFile, JSON.stringify(analysis, null, 4)) console.info( printStats({ dependencyStats: stats, destLoc: WEB_MODULES_PATH }), ) if (!isEmpty(bundleMap)) { const bundleMapCachePath = path.resolve(root, BUNDLE_MAP_PATH) await fs.writeJSON(bundleMapCachePath, bundleMap, { spaces: 4 }) } return bundleMap } catch (e) { logger.spinFail('Cannot prebundle\n') throw e } finally { clearCommonjsAnalysisCache() } } function getClearDependencyPath(p: string) { const index = p.lastIndexOf('node_modules') if (index === -1) { return p } let dependencySubPath = p.slice(index).replace(/\/?node_modules(\/|\\)/, '') return dependencySubPath } function getScopedPackageName(path: string): any { return path.match(/(@[\w-_\.]+\/[\w-_\.]+)/)?.[1] || '' } function getPackageName(p: string) { const dependencySubPath = getClearDependencyPath(p) let dependency = '' if (dependencySubPath.startsWith('@')) { dependency = getScopedPackageName(dependencySubPath) || '' } else { const lastIndex = dependencySubPath.indexOf('/') dependency = dependencySubPath.slice( 0, lastIndex === -1 ? undefined : lastIndex, ) } return dependency } export function makeEntryObject(dependenciesPaths: string[]) { const names: Record = {} return Object.assign( {}, ...dependenciesPaths.map((f) => { let outputPath = getClearDependencyPath(f) || 'unknown' const sameNamesCount = names[outputPath] if (sameNamesCount) { names[outputPath] += 1 outputPath += String(sameNamesCount) } else { names[outputPath] = 1 } return { [outputPath]: f, } }), ) } ================================================ FILE: bundless/src/prebundle/stats.ts ================================================ import chalk from 'chalk' export type DependencyType = 'direct' | 'common' export type DependencyStatsMap = { [filePath: string]: DependencyStats } type DependencyStats = { size: number } export type DependencyStatsOutput = Record export function printStats(_args: { dependencyStats: DependencyStatsOutput destLoc: string }): string { const { dependencyStats, destLoc } = _args let output = '' const { direct, common } = dependencyStats const allDirect = Object.entries(direct).sort(entriesSort) const allCommon = Object.entries(common).sort(entriesSort) const maxFileNameLength = [...allCommon, ...allDirect].reduce( (max, [filename]) => Math.max(filename.length, max), destLoc.length, ) + 1 output += ` ⦿ ${chalk.bold(destLoc.padEnd(maxFileNameLength + 4))}` + chalk.bold(chalk.underline('size'.padEnd(SIZE_COLUMN_WIDTH - 2))) + ' ' + // chalk.bold(chalk.underline('gzip'.padEnd(SIZE_COLUMN_WIDTH - 2))) + // ' ' + // chalk.bold(chalk.underline('brotli'.padEnd(SIZE_COLUMN_WIDTH - 2))) + `\n` output += `${formatFiles(allDirect, maxFileNameLength)}\n` if (Object.values(common).length > 0) { output += ` ⦿ ${chalk.bold('chunks (Shared)')}\n` output += `${formatFiles(allCommon, maxFileNameLength)}` } return `\n${output}\n` } /** The minimum width, in characters, of each size column */ const SIZE_COLUMN_WIDTH = 11 /** Generic Object.entries() alphabetical sort by keys. */ function entriesSort([filenameA]: [string, any], [filenameB]: [string, any]) { return filenameA.localeCompare(filenameB) } /** Pretty-prints number of bytes as "XXX KB" */ function formatSize(size) { let kb = Math.round((size / 1000) * 100) / 100 if (kb >= 1000) { kb = Math.floor(kb) } let color if (kb < 15) { color = 'green' } else if (kb < 30) { color = 'yellow' } else { color = 'red' } return chalk[color](`${kb} KB`.padEnd(SIZE_COLUMN_WIDTH)) } function formatDelta(delta) { const kb = Math.round(delta * 100) / 100 const color = delta > 0 ? 'red' : 'green' return chalk[color](`Δ ${delta > 0 ? '+' : ''}${kb} KB`) } function formatFileInfo( filename: string, stats: DependencyStats, padEnd: number, isLastFile: boolean, ): string { const lineGlyph = chalk.dim(isLastFile ? '└─' : '├─') const lineName = filename.padEnd(padEnd) const fileStat = formatSize(stats.size) // const gzipStat = formatSize(stats.gzip) // const brotliStat = formatSize(stats.brotli) const lineStat = fileStat // + gzipStat + brotliStat let lineDelta = '' // if (stats.delta) { // lineDelta = chalk.dim('[') + formatDelta(stats.delta) + chalk.dim(']') // } // Trim trailing whitespace (can mess with formatting), but keep indentation. return ` ` + `${lineGlyph} ${lineName} ${lineStat} ${lineDelta}`.trim() } function formatFiles(files: [string, DependencyStats][], padEnd: number) { const strippedFiles = files.map(([filename, stats]) => [ filename.replace(/^common\//, ''), stats, ]) as [string, DependencyStats][] return strippedFiles .map(([filename, stats], index) => formatFileInfo(filename, stats, padEnd, index >= files.length - 1), ) .join('\n') } ================================================ FILE: bundless/src/prebundle/support.ts ================================================ import { Metafile } from 'esbuild' import { forOwn, isPlainObject } from 'lodash' export function isUrl(req: string) { return ( req.startsWith('http://') || req.startsWith('https://') || req.startsWith('//') ) } export interface OptimizeAnalysisResult { isCommonjs: { [name: string]: true } } export function unique(array: T[], key = (x: T): any => x): T[] { const cache: Record = {} return array.filter(function (a) { const keyed = key(a) if (!cache[keyed]) { cache[keyed] = true return true } return false }, {}) } // namespace:/path/to/file -> /path/to/file export function stripColon(input?: string) { if (!input) { return '' } const index = input.indexOf(':') if (index === -1) { return input } const clean = input.slice(index + 1) return clean } function convertKeys(obj: T, cb: (k: string) => string): T { const x: T = Array.isArray(obj) ? ([] as any) : {} forOwn(obj, (v, k) => { if (isPlainObject(v) || Array.isArray(v)) v = convertKeys(v, cb) x[cb(k)] = v }) return x } export function runFunctionOnPaths( x: Metafile, func: (x: string) => string = stripColon, ): Metafile { x = convertKeys(x, func) for (const input in x.inputs) { const v = x.inputs[input] x.inputs[input] = { ...v, imports: v.imports ? v.imports.map((x) => ({ ...x, path: func(x.path) })) : [], } } for (const output in x.outputs) { const v = x.outputs[output] x.outputs[output] = { ...v, imports: v.imports ? v.imports.map((x) => ({ ...x, path: func(x.path) })) : [], } } return x } ================================================ FILE: bundless/src/prebundle/traverse.ts ================================================ import deepmerge from 'deepmerge' import * as esbuild from 'esbuild' import { build, BuildOptions, Metafile, Plugin } from 'esbuild' import fromEntries from 'fromentries' import { promises as fsp } from 'fs' import { resolveAsync } from '@esbuild-plugins/all' import fsx from 'fs-extra' import os from 'os' import path from 'path' import { isRunningWithYarnPnp, MAIN_FIELDS } from '../constants' import { HmrGraph } from '../hmr-graph' import { logger } from '../logger' import { PluginsExecutor } from '../plugins-executor' import * as plugins from '../plugins' import { flatten, needsPrebundle, osAgnosticPath } from '../utils' import { commonEsbuildOptions, generateDefineObject, defaultResolvableExtensions, } from './esbuild' import { runFunctionOnPaths, stripColon, unique } from './support' import { rewriteScriptUrlsTransform } from '../serve' import { Config } from '../config' type Args = { root: string entryPoints: string[] config: Config filter?: RegExp esbuildOptions?: Partial // resolver?: (cwd: string, id: string) => string stopTraversing?: (resolvedPath: string) => boolean } export async function traverseWithEsbuild({ entryPoints, filter, root, config, }: Args): Promise { const userPlugins = config.plugins || [] const destLoc = await fsp.realpath( path.resolve(await fsp.mkdtemp(path.join(os.tmpdir(), 'dest'))), ) for (let entry of entryPoints) { if (!path.isAbsolute(entry)) { throw new Error( `All entryPoints of traverseWithEsbuild must be absolute: ${entry}`, ) } } logger.debug(`Traversing entrypoints ${JSON.stringify(entryPoints, [], 4)}`) const allPlugins = [ // TODO esbuild does not let overriding plugins, this means that if user is using plugin to alias a package to a file it will skip ExternalButInMetafile and break everything ...(userPlugins || []), plugins.NodeModulesPolyfillPlugin(), plugins.HtmlResolverPlugin(), plugins.HtmlTransformUrlsPlugin({ transforms: [rewriteScriptUrlsTransform], }), plugins.HtmlIngestPlugin({ root }), plugins.NodeResolvePlugin({ name: 'traverse-node-resolve', mainFields: MAIN_FIELDS, extensions: [ ...defaultResolvableExtensions, ...(Object.keys(config.loader || {}) || []), ], // TODO use different plugin that only runs on bare imports onNonResolved: (p, importer, e) => { logger.debug(e.message + '\n' + e.stack) // logger.warn( // `Cannot resolve '${p}' from '${importer}' during traversal, using yarn pnp: ${isRunningWithYarnPnp}`, // ) }, }), plugins.UrlResolverPlugin(), ] const initialOptions: esbuild.BuildOptions = { ...commonEsbuildOptions(config), entryPoints, outdir: destLoc, } const pluginsExecutor = new PluginsExecutor({ plugins: allPlugins, initialOptions, ctx: { isBuild: true, config: { root }, root, }, }) let graph: TraversalGraph = {} try { await build({ ...initialOptions, plugins: [ traversalGraphPlugin({ executor: pluginsExecutor, graph, filter, stopTraversing(p) { return needsPrebundle(config, p) }, }), ...pluginsExecutor.esbuildPlugins(), ], }) // console.log(JSON.stringify(meta, null, 4)) let knownModules = pluginsExecutor.modulesToPrebundle() knownModules = await Promise.all( knownModules.map((x) => resolveAsync(x, { basedir: root, mainFields: MAIN_FIELDS, }).then((x) => x || ''), ), ) knownModules = knownModules.filter(Boolean) return unique([...Object.keys(graph), ...knownModules]) } finally { await fsx.remove(destLoc) } } export function traversalGraphPlugin({ filter, graph, executor, stopTraversing, }: { filter?: RegExp graph: TraversalGraph executor: PluginsExecutor stopTraversing: Function }): esbuild.Plugin { return { name: 'register-modules', setup({ onResolve }) { onResolve({ filter: filter || /()/ }, async (args) => { const res = await executor.resolve({ importer: args.importer, path: args.path, namespace: 'file', resolveDir: args.importer ? path.dirname(args.importer) : args.resolveDir, skipOnResolved: true, }) if (!res || !res.path) { return res } const importer = osAgnosticPath( args.importer, executor.ctx.root, ) const importee = osAgnosticPath(res.path, executor.ctx.root) if (importer) { if (!graph[importer]) { graph[importer] = [importee] } else { graph[importer].push(importee) } } if (!graph[importee]) { graph[importee] = [] } if (stopTraversing(res.path)) { logger.debug( `Stopping traversing at ${res.path}, ${args.path}`, ) return { external: true } } }) }, } } type TraversalGraph = Record /** * Returns a module graph implemented as an object, keys are modules (relative paths from root), values are arrays of key's imports (absolute paths) */ export function metaToTraversalResult({ meta, entryPoints, esbuildCwd, root, }: { meta: Metafile esbuildCwd: string root: string entryPoints: string[] }): TraversalGraph { if (!path.isAbsolute(esbuildCwd)) { throw new Error('esbuildCwd must be an absolute path') } for (let entry of entryPoints) { if (!path.isAbsolute(entry)) { throw new Error('entry must be an absolute path') } } const alreadyProcessed = new Set() // must be all absolute paths let toProcess = entryPoints const result: TraversalGraph = {} // abs path -> input info const inputs: Record = fromEntries( Object.keys(meta.inputs).map((k) => { const abs = path.resolve(esbuildCwd, k) return [abs, meta.inputs[k]] }), ) while (toProcess.length) { const newImports = flatten( toProcess.map((absPath): string[] => { if (alreadyProcessed.has(absPath)) { return [] } alreadyProcessed.add(absPath) // newEntry = path.posix.normalize(newEntry) // TODO does esbuild always use posix? const input = inputs[absPath] if (input == null) { throw new Error( `entry '${absPath}' is not present in esbuild metafile inputs ${JSON.stringify( Object.keys(inputs), null, 2, )}`, ) } // abs paths const currentImports: string[] = input.imports ? input.imports .map((x) => x.path) .map((x) => { if (!path.isAbsolute(x)) { return path.resolve(esbuildCwd, x) } return x }) .filter((x) => Boolean(x)) : [] // newImports.push(...currentImports) const importer = osAgnosticPath( path.resolve(esbuildCwd, absPath), root, ) if (!result[importer]) { result[importer] = [] } for (let importee of currentImports) { if (!importee) { continue } importee = osAgnosticPath(importee, root) result[importer].push(importee) } return currentImports }), ).filter(Boolean) toProcess = newImports } return result // find the right output getting the key of the right output.inputs == input // get the imports of the inputs.[entry].imports and attach them the importer // do the same with the imports just found // return the list of input files } ================================================ FILE: bundless/src/serve.ts ================================================ import chalk from 'chalk' import chokidar, { FSWatcher } from 'chokidar' import { createHash } from 'crypto' import * as esbuild from 'esbuild' import findUp from 'find-up' import fs from 'fs-extra' import { getPort } from 'get-port-please' import { Server } from 'http' import Koa, { DefaultContext, DefaultState } from 'koa' import etagMiddleware from 'koa-etag' import net from 'net' import path from 'path' import { Node } from 'posthtml' import slash from 'slash' import { promisify } from 'util' import { HMRPayload } from './client/types' import { Config, defaultConfig, getEntries, normalizeConfig } from './config' import { BUNDLE_MAP_PATH, DEFAULT_PORT, defaultImportableAssets, JS_EXTENSIONS, MAIN_FIELDS, showGraph, WEB_MODULES_PATH, pnpapi, } from './constants' import { HmrGraph } from './hmr-graph' import { logger } from './logger' import * as middlewares from './middleware' import * as plugins from './plugins' import { OnResolved, PluginsExecutor, PluginsExecutorCtx, sortPlugins, } from './plugins-executor' import { prebundle } from './prebundle' import { BundleMap, generateDefineObject } from './prebundle/esbuild' import { isUrl } from './prebundle/support' import { appendQuery, isEmpty, Lock, needsPrebundle, osAgnosticPath, parseWithQuery, prepareError, } from './utils' process.env.NODE_ENV = process.env.NODE_ENV || 'development' export interface ServerPluginContext { root: string app: Koa graph: HmrGraph pluginExecutor: PluginsExecutor // server: Server watcher: FSWatcher server?: Server config: Config sendHmrMessage: (payload: HMRPayload) => void port: number } export type ServerMiddleware = (ctx: ServerPluginContext) => void export async function serve(config: Config) { config = normalizeConfig(config) let server = new Server() const { app } = await createDevApp(server, config) server.on('request', app.callback()) const preferredServerPort = config.server?.port || DEFAULT_PORT const port = await getPort(preferredServerPort) if (Number(preferredServerPort) !== Number(port)) { logger.warn( `Using port ${port} because ${preferredServerPort} is already in use`, ) } await promisify(server.listen.bind(server) as any)(port) process.stdout.write('\n') logger.log( `Listening on ${chalk.cyan.underline(`http://localhost:${port}`)}`, ) return server } export const onResolveLock = new Lock() export async function createDevApp(server: net.Server, config: Config) { config = normalizeConfig(config) if (!config.root) { config.root = process.cwd() } const { root } = config const app = new Koa() const graph = new HmrGraph({ root, server }) const watcher = chokidar.watch(root, { ignored: ['**/node_modules/**', '**/.git/**', '**/.bundless'], useFsEvents: shouldUseFsEvents(), ignoreInitial: true, // ...chokidarWatchOptions }) const executorCtx: PluginsExecutorCtx = { config, isBuild: false, graph, root, watcher, } // when resolving if we encounter a node_module run the prebundling phase and invalidate some caches const onResolved: OnResolved = async function onResolved(arg) { const { path: resolvedPath, importer } = arg if (!resolvedPath) { return } try { // lock browser requests until not prebundled await onResolveLock.wait() if (!needsPrebundle(config, resolvedPath)) { return } let relativePath = osAgnosticPath(resolvedPath, root) if (bundleMap && bundleMap[relativePath]) { const webBundle = bundleMap[relativePath] return { ...arg, path: path.resolve(root, webBundle!) } } onResolveLock.lock() // TODO do not rerun prebundle if file extension is an asset like css? logger.log( `Found still not bundled module '${relativePath}' imported by '${importer}', running prebundle phase:`, ) logger.debug(resolvedPath) graph.sendHmrMessage({ type: 'overlay-info-open', info: { message: `Prebundling dependencies, please wait`, showSpinner: true, }, }) // node module path not bundled, rerun bundling const entryPoints = await getEntries(pluginsExecutor, config) logger.debug(`got entries`) // TODO make prebundled files cachable indefinitley given they are named with an hash bundleMap = await prebundle({ entryPoints, dest: path.resolve(root, WEB_MODULES_PATH), config, root, }).catch((e) => { graph.sendHmrMessage({ type: 'overlay-info-close', }) graph.sendHmrMessage({ type: 'overlay-error', err: prepareError(e), }) throw e }) graph.sendHmrMessage({ type: 'overlay-info-close', }) await updateHash(hashPath, depsHash) graph.sendHmrMessage({ type: 'reload' }) const webBundle = bundleMap[relativePath] if (!webBundle) { throw new Error( `Bundle for '${relativePath}' was not generated in prebundling phase`, ) } return { ...arg, path: path.resolve(root, webBundle) } } catch (e) { throw e } finally { onResolveLock.ready() } } const [prePlugins, postPlugins] = sortPlugins(config.plugins) const initialOptions: esbuild.BuildOptions = { loader: config.loader, bundle: false, minify: false, define: config.define, } // TODO better esbuild initialOptions for serve // most of the logic is in plugins const pluginsExecutor = new PluginsExecutor({ ctx: executorCtx, isProfiling: config.printStats, initialOptions, onResolved, plugins: [ ...prePlugins, // TODO resolve `data:` imports, rollup emits imports with data: ... plugins.HtmlResolverPlugin(), plugins.UrlResolverPlugin(), // resolves urls with queries plugins.HmrClientPlugin({ getPort: () => server.address()?.['port'], }), plugins.CssPlugin(), // NodeResolvePlugin must be called first, to not skip prebundling plugins.NodeResolvePlugin({ name: 'node-resolve', mainFields: MAIN_FIELDS, extensions: [...JS_EXTENSIONS], }), plugins.AssetsPlugin({ loader: config.loader, }), plugins.NodeModulesPolyfillPlugin({ namespace: 'node-builtins' }), plugins.EsbuildTransformPlugin(), plugins.JSONPlugin(), plugins.ResolveSourcemapPlugin(), plugins.HtmlTransformUrlsPlugin({ // must come before rewrite to not warn about the client script not having type=module transforms: [rewriteScriptUrlsTransform], }), plugins.SourceMapSupportPlugin(), // adds source map to errors traces, must be after hmr client plugin ...postPlugins, plugins.RewritePlugin(), ], }) const bundleMapCachePath = path.resolve(root, BUNDLE_MAP_PATH) const hashPath = path.resolve(root, WEB_MODULES_PATH, 'deps_hash') const depsHash = await getDepsHash(root) let prevHash = await fs .readFile(hashPath) .catch(() => '') .then((x) => x.toString().trim()) const isHashDifferent = !depsHash || !prevHash || prevHash !== depsHash if (config.prebundle?.force || isHashDifferent) { if (isHashDifferent) { logger.log(`Dependencies changed, running prebundle phase`) logger.debug('isHashDifferent', isHashDifferent, prevHash, depsHash) } await fs.remove(path.resolve(root, '.bundless')) } let bundleMap: BundleMap = await fs .readJSON(bundleMapCachePath) .catch(() => { return {} }) if (isEmpty(bundleMap)) { bundleMap = await prebundle({ entryPoints: await getEntries(pluginsExecutor, config), config, dest: path.resolve(root, WEB_MODULES_PATH), root, }) await updateHash(hashPath, depsHash) } server.once('close', async () => { logger.debug('closing') await Promise.all([watcher.close(), pluginsExecutor.close()]) app.emit('closed') }) if (config.printStats) { process.on('SIGINT', () => { process.stdout.write('\n') console.info(pluginsExecutor.printProfilingResult()) process.exit(0) }) } app.on('error', (e: Error) => { console.error(chalk.red(e.message)) console.error(chalk.red(e.stack)) graph.sendHmrMessage({ type: 'overlay-error', err: prepareError(e) }) }) server.once('listening', () => { config.server = { ...config.server, port: server.address()?.['port'] } }) if (config.server?.hmr) { watcher.on('change', (filePath) => { graph.onFileChange({ filePath, }) if (showGraph) { logger.log(graph.toString()) } }) } // only js ends up here app.use(middlewares.openInEditorMiddleware({ root })) app.use(middlewares.sourcemapMiddleware({ root })) app.use(middlewares.pluginsMiddleware({ root, pluginsExecutor, watcher })) app.use(middlewares.historyFallbackMiddleware({ root, pluginsExecutor })) app.use(middlewares.staticServeMiddleware({ root })) app.use( middlewares.staticServeMiddleware({ root: path.resolve(root, 'public'), }), ) // app.use(etagMiddleware()) // cors if (config.server?.cors) { app.use( require('@koa/cors')( typeof config.server?.cors === 'boolean' ? {} : config.server?.cors, ), ) } return { app, pluginsExecutor } } // hash assumes that import paths can only grow when installed dependencies grow, this is not the case for deep paths like `lodash/path`, in these cases you will need to use `--force` // TODO include config in hash async function getDepsHash(root: string) { const lockfileLoc = await findUp( ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml'], { cwd: root, }, ) if (!lockfileLoc) { return '' } const content = await (await fs.readFile(lockfileLoc, 'utf-8')).toString() return createHash('sha1').update(content).digest('base64').trim() } async function updateHash(hashPath: string, newHash: string) { await fs.createFile(hashPath) await fs.writeFile(hashPath, newHash.trim()) } export const rewriteScriptUrlsTransform = (tree: Node) => { let count = 0 tree.walk((node) => { if ( node && node.tag === 'script' && node.attrs && node.attrs['src'] && !isUrl(node.attrs['src']) ) { count += 1 let importPath = node.attrs['src'] if (node.attrs['type'] !== 'module') { logger.warn( `
================================================ FILE: examples/react-javascript/src/app.jsx ================================================ import React from 'react' export default function App() { return (

Hello Bundless

Start editing to see some magic happen!

) } ================================================ FILE: examples/react-javascript/src/index.jsx ================================================ import React from 'react' import ReactDOM from 'react-dom' import App from './app' const rootElement = document.getElementById('root') ReactDOM.render( , rootElement, ) ================================================ FILE: examples/react-javascript/src/styles.css ================================================ .App { font-family: sans-serif; text-align: center; } ================================================ FILE: examples/react-typescript/.gitignore ================================================ .bundless node_modules .DS_Store ================================================ FILE: examples/react-typescript/bundless.config.js ================================================ const { ReactRefreshPlugin } = require('@bundless/plugin-react-refresh') /** * @type { import('@bundless/cli').Config } */ module.exports = { plugins: [ReactRefreshPlugin()], } ================================================ FILE: examples/react-typescript/package.json ================================================ { "name": "example-react-typescript", "private": true, "version": "1.0.0", "scripts": { "dev": "bundless dev", "build": "bundless build" }, "dependencies": { "react": "experimental", "react-dom": "experimental" }, "devDependencies": { "@bundless/cli": "0.6.0", "@bundless/plugin-react-refresh": "2.1.0" }, "license": "MIT" } ================================================ FILE: examples/react-typescript/public/index.html ================================================
================================================ FILE: examples/react-typescript/src/app.tsx ================================================ import React from 'react' export default function App() { return (

Hello Bundless

Start editing to see some magic happen!

) } ================================================ FILE: examples/react-typescript/src/index.tsx ================================================ import React from 'react' import ReactDOM from 'react-dom' import App from './app' const rootElement = document.getElementById('root') ReactDOM.render( , rootElement, ) ================================================ FILE: examples/react-typescript/src/styles.css ================================================ .App { font-family: sans-serif; text-align: center; } ================================================ FILE: examples/react-typescript/tsconfig.json ================================================ { "compilerOptions": { "rootDir": "src", "esModuleInterop": true, "skipLibCheck": true, "noEmit": true, "jsx": "react", "moduleResolution": "Node" } } ================================================ FILE: examples/svelte/.gitignore ================================================ node_modules out .bundless .DS_Store ================================================ FILE: examples/svelte/bundless.config.js ================================================ const { SveltePlugin } = require('@bundless/plugin-svelte') /** * @type { import('@bundless/cli').Config } */ module.exports = { plugins: [SveltePlugin()], } ================================================ FILE: examples/svelte/package.json ================================================ { "name": "svelte-example", "version": "1.0.0", "private": true, "scripts": { "build": "bundless build", "dev": "bundless dev" }, "devDependencies": { "@bundless/cli": "0.6.0", "@bundless/plugin-svelte": "^0.0.1", "svelte": "^3.32.1" } } ================================================ FILE: examples/svelte/public/index.html ================================================ Svelte app ================================================ FILE: examples/svelte/scripts/setupTypeScript.js ================================================ // @ts-check /** This script modifies the project to support TS code in .svelte files like: As well as validating the code for CI. */ /** To work on this script: rm -rf test-template template && git clone sveltejs/template test-template && node scripts/setupTypeScript.js test-template */ const fs = require("fs") const path = require("path") const { argv } = require("process") const projectRoot = argv[2] || path.join(__dirname, "..") // Add deps to pkg.json const packageJSON = JSON.parse(fs.readFileSync(path.join(projectRoot, "package.json"), "utf8")) packageJSON.devDependencies = Object.assign(packageJSON.devDependencies, { "svelte-check": "^1.0.0", "svelte-preprocess": "^4.0.0", "@rollup/plugin-typescript": "^6.0.0", "typescript": "^3.9.3", "tslib": "^2.0.0", "@tsconfig/svelte": "^1.0.0" }) // Add script for checking packageJSON.scripts = Object.assign(packageJSON.scripts, { "validate": "svelte-check" }) // Write the package JSON fs.writeFileSync(path.join(projectRoot, "package.json"), JSON.stringify(packageJSON, null, " ")) // mv src/main.js to main.ts - note, we need to edit rollup.config.js for this too const beforeMainJSPath = path.join(projectRoot, "src", "main.js") const afterMainTSPath = path.join(projectRoot, "src", "main.ts") fs.renameSync(beforeMainJSPath, afterMainTSPath) // Switch the app.svelte file to use TS const appSveltePath = path.join(projectRoot, "src", "App.svelte") let appFile = fs.readFileSync(appSveltePath, "utf8") appFile = appFile.replace("

Hello {name}!

This is an example svelte application built with bundless

================================================ FILE: examples/svelte/src/global.css ================================================ html, body { position: relative; width: 100%; height: 100%; } body { color: #333; margin: 0; padding: 8px; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; } a { color: rgb(0,100,200); text-decoration: none; } a:hover { text-decoration: underline; } a:visited { color: rgb(0,80,160); } label { display: block; } input, button, select, textarea { font-family: inherit; font-size: inherit; -webkit-padding: 0.4em 0; padding: 0.4em; margin: 0 0 0.5em 0; box-sizing: border-box; border: 1px solid #ccc; border-radius: 2px; } input:disabled { color: #ccc; } button { color: #333; background-color: #f4f4f4; outline: none; } button:disabled { color: #999; } button:not(:disabled):active { background-color: #ddd; } button:focus { border-color: #666; } ================================================ FILE: examples/svelte/src/main.js ================================================ import './global.css' import App from './App.svelte' const app = new App({ target: document.body, props: { name: 'world', }, }) export default app ================================================ FILE: examples/vanilla-javascript/.gitignore ================================================ .bundless node_modules .DS_Store ================================================ FILE: examples/vanilla-javascript/bundless.config.js ================================================ /** * @type { import('@bundless/cli').Config } */ module.exports = {} ================================================ FILE: examples/vanilla-javascript/package.json ================================================ { "name": "example-vanilla-javascript", "private": true, "version": "1.0.0", "scripts": { "dev": "bundless dev", "build": "bundless build" }, "dependencies": {}, "devDependencies": { "@bundless/cli": "0.6.0", "@bundless/plugin-react-refresh": "2.1.0" }, "license": "MIT" } ================================================ FILE: examples/vanilla-javascript/public/index.html ================================================ ================================================ FILE: examples/vanilla-javascript/src/index.js ================================================ var node = document.createElement('p') var textnode = document.createTextNode('Hey!') node.appendChild(textnode) document.body.appendChild(node) ================================================ FILE: examples/vanilla-javascript/src/styles.css ================================================ body { font-family: sans-serif; text-align: center; } ================================================ FILE: fixtures/html-page/__mirror__/index.html ================================================

My First Heading

My first paragraph.

================================================ FILE: fixtures/html-page/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/html-page: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/html-page: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", } `; exports[`snapshots fixtures/html-page: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", ] `; exports[`snapshots fixtures/html-page: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, ] `; ================================================ FILE: fixtures/html-page/index.html ================================================

My First Heading

My first paragraph.

================================================ FILE: fixtures/outsider.js ================================================ export default 'Hi, i am outside of root' ================================================ FILE: fixtures/resolve-sourcemap/__mirror__/folder/main.js ================================================ console.log('Hello world!') var node = document.createElement('LI') var textnode = document.createTextNode('works!') node.appendChild(textnode) document.body.appendChild(node) //# sourceMappingURL=/folder/main.js.map ================================================ FILE: fixtures/resolve-sourcemap/__mirror__/index.html ================================================

My First Heading

My first paragraph.

================================================ FILE: fixtures/resolve-sourcemap/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/resolve-sourcemap: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/resolve-sourcemap: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/folder/main.js?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", } `; exports[`snapshots fixtures/resolve-sourcemap: mirror 1`] = ` Array [ "_hmr_client.js", "folder/main.js", "index.html", ] `; exports[`snapshots fixtures/resolve-sourcemap: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/folder/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/folder/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/resolve-sourcemap/folder/main.js ================================================ console.log('Hello world!') var node = document.createElement('LI') var textnode = document.createTextNode('works!') node.appendChild(textnode) document.body.appendChild(node) //# sourceMappingURL=main.js.map ================================================ FILE: fixtures/resolve-sourcemap/index.html ================================================

My First Heading

My first paragraph.

================================================ FILE: fixtures/serve-outside-root/__mirror__/__..__/outsider.js ================================================ export default 'Hi, i am outside of root' ================================================ FILE: fixtures/serve-outside-root/__mirror__/index.html ================================================ ================================================ FILE: fixtures/serve-outside-root/__mirror__/main.js ================================================ import text from '/__..__/outsider.js?namespace=file&t=0' console.log(text) var node = document.createElement('pre') var textnode = document.createTextNode(text) node.appendChild(textnode) document.body.appendChild(node) ================================================ FILE: fixtures/serve-outside-root/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/serve-outside-root: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/serve-outside-root: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/__..__/outsider.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/serve-outside-root: mirror 1`] = ` Array [ "__..__/outsider.js", "_hmr_client.js", "index.html", "main.js", ] `; exports[`snapshots fixtures/serve-outside-root: traverse result 1`] = ` Array [ Object { "importPath": "/__..__/outsider.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/__..__/outsider.js?namespace=file&t=0", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/serve-outside-root/index.html ================================================ ================================================ FILE: fixtures/serve-outside-root/main.js ================================================ import text from '../outsider' console.log(text) var node = document.createElement('pre') var textnode = document.createTextNode(text) node.appendChild(textnode) document.body.appendChild(node) ================================================ FILE: fixtures/simple-js/__mirror__/index.html ================================================

My First Heading

My first paragraph.

================================================ FILE: fixtures/simple-js/__mirror__/main.js ================================================ console.log('Hello world!') var node = document.createElement('LI') var textnode = document.createTextNode('works!') node.appendChild(textnode) document.body.appendChild(node) ================================================ FILE: fixtures/simple-js/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/simple-js: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/simple-js: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/simple-js: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.js", ] `; exports[`snapshots fixtures/simple-js: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/simple-js/index.html ================================================

My First Heading

My first paragraph.

================================================ FILE: fixtures/simple-js/main.js ================================================ console.log('Hello world!') var node = document.createElement('LI') var textnode = document.createTextNode('works!') node.appendChild(textnode) document.body.appendChild(node) ================================================ FILE: fixtures/with-alias-plugin/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-alias-plugin/__mirror__/main.tsx ================================================ import {text} from "/text.ts?namespace=file&t=0"; import React from "/.bundless/node_modules/preact/compat/dist/compat.module.js.js?namespace=file&t=0"; const node = document.createElement("pre"); node.appendChild(document.createTextNode(text)); document.body.appendChild(node); console.log(React.cloneElement); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLWFsaWFzLXBsdWdpbi9tYWluLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAanN4IGpzeFxuaW1wb3J0IHsgdGV4dCB9IGZyb20gJ0B2aXJ0dWFsJ1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJylcbm5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpXG5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vZGUpXG5cbmNvbnNvbGUubG9nKFJlYWN0LmNsb25lRWxlbWVudClcbiJdLCJtYXBwaW5ncyI6IkFBQ0E7QUFDQTtBQUVBLE1BQU0sT0FBTyxTQUFTLGNBQWM7QUFDcEMsS0FBSyxZQUFZLFNBQVMsZUFBZTtBQUN6QyxTQUFTLEtBQUssWUFBWTtBQUUxQixRQUFRLElBQUksTUFBTTsiLCJuYW1lcyI6W119 ================================================ FILE: fixtures/with-alias-plugin/__mirror__/text.ts ================================================ export const text = "virtual"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLWFsaWFzLXBsdWdpbi90ZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB0ZXh0ID0gJ3ZpcnR1YWwnXG4iXSwibWFwcGluZ3MiOiJBQUFPLGFBQU0sT0FBTzsiLCJuYW1lcyI6W119 ================================================ FILE: fixtures/with-alias-plugin/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-alias-plugin: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-alias-plugin: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/.bundless/node_modules/preact/compat/dist/compat.module.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.tsx?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/text.ts?namespace=file&t=0": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-alias-plugin: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.tsx", "text.ts", ] `; exports[`snapshots fixtures/with-alias-plugin: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/.bundless/node_modules/preact/compat/dist/compat.module.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.tsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/preact/compat/dist/compat.module.js.js?namespace=file&t=0", }, Object { "importPath": "/main.tsx?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.tsx?namespace=file", }, Object { "importPath": "/text.ts?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.tsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/text.ts?namespace=file&t=0", }, ] `; ================================================ FILE: fixtures/with-alias-plugin/bundless.config.js ================================================ const path = require('path') const { AliasPlugin } = require('@bundless/plugin-alias') module.exports = { build: { minify: false, }, plugins: [ AliasPlugin({ entries: [ { find: 'react', replacement: 'preact/compat' }, { find: '@virtual', replacement: './text.ts' }, ], // paths: { // 'react/*': [require.resolve('preact/compat')], // react: [require.resolve('preact/compat')], // '@virtual': ['text.ts'], // }, }), ], } ================================================ FILE: fixtures/with-alias-plugin/index.html ================================================ ================================================ FILE: fixtures/with-alias-plugin/main.tsx ================================================ // @jsx jsx import { text } from '@virtual' import React from 'react' const node = document.createElement('pre') node.appendChild(document.createTextNode(text)) document.body.appendChild(node) console.log(React.cloneElement) ================================================ FILE: fixtures/with-alias-plugin/package.json ================================================ { "name": "fixtures-with-alias", "version": "0.0.0", "private": true, "dependencies": { "preact": "*", "react-dom": "experimental" } } ================================================ FILE: fixtures/with-alias-plugin/text.ts ================================================ export const text = 'virtual' ================================================ FILE: fixtures/with-assets-imports/__mirror__/dynamic-import.js ================================================ export default 'dynamic import' ================================================ FILE: fixtures/with-assets-imports/__mirror__/file.css.cssjs ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); const css = "body {\n background-color: aqua;\n}"; if (typeof document !== 'undefined') { import.meta.hot.accept(); import.meta.hot.dispose(() => { document.head.removeChild(styleEl); }); const styleEl = document.createElement("style"); const codeEl = document.createTextNode(css); styleEl.type = 'text/css'; styleEl.appendChild(codeEl); document.head.appendChild(styleEl); } export default css ================================================ FILE: fixtures/with-assets-imports/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-assets-imports/__mirror__/main.js ================================================ import image from '/image.png?namespace=file&t=0' import '/file.css.cssjs?namespace=file&t=0' console.log(image) const node = document.createElement('div') var img = document.createElement('img') img.src = image document.body.appendChild(node.appendChild(img)) import('/dynamic-import.js?namespace=file&t=0').then(console.log) ================================================ FILE: fixtures/with-assets-imports/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-assets-imports: build 1`] = ` Array [ "chunks/dynamic-import-3I42H3S6.js", "image-WYWSOB4S.png", "index.css", "index.html", "index.js", ] `; exports[`snapshots fixtures/with-assets-imports: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/dynamic-import.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.css.cssjs?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/image.png?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-assets-imports: mirror 1`] = ` Array [ "_hmr_client.js", "dynamic-import.js", "file.css.cssjs", "image.png", "index.html", "main.js", ] `; exports[`snapshots fixtures/with-assets-imports: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/file.css.cssjs?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/dynamic-import.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/dynamic-import.js?namespace=file&t=0", }, Object { "importPath": "/file.css.cssjs?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/file.css.cssjs?namespace=file&t=0", }, Object { "importPath": "/image.png?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/image.png?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/with-assets-imports/bundless.config.js ================================================ module.exports = { build: { // basePath: '/base' } } ================================================ FILE: fixtures/with-assets-imports/dynamic-import.js ================================================ export default 'dynamic import' ================================================ FILE: fixtures/with-assets-imports/file.css ================================================ body { background-color: aqua; } ================================================ FILE: fixtures/with-assets-imports/index.html ================================================ ================================================ FILE: fixtures/with-assets-imports/main.js ================================================ import image from './image.png' import './file.css' console.log(image) const node = document.createElement('div') var img = document.createElement('img') img.src = image document.body.appendChild(node.appendChild(img)) import('./dynamic-import.js').then(console.log) ================================================ FILE: fixtures/with-babel-plugin/__mirror__/index.html ================================================
================================================ FILE: fixtures/with-babel-plugin/__mirror__/main.tsx ================================================ import _styled from "/.bundless/node_modules/styled-components/dist/styled-components.esm.js.js?namespace=file&t=0"; import react_cjsImport1 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const React = react_cjsImport1 && react_cjsImport1.__esModule ? react_cjsImport1.default : react_cjsImport1;; import reactDom_cjsImport2 from "/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0"; const dom = reactDom_cjsImport2 && reactDom_cjsImport2.__esModule ? reactDom_cjsImport2.default : reactDom_cjsImport2;; const ONE_DAY = 864e5; const TWO_DAYS = 1728e5; console.log(TWO_DAYS); const Heading = _styled.h1.withConfig({ displayName: "main__Heading", componentId: "p638xe-0" })(["font-size:2rem;color:red;"]); dom.render(/* @__PURE__ */ React.createElement(Heading, null, "ciao"), document.getElementById("main")); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLWJhYmVsLXBsdWdpbi9tYWluLnRzeCJdLCJuYW1lcyI6WyJPTkVfREFZIiwiVFdPX0RBWVMiLCJjb25zb2xlIiwibG9nIiwiSGVhZGluZyIsInN0eWxlZCIsImgxIiwiZG9tIiwicmVuZGVyIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCJdLCJtYXBwaW5ncyI6IjtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxVQUFPO0FBQ2IsTUFBTUMsV0FBUTtBQUVkQyxRQUFRQyxJQUFJRjtBQUtaLE1BQU1HLFVBQVVDLFFBQU9DLEdBQVYsV0FBQTtBQUFBLEVBQUEsYUFBQTtBQUFBLEVBQUEsYUFBQTtBQUFBLEdBQUEsQ0FBQTtBQUtiQyxJQUFJQyxPQUFPLG9DQUFDLFNBQUQsTUFBUyxTQUFnQkMsU0FBU0MsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtcyBmcm9tICdtcy5tYWNybydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBkb20gZnJvbSAncmVhY3QtZG9tJ1xuXG5jb25zdCBPTkVfREFZID0gbXMoJzEgZGF5JylcbmNvbnN0IFRXT19EQVlTID0gbXMoJzIgZGF5cycpXG5cbmNvbnNvbGUubG9nKFRXT19EQVlTKVxuXG4vLyBzcmMvSGVhZGluZy9IZWFkaW5nLnRzXG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzL21hY3JvJ1xuXG5jb25zdCBIZWFkaW5nID0gc3R5bGVkLmgxYFxuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBjb2xvcjogcmVkO1xuYFxuXG5kb20ucmVuZGVyKDxIZWFkaW5nPmNpYW88L0hlYWRpbmc+LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbicpKVxuIl19 ================================================ FILE: fixtures/with-babel-plugin/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-babel-plugin: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-babel-plugin: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-UALMCH24.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/styled-components/dist/styled-components.esm.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.tsx?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-babel-plugin: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.tsx", ] `; exports[`snapshots fixtures/with-babel-plugin: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-UALMCH24.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-UALMCH24.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-UALMCH24.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-UALMCH24.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-UALMCH24.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/styled-components/dist/styled-components.esm.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-UALMCH24.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.tsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.tsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/styled-components/dist/styled-components.esm.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.tsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/styled-components/dist/styled-components.esm.js.js?namespace=file&t=0", }, Object { "importPath": "/main.tsx?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.tsx?namespace=file", }, ] `; ================================================ FILE: fixtures/with-babel-plugin/bundless.config.js ================================================ const { BabelPlugin } = require('@bundless/plugin-babel') module.exports = { plugins: [ BabelPlugin({ babelOptions: { plugins: [require('babel-plugin-macros')], }, }), ], } ================================================ FILE: fixtures/with-babel-plugin/index.html ================================================
================================================ FILE: fixtures/with-babel-plugin/main.tsx ================================================ import ms from 'ms.macro' import React from 'react' import dom from 'react-dom' const ONE_DAY = ms('1 day') const TWO_DAYS = ms('2 days') console.log(TWO_DAYS) // src/Heading/Heading.ts import styled from 'styled-components/macro' const Heading = styled.h1` font-size: 2rem; color: red; ` dom.render(ciao, document.getElementById('main')) ================================================ FILE: fixtures/with-babel-plugin/package.json ================================================ { "name": "fixtures-with-babel", "version": "0.0.0", "private": true, "dependencies": { "babel-plugin-macros": "3.0.1", "styled-components": "^5.2.1", "ms.macro": "^2.0.0" } } ================================================ FILE: fixtures/with-commonjs-transform/__mirror__/index.html ================================================
================================================ FILE: fixtures/with-commonjs-transform/__mirror__/main.jsx ================================================ import react_cjsImport0 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const React = react_cjsImport0 && react_cjsImport0.__esModule ? react_cjsImport0.default : react_cjsImport0;; import react_cjsImport1 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const ReactNamespace = {default: react_cjsImport1, ...(typeof react_cjsImport1 === 'object' && react_cjsImport1)};; import react_cjsImport2 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const useState = react_cjsImport2["useState"];; console.log("useState", String(useState)); console.log({ReactAll: ReactNamespace, Fragment: ReactNamespace.Fragment}); var node = document.createElement("pre"); var textnode = document.createTextNode(String(useState)); node.appendChild(textnode); document.body.appendChild(node); import('/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0').then(m=>({...m, ...(m.default instanceof Object && m.default.constructor === Object && m.default)})).then((react) => react.render(/* @__PURE__ */ React.createElement("div", null), document.getElementById("root"))); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLWNvbW1vbmpzLXRyYW5zZm9ybS9tYWluLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBSZWFjdE5hbWVzcGFjZSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmNvbnNvbGUubG9nKCd1c2VTdGF0ZScsIFN0cmluZyh1c2VTdGF0ZSkpXG5jb25zb2xlLmxvZyh7IFJlYWN0QWxsOiBSZWFjdE5hbWVzcGFjZSwgRnJhZ21lbnQ6IFJlYWN0TmFtZXNwYWNlLkZyYWdtZW50IH0pXG5cbnZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJylcbnZhciB0ZXh0bm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmluZyh1c2VTdGF0ZSkpXG5ub2RlLmFwcGVuZENoaWxkKHRleHRub2RlKVxuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub2RlKVxuXG5pbXBvcnQoJ3JlYWN0LWRvbScpLnRoZW4oKHJlYWN0KSA9PlxuICAgIHJlYWN0LnJlbmRlcig8ZGl2IC8+LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpKSxcbilcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBRUEsUUFBUSxJQUFJLFlBQVksT0FBTztBQUMvQixRQUFRLElBQUksQ0FBRSxVQUFVLGdCQUFnQixVQUFVLGVBQWU7QUFFakUsSUFBSSxPQUFPLFNBQVMsY0FBYztBQUNsQyxJQUFJLFdBQVcsU0FBUyxlQUFlLE9BQU87QUFDOUMsS0FBSyxZQUFZO0FBQ2pCLFNBQVMsS0FBSyxZQUFZO0FBRTFCLE9BQU8sYUFBYSxLQUFLLENBQUMsVUFDdEIsTUFBTSxPQUFPLG9DQUFDLE9BQUQsT0FBUyxTQUFTLGVBQWU7IiwibmFtZXMiOltdfQ== ================================================ FILE: fixtures/with-commonjs-transform/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-commonjs-transform: build 1`] = ` Array [ "chunks/chunk-FL5OWIUE.js", "chunks/react-dom-27POQ3ID.js", "index.html", "index.js", ] `; exports[`snapshots fixtures/with-commonjs-transform: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-4PPHFTU5.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.jsx?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-commonjs-transform: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.jsx", ] `; exports[`snapshots fixtures/with-commonjs-transform: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-4PPHFTU5.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-4PPHFTU5.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-4PPHFTU5.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-4PPHFTU5.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-4PPHFTU5.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-4PPHFTU5.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-4PPHFTU5.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-4PPHFTU5.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.jsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.jsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.jsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.jsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/main.jsx?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.jsx?namespace=file", }, ] `; ================================================ FILE: fixtures/with-commonjs-transform/index.html ================================================
================================================ FILE: fixtures/with-commonjs-transform/main.jsx ================================================ import React from 'react' import * as ReactNamespace from 'react' import { useState } from 'react' console.log('useState', String(useState)) console.log({ ReactAll: ReactNamespace, Fragment: ReactNamespace.Fragment }) var node = document.createElement('pre') var textnode = document.createTextNode(String(useState)) node.appendChild(textnode) document.body.appendChild(node) import('react-dom').then((react) => react.render(
, document.getElementById('root')), ) ================================================ FILE: fixtures/with-commonjs-transform/package.json ================================================ { "name": "fixtures-with-commonjs-transform", "version": "0.0.0", "private": true, "dependencies": { "react": "experimental", "react-dom": "experimental" } } ================================================ FILE: fixtures/with-css/__mirror__/file.css.cssjs ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); const css = "body {\n background: lightcoral;\n}\n\npre {\n background: white;\n}\n\n"; if (typeof document !== 'undefined') { import.meta.hot.accept(); import.meta.hot.dispose(() => { document.head.removeChild(styleEl); }); const styleEl = document.createElement("style"); const codeEl = document.createTextNode(css); styleEl.type = 'text/css'; styleEl.appendChild(codeEl); document.head.appendChild(styleEl); } export default css ================================================ FILE: fixtures/with-css/__mirror__/file.js ================================================ export const text = 'This has been made in 2020, what a shitty year' ================================================ FILE: fixtures/with-css/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-css/__mirror__/main.js ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); import '/file.css.cssjs?namespace=file&t=0' import { text } from '/file.js?namespace=file&t=0' const node = document.createElement('pre') node.appendChild(document.createTextNode(text)) document.body.appendChild(node) if (import.meta.hot) { import.meta.hot.accept() } ================================================ FILE: fixtures/with-css/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-css: build 1`] = ` Array [ "index.css", "index.html", "index.js", ] `; exports[`snapshots fixtures/with-css: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.css.cssjs?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-css: mirror 1`] = ` Array [ "_hmr_client.js", "file.css.cssjs", "file.js", "index.html", "main.js", ] `; exports[`snapshots fixtures/with-css: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/file.css.cssjs?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/file.css.cssjs?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/file.css.cssjs?namespace=file&t=0", }, Object { "importPath": "/file.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/file.js?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/with-css/file.css ================================================ body { background: lightcoral; } pre { background: white; } ================================================ FILE: fixtures/with-css/file.js ================================================ export const text = 'This has been made in 2020, what a shitty year' ================================================ FILE: fixtures/with-css/index.html ================================================ ================================================ FILE: fixtures/with-css/main.js ================================================ import './file.css' import { text } from './file' const node = document.createElement('pre') node.appendChild(document.createTextNode(text)) document.body.appendChild(node) if (import.meta.hot) { import.meta.hot.accept() } ================================================ FILE: fixtures/with-css-modules/__mirror__/file.js ================================================ export const text = 'This has been made in 2020, what a shitty year' ================================================ FILE: fixtures/with-css-modules/__mirror__/file.module.css.cssjs ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); const css = ".textLarge {\n font-size: 100px;\n}\n"; if (typeof document !== 'undefined') { import.meta.hot.accept(); import.meta.hot.dispose(() => { document.head.removeChild(styleEl); }); const styleEl = document.createElement("style"); const codeEl = document.createTextNode(css); styleEl.type = 'text/css'; styleEl.appendChild(codeEl); document.head.appendChild(styleEl); } export default css ================================================ FILE: fixtures/with-css-modules/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-css-modules/__mirror__/main.js ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); import classNames from '/file.module.css.cssjs?namespace=file&t=0' import { text } from '/file.js?namespace=file&t=0' console.log({ classNames }) const node = document.createElement('pre') node.appendChild(document.createTextNode(text)) document.body.appendChild(node) if (import.meta.hot) { import.meta.hot.accept() } ================================================ FILE: fixtures/with-css-modules/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-css-modules: build 1`] = ` Array [ "index.css", "index.html", "index.js", ] `; exports[`snapshots fixtures/with-css-modules: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.module.css.cssjs?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-css-modules: mirror 1`] = ` Array [ "_hmr_client.js", "file.js", "file.module.css.cssjs", "index.html", "main.js", ] `; exports[`snapshots fixtures/with-css-modules: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/file.module.css.cssjs?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/file.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/file.js?namespace=file&t=0", }, Object { "importPath": "/file.module.css.cssjs?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/file.module.css.cssjs?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/with-css-modules/file.js ================================================ export const text = 'This has been made in 2020, what a shitty year' ================================================ FILE: fixtures/with-css-modules/file.module.css ================================================ .textLarge { font-size: 100px; } ================================================ FILE: fixtures/with-css-modules/index.html ================================================ ================================================ FILE: fixtures/with-css-modules/main.js ================================================ import classNames from './file.module.css' import { text } from './file' console.log({ classNames }) const node = document.createElement('pre') node.appendChild(document.createTextNode(text)) document.body.appendChild(node) if (import.meta.hot) { import.meta.hot.accept() } ================================================ FILE: fixtures/with-custom-assets/__mirror__/file.fakecss.cssjs ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); const css = "body {\n background: blue;\n}"; if (typeof document !== 'undefined') { import.meta.hot.accept(); import.meta.hot.dispose(() => { document.head.removeChild(styleEl); }); const styleEl = document.createElement("style"); const codeEl = document.createTextNode(css); styleEl.type = 'text/css'; styleEl.appendChild(codeEl); document.head.appendChild(styleEl); } export default css ================================================ FILE: fixtures/with-custom-assets/__mirror__/file.fakejs ================================================ export default "i am file.fakejs"; ================================================ FILE: fixtures/with-custom-assets/__mirror__/file.js ================================================ import dat from '/file.dat?namespace=file&t=0' import svg from '/file.svg?namespace=file&t=0' import('/x.DAC?namespace=file&t=0').then(console.log) console.log({ dat }) const node = document.createElement('img') node.setAttribute('src', svg) document.body.appendChild(node) export const text = dat ================================================ FILE: fixtures/with-custom-assets/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-custom-assets/__mirror__/main.js ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); import { text } from '/file.js?namespace=file&t=0' import '/file.fakecss.cssjs?namespace=file&t=0' import fakejs from '/file.fakejs?namespace=file&t=0' const node = document.createElement('pre') node.appendChild(document.createTextNode(text + ' ' + fakejs)) document.body.appendChild(node) if (import.meta.hot) { import.meta.hot.accept() } ================================================ FILE: fixtures/with-custom-assets/__mirror__/x.DAC ================================================ export default "/x.DAC" ================================================ FILE: fixtures/with-custom-assets/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-custom-assets: build 1`] = ` Array [ "chunks/x-3I42H3S6.js", "file-3I42H3S6.dat", "index.css", "index.html", "index.js", "x-3I42H3S6.DAC", ] `; exports[`snapshots fixtures/with-custom-assets: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.dat?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.fakecss.cssjs?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.fakejs?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.svg?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/x.DAC?namespace=file&t=0": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-custom-assets: mirror 1`] = ` Array [ "_hmr_client.js", "file.dat", "file.fakecss.cssjs", "file.fakejs", "file.js", "file.svg", "index.html", "main.js", "x.DAC", ] `; exports[`snapshots fixtures/with-custom-assets: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/file.fakecss.cssjs?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/file.dat?namespace=file&t=0", "importer": "http://127.0.0.1:9000/file.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/file.dat?namespace=file&t=0", }, Object { "importPath": "/file.fakecss.cssjs?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/file.fakecss.cssjs?namespace=file&t=0", }, Object { "importPath": "/file.fakejs?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/file.fakejs?namespace=file&t=0", }, Object { "importPath": "/file.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/file.js?namespace=file&t=0", }, Object { "importPath": "/file.svg?namespace=file&t=0", "importer": "http://127.0.0.1:9000/file.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/file.svg?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, Object { "importPath": "/x.DAC?namespace=file&t=0", "importer": "http://127.0.0.1:9000/file.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/x.DAC?namespace=file&t=0", }, ] `; ================================================ FILE: fixtures/with-custom-assets/bundless.config.js ================================================ module.exports = { loader: { '.dat': 'file', '.DAC': 'file', '.svg': 'dataurl', '.fakejs': 'ts', '.fakecss': 'css', }, } ================================================ FILE: fixtures/with-custom-assets/file.fakecss ================================================ body { background: blue; } ================================================ FILE: fixtures/with-custom-assets/file.fakejs ================================================ export default 'i am file.fakejs' export type x = string ================================================ FILE: fixtures/with-custom-assets/file.js ================================================ import dat from './file.dat' import svg from './file.svg' import('./x.DAC').then(console.log) console.log({ dat }) const node = document.createElement('img') node.setAttribute('src', svg) document.body.appendChild(node) export const text = dat ================================================ FILE: fixtures/with-custom-assets/index.html ================================================ ================================================ FILE: fixtures/with-custom-assets/main.js ================================================ import { text } from './file' import './file.fakecss' import fakejs from './file.fakejs' const node = document.createElement('pre') node.appendChild(document.createTextNode(text + ' ' + fakejs)) document.body.appendChild(node) if (import.meta.hot) { import.meta.hot.accept() } ================================================ FILE: fixtures/with-custom-assets/x.DAC ================================================ ================================================ FILE: fixtures/with-dependencies/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-dependencies/__mirror__/main.js ================================================ import slash_cjsImport0 from "/.bundless/node_modules/slash/index.js.js?namespace=file&t=0"; const slash = slash_cjsImport0 && slash_cjsImport0.__esModule ? slash_cjsImport0.default : slash_cjsImport0; console.log('Hello world!') const text = slash('.\\path\\to\\something') var node = document.createElement('LI') var textnode = document.createTextNode(text) node.appendChild(textnode) document.body.appendChild(node) ================================================ FILE: fixtures/with-dependencies/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-dependencies: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-dependencies: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/.bundless/node_modules/slash/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-dependencies: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.js", ] `; exports[`snapshots fixtures/with-dependencies: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/.bundless/node_modules/slash/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/slash/index.js.js?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/with-dependencies/index.html ================================================ ================================================ FILE: fixtures/with-dependencies/main.js ================================================ import slash from 'slash' console.log('Hello world!') const text = slash('.\\path\\to\\something') var node = document.createElement('LI') var textnode = document.createTextNode(text) node.appendChild(textnode) document.body.appendChild(node) ================================================ FILE: fixtures/with-dependencies-assets/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-dependencies-assets/__mirror__/main.js ================================================ import tailwindcss_dist_base_css_cjsImport0 from "/.bundless/node_modules/tailwindcss/dist/base.css.js?namespace=file&t=0"; console.log('Hello world!!!!!') const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode('hello'))) ================================================ FILE: fixtures/with-dependencies-assets/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-dependencies-assets: build 1`] = ` Array [ "index.css", "index.html", "index.js", ] `; exports[`snapshots fixtures/with-dependencies-assets: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/.bundless/node_modules/tailwindcss/dist/base.css.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-dependencies-assets: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.js", ] `; exports[`snapshots fixtures/with-dependencies-assets: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/.bundless/node_modules/tailwindcss/dist/base.css.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/.bundless/node_modules/tailwindcss/dist/base.css.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/tailwindcss/dist/base.css.js?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/with-dependencies-assets/index.html ================================================ ================================================ FILE: fixtures/with-dependencies-assets/main.js ================================================ import 'tailwindcss/dist/base.css' console.log('Hello world!!!!!') const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode('hello'))) ================================================ FILE: fixtures/with-dependencies-assets/package.json ================================================ { "name": "fixtures-with-dependencies-assets", "version": "0.0.0", "main": "main.js", "private": true, "dependencies": { "tailwindcss": "^1.7.2" } } ================================================ FILE: fixtures/with-dynamic-import/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-dynamic-import/__mirror__/main.js ================================================ import('/text.js?namespace=file&t=0').then(({ text }) => { var node = document.createElement('LI') var textNode = document.createTextNode(text) node.appendChild(textNode) document.body.appendChild(node) }) ================================================ FILE: fixtures/with-dynamic-import/__mirror__/text.js ================================================ export const text = 'CIAO!' ================================================ FILE: fixtures/with-dynamic-import/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-dynamic-import: build 1`] = ` Array [ "chunks/text-3I42H3S6.js", "index.html", "index.js", ] `; exports[`snapshots fixtures/with-dynamic-import: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/text.js?namespace=file&t=0": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-dynamic-import: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.js", "text.js", ] `; exports[`snapshots fixtures/with-dynamic-import: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, Object { "importPath": "/text.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/text.js?namespace=file&t=0", }, ] `; ================================================ FILE: fixtures/with-dynamic-import/index.html ================================================ ================================================ FILE: fixtures/with-dynamic-import/main.js ================================================ import('./text').then(({ text }) => { var node = document.createElement('LI') var textNode = document.createTextNode(text) node.appendChild(textNode) document.body.appendChild(node) }) ================================================ FILE: fixtures/with-dynamic-import/text.js ================================================ export const text = 'CIAO!' ================================================ FILE: fixtures/with-env-plugin/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-env-plugin/__mirror__/main.tsx ================================================ const node = document.createElement("pre"); node.appendChild(document.createTextNode(process.env.SOME_VAR)); document.body.appendChild(node); console.log(process.env.SOME_VAR); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLWVudi1wbHVnaW4vbWFpbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGpzeCBqc3hcblxuY29uc3Qgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpXG5ub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHByb2Nlc3MuZW52LlNPTUVfVkFSKSlcbmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9kZSlcblxuY29uc29sZS5sb2cocHJvY2Vzcy5lbnYuU09NRV9WQVIpXG4iXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxTQUFTLGNBQWM7QUFDcEMsS0FBSyxZQUFZLFNBQVMsZUFBZSxRQUFRLElBQUk7QUFDckQsU0FBUyxLQUFLLFlBQVk7QUFFMUIsUUFBUSxJQUFJLFFBQVEsSUFBSTsiLCJuYW1lcyI6W119 ================================================ FILE: fixtures/with-env-plugin/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-env-plugin: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-env-plugin: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.tsx?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-env-plugin: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.tsx", ] `; exports[`snapshots fixtures/with-env-plugin: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/main.tsx?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.tsx?namespace=file", }, ] `; ================================================ FILE: fixtures/with-env-plugin/bundless.config.js ================================================ const path = require('path') const { EnvPlugin } = require('@bundless/cli/dist/plugins') module.exports = { build: { minify: false, }, plugins: [ EnvPlugin({ envFiles: ['envfile'], }), ], } ================================================ FILE: fixtures/with-env-plugin/envfile ================================================ SOME_VAR="ciao" ================================================ FILE: fixtures/with-env-plugin/index.html ================================================ ================================================ FILE: fixtures/with-env-plugin/main.tsx ================================================ // @jsx jsx const node = document.createElement('pre') node.appendChild(document.createTextNode(process.env.SOME_VAR)) document.body.appendChild(node) console.log(process.env.SOME_VAR) ================================================ FILE: fixtures/with-esbuild-plugins/__mirror__/fake.js ================================================ export const text = './fake.js' ================================================ FILE: fixtures/with-esbuild-plugins/__mirror__/file.gql ================================================ export default "interface Node {\n x: String\n y: String\n}" ================================================ FILE: fixtures/with-esbuild-plugins/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-esbuild-plugins/__mirror__/main.js ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); import schema from '/file.gql?namespace=file&t=0' import { text } from '/fake.js?namespace=file&t=0' const node = document.createElement('pre') node.appendChild(document.createTextNode(schema)) node.appendChild(document.createTextNode('\n' + text)) document.body.appendChild(node) if (import.meta.hot) { import.meta.hot.accept() import.meta.hot.dispose(() => { document.body.removeChild(node) }) } ================================================ FILE: fixtures/with-esbuild-plugins/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-esbuild-plugins: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-esbuild-plugins: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/fake.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/file.gql?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-esbuild-plugins: mirror 1`] = ` Array [ "_hmr_client.js", "fake.js", "file.gql", "index.html", "main.js", ] `; exports[`snapshots fixtures/with-esbuild-plugins: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/fake.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/fake.js?namespace=file&t=0", }, Object { "importPath": "/file.gql?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/file.gql?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/with-esbuild-plugins/bundless.config.js ================================================ const fs = require('fs') const path = require('path') /** * @type { import('@bundless/cli').Config } */ module.exports = { plugins: [ { name: 'onLoad', setup({ onLoad }) { onLoad({ filter: /\.gql/ }, (arg) => { return { loader: 'js', contents: `export default ${JSON.stringify( fs.readFileSync(arg.path).toString(), )}`, } }) }, }, { name: 'onResolve', setup({ onResolve }) { onResolve({ filter: /\.fake/ }, (arg) => { return { path: path.resolve(__dirname, 'fake.js'), } }) }, }, ], } ================================================ FILE: fixtures/with-esbuild-plugins/fake.js ================================================ export const text = './fake.js' ================================================ FILE: fixtures/with-esbuild-plugins/file.gql ================================================ interface Node { x: String y: String } ================================================ FILE: fixtures/with-esbuild-plugins/index.html ================================================ ================================================ FILE: fixtures/with-esbuild-plugins/main.js ================================================ import schema from './file.gql' import { text } from './file.fake' const node = document.createElement('pre') node.appendChild(document.createTextNode(schema)) node.appendChild(document.createTextNode('\n' + text)) document.body.appendChild(node) if (import.meta.hot) { import.meta.hot.accept() import.meta.hot.dispose(() => { document.body.removeChild(node) }) } ================================================ FILE: fixtures/with-imports/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-imports/__mirror__/main.js ================================================ import { text } from '/text.js?namespace=file&t=0' console.log('Hello world!!!!!') const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) ================================================ FILE: fixtures/with-imports/__mirror__/text.js ================================================ export const text = 'CIAO!' ================================================ FILE: fixtures/with-imports/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-imports: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-imports: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/text.js?namespace=file&t=0": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-imports: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.js", "text.js", ] `; exports[`snapshots fixtures/with-imports: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, Object { "importPath": "/text.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/text.js?namespace=file&t=0", }, ] `; ================================================ FILE: fixtures/with-imports/index.html ================================================ ================================================ FILE: fixtures/with-imports/main.js ================================================ import { text } from './text' console.log('Hello world!!!!!') const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) ================================================ FILE: fixtures/with-imports/text.js ================================================ export const text = 'CIAO!' ================================================ FILE: fixtures/with-json/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-json/__mirror__/main.js ================================================ import json from '/text.json?namespace=file&t=0' const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(json.text))) ================================================ FILE: fixtures/with-json/__mirror__/text.json ================================================ var text = "Hello World!"; var text_default = { text }; export { text_default as default, text }; ================================================ FILE: fixtures/with-json/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-json: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-json: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/text.json?namespace=file&t=0": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-json: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.js", "text.json", ] `; exports[`snapshots fixtures/with-json: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, Object { "importPath": "/text.json?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/text.json?namespace=file&t=0", }, ] `; ================================================ FILE: fixtures/with-json/index.html ================================================ ================================================ FILE: fixtures/with-json/main.js ================================================ import json from './text.json' const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(json.text))) ================================================ FILE: fixtures/with-json/text.json ================================================ { "text": "Hello World!" } ================================================ FILE: fixtures/with-linked-workspace/__mirror__/__..__/with-many-dependencies/main.js ================================================ import slash_cjsImport0 from "/.bundless/node_modules/slash/index.js.js?namespace=file&t=0"; const slash = slash_cjsImport0 && slash_cjsImport0.__esModule ? slash_cjsImport0.default : slash_cjsImport0; import react_cjsImport1 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const React = react_cjsImport1 && react_cjsImport1.__esModule ? react_cjsImport1.default : react_cjsImport1; import { useState } from '/.bundless/node_modules/preact/hooks/dist/hooks.module.js.js?namespace=file&t=0' import reactDom_cjsImport3 from "/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0"; const ReactDom = reactDom_cjsImport3 && reactDom_cjsImport3.__esModule ? reactDom_cjsImport3.default : reactDom_cjsImport3; console.log('Hello world!') console.log(slash) console.log(React.useState) console.log(useState) console.log(ReactDom.render) export const variable = 10 ================================================ FILE: fixtures/with-linked-workspace/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-linked-workspace/__mirror__/main.js ================================================ import { variable } from '/__..__/with-many-dependencies/main.js?namespace=file&t=0' const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(variable))) ================================================ FILE: fixtures/with-linked-workspace/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-linked-workspace: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-linked-workspace: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/preact/hooks/dist/hooks.module.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/slash/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/__..__/with-many-dependencies/main.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-linked-workspace: mirror 1`] = ` Array [ "__..__/with-many-dependencies/main.js", "_hmr_client.js", "index.html", "main.js", ] `; exports[`snapshots fixtures/with-linked-workspace: traverse result 1`] = ` Array [ Object { "importPath": "/__..__/with-many-dependencies/main.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/__..__/with-many-dependencies/main.js?namespace=file&t=0", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/preact/hooks/dist/hooks.module.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/slash/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/preact/hooks/dist/hooks.module.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/__..__/with-many-dependencies/main.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/preact/hooks/dist/hooks.module.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/__..__/with-many-dependencies/main.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/__..__/with-many-dependencies/main.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/slash/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/__..__/with-many-dependencies/main.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/slash/index.js.js?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/with-linked-workspace/index.html ================================================ ================================================ FILE: fixtures/with-linked-workspace/main.js ================================================ import { variable } from 'fixtures-with-many-dependencies' const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(variable))) ================================================ FILE: fixtures/with-linked-workspace/package.json ================================================ { "name": "fixtures-with-linked-workspace", "version": "0.0.0", "private": true, "dependencies": { "fixtures-with-many-dependencies": "*" } } ================================================ FILE: fixtures/with-links/__mirror__/index.html ================================================

My First Heading

My first paragraph.

================================================ FILE: fixtures/with-links/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-links: build 1`] = ` Array [ "index.html", "index.js", "manifest.json", "styles1.css", ] `; exports[`snapshots fixtures/with-links: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", } `; exports[`snapshots fixtures/with-links: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", ] `; exports[`snapshots fixtures/with-links: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, ] `; ================================================ FILE: fixtures/with-links/index.html ================================================

My First Heading

My first paragraph.

================================================ FILE: fixtures/with-links/public/manifest.json ================================================ {} ================================================ FILE: fixtures/with-links/public/styles1.css ================================================ ================================================ FILE: fixtures/with-links/styles2.css ================================================ ================================================ FILE: fixtures/with-many-dependencies/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-many-dependencies/__mirror__/main.js ================================================ import slash_cjsImport0 from "/.bundless/node_modules/slash/index.js.js?namespace=file&t=0"; const slash = slash_cjsImport0 && slash_cjsImport0.__esModule ? slash_cjsImport0.default : slash_cjsImport0; import react_cjsImport1 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const React = react_cjsImport1 && react_cjsImport1.__esModule ? react_cjsImport1.default : react_cjsImport1; import { useState } from '/.bundless/node_modules/preact/hooks/dist/hooks.module.js.js?namespace=file&t=0' import reactDom_cjsImport3 from "/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0"; const ReactDom = reactDom_cjsImport3 && reactDom_cjsImport3.__esModule ? reactDom_cjsImport3.default : reactDom_cjsImport3; console.log('Hello world!') console.log(slash) console.log(React.useState) console.log(useState) console.log(ReactDom.render) export const variable = 10 ================================================ FILE: fixtures/with-many-dependencies/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-many-dependencies: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-many-dependencies: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/preact/hooks/dist/hooks.module.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/slash/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-many-dependencies: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.js", ] `; exports[`snapshots fixtures/with-many-dependencies: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/preact/hooks/dist/hooks.module.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/slash/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-EB4LBFOO.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-NDNEY6GM.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/preact/hooks/dist/hooks.module.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/preact/hooks/dist/hooks.module.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react-dom/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/slash/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/slash/index.js.js?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/with-many-dependencies/bundless.config.js ================================================ module.exports = { build: { minify: false, }, } ================================================ FILE: fixtures/with-many-dependencies/index.html ================================================ ================================================ FILE: fixtures/with-many-dependencies/main.js ================================================ import slash from 'slash' import React from 'react' import { useState } from 'preact/hooks' import ReactDom from 'react-dom' console.log('Hello world!') console.log(slash) console.log(React.useState) console.log(useState) console.log(ReactDom.render) export const variable = 10 ================================================ FILE: fixtures/with-many-dependencies/package.json ================================================ { "name": "fixtures-with-many-dependencies", "version": "0.0.0", "main": "main.js", "private": true, "dependencies": { "react": "experimental", "slash": "^3.0.0", "preact": "*", "react-dom": "experimental" } } ================================================ FILE: fixtures/with-many-entries/__mirror__/a/index.html ================================================ ================================================ FILE: fixtures/with-many-entries/__mirror__/a/main.css.cssjs ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); const css = "body {\n background: lightcoral;\n}\n"; if (typeof document !== 'undefined') { import.meta.hot.accept(); import.meta.hot.dispose(() => { document.head.removeChild(styleEl); }); const styleEl = document.createElement("style"); const codeEl = document.createTextNode(css); styleEl.type = 'text/css'; styleEl.appendChild(codeEl); document.head.appendChild(styleEl); } export default css ================================================ FILE: fixtures/with-many-entries/__mirror__/a/main.js ================================================ import '/a/main.css.cssjs?namespace=file&t=0' import '/common.css.cssjs?namespace=file&t=0' const text = 'A' const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) ================================================ FILE: fixtures/with-many-entries/__mirror__/b/index.html ================================================ ================================================ FILE: fixtures/with-many-entries/__mirror__/b/main.js ================================================ import '/common.css.cssjs?namespace=file&t=0' import { text } from '/b/text.js?namespace=file&t=0' const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) ================================================ FILE: fixtures/with-many-entries/__mirror__/b/text.js ================================================ export const text = 'B' ================================================ FILE: fixtures/with-many-entries/__mirror__/common.css.cssjs ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); const css = "a {\n background: blue;\n}\n"; if (typeof document !== 'undefined') { import.meta.hot.accept(); import.meta.hot.dispose(() => { document.head.removeChild(styleEl); }); const styleEl = document.createElement("style"); const codeEl = document.createTextNode(css); styleEl.type = 'text/css'; styleEl.appendChild(codeEl); document.head.appendChild(styleEl); } export default css ================================================ FILE: fixtures/with-many-entries/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-many-entries: build 1`] = ` Array [ "a/index.css", "a/index.html", "a/index.js", "b/index.html", "b/index.js", "chunks/chunk-6CZZJFZN.css", "chunks/chunk-UNICZJVM.js", ] `; exports[`snapshots fixtures/with-many-entries: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/a/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/a/main.css.cssjs?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/a/main.js?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/b/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/b/main.js?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/b/text.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/common.css.cssjs?namespace=file&t=0": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-many-entries: mirror 1`] = ` Array [ "_hmr_client.js", "a/index.html", "a/main.css.cssjs", "a/main.js", "b/index.html", "b/main.js", "b/text.js", "common.css.cssjs", ] `; exports[`snapshots fixtures/with-many-entries: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/a/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/a/main.css.cssjs?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/b/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/common.css.cssjs?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/common.css.cssjs?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/a/main.css.cssjs?namespace=file&t=0", "importer": "http://127.0.0.1:9000/a/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/a/main.css.cssjs?namespace=file&t=0", }, Object { "importPath": "/a/main.js?namespace=file", "importer": "http://127.0.0.1:9000/a/index.html", "resolvedImportPath": "http://127.0.0.1:9000/a/main.js?namespace=file", }, Object { "importPath": "/b/main.js?namespace=file", "importer": "http://127.0.0.1:9000/b/index.html", "resolvedImportPath": "http://127.0.0.1:9000/b/main.js?namespace=file", }, Object { "importPath": "/b/text.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/b/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/b/text.js?namespace=file&t=0", }, Object { "importPath": "/common.css.cssjs?namespace=file&t=0", "importer": "http://127.0.0.1:9000/a/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/common.css.cssjs?namespace=file&t=0", }, Object { "importPath": "/common.css.cssjs?namespace=file&t=0", "importer": "http://127.0.0.1:9000/b/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/common.css.cssjs?namespace=file&t=0", }, ] `; ================================================ FILE: fixtures/with-many-entries/a/index.html ================================================ ================================================ FILE: fixtures/with-many-entries/a/main.css ================================================ body { background: lightcoral; } ================================================ FILE: fixtures/with-many-entries/a/main.js ================================================ import './main.css' import '../common.css' const text = 'A' const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) ================================================ FILE: fixtures/with-many-entries/b/index.html ================================================ ================================================ FILE: fixtures/with-many-entries/b/main.js ================================================ import '../common.css' import { text } from './text' const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) ================================================ FILE: fixtures/with-many-entries/b/text.js ================================================ export const text = 'B' ================================================ FILE: fixtures/with-many-entries/bundless.config.js ================================================ /** * @type { import('@bundless/cli').Config } */ const config = { entries: ['a/index.html', 'b/index.html'], } module.exports = config ================================================ FILE: fixtures/with-many-entries/common.css ================================================ a { background: blue; } ================================================ FILE: fixtures/with-node-polyfills/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-node-polyfills/__mirror__/main.js ================================================ import path from '/path?namespace=node-builtins' console.log({ path }) const text = path.resolve('something') const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) ================================================ FILE: fixtures/with-node-polyfills/__mirror__/path ================================================ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to permit // persons to whom the Software is furnished to do so, subject to the // following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. // resolves . and .. elements in a path array with directory names there // must be no slashes, empty elements, or device names (c:\) in the array // (so also no leading and trailing slashes - it does not distinguish // relative and absolute paths) function normalizeArray(parts, allowAboveRoot) { // if the path tries to go above the root, `up` ends up > 0 var up = 0; for (var i = parts.length - 1; i >= 0; i--) { var last = parts[i]; if (last === '.') { parts.splice(i, 1); } else if (last === '..') { parts.splice(i, 1); up++; } else if (up) { parts.splice(i, 1); up--; } } // if the path is allowed to go above the root, restore leading ..s if (allowAboveRoot) { for (; up--; up) { parts.unshift('..'); } } return parts; } // Split a filename into [root, dir, basename, ext], unix version // 'root' is just a slash, or nothing. var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; var splitPath = function(filename) { return splitPathRe.exec(filename).slice(1); }; // path.resolve([from ...], to) // posix version export function resolve() { var resolvedPath = '', resolvedAbsolute = false; for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { var path = (i >= 0) ? arguments[i] : '/'; // Skip empty and invalid entries if (typeof path !== 'string') { throw new TypeError('Arguments to path.resolve must be strings'); } else if (!path) { continue; } resolvedPath = path + '/' + resolvedPath; resolvedAbsolute = path.charAt(0) === '/'; } // At this point the path should be resolved to a full absolute path, but // handle relative paths to be safe (might happen when process.cwd() fails) // Normalize the path resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { return !!p; }), !resolvedAbsolute).join('/'); return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; }; // path.normalize(path) // posix version export function normalize(path) { var isPathAbsolute = isAbsolute(path), trailingSlash = substr(path, -1) === '/'; // Normalize the path path = normalizeArray(filter(path.split('/'), function(p) { return !!p; }), !isPathAbsolute).join('/'); if (!path && !isPathAbsolute) { path = '.'; } if (path && trailingSlash) { path += '/'; } return (isPathAbsolute ? '/' : '') + path; }; // posix version export function isAbsolute(path) { return path.charAt(0) === '/'; } // posix version export function join() { var paths = Array.prototype.slice.call(arguments, 0); return normalize(filter(paths, function(p, index) { if (typeof p !== 'string') { throw new TypeError('Arguments to path.join must be strings'); } return p; }).join('/')); } // path.relative(from, to) // posix version export function relative(from, to) { from = resolve(from).substr(1); to = resolve(to).substr(1); function trim(arr) { var start = 0; for (; start < arr.length; start++) { if (arr[start] !== '') break; } var end = arr.length - 1; for (; end >= 0; end--) { if (arr[end] !== '') break; } if (start > end) return []; return arr.slice(start, end - start + 1); } var fromParts = trim(from.split('/')); var toParts = trim(to.split('/')); var length = Math.min(fromParts.length, toParts.length); var samePartsLength = length; for (var i = 0; i < length; i++) { if (fromParts[i] !== toParts[i]) { samePartsLength = i; break; } } var outputParts = []; for (var i = samePartsLength; i < fromParts.length; i++) { outputParts.push('..'); } outputParts = outputParts.concat(toParts.slice(samePartsLength)); return outputParts.join('/'); } export var sep = '/'; export var delimiter = ':'; export function dirname(path) { var result = splitPath(path), root = result[0], dir = result[1]; if (!root && !dir) { // No dirname whatsoever return '.'; } if (dir) { // It has a dirname, strip trailing slash dir = dir.substr(0, dir.length - 1); } return root + dir; } export function basename(path, ext) { var f = splitPath(path)[2]; // TODO: make this comparison case-insensitive on windows? if (ext && f.substr(-1 * ext.length) === ext) { f = f.substr(0, f.length - ext.length); } return f; } export function extname(path) { return splitPath(path)[3]; } export default { extname: extname, basename: basename, dirname: dirname, sep: sep, delimiter: delimiter, relative: relative, join: join, isAbsolute: isAbsolute, normalize: normalize, resolve: resolve }; function filter (xs, f) { if (xs.filter) return xs.filter(f); var res = []; for (var i = 0; i < xs.length; i++) { if (f(xs[i], i, xs)) res.push(xs[i]); } return res; } // String.prototype.substr - negative index don't work in IE8 var substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) { return str.substr(start, len) } : function (str, start, len) { if (start < 0) start = str.length + start; return str.substr(start, len); } ; ================================================ FILE: fixtures/with-node-polyfills/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-node-polyfills: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-node-polyfills: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/path?namespace=node-builtins": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-node-polyfills: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.js", "path", ] `; exports[`snapshots fixtures/with-node-polyfills: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, Object { "importPath": "/path?namespace=node-builtins", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/path?namespace=node-builtins", }, ] `; ================================================ FILE: fixtures/with-node-polyfills/index.html ================================================ ================================================ FILE: fixtures/with-node-polyfills/main.js ================================================ import path from 'path' console.log({ path }) const text = path.resolve('something') const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) ================================================ FILE: fixtures/with-sourcemaps/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-sourcemaps/__mirror__/js.js ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); import react_cjsImport0 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const React = react_cjsImport0 && react_cjsImport0.__esModule ? react_cjsImport0.default : react_cjsImport0; const createElement = react_cjsImport0["createElement"]; import react_cjsImport1 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const useState = react_cjsImport1["useState"]; import { text } from '/text.js?namespace=file&t=0' console.log('Hello world!!!!!') const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) React.createElement('div') function Comp() { const [] = useState() return createElement('div', {}) } Comp // throw new Error('I should be on line 20') if (import.meta.hot) { import.meta.hot.accept() } ================================================ FILE: fixtures/with-sourcemaps/__mirror__/main.ts ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); import react_cjsImport0 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const React = react_cjsImport0 && react_cjsImport0.__esModule ? react_cjsImport0.default : react_cjsImport0; const createElement = react_cjsImport0["createElement"];; import react_cjsImport1 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const useState = react_cjsImport1["useState"];; import "/js.js?namespace=file&t=0"; import {text} from "/text.js?namespace=file&t=0"; import sourceMapSupport_cjsImport4 from "/.bundless/node_modules/source-map-support/source-map-support.js.js?namespace=file&t=0"; const so = sourceMapSupport_cjsImport4 && sourceMapSupport_cjsImport4.__esModule ? sourceMapSupport_cjsImport4.default : sourceMapSupport_cjsImport4;; so.getErrorSource; console.log("Hello world!!!!!"); const node = document.createElement("pre"); document.body.appendChild(node.appendChild(document.createTextNode(text))); React.createElement("div"); function Comp() { const [] = useState(); return createElement("div", {}); } Comp; console.log(new Error("I should be on line 22")); throw new Error("I should be on line 24"); if (import.meta.hot) { import.meta.hot.accept(); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLXNvdXJjZW1hcHMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCAnLi9qcy5qcydcbmltcG9ydCB7IHRleHQgfSBmcm9tICcuL3RleHQnXG5pbXBvcnQgc28gZnJvbSAnc291cmNlLW1hcC1zdXBwb3J0J1xuc28uZ2V0RXJyb3JTb3VyY2VcblxuY29uc29sZS5sb2coJ0hlbGxvIHdvcmxkISEhISEnKVxuXG5jb25zdCBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJylcbmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSkpXG5cblJlYWN0LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG5cbmZ1bmN0aW9uIENvbXAoKSB7XG4gICAgY29uc3QgW10gPSB1c2VTdGF0ZSgpXG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHt9KVxufVxuXG5Db21wXG5cbmNvbnNvbGUubG9nKG5ldyBFcnJvcignSSBzaG91bGQgYmUgb24gbGluZSAyMicpKVxuXG50aHJvdyBuZXcgRXJyb3IoJ0kgc2hvdWxkIGJlIG9uIGxpbmUgMjQnKVxuXG5cbmlmIChpbXBvcnQubWV0YS5ob3QpIHtcbiAgICBpbXBvcnQubWV0YS5ob3QuYWNjZXB0KClcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFFSCxRQUFRLElBQUk7QUFFWixNQUFNLE9BQU8sU0FBUyxjQUFjO0FBQ3BDLFNBQVMsS0FBSyxZQUFZLEtBQUssWUFBWSxTQUFTLGVBQWU7QUFFbkUsTUFBTSxjQUFjO0FBRXBCLGdCQUFnQjtBQUNaLFFBQU0sS0FBSztBQUNYLFNBQU8sY0FBYyxPQUFPO0FBQUE7QUFHaEM7QUFFQSxRQUFRLElBQUksSUFBSSxNQUFNO0FBRXRCLE1BQU0sSUFBSSxNQUFNO0FBR2hCLElBQUksWUFBWSxLQUFLO0FBQ2pCLGNBQVksSUFBSTtBQUFBOyIsIm5hbWVzIjpbXX0= ================================================ FILE: fixtures/with-sourcemaps/__mirror__/text.js ================================================ export const text = 'CIAO!' ================================================ FILE: fixtures/with-sourcemaps/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-sourcemaps: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-sourcemaps: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-WGKZP7G7.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/source-map-support/source-map-support.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/main.ts?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/text.js?namespace=file&t=0": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-sourcemaps: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "js.js", "main.ts", "text.js", ] `; exports[`snapshots fixtures/with-sourcemaps: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/main.ts?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-WGKZP7G7.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-WGKZP7G7.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-WGKZP7G7.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-WGKZP7G7.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-WGKZP7G7.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/source-map-support/source-map-support.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-WGKZP7G7.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.ts?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.ts?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/source-map-support/source-map-support.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.ts?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/source-map-support/source-map-support.js.js?namespace=file&t=0", }, Object { "importPath": "/js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.ts?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/js.js?namespace=file&t=0", }, Object { "importPath": "/main.ts?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.ts?namespace=file", }, Object { "importPath": "/text.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/text.js?namespace=file&t=0", }, Object { "importPath": "/text.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.ts?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/text.js?namespace=file&t=0", }, ] `; ================================================ FILE: fixtures/with-sourcemaps/index.html ================================================ ================================================ FILE: fixtures/with-sourcemaps/js.js ================================================ import React, { createElement } from 'react' import { useState } from 'react' import { text } from './text' console.log('Hello world!!!!!') const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) React.createElement('div') function Comp() { const [] = useState() return createElement('div', {}) } Comp // throw new Error('I should be on line 20') if (import.meta.hot) { import.meta.hot.accept() } ================================================ FILE: fixtures/with-sourcemaps/main.ts ================================================ import React, { createElement } from 'react' import { useState } from 'react' import './js.js' import { text } from './text' import so from 'source-map-support' so.getErrorSource console.log('Hello world!!!!!') const node = document.createElement('pre') document.body.appendChild(node.appendChild(document.createTextNode(text))) React.createElement('div') function Comp() { const [] = useState() return createElement('div', {}) } Comp console.log(new Error('I should be on line 22')) throw new Error('I should be on line 24') if (import.meta.hot) { import.meta.hot.accept() } ================================================ FILE: fixtures/with-sourcemaps/package.json ================================================ { "name": "fixture-with-sourcemaps", "version": "0.0.0", "main": "main.js", "private": true, "dependencies": { "react": "experimental" } } ================================================ FILE: fixtures/with-sourcemaps/text.js ================================================ export const text = 'CIAO!' ================================================ FILE: fixtures/with-svelte/App.svelte ================================================
counts: {count}
================================================ FILE: fixtures/with-svelte/__mirror__/App.svelte ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); import "/App.svelte.css?namespace=file&t=0"; /* fixtures/with-svelte/App.svelte generated by Svelte v3.32.1 */ import { SvelteComponentDev, add_location, append_dev, attr_dev, detach_dev, dispatch_dev, element, init, insert_dev, listen_dev, noop, run_all, safe_not_equal, set_data_dev, space, text, validate_slots } from "/.bundless/node_modules/svelte/internal/index.mjs.js?namespace=file&t=0"; const file = "fixtures/with-svelte/App.svelte"; function create_fragment(ctx) { let div; let t0; let t1; let t2; let button0; let t4; let button1; let mounted; let dispose; const block = { c: function create() { div = element("div"); t0 = text("counts: "); t1 = text(/*count*/ ctx[0]); t2 = space(); button0 = element("button"); button0.textContent = "increment"; t4 = space(); button1 = element("button"); button1.textContent = "decrement"; attr_dev(div, "class", "svelte-1x83jhu"); add_location(div, file, 5, 0, 114); add_location(button0, file, 6, 0, 141); add_location(button1, file, 7, 0, 189); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); }, m: function mount(target, anchor) { insert_dev(target, div, anchor); append_dev(div, t0); append_dev(div, t1); insert_dev(target, t2, anchor); insert_dev(target, button0, anchor); insert_dev(target, t4, anchor); insert_dev(target, button1, anchor); if (!mounted) { dispose = [ listen_dev(button0, "click", /*increment*/ ctx[1], false, false, false), listen_dev(button1, "click", /*decrement*/ ctx[2], false, false, false) ]; mounted = true; } }, p: function update(ctx, [dirty]) { if (dirty & /*count*/ 1) set_data_dev(t1, /*count*/ ctx[0]); }, i: noop, o: noop, d: function destroy(detaching) { if (detaching) detach_dev(div); if (detaching) detach_dev(t2); if (detaching) detach_dev(button0); if (detaching) detach_dev(t4); if (detaching) detach_dev(button1); mounted = false; run_all(dispose); } }; dispatch_dev("SvelteRegisterBlock", { block, id: create_fragment.name, type: "component", source: "", ctx }); return block; } function instance($$self, $$props, $$invalidate) { let { $$slots: slots = {}, $$scope } = $$props; validate_slots("App", slots, []); let count = 0; let increment = () => $$invalidate(0, count++, count); let decrement = () => $$invalidate(0, count--, count); const writable_props = []; Object.keys($$props).forEach(key => { if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$") console.warn(` was created with unknown prop '${key}'`); }); $$self.$capture_state = () => ({ count, increment, decrement }); $$self.$inject_state = $$props => { if ("count" in $$props) $$invalidate(0, count = $$props.count); if ("increment" in $$props) $$invalidate(1, increment = $$props.increment); if ("decrement" in $$props) $$invalidate(2, decrement = $$props.decrement); }; if ($$props && "$$inject" in $$props) { $$self.$inject_state($$props.$$inject); } return [count, increment, decrement]; } class App extends SvelteComponentDev { constructor(options) { super(options); init(this, options, instance, create_fragment, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "App", options, id: create_fragment.name }); } } import * as ___SVELTE_HMR_HOT_API from '/.bundless/node_modules/svelte-hmr/runtime/hot-api-esm.js.js?namespace=file&t=0';import svelteHmr_runtime_proxyAdapterDom_js_cjsImport3 from "/.bundless/node_modules/svelte-hmr/runtime/proxy-adapter-dom.js.js?namespace=file&t=0"; const ___SVELTE_HMR_HOT_API_PROXY_ADAPTER = svelteHmr_runtime_proxyAdapterDom_js_cjsImport3 && svelteHmr_runtime_proxyAdapterDom_js_cjsImport3.__esModule ? svelteHmr_runtime_proxyAdapterDom_js_cjsImport3.default : svelteHmr_runtime_proxyAdapterDom_js_cjsImport3;;if (import.meta && import.meta.hot) { App = ___SVELTE_HMR_HOT_API.applyHmr({ m: import.meta, id: "/Users/morse/Documents/GitHub/espack/fixtures/with-svelte/App.svelte", hotOptions: {"preserveLocalState":true,"noPreserveStateKey":["@hmr:reset","@!hmr"],"preserveAllLocalStateKey":"@hmr:keep-all","preserveLocalStateKey":"@hmr:keep","noReload":false,"optimistic":true,"acceptNamedExports":true,"acceptAccessors":true,"injectCss":true,"cssEjectDelay":100,"native":false,"compatVite":false,"importAdapterName":"___SVELTE_HMR_HOT_API_PROXY_ADAPTER","absoluteImports":false,"noOverlay":true}, Component: App, ProxyAdapter: ___SVELTE_HMR_HOT_API_PROXY_ADAPTER, acceptable: true, cssId: "svelte-1x83jhu-style", nonCssHash: "564uli", }); } export default App; if (typeof add_css !== 'undefined' && !document.getElementById("svelte-1x83jhu-style")) add_css(); ================================================ FILE: fixtures/with-svelte/__mirror__/App.svelte.css ================================================ import * as __HMR__ from '/_hmr_client.js?namespace=hmr-client'; import.meta.hot = __HMR__.createHotContext(import.meta.url); const css = "div.svelte-1x83jhu{background-color:red}"; if (typeof document !== 'undefined') { import.meta.hot.accept(); import.meta.hot.dispose(() => { document.head.removeChild(styleEl); }); const styleEl = document.createElement("style"); const codeEl = document.createTextNode(css); styleEl.type = 'text/css'; styleEl.appendChild(codeEl); document.head.appendChild(styleEl); } export default css ================================================ FILE: fixtures/with-svelte/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-svelte/__mirror__/main.js ================================================ import App from '/App.svelte?namespace=file&t=0'; new App({ target: document.body }); ================================================ FILE: fixtures/with-svelte/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-svelte: build 1`] = ` Array [ "index.css", "index.html", "index.js", ] `; exports[`snapshots fixtures/with-svelte: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-2B7GGVDY.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/svelte-hmr/runtime/hot-api-esm.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/svelte-hmr/runtime/proxy-adapter-dom.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/.bundless/node_modules/svelte/internal/index.mjs.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/App.svelte.css?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/App.svelte?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-svelte: mirror 1`] = ` Array [ "_hmr_client.js", "App.svelte", "App.svelte.css", "index.html", "main.js", ] `; exports[`snapshots fixtures/with-svelte: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/App.svelte?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/App.svelte.css?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-2B7GGVDY.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/svelte-hmr/runtime/hot-api-esm.js.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-2B7GGVDY.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/chunks/chunk-2B7GGVDY.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/.bundless/node_modules/svelte/internal/index.mjs.js?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/chunks/chunk-2B7GGVDY.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/svelte-hmr/runtime/hot-api-esm.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/App.svelte?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/svelte-hmr/runtime/hot-api-esm.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/svelte-hmr/runtime/proxy-adapter-dom.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/App.svelte?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/svelte-hmr/runtime/proxy-adapter-dom.js.js?namespace=file&t=0", }, Object { "importPath": "/.bundless/node_modules/svelte/internal/index.mjs.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/App.svelte?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/svelte/internal/index.mjs.js?namespace=file&t=0", }, Object { "importPath": "/App.svelte?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/App.svelte?namespace=file&t=0", }, Object { "importPath": "/App.svelte.css?namespace=file&t=0", "importer": "http://127.0.0.1:9000/App.svelte?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/App.svelte.css?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/with-svelte/bundless.config.js ================================================ module.exports = { plugins: [require('@bundless/plugin-svelte').default({})], } ================================================ FILE: fixtures/with-svelte/index.html ================================================ ================================================ FILE: fixtures/with-svelte/main.js ================================================ import App from './App.svelte'; new App({ target: document.body }); ================================================ FILE: fixtures/with-svelte/package.json ================================================ { "name": "fixtures-with-svelte", "version": "0.0.0", "main": "main.js", "private": true, "dependencies": { "svelte": "^3.32.1" } } ================================================ FILE: fixtures/with-tsconfig-paths/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-tsconfig-paths/__mirror__/main.tsx ================================================ import {text} from "/text.ts?namespace=file&t=0"; import react_cjsImport1 from "/.bundless/node_modules/react/index.js.js?namespace=file&t=0"; const React = react_cjsImport1 && react_cjsImport1.__esModule ? react_cjsImport1.default : react_cjsImport1;; const node = document.createElement("pre"); node.appendChild(document.createTextNode(text)); document.body.appendChild(node); console.log(React.cloneElement); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLXRzY29uZmlnLXBhdGhzL21haW4udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEBqc3gganN4XG5pbXBvcnQgeyB0ZXh0IH0gZnJvbSAnQHZpcnR1YWwnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKVxubm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSlcbmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9kZSlcblxuY29uc29sZS5sb2coUmVhY3QuY2xvbmVFbGVtZW50KVxuIl0sIm1hcHBpbmdzIjoiQUFDQTtBQUNBO0FBRUEsTUFBTSxPQUFPLFNBQVMsY0FBYztBQUNwQyxLQUFLLFlBQVksU0FBUyxlQUFlO0FBQ3pDLFNBQVMsS0FBSyxZQUFZO0FBRTFCLFFBQVEsSUFBSSxNQUFNOyIsIm5hbWVzIjpbXX0= ================================================ FILE: fixtures/with-tsconfig-paths/__mirror__/text.ts ================================================ export const text = "virtual"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLXRzY29uZmlnLXBhdGhzL3RleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRleHQgPSAndmlydHVhbCdcbiJdLCJtYXBwaW5ncyI6IkFBQU8sYUFBTSxPQUFPOyIsIm5hbWVzIjpbXX0= ================================================ FILE: fixtures/with-tsconfig-paths/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-tsconfig-paths: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-tsconfig-paths: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.tsx?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/text.ts?namespace=file&t=0": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-tsconfig-paths: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.tsx", "text.ts", ] `; exports[`snapshots fixtures/with-tsconfig-paths: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/.bundless/node_modules/react/index.js.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.tsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/.bundless/node_modules/react/index.js.js?namespace=file&t=0", }, Object { "importPath": "/main.tsx?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.tsx?namespace=file", }, Object { "importPath": "/text.ts?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.tsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/text.ts?namespace=file&t=0", }, ] `; ================================================ FILE: fixtures/with-tsconfig-paths/bundless.config.js ================================================ const path = require('path') const { TsconfigPathsPlugin } = require('@bundless/plugin-tsconfig-paths') module.exports = { build: { minify: false, }, plugins: [ TsconfigPathsPlugin({ paths: { '@virtual': ['text.ts'], }, }), ], } ================================================ FILE: fixtures/with-tsconfig-paths/index.html ================================================ ================================================ FILE: fixtures/with-tsconfig-paths/main.tsx ================================================ // @jsx jsx import { text } from '@virtual' import React from 'react' const node = document.createElement('pre') node.appendChild(document.createTextNode(text)) document.body.appendChild(node) console.log(React.cloneElement) ================================================ FILE: fixtures/with-tsconfig-paths/package.json ================================================ { "name": "fixtures-with-tsconfig-paths", "version": "0.0.0", "private": true, "dependencies": {} } ================================================ FILE: fixtures/with-tsconfig-paths/text.ts ================================================ export const text = 'virtual' ================================================ FILE: fixtures/with-tsx/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-tsx/__mirror__/main.tsx ================================================ import {text} from "/text.ts?namespace=file&t=0"; function jsx(t, p, children) { var node = document.createElement(t); var textNode = document.createTextNode(children || p.children); node.appendChild(textNode); document.body.appendChild(node); } let x = /* @__PURE__ */ jsx("div", null, text); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLXRzeC9tYWluLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAanN4IGpzeFxuaW1wb3J0IHsgdGV4dCB9IGZyb20gJy4vdGV4dCdcblxuZnVuY3Rpb24ganN4KHQsIHAsIGNoaWxkcmVuKSB7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpXG4gICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY2hpbGRyZW4gfHwgcC5jaGlsZHJlbilcbiAgICBub2RlLmFwcGVuZENoaWxkKHRleHROb2RlKVxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9kZSlcbn1cblxuXG5sZXQgeCA9IDxkaXY+e3RleHR9PC9kaXY+XG4iXSwibWFwcGluZ3MiOiJBQUNBO0FBRUEsYUFBYSxHQUFHLEdBQUcsVUFBVTtBQUN6QixNQUFJLE9BQU8sU0FBUyxjQUFjO0FBQ2xDLE1BQUksV0FBVyxTQUFTLGVBQWUsWUFBWSxFQUFFO0FBQ3JELE9BQUssWUFBWTtBQUNqQixXQUFTLEtBQUssWUFBWTtBQUFBO0FBSTlCLElBQUksSUFBSSxvQkFBQyxPQUFELE1BQU07IiwibmFtZXMiOltdfQ== ================================================ FILE: fixtures/with-tsx/__mirror__/text.ts ================================================ import {allCaps} from "/utils.ts?namespace=file&t=0"; export const text = allCaps("works!"); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLXRzeC90ZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFsbENhcHMgfSBmcm9tICcuL3V0aWxzJ1xuZXhwb3J0IGNvbnN0IHRleHQgPSBhbGxDYXBzKCd3b3JrcyEnKVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNPLGFBQU0sT0FBTyxRQUFROyIsIm5hbWVzIjpbXX0= ================================================ FILE: fixtures/with-tsx/__mirror__/utils.ts ================================================ export function allCaps(x) { return x.toUpperCase(); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLXRzeC91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gYWxsQ2Fwcyh4OiBzdHJpbmcpIHtcbiAgICByZXR1cm4geC50b1VwcGVyQ2FzZSgpXG59XG4iXSwibWFwcGluZ3MiOiJBQUFPLHdCQUFpQixHQUFXO0FBQy9CLFNBQU8sRUFBRTtBQUFBOyIsIm5hbWVzIjpbXX0= ================================================ FILE: fixtures/with-tsx/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-tsx: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-tsx: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.tsx?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/text.ts?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/utils.ts?namespace=file&t=0": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-tsx: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.tsx", "text.ts", "utils.ts", ] `; exports[`snapshots fixtures/with-tsx: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/main.tsx?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.tsx?namespace=file", }, Object { "importPath": "/text.ts?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.tsx?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/text.ts?namespace=file&t=0", }, Object { "importPath": "/utils.ts?namespace=file&t=0", "importer": "http://127.0.0.1:9000/text.ts?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/utils.ts?namespace=file&t=0", }, ] `; ================================================ FILE: fixtures/with-tsx/index.html ================================================ ================================================ FILE: fixtures/with-tsx/main.tsx ================================================ // @jsx jsx import { text } from './text' function jsx(t, p, children) { var node = document.createElement(t) var textNode = document.createTextNode(children || p.children) node.appendChild(textNode) document.body.appendChild(node) } let x =
{text}
================================================ FILE: fixtures/with-tsx/text.ts ================================================ import { allCaps } from './utils' export const text = allCaps('works!') ================================================ FILE: fixtures/with-tsx/utils.ts ================================================ export function allCaps(x: string) { return x.toUpperCase() } ================================================ FILE: fixtures/with-typescript/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-typescript/__mirror__/main.ts ================================================ import {text} from "/text.ts?namespace=file&t=0"; console.log("Hello world!"); var node = document.createElement("h1"); var textNode = document.createTextNode(text); node.appendChild(textNode); document.body.appendChild(node); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLXR5cGVzY3JpcHQvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0ZXh0IH0gZnJvbSAnLi90ZXh0J1xuXG5jb25zb2xlLmxvZygnSGVsbG8gd29ybGQhJylcblxudmFyIG5vZGU6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gxJylcbnZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpXG5ub2RlLmFwcGVuZENoaWxkKHRleHROb2RlKVxuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub2RlKVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUVBLFFBQVEsSUFBSTtBQUVaLElBQUksT0FBWSxTQUFTLGNBQWM7QUFDdkMsSUFBSSxXQUFXLFNBQVMsZUFBZTtBQUN2QyxLQUFLLFlBQVk7QUFDakIsU0FBUyxLQUFLLFlBQVk7IiwibmFtZXMiOltdfQ== ================================================ FILE: fixtures/with-typescript/__mirror__/text.ts ================================================ import {allCaps} from "/utils.ts?namespace=file&t=0"; export const text = allCaps("works!"); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLXR5cGVzY3JpcHQvdGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbGxDYXBzIH0gZnJvbSAnLi91dGlscydcbmV4cG9ydCBjb25zdCB0ZXh0ID0gYWxsQ2Fwcygnd29ya3MhJylcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDTyxhQUFNLE9BQU8sUUFBUTsiLCJuYW1lcyI6W119 ================================================ FILE: fixtures/with-typescript/__mirror__/utils.ts ================================================ export function allCaps(x) { return x.toUpperCase(); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9tb3JzZS9Eb2N1bWVudHMvR2l0SHViL2VzcGFjay9maXh0dXJlcy93aXRoLXR5cGVzY3JpcHQvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGFsbENhcHMoeDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHgudG9VcHBlckNhc2UoKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBTyx3QkFBaUIsR0FBVztBQUMvQixTQUFPLEVBQUU7QUFBQTsiLCJuYW1lcyI6W119 ================================================ FILE: fixtures/with-typescript/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-typescript: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-typescript: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.ts?namespace=file": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/text.ts?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/utils.ts?namespace=file&t=0": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-typescript: mirror 1`] = ` Array [ "_hmr_client.js", "index.html", "main.ts", "text.ts", "utils.ts", ] `; exports[`snapshots fixtures/with-typescript: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/main.ts?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.ts?namespace=file", }, Object { "importPath": "/text.ts?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.ts?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/text.ts?namespace=file&t=0", }, Object { "importPath": "/utils.ts?namespace=file&t=0", "importer": "http://127.0.0.1:9000/text.ts?namespace=file&t=0", "resolvedImportPath": "http://127.0.0.1:9000/utils.ts?namespace=file&t=0", }, ] `; ================================================ FILE: fixtures/with-typescript/index.html ================================================ ================================================ FILE: fixtures/with-typescript/main.ts ================================================ import { text } from './text' console.log('Hello world!') var node: any = document.createElement('h1') var textNode = document.createTextNode(text) node.appendChild(textNode) document.body.appendChild(node) ================================================ FILE: fixtures/with-typescript/text.ts ================================================ import { allCaps } from './utils' export const text = allCaps('works!') ================================================ FILE: fixtures/with-typescript/utils.ts ================================================ export function allCaps(x: string) { return x.toUpperCase() } ================================================ FILE: fixtures/with-yarn-berry-paths/__mirror__/index.html ================================================ ================================================ FILE: fixtures/with-yarn-berry-paths/__mirror__/main.js ================================================ import { x } from '/$$virtual/react-dom-virtual-73426b59bc/0/cache/react-dom-npm-16.13.1-b0abd8a83a-fb5c3ad413.zip/react-dom/index.js?namespace=file&t=0' const node = document.createElement('pre') const text = node.appendChild(document.createTextNode(x)) document.body.appendChild(text) ================================================ FILE: fixtures/with-yarn-berry-paths/__snapshots__ ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshots fixtures/with-yarn-berry-paths: build 1`] = ` Array [ "index.html", "index.js", ] `; exports[`snapshots fixtures/with-yarn-berry-paths: content-type headers 1`] = ` Object { "http://127.0.0.1:9000/$$virtual/react-dom-virtual-73426b59bc/0/cache/react-dom-npm-16.13.1-b0abd8a83a-fb5c3ad413.zip/react-dom/index.js?namespace=file&t=0": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client": "application/javascript; charset=utf-8", "http://127.0.0.1:9000/index.html": "text/html; charset=utf-8", "http://127.0.0.1:9000/main.js?namespace=file": "application/javascript; charset=utf-8", } `; exports[`snapshots fixtures/with-yarn-berry-paths: mirror 1`] = ` Array [ "_hmr_client.js", "$$virtual/react-dom-virtual-73426b59bc/0/cache/react-dom-npm-16.13.1-b0abd8a83a-fb5c3ad413.zip/react-dom/index.js", "index.html", "main.js", ] `; exports[`snapshots fixtures/with-yarn-berry-paths: traverse result 1`] = ` Array [ Object { "importPath": "/_hmr_client.js?namespace=hmr-client", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/_hmr_client.js?namespace=hmr-client", }, Object { "importPath": "/$$virtual/react-dom-virtual-73426b59bc/0/cache/react-dom-npm-16.13.1-b0abd8a83a-fb5c3ad413.zip/react-dom/index.js?namespace=file&t=0", "importer": "http://127.0.0.1:9000/main.js?namespace=file", "resolvedImportPath": "http://127.0.0.1:9000/$$virtual/react-dom-virtual-73426b59bc/0/cache/react-dom-npm-16.13.1-b0abd8a83a-fb5c3ad413.zip/react-dom/index.js?namespace=file&t=0", }, Object { "importPath": "/main.js?namespace=file", "importer": "http://127.0.0.1:9000/index.html", "resolvedImportPath": "http://127.0.0.1:9000/main.js?namespace=file", }, ] `; ================================================ FILE: fixtures/with-yarn-berry-paths/index.html ================================================ ================================================ FILE: fixtures/with-yarn-berry-paths/main.js ================================================ import { x } from './$$virtual/react-dom-virtual-73426b59bc/0/cache/react-dom-npm-16.13.1-b0abd8a83a-fb5c3ad413.zip/react-dom/index.js' const node = document.createElement('pre') const text = node.appendChild(document.createTextNode(x)) document.body.appendChild(text) ================================================ FILE: hmr-test-app/__snapshots__/bundless ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`hmr 1 src/main.jsx bundless: messages 1`] = ` Array [ Object { "namespace": "file", "path": "/src/main.jsx", "type": "update", "updateID": "1", }, ] `; exports[`hmr 1 src/main.jsx bundless: urls 1`] = `Set {}`; exports[`hmr 2 src/file.jsx bundless: messages 1`] = ` Array [ Object { "namespace": "file", "path": "/src/file.jsx", "type": "update", "updateID": "1", }, ] `; exports[`hmr 2 src/file.jsx bundless: urls 1`] = ` Set { "http://127.0.0.1:4000/src/bridge.jsx?namespace=file&t=1", "http://127.0.0.1:4000/src/file.jsx?namespace=file&t=1", } `; exports[`hmr 3 src/file.css bundless: messages 1`] = ` Array [ Object { "namespace": "file", "path": "/src/file.css.cssjs", "type": "update", "updateID": "1", }, ] `; exports[`hmr 3 src/file.css bundless: urls 1`] = ` Set { "http://127.0.0.1:4000/src/bridge.jsx?namespace=file&t=1", "http://127.0.0.1:4000/src/file.css.cssjs?namespace=file&t=1", } `; exports[`hmr 4 src/file.module.css bundless: messages 1`] = ` Array [ Object { "namespace": "file", "path": "/src/file.module.css.cssjs", "type": "update", "updateID": "1", }, ] `; exports[`hmr 4 src/file.module.css bundless: urls 1`] = ` Set { "http://127.0.0.1:4000/src/bridge.jsx?namespace=file&t=1", "http://127.0.0.1:4000/src/file.module.css.cssjs?namespace=file&t=1", } `; exports[`hmr 5 src/file.json bundless: messages 1`] = ` Array [ Object { "namespace": "file", "path": "/src/bridge.jsx", "type": "update", "updateID": "1", }, ] `; exports[`hmr 5 src/file.json bundless: urls 1`] = ` Set { "http://127.0.0.1:4000/src/bridge.jsx?namespace=file&t=1", "http://127.0.0.1:4000/src/file.json?namespace=file&t=1", } `; exports[`hmr 6 src/file2.js bundless: messages 1`] = ` Array [ Object { "namespace": "file", "path": "/src/file.jsx", "type": "update", "updateID": "1", }, ] `; exports[`hmr 6 src/file2.js bundless: urls 1`] = ` Set { "http://127.0.0.1:4000/src/bridge.jsx?namespace=file&t=1", "http://127.0.0.1:4000/src/file.jsx?namespace=file&t=1", "http://127.0.0.1:4000/src/file2.js?namespace=file&t=1", } `; exports[`hmr 7 src/imported-many-times.js bundless: messages 1`] = ` Array [ Object { "namespace": "file", "path": "/src/main.jsx", "type": "update", "updateID": "1", }, Object { "namespace": "file", "path": "/src/file.jsx", "type": "update", "updateID": "1", }, ] `; exports[`hmr 7 src/imported-many-times.js bundless: urls 1`] = ` Set { "http://127.0.0.1:4000/src/imported-many-times.js?namespace=file&t=1", "http://127.0.0.1:4000/src/bridge.jsx?namespace=file&t=1", "http://127.0.0.1:4000/src/file.jsx?namespace=file&t=1", } `; exports[`hmr 8 src/file2.js, src/file.jsx bundless: messages 1`] = ` Array [ Object { "namespace": "file", "path": "/src/file.jsx", "type": "update", "updateID": "1", }, ] `; exports[`hmr 8 src/file2.js, src/file.jsx bundless: messages 2`] = ` Array [ Object { "namespace": "file", "path": "/src/file.jsx", "type": "update", "updateID": "2", }, ] `; exports[`hmr 8 src/file2.js, src/file.jsx bundless: urls 1`] = ` Set { "http://127.0.0.1:4000/src/bridge.jsx?namespace=file&t=1", "http://127.0.0.1:4000/src/file.jsx?namespace=file&t=1", "http://127.0.0.1:4000/src/file2.js?namespace=file&t=1", } `; exports[`hmr 8 src/file2.js, src/file.jsx bundless: urls 2`] = ` Set { "http://127.0.0.1:4000/src/bridge.jsx?namespace=file&t=2", "http://127.0.0.1:4000/src/file.jsx?namespace=file&t=2", "http://127.0.0.1:4000/src/file2.js?namespace=file&t=1", } `; ================================================ FILE: hmr-test-app/__snapshots__/snowpack ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`hmr 1 src/main.jsx snowpack: messages 1`] = ` Array [ Object { "bubbled": false, "type": "update", "url": "/_dist_/main.js", }, ] `; exports[`hmr 1 src/main.jsx snowpack: urls 1`] = `Set {}`; exports[`hmr 2 src/file.jsx snowpack: messages 1`] = ` Array [ Object { "bubbled": false, "type": "update", "url": "/_dist_/file.js", }, ] `; exports[`hmr 2 src/file.jsx snowpack: urls 1`] = `Set {}`; exports[`hmr 3 src/file.css snowpack: messages 1`] = ` Array [ Object { "bubbled": false, "type": "update", "url": "/_dist_/file.css", }, Object { "bubbled": false, "type": "update", "url": "/_dist_/file.css.proxy.js", }, ] `; exports[`hmr 3 src/file.css snowpack: urls 1`] = `Set {}`; exports[`hmr 4 src/file.module.css snowpack: messages 1`] = ` Array [ Object { "bubbled": true, "type": "update", "url": "/_dist_/bridge.js", }, ] `; exports[`hmr 4 src/file.module.css snowpack: urls 1`] = `Set {}`; exports[`hmr 5 src/file.json snowpack: messages 1`] = ` Array [ Object { "bubbled": true, "type": "update", "url": "/_dist_/bridge.js", }, ] `; exports[`hmr 5 src/file.json snowpack: urls 1`] = `Set {}`; exports[`hmr 6 src/file2.js snowpack: messages 1`] = ` Array [ Object { "bubbled": true, "type": "update", "url": "/_dist_/file.js", }, ] `; exports[`hmr 6 src/file2.js snowpack: urls 1`] = `Set {}`; exports[`hmr 7 src/imported-many-times.js snowpack: messages 1`] = ` Array [ Object { "bubbled": true, "type": "update", "url": "/_dist_/main.js", }, Object { "bubbled": true, "type": "update", "url": "/_dist_/file.js", }, ] `; exports[`hmr 7 src/imported-many-times.js snowpack: urls 1`] = `Set {}`; exports[`hmr 8 src/file2.js, src/file.jsx snowpack: messages 1`] = ` Array [ Object { "bubbled": true, "type": "update", "url": "/_dist_/file.js", }, ] `; exports[`hmr 8 src/file2.js, src/file.jsx snowpack: messages 2`] = ` Array [ Object { "bubbled": false, "type": "update", "url": "/_dist_/file.js", }, ] `; exports[`hmr 8 src/file2.js, src/file.jsx snowpack: urls 1`] = `Set {}`; exports[`hmr 8 src/file2.js, src/file.jsx snowpack: urls 2`] = `Set {}`; ================================================ FILE: hmr-test-app/__snapshots__/vite ================================================ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`hmr 1 src/main.jsx vite: messages 1`] = ` Array [ Object { "changeSrcPath": "/src/main.jsx", "path": "/src/main.jsx", "type": "js-update", }, ] `; exports[`hmr 1 src/main.jsx vite: urls 1`] = `Set {}`; exports[`hmr 2 src/file.jsx vite: messages 1`] = ` Array [ Object { "changeSrcPath": "/src/file.jsx", "path": "/src/file.jsx", "type": "js-update", }, ] `; exports[`hmr 2 src/file.jsx vite: urls 1`] = `Set {}`; exports[`hmr 3 src/file.css vite: messages 1`] = ` Array [ Object { "changeSrcPath": "/src/file.css", "path": "/src/file.css", "type": "style-update", }, ] `; exports[`hmr 3 src/file.css vite: urls 1`] = `Set {}`; exports[`hmr 4 src/file.module.css vite: messages 1`] = ` Array [ Object { "changeSrcPath": "/src/file.module.css", "path": "/src/bridge.jsx", "type": "js-update", }, Object { "changeSrcPath": "/src/file.module.css", "path": "/src/file.module.css", "type": "style-update", }, ] `; exports[`hmr 4 src/file.module.css vite: urls 1`] = `Set {}`; exports[`hmr 5 src/file.json vite: messages 1`] = ` Array [ Object { "changeSrcPath": "/src/file.json", "path": "/src/bridge.jsx", "type": "js-update", }, ] `; exports[`hmr 5 src/file.json vite: urls 1`] = `Set {}`; exports[`hmr 6 src/file2.js vite: messages 1`] = ` Array [ Object { "changeSrcPath": "/src/file2.js", "path": "/src/file.jsx", "type": "js-update", }, ] `; exports[`hmr 6 src/file2.js vite: urls 1`] = `Set {}`; exports[`hmr 7 src/imported-many-times.js vite: messages 1`] = ` Array [ Object { "changeSrcPath": "/src/imported-many-times.js", "path": "/src/main.jsx", "type": "js-update", }, Object { "changeSrcPath": "/src/imported-many-times.js", "path": "/src/file.jsx", "type": "js-update", }, ] `; exports[`hmr 7 src/imported-many-times.js vite: urls 1`] = `Set {}`; exports[`hmr 8 src/file2.js, src/file.jsx vite: messages 1`] = ` Array [ Object { "changeSrcPath": "/src/file2.js", "path": "/src/file.jsx", "type": "js-update", }, ] `; exports[`hmr 8 src/file2.js, src/file.jsx vite: messages 2`] = ` Array [ Object { "changeSrcPath": "/src/file.jsx", "path": "/src/file.jsx", "type": "js-update", }, ] `; exports[`hmr 8 src/file2.js, src/file.jsx vite: urls 1`] = `Set {}`; exports[`hmr 8 src/file2.js, src/file.jsx vite: urls 2`] = `Set {}`; ================================================ FILE: hmr-test-app/bundless.config.js ================================================ /** @type { import('@bundless/cli').Config } */ module.exports = { jsx: 'react', entries: ['public/bundless/index.html'], server: { experimentalImmutableCache: false, }, plugins: [require('@bundless/plugin-react-refresh').ReactRefreshPlugin()], } ================================================ FILE: hmr-test-app/index.test.ts ================================================ import { serve } from '@bundless/cli' import { Config } from '@bundless/cli' import { spawn } from 'child_process' import { readFromUrlOrPath, traverseEsModules, urlResolver, } from 'es-module-traversal' import { once } from 'events' import execa from 'execa' import fs from 'fs-extra' import * as failFast from 'jasmine-fail-fast' import 'jest-specific-snapshot' import path from 'path' import url, { URL } from 'url' import WebSocket from 'ws' const jasmineEnv = (jasmine as any).getEnv() jasmineEnv.addReporter(failFast.init()) const tempDir = path.resolve(__dirname, '../temp') const fixtureDir = path.resolve(__dirname, '../hmr-test-app') const testTargets = process.env.HRM_TESTS ? ['snowpack', 'vite', 'bundless'] : ['bundless'] const PORT = 4000 process.env.BUNDLESS_CONSISTENT_HMR_GRAPH_HASH = '' // makes all urls consistent in time jest.setTimeout(100000) type TestCase = { path: string replacer: (content: string) => string } process.env.NODE_ENV = 'development' // fix for snowpack that does not start in test env const config: Config = { ...require('./bundless.config'), server: { openBrowser: false, port: PORT, }, root: tempDir, } // test cases are arrays of arrays, this way i can test multiple messages cases, i can fetch between cases and snapshot the changed urls, this way i can test the timestamp queries const testCases: Array = [ { path: 'src/main.jsx', replacer: defaultJsReplacer, }, { path: 'src/file.jsx', replacer: defaultJsReplacer, }, { path: 'src/file.css', replacer: defaultCssReplacer, }, { path: 'src/file.module.css', replacer: defaultCssReplacer, }, { path: 'src/file.json', replacer: (x) => '{"x": 9}\n', }, { path: 'src/file2.js', replacer: defaultJsReplacer, }, { path: 'src/imported-many-times.js', replacer: defaultJsReplacer, }, // test 2 consecutive updates that resets the ?timestamp query and could cause a stale fetch [ { path: 'src/file2.js', replacer: defaultJsReplacer, }, { path: 'src/file.jsx', // imports the first file, should use the last used timestamp query to not get the stale module replacer: defaultJsReplacer, }, ], // TODO test hmr when removing an import // TODO test hmr when adding an import ] beforeAll(async () => { try { await fs.remove(tempDir) } catch (e) {} await fs.ensureDir(tempDir) await fs.copy(fixtureDir, tempDir, { filter: (file) => !/dist|node_modules/.test(file), }) const json = JSON.parse( fs.readFileSync(path.resolve(fixtureDir, 'package.json')).toString(), ) fs.writeFileSync( path.resolve(tempDir, 'package.json'), JSON.stringify({ ...json, name: 'temp' }, null, 4), ) await execa('yarn', { cwd: tempDir, stdio: 'inherit' }) }) afterAll(async () => { try { await fs.remove(tempDir) } catch (e) {} }) async function start(type) { console.info('starting hmr tests') let finish let complete = new Promise((r) => { finish = r }) switch (type) { case 'bundless': { const server = await serve(config) // await sleep(300) return { stop: () => server.close(), entry: '/bundless/index.html', hmrAgent: 'esm-hmr', } } case 'snowpack': { const p = spawn(`yarn snowpack dev --port ${PORT}`, { cwd: tempDir, stdio: 'pipe', env: { ...process.env, NODE_ENV: 'development', }, shell: true, }) function onData(data) { process.stdout.write(data + '\n') if (data.includes('Server started')) { finish() } } p.stderr.on('data', onData) p.stdout.on('data', onData) await complete await sleep(300) return { stop: () => p.kill('SIGTERM'), entry: '/snowpack/index.html', hmrAgent: 'esm-hmr', } } case 'vite': { const p = spawn(`yarn vite serve --port ${PORT}`, { cwd: tempDir, stdio: 'pipe', env: { ...process.env, NODE_ENV: 'development', }, shell: true, }) function onData(data) { process.stdout.write(data + '\n') if (data.includes('Dev server running at:')) { finish() } } p.stderr.on('data', onData) p.stdout.on('data', onData) await complete await sleep(400) return { stop: () => p.kill('SIGTERM'), entry: '/vite/index.html', hmrAgent: 'vite-hmr', } } default: { throw new Error(`${type} not handled`) } } } describe('hmr', () => { const baseUrl = `http://127.0.0.1:${PORT}` const root = tempDir for (let testTarget of testTargets) { for (let [i, testCase] of testCases.entries()) { const name = Array.isArray(testCase) ? testCase.map((x) => x.path).join(', ') : testCase.path test(`${i + 1} ${name} ${testTarget}`, async () => { const { stop, entry, hmrAgent } = await start(testTarget) try { const ws = new WebSocket(`ws://127.0.0.1:${PORT}`, hmrAgent) await once(ws, 'open') const cases = Array.isArray(testCase) ? testCase : [testCase] const snapshot = path.resolve( fixtureDir, '__snapshots__', testTarget, ) // creates the module graph const traversedFiles = await traverseEsModules({ entryPoints: [new URL(entry, baseUrl).toString()], onNonResolved: () => {}, resolver: urlResolver({ root, baseUrl, }), }) // register hot modules in graph await registerHotModules(traversedFiles, ws) for (let c of cases) { const messages = await getWsMessages({ ws, doing: async () => { await updateFile( path.resolve(root, c.path), c.replacer, ) }, }) expect( messages.map(normalizeHmrMessage), ).toMatchSpecificSnapshot(snapshot, 'messages') const urls = new Set() await traverseEsModules({ entryPoints: [new URL(entry, baseUrl).toString()], onNonResolved: () => {}, onEntry: (p, importer, contents) => { if ( (p.includes('t=') && !/t=.*0$/.test(p)) || p.includes('mtime=') ) { urls.add(p) } // snapshot the fetched urls }, resolver: urlResolver({ root, baseUrl, }), }) expect(urls).toMatchSpecificSnapshot(snapshot, 'urls') } ws.close() await once(ws, 'close') } finally { if (stop) await stop() await sleep(300) } }) } } }) async function updateFile(compPath, replacer) { try { const content = await fs.readFile(compPath, 'utf-8') await fs.writeFile(compPath, replacer(content)) } catch (e) { throw new Error(`could not update ${compPath}: ${e}`) } } async function getWsMessages({ doing, timeout = 2000, ws }) { await doing() const messages = [] ws.addEventListener('message', ({ data }) => { const payload = JSON.parse(data) if (payload.type === 'connected') return // for vite if (payload.type === 'multi') { return messages.push(...payload.updates) } return messages.push(payload) }) await Promise.race([ waitUntilCountStabilizes(() => messages.length), sleep(timeout), ]) return messages } async function registerHotModules(traversedFiles, ws) { // for bundless and snowpack, you need to mark modules as hot const messages: string[] = await Promise.all( traversedFiles.map(async ({ resolvedImportPath, importPath }) => { const content = await readFromUrlOrPath( resolvedImportPath, importPath, ) if (content.includes('import.meta.hot.accept')) { const msg = JSON.stringify( { // id is for snowpack id: url.parse(resolvedImportPath).pathname, path: url.parse(resolvedImportPath).pathname, type: 'hotAccept', }, null, 4, ) return msg } return '' }), ) messages.filter(Boolean).forEach((x) => ws.send(x)) } const sleep = (n) => new Promise((r) => setTimeout(r, n)) async function waitUntilCountStabilizes(count, releaseTime = 50) { let lastCount = 0 while (!lastCount) { await sleep(50) lastCount = count() } await sleep(releaseTime) if (count() !== lastCount) { return await waitUntilCountStabilizes(count, releaseTime) } } const normalizeHmrMessage = (message) => { const ignoreKeys = ['timestamp'] const validKeys = Object.keys(message).filter( (k) => !ignoreKeys.includes(k), ) return Object.assign({}, ...validKeys.map((k) => ({ [k]: message[k] }))) } function defaultJsReplacer(x) { return x + '\n\n"some text"\n' } function defaultCssReplacer(x) { return x + '\n\nbody {\ncolor: black;\n}\n' } ================================================ FILE: hmr-test-app/package.json ================================================ { "name": "hmr-test-app", "version": "0.0.0", "private": true, "description": "", "repository": "https://github.com/remorses/.git", "scripts": { "test": "yarn jest --config ../jest.config.js `pwd`", "test:all": "cross-env HRM_TESTS=1 yarn test" }, "keywords": [], "author": "Tommaso De Rossi, morse ", "license": "ISC", "devDependencies": { "@bundless/cli": "0.6.0", "@bundless/plugin-react-refresh": "2.1.0", "@snowpack/plugin-react-refresh": "^2.3.9", "es-module-traversal": "^0.0.50", "execa": "^5.0.0", "jest-specific-snapshot": "^4.0.0", "snowpack": "^2.18.4", "vite": "^1.0.0-rc.13", "vite-plugin-react": "^4.0.1", "ws": "^7.4.1" }, "dependencies": { "react": "experimental", "react-dom": "experimental" }, "peerDependencies": {} } ================================================ FILE: hmr-test-app/public/bundless/index.html ================================================
================================================ FILE: hmr-test-app/public/index.html ================================================ Snowpack test app
Vite test app
Bundless test app
================================================ FILE: hmr-test-app/public/snowpack/index.html ================================================
================================================ FILE: hmr-test-app/public/vite/index.html ================================================
================================================ FILE: hmr-test-app/snowpack.config.js ================================================ module.exports = { mount: { public: '/', src: '/_dist_', }, devOptions: { open: 'none', output: 'stream', }, plugins: [ '@snowpack/plugin-react-refresh', // live reloading ], } ================================================ FILE: hmr-test-app/src/bridge.jsx ================================================ import React, { useLayoutEffect, useState } from 'react' import { Comp, staticVariable } from './file' import './file.css' import json from './file.json' import css from './file.module.css' export function App() { const [state, setState] = useState(0) useLayoutEffect(() => { staticVariable.count += 1 }, []) return (
{JSON.stringify({ json, css })}
{JSON.stringify(staticVariable)}



{state}
) } console.log(new Error('i am here, line 27')) // export const x = 9 ================================================ FILE: hmr-test-app/src/file.css ================================================ body { background: white; } ================================================ FILE: hmr-test-app/src/file.json ================================================ { "x": "file.json" } ================================================ FILE: hmr-test-app/src/file.jsx ================================================ import React, { useImperativeHandle } from 'react' import x from './file2' import { y } from './imported-many-times' export const staticVariable = { count: 0 } export const Comp = () => { return (
{y}xxx{x}
) } // setInterval(() => { // console.log(staticVariable) // }, 1000) ================================================ FILE: hmr-test-app/src/file.module.css ================================================ .cls { color: antiquewhite; } body { background: lightcoral; } ================================================ FILE: hmr-test-app/src/file2.js ================================================ export default 'file2.js' ================================================ FILE: hmr-test-app/src/imported-many-times.js ================================================ export const y = 'imported-many-times.js' ================================================ FILE: hmr-test-app/src/main.jsx ================================================ import React from 'react' import { App } from './bridge' import ReactDOM from 'react-dom' import { y } from './imported-many-times' ReactDOM.render( <>

{y} , document.getElementById('root'), ) const noop = (x) => x if (import.meta.hot) { import.meta.hot.accept() } ================================================ FILE: hmr-test-app/tsconfig.json ================================================ { "extends": "../tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "dist" }, "include": ["src"] } ================================================ FILE: hmr-test-app/vite.config.js ================================================ /** * @type { import('vite').UserConfig } */ const config = { jsx: 'react', plugins: [require('vite-plugin-react')], } module.exports = config ================================================ FILE: jest.config.js ================================================ // @ts-check /** @type {import('@jest/types').Config.InitialOptions} */ const config = { transform: { '.(ts|tsx)': '@sucrase/jest-plugin' }, testPathIgnorePatterns: ['/dist/', '/esm/', '/node_modules/'], testEnvironment: 'node', forceExit: true, bail: 1, } module.exports = config ================================================ FILE: package.json ================================================ { "name": "root", "scripts": { "test": "cross-env NODE_ENV=test jest --force-exit --colors", "test:hmr": "cross-env HRM_TESTS=1 yarn jest hmr-test-app", "watch": "ultra -r watch", "cli": "ultra -r cli", "build": "ultra --build -r --filter '@bundless/*' build", "fix-mismatches": "syncpack fix-mismatches --dev --prod --indent ' '", "release": "yarn build && changeset publish" }, "workspaces": { "nohoist": [ "examples/with-many-dependencies/preact", "**/preact" ], "packages": [ "bundless", "examples/*", "website", "fixtures/*", "tests", "with-pages", "plugins/*", "hmr-test-app", "paged", "temp" ] }, "devDependencies": { "@changesets/cli": "^2.12.0", "@jest/types": "^26.6.2", "@sucrase/jest-plugin": "^2.0.0", "@types/jest": "^26.0.19", "@types/jest-specific-snapshot": "^0.5.5", "@types/react": "^17.0.0", "cross-env": "^7.0.3", "esm": "^3.2.25", "jest": "^26.6.3", "prettier": "^2.2.1", "syncpack": "^5.7.11", "typescript": "^4.1.3", "ultra-runner": "^3.6.0" }, "private": true, "repository": "https://github.com/remorses/bundless.git", "author": "remorses ", "license": "MIT" } ================================================ FILE: paged/CHANGELOG.md ================================================ # @bundless/plugin-react-paged ## 2.0.4 ### Patch Changes - Updated dependencies [undefined] - @bundless/plugin-react-refresh@2.1.0 ## 2.0.3 ### Patch Changes - Updated dependencies [717a68e] - @bundless/cli@0.2.4 - @bundless/plugin-react-refresh@2.0.3 ## 2.0.2 ### Patch Changes - Updated dependencies [bd7ed34] - Updated dependencies [55d7241] - @bundless/cli@0.2.3 - @bundless/plugin-react-refresh@2.0.2 ## 2.0.1 ### Patch Changes - Updated dependencies [73eb17a] - @bundless/plugin-react-refresh@2.0.1 ## 2.0.0 ### Patch Changes - Updated dependencies [9a0b4e5] - @bundless/cli@0.2.0 - @bundless/plugin-react-refresh@2.0.0 ## 1.0.1 ### Patch Changes - 336776d: Small improvements - Updated dependencies [2e6022f] - @bundless/cli@0.1.5 ## 1.0.0 ### Patch Changes - Updated dependencies [81c8e26] - @bundless/cli@0.1.0 ================================================ FILE: paged/README.md ================================================ Nextjs like framework built on top of bundless, esbuild and react router ## IDEAS - function in the rpc folder are normal functions when called in the server and trigger a fetch request when called in the client - add a docker command that builds a docker image, this is useful because otherwise the server would need to build using esbuild on start to get the static outputs, this also let me bundle the server in a single files without dependencies, which makes the docker image build lighter and faster to build ================================================ FILE: paged/package.json ================================================ { "name": "@bundless/plugin-react-paged", "version": "2.0.4", "private": true, "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": "https://github.com/remorses/bundless.git", "scripts": { "build": "tsc", "watch": "tsc -w" }, "files": [ "dist", "src" ], "keywords": [], "author": "Tommaso De Rossi, morse ", "license": "ISC", "devDependencies": { "@babel/types": "^7.12.10", "@bundless/cli": "0.6.0", "@types/node": "^14.14.13", "@types/react-router-dom": "^5.1.7", "@types/uuid": "^8.3.0" }, "dependencies": { "escape-string-regexp": "^4.0.0", "@bundless/plugin-react-refresh": "2.1.0", "fast-glob": "^3.2.4", "fs-extra": "^9.0.1", "koa-body": "^4.2.0", "batched-promise-all": "^0.9.2", "micro-memoize": "^4.0.9", "picomatch": "^2.2.2", "react-helmet": "^6.1.0", "react-refresh": "^0.8.2", "react-router": "^5.2.0", "react-router-dom": "^5.2.0", "swr": "^0.3.11", "uuid": "^8.3.2" }, "peerDependencies": { "@bundless/cli": "*" } } ================================================ FILE: paged/src/client/context.ts ================================================ import React from 'react' import { HelmetData } from 'react-helmet' export const MahoContext = React.createContext<{ url?: string helmet?: HelmetData statusCode?: number routeData?: { [path: string]: any } } | null>(null) export const useMahoContext = () => { const context = React.useContext(MahoContext) if (!context) { throw new Error(`cannot get maho context`) } return context } ================================================ FILE: paged/src/client/index.ts ================================================ import { useLocation } from 'react-router-dom' import useSWR from 'swr' import { useMahoContext } from './context' export { useMahoContext, MahoContext } from './context' const routeDataFetcher = async (pathname: string) => { return fetch(pathname, { headers: { accept: 'application/json', }, }) .then((res) => res.json()) .then((data) => data[pathname]) } export const useRouteData = () => { const { routeData = {} } = useMahoContext() const location = useLocation() if (process['browser']) { const state = window['INITIAL_STATE'] const { data } = useSWR(location.pathname, routeDataFetcher, { suspense: true, initialData: routeData[location.pathname], revalidateOnMount: state.revalidateOnMount, }) return data } return routeData[location.pathname] || {} } export interface LoadFunctionContext { params: { [k: string]: string | string[] } } export type LoadFunction = ( ctx: LoadFunctionContext, ) => object | Promise ================================================ FILE: paged/src/constants.ts ================================================ import { Logger } from '@bundless/cli' import picomatch from 'picomatch' export const CLIENT_ENTRY = '_bundless_paged_entry_.jsx' export const ROUTES_ENTRY = '_bundless_paged_routes_.jsx' export const jsGlob = '**/*.{ts,tsx,js,jsx}' export const isJsPage = picomatch(jsGlob) export const logger = new Logger({ prefix: '[paged] ' }) ================================================ FILE: paged/src/export.tsx ================================================ import { build, logger, PluginsExecutor } from '@bundless/cli' import { osAgnosticPath } from '@bundless/cli/dist/utils' import { batchedPromiseAll } from 'batched-promise-all' import fs from 'fs-extra' import os from 'os' import path from 'path' import React from 'react' import { renderToStaticMarkup, renderToString } from 'react-dom/server' import { generatePath, StaticRouter } from 'react-router-dom' import slash from 'slash' import { CLIENT_ENTRY, ROUTES_ENTRY } from './constants' import { Plugin } from './plugin' import { getPagesRoutes, isDynamicRoute, relativePathToPublicPath, } from './routes' import { MainHtml, tryRequire } from './server' export async function exportPage({ ssrOutputPath, pluginsExecutor, clientScriptSrc, url, }) { const { App } = tryRequire(ssrOutputPath) const context = { url } const prerenderedHtml = renderToString( , ) const html = renderToStaticMarkup( , ) let fullHtml = `\n${html}` // use plugins executor to process html and inject react refresh stuff .... if (pluginsExecutor) { const transformResult = await pluginsExecutor.transform({ contents: fullHtml, path: 'index.html', loader: 'default', }) fullHtml = transformResult.contents || '' } return fullHtml } export async function staticExport({ root, ssrOutDir = 'ssr_out', clientOutDir = 'client_out', }) { const pagesDir = path.resolve(root, 'pages') const routes = await getPagesRoutes({ pagesDir }) const ssrEntry = path.resolve(root, ROUTES_ENTRY) const { bundleMap: ssrBundleMap } = await build({ root, plugins: [Plugin()], platform: 'node', entries: [ssrEntry], // TODO ...routes.map((x) => x.absolute) build: { outDir: ssrOutDir, minify: false, }, }) const pluginsExecutor = new PluginsExecutor({ ctx: { isBuild: true, config: { root }, root }, initialOptions: {}, plugins: [Plugin()], }) let ssrOutputPath = ssrBundleMap[osAgnosticPath(ssrEntry, root)] if (!ssrOutputPath) { throw new Error( `Could not find ssr output for '${ssrEntry}', ${JSON.stringify( Object.keys(ssrBundleMap), )}`, ) } ssrOutputPath = path.resolve(root, ssrOutputPath) const urls: string[] = flatten( await batchedPromiseAll( routes, async (route) => { if (isDynamicRoute(route)) { const { getStaticPaths } = tryRequire(ssrOutputPath) if (!getStaticPaths || !getStaticPaths[route.path]) { return [] } const getStaticPathsFn = getStaticPaths[route.path] const paths = await getStaticPathsFn() if (!paths) { return [] } return paths.paths.map((p) => { const generated = generatePath( route.path, p.params || {}, ) return generated }) } return [relativePathToPublicPath(route.relative)] }, os.cpus().length, ), ) const { bundleMap: clientBundleMap } = await build({ root, build: { outDir: clientOutDir, minify: false, }, define: { 'process.browser': 'false', }, entries: [CLIENT_ENTRY], plugins: [Plugin()], }) await batchedPromiseAll( urls, async (url: string) => { const html = await exportPage({ clientScriptSrc: `/${slash( path.relative( clientOutDir, path.resolve(root, clientBundleMap[CLIENT_ENTRY]), ), )}`, ssrOutputPath, pluginsExecutor, url, }) const outputHtmlPath = path.resolve( clientOutDir, (url.slice(1) || 'index') + '.html', // TODO better file creation based on public path ) logger.log(`writing html page to ${outputHtmlPath}`) await fs.createFile(outputHtmlPath) await fs.writeFile(outputHtmlPath, html) }, os.cpus().length, ) } export function flatten(arr: T[][]): T[] { return arr.reduce(function (flat, toFlatten) { return flat.concat( Array.isArray(toFlatten) ? flatten(toFlatten as any) : toFlatten, ) }, []) } ================================================ FILE: paged/src/index.tsx ================================================ export { Plugin } from './plugin' export { createServer } from './server' export { staticExport } from './export' export * from './client' ================================================ FILE: paged/src/plugin.tsx ================================================ import { logger, Plugin as PluginType } from '@bundless/cli' import { fileToImportPath } from '@bundless/cli/dist/utils' import escapeStringRegexp from 'escape-string-regexp' import path from 'path' import * as uuid from 'uuid' import { CLIENT_ENTRY, isJsPage, ROUTES_ENTRY } from './constants' import { getPagesRoutes, getRpcRoutes, invalidateCache } from './routes' export function Plugin({} = {}): PluginType { const originalRpcFiles = {} return { name: 'paged-plugin', setup({ onLoad, onResolve, onTransform, ctx: { root, watcher, isBuild, config }, }) { const pagesDir = path.resolve(root, 'pages') const rpcDir = path.resolve(root, 'rpc') const isClient = config.platform === 'browser' onResolve( { filter: new RegExp(escapeStringRegexp(CLIENT_ENTRY)) }, (args) => { return { path: path.resolve(root, CLIENT_ENTRY), } }, ) if (isClient) { // TODO more robust regex for virtual rpc files const rpcPrefix = '__rpc__' onResolve({ filter: new RegExp(rpcPrefix) }, (args) => { logger.log(`resolving rpc ${args.path}`) return { path: path.resolve(root, 'original_rpc', args.path), } }) onLoad({ filter: new RegExp(rpcPrefix) }, (args) => { logger.log(`loading rpc ${args.path}`) const basename = path.basename(args.path) const originalCode = originalRpcFiles[basename] if (!originalCode) { return } return { contents: originalCode, loader: 'default', } }) onTransform({ filter: /rpc/ }, async (args) => { const isRpcFile = !path .relative(rpcDir, args.path) .startsWith('..') if (!isRpcFile) { return } const originalCodeFilename = rpcPrefix + uuid.v4() + path.extname(args.path) originalRpcFiles[originalCodeFilename] = args.contents logger.log( `transforming ${args.path} and importing original code from ${originalCodeFilename}`, ) // TODO pass right path for rpc function const contents = rpcFunctionTemplate({ originalCodeFilename, root, rpcPublicPath: fileToImportPath( root, args.path, ).replace(/\..*$/, ''), // TODO do rpc routes support slugs? no right? }) return { contents, loader: 'js', } }) } onLoad( { filter: new RegExp(escapeStringRegexp(CLIENT_ENTRY)) }, (args) => { return { contents: clientEntryContent, resolveDir: root, loader: 'jsx', } }, ) onResolve( { filter: new RegExp(escapeStringRegexp(ROUTES_ENTRY)) }, (args) => { return { path: path.resolve(root, ROUTES_ENTRY), } }, ) if (watcher && !isBuild) { function onChange(filePath) { // filePath = path.resolve(filePath) const isInsidePages = !path .relative(pagesDir, filePath) .startsWith('..') if (isInsidePages && isJsPage(filePath)) { // invalidate routes cache keys invalidateCache(getPagesRoutes) } const isInsideRpc = !path .relative(rpcDir, filePath) .startsWith('..') if (isInsideRpc && isJsPage(filePath)) { // invalidate routes cache keys invalidateCache(getRpcRoutes) } } // TODO reserach what chokidar events means, i should probably add add, remove, ... watcher.on('change', onChange) } onLoad( { filter: new RegExp(escapeStringRegexp(ROUTES_ENTRY)) }, async (args) => { const routes = await getPagesRoutes({ pagesDir, }) return { contents: makeRoutesContent({ root, routes }), resolveDir: root, loader: 'jsx', } }, ) }, } } function rpcFunctionTemplate({ root, originalCodeFilename, rpcPublicPath }) { return ` import rpcFunction from '${originalCodeFilename}' export default async function wrapper(arg) { const res = await fetch('${rpcPublicPath}', { method: 'POST', body: JSON.stringify(arg), headers: { 'Content-Type': 'application/json', } }) const json = await res.json() return json } ` } const clientEntryContent = ` import React from 'react' import ReactDOM from 'react-dom' import { BrowserRouter } from 'react-router-dom' import { App } from './${ROUTES_ENTRY}' const state = window.INITIAL_STATE ReactDOM.unstable_createRoot(document.getElementById('_maho')) .render() ` const makeRoutesContent = ({ routes, root }) => ` import React from 'react' import { Switch, Route, useLocation } from 'react-router-dom' import { useMahoContext, MahoContext } from '@bundless/plugin-react-paged/src/client' const Suspense = process.browser ? React.Suspense : ({children}) => children export const routes = {} export const getStaticPaths = {} ${routes .map((route) => { return ` if (process.browser) { routes["${ route.path }"] = React.lazy(() => import("./${path.posix.relative( root, route.absolute, )}")) } else { const res = require("./${path.posix.relative( root, route.absolute, )}") routes["${route.path}"] = res.default if (res.getStaticPaths) { getStaticPaths["${route.path}"] = res.getStaticPaths } } ` }) .join('\n')} const NotFound = () => { const context = useMahoContext() if (context) { context.statusCode = 404 } return
404
} export const Routes = () => { if (process.browser) { const location = useLocation() React.useEffect(() => { const state = window.INITIAL_STATE state.revalidateOnMount = true }, [location.pathname]) } return ( ${routes .map((route) => { return `` }) .join('\n')} ) } class ErrorBoundary extends React.Component { state = {error: null} static getDerivedStateFromError(error) { return {error} } componentDidCatch() { // log the error to the server } tryAgain = () => this.setState({error: null}) render() { return this.state.error ? (
There was an error.
{this.state.error.message}
) : ( this.props.children ) } } export const App = ({ context, Router }) => { return Loading...}> } ` ================================================ FILE: paged/src/routes.ts ================================================ import glob from 'fast-glob' import memoize from 'micro-memoize' import path, { normalize } from 'path' import { jsGlob } from './constants' export interface Route { path: string relative: string absolute: string name: string } export const getRpcRoutes = memoize( async function getRpcRoutes({ rpcDir }): Promise { const files = new Set( await glob(jsGlob, { cwd: rpcDir, }), ) const routes = [...files].map((relative) => { return { relative, path: getRouteFromPath(path.join('rpc', relative)), absolute: path.resolve(rpcDir, relative), name: nameFromPath(relative), } }) return routes }, { isPromise: true }, ) export const getPagesRoutes = memoize( async function getRoutes({ pagesDir }): Promise { const files = new Set( await glob(jsGlob, { cwd: pagesDir, }), ) const routes = [...files].map((relative) => { return { path: getRouteFromPath(relative), absolute: path.join(pagesDir, relative), relative: relative, name: nameFromPath(relative), } }) return routes }, { isPromise: true }, ) export function nameFromPath(p: string) { return p.replace(/[^a-zA-Z0-9]/g, '_') } function getRouteFromPath(relativePath: string) { if (path.isAbsolute(relativePath)) { throw new Error(`getRouteFromPath only accepts relative paths`) } if (relativePath.startsWith('.')) { relativePath = path.normalize(relativePath) } const routePath = `${relativePathToPublicPath(relativePath) .replace(/\[\.\.\.([^\]]+)\]/g, '*') // [...slug] becomes * .replace(/\[([^\]]+)\]/g, ':$1')}` // [slug] becomes :slug return routePath } export function relativePathToPublicPath(relativePath: string) { const p = '/' + relativePath .replace(/\.[a-z]+$/, '') // remove extension .replace(/^index$/, '') .replace(/\/index$/, '') return p } export function invalidateCache(memoFunction) { memoFunction.cache.keys.length = 0 memoFunction.cache.values.length = 0 } export function isDynamicRoute(route: Route) { return ( /\[\.\.\.([^\]]+)\]/g.test(route.relative) || /\[([^\]]+)\]/.test(route.relative) ) } ================================================ FILE: paged/src/server.tsx ================================================ import { build, logger, Logger, PluginsExecutor } from '@bundless/cli' import slash from 'slash' import { Config, defaultConfig } from '@bundless/cli/dist/config' import { createDevApp } from '@bundless/cli/dist/serve' import { importPathToFile, osAgnosticPath } from '@bundless/cli/dist/utils' import { ReactRefreshPlugin } from '@bundless/plugin-react-refresh' import { Server } from 'http' import Koa from 'koa' import koaBody from 'koa-body' import mount from 'koa-mount' import koaStatic from 'koa-static' import path from 'path' import React from 'react' import { renderToStaticMarkup, renderToString } from 'react-dom/server' import { StaticRouter } from 'react-router-dom' import { matchPath } from 'react-router-dom/' import { MahoContext } from './client' import { CLIENT_ENTRY, ROUTES_ENTRY } from './constants' import { Plugin } from './plugin' import { getPagesRoutes, getRpcRoutes } from './routes' export async function createServer({ isProduction = false, root, builtAssets: clientOutDir = 'client_out', ssrOutDir = 'ssr_out', }) { const app = new Koa() app.use(koaBody({})) const pagesDir = path.resolve(root, 'pages') const rpcDir = path.resolve(root, 'rpc') let baseConfig: Config = { ...defaultConfig, prebundle: { force: true, // TODO remove this after finish prototyping }, define: { 'process.browser': 'true', }, root, plugins: [Plugin(), ...(!isProduction ? [ReactRefreshPlugin()] : [])], } const server = new Server() let clientScriptSrc let pluginsExecutor: PluginsExecutor if (isProduction) { const { bundleMap } = await build({ ...baseConfig, build: { outDir: clientOutDir, }, define: { 'process.browser': 'true', }, entries: [CLIENT_ENTRY], }) clientScriptSrc = `/${slash( path.relative(clientOutDir, bundleMap[CLIENT_ENTRY]), )}` app.use(koaStatic(clientOutDir, { index: false })) } else { const { app: devApp, pluginsExecutor: devPluginsExecutor, } = await createDevApp(server, { ...baseConfig, platform: 'browser', define: { 'process.browser': 'true', }, entries: [CLIENT_ENTRY], }) pluginsExecutor = devPluginsExecutor app.use(mount('/', devApp)) clientScriptSrc = `/${CLIENT_ENTRY}?namespace=file` } const ssrLogger = new Logger({ silent: true }) const ssrEntry = path.resolve(root, ROUTES_ENTRY) const { bundleMap, rebuild } = await build({ ...baseConfig, logger: ssrLogger, define: { 'process.browser': 'false', }, // TODO resolve react and react dom to the user's installed react and react dom plugins: [Plugin()], entries: [ ssrEntry, // TODO rebuild cannot add new entries, this means that to add a new rpc file you need to reload the server ...(await getRpcRoutes({ rpcDir })).map((x) => x.absolute), ], platform: 'node', build: { outDir: ssrOutDir, }, incremental: true, }) // handle rpc calls app.use(async (ctx, next) => { const rpcRoutes = await getRpcRoutes({ rpcDir: path.resolve(root, 'rpc'), }) const foundRoute = rpcRoutes.find((route) => { const match = matchPath(ctx.path, { path: route.path, exact: true, strict: true, }) return match }) if (!foundRoute) { return next() } // TODO add watchIgnore option, ignore files in dist directories or rebuild will trigger a reload in dev // if (!isProduction) { // logger.log('rebuilding') // await rebuild!() // } const rpcBundle = bundleMap[osAgnosticPath(foundRoute.absolute, root)] if (!rpcBundle) { throw new Error(`Cannot find bundle for ${foundRoute.relative}`) } const imports = tryRequire(path.resolve(root, rpcBundle)) const rpcFunction = imports.default const args = ctx.request.body logger.log(`Running rpc function ${foundRoute.absolute}`) logger.log(`with arguments ${JSON.stringify(args, null, 4)}`) const result = await rpcFunction(args) console.log({ result }) ctx.body = JSON.stringify(result) ctx.status = 200 ctx.type = 'application/json' }) // handle html pages app.use(async (ctx, next) => { if (ctx.method !== 'GET' && !ctx.is('html')) return next() const pagesRoutes = await getPagesRoutes({ pagesDir }) const foundRoute = pagesRoutes.find((route) => { const match = matchPath(ctx.path, { path: route.path, exact: true, strict: true, }) if (match) { logger.log(`${ctx.path} matched ${route.path}`) } return match }) if (!foundRoute) { return next() } // on dev rebuild on every refresh if (!isProduction) { logger.log('rebuilding') await rebuild!() } let outputPath = bundleMap[osAgnosticPath(ssrEntry, root)] if (!outputPath) { throw new Error( `Could not find ssr output for '${ssrEntry}', ${JSON.stringify( Object.keys(bundleMap), )}`, ) } outputPath = path.resolve(root, outputPath) const { App } = tryRequire(outputPath) const context = { url: ctx.req.url } const prerenderedHtml = renderToString( , ) const html = renderToStaticMarkup( , ) let fullHtml = `\n${html}` // use plugins executor to process html and inject react refresh stuff .... if (pluginsExecutor) { const transformResult = await pluginsExecutor.transform({ contents: fullHtml, path: foundRoute.absolute + '.html', loader: 'default' }) fullHtml = transformResult.contents || '' } ctx.body = fullHtml ctx.status = 200 ctx.type = 'html' return next() }) server.on('request', app.callback()) server.on('close', () => rebuild && rebuild.dispose()) return server } export function MainHtml({ prerenderedHtml, clientScriptSrc, context }) { return (
) } export function tryRequire(p: string) { try { const cachePath = require.resolve(p) delete require.cache[cachePath] return require(p) } catch (e) { throw new Error(`Cannot require '${p}': ${e}`) } } ================================================ FILE: paged/tsconfig.json ================================================ { "extends": "../tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "dist" }, "include": ["src"], "exclude": ["dist"] } ================================================ FILE: plugins/alias/CHANGELOG.md ================================================ # @bundless/plugin-alias ## 0.0.1 ### Patch Changes - Fix regex filter issue ================================================ FILE: plugins/alias/README.md ================================================ ## Example ```ts // bundless.config.js const { AliasPlugin } = require('@bundless/plugin-alias') module.exports = { plugins: [ AliasPlugin({ entries: { react: 'preact/compat' }, }), ], } ``` ================================================ FILE: plugins/alias/package.json ================================================ { "name": "@bundless/plugin-alias", "version": "0.0.1", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": "https://github.com/remorses/bundless.git", "scripts": { "build": "tsc", "watch": "tsc -w", "local": "yarn publish --force --registry http://localhost:4873 --access restricted --no-git-tag-version --patch --message 'Local registry publish'" }, "files": [ "dist", "src" ], "keywords": [], "author": "Tommaso De Rossi, morse ", "license": "ISC", "devDependencies": { "@bundless/cli": "0.6.0", "@types/node": "^14.14.13", "@types/globrex": "^0.1.0" }, "dependencies": { "escape-string-regexp": "^4.0.0", "slash": "^3.0.0" }, "peerDependencies": { "@bundless/cli": "*" } } ================================================ FILE: plugins/alias/src/index.ts ================================================ import { Plugin } from '@bundless/cli' import * as esbuild from 'esbuild' import escapeStringRegexp from 'escape-string-regexp' import { platform } from 'os' import slash from 'slash' export default AliasPlugin export function AliasPlugin(options: AliasOptions = {}): Plugin { return { name: 'alias-plugin', // alias plugins need to have enforce pre or node resolve will have higher priority enforce: 'pre', setup({ onResolve, pluginsExecutor }) { const entries = getEntries(options) if (entries.length === 0) { return { name: 'alias-plugin', resolveId: noop, } } const filterRegexes: RegExp[] = flatten( entries.map((x) => x.find as any), ).map((x: any) => typeof x === 'string' ? new RegExp('(' + escapeStringRegexp(x) + ')') : x, ) const resolver = (arg: esbuild.OnResolveArgs) => { const importee = arg.path const importer = arg.importer const importeeId = normalizeId(importee) const importerId = normalizeId(importer) // First match is supposed to be the correct one const matchedEntry = entries.find((entry) => matches(entry.find, importeeId), ) if (!matchedEntry || !importerId) { return null } const updatedId = normalizeId( importeeId.replace( matchedEntry.find, matchedEntry.replacement, ), ) if (!updatedId) { return null } return pluginsExecutor .resolve({ ...arg, importer, path: updatedId, // TODO pass plugin data to let this plugin skip itself from running }) .then((resolved) => { if (!resolved) { resolved = { path: updatedId } } options?.onAlias?.(resolved.path || '') return resolved }) } filterRegexes.forEach((filter) => { onResolve({ filter }, resolver) }) }, } } const VOLUME = /^([A-Z]:)/i const IS_WINDOWS = platform() === 'win32' const noop = () => null function matches(pattern: string | RegExp, importee: string) { if (pattern instanceof RegExp) { return pattern.test(importee) } if (importee.length < pattern.length) { return false } if (importee === pattern) { return true } const importeeStartsWithKey = importee.indexOf(pattern) === 0 const importeeHasSlashAfterKey = importee.substring(pattern.length)[0] === '/' return importeeStartsWithKey && importeeHasSlashAfterKey } function normalizeId(id: string): string function normalizeId(id: string | undefined): string | undefined function normalizeId(id: string | undefined) { if (typeof id === 'string' && (IS_WINDOWS || VOLUME.test(id))) { return slash(id.replace(VOLUME, '')) } return id } function getEntries({ entries }: AliasOptions): readonly Alias[] { if (!entries) { return [] } if (Array.isArray(entries)) { return entries } return Object.entries(entries).map(([key, value]) => { return { find: key, replacement: value } }) } export interface AliasOptions { onAlias?: (resolved: string) => any entries?: readonly Alias[] | { [find: string]: string } } interface Alias { find: string | RegExp replacement: string } function flatten(arr: T[][]): T[] { return arr.reduce(function (flat, toFlatten) { return flat.concat( Array.isArray(toFlatten) ? flatten(toFlatten as any) : toFlatten, ) }, []) } ================================================ FILE: plugins/alias/tsconfig.json ================================================ { "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "dist" }, "include": ["src"] } ================================================ FILE: plugins/babel/CHANGELOG.md ================================================ # @bundless/plugin-babel ## 0.0.2 ### Patch Changes - 717a68e: Fix npm release, removed bin - Updated dependencies [717a68e] - @bundless/cli@0.2.4 ## 0.0.1 ### Patch Changes - 1283051: Initial release ================================================ FILE: plugins/babel/README.md ================================================ ## Example ```ts // bundless.config.js const { BabelPlugin } = require('@bundless/plugin-babel') module.exports = { plugins: [ BabelPlugin({ babelOptions: { plugins: [require('babel-plugin-macros')], }, }), ], } ``` ================================================ FILE: plugins/babel/package.json ================================================ { "name": "@bundless/plugin-babel", "version": "0.0.2", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": "https://github.com/remorses/bundless.git", "scripts": { "build": "tsc", "watch": "tsc -w", "local": "yarn publish --force --registry http://localhost:4873 --access restricted --no-git-tag-version --patch --message 'Local registry publish'" }, "files": [ "dist", "src" ], "keywords": [], "author": "Tommaso De Rossi, morse ", "license": "ISC", "devDependencies": { "@babel/types": "^7.12.10", "@bundless/cli": "0.6.0", "@types/node": "^14.14.13" }, "dependencies": { "@babel/core": "^7.12.10", "@babel/parser": "^7.12.11" }, "peerDependencies": { "@bundless/cli": "*" } } ================================================ FILE: plugins/babel/src/index.ts ================================================ import { ParserOptions, transform, TransformOptions } from '@babel/core' import { ParserPlugin } from '@babel/parser' import { Plugin } from '@bundless/cli' export default BabelPlugin interface Options { /** * Options passed to babel */ babelOptions: TransformOptions /** * Filter which files should babel transform */ filter?: RegExp /** * Run the plugin before or after bundless builtin plugins (like esbuild transform) */ enforce?: 'pre' | 'post' } export function BabelPlugin({ babelOptions, filter = /\.(t|j)sx?$/, enforce = 'pre', }: Options): Plugin { return { name: 'react-refresh', enforce, setup({ onTransform, onResolve, onLoad, ctx: { root, isBuild } }) { onTransform({ filter }, async (args) => { if (args.path.includes('node_modules')) { return null } const parserPlugins: ParserPlugin[] = [ 'jsx', 'importMeta', 'topLevelAwait', 'classProperties', 'classPrivateProperties', 'classPrivateMethods', ] if (/\.tsx?$/.test(args.path)) { parserPlugins.push('typescript', 'decorators-legacy') } const result = await transform(args.contents, { parserOpts: { ...babelParserOpts, plugins: parserPlugins, sourceFilename: args.path, }, plugins: [], ast: false, babelrc: false, configFile: false, sourceType: 'module', filename: args.path, sourceMaps: true, sourceFileName: args.path, ...babelOptions, }) if (!result || !result.code) { return } return { loader: 'default', contents: result.code, map: result.map, } }) }, } } const babelParserOpts: ParserOptions = { sourceType: 'module', allowAwaitOutsideFunction: true, plugins: [ // required for import.meta.hot 'importMeta', 'jsx', // by default we enable proposals slated for ES2020. // full list at https://babeljs.io/docs/en/next/babel-parser#plugins // this should be kept in async with @vue/compiler-core's support range 'bigInt', 'optionalChaining', 'classProperties', 'nullishCoalescingOperator', ], } ================================================ FILE: plugins/babel/tsconfig.json ================================================ { "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "dist" }, "include": ["src"] } ================================================ FILE: plugins/react-refresh/CHANGELOG.md ================================================ # @bundless/plugin-react-refresh ## 2.1.0 ### Minor Changes - Many improvements ## 2.0.3 ### Patch Changes - 717a68e: Fix npm release, removed bin - Updated dependencies [717a68e] - @bundless/cli@0.2.4 ## 2.0.2 ### Patch Changes - 55d7241: Run in pre mode - Updated dependencies [bd7ed34] - @bundless/cli@0.2.3 ## 2.0.1 ### Patch Changes - 73eb17a: try to always enable react refresh, even when non react components exports exist, fix message when non react components are exported ## 2.0.0 ### Patch Changes - Updated dependencies [9a0b4e5] - @bundless/cli@0.2.0 ## 1.0.8 ### Patch Changes - a398d28: add babelPlugins option ## 1.0.7 ### Patch Changes - aa73425: Changed isComponentLikeName to support names with \_ ## 1.0.6 ### Patch Changes - d42ff9d: Fix npm files ## 1.0.5 ### Patch Changes - 0b2d857: Do not warn on default export ## 1.0.4 ### Patch Changes - c2e66aa: configFile: false for babel ## 1.0.3 ### Patch Changes - 9931159: Don't use babelrc file ## 1.0.2 ### Patch Changes - fa99696: Small improvs ## 1.0.1 ### Patch Changes - cc36158: Add filename in babel transform ## 1.0.0 ### Minor Changes - 81c8e26: First release ### Patch Changes - Updated dependencies [81c8e26] - @bundless/cli@0.1.0 ================================================ FILE: plugins/react-refresh/package.json ================================================ { "name": "@bundless/plugin-react-refresh", "version": "2.1.0", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": "https://github.com/remorses/bundless.git", "scripts": { "build": "tsc", "watch": "tsc -w", "local": "yarn publish --force --registry http://localhost:4873 --access restricted --no-git-tag-version --patch --message 'Local registry publish'" }, "files": [ "dist", "src" ], "keywords": [], "author": "Tommaso De Rossi, morse ", "license": "ISC", "devDependencies": { "@babel/types": "^7.12.10", "@bundless/cli": "0.6.0", "@types/node": "^14.14.13" }, "dependencies": { "@babel/core": "^7.12.10", "slash": "^3.0.0", "@babel/parser": "^7.12.11", "react-refresh": "^0.8.2" }, "peerDependencies": { "@bundless/cli": "*" } } ================================================ FILE: plugins/react-refresh/src/index.ts ================================================ import { File as BabelAST, identifier, Identifier, Statement, } from '@babel/types' import fs from 'fs' import slash from 'slash' import { parse as _parse, ParserPlugin } from '@babel/parser' import { Plugin, logger } from '@bundless/cli' import { babelParserOpts, osAgnosticPath } from '@bundless/cli/dist/utils' import { transform } from '@babel/core' import path, { relative } from 'path' const runtimeNamespace = 'react-refresh-runtime' const runtimePath = `_react-refresh-runtime_.js` export default ReactRefreshPlugin export function ReactRefreshPlugin({ babelPlugins = [] as any[], filter = /\.(t|j)sx$/, } = {}): Plugin { return { name: 'react-refresh', enforce: 'pre', setup({ onTransform, onResolve, onLoad, ctx: { root, isBuild } }) { if (process.env.NODE_ENV === 'production' || isBuild) { return } // injects stuff in html onTransform({ filter: /\.html$/ }, (args) => { return { contents: transformHtml(args.contents), } }) onResolve({ filter: new RegExp(runtimePath) }, (args) => { if (path.basename(args.path) !== runtimePath) { return } return { path: runtimePath, namespace: runtimeNamespace, } }) onLoad( { filter: /.*/, namespace: runtimeNamespace }, async (args) => { const runtimeModulePath = require.resolve( 'react-refresh/cjs/react-refresh-runtime.development.js', ) const runtimeCode = ` const exports = {} const process = {env: {NODE_ENV: 'development'}} ${await ( await fs.promises.readFile(runtimeModulePath) ).toString()} ${debounce.toString()} exports.performReactRefresh = debounce(exports.performReactRefresh, 16) export default exports ` return { loader: 'jsx', contents: runtimeCode, } }, ) onTransform({ filter }, async (args) => { if (args.path.includes('node_modules')) { return } // TODO maybe also process js files if they import react, this would enable react refresh for workspaces? but this way they certainly would have non react components as export and break everything const parserPlugins: ParserPlugin[] = [ 'jsx', 'importMeta', 'topLevelAwait', 'classProperties', 'classPrivateProperties', 'classPrivateMethods', ] if (/\.tsx?$/.test(args.path)) { parserPlugins.push('typescript', 'decorators-legacy') } const result = await transform(args.contents, { parserOpts: { ...babelParserOpts, plugins: parserPlugins, sourceFilename: args.path, }, plugins: [ // require('@babel/plugin-transform-react-jsx-self'), // TODO add react source plugin for line numbers? // require('@babel/plugin-transform-react-jsx-source'), [ require('react-refresh/babel'), { skipEnvCheck: true }, ], { visitor: { Program(path) { // Insert at the beginning a string "Hello World" --> not valid JS code path.unshiftContainer( 'body', makeHeader( slash(relative(root, args.path)), ) as any, ) }, }, }, ...(babelPlugins || []), ], ast: true, babelrc: false, configFile: false, sourceType: 'module', filename: args.path, sourceMaps: true, sourceFileName: args.path, }) if (!result || !result.code) { return } if (!/\$RefreshReg\$\(/.test(result.code)) { // no component detected in the file return } const nonComponentExports = result.ast ? getNonComponentExports(result.ast as any) : [] const hmrDisabledMessage = `"${osAgnosticPath( args.path, root, )}" has non react components exports ${nonComponentExports.join( ', ', )}` if (nonComponentExports.length) { logger.warn(hmrDisabledMessage) } const footer = makeFooter(true) return { contents: `${result.code}${footer}`, map: result.map, } }) }, } } function getNonComponentExports(ast: BabelAST) { // Every export must be a React component. // TODO check that default export is a named function return flatten( ast.program.body.map((node) => { if (node.type !== 'ExportNamedDeclaration') { return [] } const { declaration, specifiers } = node if (declaration && declaration.type === 'VariableDeclaration') { return declaration.declarations .filter( (x) => x.id.type === 'Identifier' && !isComponentLikeName(x.id.name), ) .map((x) => (x.id.type === 'Identifier' ? x.id?.name : '')) } return specifiers .filter( ({ exported }) => exported.type === 'Identifier' && !isComponentLikeName(exported.name), ) .map((x) => x.exported.type === 'Identifier' ? x.exported.name : '', ) }), ) } function isComponentLikeName(name: string) { return ( name === 'default' || name.startsWith('__') || // probably some generated code (typeof name === 'string' && name[0] >= 'A' && name[0] <= 'Z') ) } function debounce(fn: () => void, delay: number) { let handle: any return () => { clearTimeout(handle) handle = setTimeout(fn, delay) } } function transformHtml(contents) { return contents.replace( //, `$& `, ) } export function flatten(arr: T[][]): T[] { return arr.reduce(function (flat, toFlatten) { return flat.concat( Array.isArray(toFlatten) ? flatten(toFlatten as any) : toFlatten, ) }, []) } const makeHeader = (path) => { return [ ...parse(`const ${THIS_PATH_NAME} = ${JSON.stringify(path)}`), ...header, ] } const THIS_PATH_NAME = '__this_path__' const header = parse( ` import RefreshRuntime from "/${runtimePath}"; let prevRefreshReg; let prevRefreshSig; if (!window.__bundless_plugin_react_preamble_installed__) { throw new Error( "bundless-plugin-react can't detect preamble. Something is wrong." ); } if (import.meta.hot) { prevRefreshReg = window.$RefreshReg$; prevRefreshSig = window.$RefreshSig$; window.$RefreshReg$ = (type, id) => { RefreshRuntime.register(type, ${THIS_PATH_NAME} + " " + id) }; window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform; }`, ) const makeFooter = (accept) => ` if (import.meta.hot) { window.$RefreshReg$ = prevRefreshReg; window.$RefreshSig$ = prevRefreshSig; ${accept ? `import.meta.hot.accept();` : ''} if (!window.__bundless_plugin_react_timeout) { window.__bundless_plugin_react_timeout = setTimeout(() => { window.__bundless_plugin_react_timeout = 0; RefreshRuntime.performReactRefresh(); }, 30); } }` export function parse( source: string, sourceFilename = 'file.tsx', ): Statement[] { try { return _parse(source, { ...babelParserOpts, sourceFilename }).program .body } catch (e) { throw new Error(`Cannot parse with babel: ${e}`) } } ================================================ FILE: plugins/react-refresh/tsconfig.json ================================================ { "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "dist" }, "include": ["src"] } ================================================ FILE: plugins/svelte/CHANGELOG.md ================================================ # @bundless/plugin-svelte ## 0.0.1 ### Patch Changes - bbbd527: Bump ================================================ FILE: plugins/svelte/package.json ================================================ { "name": "@bundless/plugin-svelte", "version": "0.0.1", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": "https://github.com/remorses/bundless.git", "scripts": { "build": "tsc", "watch": "tsc -w", "local": "yarn publish --force --registry http://localhost:4873 --access restricted --no-git-tag-version --patch --message 'Local registry publish'" }, "files": [ "dist", "src" ], "keywords": [], "author": "Tommaso De Rossi, morse ", "license": "ISC", "devDependencies": { "@bundless/cli": "0.6.0", "@types/node": "^14.14.13", "svelte": "^3.32.1" }, "dependencies": { "svelte-hmr": "^0.12.2" }, "peerDependencies": { "esbuild": "*", "svelte": "*" } } ================================================ FILE: plugins/svelte/src/index.ts ================================================ import { Plugin } from '@bundless/cli' import { NodeResolvePlugin, RewritePlugin } from '@bundless/cli/dist/plugins' import { osAgnosticPath } from '@bundless/cli/dist/utils' import { PartialMessage as ESBuildMessage } from 'esbuild' import { promises as fs } from 'fs' import { platform } from 'os' import path from 'path' import { createMakeHot } from 'svelte-hmr' import * as compiler from 'svelte/compiler' import { CompileOptions, Warning as SvelteWarning, } from 'svelte/types/compiler/interfaces' import { PreprocessorGroup } from 'svelte/types/compiler/preprocess/types' import { typescriptPreprocessor } from './typescript' let makeHot = (...args) => { makeHot = createMakeHot({ walk: compiler.walk }) return makeHot(...args) } export function SveltePlugin(options: PluginOptions = {}): Plugin { let { compilerOptions = {}, preprocess = [], typescript = true, hmrOptions, } = options if (typescript) { preprocess = [typescriptPreprocessor, ...preprocess] } return { name: 'svelte', modulesToPrebundle: [ 'svelte-hmr/runtime/hot-api-esm', 'svelte-hmr/runtime/proxy-adapter-dom', ], setup(build) { const { onLoad, onResolve, ctx: { isBuild, graph, config, root }, } = build NodeResolvePlugin({ extensions: ['.svelte'], isExtensionRequiredInImportPath: true, }).setup({ ...build, onResolve, onLoad() {}, }) if (!isBuild) { RewritePlugin({ filter: /\.svelte(\?.*)?$/ }).setup(build) } let cssMap: Map = new Map() onLoad({ filter: /\.svelte$/i }, async (args) => { let source = await fs.readFile(args.path, 'utf-8') let finalCompileOptions: CompileOptions = { css: false, generate: config.platform === 'node' ? 'ssr' : 'dom', ...compilerOptions, dev: !isBuild, filename: args.path, outputFilename: args.path, format: 'esm', } if (preprocess.length) { let processed = await compiler.preprocess( source, preprocess, { filename: args.path, }, ) source = processed.code if (processed.map) finalCompileOptions.sourcemap = processed.map } try { let compiled = compiler.compile(source, finalCompileOptions) let { js, css, warnings } = compiled if (!finalCompileOptions.css && css?.code) { const cssPath = args.path + '.css' js.code = `import "./${path.basename(cssPath)}";\n` + js.code if (graph) { // mark css file as a derived file from svelte graph.ensureEntry(osAgnosticPath(args.path, root), { computedModules: new Set([ osAgnosticPath(cssPath, root), ]), }) } cssMap.set(args.path, css.code) } if (!isBuild) { js.code = makeHot({ id: args.path, compiledCode: js.code, hotOptions: { preserveLocalState: true, injectCss: true, ...hmrOptions, absoluteImports: false, noOverlay: true, }, compiled: compiled, originalCode: source, compileOptions: finalCompileOptions, }) } return { contents: js.code, warnings: warnings.map(convertMessage), } } catch (e) { return { errors: [convertMessage(e)] } } function convertMessage(msg: SvelteWarning): ESBuildMessage { let { message, start, end } = msg let location: undefined | ESBuildMessage['location'] if (start && end) { let lineText = source.split(/\r\n|\r|\n/g)[start.line] let lineEnd = start.line == end.line ? end.column : lineText.length location = { file: args.path, line: start.line, column: start.column, length: lineEnd - start.column, lineText, } } return { text: message, location } } }) onResolve({ filter: /\.svelte\.css/i }, async (args) => { return { path: path.resolve(args.resolveDir, args.path), } }) onLoad({ filter: /\.svelte\.css/i }, ({ path: filename }) => { filename = filename.replace('.css', '') let css = cssMap.get(filename) if (!css) return null return { contents: css, loader: 'css' } }) }, } } export interface PluginOptions { compilerOptions?: CompileOptions preprocess?: PreprocessorGroup[] hmrOptions?: any typescript?: boolean } export default SveltePlugin ================================================ FILE: plugins/svelte/src/typescript.ts ================================================ import * as esbuild from 'esbuild' import { PreprocessorGroup } from 'svelte/types/compiler/preprocess/types' export let typescriptPreprocessor: PreprocessorGroup = { async script({ content, filename, attributes }) { if ( !( typeof attributes.lang == 'string' && /typescript|ts/.test(attributes.lang) ) ) return { code: content } let result = await esbuild.transform(content, { loader: 'ts', target: 'esnext', sourcefile: filename, tsconfigRaw: { compilerOptions: { importsNotUsedAsValues: 'preserve', }, }, }) return { code: result.code } }, } ================================================ FILE: plugins/svelte/tsconfig.json ================================================ { "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "dist" }, "include": ["src"] } ================================================ FILE: plugins/svelte/yarn-error.log ================================================ Arguments: /Users/morse/.nvm/versions/node/v10.21.0/bin/node /Users/morse/.nvm/versions/node/v10.21.0/bin/yarn add -D @types/svelte-hmr PATH: /Users/morse/google-cloud-sdk/bin:/usr/local/opt/bison/bin:/Users/morse/.nvm/versions/node/v10.21.0/bin:/usr/local/sbin:/usr/local/opt/binutils/bin:/Users/morse/.cargo/bin:/usr/local/bin/madmom:/Users/morse/.local/bin:/Users/morse/go/bin:/Users/morse/.pyenv/shims:/Users/morse/.pyenv:/usr/local/bin/:/Users/morse/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/go/bin:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Wireshark.app/Contents/MacOS:/Users/morse/google-cloud-sdk/bin:/usr/local/opt/bison/bin:/Users/morse/.nvm/versions/node/v10.21.0/bin:/usr/local/sbin:/usr/local/opt/binutils/bin:/Users/morse/.cargo/bin:/usr/local/bin/madmom:/Users/morse/.local/bin:/Users/morse/go/bin:/Users/morse/.pyenv/shims:/Users/morse/.pyenv:/usr/local/bin/:yarn global bin:yarn global bin Yarn version: 1.22.5 Node version: 10.21.0 Platform: darwin x64 Trace: Error: https://registry.yarnpkg.com/@types%2fsvelte-hmr: Not found at Request.params.callback [as _callback] (/Users/morse/.nvm/versions/node/v10.21.0/lib/node_modules/yarn/lib/cli.js:66988:18) at Request.self.callback (/Users/morse/.nvm/versions/node/v10.21.0/lib/node_modules/yarn/lib/cli.js:140662:22) at Request.emit (events.js:198:13) at Request. (/Users/morse/.nvm/versions/node/v10.21.0/lib/node_modules/yarn/lib/cli.js:141634:10) at Request.emit (events.js:198:13) at IncomingMessage. (/Users/morse/.nvm/versions/node/v10.21.0/lib/node_modules/yarn/lib/cli.js:141556:12) at Object.onceWrapper (events.js:286:20) at IncomingMessage.emit (events.js:203:15) at endReadableNT (_stream_readable.js:1145:12) at process._tickCallback (internal/process/next_tick.js:63:19) npm manifest: { "name": "@bundless/plugin-svelte", "version": "1.0.4", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": "https://github.com/remorses/bundless.git", "scripts": { "build": "tsc", "watch": "tsc -w", "local": "yarn publish --force --registry http://localhost:4873 --access restricted --no-git-tag-version --patch --message 'Local registry publish'" }, "files": [ "dist", "src" ], "bin": "cli.js", "keywords": [], "author": "Tommaso De Rossi, morse ", "license": "ISC", "devDependencies": { "@bundless/cli": "^0.1.6", "@types/node": "^14.14.13", "svelte": "^3.31.2" }, "dependencies": { "svelte-hmr": "^0.12.2" }, "peerDependencies": { "esbuild": "*", "svelte": "*" } } yarn manifest: No manifest Lockfile: # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 "@ampproject/toolbox-core@2.7.4", "@ampproject/toolbox-core@^2.7.1-alpha.0": version "2.7.4" resolved "https://registry.yarnpkg.com/@ampproject/toolbox-core/-/toolbox-core-2.7.4.tgz#8355136f16301458ce942acf6c55952c9a415627" integrity sha512-qpBhcS4urB7IKc+jx2kksN7BuvvwCo7Y3IstapWo+EW+COY5EYAUwb2pil37v3TsaqHKgX//NloFP1SKzGZAnw== dependencies: cross-fetch "3.0.6" lru-cache "6.0.0" "@ampproject/toolbox-optimizer@2.7.1-alpha.0": version "2.7.1-alpha.0" resolved "https://registry.yarnpkg.com/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.7.1-alpha.0.tgz#1571dcd02608223ff68f6b7223102a123e381197" integrity sha512-WGPZKVQvHgNYJk1XVJCCmY+NVGTGJtvn0OALDyiegN4FJWOcilQUhCIcjMkZN59u1flz/u+sEKccM5qsROqVyg== dependencies: "@ampproject/toolbox-core" "^2.7.1-alpha.0" "@ampproject/toolbox-runtime-version" "^2.7.1-alpha.0" "@ampproject/toolbox-script-csp" "^2.5.4" "@ampproject/toolbox-validator-rules" "^2.7.1-alpha.0" abort-controller "3.0.0" cross-fetch "3.0.6" cssnano-simple "1.2.1" dom-serializer "1.1.0" domhandler "3.3.0" domutils "2.4.2" htmlparser2 "5.0.1" https-proxy-agent "5.0.0" lru-cache "6.0.0" node-fetch "2.6.1" normalize-html-whitespace "1.0.0" postcss "7.0.32" postcss-safe-parser "4.0.2" terser "5.5.1" "@ampproject/toolbox-runtime-version@^2.7.1-alpha.0": version "2.7.4" resolved "https://registry.yarnpkg.com/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.7.4.tgz#f49da0dab122101ef75ed3caed3a0142487b73e1" integrity sha512-SAdOUOERp42thVNWaBJlnFvFVvnacMVnz5z9LyUZHSnoL1EqrAW5Sz5jv+Ly+gkA8NYsEaUxAdSCBAzE9Uzb4Q== dependencies: "@ampproject/toolbox-core" "2.7.4" "@ampproject/toolbox-script-csp@^2.5.4": version "2.5.4" resolved "https://registry.yarnpkg.com/@ampproject/toolbox-script-csp/-/toolbox-script-csp-2.5.4.tgz#d8b7b91a678ae8f263cb36d9b74e441b7d633aad" integrity sha512-+knTYetI5nWllRZ9wFcj7mYxelkiiFVRAAW/hl0ad8EnKHMH82tRlk40CapEnUHhp6Er5sCYkumQ8dngs3Q4zQ== "@ampproject/toolbox-validator-rules@^2.7.1-alpha.0": version "2.7.4" resolved "https://registry.yarnpkg.com/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.7.4.tgz#a58b5eca723f6c3557ac83b696de0247f5f03ce4" integrity sha512-z3JRcpIZLLdVC9XVe7YTZuB3a/eR9s2SjElYB9AWRdyJyL5Jt7+pGNv4Uwh1uHVoBXsWEVQzNOWSNtrO3mSwZA== dependencies: cross-fetch "3.0.6" "@babel/code-frame@7.12.11", "@babel/code-frame@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: "@babel/highlight" "^7.10.4" "@babel/core@7.12.9", "@babel/core@^7.1.0", "@babel/core@^7.7.5": version "7.12.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== dependencies: "@babel/code-frame" "^7.10.4" "@babel/generator" "^7.12.5" "@babel/helper-module-transforms" "^7.12.1" "@babel/helpers" "^7.12.5" "@babel/parser" "^7.12.7" "@babel/template" "^7.12.7" "@babel/traverse" "^7.12.9" "@babel/types" "^7.12.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" json5 "^2.1.2" lodash "^4.17.19" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" "@babel/core@7.3.4": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.4.tgz#921a5a13746c21e32445bf0798680e9d11a6530b" integrity sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.3.4" "@babel/helpers" "^7.2.0" "@babel/parser" "^7.3.4" "@babel/template" "^7.2.2" "@babel/traverse" "^7.3.4" "@babel/types" "^7.3.4" convert-source-map "^1.1.0" debug "^4.1.0" json5 "^2.1.0" lodash "^4.17.11" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" "@babel/core@^7.0.0", "@babel/core@^7.12.10", "@babel/core@^7.9.6": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== dependencies: "@babel/code-frame" "^7.10.4" "@babel/generator" "^7.12.10" "@babel/helper-module-transforms" "^7.12.1" "@babel/helpers" "^7.12.5" "@babel/parser" "^7.12.10" "@babel/template" "^7.12.7" "@babel/traverse" "^7.12.10" "@babel/types" "^7.12.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" json5 "^2.1.2" lodash "^4.17.19" semver "^5.4.1" source-map "^0.5.0" "@babel/generator@7.3.4": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz#9aa48c1989257877a9d971296e5b73bfe72e446e" integrity sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg== dependencies: "@babel/types" "^7.3.4" jsesc "^2.5.1" lodash "^4.17.11" source-map "^0.5.0" trim-right "^1.0.1" "@babel/generator@^7.10.2", "@babel/generator@^7.12.10", "@babel/generator@^7.12.11", "@babel/generator@^7.3.4": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== dependencies: "@babel/types" "^7.12.11" jsesc "^2.5.1" source-map "^0.5.0" "@babel/generator@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== dependencies: "@babel/types" "^7.12.5" jsesc "^2.5.1" source-map "^0.5.0" "@babel/helper-function-name@^7.1.0", "@babel/helper-function-name@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== dependencies: "@babel/helper-get-function-arity" "^7.12.10" "@babel/template" "^7.12.7" "@babel/types" "^7.12.11" "@babel/helper-function-name@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== dependencies: "@babel/helper-get-function-arity" "^7.10.4" "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" "@babel/helper-get-function-arity@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== dependencies: "@babel/types" "^7.10.4" "@babel/helper-get-function-arity@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== dependencies: "@babel/types" "^7.12.10" "@babel/helper-member-expression-to-functions@^7.12.1": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== dependencies: "@babel/types" "^7.12.7" "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.7.0": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== dependencies: "@babel/types" "^7.12.5" "@babel/helper-module-transforms@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== dependencies: "@babel/helper-module-imports" "^7.12.1" "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-simple-access" "^7.12.1" "@babel/helper-split-export-declaration" "^7.11.0" "@babel/helper-validator-identifier" "^7.10.4" "@babel/template" "^7.10.4" "@babel/traverse" "^7.12.1" "@babel/types" "^7.12.1" lodash "^4.17.19" "@babel/helper-optimise-call-expression@^7.10.4": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz#7f94ae5e08721a49467346aa04fd22f750033b9c" integrity sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw== dependencies: "@babel/types" "^7.12.7" "@babel/helper-plugin-utils@7.10.4", "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== "@babel/helper-replace-supers@^7.12.1": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== dependencies: "@babel/helper-member-expression-to-functions" "^7.12.1" "@babel/helper-optimise-call-expression" "^7.10.4" "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" "@babel/helper-simple-access@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== dependencies: "@babel/types" "^7.12.1" "@babel/helper-split-export-declaration@^7.0.0", "@babel/helper-split-export-declaration@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== dependencies: "@babel/types" "^7.12.11" "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== dependencies: "@babel/types" "^7.11.0" "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== "@babel/helpers@^7.12.5", "@babel/helpers@^7.2.0": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== dependencies: "@babel/template" "^7.10.4" "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" js-tokens "^4.0.0" "@babel/parser@7.3.4": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c" integrity sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ== "@babel/parser@^7.1.0", "@babel/parser@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056" integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg== "@babel/parser@^7.10.2", "@babel/parser@^7.12.0", "@babel/parser@^7.12.11", "@babel/parser@^7.3.4": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== "@babel/parser@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.10.tgz#824600d59e96aea26a5a2af5a9d812af05c3ae81" integrity sha512-PJdRPwyoOqFAWfLytxrWwGrAxghCgh/yTNCYciOz8QgjflA7aZhECPZAa2VUedKg2+QMWkI0L9lynh2SNmNEgA== "@babel/plugin-proposal-object-rest-spread@7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.10.0", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@7.12.1", "@babel/plugin-syntax-jsx@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-parameters@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/runtime@7.12.5", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== dependencies: regenerator-runtime "^0.13.4" "@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.2.2", "@babel/template@^7.3.3": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== dependencies: "@babel/code-frame" "^7.10.4" "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" "@babel/traverse@7.3.4": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz#1330aab72234f8dea091b08c4f8b9d05c7119e06" integrity sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ== dependencies: "@babel/code-frame" "^7.0.0" "@babel/generator" "^7.3.4" "@babel/helper-function-name" "^7.1.0" "@babel/helper-split-export-declaration" "^7.0.0" "@babel/parser" "^7.3.4" "@babel/types" "^7.3.4" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.11" "@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9": version "7.12.9" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.9.tgz#fad26c972eabbc11350e0b695978de6cc8e8596f" integrity sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw== dependencies: "@babel/code-frame" "^7.10.4" "@babel/generator" "^7.12.5" "@babel/helper-function-name" "^7.10.4" "@babel/helper-split-export-declaration" "^7.11.0" "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" "@babel/traverse@^7.10.1", "@babel/traverse@^7.3.4": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== dependencies: "@babel/code-frame" "^7.12.11" "@babel/generator" "^7.12.11" "@babel/helper-function-name" "^7.12.11" "@babel/helper-split-export-declaration" "^7.12.11" "@babel/parser" "^7.12.11" "@babel/types" "^7.12.12" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" "@babel/traverse@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.10.tgz#2d1f4041e8bf42ea099e5b2dc48d6a594c00017a" integrity sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg== dependencies: "@babel/code-frame" "^7.10.4" "@babel/generator" "^7.12.10" "@babel/helper-function-name" "^7.10.4" "@babel/helper-split-export-declaration" "^7.11.0" "@babel/parser" "^7.12.10" "@babel/types" "^7.12.10" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" "@babel/types@7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== dependencies: esutils "^2.0.2" lodash "^4.17.13" to-fast-properties "^2.0.0" "@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13" integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ== dependencies: "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.19" to-fast-properties "^2.0.0" "@babel/types@^7.12.0", "@babel/types@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.11.tgz#a86e4d71e30a9b6ee102590446c98662589283ce" integrity sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA== dependencies: "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" to-fast-properties "^2.0.0" "@babel/types@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.10.tgz#7965e4a7260b26f09c56bcfcb0498af1f6d9b260" integrity sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw== dependencies: "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.19" to-fast-properties "^2.0.0" "@babel/types@^7.12.12", "@babel/types@^7.3.4": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== dependencies: "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@camwiegert/typical@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@camwiegert/typical/-/typical-0.1.1.tgz#c75d3b658e2f542d113c3e266389794c7dc45d6d" integrity sha512-4xAtH3F3uJ8boe9IPahdYFCBELmyOBwHGAn0rDO6C1rx0TuZb5f4UqfuiOQF7YiMJGCOsUIW7LyucMNnVQYsRg== "@chakra-ui/accordion@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-1.0.3.tgz#2c23e6f80edfc6877585faf92a0f4857a5fb5bd4" integrity sha512-pLujWZm89u8NNgEKh2rITKweyUlo3CPu681XKHg+DjPfvebVQvFsI13lApwHMXonD91WlZITHAZ1PVAIXvJgKQ== dependencies: "@chakra-ui/descendant" "1.0.2" "@chakra-ui/hooks" "1.0.2" "@chakra-ui/icon" "1.0.2" "@chakra-ui/transition" "1.0.3" "@chakra-ui/utils" "1.0.2" "@chakra-ui/alert@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-1.0.3.tgz#88ac119db52f91e7a5f37486098d7cde221d8218" integrity sha512-dU+NeiqB40BmYvB4mIJpL1EpB2c479/l7EtbNR/Ne1NoUzUYnDykPYourDIcHIpYQ3KCduhe3KGELH0JZTT4WA== dependencies: "@chakra-ui/icon" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/avatar@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-1.0.2.tgz#e70cb7e6313845653609a8c33953ec8bd49009a3" integrity sha512-yP+ZG3Lb51lSugoja2LCF0GvjL2S1S7/SqTchOi9cxoF3fG70aXhvGZVcJZiSkKdFxg+BKDx23tpx6IIWcmkvg== dependencies: "@chakra-ui/image" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/breadcrumb@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-1.0.2.tgz#560fa9b1eca0a9f62be471c44283d0176831ed8e" integrity sha512-4HNcg1QBCLSBQ+5FajOh/hmq/KklhErWO8nUrZx5yuQcqKxUROI0MfceMCt4RCuIjdUMjGsXrpn2mSI8kIf9XQ== dependencies: "@chakra-ui/utils" "1.0.2" "@chakra-ui/button@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-1.0.3.tgz#2fccdaad9406b6d9de06fcc18c3a2aee7291ccbb" integrity sha512-LEylUfAPEBlt2coLfxYjaJ9U1D9LN8LKvz0jnfXxrWIVyWpiWU0a6Kqm0rLUHzZv15abwNz23btfP52vTF3mvw== dependencies: "@chakra-ui/spinner" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/checkbox@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-1.1.0.tgz#b0a71bf509108b5cb6fbbb54e38eefda4a539f54" integrity sha512-MGsdny0rMdww4fh3xS3iyXx+FVQzMda4lpYnmjm6prlUv7Jv6vEkumDRkAJTWulJzkHl+fvD5jC4jNKh+3zGNg== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/visually-hidden" "1.0.2" "@chakra-ui/clickable@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-1.0.2.tgz#5fd606ecbdc38f2cd824dd4d1fe2227c1b79cdb9" integrity sha512-fNfw+t+oRpxrDFA7WXCYSo2KkQprnZPYQhUTCwLtUMpwkALUZT/C+GBUsY5vm21EUmzPZONteNFdR0KBfxFNwQ== dependencies: "@chakra-ui/utils" "1.0.2" "@chakra-ui/close-button@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-1.0.3.tgz#4de7957a4a07141a150ad4cd715dbe55bd72e70a" integrity sha512-pI9XfYsxSwsAthf6Tp0FTEjCd1X/lRMCwIfoq93rcqw5o9zUvUKQo+y7/AwxxlF4Scrp9x292mqjvH1qCNouaA== dependencies: "@chakra-ui/icon" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/color-mode@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-1.0.2.tgz#28613353792171b4d78df0207ed78b2a9a0075a1" integrity sha512-n4F1xvbHL+YmNrDo16GOgkF+Rgc2awmn7oAPnJZNPyjOoyBghgEdLu7K+1xM14xpo87nX92sVyGMr1/1UbJq2g== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/control-box@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-1.0.2.tgz#e334befb738592c66023055b298259f7a92b0877" integrity sha512-YQE4GasvtZn+aJEQHkch+wp0LySrlBHgBRjdw3y8/FbwAPGOH4KYr3HXre2VqWwfp27M1A+1k7ud6n4wcfjJ1A== dependencies: "@chakra-ui/utils" "1.0.2" "@chakra-ui/counter@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-1.0.2.tgz#d4ad35d8787a8a64e216124518cf136e37fb8d22" integrity sha512-BRqRsiaKcTOpaW10vOgz0boO6EtWxSG+/Uoct6rceeMkDEdeilvVy0PsWso3wT+IieL9SHZAnvQ90lAuDu2aWg== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/css-reset@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-1.0.0.tgz#8395921b35ef27bee0579a4d730c5ab7f7b39734" integrity sha512-UaPsImGHvCgFO3ayp6Ugafu2/3/EG8wlW/8Y9Ihfk1UFv8cpV+3BfWKmuZ7IcmxcBL9dkP6E8p3/M1T0FB92hg== "@chakra-ui/descendant@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-1.0.2.tgz#4d848c3ae02fc34415cf83c81bc9611fa11f95b9" integrity sha512-QkTguL7IWX/HRTmKFsMTJtd94kJ1HkumrxqtptL402ZHavM0jRHyGYEUeGpXg5SUmfNFxPm05vYFdbr9/F2ylQ== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/editable@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-1.0.2.tgz#2d51d0bf963b50926672ed7b9908bcc220e8bd11" integrity sha512-prWiYvHo5xvTlwtF+O8RQkcYjtLNhBbw/eR4naLtu5+u5B0Z3cETPPrgZeccW1DPevvWBKdSn/RCd4lm06IONw== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/focus-lock@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-1.0.2.tgz#8fc79889af4427b489c6051c9b6ef1dc0faea76c" integrity sha512-nArORkn3ygWuruS/Wz/LzULqf3nN95xPZpuQaJWFjkTQoIFd7ntFwzluPeIpw41z7jSvONDPMo4OMbmVX6EiyQ== dependencies: "@chakra-ui/utils" "1.0.2" react-focus-lock "2.4.1" "@chakra-ui/form-control@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-1.1.0.tgz#728e530976e8fea72a761c697c6d3ea2f7b8400a" integrity sha512-kpfpgf9JWwSyQ89o0hIZmQHTsoimLNBZb9I9XQNiXTxEB/eYViVYcIsmSPD8xeyUq7S+wbZV0tLuxAboTNTSrA== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/icon" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/hooks@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-1.0.2.tgz#7497b8e9a317d8289d2099bf1fa4c5b9d1c1e8f3" integrity sha512-YDLzpa778C/bwrbky+svqN9zplK2ayZqEIOC9TNRFvtN3u8bfn2iWWnrmk4Qad8BNxpAaJOeN8QxkrP+REuDiQ== dependencies: "@chakra-ui/utils" "1.0.2" "@reach/auto-id" "0.11.0" compute-scroll-into-view "1.0.14" copy-to-clipboard "3.3.1" "@chakra-ui/icon@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-1.0.2.tgz#26f1aad4451c833c468751944ba613f09be19805" integrity sha512-iLuAaa8vAqVLCejl9+xn8ZKvr7axuS+4CrwIlTW/ta0rL76JZTH/b9w4/EpPVdzTXHk08Vae545YrDyy9shn2g== dependencies: "@chakra-ui/utils" "1.0.2" "@chakra-ui/image@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-1.0.2.tgz#737c4dc91f4428aa5a60f190908f53b970bba51c" integrity sha512-14AZAc3thk7dDXrrP9KPEsyTREiy/LsDBnkYLBILRsFNCRtx7wW1YhXTNKLcQniO0Qb7I3cuAw+gxyNtBvvXVA== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/input@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-1.0.3.tgz#5339b8151d2154f3ceaae43a60b297d1cbeb6639" integrity sha512-DQoBQlc3KbOZvQjhuy0Bi1Fp5SLGgGQYEM1NNfuq/30yX/cfTYELL1cMP6nY3ZcsEh3OCglikTFSUcPX3K9k6g== dependencies: "@chakra-ui/form-control" "1.1.0" "@chakra-ui/utils" "1.0.2" "@chakra-ui/layout@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-1.1.2.tgz#bdd33c568bdc38ac81164a7feab190120ff53198" integrity sha512-wVc6miUkriXeamFw3Ru4+i+PC7kFMhZxQjzvvoQ0f+KVkvyDbqM1tui8/B6ISAmwtbMy08wbqxQ8Y/sYHDUIIA== dependencies: "@chakra-ui/icon" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/live-region@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-1.0.2.tgz#c7ab6c454e685cfab9faaab787ea6ba2b9223dff" integrity sha512-W4xL/IMrGq/bHgyr0QNUbrTLD1wCzmMmc8o71bfWgBKqEwEWS20VyjHu96Qja4tXDbYWFLC2iJiuDMWEI1qnzA== dependencies: "@chakra-ui/utils" "1.0.2" "@chakra-ui/media-query@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-1.0.2.tgz#22ddab0bf9d56ed84d8017ce50ee153e5c15ac88" integrity sha512-rhKO7ad5cw791rhJkeEt3EMVzn6hFec8Ors7iFYchItrXGpT9e1N/OKQFqkUbM4eZCAuDSvZV+Gih0Vx27y7Kw== dependencies: "@chakra-ui/utils" "1.0.2" "@chakra-ui/menu@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-1.0.3.tgz#b130706dd5db246df9fa74876651227af0dad6d8" integrity sha512-znOt6FRCA+gRsvKskgjKUa97wn0jieCNWDhdroZ6jmNbV+LFEb2cWGDgv1VqbRPPkf7rLpQ52c45aCQ0ONVMwQ== dependencies: "@chakra-ui/clickable" "1.0.2" "@chakra-ui/descendant" "1.0.2" "@chakra-ui/hooks" "1.0.2" "@chakra-ui/popper" "1.0.2" "@chakra-ui/transition" "1.0.3" "@chakra-ui/utils" "1.0.2" "@chakra-ui/modal@1.4.1": version "1.4.1" resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-1.4.1.tgz#de30f2ebd0722ed14d128ac126c87143fe88a88a" integrity sha512-uAECraFrjGPCP68Qzb+mf9FkI0WTeThMHvtvudwrf8y2lipYxkNONdvbphAkLIkOuoEUW7oIjoAsQd6ERWJ8Lw== dependencies: "@chakra-ui/close-button" "1.0.3" "@chakra-ui/focus-lock" "1.0.2" "@chakra-ui/hooks" "1.0.2" "@chakra-ui/portal" "1.0.2" "@chakra-ui/transition" "1.0.3" "@chakra-ui/utils" "1.0.2" aria-hidden "^1.1.1" react-remove-scroll "2.4.0" "@chakra-ui/number-input@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-1.0.3.tgz#e9d525a1dda5985ab41a0d718e80e808fd0bfce6" integrity sha512-9InDDQO5UjprFVfekj5+8A4v0kURuBuUJyKGtQqKn9S0JqkYikzvAU543UuRb2pze96qqoEemDFleSqPjdLfUA== dependencies: "@chakra-ui/counter" "1.0.2" "@chakra-ui/form-control" "1.1.0" "@chakra-ui/hooks" "1.0.2" "@chakra-ui/icon" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/pin-input@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-1.1.2.tgz#efc6a9a76a42b568a714caf373d9e70e74281da4" integrity sha512-Pr0uIWo0aVN/N4AlU5+6ky6EzQGb8im41LqG90JqC7HA7rpwraaUQGvpD79Zm/uODGML1yYbTJ4URjFt5FsYHw== dependencies: "@chakra-ui/descendant" "1.0.2" "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/popover@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-1.0.4.tgz#b943ac2d36360907c1ad2f313005fccd04feb382" integrity sha512-at1wEDMgp5fpDs+vwfJw+YMgchGjv089XUeFkGBqSeL3JY5k2HFWQP28yrAxSHmuBtadI5T6LfIaXthfJQzzWg== dependencies: "@chakra-ui/close-button" "1.0.3" "@chakra-ui/hooks" "1.0.2" "@chakra-ui/popper" "1.0.2" "@chakra-ui/portal" "1.0.2" "@chakra-ui/transition" "1.0.3" "@chakra-ui/utils" "1.0.2" "@chakra-ui/popper@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-1.0.2.tgz#f5a9fed3bbf420e13bfd00c458cd6ae459739319" integrity sha512-a2cX8EA/P49C6WeEVDwH2m7hyX8leaa/U77w8oK2pizmWbExJfx2sBtFQjwVpbOXxavlQLBW5jGESDcpelccEA== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@popperjs/core" "2.4.4" dequal "2.0.2" "@chakra-ui/portal@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-1.0.2.tgz#3c29f8d4778a863b702620399ac66f4c6b1700f4" integrity sha512-Nh9tOtpPsFqtpJ0FCk9PBm4TIydLPUtTkZYfShsEwuuxme92HwFjdkR6JKyvb9v+6ogMBYMPO6wLD/KyUHG5Wg== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/progress@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-1.0.3.tgz#1d1fe8a879c12ed38d92fe80803eab1829b156da" integrity sha512-7Qu8pIMNHQf8iH8zMg94LXP/UfGtoN/HBredyVSHSosIYeV/DDzKFgjuF+MdJ3DLLkKjyOtL9lgoxcL2l5lyRg== dependencies: "@chakra-ui/theme-tools" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/radio@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-1.1.0.tgz#d375c22cb880d878dea29230a3c6cc68bc4ef3d8" integrity sha512-fZr3QytRC1yeRnI4cOT/LAGguc3Yw0AYuCsofW4pqjIkOx23lSc7JXHOtCB4fZy2fULl7n/1mcyopSDPh+y61Q== dependencies: "@chakra-ui/form-control" "1.1.0" "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/visually-hidden" "1.0.2" "@chakra-ui/react@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-1.1.2.tgz#51ba641f9856a75c184930bbacc4a9049ca432ed" integrity sha512-swcDv8OCXauTO7tOrCtrb5YJq0drDNb6eB7pygchO+TBwWGdfBGNw4ipD2xG8nrTxuyv9DCH3jY2GblOKf/faw== dependencies: "@chakra-ui/accordion" "1.0.3" "@chakra-ui/alert" "1.0.3" "@chakra-ui/avatar" "1.0.2" "@chakra-ui/breadcrumb" "1.0.2" "@chakra-ui/button" "1.0.3" "@chakra-ui/checkbox" "1.1.0" "@chakra-ui/close-button" "1.0.3" "@chakra-ui/control-box" "1.0.2" "@chakra-ui/counter" "1.0.2" "@chakra-ui/css-reset" "1.0.0" "@chakra-ui/editable" "1.0.2" "@chakra-ui/form-control" "1.1.0" "@chakra-ui/hooks" "1.0.2" "@chakra-ui/icon" "1.0.2" "@chakra-ui/image" "1.0.2" "@chakra-ui/input" "1.0.3" "@chakra-ui/layout" "1.1.2" "@chakra-ui/live-region" "1.0.2" "@chakra-ui/media-query" "1.0.2" "@chakra-ui/menu" "1.0.3" "@chakra-ui/modal" "1.4.1" "@chakra-ui/number-input" "1.0.3" "@chakra-ui/pin-input" "1.1.2" "@chakra-ui/popover" "1.0.4" "@chakra-ui/popper" "1.0.2" "@chakra-ui/portal" "1.0.2" "@chakra-ui/progress" "1.0.3" "@chakra-ui/radio" "1.1.0" "@chakra-ui/select" "1.0.3" "@chakra-ui/skeleton" "1.0.6" "@chakra-ui/slider" "1.0.2" "@chakra-ui/spinner" "1.0.2" "@chakra-ui/stat" "1.0.2" "@chakra-ui/switch" "1.0.3" "@chakra-ui/system" "1.1.3" "@chakra-ui/table" "1.0.2" "@chakra-ui/tabs" "1.0.3" "@chakra-ui/tag" "1.0.3" "@chakra-ui/textarea" "1.0.3" "@chakra-ui/theme" "1.3.0" "@chakra-ui/toast" "1.1.3" "@chakra-ui/tooltip" "1.0.2" "@chakra-ui/transition" "1.0.3" "@chakra-ui/utils" "1.0.2" "@chakra-ui/visually-hidden" "1.0.2" "@chakra-ui/select@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-1.0.3.tgz#8f5c99fcc575da558eb56c9a4fbec2c20cd59b66" integrity sha512-IQsgo4AzX+hj9cZpEiY7vIAxlDoQcWUSveOCgTlI0y3Q4IZnIUWJZTQfPngPq+uwYyFYX7U+35ZjB+Ora4+g8Q== dependencies: "@chakra-ui/form-control" "1.1.0" "@chakra-ui/utils" "1.0.2" "@chakra-ui/skeleton@1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-1.0.6.tgz#022d055fc4e794c6560c6a34c62c322c9933b70f" integrity sha512-x2fczl833U1zXJV+wiIwtIWBk/29t2RCnPevRewwZO3sDybf45vNnS2fT6KKttBBWnUD+phA9cjkNZwBJRDTEw== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/media-query" "1.0.2" "@chakra-ui/system" "1.1.3" "@chakra-ui/utils" "1.0.2" "@chakra-ui/slider@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-1.0.2.tgz#ab6e4e3de29a804f6d6799cb2518f9edbb882387" integrity sha512-QbKEILORGd/qF13fBA1ITvxBMOQhIZn6bXxaIxhQFGoqdIz3sTi3IVJAk4V6rm7jo1v3jo+KEa05Kgm8/MMq6g== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/spinner@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-1.0.2.tgz#c40bffd71a670f81067f7596a6b232f81f3b405c" integrity sha512-i2Z6c74DPHkTflmz2xdbLgG/5yDrcdtl1EuYUxSZRXEM5NjR32Epr3t/nqWdGO3sLBiJ2B5jpubFSRsqWxtBbQ== dependencies: "@chakra-ui/utils" "1.0.2" "@chakra-ui/visually-hidden" "1.0.2" "@chakra-ui/stat@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-1.0.2.tgz#9f004bd81386314dccafb877f0a046f95521941d" integrity sha512-xriKBTCLQtH44ZPtgtDGtz7Q2T4axk+DG2y9I2VhnIioIxAf9vaeL4qi2pK8o+2mS+cgAYfnnr3/dH1eZ1BSrA== dependencies: "@chakra-ui/icon" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/visually-hidden" "1.0.2" "@chakra-ui/styled-system@1.3.1": version "1.3.1" resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-1.3.1.tgz#f0f769d08dbf23c5671482f1bb1751d1abf61d1a" integrity sha512-h9r478zCfVlkhbtIUubrPvNAmisCBsAlx9S+trZD8pgyBwC2uIsRHemU+IYFbojBH5tIZAyD/5yPUbe4bl4P+A== dependencies: "@chakra-ui/utils" "1.0.2" css-get-unit "1.0.1" csstype "3.0.3" "@chakra-ui/switch@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-1.0.3.tgz#104b6a013aeb0e019d2a7a7794e9786c7b58fc45" integrity sha512-Mi/5Y9IuAXooN5UsvpIzGOQAwSCbJdHFJeh/LMnO3suGCT8ClJTw/28YLM3Oyl7euvKzFylcqec6m2ZT6rITyw== dependencies: "@chakra-ui/checkbox" "1.1.0" "@chakra-ui/utils" "1.0.2" "@chakra-ui/system@1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-1.1.3.tgz#8d8770899402a27ee47c852dd803ed849ba41324" integrity sha512-U6/Iuyi4KStCghB/czpCfPZTRzeaHvREivlWLOPy4UbnuqT19SEaDl4mV7jz664LpiNUSo9RQCWCtCLvQGv7iQ== dependencies: "@chakra-ui/color-mode" "1.0.2" "@chakra-ui/styled-system" "1.3.1" "@chakra-ui/utils" "1.0.2" react-fast-compare "3.2.0" "@chakra-ui/table@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-1.0.2.tgz#2374302c2ac6ec43131a311c6f4a99e2c81ace30" integrity sha512-7HP7wvGJqI9Aql8h3BuuJ2iJJXneb1hrPZRyk9YbBI4j3oyy8xdrVpEJ6eJRnpyGX2wFH24OSzTXs3ViQvj+lQ== dependencies: "@chakra-ui/utils" "1.0.2" "@chakra-ui/tabs@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-1.0.3.tgz#34049c955aaf79d78d3856352d53427377f035fc" integrity sha512-DLfY52ieDdmddoB8nCt7OPtBp40d8GnZvaF3hzsu+y6TKEM1SYO/mWd2HR+1CWKQhLsiHnOIB3UsTnCOeT2Bqg== dependencies: "@chakra-ui/clickable" "1.0.2" "@chakra-ui/descendant" "1.0.2" "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/tag@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-1.0.3.tgz#c0000ba06293a80b54e74d07bcd2f04dc192eefc" integrity sha512-csnitXXOwg/cLF5pHHe0zzB8TLEZhHASAnYMXzrBOGxlrxPPbPnoIGY4VTNiQwxDXTBIdrMRdVHy9emboi8GDA== dependencies: "@chakra-ui/icon" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/textarea@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-1.0.3.tgz#a761b41735f948622b3a359631ccea90b353573e" integrity sha512-lxuy7zdfpDLmoxduJyeT6K2iarRQ+a0X7hzmWq61YkNeF5edMLdnvCp7VRNocg36rgcsQWPTNbH6bYnkN7cMuw== dependencies: "@chakra-ui/form-control" "1.1.0" "@chakra-ui/utils" "1.0.2" "@chakra-ui/theme-tools@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-1.0.2.tgz#d4c36f3f4e60295e9f98d418182a98c76ff15393" integrity sha512-wmjz5wPtjfslvvVMoHKyD8pnOQC0Facf93fKZupaxtXaol2eZZ/tYIiA6JUwe5mtk75WvLKAihpqaM8XxeXFWw== dependencies: "@chakra-ui/utils" "1.0.2" "@types/tinycolor2" "1.4.2" tinycolor2 "1.4.2" "@chakra-ui/theme@1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-1.3.0.tgz#5318f60cff2a5a3ae63f3fb4ed8b180f8205cf7b" integrity sha512-e0p+TlUFlvsuvXiwFj8DqfHalf5h2jyXRNh1rTVJkDoGMG1z+JNH/Dtwyr8KA9Ju4n+anZg+qQflKvfVf5nHSQ== dependencies: "@chakra-ui/theme-tools" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/toast@1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-1.1.3.tgz#5de6dd48d8e0b239b1c512be0b65fe715addc6a3" integrity sha512-6GWdGG4O8Qd9diC0pBJzvep1z5P6Hu0b307Q0w+IY+sp/0HnY813j7UHh2DbZfVXstBmt8O+2E0YlDPQyYMZjA== dependencies: "@chakra-ui/alert" "1.0.3" "@chakra-ui/close-button" "1.0.3" "@chakra-ui/hooks" "1.0.2" "@chakra-ui/theme" "1.3.0" "@chakra-ui/transition" "1.0.3" "@chakra-ui/utils" "1.0.2" "@reach/alert" "0.11.0" "@chakra-ui/tooltip@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-1.0.2.tgz#d16929aabe8ed76d4781c606bed7fe51f7fa239d" integrity sha512-I0jlyBYCM+qtnqrWzqkooKu9qBiM6wnnZ2kT+55Bg9K3+4FbPhzEGFrthBPWPbjTKxN7yJBKxA+ZOISVnFQrBg== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/popper" "1.0.2" "@chakra-ui/portal" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/visually-hidden" "1.0.2" "@chakra-ui/transition@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-1.0.3.tgz#b00f261887fc496358fe8a5bb2d8693641c71527" integrity sha512-GZQNJgfyJn58N4/5AanF3pZYuxpPmyAokBMEsij80KDdKN0iVaysFYQG2h8WsE031aVI690+/QCzVGBQCA3N7A== dependencies: "@chakra-ui/hooks" "1.0.2" "@chakra-ui/utils" "1.0.2" "@chakra-ui/utils@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-1.0.2.tgz#c9ae5a71849b5d2f1f5d316ab66a40ca6f1ed32c" integrity sha512-2EdZkBIQ+14uNskY8tEI4X0VaNk/dZ70Uld5XpHWY5fOm6NVBziQT4gXbUu9+leHmeUseq+5xot35MCwYIaGkg== dependencies: "@types/lodash.mergewith" "4.6.6" "@types/object-assign" "4.0.30" css-box-model "1.2.1" lodash.mergewith "4.6.2" object-assign "4.1.1" "@chakra-ui/visually-hidden@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-1.0.2.tgz#b091ef42700b2f8c1b88d19bf45b9f32c8cf0e1c" integrity sha512-W73zVywhBnTa38Lz+dxcTp5FuiYFRBOwUnNNN9nA8wrBHvZBD6BaFrFXaugUj2AwJckaBz2UBxCGh74DFx7Dpw== dependencies: "@chakra-ui/utils" "1.0.2" "@changesets/apply-release-plan@^4.0.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@changesets/apply-release-plan/-/apply-release-plan-4.1.0.tgz#ec67c9a0f507c19740d9344766e37dd51fc981ee" integrity sha512-NKMg0In+945eCGxPQJa6haKMDIr6WFngnsqRICaTH28WJy0NZoURoTUcAUSdgvur1J+9rWuVgWAfISyRpLErzg== dependencies: "@babel/runtime" "^7.10.4" "@changesets/config" "^1.2.0" "@changesets/get-version-range-type" "^0.3.2" "@changesets/git" "^1.0.5" "@changesets/types" "^3.1.0" "@manypkg/get-packages" "^1.0.1" detect-indent "^6.0.0" fs-extra "^7.0.1" lodash.startcase "^4.4.0" outdent "^0.5.0" prettier "^1.19.1" resolve-from "^5.0.0" semver "^5.4.1" "@changesets/assemble-release-plan@^4.0.0": version "4.0.1" resolved "https://registry.yarnpkg.com/@changesets/assemble-release-plan/-/assemble-release-plan-4.0.1.tgz#37906bd89226274c6a67ba2598de001b617e01ab" integrity sha512-1UqJpX5Tj2kGtcI3anG3vsLFfX6na5fLsPaxwgS7T/zt1jJ1hv0cMC+iP6fd9BuCHvcFn22GT74bcRaVnAvm3Q== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" "@changesets/get-dependents-graph" "^1.1.3" "@changesets/types" "^3.1.0" "@manypkg/get-packages" "^1.0.1" semver "^5.4.1" "@changesets/cli@^2.12.0": version "2.12.0" resolved "https://registry.yarnpkg.com/@changesets/cli/-/cli-2.12.0.tgz#26124b051e6ce6dcc5aa4595588c8cb2ce3e4363" integrity sha512-dGdFkg75zsaEObsG8gwMLglS6sJVjXWwgVTAzEIjqIoWVnKwqZqccTb4gn0noq47uCwy7SqxiAJqGibIy9UOKw== dependencies: "@babel/runtime" "^7.10.4" "@changesets/apply-release-plan" "^4.0.0" "@changesets/assemble-release-plan" "^4.0.0" "@changesets/config" "^1.4.0" "@changesets/errors" "^0.1.4" "@changesets/get-dependents-graph" "^1.1.3" "@changesets/get-release-plan" "^2.0.1" "@changesets/git" "^1.0.6" "@changesets/logger" "^0.0.5" "@changesets/pre" "^1.0.4" "@changesets/read" "^0.4.6" "@changesets/types" "^3.2.0" "@changesets/write" "^0.1.3" "@manypkg/get-packages" "^1.0.1" "@types/semver" "^6.0.0" boxen "^1.3.0" chalk "^2.1.0" enquirer "^2.3.0" external-editor "^3.1.0" fs-extra "^7.0.1" human-id "^1.0.2" is-ci "^2.0.0" meow "^6.0.0" outdent "^0.5.0" p-limit "^2.2.0" preferred-pm "^3.0.0" semver "^5.4.1" spawndamnit "^2.0.0" term-size "^2.1.0" tty-table "^2.8.10" "@changesets/config@^1.2.0", "@changesets/config@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@changesets/config/-/config-1.4.0.tgz#c157a4121f198b749f2bbc2e9015b6e976ece7d6" integrity sha512-eoTOcJ6py7jBDY8rUXwEGxR5UtvUX+p//0NhkVpPGcnvIeITHq+DOIsuWyGzWcb+1FaYkof3CCr32/komZTu4Q== dependencies: "@changesets/errors" "^0.1.4" "@changesets/get-dependents-graph" "^1.1.3" "@changesets/logger" "^0.0.5" "@changesets/types" "^3.2.0" "@manypkg/get-packages" "^1.0.1" fs-extra "^7.0.1" micromatch "^4.0.2" "@changesets/errors@^0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@changesets/errors/-/errors-0.1.4.tgz#f79851746c43679a66b383fdff4c012f480f480d" integrity sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q== dependencies: extendable-error "^0.1.5" "@changesets/get-dependents-graph@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@changesets/get-dependents-graph/-/get-dependents-graph-1.1.3.tgz#da959c43ce98f3a990a6b8d9c1f894bcc1b629c7" integrity sha512-cTbySXwSv9yWp4Pp5R/b5Qv23wJgFaFCqUbsI3IJ2pyPl0vMaODAZS8NI1nNK2XSxGIg1tw+dWNSR4PlrKBSVQ== dependencies: "@changesets/types" "^3.0.0" "@manypkg/get-packages" "^1.0.1" chalk "^2.1.0" fs-extra "^7.0.1" semver "^5.4.1" "@changesets/get-release-plan@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@changesets/get-release-plan/-/get-release-plan-2.0.1.tgz#b95d8f1a3cc719ff4b42b9b9aae72458d8787c13" integrity sha512-+x5N9/Iaka+c0Kq7+3JsboMNyffKYlWPmdm+VeafDcMwJFhBDkxm84qaCJ93ydmnzQOTig6gYVqw0k8BbHExyQ== dependencies: "@babel/runtime" "^7.10.4" "@changesets/assemble-release-plan" "^4.0.0" "@changesets/config" "^1.2.0" "@changesets/pre" "^1.0.4" "@changesets/read" "^0.4.6" "@changesets/types" "^3.1.0" "@manypkg/get-packages" "^1.0.1" "@changesets/get-version-range-type@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz#8131a99035edd11aa7a44c341cbb05e668618c67" integrity sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg== "@changesets/git@^1.0.5", "@changesets/git@^1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@changesets/git/-/git-1.0.6.tgz#057e627e5d3fcb74bf6c18d7284e130ba5a7632e" integrity sha512-e0M06XuME3W5lGhz+CO0vLc60u+hLk/pYjOx/6GXEWuQrwtGgeycFIfRgRt8qTs664o1oKtVHBbd7ItpoWgFfA== dependencies: "@babel/runtime" "^7.10.4" "@changesets/errors" "^0.1.4" "@changesets/types" "^3.1.1" "@manypkg/get-packages" "^1.0.1" is-subdir "^1.1.1" spawndamnit "^2.0.0" "@changesets/logger@^0.0.5": version "0.0.5" resolved "https://registry.yarnpkg.com/@changesets/logger/-/logger-0.0.5.tgz#68305dd5a643e336be16a2369cb17cdd8ed37d4c" integrity sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw== dependencies: chalk "^2.1.0" "@changesets/parse@^0.3.6": version "0.3.7" resolved "https://registry.yarnpkg.com/@changesets/parse/-/parse-0.3.7.tgz#1368136e2b83d5cff11b4d383a3032723530db99" integrity sha512-8yqKulslq/7V2VRBsJqPgjnZMoehYqhJm5lEOXJPZ2rcuSdyj8+p/2vq2vRDBJT2m0rP+C9G8DujsGYQIFZezw== dependencies: "@changesets/types" "^3.0.0" js-yaml "^3.13.1" "@changesets/pre@^1.0.4": version "1.0.5" resolved "https://registry.yarnpkg.com/@changesets/pre/-/pre-1.0.5.tgz#91e5e3b31b4a85ce37de72f6511a786f62f29b51" integrity sha512-p43aAQY3aijhDnBLCriPao5YArlRjD4mSHRJq9PsBhljVLWqQQXcn6seSd77d+bD1tATLhB8tQ2eYoxMtMydXQ== dependencies: "@babel/runtime" "^7.4.4" "@changesets/errors" "^0.1.4" "@changesets/types" "^3.0.0" "@manypkg/get-packages" "^1.0.1" fs-extra "^7.0.1" "@changesets/read@^0.4.6": version "0.4.6" resolved "https://registry.yarnpkg.com/@changesets/read/-/read-0.4.6.tgz#1c03e709a870a070fc95490ffa696297d23458f7" integrity sha512-rOd8dsF/Lgyy2SYlDalb3Ts/meDI2AcKPXYhSXIW3k6+ZLlj6Pt+nmgV5Ut8euyH7loibklNTDemfvMffF4xig== dependencies: "@babel/runtime" "^7.4.4" "@changesets/git" "^1.0.5" "@changesets/logger" "^0.0.5" "@changesets/parse" "^0.3.6" "@changesets/types" "^3.0.0" chalk "^2.1.0" fs-extra "^7.0.1" p-filter "^2.1.0" "@changesets/types@^3.0.0", "@changesets/types@^3.1.0", "@changesets/types@^3.1.1", "@changesets/types@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@changesets/types/-/types-3.2.0.tgz#d8306d7219c3b19b6d860ddeb9d7374e2dd6b035" integrity sha512-rAmPtOyXpisEEE25CchKNUAf2ApyAeuZ/h78YDoqKZaCk5tUD0lgYZGPIRV9WTPoqNjJULIym37ogc6pkax5jg== "@changesets/write@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@changesets/write/-/write-0.1.3.tgz#00ae575af50274773d7493e77fb96838a08ad8ad" integrity sha512-q79rbwlVmTNKP9O6XxcMDj81CEOn/kQHbTFdRleW0tFUv98S1EyEAE9vLPPzO6WnQipHnaozxB1zMhHy0aQn8Q== dependencies: "@babel/runtime" "^7.4.4" "@changesets/types" "^3.0.0" fs-extra "^7.0.1" human-id "^1.0.2" prettier "^1.18.2" "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== dependencies: exec-sh "^0.3.2" minimist "^1.2.0" "@emotion/babel-plugin@^11.0.0": version "11.1.2" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.1.2.tgz#68fe1aa3130099161036858c64ee92056c6730b7" integrity sha512-Nz1k7b11dWw8Nw4Z1R99A9mlB6C6rRsCtZnwNUOj4NsoZdrO2f2A/83ST7htJORD5zpOiLKY59aJN23092949w== dependencies: "@babel/helper-module-imports" "^7.7.0" "@babel/plugin-syntax-jsx" "^7.12.1" "@babel/runtime" "^7.7.2" "@emotion/hash" "^0.8.0" "@emotion/memoize" "^0.7.5" "@emotion/serialize" "^1.0.0" babel-plugin-macros "^2.6.1" convert-source-map "^1.5.0" escape-string-regexp "^4.0.0" find-root "^1.1.0" source-map "^0.5.7" stylis "^4.0.3" "@emotion/cache@^11.1.3": version "11.1.3" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.1.3.tgz#c7683a9484bcd38d5562f2b9947873cf66829afd" integrity sha512-n4OWinUPJVaP6fXxWZD9OUeQ0lY7DvtmtSuqtRWT0Ofo/sBLCVSgb4/Oa0Q5eFxcwablRKjUXqXtNZVyEwCAuA== dependencies: "@emotion/memoize" "^0.7.4" "@emotion/sheet" "^1.0.0" "@emotion/utils" "^1.0.0" "@emotion/weak-memoize" "^0.2.5" stylis "^4.0.3" "@emotion/hash@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== "@emotion/is-prop-valid@^0.8.2": version "0.8.8" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== dependencies: "@emotion/memoize" "0.7.4" "@emotion/is-prop-valid@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.0.0.tgz#1dbe82e52a12c065d416a702e2d106e552cde5be" integrity sha512-G5X0t7eR9pkhUvAY32QS3lToP9JyNF8It5CcmMvbWjmC9/Yq7IhevaKqxl+me2BKR93iTPiL/h3En1ZX/1G3PQ== dependencies: "@emotion/memoize" "^0.7.4" "@emotion/memoize@0.7.4": version "0.7.4" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== "@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== "@emotion/react@^11.1.4": version "11.1.4" resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.1.4.tgz#ddee4247627ff7dd7d0c6ae52f1cfd6b420357d2" integrity sha512-9gkhrW8UjV4IGRnEe4/aGPkUxoGS23aD9Vu6JCGfEDyBYL+nGkkRBoMFGAzCT9qFdyUvQp4UUtErbKWxq/JS4A== dependencies: "@babel/runtime" "^7.7.2" "@emotion/cache" "^11.1.3" "@emotion/serialize" "^1.0.0" "@emotion/sheet" "^1.0.1" "@emotion/utils" "^1.0.0" "@emotion/weak-memoize" "^0.2.5" hoist-non-react-statics "^3.3.1" "@emotion/serialize@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.0.tgz#1a61f4f037cf39995c97fc80ebe99abc7b191ca9" integrity sha512-zt1gm4rhdo5Sry8QpCOpopIUIKU+mUSpV9WNmFILUraatm5dttNEaYzUWWSboSMUE6PtN2j1cAsuvcugfdI3mw== dependencies: "@emotion/hash" "^0.8.0" "@emotion/memoize" "^0.7.4" "@emotion/unitless" "^0.7.5" "@emotion/utils" "^1.0.0" csstype "^3.0.2" "@emotion/sheet@^1.0.0", "@emotion/sheet@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.0.1.tgz#245f54abb02dfd82326e28689f34c27aa9b2a698" integrity sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g== "@emotion/styled@11", "@emotion/styled@^11", "@emotion/styled@^11.0.0": version "11.0.0" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.0.0.tgz#698196c2822746360a8644a73a5d842b2d1a78a5" integrity sha512-498laccxJlBiJqrr2r/fx9q+Pr55D0URP2UyOkoSGLjevb8LLAFWueqthsQ5XijE66iGo7y3rzzEYdA7CHmZEQ== dependencies: "@babel/runtime" "^7.7.2" "@emotion/babel-plugin" "^11.0.0" "@emotion/is-prop-valid" "^1.0.0" "@emotion/serialize" "^1.0.0" "@emotion/utils" "^1.0.0" "@emotion/unitless@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== "@emotion/utils@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.0.0.tgz#abe06a83160b10570816c913990245813a2fd6af" integrity sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA== "@emotion/weak-memoize@^0.2.5": version "0.2.5" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== "@esbuild-plugins/all@^0.0.15": version "0.0.15" resolved "https://registry.yarnpkg.com/@esbuild-plugins/all/-/all-0.0.15.tgz#6d123f4623b72647e88386d885c496916b1ebbd5" integrity sha512-hPXN3fEGgaoHpTyq3y7zsz5dMaVzY8UaUyT2QDfZJ54XQ8I04tmhSgRfZVS/gYGMc68BR+1cM67eFfXYm4erWw== dependencies: "@esbuild-plugins/esm-externals" "0.0.2" "@esbuild-plugins/html" "0.0.16" "@esbuild-plugins/node-globals-polyfill" "0.0.5" "@esbuild-plugins/node-modules-polyfill" "0.0.2" "@esbuild-plugins/node-resolve" "0.0.13" "@esbuild-plugins/esm-externals@0.0.2": version "0.0.2" resolved "https://registry.yarnpkg.com/@esbuild-plugins/esm-externals/-/esm-externals-0.0.2.tgz#2d2932beeb7be98f460fe21f339ae2aac609a7d5" integrity sha512-Ms0n+uZDhi2akPG45DzcSsyIgtHvdZ8+OJ6JSzkSY1mh3VHNEOgDvxX5Bfk2NQleswRmjnBLhnPPBC+16FXUEQ== dependencies: debug "^4.3.1" escape-string-regexp "^4.0.0" "@esbuild-plugins/html@0.0.16": version "0.0.16" resolved "https://registry.yarnpkg.com/@esbuild-plugins/html/-/html-0.0.16.tgz#e11d57b738113a037b79c0d1cca10cdd57c38371" integrity sha512-icLvdxFwAtotepGqEgBalMZl783IUy3L9mObNIbVC1fYaThWlspflqc9iSkePbcafaXX38Hpuu/l8vYn5lv2oA== dependencies: "@esbuild-plugins/node-resolve" "0.0.13" debug "^4.3.1" posthtml "^0.15.1" "@esbuild-plugins/node-globals-polyfill@0.0.5": version "0.0.5" resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.0.5.tgz#3a9ab355befd394af77c5a4966d4706b9bedf415" integrity sha512-Xz66k/M8ZtkHghnuuGYrJt4E/68O0d/acYX5rU0PzDB1znLwZkm9m5dho27il63C2MIit1uNCpdBn2VfTw9/uQ== dependencies: debug "^4.3.1" rollup-plugin-node-polyfills "^0.2.1" "@esbuild-plugins/node-modules-polyfill@0.0.2": version "0.0.2" resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.0.2.tgz#1a3f956cff4b4833ff1a0f8b955de1250c7f4bf6" integrity sha512-ugSpQk7oIfzc0OmNG9i/B+64NXWK3LFBzM8T1zGJpuTldT1tQPUQDLsO6h6jrhHoqTSzuC72LBEycbrPLLKQvQ== dependencies: debug "^4.3.1" escape-string-regexp "^4.0.0" resolve "^1.19.0" rollup-plugin-node-polyfills "0.2.1" "@esbuild-plugins/node-resolve@0.0.13": version "0.0.13" resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-resolve/-/node-resolve-0.0.13.tgz#89251a7b6ce50e564ba7d73265c4e414d6b2649a" integrity sha512-Qmu6tbwa8ytE+hN3yKOQmQ6KovQ/sMkiDwivpLBezxaYBVZoXdEuD8SIpJaX7hSQxC8aN81OXIpLwHMwDrIKXg== dependencies: "@types/resolve" "^1.17.1" debug "^4.3.1" escape-string-regexp "^4.0.0" resolve "^1.19.0" "@fullhuman/postcss-purgecss@^2.1.2": version "2.3.0" resolved "https://registry.yarnpkg.com/@fullhuman/postcss-purgecss/-/postcss-purgecss-2.3.0.tgz#50a954757ec78696615d3e118e3fee2d9291882e" integrity sha512-qnKm5dIOyPGJ70kPZ5jiz0I9foVOic0j+cOzNDoo8KoCf6HjicIZ99UfO2OmE7vCYSKAAepEwJtNzpiiZAh9xw== dependencies: postcss "7.0.32" purgecss "^2.3.0" "@hapi/accept@5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.1.tgz#068553e867f0f63225a506ed74e899441af53e10" integrity sha512-fMr4d7zLzsAXo28PRRQPXR1o2Wmu+6z+VY1UzDp0iFo13Twj8WePakwXBiqn3E1aAlTpSNzCXdnnQXFhst8h8Q== dependencies: "@hapi/boom" "9.x.x" "@hapi/hoek" "9.x.x" "@hapi/boom@9.x.x": version "9.1.1" resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.1.tgz#89e6f0e01637c2a4228da0d113e8157c93677b04" integrity sha512-VNR8eDbBrOxBgbkddRYIe7+8DZ+vSbV6qlmaN2x7eWjsUjy2VmQgChkOKcVZIeupEZYj+I0dqNg430OhwzagjA== dependencies: "@hapi/hoek" "9.x.x" "@hapi/hoek@9.x.x": version "9.1.1" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa" integrity sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" find-up "^4.1.0" get-package-type "^0.1.0" js-yaml "^3.13.1" resolve-from "^5.0.0" "@istanbuljs/schema@^0.1.2": version "0.1.2" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== "@jest/console@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" jest-message-util "^26.6.2" jest-util "^26.6.2" slash "^3.0.0" "@jest/core@^26.6.3": version "26.6.3" resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== dependencies: "@jest/console" "^26.6.2" "@jest/reporters" "^26.6.2" "@jest/test-result" "^26.6.2" "@jest/transform" "^26.6.2" "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" jest-changed-files "^26.6.2" jest-config "^26.6.3" jest-haste-map "^26.6.2" jest-message-util "^26.6.2" jest-regex-util "^26.0.0" jest-resolve "^26.6.2" jest-resolve-dependencies "^26.6.3" jest-runner "^26.6.3" jest-runtime "^26.6.3" jest-snapshot "^26.6.2" jest-util "^26.6.2" jest-validate "^26.6.2" jest-watcher "^26.6.2" micromatch "^4.0.2" p-each-series "^2.1.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" "@jest/environment@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== dependencies: "@jest/fake-timers" "^26.6.2" "@jest/types" "^26.6.2" "@types/node" "*" jest-mock "^26.6.2" "@jest/fake-timers@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== dependencies: "@jest/types" "^26.6.2" "@sinonjs/fake-timers" "^6.0.1" "@types/node" "*" jest-message-util "^26.6.2" jest-mock "^26.6.2" jest-util "^26.6.2" "@jest/globals@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== dependencies: "@jest/environment" "^26.6.2" "@jest/types" "^26.6.2" expect "^26.6.2" "@jest/reporters@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^26.6.2" "@jest/test-result" "^26.6.2" "@jest/transform" "^26.6.2" "@jest/types" "^26.6.2" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" istanbul-lib-instrument "^4.0.3" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" jest-haste-map "^26.6.2" jest-resolve "^26.6.2" jest-util "^26.6.2" jest-worker "^26.6.2" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" v8-to-istanbul "^7.0.0" optionalDependencies: node-notifier "^8.0.0" "@jest/source-map@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" source-map "^0.6.0" "@jest/test-result@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: "@jest/console" "^26.6.2" "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" "@jest/test-sequencer@^26.6.3": version "26.6.3" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== dependencies: "@jest/test-result" "^26.6.2" graceful-fs "^4.2.4" jest-haste-map "^26.6.2" jest-runner "^26.6.3" jest-runtime "^26.6.3" "@jest/transform@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^26.6.2" babel-plugin-istanbul "^6.0.0" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" jest-haste-map "^26.6.2" jest-regex-util "^26.0.0" jest-util "^26.6.2" micromatch "^4.0.2" pirates "^4.0.1" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" "@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^15.0.0" chalk "^4.0.0" "@koa/cors@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@koa/cors/-/cors-3.1.0.tgz#618bb073438cfdbd3ebd0e648a76e33b84f3a3b2" integrity sha512-7ulRC1da/rBa6kj6P4g2aJfnET3z8Uf3SWu60cjbtxTA5g8lxRdX/Bd2P92EagGwwAhANeNw8T8if99rJliR6Q== dependencies: vary "^1.1.2" "@koa/router@^10.0.0": version "10.0.0" resolved "https://registry.yarnpkg.com/@koa/router/-/router-10.0.0.tgz#699115561afbd2740e2848ba299fc76b9e058ad6" integrity sha512-z9ytrKWn/j/qUApMSJzZbUwkbLcN2ZXGq6UsqWkZb50Us+/Qpu0RwgZ6ytawVOhfFBZ1ai5iVWeD2Dcu0qcnJw== dependencies: debug "^4.1.1" http-errors "^1.7.3" koa-compose "^4.1.0" methods "^1.1.2" path-to-regexp "^6.1.0" "@manypkg/find-root@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA== dependencies: "@babel/runtime" "^7.5.5" "@types/node" "^12.7.1" find-up "^4.1.0" fs-extra "^8.1.0" "@manypkg/get-packages@^1.0.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@manypkg/get-packages/-/get-packages-1.1.1.tgz#7c7e72d0061ab2e61d2ce4da58ce91290a60ac8d" integrity sha512-J6VClfQSVgR6958eIDTGjfdCrELy1eT+SHeoSMomnvRQVktZMnEA5edIr5ovRFNw5y+Bk/jyoevPzGYod96mhw== dependencies: "@babel/runtime" "^7.5.5" "@manypkg/find-root" "^1.1.0" fs-extra "^8.1.0" globby "^11.0.0" read-yaml-file "^1.1.0" "@mdx-js/loader@^1.5.8": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.6.22.tgz#d9e8fe7f8185ff13c9c8639c048b123e30d322c4" integrity sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q== dependencies: "@mdx-js/mdx" "1.6.22" "@mdx-js/react" "1.6.22" loader-utils "2.0.0" "@mdx-js/mdx@1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== dependencies: "@babel/core" "7.12.9" "@babel/plugin-syntax-jsx" "7.12.1" "@babel/plugin-syntax-object-rest-spread" "7.8.3" "@mdx-js/util" "1.6.22" babel-plugin-apply-mdx-type-prop "1.6.22" babel-plugin-extract-import-names "1.6.22" camelcase-css "2.0.1" detab "2.0.4" hast-util-raw "6.0.1" lodash.uniq "4.5.0" mdast-util-to-hast "10.0.1" remark-footnotes "2.0.0" remark-mdx "1.6.22" remark-parse "8.0.3" remark-squeeze-paragraphs "4.0.0" style-to-object "0.3.0" unified "9.2.0" unist-builder "2.0.3" unist-util-visit "2.0.3" "@mdx-js/react@1.6.22", "@mdx-js/react@^1.5.8": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== "@mdx-js/util@1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== "@next/env@10.0.5": version "10.0.5" resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.5.tgz#446e59ee7a8d05061be784b24732c369653038ab" integrity sha512-dw6Q7PALIo7nTFfaB4OnRDte3EikrApGtjX/4cRmYXLh+uudDI50aS39MaGeKKZ2mxPKoNiFcY6Slv1f6KIPOw== "@next/mdx@^9.3.4": version "9.5.5" resolved "https://registry.yarnpkg.com/@next/mdx/-/mdx-9.5.5.tgz#c5742c7db722905c4c7456098c1f2ba1cae3994d" integrity sha512-IdwwXrxqNhZuEeyVdCKtv1R2CqIsAZm/rtCUbE5WImFW3VK8nrSFDFi+JkoWoDcHgGgaJYgfoYAoieHV5POGJg== "@next/polyfill-module@10.0.5": version "10.0.5" resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.5.tgz#f2de3deee8694cc75094fea4e91225724b3a21e1" integrity sha512-R6ySTTIl6yqyO3Xft7h+QR9Z4e6epEw+AGO125CrwPmCDQ8ASLGltsHYvSHBP7Eae7xaorkXHW0jeI8NewLpew== "@next/react-dev-overlay@10.0.5": version "10.0.5" resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.5.tgz#f0006e56d8c8b4269f341ff22233e4a7e1176b52" integrity sha512-olqIaaRvFezzi02V/AYwvmrGbShUNrJDvyZTGNahxXEkiYsuu67llY5IKFM5Oya93/eRqaCCKMn89vpvYtvDcw== dependencies: "@babel/code-frame" "7.12.11" anser "1.4.9" chalk "4.0.0" classnames "2.2.6" css.escape "1.5.1" data-uri-to-buffer "3.0.1" platform "1.3.6" shell-quote "1.7.2" source-map "0.8.0-beta.0" stacktrace-parser "0.1.10" strip-ansi "6.0.0" "@next/react-refresh-utils@10.0.5": version "10.0.5" resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.5.tgz#c1ca664c4ffe2f79d14383323d783368833d503b" integrity sha512-Eo+nvW1ZhdkuxBWSsKHGDLNspUaJJQClld9R+H+EtiIuAQtTa8f2rhcQeyUOtvUNQoPyq7Em2PwUqOQD6LOOMA== "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== dependencies: "@nodelib/fs.stat" "2.0.3" run-parallel "^1.1.9" "@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== "@nodelib/fs.walk@^1.2.3": version "1.2.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== dependencies: "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" "@npmcli/move-file@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== dependencies: mkdirp "^1.0.4" "@octokit/openapi-types@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-2.2.0.tgz#123e0438a0bc718ccdac3b5a2e69b3dd00daa85b" integrity sha512-274lNUDonw10kT8wHg8fCcUc1ZjZHbWv0/TbAwb0ojhBQqZYc1cQ/4yqTVTtPMDeZ//g7xVEYe/s3vURkRghPg== "@octokit/request-error@^2.0.2": version "2.0.4" resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.4.tgz#07dd5c0521d2ee975201274c472a127917741262" integrity sha512-LjkSiTbsxIErBiRh5wSZvpZqT4t0/c9+4dOe0PII+6jXR+oj/h66s7E4a/MghV7iT8W9ffoQ5Skoxzs96+gBPA== dependencies: "@octokit/types" "^6.0.0" deprecation "^2.0.0" once "^1.4.0" "@octokit/types@^6.0.0": version "6.2.1" resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.2.1.tgz#7f881fe44475ab1825776a4a59ca1ae082ed1043" integrity sha512-jHs9OECOiZxuEzxMZcXmqrEO8GYraHF+UzNVH2ACYh8e/Y7YoT+hUf9ldvVd6zIvWv4p3NdxbQ0xx3ku5BnSiA== dependencies: "@octokit/openapi-types" "^2.2.0" "@types/node" ">= 8" "@octokit/webhooks@^7.11.0": version "7.21.0" resolved "https://registry.yarnpkg.com/@octokit/webhooks/-/webhooks-7.21.0.tgz#2aee3404aa311740a5f4ea37b070268752e21b02" integrity sha512-Mj7Pa6JZgSjfzQfYF3Bf5KpyhzEBv4kHbj2EjCB/vMQiZCiiW30j5rS6t/d0ZN0FBrlSOuJIT+YU8IJt30VyWA== dependencies: "@octokit/request-error" "^2.0.2" aggregate-error "^3.1.0" debug "^4.0.0" "@opentelemetry/api@0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.14.0.tgz#4e17d8d2f1da72b19374efa7b6526aa001267cae" integrity sha512-L7RMuZr5LzMmZiQSQDy9O1jo0q+DaLy6XpYJfIGfYSfoJA5qzYwUP3sP1uMIQ549DvxAgM3ng85EaPTM/hUHwQ== dependencies: "@opentelemetry/context-base" "^0.14.0" "@opentelemetry/context-base@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.14.0.tgz#c67fc20a4d891447ca1a855d7d70fa79a3533001" integrity sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw== "@philpl/buble@^0.19.7": version "0.19.7" resolved "https://registry.yarnpkg.com/@philpl/buble/-/buble-0.19.7.tgz#27231e6391393793b64bc1c982fc7b593198b893" integrity sha512-wKTA2DxAGEW+QffRQvOhRQ0VBiYU2h2p8Yc1oBNlqSKws48/8faxqKNIuub0q4iuyTuLwtB8EkwiKwhlfV1PBA== dependencies: acorn "^6.1.1" acorn-class-fields "^0.2.1" acorn-dynamic-import "^4.0.0" acorn-jsx "^5.0.1" chalk "^2.4.2" magic-string "^0.25.2" minimist "^1.2.0" os-homedir "^1.0.1" regexpu-core "^4.5.4" "@popperjs/core@2.4.4": version "2.4.4" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.4.4.tgz#11d5db19bd178936ec89cd84519c4de439574398" integrity sha512-1oO6+dN5kdIA3sKPZhRGJTfGVP4SWV6KqlMOwry4J3HfyD68sl/3KmG7DeYUzvN+RbhXDnv/D8vNNB8168tAMg== "@reach/alert@0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@reach/alert/-/alert-0.11.0.tgz#34bea3e9e286fa54a86adaa1a3730faff9b2bda3" integrity sha512-7Rw+lrrIOhgNTVmk8YZsqoF+fyOiA+kJx23p9/FZq+d0MK28e6puUA1zpeWASdU1LDzS+vDJM5hUmj98NMM/nw== dependencies: "@reach/utils" "0.11.0" "@reach/visually-hidden" "0.11.0" prop-types "^15.7.2" tslib "^2.0.0" "@reach/auto-id@0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@reach/auto-id/-/auto-id-0.11.0.tgz#274251c1fbf9cd58d874cfc75fba289d1829368c" integrity sha512-KwwnsnYTbTsYvRbSNqtaA1znaXP9G1I0z+bE0eFMNICvR+bHApaTu0aEEZNXfevq2LBrIMP6hZY9BokgTRcB3g== dependencies: "@reach/utils" "0.11.0" tslib "^2.0.0" "@reach/utils@0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@reach/utils/-/utils-0.11.0.tgz#09ad5e1f42b498253df8a6a4c99ccd0ab2d85464" integrity sha512-A7Ofr1Biq4vUeTBYhbZ/YiLq1B/lEObbEoR2UiuQqCO1r093N95hZNcKqfFwpkRScjD87uob3wSYYGxvq9y/+w== dependencies: "@types/warning" "^3.0.0" tslib "^2.0.0" warning "^4.0.3" "@reach/visually-hidden@0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@reach/visually-hidden/-/visually-hidden-0.11.0.tgz#a7cd68ea2a197238dfcffbef8723db9117d31ebb" integrity sha512-O67fK7jz01TYu/V57RiDsxKY29ReHdQkpq+OV0ijmXsv7g5r3Nys51Ry+IqPrJst4Ve5xxFbiJsTt/bGwxorrQ== dependencies: tslib "^2.0.0" "@rollup/plugin-alias@^3.0.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.1.tgz#bb96cf37fefeb0a953a6566c284855c7d1cd290c" integrity sha512-hNcQY4bpBUIvxekd26DBPgF7BT4mKVNDF5tBG4Zi+3IgwLxGYRY0itHs9D0oLVwXM5pvJDWJlBQro+au8WaUWw== dependencies: slash "^3.0.0" "@rollup/plugin-commonjs@^16.0.0": version "16.0.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz#169004d56cd0f0a1d0f35915d31a036b0efe281f" integrity sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw== dependencies: "@rollup/pluginutils" "^3.1.0" commondir "^1.0.1" estree-walker "^2.0.1" glob "^7.1.6" is-reference "^1.2.1" magic-string "^0.25.7" resolve "^1.17.0" "@rollup/plugin-inject@^4.0.2": version "4.0.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-4.0.2.tgz#55b21bb244a07675f7fdde577db929c82fc17395" integrity sha512-TSLMA8waJ7Dmgmoc8JfPnwUwVZgLjjIAM6MqeIFqPO2ODK36JqE0Cf2F54UTgCUuW8da93Mvoj75a6KAVWgylw== dependencies: "@rollup/pluginutils" "^3.0.4" estree-walker "^1.0.1" magic-string "^0.25.5" "@rollup/plugin-json@^4.0.0", "@rollup/plugin-json@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== dependencies: "@rollup/pluginutils" "^3.0.8" "@rollup/plugin-node-resolve@^10.0.0": version "10.0.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz#44064a2b98df7530e66acf8941ff262fc9b4ead8" integrity sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" builtin-modules "^3.1.0" deepmerge "^4.2.2" is-module "^1.0.0" resolve "^1.17.0" "@rollup/plugin-replace@^2.3.3": version "2.3.4" resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca" integrity sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ== dependencies: "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" "@rollup/pluginutils@^3.0.4", "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: "@types/estree" "0.0.39" estree-walker "^1.0.1" picomatch "^2.2.2" "@rollup/pluginutils@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.0.tgz#0dcc61c780e39257554feb7f77207dceca13c838" integrity sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ== dependencies: estree-walker "^2.0.1" picomatch "^2.2.2" "@sindresorhus/is@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4" integrity sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ== "@sinonjs/commons@^1.7.0": version "1.8.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" integrity sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== dependencies: "@sinonjs/commons" "^1.7.0" "@snowpack/plugin-build-script@^2.0.12": version "2.0.12" resolved "https://registry.yarnpkg.com/@snowpack/plugin-build-script/-/plugin-build-script-2.0.12.tgz#bbb59fedbaae40eed1e3c20f6050659911577897" integrity sha512-v4Kcmu8x0C5iqPbI8w1vMyT6ZVVeh/Z4LTFeTJx+nLm5VKdQJsLyLarI2YhOuQEGB/RZeR4PxvAJBZn1xcH6Bw== dependencies: execa "^4.0.3" npm-run-path "^4.0.1" "@snowpack/plugin-react-refresh@^2.3.9": version "2.3.9" resolved "https://registry.yarnpkg.com/@snowpack/plugin-react-refresh/-/plugin-react-refresh-2.3.9.tgz#b118665504fb7f2622cc5a85e7ae46d4999725e0" integrity sha512-QBsK1SQPmwxD3BKuLfbOa2oYKJKyRtBaL4CmkB+XNINia+TUKD8+m9cjbvO0QBRHDNhr6++9M5LDg41Jzm74tw== dependencies: "@babel/core" "^7.0.0" "@babel/plugin-syntax-class-properties" "^7.10.0" react-refresh "^0.9.0" "@snowpack/plugin-run-script@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@snowpack/plugin-run-script/-/plugin-run-script-2.2.1.tgz#8a564f84c65c1136b9b898ef5a89552cf473a638" integrity sha512-TuYOtcTrJJnm7oMtAQCZN8/GEXI6Tumtk3MEKNhka/id9LrHdUvaYZ9+yxj/n4hep9/kJ0Y7SlweL32L5Zy0Ow== dependencies: execa "^4.0.3" npm-run-path "^4.0.1" "@sucrase/jest-plugin@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@sucrase/jest-plugin/-/jest-plugin-2.0.0.tgz#bcca4d877f5013fd66d4092e4c8ba475b18228e4" integrity sha512-UqmtOnj2OliwV1qKFCQsci41vPX665wGvf5YosRjL+l6jF69HrgB3T8gGnCcF4tAmRycYw8t59x+Dgz64szXWA== dependencies: sucrase "^3.0.0" "@szmarczak/http-timer@^4.0.5": version "4.0.5" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== dependencies: defer-to-connect "^2.0.0" "@types/accepts@*": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== dependencies: "@types/node" "*" "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.12" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__generator" "*" "@types/babel__template" "*" "@types/babel__traverse" "*" "@types/babel__generator@*": version "7.6.2" resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.0" resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": version "7.0.16" resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.16.tgz#0bbbf70c7bc4193210dd27e252c51260a37cd6a7" integrity sha512-S63Dt4CZOkuTmpLGGWtT/mQdVORJOpx6SZWGVaP56dda/0Nx5nEe82K7/LAm8zYr6SfMq+1N2OreIOrHAx656w== dependencies: "@babel/types" "^7.3.0" "@types/body-parser@*": version "1.19.0" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== dependencies: "@types/connect" "*" "@types/node" "*" "@types/cacheable-request@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "*" "@types/node" "*" "@types/responselike" "*" "@types/cheerio@0.22.22": version "0.22.22" resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.22.tgz#ae71cf4ca59b8bbaf34c99af7a5d6c8894988f5f" integrity sha512-05DYX4zU96IBfZFY+t3Mh88nlwSMtmmzSYaQkKN48T495VV1dkHSah6qYyDTN5ngaS0i0VonH37m+RuzSM0YiA== dependencies: "@types/node" "*" "@types/chokidar@^2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@types/chokidar/-/chokidar-2.1.3.tgz#123ab795dba6d89be04bf076e6aecaf8620db674" integrity sha512-6qK3xoLLAhQVTucQGHTySwOVA1crHRXnJeLwqK6KIFkkKa2aoMFXh+WEi8PotxDtvN6MQJLyYN9ag9P6NLV81w== dependencies: chokidar "*" "@types/connect@*": version "3.4.34" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== dependencies: "@types/node" "*" "@types/content-disposition@*": version "0.5.3" resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.3.tgz#0aa116701955c2faa0717fc69cd1596095e49d96" integrity sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg== "@types/cookies@*": version "0.7.5" resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.5.tgz#aa42c9a9834724bffee597028da5319b38e85e84" integrity sha512-3+TAFSm78O7/bAeYdB8FoYGntuT87vVP9JKuQRL8sRhv9313LP2SpHHL50VeFtnyjIcb3UELddMk5Yt0eOSOkg== dependencies: "@types/connect" "*" "@types/express" "*" "@types/keygrip" "*" "@types/node" "*" "@types/es-module-lexer@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@types/es-module-lexer/-/es-module-lexer-0.3.0.tgz#9fee3f19f64e6b3f999eeb3a70bd177a4d57a6cb" integrity sha512-XI3MGSejUQIJ3wzY0i5IHy5J3eb36M/ytgG8jIOssP08ovtRPcjpjXQqrx51AHBNBOisTS/NQNWJitI17+EwzQ== "@types/estree@*": version "0.0.45" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*": version "4.17.15" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.15.tgz#7c3d37829a991da9a507c1efd44d97532e8909e3" integrity sha512-pb71P0BrBAx7cQE+/7QnA1HTQUkdBKMlkPY7lHUMn0YvPJkL2UA+KW3BdWQ309IT+i9En/qm45ZxpjIcpgEhNQ== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/express@*": version "4.17.9" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.9.tgz#f5f2df6add703ff28428add52bdec8a1091b0a78" integrity sha512-SDzEIZInC4sivGIFY4Sz1GG6J9UObPwCInYJjko2jzOf/Imx/dlpume6Xxwj1ORL82tBbmN4cPDIDkLbWHk9hw== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "*" "@types/qs" "*" "@types/serve-static" "*" "@types/find-up@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/find-up/-/find-up-4.0.0.tgz#6b74a76670477a23f0793cfaf2dafc86df59723a" integrity sha512-QlRNKeOPFWKisbNtKVOOGXw3AeLbkw8UmT/EyEGM6brfqpYffKBcch7f1y40NYN9O90aK2+K0xBMDJfOAsg2qg== dependencies: find-up "*" "@types/formidable@^1.0.31": version "1.0.32" resolved "https://registry.yarnpkg.com/@types/formidable/-/formidable-1.0.32.tgz#d9a7eefbaa995a4486ec4e3960e9552e68b3f33c" integrity sha512-jOAB5+GFW+C+2xdvUcpd/CnYg2rD5xCyagJLBJU+9PB4a/DKmsAqS9yZI3j/Q9zwvM7ztPHaAIH1ijzp4cezdQ== dependencies: "@types/node" "*" "@types/fs-extra@^9.0.5": version "9.0.5" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.5.tgz#2afb76a43a4bef80a363b94b314d0ca1694fc4f8" integrity sha512-wr3t7wIW1c0A2BIJtdVp4EflriVaVVAsCAIHVzzh8B+GiFv9X1xeJjCs4upRXtzp7kQ6lP5xvskjoD4awJ1ZeA== dependencies: "@types/node" "*" "@types/graceful-fs@^4.1.2": version "4.1.4" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753" integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== dependencies: "@types/node" "*" "@types/hast@^2.0.0": version "2.3.1" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.1.tgz#b16872f2a6144c7025f296fb9636a667ebb79cd9" integrity sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q== dependencies: "@types/unist" "*" "@types/history@*": version "4.7.8" resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA== "@types/http-assert@*": version "1.5.1" resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.1.tgz#d775e93630c2469c2f980fc27e3143240335db3b" integrity sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ== "@types/http-cache-semantics@*": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== "@types/http-errors@*": version "1.8.0" resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.0.tgz#682477dbbbd07cd032731cb3b0e7eaee3d026b69" integrity sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA== "@types/http-proxy@^1.17.4": version "1.17.4" resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b" integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== "@types/istanbul-lib-report@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== dependencies: "@types/istanbul-lib-report" "*" "@types/jest-specific-snapshot@^0.5.5": version "0.5.5" resolved "https://registry.yarnpkg.com/@types/jest-specific-snapshot/-/jest-specific-snapshot-0.5.5.tgz#47ce738870be99898ed6d7b08dbf0240c74ae553" integrity sha512-AaPPw2tE8ewfjD6qGLkEd4DOfM6pPOK7ob/RSOe1Z8Oo70r9Jgo0SlWyfxslPAOvLfQukQtiVPm6DcnjSoZU5A== dependencies: "@types/jest" "*" "@types/jest@*", "@types/jest@^26.0.19": version "26.0.19" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.19.tgz#e6fa1e3def5842ec85045bd5210e9bb8289de790" integrity sha512-jqHoirTG61fee6v6rwbnEuKhpSKih0tuhqeFbCmMmErhtu3BYlOZaXWjffgOstMM4S/3iQD31lI5bGLTrs97yQ== dependencies: jest-diff "^26.0.0" pretty-format "^26.0.0" "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== "@types/keygrip@*": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== "@types/keyv@*": version "3.1.1" resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== dependencies: "@types/node" "*" "@types/koa-compose@*": version "3.2.5" resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== dependencies: "@types/koa" "*" "@types/koa-send@^4.1.2": version "4.1.2" resolved "https://registry.yarnpkg.com/@types/koa-send/-/koa-send-4.1.2.tgz#978f8267ad116d12ac6a18fecd8f34c5657e09ad" integrity sha512-rfqKIv9bFds39Jxvsp8o3YJLnEQVPVriYA14AuO2OY65IHh/4UX4U/iMs5L0wATpcRmm1bbe0BNk23TRwx3VQQ== dependencies: "@types/koa" "*" "@types/koa@*", "@types/koa@^2.11.4", "@types/koa@^2.11.6": version "2.11.6" resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.11.6.tgz#b7030caa6b44af801c2aea13ba77d74aff7484d5" integrity sha512-BhyrMj06eQkk04C97fovEDQMpLpd2IxCB4ecitaXwOKGq78Wi2tooaDOWOFGajPk8IkQOAtMppApgSVkYe1F/A== dependencies: "@types/accepts" "*" "@types/content-disposition" "*" "@types/cookies" "*" "@types/http-assert" "*" "@types/http-errors" "*" "@types/keygrip" "*" "@types/koa-compose" "*" "@types/node" "*" "@types/lodash.mergewith@4.6.6": version "4.6.6" resolved "https://registry.yarnpkg.com/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz#c4698f5b214a433ff35cb2c75ee6ec7f99d79f10" integrity sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg== dependencies: "@types/lodash" "*" "@types/lodash@*": version "4.14.167" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.167.tgz#ce7d78553e3c886d4ea643c37ec7edc20f16765e" integrity sha512-w7tQPjARrvdeBkX/Rwg95S592JwxqOjmms3zWQ0XZgSyxSLdzWaYH3vErBhdVS/lRBX7F8aBYcYJYTr5TMGOzw== "@types/lru-cache@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03" integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w== "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== dependencies: "@types/unist" "*" "@types/mime@*": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.3.tgz#c893b73721db73699943bfc3653b1deb7faa4a3a" integrity sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q== "@types/minimist@^1.2.0": version "1.2.1" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== "@types/node@*": version "14.14.10" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785" integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ== "@types/node@>= 8": version "14.14.20" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.20.tgz#f7974863edd21d1f8a494a73e8e2b3658615c340" integrity sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A== "@types/node@^12.7.1": version "12.19.8" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.8.tgz#efd6d1a90525519fc608c9db16c8a78f7693a978" integrity sha512-D4k2kNi0URNBxIRCb1khTnkWNHv8KSL1owPmS/K5e5t8B2GzMReY7AsJIY1BnP5KdlgC4rj9jk2IkDMasIE7xg== "@types/node@^14.14.13": version "14.14.13" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.13.tgz#9e425079799322113ae8477297ae6ef51b8e0cdf" integrity sha512-vbxr0VZ8exFMMAjCW8rJwaya0dMCDyYW2ZRdTyjtrCvJoENMpdUHOT/eTzvgyA5ZnqRZ/sI0NwqAxNHKYokLJQ== "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== "@types/object-assign@4.0.30": version "4.0.30" resolved "https://registry.yarnpkg.com/@types/object-assign/-/object-assign-4.0.30.tgz#8949371d5a99f4381ee0f1df0a9b7a187e07e652" integrity sha1-iUk3HVqZ9Dge4PHfCpt6GH4H5lI= "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/parse5@^5.0.0": version "5.0.3" resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== "@types/prettier@^2.0.0": version "2.1.5" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.5.tgz#b6ab3bba29e16b821d84e09ecfaded462b816b00" integrity sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ== "@types/prompts@^2.0.9": version "2.0.9" resolved "https://registry.yarnpkg.com/@types/prompts/-/prompts-2.0.9.tgz#19f419310eaa224a520476b19d4183f6a2b3bd8f" integrity sha512-TORZP+FSjTYMWwKadftmqEn6bziN5RnfygehByGsjxoK5ydnClddtv6GikGWPvCm24oI+YBwck5WDxIIyNxUrA== dependencies: "@types/node" "*" "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== "@types/qs@*", "@types/qs@^6.9.5": version "6.9.5" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b" integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ== "@types/range-parser@*": version "1.2.3" resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== "@types/react-router-dom@^5.1.7": version "5.1.7" resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.7.tgz#a126d9ea76079ffbbdb0d9225073eb5797ab7271" integrity sha512-D5mHD6TbdV/DNHYsnwBTv+y73ei+mMjrkGrla86HthE4/PVvL1J94Bu3qABU+COXzpL23T1EZapVVpwHuBXiUg== dependencies: "@types/history" "*" "@types/react" "*" "@types/react-router" "*" "@types/react-router@*": version "5.1.11" resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.11.tgz#b01ce4cb21bf7d6b32edc862fc1e2c0088044b5b" integrity sha512-ofHbZMlp0Y2baOHgsWBQ4K3AttxY61bDMkwTiBOkPg7U6C/3UwwB5WaIx28JmSVi/eX3uFEMRo61BV22fDQIvg== dependencies: "@types/history" "*" "@types/react" "*" "@types/react@*", "@types/react@^17.0.0": version "17.0.0" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.0.tgz#5af3eb7fad2807092f0046a1302b7823e27919b8" integrity sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw== dependencies: "@types/prop-types" "*" csstype "^3.0.2" "@types/resolve@1.17.1", "@types/resolve@^1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" "@types/responselike@*", "@types/responselike@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== dependencies: "@types/node" "*" "@types/semver@^6.0.0": version "6.2.2" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.2.tgz#5c27df09ca39e3c9beb4fae6b95f4d71426df0a9" integrity sha512-RxAwYt4rGwK5GyoRwuP0jT6ZHAVTdz2EqgsHmX0PYNjGsko+OeT4WFXXTs/lM3teJUJodM+SNtAL5/pXIJ61IQ== "@types/serve-static@*": version "1.13.8" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.8.tgz#851129d434433c7082148574ffec263d58309c46" integrity sha512-MoJhSQreaVoL+/hurAZzIm8wafFR6ajiTM1m4A0kv6AGeVBl4r4pOV8bGFrjjq1sGxDTnCoF8i22o0/aE5XCyA== dependencies: "@types/mime" "*" "@types/node" "*" "@types/stack-utils@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== "@types/tinycolor2@1.4.2": version "1.4.2" resolved "https://registry.yarnpkg.com/@types/tinycolor2/-/tinycolor2-1.4.2.tgz#721ca5c5d1a2988b4a886e35c2ffc5735b6afbdf" integrity sha512-PeHg/AtdW6aaIO2a+98Xj7rWY4KC1E6yOy7AFknJQ7VXUGNrMlyxDFxJo7HqLtjQms/ZhhQX52mLVW/EX3JGOw== "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== "@types/uuid@^8.3.0": version "8.3.0" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== "@types/warning@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" integrity sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI= "@types/ws@^7.4.0": version "7.4.0" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.0.tgz#499690ea08736e05a8186113dac37769ab251a0e" integrity sha512-Y29uQ3Uy+58bZrFLhX36hcI3Np37nqWE7ky5tjiDoy1GDZnIwVxS0CgF+s+1bXMzjKBFy+fqaRfb708iNzdinw== dependencies: "@types/node" "*" "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== "@types/yargs@^15.0.0": version "15.0.10" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.10.tgz#0fe3c8173a0d5c3e780b389050140c3f5ea6ea74" integrity sha512-z8PNtlhrj7eJNLmrAivM7rjBESG6JwC5xP3RVk12i/8HVP7Xnx/sEmERnRImyEuUaJfO942X0qMOYsoupaJbZQ== dependencies: "@types/yargs-parser" "*" "@types/yargs@^15.0.11": version "15.0.11" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.11.tgz#361d7579ecdac1527687bcebf9946621c12ab78c" integrity sha512-jfcNBxHFYJ4nPIacsi3woz1+kvUO6s1CyeEhtnDHBjHUMNj5UlW2GynmnSgiJJEdNg9yW5C8lfoNRZrHGv5EqA== dependencies: "@types/yargs-parser" "*" "@vue/compiler-core@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.4.tgz#0122aca6eada4cb28b39ed930af917444755e330" integrity sha512-snpMICsbWTZqBFnPB03qr4DtiSxVYfDF3DvbDSkN9Z9NTM8Chl8E/lYhKBSsvauq91DAWAh8PU3lr9vrLyQsug== dependencies: "@babel/parser" "^7.12.0" "@babel/types" "^7.12.0" "@vue/shared" "3.0.4" estree-walker "^2.0.1" source-map "^0.6.1" "@vue/compiler-dom@3.0.4", "@vue/compiler-dom@^3.0.3": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.4.tgz#834fd4b15c5698cf9f4505c2bfbccca058a843eb" integrity sha512-FOxbHBIkkGjYQeTz1DlXQjS1Ms8EPXQWsdTdTPeohoS0KzCz6RiOjiAG+jLtMi6Nr5GX2h0TlCvcnI8mcsicFQ== dependencies: "@vue/compiler-core" "3.0.4" "@vue/shared" "3.0.4" "@vue/compiler-sfc@^3.0.3": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.4.tgz#2119fe1e68d2c268aafa20461c82c139a9adf8e0" integrity sha512-brDn6HTuK6R3oBCjtMPPsIpyJEZFinlnxjtBXww/goFJOJBAU9CrsdegwyZItNnixCFUIg4CLv4Nj1Eg/eKlfg== dependencies: "@babel/parser" "^7.12.0" "@babel/types" "^7.12.0" "@vue/compiler-core" "3.0.4" "@vue/compiler-dom" "3.0.4" "@vue/compiler-ssr" "3.0.4" "@vue/shared" "3.0.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 "^7.0.32" postcss-modules "^3.2.2" postcss-selector-parser "^6.0.4" source-map "^0.6.1" "@vue/compiler-ssr@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.0.4.tgz#ccbd1f55734d51d1402fad825ac102002a7a07c7" integrity sha512-4aYWQEL4+LS4+D44K9Z7xMOWMEjBsz4Li9nMcj2rxRQ35ewK6uFPodvs6ORP60iBDSkwUFZoldFlNemQlu1BFw== dependencies: "@vue/compiler-dom" "3.0.4" "@vue/shared" "3.0.4" "@vue/reactivity@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.4.tgz#b6599dd8271a745960a03f05744ccf7991ba5d8d" integrity sha512-AFTABrLhUYZY2on3ea9FxeXal7w3f6qIp9gT+/oG93H7dFTL5LvVnxygCopv7tvkIl/GSGQb/yK1D1gmXx1Pww== dependencies: "@vue/shared" "3.0.4" "@vue/runtime-core@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.4.tgz#a5b9a001560b1fd8c01a43f68b764c555de7836c" integrity sha512-qH9e4kqU7b3u1JewvLmGmoAGY+mnuBqz7aEKb2mhpEgwa1yFv496BRuUfMXXMCix3+TndUVMJ8jt41FSdNppwg== dependencies: "@vue/reactivity" "3.0.4" "@vue/shared" "3.0.4" "@vue/runtime-dom@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.4.tgz#6f81aec545f24511d2c28a315aa3391420b69c68" integrity sha512-BGIoiTSESzWUhN0Ofi2X/q+HN8f6IUFmUEyyBGKbmx7DTAJNZhFfjqsepfXQrM5IGeTfJLB1ZEVyroDQJNXq3g== dependencies: "@vue/runtime-core" "3.0.4" "@vue/shared" "3.0.4" csstype "^2.6.8" "@vue/shared@3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.4.tgz#6dc50f593bdfdeaa6183d1dbc15e2d45e7c6b8b3" integrity sha512-Swfbz31AaMX48CpFl+YmIrqOH9MgJMTrltG9e26A4ZxYx9LjGuMV+41WnxFzS3Bc9nbrc6sDPM37G6nIT8NJSg== "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== dependencies: "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@webassemblyjs/floating-point-hex-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== "@webassemblyjs/helper-api-error@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== "@webassemblyjs/helper-buffer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== "@webassemblyjs/helper-code-frame@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== dependencies: "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/helper-fsm@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== "@webassemblyjs/helper-module-context@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-wasm-bytecode@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== "@webassemblyjs/helper-wasm-section@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/ieee754@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== "@webassemblyjs/wasm-edit@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/helper-wasm-section" "1.9.0" "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/wasm-opt" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/wasm-gen@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/ieee754" "1.9.0" "@webassemblyjs/leb128" "1.9.0" "@webassemblyjs/utf8" "1.9.0" "@webassemblyjs/wasm-opt@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" "@webassemblyjs/wasm-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-api-error" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/ieee754" "1.9.0" "@webassemblyjs/leb128" "1.9.0" "@webassemblyjs/utf8" "1.9.0" "@webassemblyjs/wast-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/floating-point-hex-parser" "1.9.0" "@webassemblyjs/helper-api-error" "1.9.0" "@webassemblyjs/helper-code-frame" "1.9.0" "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" "@webassemblyjs/wast-printer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== abort-controller@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: event-target-shim "^5.0.0" accepts@^1.3.5: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== dependencies: mime-types "~2.1.24" negotiator "0.6.2" acorn-class-fields@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-0.2.1.tgz#748058bceeb0ef25164bbc671993984083f5a085" integrity sha512-US/kqTe0H8M4LN9izoL+eykVAitE68YMuYZ3sHn3i1fjniqR7oQ3SPvuMK/VT1kjOQHrx5Q88b90TtOKgAv2hQ== acorn-dynamic-import@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: acorn "^7.1.1" acorn-walk "^7.1.1" acorn-jsx@^5.0.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== acorn-node@^1.6.1: version "1.8.2" resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== dependencies: acorn "^7.0.0" acorn-walk "^7.0.0" xtend "^4.0.2" acorn-walk@^7.0.0, acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn@^6.1.1, acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== acorn@^7.0.0, acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== adjust-sourcemap-loader@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== dependencies: loader-utils "^2.0.0" regex-parser "^2.2.11" agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" aggregate-error@^3.0.0, aggregate-error@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" airbnb-prop-types@^2.16.0: version "2.16.0" resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== dependencies: array.prototype.find "^2.1.1" function.prototype.name "^1.1.2" is-regex "^1.1.0" object-is "^1.1.2" object.assign "^4.1.0" object.entries "^1.1.2" prop-types "^15.7.2" prop-types-exact "^1.2.0" react-is "^16.13.1" ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" anser@1.4.9: version "1.4.9" resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.9.tgz#1f85423a5dcf8da4631a341665ff675b96845760" integrity sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA== ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= dependencies: string-width "^2.0.0" ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-escapes@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: type-fest "^0.11.0" ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-regex@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== ansi-split@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ansi-split/-/ansi-split-1.0.1.tgz#3cab03754ab6f1d64d4ad13cd10f22fc36db4a45" integrity sha512-RRxQym4DFtDNmHIkW6aeFVvrXURb11lGAEPXNiryjCe8bK8RsANjzJ0M2aGOkvBYwP4Bl/xZ8ijtr6D3j1x/eg== dependencies: ansi-regex "^3.0.0" ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" any-promise@^1.0.0, any-promise@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" anymatch@^3.0.3, anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" aria-hidden@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.1.1.tgz#0c356026d3f65e2bd487a3adb73f0c586be2c37e" integrity sha512-M7zYxCcOQPOaxGHoMTKUFD2UNcVFTp9ycrdStLcTPLf8zgTXC3+YcGe+UuzSh5X1BX/0/PtS8xTNy4xyH/6xtw== dependencies: tslib "^1.0.0" arity-n@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-flatten@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541" integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA== array-includes@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" es-abstract "^1.18.0-next.1" get-intrinsic "^1.0.1" is-string "^1.0.5" array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= array.prototype.find@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== dependencies: define-properties "^1.1.3" es-abstract "^1.17.4" arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" safer-buffer "^2.1.0" asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assert@^1.1.1, assert@^1.4.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== dependencies: object-assign "^4.1.1" util "0.10.3" assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= ast-types@0.13.2: version "0.13.2" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^9.4.5: version "9.8.6" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== dependencies: browserslist "^4.12.0" caniuse-lite "^1.0.30001109" colorette "^1.2.1" normalize-range "^0.1.2" num2fraction "^1.2.2" postcss "^7.0.32" postcss-value-parser "^4.1.0" await-to-js@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/await-to-js/-/await-to-js-2.1.1.tgz#c2093cd5a386f2bb945d79b292817bbc3f41b31b" integrity sha512-CHBC6gQGCIzjZ09tJ+XmpQoZOn4GdWePB4qUweCaKNJ0D3f115YdhmYVTZ4rMVpiJ3cFzZcTYK1VMYEICV4YXw== aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: version "1.11.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== dependencies: "@jest/transform" "^26.6.2" "@jest/types" "^26.6.2" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" babel-preset-jest "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" babel-plugin-apply-mdx-type-prop@1.6.22: version "1.6.22" resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b" integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" "@mdx-js/util" "1.6.22" babel-plugin-extract-import-names@1.6.22: version "1.6.22" resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" babel-plugin-jest-hoist@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" babel-plugin-macros@^2.6.1: version "2.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== dependencies: "@babel/runtime" "^7.7.2" cosmiconfig "^6.0.0" resolve "^1.12.0" babel-plugin-syntax-jsx@6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= babel-plugin-transform-define@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-define/-/babel-plugin-transform-define-2.0.0.tgz#79c3536635f899aabaf830b194b25519465675a4" integrity sha512-0dv5RNRUlUKxGYIIErl01lpvi8b7W2R04Qcl1mCj70ahwZcgiklfXnFlh4FGnRh6aayCfSZKdhiMryVzcq5Dmg== dependencies: lodash "^4.17.11" traverse "0.6.6" babel-plugin-transform-react-remove-prop-types@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== babel-preset-current-node-syntax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" "@babel/plugin-syntax-class-properties" "^7.8.3" "@babel/plugin-syntax-import-meta" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" babel-preset-jest@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== dependencies: babel-plugin-jest-hoist "^26.6.2" babel-preset-current-node-syntax "^1.0.0" baby-i-am-faded@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/baby-i-am-faded/-/baby-i-am-faded-2.0.1.tgz#547889ba983e4df658345950b5ae9f7c556262a3" integrity sha512-uytbjqUKImMDt/ketY89UlR17HuRBWZvx0rAAOHR5MWVifALRoVS53J0NBEbCx/qO+GPnlMpmAMBpdhB7fz25A== dependencies: "@emotion/serialize" "^1.0.0" "@emotion/styled" "^11" react-intersection-observer "^8.31.0" react-is "^16.13.1" bail@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" class-utils "^0.3.5" component-emitter "^1.2.1" define-property "^1.0.0" isobject "^3.0.1" mixin-deep "^1.2.0" pascalcase "^0.1.1" batched-promise-all@^0.9.2: version "0.9.2" resolved "https://registry.yarnpkg.com/batched-promise-all/-/batched-promise-all-0.9.2.tgz#1253fd9511a82e07daa248ed5d282b2a1cc65a72" integrity sha512-Kx5UHdBSXFCcFfX7St/2EVyDer/jWZtjW4gnRha3Wv4lXyzVCmRR6AHmBPGguxI4XhL8Ut2nH0JXY4OEmGzR6A== bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" better-path-resolve@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/better-path-resolve/-/better-path-resolve-1.0.0.tgz#13a35a1104cdd48a7b74bf8758f96a1ee613f99d" integrity sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g== dependencies: is-windows "^1.0.0" big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-extensions@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" bl@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== dependencies: buffer "^5.5.0" inherits "^2.0.4" readable-stream "^3.4.0" bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: version "4.11.9" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== bn.js@^5.0.0, bn.js@^5.1.1: version "5.1.3" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= boxen@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" chalk "^2.0.1" cli-boxes "^1.0.0" string-width "^2.0.0" term-size "^1.2.0" widest-line "^2.0.0" brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" array-unique "^0.3.2" extend-shallow "^2.0.1" fill-range "^4.0.0" isobject "^3.0.1" repeat-element "^1.1.2" snapdragon "^0.8.1" snapdragon-node "^2.0.1" split-string "^3.0.2" to-regex "^3.0.1" braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" breakword@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/breakword/-/breakword-1.0.5.tgz#fd420a417f55016736b5b615161cae1c8f819810" integrity sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg== dependencies: wcwidth "^1.0.1" brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= brotli-size@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== dependencies: duplexer "0.1.1" browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" cipher-base "^1.0.0" create-hash "^1.1.0" evp_bytestokey "^1.0.3" inherits "^2.0.1" safe-buffer "^5.0.1" browserify-cipher@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: browserify-aes "^1.0.4" browserify-des "^1.0.0" evp_bytestokey "^1.0.0" browserify-des@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: cipher-base "^1.0.1" des.js "^1.0.0" inherits "^2.0.1" safe-buffer "^5.1.2" browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: bn.js "^5.1.1" browserify-rsa "^4.0.1" create-hash "^1.2.0" create-hmac "^1.1.7" elliptic "^6.5.3" inherits "^2.0.4" parse-asn1 "^5.1.5" readable-stream "^3.6.0" safe-buffer "^5.2.0" browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" browserslist@4.14.6: version "4.14.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.6.tgz#97702a9c212e0c6b6afefad913d3a1538e348457" integrity sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A== dependencies: caniuse-lite "^1.0.30001154" electron-to-chromium "^1.3.585" escalade "^3.1.1" node-releases "^1.1.65" browserslist@^4.12.0: version "4.16.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== dependencies: caniuse-lite "^1.0.30001173" colorette "^1.2.1" electron-to-chromium "^1.3.634" escalade "^3.1.1" node-releases "^1.1.69" bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" buble@0.19.6: version "0.19.6" resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.6.tgz#915909b6bd5b11ee03b1c885ec914a8b974d34d3" integrity sha512-9kViM6nJA1Q548Jrd06x0geh+BG2ru2+RMDkIHHgJY/8AcyCs34lTHwra9BX7YdPrZXd5aarkpr/SY8bmPgPdg== dependencies: chalk "^2.4.1" magic-string "^0.25.1" minimist "^1.2.0" os-homedir "^1.0.1" regexpu-core "^4.2.0" vlq "^1.0.0" buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= buffer@5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" buffer@^4.3.0: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" isarray "^1.0.0" buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" ieee754 "^1.1.13" builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= builtin-modules@^3.0.0, builtin-modules@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= bytes@3.1.0, bytes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== cac@^6.6.1: version "6.7.1" resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.1.tgz#0609d28a31d887746de4b66a15e3914f106f880c" integrity sha512-LfGt47+ugCY65W4yUEyxnZKd/tJSBJD/gUAxQGiQjH7yqdhbaX2XN0Rli4+0W0DJiDONmYeh0TlJxMtXGZspIg== cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== dependencies: bluebird "^3.5.5" chownr "^1.1.1" figgy-pudding "^3.5.1" glob "^7.1.4" graceful-fs "^4.1.15" infer-owner "^1.0.3" lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" move-concurrently "^1.0.1" promise-inflight "^1.0.1" rimraf "^2.6.3" ssri "^6.0.1" unique-filename "^1.1.1" y18n "^4.0.0" cacache@^15.0.0: version "15.0.5" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== dependencies: "@npmcli/move-file" "^1.0.1" chownr "^2.0.0" fs-minipass "^2.0.0" glob "^7.1.4" infer-owner "^1.0.4" lru-cache "^6.0.0" minipass "^3.1.1" minipass-collect "^1.0.2" minipass-flush "^1.0.5" minipass-pipeline "^1.2.2" mkdirp "^1.0.3" p-map "^4.0.0" promise-inflight "^1.0.1" rimraf "^3.0.2" ssri "^8.0.0" tar "^6.0.2" unique-filename "^1.1.1" cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" component-emitter "^1.2.1" get-value "^2.0.6" has-value "^1.0.0" isobject "^3.0.1" set-value "^2.0.0" to-object-path "^0.3.0" union-value "^1.0.0" unset-value "^1.0.0" cache-content-type@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== dependencies: mime-types "^2.1.18" ylru "^1.2.0" cacheable-lookup@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== cacheable-request@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.1.tgz#062031c2856232782ed694a257fa35da93942a58" integrity sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw== dependencies: clone-response "^1.0.2" get-stream "^5.1.0" http-cache-semantics "^4.0.0" keyv "^4.0.0" lowercase-keys "^2.0.0" normalize-url "^4.1.0" responselike "^2.0.0" cachedir@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== call-bind@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== dependencies: function-bind "^1.1.1" get-intrinsic "^1.0.0" callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase-css@2.0.1, camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: camelcase "^5.3.1" map-obj "^4.0.0" quick-lru "^4.0.1" camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= camelcase@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-lite@^1.0.30001093, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001113, caniuse-lite@^1.0.30001154, caniuse-lite@^1.0.30001173: version "1.0.30001173" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz#3c47bbe3cd6d7a9eda7f50ac016d158005569f56" integrity sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw== capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: rsvp "^4.8.4" caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" chalk@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" "chalk@^3.0.0 || ^4.0.0", chalk@^4.0.0, chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== character-entities-html4@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== character-entities@^1.0.0: version "1.2.4" resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== character-reference-invalid@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== cheerio@^1.0.0-rc.3: version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== dependencies: css-select "~1.2.0" dom-serializer "~0.1.1" entities "~1.1.1" htmlparser2 "^3.9.1" lodash "^4.15.0" parse5 "^3.0.1" chokidar@*, chokidar@3.4.3, chokidar@^3.4.0, chokidar@^3.4.2: version "3.4.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== dependencies: anymatch "~3.1.1" braces "~3.0.2" glob-parent "~5.1.0" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" readdirp "~3.5.0" optionalDependencies: fsevents "~2.1.2" chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" async-each "^1.0.1" braces "^2.3.2" glob-parent "^3.1.0" inherits "^2.0.3" is-binary-path "^1.0.0" is-glob "^4.0.0" normalize-path "^3.0.0" path-is-absolute "^1.0.0" readdirp "^2.2.1" upath "^1.1.1" optionalDependencies: fsevents "^1.2.7" chokidar@^3.4.1: version "3.5.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.0.tgz#458a4816a415e9d3b3caa4faec2b96a6935a9e65" integrity sha512-JgQM9JS92ZbFR4P90EvmzNpSGhpPBGBSj10PILeDyYFwp4h2/D9OM03wsJ4zW1fEp4ka2DGrnUeD7FuvQ2aZ2Q== dependencies: anymatch "~3.1.1" braces "~3.0.2" glob-parent "~5.1.0" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" readdirp "~3.5.0" optionalDependencies: fsevents "~2.3.1" chokidar@^3.4.3: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: anymatch "~3.1.1" braces "~3.0.2" glob-parent "~5.1.0" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" readdirp "~3.5.0" optionalDependencies: fsevents "~2.3.1" chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== dependencies: tslib "^1.9.0" ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" cjs-module-lexer@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== cjs-module-lexer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.0.0.tgz#c125ff0f4ab2c898dda909352f254d55e2213261" integrity sha512-bLSEjEwg4knnuXt7LIWegvgTOClk6ZonZY6g4CFGBly1EjRqVjTjI8Dwnb/dsu1PwJjYBKxnguE5bRTdk+bFOA== class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" define-property "^0.2.5" isobject "^3.0.0" static-extend "^0.1.1" classnames@2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== clean-css@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== dependencies: source-map "~0.6.0" clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-spinners@^2.4.0, cli-spinners@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" wrap-ansi "^6.2.0" cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" wrap-ansi "^7.0.0" clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= dependencies: mimic-response "^1.0.0" clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= co-body@^5.1.1: version "5.2.0" resolved "https://registry.yarnpkg.com/co-body/-/co-body-5.2.0.tgz#5a0a658c46029131e0e3a306f67647302f71c124" integrity sha512-sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ== dependencies: inflation "^2.0.0" qs "^6.4.0" raw-body "^2.2.0" type-is "^1.6.14" co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-js@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/color-js/-/color-js-1.0.5.tgz#698cb41fb51d7fd745b16f9e0c939933a8c7abea" integrity sha512-KgOTVz7fupb3lOXu4lixP6BR2CdMaTtCnGmLfHZWhq8NU3MABd6U9KjWtJVuYChGS/gIaoA8LakKKQfWhQgwYQ== color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-string@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" color@^3.1.2, color@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== dependencies: color-convert "^1.9.1" color-string "^1.5.4" colorette@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== component-props@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/component-props/-/component-props-1.1.1.tgz#f9b7df9b9927b6e6d97c9bd272aa867670f34944" integrity sha1-+bffm5kntubZfJvScqqGdnDzSUQ= component-xor@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/component-xor/-/component-xor-0.0.4.tgz#c55d83ccc1b94cd5089a4e93fa7891c7263e59aa" integrity sha1-xV2DzMG5TNUImk6T+niRxyY+Wao= compose-function@3.0.3, compose-function@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= dependencies: arity-n "^1.0.4" compressible@^2.0.18: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: mime-db ">= 1.43.0 < 2" compute-scroll-into-view@1.0.14: version "1.0.14" resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz#80e3ebb25d6aa89f42e533956cb4b16a04cfe759" integrity sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" readable-stream "^2.2.2" typedarray "^0.0.6" console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= consolidate@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16" integrity sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ== dependencies: bluebird "^3.7.2" constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= content-disposition@~0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== dependencies: safe-buffer "5.1.2" content-type@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== convert-source-map@1.7.0, convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" convert-source-map@^0.3.3: version "0.3.5" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= cookies@~0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow== dependencies: depd "~2.0.0" keygrip "~1.1.0" copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" fs-write-stream-atomic "^1.0.8" iferr "^0.1.5" mkdirp "^0.5.1" rimraf "^2.5.4" run-queue "^1.0.0" copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= copy-to-clipboard@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== dependencies: toggle-selection "^1.0.6" core-js@^2.4.1: version "2.6.12" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.1.0" parse-json "^5.0.0" path-type "^4.0.0" yaml "^1.7.2" cosmiconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" parse-json "^5.0.0" path-type "^4.0.0" yaml "^1.10.0" create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" elliptic "^6.5.3" create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" inherits "^2.0.1" md5.js "^1.3.4" ripemd160 "^2.0.1" sha.js "^2.4.0" create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" create-hash "^1.1.0" inherits "^2.0.1" ripemd160 "^2.0.0" safe-buffer "^5.0.1" sha.js "^2.4.8" cross-env@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: cross-spawn "^7.0.1" cross-fetch@3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== dependencies: node-fetch "2.6.1" cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" which "^1.2.9" cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" path-key "^2.0.1" semver "^5.5.0" shebang-command "^1.2.0" which "^1.2.9" cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" crypto-browserify@3.12.0, crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" browserify-sign "^4.0.0" create-ecdh "^4.0.0" create-hash "^1.1.0" create-hmac "^1.1.0" diffie-hellman "^5.0.0" inherits "^2.0.1" pbkdf2 "^3.0.3" public-encrypt "^4.0.0" randombytes "^2.0.0" randomfill "^1.0.3" css-box-model@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== dependencies: tiny-invariant "^1.0.6" css-get-unit@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/css-get-unit/-/css-get-unit-1.0.1.tgz#e490b9e56b2cd20f903a22ccafb448382edf7976" integrity sha1-5JC55Wss0g+QOiLMr7RIOC7feXY= css-loader@4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== dependencies: camelcase "^6.0.0" cssesc "^3.0.0" icss-utils "^4.1.1" loader-utils "^2.0.0" postcss "^7.0.32" postcss-modules-extract-imports "^2.0.0" postcss-modules-local-by-default "^3.0.3" postcss-modules-scope "^2.2.0" postcss-modules-values "^3.0.0" postcss-value-parser "^4.1.0" schema-utils "^2.7.1" semver "^7.3.2" css-select@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= dependencies: boolbase "~1.0.0" css-what "2.1" domutils "1.5.1" nth-check "~1.0.1" css-unit-converter@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21" integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== css.escape@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= css@2.2.4, css@^2.0.0: version "2.2.4" resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== dependencies: inherits "^2.0.3" source-map "^0.6.1" source-map-resolve "^0.5.2" urix "^0.1.0" cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== cssnano-preset-simple@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.1.tgz#8976013114b1fc4718253d30f21aaed1780fb80e" integrity sha512-B2KahOIFTV6dw5Ioy9jHshTh/vAYNnUB2enyWRgnAEg3oJBjI/035ExpePaMqS2SwpbH7gCgvQqwpMBH6hTJSw== dependencies: caniuse-lite "^1.0.30001093" postcss "^7.0.32" cssnano-simple@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.2.1.tgz#6de5d9dd75774bc8f31767573410a952c7dd8a12" integrity sha512-9vOyjw8Dj/T12kIOnXPZ5VnEIo6F3YMaIn0wqJXmn277R58cWpI3AvtdlCBtohX7VAUNYcyk2d0dKcXXkb5I6Q== dependencies: cssnano-preset-simple "1.2.1" postcss "^7.0.32" cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== cssom@~0.3.6: version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" csstype@3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== csstype@^2.6.8: version "2.6.14" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.14.tgz#004822a4050345b55ad4dcc00be1d9cf2f4296de" integrity sha512-2mSc+VEpGPblzAxyeR+vZhJKgYg0Og0nnRi7pmRXFYYxSfnOnW8A5wwQb4n4cE2nIOzqKOAzLCaEX6aBmNEv8A== csstype@^3.0.2: version "3.0.5" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.5.tgz#7fdec6a28a67ae18647c51668a9ff95bb2fa7bb8" integrity sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ== csv-generate@^3.2.4: version "3.3.0" resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-3.3.0.tgz#0e25658f1bb9806d94fec7b270896a35c7eedf1a" integrity sha512-EXSru4QwEWKwM7wwsJbhrZC+mHEJrhQFoXlohHs80CAU8Qhlv9gaw1sjzNiC3Hr3oUx5skDmEiAlz+tnKWV0RA== csv-parse@^4.8.8: version "4.14.1" resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.14.1.tgz#b6b3736508fb94682fa6d450fe1755237221d291" integrity sha512-4wmcO7QbWtDAncGFaBwlWFPhEN4Akr64IbM4zvDwEOFekI8blLc04Nw7XjQjtSNy+3AUAgBgtUa9nWo5Cq89Xg== csv-stringify@^5.3.6: version "5.5.3" resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.5.3.tgz#b7a287daee7492de3722b13dccb238f2d60db522" integrity sha512-JKG8vIHpWPzdilp2SAmvjmAiIhD+XGKGdhZBGi8QIECgJAsFr7k5CmJIW2QkSxBBsctvmojM25s+UINzQ5NLTg== csv@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/csv/-/csv-5.3.2.tgz#50b344e25dfbb8c62684a1bcec18c22468b2161e" integrity sha512-odDyucr9OgJTdGM2wrMbJXbOkJx3nnUX3Pt8SFOwlAMOpsUQlz1dywvLMXJWX/4Ib0rjfOsaawuuwfI5ucqBGQ== dependencies: csv-generate "^3.2.4" csv-parse "^4.8.8" csv-stringify "^5.3.6" stream-transform "^2.0.1" cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== dependencies: es5-ext "^0.10.50" type "^1.0.1" dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" data-uri-to-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: abab "^2.0.3" whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" debounce@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@^3.1.0: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: ms "2.0.0" decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= dependencies: decamelize "^1.1.0" map-obj "^1.0.0" decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decimal.js@^10.2.0: version "10.2.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= decompress-response@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== dependencies: mimic-response "^2.0.0" decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: mimic-response "^3.1.0" deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= dependencies: clone "^1.0.2" defer-to-connect@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= degit@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/degit/-/degit-2.8.0.tgz#ac0bff89987735ab19d02338fa8717d16137ea68" integrity sha512-nxQr1Ep4NSGDIqQ3HSMNgnPYaxPfPhHdrpgSNO2EczO86zN7NJJ1i/59GM25vgC45ANQUazZ/3Z+iyeZCmGwhg== delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= depd@^1.1.2, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== deprecation@^2.0.0: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== dequal@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" destroy@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= detab@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== dependencies: repeat-string "^1.5.4" detect-indent@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node-es@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.0.0.tgz#c0318b9e539a5256ca780dd9575c9345af05b8ed" integrity sha512-S4AHriUkTX9FoFvL4G8hXDcx6t3gp2HpfCza3Q0v6S78gul2hKWifLQbeW+ZF89+hSm2ZIc/uF3J97ZgytgTRg== detect-port@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== dependencies: address "^1.0.1" debug "^2.6.0" detective@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== dependencies: acorn-node "^1.6.1" defined "^1.0.0" minimist "^1.1.1" diff-sequences@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" miller-rabin "^4.0.0" randombytes "^2.0.0" dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" directory-tree@^2.2.4: version "2.2.5" resolved "https://registry.yarnpkg.com/directory-tree/-/directory-tree-2.2.5.tgz#43d167eeb87b57640cc832f794f88431ebd47300" integrity sha512-qmeuql8N7hQB5b+cnlvbcHSjKBNpRjLY5KcvyFd9CTC5uTN7sJshEQ/ExZidAcEUEYcC/76i8ikLtbBMG81YRg== dokz@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/dokz/-/dokz-2.0.1.tgz#08e948f3aa1fca1fa93bb26e63ae423fadb5f663" integrity sha512-OQHr6ea4SaSGOsV4UKZp8eKwWFUqgrkKrRHoyRKb5xSA0VBT8T4vS//utGNFmptgkVfqBmRJdEuh4hjXY7uD6w== dependencies: "@babel/generator" "^7.10.2" "@babel/parser" "^7.10.2" "@babel/traverse" "^7.10.1" "@emotion/styled" "^11.0.0" "@mdx-js/loader" "^1.5.8" "@mdx-js/react" "^1.5.8" "@next/mdx" "^9.3.4" "@philpl/buble" "^0.19.7" "@types/mdast" "^3.0.3" await-to-js "^2.1.1" chalk "^4.1.0" chokidar "^3.4.1" debounce "^1.2.0" directory-tree "^2.2.4" front-matter "^3.1.0" get-git-config "^0.0.4" github-slugger "^1.3.0" hast-util-to-string "^1.0.3" js-string-escape "^1.0.1" jsx-ast-utils "^2.3.0" lodash "^4.17.15" mdast "^3.0.0" mdast-util-to-string "^1.1.0" mdast-util-toc "^5.0.3" parse-github-url "^1.0.2" prettier "^2.0.5" prism-react-renderer "^1.0.2" re-resizable "^6.4.0" react-frame-component "^4.1.1" react-icons "^3.9.0" react-live "^2.2.2" react-storage-hooks "^4.0.1" remark "^12.0.0" remark-extract-frontmatter "^2.0.2" remark-frontmatter "^2.0.0" remark-mdx-metadata "^1.0.1" remark-slug "^6.0.0" strip-indent "^3.0.0" unist-util-is "^4.0.2" unist-util-visit "^2.0.2" yaml "^1.10.0" dom-iterator@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dom-iterator/-/dom-iterator-1.0.0.tgz#9c09899846ec41c2d257adc4d6015e4759ef05ad" integrity sha512-7dsMOQI07EMU98gQM8NSB3GsAiIeBYIPKpnxR3c9xOvdvBjChAcOM0iJ222I3p5xyiZO9e5oggkNaCusuTdYig== dependencies: component-props "1.1.1" component-xor "0.0.4" dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== dependencies: domelementtype "^2.0.1" entities "^2.0.0" dom-serializer@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58" integrity sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ== dependencies: domelementtype "^2.0.1" domhandler "^3.0.0" entities "^2.0.0" dom-serializer@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== dependencies: domelementtype "^2.0.1" domhandler "^4.0.0" entities "^2.0.0" dom-serializer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== dependencies: domelementtype "^1.3.0" entities "^1.1.1" domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1, domelementtype@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: webidl-conversions "^5.0.0" domhandler@3.3.0, domhandler@^3.0.0, domhandler@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== dependencies: domelementtype "^2.0.1" domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== dependencies: domelementtype "1" domhandler@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== dependencies: domelementtype "^2.1.0" domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= dependencies: dom-serializer "0" domelementtype "1" domutils@2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b" integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA== dependencies: dom-serializer "^1.0.1" domelementtype "^2.0.1" domhandler "^3.3.0" domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: dom-serializer "0" domelementtype "1" domutils@^2.4.2: version "2.4.4" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3" integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA== dependencies: dom-serializer "^1.0.1" domelementtype "^2.0.1" domhandler "^4.0.0" dotenv-expand@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== dotenv@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== duplexer@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: end-of-stream "^1.0.0" inherits "^2.0.1" readable-stream "^2.0.0" stream-shift "^1.0.0" ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.585: version "1.3.635" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.635.tgz#8d1591eeca6b257d380061a2c04f0b3cc6c9e33b" integrity sha512-RRriZOLs9CpW6KTLmgBqyUdnY0QNqqWs0HOtuQGGEMizOTNNn1P7sGRBxARnUeLejOsgwjDyRqT3E/CSst02ZQ== electron-to-chromium@^1.3.634: version "1.3.634" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.634.tgz#82ea400f520f739c4f6ff00c1f7524827a917d25" integrity sha512-QPrWNYeE/A0xRvl/QP3E0nkaEvYUvH3gM04ZWYtIa6QlSpEetRlRI1xvQ7hiMIySHHEV+mwDSX8Kj4YZY6ZQAw== elliptic@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" hash.js "^1.0.0" hmac-drbg "^1.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" emittery@^0.7.1: version "0.7.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== "emoji-regex@>=6.0.0 <=6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== encodeurl@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" enhanced-resolve@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== dependencies: graceful-fs "^4.1.2" memory-fs "^0.5.0" tapable "^1.0.0" enquirer@^2.3.0: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== entities@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== enzyme-adapter-react-16@^1.11.0: version "1.15.5" resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.5.tgz#7a6f0093d3edd2f7025b36e7fbf290695473ee04" integrity sha512-33yUJGT1nHFQlbVI5qdo5Pfqvu/h4qPwi1o0a6ZZsjpiqq92a3HjynDhwd1IeED+Su60HDWV8mxJqkTnLYdGkw== dependencies: enzyme-adapter-utils "^1.13.1" enzyme-shallow-equal "^1.0.4" has "^1.0.3" object.assign "^4.1.0" object.values "^1.1.1" prop-types "^15.7.2" react-is "^16.13.1" react-test-renderer "^16.0.0-0" semver "^5.7.0" enzyme-adapter-utils@^1.13.1: version "1.14.0" resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz#afbb0485e8033aa50c744efb5f5711e64fbf1ad0" integrity sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg== dependencies: airbnb-prop-types "^2.16.0" function.prototype.name "^1.1.3" has "^1.0.3" object.assign "^4.1.2" object.fromentries "^2.0.3" prop-types "^15.7.2" semver "^5.7.1" enzyme-shallow-equal@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== dependencies: has "^1.0.3" object-is "^1.1.2" errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es-abstract@^1.17.4: version "1.17.7" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" is-callable "^1.2.2" is-regex "^1.1.1" object-inspect "^1.8.0" object-keys "^1.1.1" object.assign "^4.1.1" string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" es-abstract@^1.18.0-next.1: version "1.18.0-next.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" is-callable "^1.2.2" is-negative-zero "^2.0.0" is-regex "^1.1.1" object-inspect "^1.8.0" object-keys "^1.1.1" object.assign "^4.1.1" string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" es-module-lexer@^0.3.24, es-module-lexer@^0.3.25, es-module-lexer@^0.3.26: version "0.3.26" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b" integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA== es-module-traversal@^0.0.49: version "0.0.49" resolved "https://registry.yarnpkg.com/es-module-traversal/-/es-module-traversal-0.0.49.tgz#05838806629c9525f4f29da31e3643d42877c7bb" integrity sha512-KJGUbqsZdR9C9qbVftpg4WEWWNjTWtS4FKGQoXkvB1ghDgrDR5B8a0eSD2TMSUrDpzem3Pq0p3gyj+bgtD/2EA== dependencies: batched-promise-all "^0.9.2" debug "^4.2.0" deepmerge "^4.2.2" es-module-lexer "^0.3.25" is-builtin-module "^3.0.0" mime-types "^2.1.28" node-fetch "^2.6.1" posthtml "^0.15.1" resolve "^1.18.1" slash "^3.0.0" tslib "^2.0.3" es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" is-symbol "^1.0.2" es5-ext@^0.10.35, es5-ext@^0.10.50: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== dependencies: es6-iterator "~2.0.3" es6-symbol "~3.1.3" next-tick "~1.0.0" es6-iterator@2.0.3, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: d "1" es5-ext "^0.10.35" es6-symbol "^3.1.1" es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: d "^1.0.1" ext "^1.1.2" esbuild-register@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-1.2.1.tgz#a430decedd7cb83ecf05141c7a7050b990724d41" integrity sha512-Pg00Woeg+2hpRyZkxSjvBUIabQ6DZIdCUgeBCzWgYfiFCnetQF8Cmrr5/+M/rMJCP/trhNlV0Kc4KnbYssIrFg== dependencies: joycon "^2.2.5" pirates "^4.0.1" source-map-support "^0.5.19" strip-json-comments "^3.1.1" esbuild@^0.8.12, esbuild@^0.8.7: version "0.8.24" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.24.tgz#18645e102254682909017cec648f84d4834f15b3" integrity sha512-bqgEa2VemAN+YM52SM1626+/pdLp+p9NyqISB06ixcvauKIJk6akia3UTTsGAgn0oHEdReZ97gL+LYX+UjgwKA== esbuild@^0.8.32: version "0.8.32" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.32.tgz#d3d679ea417925f7afaab37555e52070df317355" integrity sha512-5IzQapMW/wFy5oxziHCJzawk26K3xeyrIAQPnPN3c0Q84hqRw6IfGDGfGWOdJNw5tAx77yvwqZ4r1QMpo6emJA== escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-html@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escodegen@^1.14.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: esprima "^4.0.1" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: source-map "~0.6.1" esinstall@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/esinstall/-/esinstall-0.5.2.tgz#933650258e279a8689316e21db67459d972f3434" integrity sha512-6vvYBxFXhmRSWl8xs8thEhysuSkhFhtHEYg5QN8nuHffAu4Vwg9DwfgNxGJnFjzxLRcPUpA/3/DKHZovJkidOQ== dependencies: "@rollup/plugin-alias" "^3.0.1" "@rollup/plugin-commonjs" "^16.0.0" "@rollup/plugin-inject" "^4.0.2" "@rollup/plugin-json" "^4.0.0" "@rollup/plugin-node-resolve" "^10.0.0" "@rollup/plugin-replace" "^2.3.3" cjs-module-lexer "^1.0.0" es-module-lexer "^0.3.24" is-builtin-module "^3.0.0" is-valid-identifier "^2.0.2" kleur "^4.1.1" mkdirp "^1.0.3" rimraf "^3.0.0" rollup "^2.34.0" rollup-plugin-node-polyfills "^0.2.1" validate-npm-package-name "^3.0.0" vm2 "^3.9.2" eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" esm@^3.2.25: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esrecurse@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== estree-walker@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== estree-walker@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== estree-walker@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@1.8.1, etag@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== events@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" safe-buffer "^5.1.1" exec-sh@^0.3.2: version "0.3.4" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" is-stream "^1.1.0" npm-run-path "^2.0.0" p-finally "^1.0.0" signal-exit "^3.0.0" strip-eof "^1.0.0" execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" get-stream "^4.0.0" is-stream "^1.1.0" npm-run-path "^2.0.0" p-finally "^1.0.0" signal-exit "^3.0.0" strip-eof "^1.0.0" execa@^4.0.0, execa@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" human-signals "^1.1.1" is-stream "^2.0.0" merge-stream "^2.0.0" npm-run-path "^4.0.0" onetime "^5.1.0" signal-exit "^3.0.2" strip-final-newline "^2.0.0" execa@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== 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" exenv@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" define-property "^0.2.5" extend-shallow "^2.0.1" posix-character-classes "^0.1.0" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.1" expand-template@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== expect@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: "@jest/types" "^26.6.2" ansi-styles "^4.0.0" jest-get-type "^26.3.0" jest-matcher-utils "^26.6.2" jest-message-util "^26.6.2" jest-regex-util "^26.0.0" ext@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== dependencies: type "^2.0.0" extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" extend@^3.0.0, extend@^3.0.2, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extendable-error@^0.1.5: version "0.1.7" resolved "https://registry.yarnpkg.com/extendable-error/-/extendable-error-0.1.7.tgz#60b9adf206264ac920058a7395685ae4670c2b96" integrity sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg== external-editor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" tmp "^0.0.33" extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" expand-brackets "^2.1.4" extend-shallow "^2.0.1" fragment-cache "^0.2.1" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.1" extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.1.1, fast-glob@^3.2.2, fast-glob@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" glob-parent "^5.1.0" merge2 "^1.3.0" micromatch "^4.0.2" picomatch "^2.2.1" fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fast-memoize@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e" integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== fastq@^1.6.0: version "1.9.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.9.0.tgz#e16a72f338eaca48e91b5c23593bcc2ef66b7947" integrity sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w== dependencies: reusify "^1.0.4" fault@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== dependencies: format "^0.2.0" fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== dependencies: bser "2.1.1" figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" repeat-string "^1.6.1" to-regex-range "^2.1.0" fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-cache-dir@3.3.1, find-cache-dir@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== dependencies: commondir "^1.0.1" make-dir "^3.0.2" pkg-dir "^4.1.0" find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: commondir "^1.0.1" make-dir "^2.0.0" pkg-dir "^3.0.0" find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== find-up@*, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" path-exists "^4.0.0" find-yarn-workspace-root2@1.2.16: version "1.2.16" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" integrity sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA== dependencies: micromatch "^4.0.2" pkg-dir "^4.2.0" flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== dependencies: inherits "^2.0.3" readable-stream "^2.3.6" focus-lock@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.7.0.tgz#b2bfb0ca7beacc8710a1ff74275fe0dc60a1d88a" integrity sha512-LI7v2mH02R55SekHYdv9pRHR9RajVNyIJ2N5IEkWbg7FT5ZmJ9Hw4mWxHeEUcd+dJo0QmzztHvDvWcc7prVFsw== follow-redirects@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.6" mime-types "^2.1.12" format@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= formidable@^1.1.1: version "1.2.2" resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9" integrity sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q== fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" framer-motion@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-3.2.0.tgz#ed81d7998152ec7545f7e29bd8241d36d1e1d15d" integrity sha512-1yTtCIsm5FV/E1aMj4/JYsKhC07n4Gy90XSl0+JKhY6WX8Dsu6YtQvIZMxKpGH4dcJNnT2GZdeLzhJ/2xkNR9A== dependencies: framesync "^5.0.0" hey-listen "^1.0.8" popmotion "^9.1.0" style-value-types "^4.0.1" tslib "^1.10.0" optionalDependencies: "@emotion/is-prop-valid" "^0.8.2" framesync@5.0.0, framesync@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/framesync/-/framesync-5.0.0.tgz#7de8caedf53ac441118e79680f1beb7391c328b6" integrity sha512-wd8t+JsQGisluSv1twiEeDv0aNGpavGb9q7xgIk9fGbcIWkNXF/KVtrjnOrCwBWJuiXxlJfNkcvGudsI32FxYA== fresh@~0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= dependencies: inherits "^2.0.1" readable-stream "^2.0.0" fromentries@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== front-matter@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-3.2.1.tgz#88be839638f397bbbcb0d61ac03bd08abb4f0a40" integrity sha512-YUhgEhbL6tG+Ok3vTGIoSDKqcr47aSDvyhEqIv8B+YuBJFsPnOiArNXTPp2yO07NL+a0L4+2jXlKlKqyVcsRRA== dependencies: js-yaml "^3.13.1" fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" universalify "^0.1.0" fs-extra@^8.0.0, fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" jsonfile "^4.0.0" universalify "^0.1.0" fs-extra@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" universalify "^1.0.0" fs-memo@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/fs-memo/-/fs-memo-1.2.0.tgz#a2ec3be606b902077adbb37ec529c5ec5fb2e037" integrity sha512-YEexkCpL4j03jn5SxaMHqcO6IuWuqm8JFUYhyCep7Ao89JIYmB8xoKhK7zXXJ9cCaNXpyNH5L3QtAmoxjoHW2w== fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" imurmurhash "^0.1.4" readable-stream "1 || 2" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: version "1.2.13" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: bindings "^1.5.0" nan "^2.12.1" fsevents@^2.1.2: version "2.2.1" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.2.1.tgz#1fb02ded2036a8ac288d507a65962bd87b97628d" integrity sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA== fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== fsevents@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== function.prototype.name@^1.1.2, function.prototype.name@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.3.tgz#0bb034bb308e7682826f215eb6b2ae64918847fe" integrity sha512-H51qkbNSp8mtkJt+nyW1gyStBiKZxfRqySNUR99ylq6BPXHKI4SEvIlTKp4odLfjRKJV04DFWMU3G/YRlQOsag== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" es-abstract "^1.18.0-next.1" functions-have-names "^1.2.1" functions-have-names@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" has-unicode "^2.0.0" object-assign "^4.1.0" signal-exit "^3.0.0" string-width "^1.0.1" strip-ansi "^3.0.1" wide-align "^1.1.0" generic-names@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== dependencies: loader-utils "^1.1.0" gensync@^1.0.0-beta.1: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-git-config@^0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/get-git-config/-/get-git-config-0.0.4.tgz#a379cccdc1a3f8fb4de1eb420423dd05c4d6b857" integrity sha512-A1qA5v+EhMUAgyK1xxO7OFcx5eUaS9nSrUB9uQVDapBRFKRKayqKbDpxwAHrGqcvVSi6HtyPH4uzyhxbubEPHA== dependencies: ini "^1.3.5" lodash "^4.17.19" tslib "^2.0.0" get-intrinsic@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== dependencies: function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" get-intrinsic@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== dependencies: function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-port-please@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-2.1.0.tgz#e9dd92ddee6f383a0d61c40965a2cd396b3ed6b6" integrity sha512-Ltp8WKR9D1ddNQ0iFOxhPXTXrIqpbLhQ54jChAyd67c+u08UAdOI/nTLPorsAbh0S/979Pwfof7O8Vu435ibag== dependencies: fs-memo "^1.2.0" get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" get-stream@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= github-slugger@^1.0.0, github-slugger@^1.2.1, github-slugger@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9" integrity sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q== dependencies: emoji-regex ">=6.0.0 <=6.1.1" glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" glob-parent@^5.1.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@7.1.6, glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globby@^11.0.0: version "11.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== 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" globrex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== got@^11.1.4: version "11.8.1" resolved "https://registry.yarnpkg.com/got/-/got-11.8.1.tgz#df04adfaf2e782babb3daabc79139feec2f7e85d" integrity sha512-9aYdZL+6nHmvJwHALLwKSUZ0hMwGaJGYv3hoPLPgnT8BoBXm1SjnZeky+91tfwJaDzun2s4RsBRy48IEYv2q2Q== dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" "@types/cacheable-request" "^6.0.1" "@types/responselike" "^1.0.0" cacheable-lookup "^5.0.3" cacheable-request "^7.0.1" decompress-response "^6.0.0" http2-wrapper "^1.0.0-beta.5.2" lowercase-keys "^2.0.0" p-cancelable "^2.0.0" responselike "^2.0.0" graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== grapheme-splitter@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: version "5.1.5" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: ajv "^6.12.3" har-schema "^2.0.0" hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" has-values "^0.1.4" isobject "^2.0.0" has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" has-values "^1.0.0" isobject "^3.0.0" has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" kind-of "^4.0.0" has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: inherits "^2.0.4" readable-stream "^3.6.0" safe-buffer "^5.2.0" hash-sum@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.1" hast-to-hyperscript@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== dependencies: "@types/unist" "^2.0.3" comma-separated-tokens "^1.0.0" property-information "^5.3.0" space-separated-tokens "^1.0.0" style-to-object "^0.3.0" unist-util-is "^4.0.0" web-namespaces "^1.0.0" hast-util-from-parse5@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA== dependencies: "@types/parse5" "^5.0.0" hastscript "^6.0.0" property-information "^5.0.0" vfile "^4.0.0" vfile-location "^3.2.0" web-namespaces "^1.0.0" hast-util-parse-selector@^2.0.0: version "2.2.5" resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== hast-util-raw@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977" integrity sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig== dependencies: "@types/hast" "^2.0.0" hast-util-from-parse5 "^6.0.0" hast-util-to-parse5 "^6.0.0" html-void-elements "^1.0.0" parse5 "^6.0.0" unist-util-position "^3.0.0" vfile "^4.0.0" web-namespaces "^1.0.0" xtend "^4.0.0" zwitch "^1.0.0" hast-util-to-parse5@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479" integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ== dependencies: hast-to-hyperscript "^9.0.0" property-information "^5.0.0" web-namespaces "^1.0.0" xtend "^4.0.0" zwitch "^1.0.0" hast-util-to-string@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz#9b24c114866bdb9478927d7e9c36a485ac728378" integrity sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w== hastscript@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== dependencies: "@types/hast" "^2.0.0" comma-separated-tokens "^1.0.0" hast-util-parse-selector "^2.0.0" property-information "^5.0.0" space-separated-tokens "^1.0.0" he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hey-listen@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== dependencies: "@babel/runtime" "^7.1.2" loose-envify "^1.2.0" resolve-pathname "^3.0.0" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" value-equal "^1.0.1" hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" hosted-git-info@^2.1.4: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-tags@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== html-void-elements@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== htmlparser2@5.0.1, htmlparser2@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7" integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ== dependencies: domelementtype "^2.0.1" domhandler "^3.3.0" domutils "^2.4.2" entities "^2.0.0" htmlparser2@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== dependencies: domelementtype "^1.3.1" domhandler "^2.3.0" domutils "^1.5.1" entities "^1.1.1" inherits "^2.0.1" readable-stream "^3.1.1" http-assert@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878" integrity sha512-rdw7q6GTlibqVVbXr0CKelfV5iY8G2HqEUkhSk297BMbSpSL8crXC+9rjKoMcZZEsksX30le6f/4ul4E28gegw== dependencies: deep-equal "~1.0.1" http-errors "~1.7.2" http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== http-errors@1.7.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== dependencies: depd "~1.1.2" inherits "2.0.4" setprototypeof "1.1.1" statuses ">= 1.5.0 < 2" toidentifier "1.0.0" http-errors@^1.6.3, http-errors@^1.7.3: version "1.8.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== dependencies: depd "~1.1.2" inherits "2.0.4" setprototypeof "1.2.0" statuses ">= 1.5.0 < 2" toidentifier "1.0.0" http-errors@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.4.0.tgz#6c0242dea6b3df7afda153c71089b31c6e82aabf" integrity sha1-bAJC3qaz33r9oVPHEImzHG6Cqr8= dependencies: inherits "2.0.1" statuses ">= 1.2.1 < 2" http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" inherits "2.0.3" setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" http-proxy@^1.16.2, http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" follow-redirects "^1.0.0" requires-port "^1.0.0" http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" sshpk "^1.7.0" http2-wrapper@^1.0.0-beta.5.2: version "1.0.0-beta.5.2" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== dependencies: quick-lru "^5.1.1" resolve-alpn "^1.0.0" httpie@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/httpie/-/httpie-1.1.2.tgz#e76a6792c2172446ea6df8805977a6f57bc9615d" integrity sha512-VQ82oXG95oY1fQw/XecHuvcFBA+lZQ9Vwj1RfLcO8a7HpDd4cc2ukwpJt+TUlFaLUAzZErylxWu6wclJ1rUhUQ== https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= https-proxy-agent@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== dependencies: agent-base "6" debug "4" human-id@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/human-id/-/human-id-1.0.2.tgz#e654d4b2b0d8b07e45da9f6020d8af17ec0a5df3" integrity sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw== human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== dependencies: postcss "^7.0.14" ieee754@^1.1.13, ieee754@^1.1.4: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= ignore@^5.1.4: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== import-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== dependencies: import-from "^3.0.0" import-fresh@^3.1.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" import-fresh@^3.2.1: version "3.2.2" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" import-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== dependencies: resolve-from "^5.0.0" import-local@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflation@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.0.0.tgz#8b417e47c28f925a45133d914ca1fd389107f30f" integrity sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8= inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== inline-style-parser@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== intersection-observer@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.7.0.tgz#ee16bee978db53516ead2f0a8154b09b400bbdc9" integrity sha512-Id0Fij0HsB/vKWGeBe9PxeY45ttRiBmhFyyt/geBdDHBYNctMRTE3dC1U3ujzz3lap+hVXlEcVaB56kZP/eEUg== invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-alphabetical@1.0.4, is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== is-alphanumeric@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== dependencies: is-alphabetical "^1.0.0" is-decimal "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-arrayish@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== is-builtin-module@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.0.0.tgz#137d3d2425023a19a660fb9dd6ddfabe52c03466" integrity sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw== dependencies: builtin-modules "^3.0.0" is-callable@^1.1.4, is-callable@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: ci-info "^2.0.0" is-core-module@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== dependencies: has "^1.0.3" is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" kind-of "^5.0.0" is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" kind-of "^6.0.2" is-docker@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== is-interactive@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= is-negative-zero@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-plain-object@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== is-potential-custom-element-name@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= is-reference@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== dependencies: "@types/estree" "*" is-regex@^1.1.0, is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== dependencies: has-symbols "^1.0.1" is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== is-subdir@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-subdir/-/is-subdir-1.1.1.tgz#423e66902f9c5f159b9cc4826c820df083059538" integrity sha512-VYpq0S7gPBVkkmfwkvGnx1EL9UVIo87NQyNcgMiNUdQCws3CJm5wj2nB+XPL7zigvjxhuZgp3bl2yBcKkSIj1w== dependencies: better-path-resolve "1.0.0" is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: has-symbols "^1.0.1" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-valid-identifier@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-valid-identifier/-/is-valid-identifier-2.0.2.tgz#146d9dbf29821b8118580b039d2203aa4bd1da4b" integrity sha512-mpS5EGqXOwzXtKAg6I44jIAqeBfntFLxpAth1rrKbxtKyI6LPktyDYpHBI+tHlduhhX/SF26mFXmxQu995QVqg== dependencies: assert "^1.4.1" is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== is-windows@^1.0.0, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-word-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isbinaryfile@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" integrity sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg== isbuiltin@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isbuiltin/-/isbuiltin-1.0.0.tgz#4453b2915690cb47c0cb9c9255a0807778315c96" integrity sha1-RFOykVaQy0fAy5ySVaCAd3gxXJY= dependencies: builtin-modules "^1.1.1" isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== dependencies: "@babel/core" "^7.7.5" "@istanbuljs/schema" "^0.1.2" istanbul-lib-coverage "^3.0.0" semver "^6.3.0" istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: istanbul-lib-coverage "^3.0.0" make-dir "^3.0.0" supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" istanbul-reports@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" jasmine-fail-fast@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/jasmine-fail-fast/-/jasmine-fail-fast-2.0.1.tgz#222daa16c89b675aba4ed9552d62cf0d1e759d71" integrity sha512-En8ONwvDQOV+jyiZEZvbvUSLWSdJFj9HiWjhLdGq/V/gxs4XyST730ooe928BbRxv4bfy05OpykKuoOU4aLC5w== dependencies: lodash "^4.17.15" jest-changed-files@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: "@jest/types" "^26.6.2" execa "^4.0.0" throat "^5.0.0" jest-cli@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: "@jest/core" "^26.6.3" "@jest/test-result" "^26.6.2" "@jest/types" "^26.6.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" jest-config "^26.6.3" jest-util "^26.6.2" jest-validate "^26.6.2" prompts "^2.0.1" yargs "^15.4.1" jest-config@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: "@babel/core" "^7.1.0" "@jest/test-sequencer" "^26.6.3" "@jest/types" "^26.6.2" babel-jest "^26.6.3" chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" jest-environment-jsdom "^26.6.2" jest-environment-node "^26.6.2" jest-get-type "^26.3.0" jest-jasmine2 "^26.6.3" jest-regex-util "^26.0.0" jest-resolve "^26.6.2" jest-util "^26.6.2" jest-validate "^26.6.2" micromatch "^4.0.2" pretty-format "^26.6.2" jest-diff@^26.0.0, jest-diff@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== dependencies: chalk "^4.0.0" diff-sequences "^26.6.2" jest-get-type "^26.3.0" pretty-format "^26.6.2" jest-docblock@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== dependencies: detect-newline "^3.0.0" jest-each@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== dependencies: "@jest/types" "^26.6.2" chalk "^4.0.0" jest-get-type "^26.3.0" jest-util "^26.6.2" pretty-format "^26.6.2" jest-environment-jsdom@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== dependencies: "@jest/environment" "^26.6.2" "@jest/fake-timers" "^26.6.2" "@jest/types" "^26.6.2" "@types/node" "*" jest-mock "^26.6.2" jest-util "^26.6.2" jsdom "^16.4.0" jest-environment-node@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== dependencies: "@jest/environment" "^26.6.2" "@jest/fake-timers" "^26.6.2" "@jest/types" "^26.6.2" "@types/node" "*" jest-mock "^26.6.2" jest-util "^26.6.2" jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" jest-regex-util "^26.0.0" jest-serializer "^26.6.2" jest-util "^26.6.2" jest-worker "^26.6.2" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" optionalDependencies: fsevents "^2.1.2" jest-jasmine2@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: "@babel/traverse" "^7.1.0" "@jest/environment" "^26.6.2" "@jest/source-map" "^26.6.2" "@jest/test-result" "^26.6.2" "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" expect "^26.6.2" is-generator-fn "^2.0.0" jest-each "^26.6.2" jest-matcher-utils "^26.6.2" jest-message-util "^26.6.2" jest-runtime "^26.6.3" jest-snapshot "^26.6.2" jest-util "^26.6.2" pretty-format "^26.6.2" throat "^5.0.0" jest-leak-detector@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== dependencies: jest-get-type "^26.3.0" pretty-format "^26.6.2" jest-matcher-utils@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: chalk "^4.0.0" jest-diff "^26.6.2" jest-get-type "^26.3.0" pretty-format "^26.6.2" jest-message-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" "@jest/types" "^26.6.2" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.2" pretty-format "^26.6.2" slash "^3.0.0" stack-utils "^2.0.2" jest-mock@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== dependencies: "@jest/types" "^26.6.2" "@types/node" "*" jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== jest-regex-util@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== jest-resolve-dependencies@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== dependencies: "@jest/types" "^26.6.2" jest-regex-util "^26.0.0" jest-snapshot "^26.6.2" jest-resolve@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== dependencies: "@jest/types" "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.2" jest-util "^26.6.2" read-pkg-up "^7.0.1" resolve "^1.18.1" slash "^3.0.0" jest-runner@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== dependencies: "@jest/console" "^26.6.2" "@jest/environment" "^26.6.2" "@jest/test-result" "^26.6.2" "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" emittery "^0.7.1" exit "^0.1.2" graceful-fs "^4.2.4" jest-config "^26.6.3" jest-docblock "^26.0.0" jest-haste-map "^26.6.2" jest-leak-detector "^26.6.2" jest-message-util "^26.6.2" jest-resolve "^26.6.2" jest-runtime "^26.6.3" jest-util "^26.6.2" jest-worker "^26.6.2" source-map-support "^0.5.6" throat "^5.0.0" jest-runtime@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== dependencies: "@jest/console" "^26.6.2" "@jest/environment" "^26.6.2" "@jest/fake-timers" "^26.6.2" "@jest/globals" "^26.6.2" "@jest/source-map" "^26.6.2" "@jest/test-result" "^26.6.2" "@jest/transform" "^26.6.2" "@jest/types" "^26.6.2" "@types/yargs" "^15.0.0" chalk "^4.0.0" cjs-module-lexer "^0.6.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" jest-config "^26.6.3" jest-haste-map "^26.6.2" jest-message-util "^26.6.2" jest-mock "^26.6.2" jest-regex-util "^26.0.0" jest-resolve "^26.6.2" jest-snapshot "^26.6.2" jest-util "^26.6.2" jest-validate "^26.6.2" slash "^3.0.0" strip-bom "^4.0.0" yargs "^15.4.1" jest-serializer@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: "@types/node" "*" graceful-fs "^4.2.4" jest-snapshot@^26.3.0, jest-snapshot@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: "@babel/types" "^7.0.0" "@jest/types" "^26.6.2" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.0.0" chalk "^4.0.0" expect "^26.6.2" graceful-fs "^4.2.4" jest-diff "^26.6.2" jest-get-type "^26.3.0" jest-haste-map "^26.6.2" jest-matcher-utils "^26.6.2" jest-message-util "^26.6.2" jest-resolve "^26.6.2" natural-compare "^1.4.0" pretty-format "^26.6.2" semver "^7.3.2" jest-specific-snapshot@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jest-specific-snapshot/-/jest-specific-snapshot-4.0.0.tgz#a52a2e223e7576e610dbeaf341207c557ac20554" integrity sha512-YdW5P/MVwOizWR0MJwURxdrjdXvdG2MMpXKVGr7dZ2YrBmE6E6Ab74UL3DOYmGmzaCnNAW1CL02pY5MTHE3ulQ== dependencies: jest-snapshot "^26.3.0" jest-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" graceful-fs "^4.2.4" is-ci "^2.0.0" micromatch "^4.0.2" jest-validate@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== dependencies: "@jest/types" "^26.6.2" camelcase "^6.0.0" chalk "^4.0.0" jest-get-type "^26.3.0" leven "^3.1.0" pretty-format "^26.6.2" jest-watcher@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: "@jest/test-result" "^26.6.2" "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" jest-util "^26.6.2" string-length "^4.0.1" jest-worker@24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: merge-stream "^2.0.0" supports-color "^6.1.0" jest-worker@^26.2.1, jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== dependencies: "@jest/core" "^26.6.3" import-local "^3.0.2" jest-cli "^26.6.3" joycon@^2.2.5: version "2.2.5" resolved "https://registry.yarnpkg.com/joycon/-/joycon-2.2.5.tgz#8d4cf4cbb2544d7b7583c216fcdfec19f6be1615" integrity sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ== js-string-escape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.6.1: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== dependencies: argparse "^1.0.7" esprima "^4.0.0" jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jsdom@^16.4.0: version "16.4.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== dependencies: abab "^2.0.3" acorn "^7.1.1" acorn-globals "^6.0.0" cssom "^0.4.4" cssstyle "^2.2.0" data-urls "^2.0.0" decimal.js "^10.2.0" domexception "^2.0.1" escodegen "^1.14.1" html-encoding-sniffer "^2.0.1" is-potential-custom-element-name "^1.0.0" nwsapi "^2.2.0" parse5 "5.1.1" request "^2.88.2" request-promise-native "^1.0.8" saxes "^5.0.0" symbol-tree "^3.2.4" tough-cookie "^3.0.1" w3c-hr-time "^1.0.2" w3c-xmlserializer "^2.0.0" webidl-conversions "^6.1.0" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" ws "^7.2.3" xml-name-validator "^3.0.0" jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json5@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== dependencies: minimist "^1.2.0" json5@^2.1.0, json5@^2.1.1, json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== dependencies: minimist "^1.2.5" jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= optionalDependencies: graceful-fs "^4.1.6" jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" jsonp@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/jsonp/-/jsonp-0.2.1.tgz#a65b4fa0f10bda719a05441ea7b94c55f3e15bae" integrity sha1-pltPoPEL2nGaBUQep7lMVfPhW64= dependencies: debug "^2.1.3" jsonschema@~1.2.5: version "1.2.11" resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.11.tgz#7a799cc2aa5a285d893203e8dc81f5becbfb0e91" integrity sha512-XNZHs3N1IOa3lPKm//npxMhOdaoPw+MvEV0NIgxcER83GTJcG13rehtWmpBCfEt8DrtYwIkMTs8bdXoYs4fvnQ== jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" extsprintf "1.3.0" json-schema "0.2.3" verror "1.10.0" jsx-ast-utils@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== dependencies: array-includes "^3.1.1" object.assign "^4.1.0" keygrip@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== dependencies: tsscmp "1.0.6" keyv@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== dependencies: json-buffer "3.0.1" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== kleur@^4.1.0, kleur@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.3.tgz#8d262a56d79a137ee1b706e967c0b08a7fef4f4c" integrity sha512-H1tr8QP2PxFTNwAFM74Mui2b6ovcY9FoxJefgrwxY+OCJcq01k5nvhf4M/KnizzrJvLRap5STUy7dgDV35iUBw== klona@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== koa-body@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/koa-body/-/koa-body-4.2.0.tgz#37229208b820761aca5822d14c5fc55cee31b26f" integrity sha512-wdGu7b9amk4Fnk/ytH8GuWwfs4fsB5iNkY8kZPpgQVb04QZSv85T0M8reb+cJmvLE8cjPYvBzRikD3s6qz8OoA== dependencies: "@types/formidable" "^1.0.31" co-body "^5.1.1" formidable "^1.1.1" koa-compose@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7" integrity sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec= dependencies: any-promise "^1.1.0" koa-compose@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== koa-conditional-get@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/koa-conditional-get/-/koa-conditional-get-3.0.0.tgz#552cb64a217dfb907e90b7c34f42009e441c4b8e" integrity sha512-VKyPS7SuNH26TjTV2IRz+oh0HV/jc2lYAo51PTQTkj0XFn8ebNZW9riczmrW7ZVBFSnls1Z88DPUYKnvVymruA== koa-convert@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-1.2.0.tgz#da40875df49de0539098d1700b50820cebcd21d0" integrity sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA= dependencies: co "^4.6.0" koa-compose "^3.0.0" koa-etag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/koa-etag/-/koa-etag-4.0.0.tgz#2c2bb7ae69ca1ac6ced09ba28dcb78523c810414" integrity sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg== dependencies: etag "^1.8.1" koa-mount@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/koa-mount/-/koa-mount-4.0.0.tgz#e0265e58198e1a14ef889514c607254ff386329c" integrity sha512-rm71jaA/P+6HeCpoRhmCv8KVBIi0tfGuO/dMKicbQnQW/YJntJ6MnnspkodoA4QstMVEZArsCphmd0bJEtoMjQ== dependencies: debug "^4.0.1" koa-compose "^4.1.0" koa-proxies@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/koa-proxies/-/koa-proxies-0.11.0.tgz#43dde4260080f7cb0f284655f85cf654bbe9ec84" integrity sha512-iXGRADBE0fM7g7AttNOlLZ/cCFKXeVMHbFJKIRb0dUCrSYXi02loyVSdBlKlBQ5ZfVKJLo9Q9FyqwVTp1poVVA== dependencies: http-proxy "^1.16.2" path-match "^1.2.4" koa-send@^5.0.0, koa-send@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/koa-send/-/koa-send-5.0.1.tgz#39dceebfafb395d0d60beaffba3a70b4f543fe79" integrity sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ== dependencies: debug "^4.1.1" http-errors "^1.7.3" resolve-path "^1.4.0" koa-static@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/koa-static/-/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" integrity sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ== dependencies: debug "^3.1.0" koa-send "^5.0.0" koa@^2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.0.tgz#25217e05efd3358a7e5ddec00f0a380c9b71b501" integrity sha512-i/XJVOfPw7npbMv67+bOeXr3gPqOAw6uh5wFyNs3QvJ47tUx3M3V9rIE0//WytY42MKz4l/MXKyGkQ2LQTfLUQ== dependencies: accepts "^1.3.5" cache-content-type "^1.0.0" content-disposition "~0.5.2" content-type "^1.0.4" cookies "~0.8.0" debug "~3.1.0" delegates "^1.0.0" depd "^1.1.2" destroy "^1.0.4" encodeurl "^1.0.2" escape-html "^1.0.3" fresh "~0.5.2" http-assert "^1.3.0" http-errors "^1.6.3" is-generator-function "^1.0.7" koa-compose "^4.1.0" koa-convert "^1.2.0" on-finished "^2.3.0" only "~0.0.2" parseurl "^1.3.2" statuses "^1.5.0" type-is "^1.6.16" vary "^1.1.2" landing-blocks@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/landing-blocks/-/landing-blocks-2.0.2.tgz#4537a8a8b25d05f98c536304a6bdc776f52de444" integrity sha512-REj1Khw68BASIeexvEnI/lLRFIKIDxcF1ysQ+rPfAH0G2oWzE2SExtIdsQvVnU+no7RT0MkhAXjcl8cGABIJQA== dependencies: "@emotion/styled" "11" baby-i-am-faded "^2.0.1" color-js "^1.0.5" intersection-observer "^0.7.0" lodash.get "^4.4.2" lodash.merge "^4.6.2" prism-react-renderer "^1.1.0" react-mailchimp-subscribe "^2.1.0" react-script-hook "^1.1.1" react-twitter-embed "^3.0.3" react-typical "^0.1.3" react-typist "^2.0.5" utility-types "^3.10.0" launch-editor@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.2.1.tgz#871b5a3ee39d6680fcc26d37930b6eeda89db0ca" integrity sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw== dependencies: chalk "^2.3.0" shell-quote "^1.6.1" leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" line-column@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= dependencies: isarray "^1.0.0" isobject "^2.0.0" lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" pify "^3.0.0" strip-bom "^3.0.0" load-yaml-file@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d" integrity sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw== dependencies: graceful-fs "^4.1.5" js-yaml "^3.13.0" pify "^4.0.1" strip-bom "^3.0.0" loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== loader-utils@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= dependencies: big.js "^3.1.3" emojis-list "^2.0.0" json5 "^0.5.0" loader-utils@1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== dependencies: big.js "^5.2.2" emojis-list "^2.0.0" json5 "^1.0.1" loader-utils@2.0.0, loader-utils@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^2.1.2" loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^1.0.1" locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.mergewith@4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= lodash.startcase@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg= lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= lodash.uniq@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== log-symbols@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== dependencies: chalk "^4.0.0" longest-streak@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== lru-cache@6.0.0, lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: pseudomap "^1.0.2" yallist "^2.1.2" lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" magic-string@^0.25.1, magic-string@^0.25.2, magic-string@^0.25.3, magic-string@^0.25.5, magic-string@^0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== dependencies: sourcemap-codec "^1.4.4" make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: pify "^4.0.1" semver "^5.6.0" make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= dependencies: tmpl "1.0.x" map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= map-obj@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== markdown-table@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== dependencies: repeat-string "^1.0.0" md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" inherits "^2.0.1" safe-buffer "^5.1.2" mdast-squeeze-paragraphs@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ== dependencies: unist-util-remove "^2.0.0" mdast-util-compact@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490" integrity sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA== dependencies: unist-util-visit "^2.0.0" mdast-util-definitions@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== dependencies: unist-util-visit "^2.0.0" mdast-util-to-hast@10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" mdast-util-definitions "^4.0.0" mdurl "^1.0.0" unist-builder "^2.0.0" unist-util-generated "^1.0.0" unist-util-position "^3.0.0" unist-util-visit "^2.0.0" mdast-util-to-string@^1.0.0, mdast-util-to-string@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== mdast-util-to-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== mdast-util-toc@^5.0.3: version "5.1.0" resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-5.1.0.tgz#3af0f9c9a764b993538af03f1f79f4e3cec22736" integrity sha512-csimbRIVkiqc+PpFeKDGQ/Ck2N4f9FYH3zzBMMJzcxoKL8m+cM0n94xXm0I9eaxHnKdY9n145SGTdyJC7i273g== dependencies: "@types/mdast" "^3.0.3" "@types/unist" "^2.0.3" extend "^3.0.2" github-slugger "^1.2.1" mdast-util-to-string "^2.0.0" unist-util-is "^4.0.0" unist-util-visit "^2.0.0" mdast@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mdast/-/mdast-3.0.0.tgz#626bce9603ed43fb6fb053245a6e4a17f4457aa8" integrity sha1-YmvOlgPtQ/tvsFMkWm5KF/RFeqg= mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= dependencies: errno "^0.1.3" readable-stream "^2.0.1" memory-fs@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== dependencies: errno "^0.1.3" readable-stream "^2.0.1" memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= meow@^6.0.0: version "6.1.1" resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg== dependencies: "@types/minimist" "^1.2.0" camelcase-keys "^6.2.2" decamelize-keys "^1.1.0" hard-rejection "^2.1.0" minimist-options "^4.0.2" normalize-package-data "^2.5.0" read-pkg-up "^7.0.1" redent "^3.0.0" trim-newlines "^3.0.0" type-fest "^0.13.1" yargs-parser "^18.1.3" merge-source-map@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== dependencies: source-map "^0.6.1" merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= micro-memoize@^4.0.9: version "4.0.9" resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-4.0.9.tgz#b44a38c9dffbee1cefc2fd139bc8947952268b62" integrity sha512-Z2uZi/IUMGQDCXASdujXRqrXXEwSY0XffUrAOllhqzQI3wpUyZbiZTiE2JuYC0HSG2G7DbCS5jZmsEKEGZuemg== micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" braces "^2.3.1" define-property "^2.0.2" extend-shallow "^3.0.2" extglob "^2.0.4" fragment-cache "^0.2.1" kind-of "^6.0.2" nanomatch "^1.2.9" object.pick "^1.3.0" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.2" micromatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== dependencies: braces "^3.0.1" picomatch "^2.0.5" miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: bn.js "^4.0.0" brorand "^1.0.1" mime-db@1.44.0: version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== mime-db@1.45.0, "mime-db@>= 1.43.0 < 2": version "1.45.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.26, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: mime-db "1.44.0" mime-types@^2.1.28: version "2.1.28" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== dependencies: mime-db "1.45.0" mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== mimic-response@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== mimic-response@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== mini-create-react-context@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== dependencies: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: arrify "^1.0.1" is-plain-obj "^1.1.0" kind-of "^6.0.3" minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: minipass "^3.0.0" minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: minipass "^3.0.0" minipass-pipeline@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" minipass@^3.0.0, minipass@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== dependencies: yallist "^4.0.0" minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" yallist "^4.0.0" mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" end-of-stream "^1.1.0" flush-write-stream "^1.0.0" from2 "^2.1.0" parallel-transform "^1.1.0" pump "^3.0.0" pumpify "^1.3.3" stream-each "^1.1.0" through2 "^2.0.0" mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" mixme@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.4.0.tgz#a1aee27f0d63cc905e1cc6ddc98abf94d414435e" integrity sha512-B4Sm1CDC5+ov5AYxSkyeT5HLtiDgNOLKwFlq34wr8E2O3zRdTvQiLzo599Jt9cir6VJrSenOlgvdooVYCQJIYw== mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" fs-write-stream-atomic "^1.0.8" mkdirp "^0.5.1" rimraf "^2.5.4" run-queue "^1.0.3" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== dependencies: any-promise "^1.0.0" object-assign "^4.0.1" thenify-all "^1.0.0" nan@^2.12.1: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== nanoid@^3.1.16, nanoid@^3.1.20: version "3.1.20" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" define-property "^2.0.2" extend-shallow "^3.0.2" fragment-cache "^0.2.1" is-windows "^1.0.2" kind-of "^6.0.2" object.pick "^1.3.0" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.1" napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== native-url@0.3.4: version "0.3.4" resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.3.4.tgz#29c943172aed86c63cee62c8c04db7f5756661f8" integrity sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA== dependencies: querystring "^0.2.0" natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== next-react-svg@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/next-react-svg/-/next-react-svg-1.1.2.tgz#e39e75a0259f85194552e67d75bdfb5b777cf158" integrity sha512-DrMZaE2XYV5Qa6TBkKVP/7ddqJxDd+TRXnDeGzYyRCwFsfm3G9Lodyb3jiIZ1OijJQT7/J+rNFv19oOKOkei6Q== dependencies: svg-react-loader "0.4.6" next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= next-transpile-modules@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/next-transpile-modules/-/next-transpile-modules-4.1.0.tgz#b2d4bd29f3d4179014f7615720f360fdeec67ff7" integrity sha512-brb9S2Dq7l01fV0fdZw1pO2cWMu7fFTclIV2nccmX2Jzwtz1c9iScPMqGyWP6/wglOPOColoJlHzOrSG6cnEIQ== dependencies: micromatch "^4.0.2" slash "^3.0.0" next@^10.0.1: version "10.0.5" resolved "https://registry.yarnpkg.com/next/-/next-10.0.5.tgz#8071e0aa1883266c91943aa7c6b73deadb064793" integrity sha512-yr7ap2TLugf0aMHz+3JoKFP9CCkFE+k6jCfdUymORhptjLYZbD3YGlTcUC1CRl+b5Phlbl7m/WUIPde0VcguiA== dependencies: "@ampproject/toolbox-optimizer" "2.7.1-alpha.0" "@babel/runtime" "7.12.5" "@hapi/accept" "5.0.1" "@next/env" "10.0.5" "@next/polyfill-module" "10.0.5" "@next/react-dev-overlay" "10.0.5" "@next/react-refresh-utils" "10.0.5" "@opentelemetry/api" "0.14.0" ast-types "0.13.2" babel-plugin-transform-define "2.0.0" babel-plugin-transform-react-remove-prop-types "0.4.24" browserslist "4.14.6" buffer "5.6.0" caniuse-lite "^1.0.30001113" chalk "2.4.2" chokidar "3.4.3" crypto-browserify "3.12.0" css-loader "4.3.0" cssnano-simple "1.2.1" etag "1.8.1" find-cache-dir "3.3.1" jest-worker "24.9.0" loader-utils "2.0.0" native-url "0.3.4" node-fetch "2.6.1" node-html-parser "1.4.9" p-limit "3.1.0" path-browserify "1.0.1" pnp-webpack-plugin "1.6.4" postcss "8.1.7" process "0.11.10" prop-types "15.7.2" raw-body "2.4.1" react-is "16.13.1" react-refresh "0.8.3" resolve-url-loader "3.1.2" sass-loader "10.0.5" schema-utils "2.7.1" stream-browserify "3.0.0" style-loader "1.2.1" styled-jsx "3.3.2" use-subscription "1.5.1" vm-browserify "1.1.2" watchpack "2.0.0-beta.13" webpack "4.44.1" webpack-sources "1.4.3" optionalDependencies: sharp "0.26.3" nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== node-abi@^2.7.0: version "2.19.3" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.19.3.tgz#252f5dcab12dad1b5503b2d27eddd4733930282d" integrity sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg== dependencies: semver "^5.4.1" node-addon-api@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.1.0.tgz#98b21931557466c6729e51cb77cd39c965f42239" integrity sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw== node-emoji@^1.8.1: version "1.10.0" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== dependencies: lodash.toarray "^4.4.0" node-fetch@2.6.1, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== node-html-parser@1.4.9: version "1.4.9" resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c" integrity sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw== dependencies: he "1.2.0" node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" buffer "^4.3.0" console-browserify "^1.1.0" constants-browserify "^1.0.0" crypto-browserify "^3.11.0" domain-browser "^1.1.1" events "^3.0.0" https-browserify "^1.0.0" os-browserify "^0.3.0" path-browserify "0.0.1" process "^0.11.10" punycode "^1.2.4" querystring-es3 "^0.2.0" readable-stream "^2.3.3" stream-browserify "^2.0.1" stream-http "^2.7.2" string_decoder "^1.0.0" timers-browserify "^2.0.4" tty-browserify "0.0.0" url "^0.11.0" util "^0.11.0" vm-browserify "^1.0.1" node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= node-notifier@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== dependencies: growly "^1.3.0" is-wsl "^2.2.0" semver "^7.3.2" shellwords "^0.1.1" uuid "^8.3.0" which "^2.0.2" node-releases@^1.1.65, node-releases@^1.1.69: version "1.1.69" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.69.tgz#3149dbde53b781610cd8b486d62d86e26c3725f6" integrity sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA== noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= normalize-html-whitespace@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz#5e3c8e192f1b06c3b9eee4b7e7f28854c7601e34" integrity sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA== normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" resolve "^1.10.0" semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= normalize-url@^4.1.0: version "4.5.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== normalize.css@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== npm-run-all@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== dependencies: ansi-styles "^3.2.1" chalk "^2.4.1" cross-spawn "^6.0.5" memorystream "^0.3.1" minimatch "^3.0.4" pidtree "^0.3.0" read-pkg "^3.0.0" shell-quote "^1.6.1" string.prototype.padend "^3.0.0" npm-run-path@4.0.1, npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" npmlog@^4.0.1, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" gauge "~2.7.3" set-blocking "~2.0.0" nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@4.1.1, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" kind-of "^3.0.3" object-hash@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.1.1.tgz#9447d0279b4fcf80cff3259bf66a1dc73afabe09" integrity sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ== object-inspect@^1.8.0: version "1.9.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== object-is@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" has-symbols "^1.0.1" object-keys "^1.1.1" object.entries@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" es-abstract "^1.18.0-next.1" has "^1.0.3" object.fromentries@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072" integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" es-abstract "^1.18.0-next.1" has "^1.0.3" object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" object.values@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" es-abstract "^1.18.0-next.1" has "^1.0.3" on-finished@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: ee-first "1.1.1" once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" only@~0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q= open@^7.0.4, open@^7.2.1: version "7.3.0" resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== dependencies: is-docker "^2.0.0" is-wsl "^2.1.1" optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.6" levn "~0.3.0" prelude-ls "~1.1.2" type-check "~0.3.2" word-wrap "~1.2.3" ora@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/ora/-/ora-5.1.0.tgz#b188cf8cd2d4d9b13fd25383bc3e5cba352c94f8" integrity sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w== dependencies: chalk "^4.1.0" cli-cursor "^3.1.0" cli-spinners "^2.4.0" is-interactive "^1.0.0" log-symbols "^4.0.0" mute-stream "0.0.8" strip-ansi "^6.0.0" wcwidth "^1.0.1" ora@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ora/-/ora-5.2.0.tgz#de10bfd2d15514384af45f3fa9d9b1aaf344fda1" integrity sha512-+wG2v8TUU8EgzPHun1k/n45pXquQ9fHnbXVetl9rRgO6kjZszGGbraF3XPTIdgeA+s1lbRjSEftAnyT0w8ZMvQ== dependencies: bl "^4.0.3" chalk "^4.1.0" cli-cursor "^3.1.0" cli-spinners "^2.5.0" is-interactive "^1.0.0" log-symbols "^4.0.0" strip-ansi "^6.0.0" wcwidth "^1.0.1" os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= outdent@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== p-cancelable@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== p-each-series@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== p-filter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== dependencies: p-map "^2.0.0" p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= p-limit@3.1.0, p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-queue@^6.2.1, p-queue@^6.6.1: version "6.6.2" resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== dependencies: eventemitter3 "^4.0.4" p-timeout "^3.2.0" p-timeout@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== dependencies: p-finally "^1.0.0" p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: cyclist "^1.0.1" inherits "^2.0.3" readable-stream "^2.1.5" parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-asn1@^5.0.0, parse-asn1@^5.1.5: version "5.1.6" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: asn1.js "^5.2.0" browserify-aes "^1.0.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== dependencies: character-entities "^1.0.0" character-entities-legacy "^1.0.0" character-reference-invalid "^1.0.0" is-alphanumerical "^1.0.0" is-decimal "^1.0.0" is-hexadecimal "^1.0.0" parse-github-url@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" parse-json@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" parse5@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== parse5@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== dependencies: "@types/node" "*" parse5@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parseurl@^1.3.2: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-browserify@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@1.0.1, path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-match@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/path-match/-/path-match-1.2.4.tgz#a62747f3c7e0c2514762697f24443585b09100ea" integrity sha1-pidH88fgwlFHYml/JEQ1hbCRAOo= dependencies: http-errors "~1.4.0" path-to-regexp "^1.0.0" path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-to-regexp@^1.0.0, path-to-regexp@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== dependencies: isarray "0.0.1" path-to-regexp@^6.1.0: version "6.2.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38" integrity sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg== path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" ripemd160 "^2.0.1" safe-buffer "^5.0.1" sha.js "^2.4.8" performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== pid-cwd@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pid-cwd/-/pid-cwd-1.2.0.tgz#c14c03d812b1d23f97aee27767957fc16272c979" integrity sha512-8QQzIdBmy4bd2l1NKWON1X8flO5TQQRzU2uRDua/XaxSC0iJ+rgbDrlX76t0W3DaJ7OevTYpftyvQ6oMe3hclQ== pidtree@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== dependencies: node-modules-regexp "^1.0.0" pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" platform@1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== pnp-webpack-plugin@1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== dependencies: ts-pnp "^1.1.6" popmotion@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-9.1.0.tgz#4360d06bd18ce8baa8f9284ecec7d55344af6325" integrity sha512-+J7pzzBy5kk2qsP8ilowKs/CH+HoZa3kOGEBNCleCvsPXEF3nKHdfAR3SboMyPvdpIrofaT7ZIy/xWgz446Azw== dependencies: framesync "5.0.0" hey-listen "^1.0.8" style-value-types "^4.0.1" tslib "^1.10.0" posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss-discard-comments@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== dependencies: postcss "^7.0.0" postcss-functions@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e" integrity sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4= dependencies: glob "^7.1.2" object-assign "^4.1.1" postcss "^6.0.9" postcss-value-parser "^3.3.0" postcss-import@^12.0.1: version "12.0.1" resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-12.0.1.tgz#cf8c7ab0b5ccab5649024536e565f841928b7153" integrity sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw== dependencies: postcss "^7.0.1" postcss-value-parser "^3.2.3" read-cache "^1.0.0" resolve "^1.1.7" postcss-js@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.3.tgz#a96f0f23ff3d08cec7dc5b11bf11c5f8077cdab9" integrity sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w== dependencies: camelcase-css "^2.0.1" postcss "^7.0.18" postcss-load-config@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.0.0.tgz#850bb066edd65b734329eacf83af0c0764226c87" integrity sha512-lErrN8imuEF1cSiHBV8MiR7HeuzlDpCGNtaMyYHlOBuJHHOGw6S4xOMZp8BbXPr7AGQp14L6PZDlIOpfFJ6f7w== dependencies: cosmiconfig "^7.0.0" import-cwd "^3.0.0" postcss-modules-extract-imports@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== dependencies: postcss "^7.0.5" postcss-modules-local-by-default@^3.0.2, postcss-modules-local-by-default@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== dependencies: icss-utils "^4.1.1" postcss "^7.0.32" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" postcss-modules-scope@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" postcss-modules-values@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: icss-utils "^4.0.0" postcss "^7.0.6" postcss-modules@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-3.2.2.tgz#ee390de0f9f18e761e1778dfb9be26685c02c51f" integrity sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw== dependencies: generic-names "^2.0.1" icss-replace-symbols "^1.1.0" lodash.camelcase "^4.3.0" postcss "^7.0.32" postcss-modules-extract-imports "^2.0.0" postcss-modules-local-by-default "^3.0.2" postcss-modules-scope "^2.2.0" postcss-modules-values "^3.0.0" string-hash "^1.1.1" postcss-nested@^4.1.1: version "4.2.3" resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-4.2.3.tgz#c6f255b0a720549776d220d00c4b70cd244136f6" integrity sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw== dependencies: postcss "^7.0.32" postcss-selector-parser "^6.0.2" postcss-safe-parser@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== dependencies: postcss "^7.0.26" postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== dependencies: cssesc "^3.0.0" indexes-of "^1.0.1" uniq "^1.0.1" util-deprecate "^1.0.2" postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== postcss@7.0.21: version "7.0.21" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" postcss@7.0.32: version "7.0.32" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" postcss@8.1.7: version "8.1.7" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.7.tgz#ff6a82691bd861f3354fd9b17b2332f88171233f" integrity sha512-llCQW1Pz4MOPwbZLmOddGM9eIJ8Bh7SZ2Oj5sxZva77uVaotYDsYTch1WBTNu7fUY0fpWp0fdt7uW40D4sRiiQ== dependencies: colorette "^1.2.1" line-column "^1.0.2" nanoid "^3.1.16" source-map "^0.6.1" postcss@^6.0.9: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== dependencies: chalk "^2.4.1" source-map "^0.6.1" supports-color "^5.4.0" postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.14, postcss@^7.0.18, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: version "7.0.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== dependencies: chalk "^2.4.2" source-map "^0.6.1" supports-color "^6.1.0" postcss@^8.1.8: version "8.2.1" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.1.tgz#eabc5557c4558059b9d9e5b15bce7ffa9089c2a8" integrity sha512-RhsqOOAQzTgh1UB/IZdca7F9WDb7SUCR2Vnv1x7DbvuuggQIpoDwjK+q0rzoPffhYvWNKX5JSwS4so4K3UC6vA== dependencies: colorette "^1.2.1" nanoid "^3.1.20" source-map "^0.6.1" posthtml-parser@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.6.0.tgz#52488cdb4fa591c3102de73197c471859ee0be63" integrity sha512-5ffwKQNgtVHdhZniWxu+1ryvaZv5l25HPLUV6W5xy5nYVWMXtvjtwRnbSpfbKFvbyl7XI+d4AqkjmonkREqnXA== dependencies: htmlparser2 "^5.0.1" posthtml-render@^1.2.3: version "1.4.0" resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.4.0.tgz#40114070c45881cacb93347dae3eff53afbcff13" integrity sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw== posthtml@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.15.1.tgz#1848064f48a1cca0e0323752b1d26fed32e180b8" integrity sha512-QSnUnvnnRv+wt7T9igqNG7GPcc+ZsbX93X+9aPldzgiuQfqIXTbnD47FY8pAtq4gjB9QZrDadDuG8jusmOPpYA== dependencies: posthtml-parser "^0.6.0" posthtml-render "^1.2.3" preact@^10.5.7: version "10.5.10" resolved "https://registry.yarnpkg.com/preact/-/preact-10.5.10.tgz#8de7bf669e965a51fc9e45a6fd1e97a47af383e6" integrity sha512-A6SITnHaj5CS4JPLVroQDNOEozq4Y0B4yQSGHLznxHe66Jb2DvoeTEibLjXmfeofgQE3BZ2zurltBIapzCMlwg== prebuild-install@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.0.0.tgz#669022bcde57c710a869e39c5ca6bf9cd207f316" integrity sha512-h2ZJ1PXHKWZpp1caLw0oX9sagVpL2YTk+ZwInQbQ3QqNd4J03O6MpFNmMTJlkfgPENWqe5kP0WjQLqz5OjLfsw== dependencies: detect-libc "^1.0.3" expand-template "^2.0.3" github-from-package "0.0.0" minimist "^1.2.3" mkdirp-classic "^0.5.3" napi-build-utils "^1.0.1" node-abi "^2.7.0" noop-logger "^0.1.1" npmlog "^4.0.1" pump "^3.0.0" rc "^1.2.7" simple-get "^3.0.3" tar-fs "^2.0.0" tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" preferred-pm@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/preferred-pm/-/preferred-pm-3.0.2.tgz#bbdbef1014e34a7490349bf70d6d244b8d57a5e1" integrity sha512-yGIxyBkK/OWOppgCXfOeOXOeNrddyK1DzqS6XpOokRZb2ogXTpHRhKDTO7d0pjF/2p2sV9pEkKL4e0tNZI1y2A== dependencies: find-up "^5.0.0" find-yarn-workspace-root2 "1.2.16" path-exists "^4.0.0" which-pm "2.0.0" prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= prettier@^1.18.2, prettier@^1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== prettier@^2.0.5: version "2.2.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== pretty-format@^26.0.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: "@jest/types" "^26.6.2" ansi-regex "^5.0.0" ansi-styles "^4.0.0" react-is "^17.0.1" pretty-hrtime@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= prism-react-renderer@^1.0.1, prism-react-renderer@^1.0.2, prism-react-renderer@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.1.1.tgz#1c1be61b1eb9446a146ca7a50b7bcf36f2a70a44" integrity sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug== process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@0.11.10, process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= prompts@^2.0.1, prompts@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== dependencies: kleur "^3.0.3" sisteransi "^1.0.5" prop-types-exact@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== dependencies: has "^1.0.3" object.assign "^4.1.0" reflect.ownkeys "^0.2.0" prop-types@15.7.2, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" react-is "^16.8.1" property-information@^5.0.0, property-information@^5.3.0: version "5.6.0" resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: xtend "^4.0.0" prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= ps-list@^7.0.0: version "7.2.0" resolved "https://registry.yarnpkg.com/ps-list/-/ps-list-7.2.0.tgz#3d110e1de8249a4b178c9b1cf2a215d1e4e42fc0" integrity sha512-v4Bl6I3f2kJfr5o80ShABNHAokIgY+wFDTQfE+X3zWYgSGQOCBeYptLZUpoOALBqO5EawmDN/tjTldJesd0ujQ== pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== dependencies: bn.js "^4.1.0" browserify-rsa "^4.0.0" create-hash "^1.1.0" parse-asn1 "^5.0.0" randombytes "^2.0.1" safe-buffer "^5.1.2" pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" pumpify@^1.3.3: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: duplexify "^3.6.0" inherits "^2.0.3" pump "^2.0.0" punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== purgecss@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-2.3.0.tgz#5327587abf5795e6541517af8b190a6fb5488bb3" integrity sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ== dependencies: commander "^5.0.0" glob "^7.0.0" postcss "7.0.32" postcss-selector-parser "^6.0.2" qs@^6.4.0, qs@^6.9.4: version "6.9.4" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= querystring@0.2.0, querystring@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== quick-lru@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== ramda@0.21.0: version "0.21.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" integrity sha1-oAGr7bP/YQd9T/HVd9RN536NCjU= randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" safe-buffer "^5.1.0" raw-body@2.4.1, raw-body@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== dependencies: bytes "3.1.0" http-errors "1.7.3" iconv-lite "0.4.24" unpipe "1.0.0" rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" ini "~1.3.0" minimist "^1.2.0" strip-json-comments "~2.0.1" re-resizable@^6.4.0: version "6.9.0" resolved "https://registry.yarnpkg.com/re-resizable/-/re-resizable-6.9.0.tgz#9c3059b389ced6ade602234cc5bb1e12d231cd47" integrity sha512-3cUDG81ylyqI0Pdgle/RHwwRYq0ORZzsUaySOCO8IbEtNyaRtrIHYm/jMQ5pjcNiKCxR3vsSymIQZHwJq4gg2Q== dependencies: fast-memoize "^2.5.1" react-clientside-effect@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.3.tgz#95c95f520addfb71743608b990bfe01eb002012b" integrity sha512-96HOmjJjjemxZD4qMdaMWFl3d/3Dqm/MAXnThoP8+jQihevYs8VzooqYWlVEPmkp9tVIa06i67R7FF1qsuzUwQ== dependencies: "@babel/runtime" "^7.0.0" react-dom@experimental: version "0.0.0-experimental-3310209d0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.0.0-experimental-3310209d0.tgz#da24ddc969d34406d25210c88ba6d33c101532fa" integrity sha512-5Ibs6pnu5rrEgq6gTVHjnMlIFiOFHpTeLbPcqPjnFnAX7WR06+rJK32lW5U13ktmpzqUdGruwE5oweWI7uPQhA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" scheduler "0.0.0-experimental-3310209d0" react-fast-compare@3.2.0, react-fast-compare@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== react-focus-lock@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.4.1.tgz#e842cc93da736b5c5d331799012544295cbcee4f" integrity sha512-c5ZP56KSpj9EAxzScTqQO7bQQNPltf/W1ZEBDqNDOV1XOIwvAyHX0O7db9ekiAtxyKgnqZjQlLppVg94fUeL9w== dependencies: "@babel/runtime" "^7.0.0" focus-lock "^0.7.0" prop-types "^15.6.2" react-clientside-effect "^1.2.2" use-callback-ref "^1.2.1" use-sidecar "^1.0.1" react-frame-component@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/react-frame-component/-/react-frame-component-4.1.3.tgz#64c09dd29574720879c5f43ee36c17d8ae74d4ec" integrity sha512-4PurhctiqnmC1F5prPZ+LdsalH7pZ3SFA5xoc0HBe8mSHctdLLt4Cr2WXfXOoajHBYq/yiipp9zOgx+vy8GiEA== react-helmet@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== dependencies: object-assign "^4.1.1" prop-types "^15.7.2" react-fast-compare "^3.1.1" react-side-effect "^2.1.0" react-icons@^3.9.0: version "3.11.0" resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-3.11.0.tgz#2ca2903dfab8268ca18ebd8cc2e879921ec3b254" integrity sha512-JRgiI/vdF6uyBgyZhVyYJUZAop95Sy4XDe/jmT3R/bKliFWpO/uZBwvSjWEdxwzec7SYbEPNPck0Kff2tUGM2Q== dependencies: camelcase "^5.0.0" react-icons@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.1.0.tgz#9ca9bcbf2e3aee8e86e378bb9d465842947bbfc3" integrity sha512-FCXBg1JbbR0vWALXIxmFAfozHdVIJmmwCD81Jk0EKOt7Ax4AdBNcaRkWhR0NaKy9ugJgoY3fFvo0PHpte55pXg== react-intersection-observer@^8.31.0: version "8.31.0" resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-8.31.0.tgz#0ed21aaf93c4c0475b22b0ccaba6169076d01605" integrity sha512-XraIC/tkrD9JtrmVA7ypEN1QIpKc52mXBH1u/bz/aicRLo8QQEJQAMUTb8mz4B6dqpPwyzgjrr7Ljv/2ACDtqw== react-is@16.13.1, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-is@^17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== react-live@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/react-live/-/react-live-2.2.3.tgz#260f99194213799f0005e473e7a4154c699d6a7c" integrity sha512-tpKruvfytNETuzO3o1mrQUj180GVrq35IE8F5gH1NJVPt4szYCx83/dOSCOyjgRhhc3gQvl0pQ3k/CjOjwJkKQ== dependencies: buble "0.19.6" core-js "^2.4.1" dom-iterator "^1.0.0" prism-react-renderer "^1.0.1" prop-types "^15.5.8" react-simple-code-editor "^0.10.0" unescape "^1.0.1" react-mailchimp-subscribe@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/react-mailchimp-subscribe/-/react-mailchimp-subscribe-2.1.0.tgz#a2bb7064af4bad310ef5d308322de95491d401c3" integrity sha512-sBB2XW0DPlysv+aVGRHbGQqDi8WITxXFjMzWiN07/t7U3FH2Io68EMBEU7atOUk5Y/WtsVnSytcs06aoEaf5ow== dependencies: jsonp "^0.2.1" prop-types "^15.5.10" to-querystring "^1.0.4" react-proptype-conditional-require@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz#69c2d5741e6df5e08f230f36bbc2944ee1222555" integrity sha1-acLVdB5t9eCPIw82u8KUTuEiJVU= react-refresh@0.8.3, react-refresh@^0.8.2: version "0.8.3" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== react-refresh@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== react-remove-scroll-bar@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.1.1.tgz#5876428dfd546f2f63a4d277aea2197925505c1e" integrity sha512-IZbfQPSozIr8ylHE9MFcQeb2TTzj4abfE7OBXjmtUeXQ5h6ColGKDNo5h7OmzrJRilAx3YIKBf3jb0yrb31BJQ== dependencies: react-style-singleton "^2.1.0" tslib "^1.0.0" react-remove-scroll@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.4.0.tgz#190c16eb508c5927595935499e8f5dd9ab0e75cf" integrity sha512-BZIO3GaEs0Or1OhA5C//n1ibUP1HdjJmqUVUsOCMxwoIpaCocbB9TFKwHOkBa/nyYy3slirqXeiPYGwdSDiseA== dependencies: react-remove-scroll-bar "^2.1.0" react-style-singleton "^2.1.0" tslib "^1.0.0" use-callback-ref "^1.2.3" use-sidecar "^1.0.1" react-router-dom@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== dependencies: "@babel/runtime" "^7.1.2" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" react-router "5.2.0" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" react-router@5.2.0, react-router@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293" integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw== dependencies: "@babel/runtime" "^7.1.2" history "^4.9.0" hoist-non-react-statics "^3.1.0" loose-envify "^1.3.1" mini-create-react-context "^0.4.0" path-to-regexp "^1.7.0" prop-types "^15.6.2" react-is "^16.6.0" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" react-script-hook@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/react-script-hook/-/react-script-hook-1.2.1.tgz#82b5250b7e2f3e8d645eabc9d4f54b7580b3d5c6" integrity sha512-IRqtZcXjFYWf7HnC3zj/n46D3QP5XhrVeGj0t2JbHY2ws73zvs6tOHWVr5l2GShRGqZEBCFlguYfVUU2lI2qzw== react-side-effect@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== react-simple-code-editor@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.10.0.tgz#73e7ac550a928069715482aeb33ccba36efe2373" integrity sha512-bL5W5mAxSW6+cLwqqVWY47Silqgy2DKDTR4hDBrLrUqC5BXc29YVx17l2IZk5v36VcDEq1Bszu2oHm1qBwKqBA== react-storage-hooks@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/react-storage-hooks/-/react-storage-hooks-4.0.1.tgz#e30ed5cda48c77c431ecc02ec3824bd615f5b7fb" integrity sha512-fetDkT5RDHGruc2NrdD1iqqoLuXgbx6AUpQSQLLkrCiJf8i97EtwJNXNTy3+GRfsATLG8TZgNc9lGRZOaU5yQA== react-style-singleton@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.1.1.tgz#ce7f90b67618be2b6b94902a30aaea152ce52e66" integrity sha512-jNRp07Jza6CBqdRKNgGhT3u9umWvils1xsuMOjZlghBDH2MU0PL2WZor4PGYjXpnRCa9DQSlHMs/xnABWOwYbA== dependencies: get-nonce "^1.0.0" invariant "^2.2.4" tslib "^1.0.0" react-test-renderer@^16.0.0-0: version "16.14.0" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" react-is "^16.8.6" scheduler "^0.19.1" react-twitter-embed@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/react-twitter-embed/-/react-twitter-embed-3.0.3.tgz#a534132d4bbec812a63e3899dc716de2bfc3cec2" integrity sha512-kF1Srlb1TqnZUqKA0FC4I/E+m+RUBCMZeU20hDRzmYLAjR1EA/6tr/PMZ22s7rd6wjQpIBLXNZjt0rfUpY8Chw== dependencies: enzyme-adapter-react-16 "^1.11.0" exenv "^1.2.2" react-proptype-conditional-require "^1.0.4" scriptjs "^2.5.9" react-typical@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/react-typical/-/react-typical-0.1.3.tgz#c56e607a8e435b6f8a23eb5eaaf00768e35be06d" integrity sha512-VynIYVQvAZ1Nco4C+QNEqR17STGK/xw6Dc1zNj/LuYm8fISw1Qp3q9n3hv6O3iQDLD0OWwdWKHun5oj6mCMB4A== dependencies: "@camwiegert/typical" "^0.1.1" react-typist@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/react-typist/-/react-typist-2.0.5.tgz#9830395a73a03e6368e1392ecb98edaa3a648e44" integrity sha512-iZCkeqeegO0TlkTMiH2JD1tvMtY9RrXkRylnAI6m8aCVAUUwNzoWTVF7CKLij6THeOMcUDCznLDDvNp55s+YZA== dependencies: prop-types "^15.5.10" react@experimental: version "0.0.0-experimental-3310209d0" resolved "https://registry.yarnpkg.com/react/-/react-0.0.0-experimental-3310209d0.tgz#1421b0338fbb0c98bbe1ffcaaf88d101209d7194" integrity sha512-TVDPZZ2rbxtbIlb3knyqXG1ij8veXpMTzxWmJC/+0POtKSE0HeUNVoQX8j0h0p0rHCKmAfT/mIZaoG9P0bJ+TA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= dependencies: pify "^2.3.0" read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: find-up "^4.1.0" read-pkg "^5.2.0" type-fest "^0.8.1" read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" path-type "^3.0.0" read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" normalize-package-data "^2.5.0" parse-json "^5.0.0" type-fest "^0.6.0" read-yaml-file@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-yaml-file/-/read-yaml-file-1.1.0.tgz#9362bbcbdc77007cc8ea4519fe1c0b821a7ce0d8" integrity sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA== dependencies: graceful-fs "^4.1.5" js-yaml "^3.6.1" pify "^4.0.1" strip-bom "^3.0.0" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~2.0.0" safe-buffer "~5.1.1" string_decoder "~1.1.1" util-deprecate "~1.0.1" readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" micromatch "^3.1.10" readable-stream "^2.0.2" readdirp@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: picomatch "^2.2.1" redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: indent-string "^4.0.0" strip-indent "^3.0.0" reduce-css-calc@^2.1.6: version "2.1.7" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.7.tgz#1ace2e02c286d78abcd01fd92bfe8097ab0602c2" integrity sha512-fDnlZ+AybAS3C7Q9xDq5y8A2z+lT63zLbynew/lur/IR24OQF5x98tfNwf79mzEdfywZ0a2wpM860FhFfMxZlA== dependencies: css-unit-converter "^1.1.1" postcss-value-parser "^3.3.0" reflect.ownkeys@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: regenerate "^1.4.0" regenerate@^1.4.0: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" regex-parser@^2.2.11: version "2.2.11" resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== regexpu-core@^4.2.0, regexpu-core@^4.5.4: version "4.7.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^8.2.0" regjsgen "^0.5.1" regjsparser "^0.6.4" unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== dependencies: jsesc "~0.5.0" remark-extract-frontmatter@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/remark-extract-frontmatter/-/remark-extract-frontmatter-2.0.3.tgz#5f86764f1cc29ad9a17885aff3c267c159841724" integrity sha512-k7lfDaIbwf135twpPLIFcKX2bRBqmsf07tV5gIWjLwil35aa6kYc6XL2TWrZfU2U8AabnQhoH7RU0P9EQfaItQ== dependencies: xtend "^4.0.1" remark-footnotes@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f" integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== remark-frontmatter@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-2.0.0.tgz#c9b8539c27cd23b1672c7e0fcbd5795eeedb4dc1" integrity sha512-uNOQt4tO14qBFWXenF0MLC4cqo3dv8qiHPGyjCl1rwOT0LomSHpcElbjjVh5CwzElInB38HD8aSRVugKQjeyHA== dependencies: fault "^1.0.1" remark-mdx-metadata@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/remark-mdx-metadata/-/remark-mdx-metadata-1.0.1.tgz#e52bb7eb825d5d50c255b0914f85954c3ebe9b1c" integrity sha512-CwZKNtE/fzb5KXeYyd40yqxbYNUKXhuv32fSDTcRrG9pgxjA2ogD/jPMdQjx4Rg7DdeqDuHhiQMd0eT2IXpD+g== dependencies: "@babel/core" "7.3.4" "@babel/generator" "7.3.4" "@babel/parser" "7.3.4" "@babel/plugin-syntax-jsx" "7.2.0" "@babel/traverse" "7.3.4" stringify-object "3.3.0" remark-mdx@1.6.22: version "1.6.22" resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd" integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ== dependencies: "@babel/core" "7.12.9" "@babel/helper-plugin-utils" "7.10.4" "@babel/plugin-proposal-object-rest-spread" "7.12.1" "@babel/plugin-syntax-jsx" "7.12.1" "@mdx-js/util" "1.6.22" is-alphabetical "1.0.4" remark-parse "8.0.3" unified "9.2.0" remark-parse@8.0.3, remark-parse@^8.0.0: version "8.0.3" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== dependencies: ccount "^1.0.0" collapse-white-space "^1.0.2" is-alphabetical "^1.0.0" is-decimal "^1.0.0" is-whitespace-character "^1.0.0" is-word-character "^1.0.0" markdown-escapes "^1.0.0" parse-entities "^2.0.0" repeat-string "^1.5.4" state-toggle "^1.0.0" trim "0.0.1" trim-trailing-lines "^1.0.0" unherit "^1.0.4" unist-util-remove-position "^2.0.0" vfile-location "^3.0.0" xtend "^4.0.1" remark-slug@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.0.0.tgz#2b54a14a7b50407a5e462ac2f376022cce263e2c" integrity sha512-ln67v5BrGKHpETnm6z6adlJPhESFJwfuZZ3jrmi+lKTzeZxh2tzFzUfDD4Pm2hRGOarHLuGToO86MNMZ/hA67Q== dependencies: github-slugger "^1.0.0" mdast-util-to-string "^1.0.0" unist-util-visit "^2.0.0" remark-squeeze-paragraphs@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead" integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw== dependencies: mdast-squeeze-paragraphs "^4.0.0" remark-stringify@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.1.1.tgz#e2a9dc7a7bf44e46a155ec78996db896780d8ce5" integrity sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A== dependencies: ccount "^1.0.0" is-alphanumeric "^1.0.0" is-decimal "^1.0.0" is-whitespace-character "^1.0.0" longest-streak "^2.0.1" markdown-escapes "^1.0.0" markdown-table "^2.0.0" mdast-util-compact "^2.0.0" parse-entities "^2.0.0" repeat-string "^1.5.4" state-toggle "^1.0.0" stringify-entities "^3.0.0" unherit "^1.0.4" xtend "^4.0.1" remark@^12.0.0: version "12.0.1" resolved "https://registry.yarnpkg.com/remark/-/remark-12.0.1.tgz#f1ddf68db7be71ca2bad0a33cd3678b86b9c709f" integrity sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw== dependencies: remark-parse "^8.0.0" remark-stringify "^8.0.0" unified "^9.0.0" remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^1.0.0, repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= request-promise-core@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: lodash "^4.17.19" request-promise-native@^1.0.8: version "1.0.9" resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: request-promise-core "1.1.4" stealthy-require "^1.1.1" tough-cookie "^2.3.3" request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" caseless "~0.12.0" combined-stream "~1.0.6" extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" har-validator "~5.1.3" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" mime-types "~2.1.19" oauth-sign "~0.9.0" performance-now "^2.1.0" qs "~6.5.2" safe-buffer "^5.1.2" tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= resolve-alpn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve-path@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" integrity sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc= dependencies: http-errors "~1.6.2" path-is-absolute "1.0.1" resolve-pathname@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== resolve-url-loader@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== dependencies: adjust-sourcemap-loader "3.0.0" camelcase "5.3.1" compose-function "3.0.3" convert-source-map "1.7.0" es6-iterator "2.0.3" loader-utils "1.2.3" postcss "7.0.21" rework "1.0.1" rework-visit "1.0.0" source-map "0.6.1" resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.3.2: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== dependencies: is-core-module "^2.1.0" path-parse "^1.0.6" responselike@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== dependencies: lowercase-keys "^2.0.0" restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" signal-exit "^3.0.2" ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rework-visit@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= rework@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= dependencies: convert-source-map "^0.3.3" css "^2.0.0" rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" inherits "^2.0.1" rollup-plugin-dynamic-import-variables@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/rollup-plugin-dynamic-import-variables/-/rollup-plugin-dynamic-import-variables-1.1.0.tgz#4981d38907a471b35234398a09047bef47a2006a" integrity sha512-C1avEmnXC8cC4aAQ5dB63O9oQf7IrhEHc98bQw9Qd6H36FxtZooLCvVfcO4SNYrqaNrzH3ErucQt/zdFSLPHNw== dependencies: "@rollup/pluginutils" "^3.0.9" estree-walker "^2.0.1" globby "^11.0.0" magic-string "^0.25.7" rollup-plugin-inject@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz#e4233855bfba6c0c12a312fd6649dff9a13ee9f4" integrity sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w== dependencies: estree-walker "^0.6.1" magic-string "^0.25.3" rollup-pluginutils "^2.8.1" rollup-plugin-node-polyfills@0.2.1, rollup-plugin-node-polyfills@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz#53092a2744837164d5b8a28812ba5f3ff61109fd" integrity sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA== dependencies: rollup-plugin-inject "^3.0.0" rollup-plugin-terser@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== dependencies: "@babel/code-frame" "^7.10.4" jest-worker "^26.2.1" serialize-javascript "^4.0.0" terser "^5.0.0" rollup-plugin-vue@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/rollup-plugin-vue/-/rollup-plugin-vue-6.0.0.tgz#e379e93e5ae9a8648522f698be2e452e8672aaf2" integrity sha512-oVvUd84d5u73M2HYM3XsMDLtZRIA/tw2U0dmHlXU2UWP5JARYHzh/U9vcxaN/x/9MrepY7VH3pHFeOhrWpxs/Q== dependencies: debug "^4.1.1" hash-sum "^2.0.0" rollup-pluginutils "^2.8.2" rollup-plugin-web-worker-loader@^1.3.1: version "1.5.0" resolved "https://registry.yarnpkg.com/rollup-plugin-web-worker-loader/-/rollup-plugin-web-worker-loader-1.5.0.tgz#df21973426c6f95b238a84698ae27f8d8aab6b83" integrity sha512-Zx5l370yGDje35rFkM/wbT4dMIq2+kSBdLWQpqLkBuxmrQJcx0umA05kSbNRzccFsudQH4FKYCK8GtSBQRQBBg== rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" rollup@^2.23.0, rollup@^2.32.1, rollup@^2.34.0: version "2.35.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.35.1.tgz#e6bc8d10893556a638066f89e8c97f422d03968c" integrity sha512-q5KxEyWpprAIcainhVy6HfRttD9kutQpHbeqDTWnqAFNJotiojetK6uqmcydNMymBEtC4I8bCYR+J3mTMqeaUA== optionalDependencies: fsevents "~2.1.2" rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-parallel@^1.1.9: version "1.1.10" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= dependencies: aproba "^1.1.1" rx@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sane@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== dependencies: "@cnakazawa/watch" "^1.0.3" anymatch "^2.0.0" capture-exit "^2.0.0" exec-sh "^0.3.2" execa "^1.0.0" fb-watchman "^2.0.0" micromatch "^3.1.4" minimist "^1.1.1" walker "~1.0.5" sass-loader@10.0.5: version "10.0.5" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.5.tgz#f53505b5ddbedf43797470ceb34066ded82bb769" integrity sha512-2LqoNPtKkZq/XbXNQ4C64GFEleSEHKv6NPSI+bMC/l+jpEXGJhiRYkAQToO24MR7NU4JRY2RpLpJ/gjo2Uf13w== dependencies: klona "^2.0.4" loader-utils "^2.0.0" neo-async "^2.6.2" schema-utils "^3.0.0" semver "^7.3.2" sax@>=0.6.0: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== saxes@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" scheduler@0.0.0-experimental-3310209d0: version "0.0.0-experimental-3310209d0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-3310209d0.tgz#228ef98604dd0dc6d5c594945277e28eae2118f1" integrity sha512-TklIjh2ps3KbU8ZSDg96VUp56VZIb1tb3gy8Y16VKeg2Zf0q7FW+LhqT2gzmfN7OxZVUUHMzXilVVIHtV10gnA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" scheduler@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" schema-utils@2.7.1, schema-utils@^2.6.6, schema-utils@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: "@types/json-schema" "^7.0.5" ajv "^6.12.4" ajv-keywords "^3.5.2" schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" ajv-errors "^1.0.0" ajv-keywords "^3.1.0" schema-utils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== dependencies: "@types/json-schema" "^7.0.6" ajv "^6.12.5" ajv-keywords "^3.5.2" scriptjs@^2.5.9: version "2.5.9" resolved "https://registry.yarnpkg.com/scriptjs/-/scriptjs-2.5.9.tgz#343915cd2ec2ed9bfdde2b9875cd28f59394b35f" integrity sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg== selfsigned@^1.10.8: version "1.10.8" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== dependencies: node-forge "^0.10.0" "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@^7.3.2: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: randombytes "^2.1.0" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" is-plain-object "^2.0.3" split-string "^3.0.1" setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" sharp@0.26.3: version "0.26.3" resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.26.3.tgz#9de8577a986b22538e6e12ced1f7e8a53f9728de" integrity sha512-NdEJ9S6AMr8Px0zgtFo1TJjMK/ROMU92MkDtYn2BBrDjIx3YfH9TUyGdzPC+I/L619GeYQc690Vbaxc5FPCCWg== dependencies: array-flatten "^3.0.0" color "^3.1.3" detect-libc "^1.0.3" node-addon-api "^3.0.2" npmlog "^4.1.2" prebuild-install "^6.0.0" semver "^7.3.2" simple-get "^4.0.0" tar-fs "^2.1.1" tunnel-agent "^0.6.0" shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@1.7.2, shell-quote@^1.6.1: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== shellwords-ts@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shellwords-ts/-/shellwords-ts-3.0.0.tgz#cd0679116dbe8581a8a0299b4f5f52a067ac79f2" integrity sha512-4uZTHR2P7zKRZmSoOiUCFK1K+5LlDxay/RVNWDDImnGG1/4r/dZ2Y3rzpo871Iche913yOgYeKrrxl+3vengFw== shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== simple-get@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== dependencies: decompress-response "^4.2.0" once "^1.3.1" simple-concat "^1.0.0" simple-get@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.0.tgz#73fa628278d21de83dadd5512d2cc1f4872bd675" integrity sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ== dependencies: decompress-response "^6.0.0" once "^1.3.1" simple-concat "^1.0.0" simple-statistics@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/simple-statistics/-/simple-statistics-7.4.0.tgz#4319348aff39d9cc3aababe02671568674807515" integrity sha512-1mXlR6NEIwMsKWjD+exMd4vvRWmrrBk+MT1n3O5NBjbxjIh1E1YlQikwyNdQjPcq8E+EgUkFmj67gr2bfAIwGg== simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= dependencies: is-arrayish "^0.3.1" sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== skypack@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/skypack/-/skypack-0.2.1.tgz#700380a639ba13e5dc5a861932430ee5606e8d71" integrity sha512-+LE2zg5Hdcxnq2PYfo6k/jqLA7vlCljZuGo6x9x9+83GvGULvdBGLCLIa5wUhcHQUIts4m9hB+f3asTPL/TcsA== dependencies: cacache "^15.0.0" cachedir "^2.3.0" esinstall "^0.5.1" etag "^1.8.1" find-up "^5.0.0" got "^11.1.4" kleur "^4.1.0" mkdirp "^1.0.3" p-queue "^6.2.1" rimraf "^3.0.0" rollup "^2.23.0" validate-npm-package-name "^3.0.0" slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== smartwrap@^1.2.3: version "1.2.5" resolved "https://registry.yarnpkg.com/smartwrap/-/smartwrap-1.2.5.tgz#45ee3e09ac234e5f7f17c16e916f511834f3cd23" integrity sha512-bzWRwHwu0RnWjwU7dFy7tF68pDAx/zMSu3g7xr9Nx5J0iSImYInglwEVExyHLxXljy6PWMjkSAbwF7t2mPnRmg== dependencies: breakword "^1.0.5" grapheme-splitter "^1.0.4" strip-ansi "^6.0.0" wcwidth "^1.0.1" yargs "^15.1.0" snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" isobject "^3.0.0" snapdragon-util "^3.0.1" snapdragon-util@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" debug "^2.2.0" define-property "^0.2.5" extend-shallow "^2.0.1" map-cache "^0.2.2" source-map "^0.5.6" source-map-resolve "^0.5.0" use "^3.1.0" snowpack@^2.18.4: version "2.18.5" resolved "https://registry.yarnpkg.com/snowpack/-/snowpack-2.18.5.tgz#10a0130fb1eeecda6dfd3be1b1b60ff9849e3da4" integrity sha512-UThUbGXn/wN7zRJDVpbC0F3uvkhu6PAgpTbV1hdAaqLvYBewT794iEMAY5mMxT27zQ+ZOyqbICaBtKtq0BgDcA== dependencies: "@snowpack/plugin-build-script" "^2.0.12" "@snowpack/plugin-run-script" "^2.2.1" "@types/cheerio" "0.22.22" cacache "^15.0.0" cachedir "^2.3.0" cheerio "^1.0.0-rc.3" chokidar "^3.4.0" compressible "^2.0.18" cosmiconfig "^7.0.0" deepmerge "^4.2.2" detect-port "^1.3.0" es-module-lexer "^0.3.24" esbuild "^0.8.7" esinstall "^0.5.1" etag "^1.8.1" execa "^4.0.3" find-cache-dir "^3.3.1" find-up "^5.0.0" glob "^7.1.4" http-proxy "^1.18.1" httpie "^1.1.2" is-plain-object "^5.0.0" isbinaryfile "^4.0.6" jsonschema "~1.2.5" kleur "^4.1.1" mime-types "^2.1.26" mkdirp "^1.0.3" npm-run-path "^4.0.1" open "^7.0.4" p-queue "^6.6.1" postcss "^8.1.8" postcss-modules "^3.2.2" resolve-from "^5.0.0" rimraf "^3.0.0" signal-exit "^3.0.3" skypack "^0.2.1" source-map "^0.7.3" strip-ansi "^6.0.0" strip-comments "^2.0.1" validate-npm-package-name "^3.0.0" ws "^7.3.0" yargs-parser "^20.0.0" source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: atob "^2.1.2" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" urix "^0.1.0" source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@0.7.3, source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== source-map@0.8.0-beta.0: version "0.8.0-beta.0" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== dependencies: whatwg-url "^7.0.0" source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= sourcemap-codec@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== spawndamnit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/spawndamnit/-/spawndamnit-2.0.0.tgz#9f762ac5c3476abb994b42ad592b5ad22bb4b0ad" integrity sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA== dependencies: cross-spawn "^5.1.0" signal-exit "^3.0.2" spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: version "3.0.7" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" bcrypt-pbkdf "^1.0.0" dashdash "^1.12.0" ecc-jsbn "~0.1.1" getpass "^0.1.1" jsbn "~0.1.0" safer-buffer "^2.0.2" tweetnacl "~0.14.0" ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" ssri@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== dependencies: minipass "^3.1.1" stack-utils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== dependencies: escape-string-regexp "^2.0.0" stacktrace-parser@0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== dependencies: type-fest "^0.7.1" state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" object-copy "^0.1.0" "statuses@>= 1.2.1 < 2", "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= stream-browserify@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== dependencies: inherits "~2.0.4" readable-stream "^3.5.0" stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== dependencies: inherits "~2.0.1" readable-stream "^2.0.2" stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: end-of-stream "^1.1.0" stream-shift "^1.0.0" stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" readable-stream "^2.3.6" to-arraybuffer "^1.0.0" xtend "^4.0.0" stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== stream-transform@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-2.0.3.tgz#e3f6bac78b7d81a1452bf84bee9f340a1786bd60" integrity sha512-HgNXs2rNG9pKC2gK4owtMPMKfto81S/TWZw0Ybsx6Wp23klnN0YctnMXYe0PmzzhB/zIBEB+0Urf+PMorE4d/A== dependencies: mixme "^0.4.0" string-hash@1.1.3, string-hash@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= string-length@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== dependencies: char-regex "^1.0.2" strip-ansi "^6.0.0" string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" string.prototype.padend@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.1.tgz#824c84265dbac46cade2b957b38b6a5d8d1683c5" integrity sha512-eCzTASPnoCr5Ht+Vn1YXgm8SB015hHKgEIMu9Nr9bQmLhRBxKRfmzSj/IQsxDFc8JInJDDFA0qXwK+xxI7wDkg== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" es-abstract "^1.18.0-next.1" string.prototype.trimend@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" string.prototype.trimstart@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== dependencies: call-bind "^1.0.0" define-properties "^1.1.3" string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" stringify-entities@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg== dependencies: character-entities-html4 "^1.0.0" character-entities-legacy "^1.0.0" xtend "^4.0.0" stringify-object@3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: get-own-enumerable-property-symbols "^3.0.0" is-obj "^1.0.1" is-regexp "^1.0.0" strip-ansi@6.0.0, strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: ansi-regex "^5.0.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-comments@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= style-loader@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== dependencies: loader-utils "^2.0.0" schema-utils "^2.6.6" style-to-object@0.3.0, style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== dependencies: inline-style-parser "0.1.1" style-value-types@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-4.0.1.tgz#23f05dd03e8a850654defc22cf03ebac572aaa00" integrity sha512-aOV/HHyynIyTmU27qfs0oAHhFde6BFIvV4+nMerE2MAPZMwYOeQk1/F3S6djxF2u4HdbiieCPs3ZzWsbNUoc9A== dependencies: hey-listen "^1.0.8" tslib "^1.10.0" styled-jsx@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.3.2.tgz#2474601a26670a6049fb4d3f94bd91695b3ce018" integrity sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g== dependencies: "@babel/types" "7.8.3" babel-plugin-syntax-jsx "6.18.0" convert-source-map "1.7.0" loader-utils "1.2.3" source-map "0.7.3" string-hash "1.1.3" stylis "3.5.4" stylis-rule-sheet "0.0.10" stylis-rule-sheet@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== stylis@3.5.4: version "3.5.4" resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== stylis@^4.0.3: version "4.0.6" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.6.tgz#0d8b97b6bc4748bea46f68602b6df27641b3c548" integrity sha512-1igcUEmYFBEO14uQHAJhCUelTR5jPztfdVKrYxRnDa5D5Dn3w0NxXupJNPr/VV/yRfZYEAco8sTIRZzH3sRYKg== sucrase@^3.0.0: version "3.16.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.16.0.tgz#19b5b886ccca270dd5ca12ff060eeaf0b599735f" integrity sha512-ovVuswxV5TayCPXfTk8bgBgk6uNRvsinIkEpq0J6zS1xXCx5N/LLGcbsKdRhqn/ToZylMX6+yXaR1LSn1I42Pg== dependencies: commander "^4.0.0" glob "7.1.6" lines-and-columns "^1.1.6" mz "^2.7.0" pirates "^4.0.1" ts-interface-checker "^0.1.9" supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-hyperlinks@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== dependencies: has-flag "^4.0.0" supports-color "^7.0.0" svelte-hmr@^0.12.2: version "0.12.2" resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.12.2.tgz#689df7681f0461e7a2539b3fad1336ee1da84751" integrity sha512-86fpj4Wjno7OREJsGxQwpVBtB3kmiKWwpOlvdZmfBZYankpL38lcVtAi1zvQXXcN4g8pRXUG68khwp6dYRwpYg== svelte@^3.31.2: version "3.31.2" resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.31.2.tgz#d2ddf6cacbb95e4cc3796207510b660a25586324" integrity sha512-TxZGrXzX2ggFH3BIKY5fmbeMdJuZrMIMDYPMX6R9255bueuYIuVaBQSLUeY2oD7W4IdeqRZiAVGCjDw2POKBRA== svg-react-loader@0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/svg-react-loader/-/svg-react-loader-0.4.6.tgz#b263efb3e3d2fff4c682a729351aba5f185051a1" integrity sha512-HVEypjWQsQuJdBIPzXGxpmQsQts7QwfQuYgK1rah6BVCMoLNSCh/ESKVNd7/tHq8DkWYHHTyaUMDA1FjqZYrgA== dependencies: css "2.2.4" loader-utils "1.1.0" ramda "0.21.0" rx "4.1.0" traverse "0.6.6" xml2js "0.4.17" swr@^0.3.11: version "0.3.11" resolved "https://registry.yarnpkg.com/swr/-/swr-0.3.11.tgz#f7f50ed26c06afea4249482cec504768a2272664" integrity sha512-ya30LuRGK2R7eDlttnb7tU5EmJYJ+N6ytIOM2j0Hqs0qauJcDjVLDOGy7KmFeH5ivOwLHalFaIyYl2K+SGa7HQ== dependencies: dequal "2.0.2" symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== tailwindcss@^1.7.2: version "1.9.6" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-1.9.6.tgz#0c5089911d24e1e98e592a31bfdb3d8f34ecf1a0" integrity sha512-nY8WYM/RLPqGsPEGEV2z63riyQPcHYZUJpAwdyBzVpxQHOHqHE+F/fvbCeXhdF1+TA5l72vSkZrtYCB9hRcwkQ== dependencies: "@fullhuman/postcss-purgecss" "^2.1.2" autoprefixer "^9.4.5" browserslist "^4.12.0" bytes "^3.0.0" chalk "^3.0.0 || ^4.0.0" color "^3.1.2" detective "^5.2.0" fs-extra "^8.0.0" html-tags "^3.1.0" lodash "^4.17.20" node-emoji "^1.8.1" normalize.css "^8.0.1" object-hash "^2.0.3" postcss "^7.0.11" postcss-functions "^3.0.0" postcss-js "^2.0.0" postcss-nested "^4.1.1" postcss-selector-parser "^6.0.0" postcss-value-parser "^4.1.0" pretty-hrtime "^1.0.3" reduce-css-calc "^2.1.6" resolve "^1.14.2" tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tar-fs@^2.0.0, tar-fs@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== dependencies: chownr "^1.1.1" mkdirp-classic "^0.5.2" pump "^3.0.0" tar-stream "^2.1.4" tar-stream@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: bl "^4.0.3" end-of-stream "^1.4.1" fs-constants "^1.0.0" inherits "^2.0.3" readable-stream "^3.1.1" tar@^6.0.2: version "6.0.5" resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" minipass "^3.0.0" minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= dependencies: execa "^0.7.0" term-size@^2.1.0: version "2.2.1" resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" terser-webpack-plugin@^1.4.3: version "1.4.5" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" serialize-javascript "^4.0.0" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" worker-farm "^1.7.0" terser@5.5.1, terser@^5.0.0: version "5.5.1" resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== dependencies: commander "^2.20.0" source-map "~0.7.2" source-map-support "~0.5.19" terser@^4.1.2: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== dependencies: commander "^2.20.0" source-map "~0.6.1" source-map-support "~0.5.12" test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" glob "^7.1.4" minimatch "^3.0.4" thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= dependencies: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": version "3.3.1" resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: any-promise "^1.0.0" throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: readable-stream "~2.3.6" xtend "~4.0.1" timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: setimmediate "^1.0.4" tiny-invariant@^1.0.2, tiny-invariant@^1.0.6: version "1.1.0" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== tiny-warning@^1.0.0, tiny-warning@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== tinycolor2@1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tmpfile@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/tmpfile/-/tmpfile-0.2.0.tgz#4bea580e676b669ca755947130108caba572e7c8" integrity sha1-S+pYDmdrZpynVZRxMBCMq6Vy58g= tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-querystring@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/to-querystring/-/to-querystring-1.1.1.tgz#98de5b00c79768a98ca48a2c09a960238d960265" integrity sha512-ZgIacl9TXAoT7sGXUYjQiy0MW7Tf/7CJQLt757hYHfXXc8JBzOVBMx4DckqKUO4hi36J72/m8UcH/GCHK+n97g== to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" repeat-string "^1.6.1" to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" extend-shallow "^3.0.2" regex-not "^1.0.2" safe-regex "^1.1.0" toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: psl "^1.1.28" punycode "^2.1.1" tough-cookie@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== dependencies: ip-regex "^2.1.0" psl "^1.1.28" punycode "^2.1.1" tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= dependencies: punycode "^2.1.0" tr46@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== dependencies: punycode "^2.1.1" traverse@0.6.6: version "0.6.6" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= trim-newlines@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= trim-trailing-lines@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= trough@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== tslib@2.0.3, tslib@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== tslib@^1.0.0, tslib@^1.10.0, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== tsscmp@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= tty-table@^2.8.10: version "2.8.13" resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-2.8.13.tgz#d484a416381973eaebbdf19c79136b390e5c6d70" integrity sha512-eVV/+kB6fIIdx+iUImhXrO22gl7f6VmmYh0Zbu6C196fe1elcHXd7U6LcLXu0YoVPc2kNesWiukYcdK8ZmJ6aQ== dependencies: chalk "^3.0.0" csv "^5.3.1" smartwrap "^1.2.3" strip-ansi "^6.0.0" wcwidth "^1.0.1" yargs "^15.1.0" tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== type-fest@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== type-fest@^0.20.0: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== type-fest@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== type-is@^1.6.14, type-is@^1.6.16: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" mime-types "~2.1.24" type@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== ultra-runner@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/ultra-runner/-/ultra-runner-3.6.0.tgz#531f78071d140d88227def55727b2e7b791d6139" integrity sha512-ccr8w6exl7J9YHeuf021jk4tLmJn9zBp7fizHo0j49a61I40SUv5yZkxvpf5K0C+rXy6L3HhJHfNO1Gm4QI+XQ== dependencies: ansi-split "^1.0.1" chalk "^4.0.0" cross-spawn "^7.0.1" fast-glob "^3.2.2" globrex "^0.1.2" json5 "^2.1.1" npm-run-path "4.0.1" pid-cwd "^1.2.0" ps-list "^7.0.0" shellwords-ts "^3.0.0" string-width "^4.2.0" tslib "2.0.3" type-fest "^0.20.0" wrap-ansi "^7.0.0" yamljs "^0.3.0" yargs "^16.0.0" unescape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ== dependencies: extend-shallow "^2.0.1" unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== dependencies: inherits "^2.0.0" xtend "^4.0.0" unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== dependencies: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== unified@9.2.0, unified@^9.0.0: version "9.2.0" resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== dependencies: bail "^1.0.0" extend "^3.0.0" is-buffer "^2.0.0" is-plain-obj "^2.0.0" trough "^1.0.0" vfile "^4.0.0" union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" get-value "^2.0.6" is-extendable "^0.1.1" set-value "^2.0.1" uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" unist-builder@2.0.3, unist-builder@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== unist-util-generated@^1.0.0: version "1.1.6" resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== unist-util-is@^4.0.0, unist-util-is@^4.0.2: version "4.0.4" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.4.tgz#3e9e8de6af2eb0039a59f50c9b3e99698a924f50" integrity sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA== unist-util-position@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== unist-util-remove-position@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== dependencies: unist-util-visit "^2.0.0" unist-util-remove@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.1.tgz#fa13c424ff8e964f3aa20d1098b9a690c6bfaa39" integrity sha512-YtuetK6o16CMfG+0u4nndsWpujgsHDHHLyE0yGpJLLn5xSjKeyGyzEBOI2XbmoUHCYabmNgX52uxlWoQhcvR7Q== dependencies: unist-util-is "^4.0.0" unist-util-stringify-position@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== dependencies: "@types/unist" "^2.0.2" unist-util-visit-parents@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== dependencies: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== dependencies: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" isobject "^3.0.0" upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== uri-js@^4.2.2: version "4.4.0" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= dependencies: punycode "1.3.2" querystring "0.2.0" use-callback-ref@^1.2.1, use-callback-ref@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.4.tgz#d86d1577bfd0b955b6e04aaf5971025f406bea3c" integrity sha512-rXpsyvOnqdScyied4Uglsp14qzag1JIemLeTWGKbwpotWht57hbP78aNT+Q4wdFKQfQibbUX4fb6Qb4y11aVOQ== use-sidecar@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.0.3.tgz#17a4e567d4830c0c0ee100040e85a7fe68611e0f" integrity sha512-ygJwGUBeQfWgDls7uTrlEDzJUUR67L8Rm14v/KfFtYCdHhtjHZx1Krb3DIQl3/Q5dJGfXLEQ02RY8BdNBv87SQ== dependencies: detect-node-es "^1.0.0" tslib "^1.9.3" use-subscription@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== dependencies: object-assign "^4.1.1" use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= dependencies: inherits "2.0.1" util@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== dependencies: inherits "2.0.3" utility-types@^3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== uuid@^8.3.0: version "8.3.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== v8-to-istanbul@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" source-map "^0.7.3" validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= dependencies: builtins "^1.0.3" value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== vary@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" extsprintf "^1.2.0" vfile-location@^3.0.0, vfile-location@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA== vfile-message@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== dependencies: "@types/unist" "^2.0.0" unist-util-stringify-position "^2.0.0" vfile@^4.0.0: version "4.2.1" resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== dependencies: "@types/unist" "^2.0.0" is-buffer "^2.0.0" unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" vite-plugin-react@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/vite-plugin-react/-/vite-plugin-react-4.0.1.tgz#5dd04f20ec4ebd17ca52f53a3faac51255ebb0d8" integrity sha512-liDo/wxTcy2E5cptwsAUZIC0F4flxWkmcPOJdhKCzJIC9XguWCCJimzziTQRmHuqIPawmQNE8PJb8+RlGzNxOA== dependencies: "@babel/core" "^7.9.6" "@babel/plugin-syntax-import-meta" "^7.10.4" react-refresh "^0.8.2" vite@^1.0.0-rc.13: version "1.0.0-rc.13" resolved "https://registry.yarnpkg.com/vite/-/vite-1.0.0-rc.13.tgz#0e0b3b6138998a1d0c02459908a6c4fb2f294727" integrity sha512-hLfTbhNPDhwXMCAWR6s6C79G/O8Is0MbslglgoHSQsRby+KnqHgtHChCVBHFeV2oZBV/3xhHhnfm94BDPFe8Ww== dependencies: "@babel/parser" "^7.12.7" "@koa/cors" "^3.1.0" "@rollup/plugin-commonjs" "^16.0.0" "@rollup/plugin-json" "^4.1.0" "@rollup/plugin-node-resolve" "^10.0.0" "@rollup/pluginutils" "^4.1.0" "@types/http-proxy" "^1.17.4" "@types/koa" "^2.11.4" "@types/lru-cache" "^5.1.0" "@vue/compiler-dom" "^3.0.3" "@vue/compiler-sfc" "^3.0.3" brotli-size "^4.0.0" cac "^6.6.1" chalk "^4.1.0" chokidar "^3.4.2" clean-css "^4.2.3" debug "^4.3.1" dotenv "^8.2.0" dotenv-expand "^5.1.0" es-module-lexer "^0.3.25" esbuild "^0.8.12" etag "^1.8.1" execa "^4.0.3" fs-extra "^9.0.1" hash-sum "^2.0.0" isbuiltin "^1.0.0" klona "^2.0.4" koa "^2.13.0" koa-conditional-get "^3.0.0" koa-etag "^4.0.0" koa-proxies "^0.11.0" koa-send "^5.0.1" koa-static "^5.0.0" lru-cache "^6.0.0" magic-string "^0.25.7" merge-source-map "^1.1.0" mime-types "^2.1.27" minimist "^1.2.5" open "^7.2.1" ora "^5.1.0" p-map-series "^2.1.0" postcss-discard-comments "^4.0.2" postcss-import "^12.0.1" postcss-load-config "^3.0.0" resolve "^1.17.0" rollup "^2.32.1" rollup-plugin-dynamic-import-variables "^1.1.0" rollup-plugin-terser "^7.0.2" rollup-plugin-vue "^6.0.0" rollup-plugin-web-worker-loader "^1.3.1" selfsigned "^1.10.8" slash "^3.0.0" source-map "^0.7.3" vue "^3.0.3" ws "^7.3.1" vlq@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== vm-browserify@1.1.2, vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== vm2@^3.9.2: version "3.9.2" resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.2.tgz#a4085d2d88a808a1b3c06d5478c2db3222a9cc30" integrity sha512-nzyFmHdy2FMg7mYraRytc2jr4QBaUY3TEGe3q3bK8EgS9WC98wxn2jrPxS/ruWm+JGzrEIIeufKweQzVoQEd+Q== vue@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.4.tgz#872c65c143f5717bd5387c61613d9f55f4cc0f43" integrity sha512-2o+AiQF8sAupyhbyl3oxVCl3WCwC/n5NI7VMM+gVQ231qvSB8eI7sCBloloqDJK6yA367EEtmRSeSCf4sxCC+A== dependencies: "@vue/compiler-dom" "3.0.4" "@vue/runtime-dom" "3.0.4" "@vue/shared" "3.0.4" w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" w3c-xmlserializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: xml-name-validator "^3.0.0" walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= dependencies: makeerror "1.0.x" warning@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== dependencies: loose-envify "^1.0.0" watchpack-chokidar2@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== dependencies: chokidar "^2.1.8" watchpack@2.0.0-beta.13: version "2.0.0-beta.13" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.0.0-beta.13.tgz#9d9b0c094b8402139333e04eb6194643c8384f55" integrity sha512-ZEFq2mx/k5qgQwgi6NOm+2ImICb8ngAkA/rZ6oyXZ7SgPn3pncf+nfhYTCrs3lmHwOxnPtGLTOuFLfpSMh1VMA== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" watchpack@^1.7.4: version "1.7.5" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== dependencies: graceful-fs "^4.1.2" neo-async "^2.5.0" optionalDependencies: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.1" wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= dependencies: defaults "^1.0.3" web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== webidl-conversions@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webpack-sources@1.4.3, webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" webpack@4.44.1: version "4.44.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21" integrity sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/wasm-edit" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" acorn "^6.4.1" ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" enhanced-resolve "^4.3.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0" loader-utils "^1.2.3" memory-fs "^0.4.1" micromatch "^3.1.10" mkdirp "^0.5.3" neo-async "^2.6.1" node-libs-browser "^2.2.1" schema-utils "^1.0.0" tapable "^1.1.3" terser-webpack-plugin "^1.4.3" watchpack "^1.7.4" webpack-sources "^1.4.1" whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" webidl-conversions "^4.0.2" whatwg-url@^8.0.0: version "8.4.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== dependencies: lodash.sortby "^4.7.0" tr46 "^2.0.2" webidl-conversions "^6.1.0" which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which-pm-runs@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= which-pm@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-pm/-/which-pm-2.0.0.tgz#8245609ecfe64bf751d0eef2f376d83bf1ddb7ae" integrity sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w== dependencies: load-yaml-file "^0.2.0" path-exists "^4.0.0" which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" widest-line@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== dependencies: string-width "^2.1.1" word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: errno "~0.1.7" wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" strip-ansi "^6.0.0" wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" strip-ansi "^6.0.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" is-typedarray "^1.0.0" signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" ws@^7.2.3: version "7.4.0" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7" integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ== ws@^7.3.0, ws@^7.3.1, ws@^7.4.1: version "7.4.1" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xml2js@0.4.17: version "0.4.17" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868" integrity sha1-F76T6q4/O3eTWceVtBlwWogX6Gg= dependencies: sax ">=0.6.0" xmlbuilder "^4.1.0" xmlbuilder@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5" integrity sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU= dependencies: lodash "^4.0.0" xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== y18n@^5.0.5: version "5.0.5" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.0, yaml@^1.7.2: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== yamljs@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" integrity sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ== dependencies: argparse "^1.0.7" glob "^7.0.5" yargs-parser@^18.1.2, yargs-parser@^18.1.3: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" yargs-parser@^20.0.0, yargs-parser@^20.2.2: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs@^15.1.0, yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: cliui "^6.0.0" decamelize "^1.2.0" find-up "^4.1.0" get-caller-file "^2.0.1" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" yargs-parser "^18.1.2" yargs@^16.0.0: version "16.1.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.1.1.tgz#5a4a095bd1ca806b0a50d0c03611d38034d219a1" integrity sha512-hAD1RcFP/wfgfxgMVswPE+z3tlPFtxG8/yWUrG2i17sTWGCGqWnxKcLTF4cUKDUK8fzokwsmO9H0TDkRbMHy8w== dependencies: cliui "^7.0.2" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" string-width "^4.2.0" y18n "^5.0.5" yargs-parser "^20.2.2" yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" string-width "^4.2.0" y18n "^5.0.5" yargs-parser "^20.2.2" ylru@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f" integrity sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ== yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== ================================================ FILE: plugins/tsconfig-paths/package.json ================================================ { "name": "@bundless/plugin-tsconfig-paths", "version": "0.0.0", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": "https://github.com/remorses/bundless.git", "scripts": { "build": "tsc", "watch": "tsc -w", "local": "yarn publish --force --registry http://localhost:4873 --access restricted --no-git-tag-version --patch --message 'Local registry publish'" }, "files": [ "dist", "src" ], "keywords": [], "author": "Tommaso De Rossi, morse ", "license": "ISC", "devDependencies": { "@bundless/cli": "0.6.0", "@types/node": "^14.14.13", "@types/globrex": "^0.1.0" }, "dependencies": { "tsconfig-paths": "^3.9.0", "globrex": "^0.1.2" }, "peerDependencies": { "@bundless/cli": "*" } } ================================================ FILE: plugins/tsconfig-paths/src/index.ts ================================================ import { MAIN_FIELDS, Plugin } from '@bundless/cli' import globrex from 'globrex' import path from 'path' import { createMatchPath } from 'tsconfig-paths' export default TsconfigPathsPlugin export function TsconfigPathsPlugin(options: PluginOptions): Plugin { return { name: 'tsconfig-paths-plugin', // alias plugins need to have enforce pre or node resolve will have higher priority enforce: 'pre', setup({ onResolve, pluginsExecutor, ctx: { root, config } }) { const matchPath = createMatchPath( root, options.paths, MAIN_FIELDS, // TODO allow customization with config.mainFields true, ) const regexes = Object.keys(options.paths) .map((x) => globrex(x, {})) .map((x) => x.regex) regexes.forEach((filter) => { onResolve({ filter: filter! }, async (args) => { const resolved = matchPath(args.path) if (!resolved) { return null } const res = await pluginsExecutor.resolve({ ...args, path: resolved, }) if (!res || !res.path) { return { ...res, path: resolved, } } return res }) }) }, } } type PluginOptions = { paths: Record } ================================================ FILE: plugins/tsconfig-paths/tsconfig.json ================================================ { "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "dist" }, "include": ["src"] } ================================================ FILE: scripts/analyze.ts ================================================ import * as esbuild from 'esbuild' import fs from 'fs' import memoize from 'micro-memoize' import path from 'path' import slash from 'slash' import { flatten } from 'lodash' import { scc } from './scc' import { graphSequencer } from './topological' // import { metaToTraversalResult } from '@bundless/cli/src/prebundle/traverse' const esbuildCwd = path.resolve( '/Users/morse/Documents/GitHub/sterblue1/packages/apps/cloud', ) export function anal(meta: esbuild.Metadata) { let graph = metaToTraversalResult({ meta, entryPoints: [path.resolve(esbuildCwd, 'index.html')], esbuildCwd, root: esbuildCwd, }) const userGraph = Object.fromEntries( Object.keys(graph) .filter((x) => !x.includes('node_modules')) .map((k) => [k, graph[k]]), ) const chunks = scc(userGraph) // const { chunks } = graphSequencer({ // graph: new Map( // Object.entries(userGraph).map(([a, b]) => [a, b.imports]), // ), // }) console.log( JSON.stringify( chunks.sort((a, b) => b.length - a.length).slice(0, 10), null, 4, ), ) return let res = groupByDependency(graph, esbuildCwd) const total = Object.keys(res).reduce((a, b) => { return a + res[b].bytes }, 0) console.log('total', formatBytes(total)) const max = Object.keys(res).sort((a, b) => { return res[b].bytes - res[a].bytes }) console.log( max.map((x) => x + ' ' + formatBytes(res[x].bytes)).slice(0, 40), ) for (let target of max.slice(0, 10)) { const importers: string[] = [] for (let k in graph) { if (k.includes('node_modules')) { continue } const node = graph[k] if ( node.imports.filter((x) => x.startsWith(res[target].basePath)) .length ) { importers.push(k) } } console.log(target + ':') console.log(importers, '\n') } } export type TraversalGraph = Record interface Node { imports: string[] bytes: number } export function metaToTraversalResult({ meta, entryPoints, esbuildCwd, root, }: { meta: esbuild.Metadata esbuildCwd: string root: string entryPoints: string[] }): TraversalGraph { if (!path.isAbsolute(esbuildCwd)) { throw new Error('esbuildCwd must be an absolute path') } for (let entry of entryPoints) { if (!path.isAbsolute(entry)) { throw new Error('entry must be an absolute path') } } const alreadyProcessed = new Set() // must be all absolute paths let toProcess = entryPoints const result: TraversalGraph = {} // abs path -> input info const inputs: Record< string, { imports: { path: string }[]; bytes: number } > = Object.fromEntries( Object.keys(meta.inputs).map((k) => { const abs = path.resolve(esbuildCwd, k) return [abs, meta.inputs[k]] }), ) while (toProcess.length) { const newImports = flatten( toProcess.map((absPath): string[] => { if (alreadyProcessed.has(absPath)) { return [] } alreadyProcessed.add(absPath) // newEntry = path.posix.normalize(newEntry) // TODO does esbuild always use posix? const input = inputs[absPath] if (input == null) { throw new Error( `entry '${absPath}' is not present in esbuild metafile inputs ${JSON.stringify( Object.keys(inputs), null, 2, )}`, ) } // abs paths const currentImports: string[] = input.imports ? input.imports .map((x) => x.path) .map((x) => { if (!path.isAbsolute(x)) { return path.resolve(esbuildCwd, x) } return x }) .filter((x) => Boolean(x)) : [] // newImports.push(...currentImports) const importer = osAgnosticPath( path.resolve(esbuildCwd, absPath), root, ) if (!result[importer]) { result[importer] = { imports: [], bytes: input.bytes } } result[importer] = { imports: currentImports.filter(Boolean).map((importee) => { importee = osAgnosticPath(importee, root) return importee }), bytes: input.bytes, } return currentImports }), ).filter(Boolean) toProcess = newImports } return result // find the right output getting the key of the right output.inputs == input // get the imports of the inputs.[entry].imports and attach them the importer // do the same with the imports just found // return the list of input files } export function osAgnosticPath(absPath: string | undefined, root: string) { if (!root) { throw new Error( `root argument is required, cannot make os agnostic path for ${absPath}`, ) } if (!absPath) { return '' } if (!path.isAbsolute(absPath)) { absPath = path.resolve(root, absPath) } return slash(path.relative(root, absPath)) } const readPackageJson = memoize((p) => { try { return JSON.parse(fs.readFileSync(p).toString()) } catch { return {} } }) function groupByDependency(graph: TraversalGraph, root: string) { const nodeModulesGraph: Record< string, { bytes: number; basePath: string } > = {} for (let key in graph) { const index = key.lastIndexOf('node_modules') if (index === -1) { continue } let dependencySubPath = key .slice(index) .replace(/\/?node_modules\//, '') let dependency = '' if (dependencySubPath.startsWith('@')) { dependency = getScopedPackageName(dependencySubPath) || '' } else { dependency = dependencySubPath.slice( 0, dependencySubPath.indexOf('/'), ) } const basePath = key.slice( 0, index + 'node_modules/'.length + dependency.length, ) const packageJsonPath = path.posix.join(basePath, 'package.json') const json = readPackageJson(packageJsonPath) if (json.version) { dependency += `@${json.version}` } if (nodeModulesGraph[dependency]) { nodeModulesGraph[dependency].bytes += graph[key].bytes || 0 } else { nodeModulesGraph[dependency] = { bytes: graph[key].bytes, basePath } } } return nodeModulesGraph } function getScopedPackageName(path: string): any { return path.match(/(@[\w-_\.]+\/[\w-_\.]+)/)?.[1] || '' } function formatBytes(bytes) { var marker = 1024 // Change to 1000 if required var decimal = 3 // Change as required var kiloBytes = marker // One Kilobyte is 1024 bytes var megaBytes = marker * marker // One MB is 1024 KB var gigaBytes = marker * marker * marker // One GB is 1024 MB var teraBytes = marker * marker * marker * marker // One TB is 1024 GB // return bytes if less than a KB if (bytes < kiloBytes) return bytes + ' Bytes' // return KB if less than a MB else if (bytes < megaBytes) return (bytes / kiloBytes).toFixed(decimal) + ' KB' // return MB if less than a GB else if (bytes < gigaBytes) return (bytes / megaBytes).toFixed(decimal) + ' MB' // return GB if less than a TB else return (bytes / gigaBytes).toFixed(decimal) + ' GB' } anal( JSON.parse( fs.readFileSync(path.resolve(__dirname, 'metafile.json')).toString(), ), ) ================================================ FILE: scripts/index.html ================================================ ================================================ FILE: scripts/partition.ts ================================================ import { TraversalGraph } from "./analyze"; export function partition(graph: TraversalGraph) { } ================================================ FILE: scripts/scc.ts ================================================ import { TraversalGraph } from './analyze' export function scc(graph: TraversalGraph) { const indices = new Map() const lowlinks = new Map() const onStack = new Set() const stack: string[] = [] const scc: Set[] = [] let idx = 0 function strongConnect(v) { indices.set(v, idx) lowlinks.set(v, idx) idx++ stack.push(v) onStack.add(v) const deps = graph[v]?.imports || [] for (const dep of deps) { if (!indices.has(dep)) { strongConnect(dep) lowlinks.set(v, Math.min(lowlinks.get(v), lowlinks.get(dep))) } else if (onStack.has(dep)) { lowlinks.set(v, Math.min(lowlinks.get(v), indices.get(dep))) } } if (lowlinks.get(v) === indices.get(v)) { const vertices = new Set() let w: string | undefined while (v !== w) { w = stack.pop() onStack.delete(w) vertices.add(w!) } scc.push(vertices) } } for (const v of Object.keys(graph)) { if (!indices.has(v)) { strongConnect(v) } } return scc.map((x) => [...x]) } ================================================ FILE: scripts/topological.ts ================================================ const assert = require('assert') /*:: type Graph = Map>; type Groups = Array>; type Options = { graph: Graph, groups: Groups, }; type Result = { safe: boolean, chunks: Groups, cycles: Groups, }; */ // A function for finding cycles in a remaining graph. export function getCycles /*::*/( currDepsMap /*: Graph */, visited /*: Graph */, ) /*: Groups */ { // Get a list of all the remaining items in the dep map. let items = Array.from(currDepsMap.keys()) // Create an array for cycles to push to. let cycles /*: Groups */ = [] // Create a function to call recursively in a depth-first search. function visit(item, cycle) { let visitedDeps = visited.get(item) // Create an object for the item to mark visited deps. if (!visitedDeps) { visitedDeps = [] visited.set(item, visitedDeps) } // Get the current deps for the item. let deps = currDepsMap.get(item) if (typeof deps === 'undefined') return // For each dep, for (let dep of deps) { // Check if this dep creates a cycle. We know it's a cycle if the first // item is the same as our dep. if (cycle[0] === dep) { cycles.push(cycle) } // If an item hasn't been visited, visit it (and pass an updated // potential cycle) if (!visitedDeps.includes(dep)) { visitedDeps.push(dep) visit(dep, cycle.concat(dep)) } } } // Iterate through each item in our current deps map and search it for cycles. for (let item of items) { visit(item, [item]) } // Return any cycles we found. return cycles } export function graphSequencer /*::*/( opts /*: Options */, ) /*: Result */ { let graph = opts.graph let groups = opts.groups || [] let graphItems = Array.from(graph.keys()) // Ensure that we have the same set of items in both graph and groups. // assert.deepStrictEqual( // graphItems.sort(), // groups.flat().sort(), // 'items in graph must be the same as items in groups', // ) // We'll push to these with the results. let chunks /*: Groups */ = [] let cycles /*: Groups */ = [] let safe = true // We'll keep replacing this queue as we unload items into chunks. let queue = graphItems // A set of items already put into chunks. let chunked /*: Set */ = new Set() // A cache of visited connection in the graph when finding cycles. let visited /*: Graph */ = new Map() // Keep running this loop while we have items left to unload into chunks. while (queue.length) { // Init the next `queue` after this iteration. let nextQueue = [] // Create a chunk for the cycle which we'll unload items into. let chunk = [] // A map of remaining deps for each of the remaining items in the current // iteration. let currDepsMap /*: Graph */ = new Map() for (let i = 0; i < queue.length; i++) { // Get the current `item` in the `queue`. let item = queue[i] // Get all the deps of the `item`. let deps = graph.get(item) if (typeof deps === 'undefined') continue // Find the index of the group that the `item` belongs to. let itemGroup = groups.findIndex((group) => group.includes(item)) // Filter down a set of deps which need to be run first. let currDeps = deps.filter((dep) => { // Find the index of the group that the `dep` belongs to. let depGroup = groups.findIndex((group) => group.includes(dep)) if (depGroup > itemGroup) { return false } else { return !chunked.has(dep) } }) // Store the remaining deps for this `item` for later. currDepsMap.set(item, currDeps) // If there are deps remaining, if (currDeps.length) { // Add the `item` to the next `queue` for the next iteration. nextQueue.push(item) } else { // Otherwise, add it to the current `chunk`. chunk.push(item) } } // If we got to this point and nothing was added to the chunk, it's because // we have a cycle. if (!chunk.length) { // First we'll identify all the cycles in the `currDepsMap` so we can // return them at the end. cycles = cycles.concat(getCycles(currDepsMap, visited)) // We'll sort the remaining items in the queue by the number of deps they // have remaining. let sorted = queue.sort((a, b) => { let aDeps = currDepsMap.get(a) || [] let bDeps = currDepsMap.get(b) || [] return aDeps.length - bDeps.length }) // We'll push the item with the fewest deps remaining to the chunk. chunk.push(sorted[0]) // And set the next `queue` to the rest of the items. nextQueue = sorted.slice(1) // This will ensure that something gets unloaded every cycle, putting in // a best effort to keep a working order... However, this does mean that // the resulting order is unsafe. safe = false } // Mark all of the unloaded items in the chunk as being chunked already. for (let item of chunk) { chunked.add(item) } // Add the current cycle's chunk to the resulting chunks array, ensuring // that there is a consistent order. chunks.push(chunk.sort()) // And move on to the next `queue`. queue = nextQueue } return { safe, chunks, cycles } } ================================================ FILE: scripts/tsconfig.json ================================================ { "compilerOptions": { "target": "ES2019", "module": "commonjs", "allowJs": true, "moduleResolution": "Node", "lib": ["es2017", "es7", "ESNext", "dom"], "declaration": true, "declarationMap": true, "strict": true, "esModuleInterop": true, "noImplicitAny": false, "sourceMap": true, "downlevelIteration": true, "jsx": "react", "skipLibCheck": true } } ================================================ FILE: scripts/ws.ts ================================================ import WebSocket from 'ws' import { once } from 'events' import { serve } from '@bundless/cli' const PORT = 4000 async function main() { await serve({ root: __dirname, port: PORT, openBrowser: true }) const ws = new WebSocket(`ws://127.0.0.1:${PORT}`, 'esm-hmr') await once(ws, 'open') ws.addEventListener('message', ({ data }) => { const payload = JSON.parse(data) console.log('msg', data) if (payload.type === 'connected') return if (payload.type === 'multi') { } }) } main() ================================================ FILE: tests/CHANGELOG.md ================================================ # tests ## 0.0.9 ### Patch Changes - Updated dependencies [undefined] - @bundless/cli@0.6.0 ## 0.0.8 ### Patch Changes - Updated dependencies [undefined] - @bundless/cli@0.5.1 ## 0.0.7 ### Patch Changes - Updated dependencies [undefined] - @bundless/cli@0.5.0 ## 0.0.6 ### Patch Changes - Updated dependencies [undefined] - @bundless/cli@0.4.0 ## 0.0.5 ### Patch Changes - Updated dependencies [undefined] - @bundless/cli@0.3.0 ## 0.0.4 ### Patch Changes - Updated dependencies [undefined] - @bundless/cli@0.2.6 ## 0.0.3 ### Patch Changes - Updated dependencies [undefined] - @bundless/cli@0.2.5 ## 0.0.2 ### Patch Changes - Updated dependencies [717a68e] - @bundless/cli@0.2.4 ## 0.0.1 ### Patch Changes - Updated dependencies [9a0b4e5] - @bundless/cli@0.2.0 ================================================ FILE: tests/fixtures.test.ts ================================================ import { traverseEsModules, urlResolver } from 'es-module-traversal' import { build, serve, loadConfig } from '@bundless/cli' import fs from 'fs-extra' import glob from 'glob' import mime from 'mime-types' import fetch from 'node-fetch' import path from 'path' import slash from 'slash' import { URL } from 'url' import { isUrl, osAgnosticResult } from './utils' import 'jest-specific-snapshot' import * as failFast from 'jasmine-fail-fast' import { cleanUrl } from '@bundless/cli/dist/utils' const jasmineEnv = (jasmine as any).getEnv() jasmineEnv.addReporter(failFast.init()) jest.setTimeout(1000 * 50) process.env.BUNDLESS_CONSISTENT_HMR_GRAPH_HASH = '' // makes all urls consistent in time describe('snapshots', () => { const casesPath = 'fixtures' const cases = fs .readdirSync(casesPath, { withFileTypes: true, }) .filter((x) => x.isDirectory()) .map((x) => x.name) .map((x) => path.posix.join(casesPath, x)) const PORT = '9000' const baseUrl = `http://127.0.0.1:${PORT}` for (let [i, casePath] of cases.entries()) { const snapshotFile = path.resolve(casePath, '__snapshots__') test(`${slash(casePath)}`, async () => { process.stdout.write('testing ' + casePath + '\n') let root = path.resolve(casePath) const config = loadConfig(casePath) const server = await serve({ ...config, root, prebundle: { force: true }, server: { port: PORT, }, }) const entryPoints = config?.entries || ['index.html'] try { const downloadFilesToDir = path.join(casePath, '__mirror__') await fs.remove(downloadFilesToDir) const contentTypes = {} const res = await traverseEsModules({ onNonResolved: (p) => { // throw new Error(`cannot traverse ${p}`) }, entryPoints: entryPoints.map((x) => new URL(x, baseUrl).toString(), ), resolver: urlResolver({ root: casePath, baseUrl }), onEntry: async (url = '', importer) => { let content = '' if (!url) { return } if (!isUrl(url)) { content = await (await fs.readFile(url)).toString() } else { const res = await fetch(url, { headers: { ...(importer ? { Referer: importer } : {}), Accept: cleanUrl(url).endsWith('.html') ? 'text/html' : '*/*', }, }) if (!res.ok) { throw new Error( `Cannot fetch '${url}', referer is '${importer}': ${ res.statusText } ${await res.text().catch(() => '')}`, ) } contentTypes[url] = res.headers.get('content-type') content = await res.text() } // download files let filePath = url.startsWith('http') ? urlToRelativePath(url) : path.relative(root, url) filePath = path.join(downloadFilesToDir, filePath) await fs.createFile(filePath) await fs.writeFile(filePath, content) }, }) for (let url in contentTypes) { if (!url.endsWith('.html')) { expect(contentTypes[url]).toContain( 'application/javascript', ) } } expect(contentTypes).toMatchSpecificSnapshot( snapshotFile, 'content-type headers', ) expect( res.map(osAgnosticResult).sort((_a, _b) => { const a = _a.resolvedImportPath + _a.importer const b = _b.resolvedImportPath + _b.importer return a.localeCompare(b) }), ).toMatchSpecificSnapshot(snapshotFile, 'traverse result') // MIRROR const allMirrorFiles = glob.sync(`**/*`, { ignore: ['__snapshots__'], cwd: downloadFilesToDir, nodir: true, }) expect(allMirrorFiles).toMatchSpecificSnapshot( snapshotFile, 'mirror', ) // BUILD const outDir = path.resolve(casePath, 'dist') await build({ ...config, root, entries: entryPoints.map((x) => path.resolve(root, x)), build: { outDir, }, }) const allBuildFiles = glob.sync(`**/*`, { ignore: ['__snapshots__'], cwd: outDir, nodir: true, }) expect(allBuildFiles).toMatchSpecificSnapshot( snapshotFile, 'build', ) } finally { server && (await server.close()) } }) } }) function urlToRelativePath(ctx) { let pathname = new URL(ctx).pathname pathname = pathname.startsWith('/') ? pathname.slice(1) : pathname return pathname } ================================================ FILE: tests/package.json ================================================ { "name": "tests", "private": true, "version": "0.0.9", "dependencies": { "es-module-traversal": "^0.0.50", "@bundless/cli": "0.6.0", "glob": "^7.1.6", "jasmine-fail-fast": "^2.0.1", "jest-specific-snapshot": "^4.0.0", "node-fetch": "^2.6.1", "mime-types": "^2.1.29", "slash": "^3.0.0" }, "devDependencies": { "@types/jest": "^26.0.19" } } ================================================ FILE: tests/utils.ts ================================================ import Koa from 'koa' import staticServe from 'koa-static' import path from 'path' import slash from 'slash' import { TraversalResultType } from 'es-module-traversal' export async function timedRun(func) { const start = process.hrtime.bigint() await func() const end = process.hrtime.bigint() return Math.round(Number(end - start) / 1e6) } export function osAgnosticResult(x: TraversalResultType): TraversalResultType { let { importPath, importer, resolvedImportPath } = x if (!isUrl(resolvedImportPath)) { resolvedImportPath = normalizePath(resolvedImportPath) } if (!isUrl(importer)) { importer = normalizePath(importer) } return { importPath, importer, resolvedImportPath, } } function normalizePath(filePath: string) { filePath = path.relative(process.cwd(), filePath) filePath = slash(filePath) return filePath } export function isUrl(str: string) { return str && str.startsWith('http://') || str.startsWith('https://') } ================================================ FILE: tsconfig.base.json ================================================ { "compilerOptions": { "target": "ES2019", "module": "commonjs", "allowJs": true, "moduleResolution": "Node", "lib": [ "es2017", "es7", "es6", "dom" ], "declaration": true, "declarationMap": true, "strict": true, "esModuleInterop": true, "noImplicitAny": false, "sourceMap": true, "downlevelIteration": true, "jsx": "react", "skipLibCheck": true } } ================================================ FILE: website/.gitignore ================================================ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules /.pnp .pnp.js sidebar.json # testing /coverage # next.js /.next/ /out/ # production /build # misc .DS_Store .env* # debug npm-debug.log* yarn-debug.log* yarn-error.log* ================================================ FILE: website/components/GradientBg.tsx ================================================ import React from 'react' export function GradientBg(props) { return ( ) } ================================================ FILE: website/constants.ts ================================================ export const GITHUB_LINK = 'https://github.com/remorses/bundless' ================================================ FILE: website/next-env.d.ts ================================================ /// /// /// ================================================ FILE: website/next.config.js ================================================ const path = require('path') const compose = require('compose-function') const withReactSvg = require('next-react-svg') const withImages = require('next-images') const transpile = require('next-transpile-modules')(['landing-blocks', 'dokz']) const { withDokz } = require('dokz/dist/plugin') const composed = compose(withDokz, transpile, withImages) module.exports = composed({ include: path.resolve(__dirname, 'public'), pageExtensions: ['js', 'jsx', 'md', 'mdx', 'ts', 'tsx'], }) ================================================ FILE: website/package.json ================================================ { "name": "website", "version": "0.0.0", "private": true, "dependencies": { "@chakra-ui/react": "^1.1.2", "@emotion/react": "^11.1.4", "@octokit/webhooks": "^7.11.0", "baby-i-am-faded": "^2.0.1", "dokz": "^2.0.1", "framer-motion": "^3.2.0", "landing-blocks": "^2.0.2", "next": "^10.0.5", "next-images": "^1.7.0", "next-transpile-modules": "^4.1.0", "react": "experimental", "react-dom": "experimental", "react-icons": "^4.1.0" }, "devDependencies": { "@types/node": "^14.14.13", "@types/react": "^17.0.0", "compose-function": "^3.0.3", "next-react-svg": "^1.1.2", "typescript": "^4.1.3" }, "scripts": { "build": "next build", "dev": "next dev", "start": "next start" } } ================================================ FILE: website/pages/_app.tsx ================================================ import { DokzProvider, GithubLink, ColorModeSwitch } from 'dokz/src' import React, { Fragment } from 'react' import Head from 'next/head' import { Box, ChakraProvider } from '@chakra-ui/react' export default function App(props) { const { Component, pageProps } = props return ( Bundless Bundless } headerItems={[ , , ]} sidebarOrdering={{ docs: { 'index.mdx': true, 'config.mdx': true, 'writing-experiments': true, 'dark-mode': true, deploy: true, }, }} > ) } ================================================ FILE: website/pages/docs/benchmarks.mdx ================================================ # Benchmarks The repository with the benchmarks is [here](https://github.com/remorses/bundless-benchmark) ================================================ FILE: website/pages/docs/cli.mdx ================================================ --- name: Command Line --- # Cli ## Install bundless ```sh npm i -g @bundless/cli ``` ## Run the dev server ```sh bundless dev # or just bundless ``` ## Build to static assets ```sh bundless build --out ./out ``` ================================================ FILE: website/pages/docs/config.mdx ================================================ # Config The default bundless configuration is the following ```js /** @type { import('@bundless/cli').Config } */ module.exports = { entries: ['index.html'], // entry files platform: 'browser', // target platform, browser or node jsx: 'react', // jsx preset loader: { // like esbuild.loader, it lets you import custom extensions '.jpg': 'file', '.jpeg': 'file', '.png': 'file', '.svg': 'file', '.gif': 'file', '.ico': 'file', '.webp': 'file', '.jp2': 'file', '.avif': 'file', '.woff': 'file', '.woff2': 'file', '.ttf': 'file', }, plugins: [], server: { port: 3000, hmr: true, openBrowser: false, // opens browser on server start experimentalImmutableCache: false, // makes server refresh much faster for big projects }, prebundle: { includeWorkspacePackages: [], // linked packages to prebundle, can be a boolean force: false, // forces prebundling dependencies on server start }, build: { basePath: '/', jsTarget: 'es2018', // target es version minify: true, // run esbuild minification outDir: './out', // output directory }, } ``` ## entries In the prebundle phase entries are used as starting point to traverse the import graph and gather dependencies. In the build phase they are passes to esbuild to be bundled and outputted in outDir. ## platform Can be `browser` or `node`. When platform is `node` the output files will use commonjs modules and won't bundle dependencies (files in node_modules are marked as external). ## prebundle.includeWorkspacePackages By default bundless does not prebundle your workspace packages, this means that you can import files from your monorepo dependencies and have them reflect changes thanks to HMR. However this won't work if your liked dependencies contains commonjs code that uses `require` and `module.exports`, in this case you should put these packages in `prebundle.includeWorkspacePackages` or use `prebundle.includeWorkspacePackages: true` ## build.basePath If you are deploying your website to an url like `http://mysite.com/path`, then you should pass `/path` to `build.basePath`, all the `script` and `link` tags in the html files will fetch files from base path, the same for dynamic imports. ## includeWorkspacePackages Extensions you import in your js and return their path ================================================ FILE: website/pages/docs/faq.mdx ================================================ ## Why another development server and bundler? I was really frustrated by the slowness of current develoment bundlers and server, bundless tries to make the fastest possible development experience possible It's using native ES modules in development and esbuild to build for production It's simple to setup and already has support for the most used technologies like - typescript - jsx - css modules Its esm HMR implementation is simple and easy to build upon ## What's the difference from snowpack? Bundless has been built after reading the codebase of Snowpack, Vite and WMR, i am really thankful for the solutions found by these tools Bundless can be seen as a rewrite of these tools to solve some problems It's using a prebundling phase like in Snowpack, but it's using esbuild instead of rollup to improve speed It's using a plugin system like in WMR, but it uses the esbuild plugin interface instead of Rollup Bundless uses esbuild to traverse the import graph to find dependencies to prebundle, Snowpack instead search for all js files in root folder and uses `es-module-lexer` and a regex to extract import statements from non lexable files (like jsx, typescript, ...etc) Like in vite and snowpack and Vite, i am using the esm HMR specification to support HMR, bundless implementation also solves some common bugs like [this](https://github.com/preactjs/wmr/issues/257#issuecomment-747296481) Bundless has better support for monorepos compared to snowpack and vite 1, Snowpack for example does not support HMR for workspace packages and reload on every change in any linked package, vite 1 instead [fails to resolve packages that are not reachable from its root(https://github.com/vitejs/vite/issues/1002) Another difference with snowpack and vite is multiple entries support, with bundless you can generate separate bundles per entry, this decreases bundle size per entry and allows you to also code split imported css ## What's the role of esbuild in bundless? Esbuild is used to bundles js files for production, In development it is used to transform jsx and typescript files, Esbuild is also used in the prebundling phase: when a not prebundled node module is found esbuild is used to traverse the import graph, the metafile is then analyzed to find resolved files that have a path including a node_modules folder, these paths are then bundled by esbuild to be transformed in valid ESM code and served from the web_modules folder ## Why prebundling? Prebundling consists in bundling dependencies packages in files in the web_modules directory, this is to - make packages that use commonjs work in the browser - decrease the network requests made by the browser to fetch modules But why bundless bundles all the dependencies and not ony the commonjs ones? This is to prevent issues with duplicate modules instances ## What's the shape of a bundless plugin? bundless plugins are a superset of esbuild plugins, all esbuild plugins can be used as bundless plugins Bundless adds some new hooks: - onTransform, used to transform code - onClose, called when the server is closing It also passes some new variables in the build context: - `graph` is the HMR graph - `config` is the bundless config - Bundless has 2 main functions: - Dev server - Bundler The dev server is a koa server that serves user modules in a way that makes them consumable by the browser, running them trough a plugins pipeline Bundless plugins are a super set of esbuild plugins, they allow to load, resolve and transform modules The core plugins are for example - rewrite: rewrite imports to be public paths the browser can resolve - resolves node modules to web modules ## Why use a new plugin system? I am using a superset of esbuild plugins to be able to share logic between the build and dev steps This way i can also reuse esbuild plugins ================================================ FILE: website/pages/docs/how-it-works.mdx ================================================ # How does bundless work? Bundless works differently when in development and in build, to share as much logic as possible bundless encapsulates as much logic as possible in plugins. The bundless Plugin interface is a superset of [esbuild's plugin interface](https://esbuild.github.io/plugins/), this means that the same plugins can be used both when running in development and in build phase. Esbuild is not only used in the build phase, it is also used to traverse the module graph in the `prebundle` phase and to bundle dependencies. The prebundle phase consists in - traverse the module import graph - gather all imports to files in node_modules - bundle these files in valid ES modules - store them in the `web_modules` directory The prebundle phase is necessary to make commonjs code work in the browser and reduce the number of network requests to fetch modules. In development bundless is a web server that serves your modules to the browser. It also has does some built in transformations to your files - import paths are rewritten to path on root, `import './file'` becomes `import '/path/to/file.js'` - import paths are resolved to their path s - plugins `onLoad` and `onTransform` methods are called on the module contents When building the entries are passed to `esbuild` to be bundles Html files are converted to js files that import their scripts src urls (only those that are inside your root directory) ================================================ FILE: website/pages/docs/index.mdx ================================================ --- name: Getting started --- ## Getting Started Bundless is an experimental application development server and bundler. It is a replacement for tools like webpack and parcel, with the main aim being development and build speed with as less as possible compromises. To try out an example application run the following commands to setup an example application ```sh npm i -g @bundless/cli bundless quickstart ./my-app # will download an example app inside my-app cd my-app npm run dev ``` ## How is bundless faster than my favorite build tool? Bundless is different than traditional bundlers, it doesn't build your files to one large bundle, it instead serve your files directly to the browser This means that bundless doesn't need to parse your files, which is the most costly operation done by tools like webpack This means that when you make a change to a file only the changed module is fetched, this makes the hmr implementation much simpler compared to tools like webpack that need instead runtime logic to handle code replacement. ================================================ FILE: website/pages/docs/integrations/alias.mdx ================================================ # Alias node modules You can alias modules using the `@bundless/plugin-alias` plugin ## Example ```js // bundless.config.js const { AliasPlugin } = require('@bundless/plugin-alias') module.exports = { plugins: [ AliasPlugin({ entries: { react: 'preact/compat', /regex/: 'some-path' }, }), ], } ``` ================================================ FILE: website/pages/docs/integrations/babel.mdx ================================================ # Using Babel You can use babel using the `@bundless/plugin-babel` package ## Example ```js // bundless.config.js const { BabelPlugin } = require('@bundless/plugin-babel') module.exports = { plugins: [ BabelPlugin({ babelOptions: { plugins: [require('babel-plugin-macros')], }, }), ], } ``` Notice that you will need to pass your babel options explicitly and not using `.babelrc` files This API design choice has been made because usually .babelrc files contain babel presets that transpile jsx to js but this is already done in bundless, you only need to pass some specific plugins that you need ================================================ FILE: website/pages/docs/integrations/react-refresh.mdx ================================================ # Using react refresh React refresh lets you see changes on the browser without refreshing the page ## Example ```js // bundless.config.js const { ReactRefreshPlugin } = require('@bundless/plugin-react-refresh') module.exports = { plugins: [ReactRefreshPlugin()], } ``` ================================================ FILE: website/pages/docs/migration.mdx ================================================ # Migration ## Migration from create-react-app - Source code must not use `require` or `module.exports` but valid ES imports and exports - Use `jsx` instead of `js` extension for files that contain jsx - Remove ejs templates from index.html - Add your entrypoint in index.html with a script tag (for example `