From 14fa2d07807780b16fd2415cc2e34d60ee8b2f59 Mon Sep 17 00:00:00 2001 From: Jakub Bogucki <610941+jakub300@users.noreply.github.com> Date: Fri, 17 Dec 2021 03:57:50 +0100 Subject: [PATCH] Rewrite with Webpack (#509) Co-authored-by: edenizk Co-authored-by: Ergin Deniz Kosecioglu Co-authored-by: Ergin Deniz Kosecioglu <35309972+edenizk@users.noreply.github.com> --- .eslintignore | 5 +- .eslintrc.js | 53 + .eslintrc.yml | 30 - .gitignore | 5 +- .grenrc.js | 20 - .nvmrc | 1 + .prettierrc | 3 - .travis.yml | 43 +- CHANGELOG.md | 51 +- __tests__/fe/__snapshots__/add-page.js.snap | 1337 ++ .../fe/__snapshots__/custom-functions.js.snap | 10 + __tests__/fe/__snapshots__/htmlhint.js.snap | 21 + __tests__/fe/__snapshots__/inspect.js.snap | 299 + __tests__/fe/add-page.js | 170 + __tests__/fe/build/0.js | 72 + __tests__/fe/build/1.js | 30 + __tests__/fe/build/2.js | 30 + __tests__/fe/build/__snapshots__/0.js.snap | 99 + __tests__/fe/build/__snapshots__/1.js.snap | 3 + __tests__/fe/build/__snapshots__/2.js.snap | 34 + __tests__/fe/build/helpers.js | 12 + __tests__/fe/content/0.js | 20 + __tests__/fe/content/1.js | 67 + __tests__/fe/content/2.js | 106 + __tests__/fe/content/__snapshots__/0.js.snap | 21 + __tests__/fe/content/__snapshots__/1.js.snap | 49 + __tests__/fe/content/__snapshots__/2.js.snap | 123 + __tests__/fe/content/helpers.js | 25 + __tests__/fe/custom-functions.js | 52 + __tests__/fe/helpers.js | 27 + __tests__/fe/htmlhint.js | 47 + __tests__/fe/inspect.js | 42 + .../__snapshots__/browserslist.js.snap | 42 + __tests__/generator/__snapshots__/fe.js.snap | 398 + __tests__/generator/__snapshots__/wp.js.snap | 427 + __tests__/generator/browserslist.js | 57 + __tests__/generator/fe.js | 108 + __tests__/generator/wp.js | 90 + __tests__/wp/__snapshots__/add-page.js.snap | 35 + __tests__/wp/__snapshots__/wp-command.js.snap | 18 + __tests__/wp/__snapshots__/wp-config.js.snap | 22 + __tests__/wp/add-page.js | 38 + __tests__/wp/config-hooks.js | 48 + __tests__/wp/dev.js | 158 + __tests__/wp/helpers.js | 30 + __tests__/wp/wp-command.js | 58 + __tests__/wp/wp-config.js | 41 + docs/.browserslistrc | 7 + docs/.eslintignore | 4 + docs/.eslintrc.js | 25 + docs/.gitignore | 2 + .../app/templates => docs}/.htmlhintrc | 0 docs/.prettierignore | 4 + docs/.stylelintignore | 3 + docs/README.md | 3 + docs/babel.config.js | 16 + docs/chisel.config.js | 129 + docs/content/404.md | 5 + docs/content/about.md | 13 + docs/content/docs.md | 31 + docs/content/docs/development.md | 7 + docs/content/docs/development/code-quality.md | 32 + .../content/docs/development/configuration.md | 143 + .../docs/development/configuration/hooks.md | 52 + docs/content/docs/development/itcss.md | 47 + docs/content/docs/development/javascript.md | 21 + .../docs/development/javascript/jquery.md | 87 + docs/content/docs/development/pages.md | 41 + docs/content/docs/development/performance.md | 24 + .../docs/development/static-content.md | 101 + docs/content/docs/development/tasks.md | 88 + docs/content/docs/development/twig.md | 11 + docs/content/docs/development/wordpress.md | 176 + docs/content/docs/features.md | 17 + docs/content/docs/installation.md | 53 + .../installation/wildcard-virtual-hosts.md | 132 + docs/content/docs/setup.md | 18 + docs/content/docs/setup/static.md | 39 + docs/content/docs/setup/wordpress.md | 76 + docs/content/docs/simple.md | 54 + docs/content/docs/structure.md | 10 + docs/content/docs/structure/static.md | 56 + docs/content/docs/structure/wordpress.md | 86 + docs/content/index.json | 110 + docs/content/tutorials.md | 21 + docs/import.js | 38 + docs/package.json | 40 + docs/postcss.config.js | 8 + docs/prettier.config.js | 4 + .../assets/fonts => docs/public}/.keep | 0 docs/public/_headers | 8 + docs/public/_redirects | 2 + .../images => docs/src/assets/fonts}/.keep | 0 .../fonts/quicksand-v21-latin-300.woff2 | Bin 0 -> 12852 bytes .../fonts/quicksand-v21-latin-500.woff2 | Bin 0 -> 13724 bytes .../fonts/quicksand-v21-latin-600.woff2 | Bin 0 -> 13820 bytes .../fonts/quicksand-v21-latin-700.woff2 | Bin 0 -> 13176 bytes .../fonts/quicksand-v21-latin-regular.woff2 | Bin 0 -> 13788 bytes .../data => docs/src/assets/images}/.keep | 0 docs/src/assets/images/arrow.svg | 1 + docs/src/assets/images/checkmark.svg | 1 + docs/src/assets/images/chisel.jpg | Bin 0 -> 5527 bytes docs/src/assets/images/club-oenologique.png | Bin 0 -> 182029 bytes .../favicons/android-chrome-192x192.png | Bin 0 -> 14182 bytes .../favicons/android-chrome-512x512.png | Bin 0 -> 39689 bytes .../images/favicons/apple-touch-icon.png | Bin 0 -> 14027 bytes .../assets/images/favicons/browserconfig.xml | 9 + .../assets/images/favicons/favicon-16x16.png | Bin 0 -> 1187 bytes .../assets/images/favicons/favicon-32x32.png | Bin 0 -> 3251 bytes docs/src/assets/images/favicons/favicon.ico | Bin 0 -> 15086 bytes .../assets/images/favicons/mstile-144x144.png | Bin 0 -> 8448 bytes .../assets/images/favicons/mstile-150x150.png | Bin 0 -> 8122 bytes .../assets/images/favicons/mstile-310x150.png | Bin 0 -> 8722 bytes .../assets/images/favicons/mstile-310x310.png | Bin 0 -> 18542 bytes .../assets/images/favicons/mstile-70x70.png | Bin 0 -> 5498 bytes .../images/favicons/safari-pinned-tab.svg | 97 + .../assets/images/favicons/site.webmanifest | 19 + docs/src/assets/images/itcss.svg | 1 + docs/src/assets/images/monte-carlo.png | Bin 0 -> 60307 bytes docs/src/assets/images/payette.png | Bin 0 -> 362965 bytes docs/src/assets/images/play.svg | 1 + docs/src/assets/images/star.svg | 1 + docs/src/assets/images/terminal.svg | 1 + docs/src/assets/images/twig.svg | 1 + docs/src/assets/images/xfive.png | Bin 0 -> 170438 bytes docs/src/scripts/app.js | 16 + docs/src/scripts/helpers/inert.js | 740 + docs/src/scripts/modules/greeting.js | 9 + docs/src/scripts/modules/onPageNavigation.js | 115 + docs/src/scripts/modules/sidebar.js | 112 + docs/src/styles/components/_block.scss | 87 + docs/src/styles/components/_btn.scss | 171 + docs/src/styles/components/_footer.scss | 25 + docs/src/styles/components/_header.scss | 92 + docs/src/styles/components/_hero.scss | 89 + docs/src/styles/components/_highlight.scss | 8 + docs/src/styles/components/_logo.scss | 37 + docs/src/styles/components/_page-nav.scss | 60 + docs/src/styles/components/_post.scss | 22 + docs/src/styles/components/_sidebar.scss | 135 + docs/src/styles/components/_slider.scss | 72 + docs/src/styles/components/_why-chisel.scss | 29 + .../src/styles}/elements/_blockquote.scss | 4 +- docs/src/styles/elements/_code.scss | 13 + .../src/styles}/elements/_headings.scss | 0 .../src/styles}/elements/_hr.scss | 0 docs/src/styles/elements/_html-body.scss | 36 + docs/src/styles/elements/_images.scss | 27 + docs/src/styles/elements/_links.scss | 17 + .../src/styles}/elements/_lists.scss | 0 docs/src/styles/elements/_main.scss | 9 + .../src/styles}/elements/_tables.scss | 0 .../src/styles}/generic/_box-sizing.scss | 4 +- docs/src/styles/generic/_font-face.scss | 53 + .../src/styles}/generic/_normalize.scss | 2 +- docs/src/styles/generic/_reset.scss | 59 + docs/src/styles/generic/_shared.scss | 42 + .../itcss => docs/src/styles}/main.scss | 5 +- docs/src/styles/objects/_animations.scss | 16 + docs/src/styles/objects/_container.scss | 14 + docs/src/styles/objects/_content.scss | 220 + docs/src/styles/objects/_icons.scss | 37 + .../src/styles}/objects/_layout.scss | 0 .../src/styles}/objects/_list-bare.scss | 0 .../src/styles}/objects/_list-inline.scss | 0 docs/src/styles/objects/_media.scss | 54 + .../src/styles}/objects/_table.scss | 0 docs/src/styles/settings/_global.scss | 74 + .../src/styles}/tools/_breakpoints.scss | 7 +- .../src/styles}/tools/_clearfix.scss | 9 +- .../src/styles}/tools/_hidden.scss | 6 +- .../src/styles}/utilities/_align.scss | 0 .../src/styles}/utilities/_clearfix.scss | 0 .../src/styles}/utilities/_hide.scss | 0 docs/src/styles/utilities/_spacing.scss | 55 + .../scripts => docs/src/styles}/vendor/.keep | 0 docs/src/styles/vendor/_highlightjs.scss | 147 + docs/src/templates/components/block.twig | 22 + docs/src/templates/components/footer.twig | 6 + docs/src/templates/components/header.twig | 29 + docs/src/templates/components/hero.twig | 40 + docs/src/templates/components/logo.twig | 19 + docs/src/templates/components/page-nav.twig | 24 + .../templates/components/page-sidebar.twig | 8 + docs/src/templates/components/sidebar.twig | 12 + docs/src/templates/components/slider.twig | 32 + docs/src/templates/components/why-chisel.twig | 19 + docs/src/templates/layouts/base.twig | 62 + docs/src/templates/layouts/page.twig | 8 + docs/src/templates/post.twig | 31 + docs/src/templates/template-home.twig | 8 + docs/stylelint.config.js | 3 + generators/app/index.js | 92 - generators/app/templates/.babelrc | 4 - generators/app/templates/.browserslistrc | 7 - generators/app/templates/.eslintignore | 4 - generators/app/templates/.eslintrc | 27 - generators/app/templates/.prettierignore | 3 - generators/app/templates/.prettierrc | 16 - generators/app/templates/.stylelintignore | 2 - generators/app/templates/.stylelintrc.yml | 91 - generators/app/templates/LICENSE | 21 - generators/app/templates/README.md | 4 - generators/app/templates/gitignore | 52 - .../templates/gulp/NameAllModulesPlugin.js | 21 - generators/app/templates/gulp/helpers.js | 94 - .../app/templates/gulp/prepareConfig.js | 38 - generators/app/templates/gulp/tasks/assets.js | 30 - generators/app/templates/gulp/tasks/build.js | 28 - generators/app/templates/gulp/tasks/lint.js | 34 - generators/app/templates/gulp/tasks/report.js | 231 - .../app/templates/gulp/tasks/scripts.js | 82 - generators/app/templates/gulp/tasks/serve.js | 53 - generators/app/templates/gulp/tasks/styles.js | 64 - .../app/templates/gulp/tasks/templates.js | 59 - generators/app/templates/gulp/tasks/vendor.js | 138 - .../app/templates/gulp/templatesFunctions.js | 87 - generators/app/templates/gulpfile.js | 37 - .../app/templates/index/project-index.html | 50 - generators/app/templates/package.json | 106 - generators/app/templates/scripts/vendor.json | 3 - .../templates/twig/components/footer.twig | 3 - .../templates/twig/layouts/base.twig | 46 - .../app/templates/webpack.chisel.config.js | 63 - generators/app/utils/generator.js | 65 - generators/app/utils/index.js | 8 - generators/app/utils/prompts.js | 129 - generators/page/index.js | 155 - generators/wp-config/index.js | 143 - generators/wp-plugins/index.js | 55 - generators/wp-plugins/plugins.json | 7 - generators/wp/index.js | 257 - .../templates/chisel-starter-theme/gitignore | 1 - generators/wp/templates/gitignore | 2 - generators/wpcli/index.js | 29 - helpers/index.js | 37 - helpers/wpCli.js | 53 - lerna.json | 17 + package.json | 104 +- packages/babel-preset-chisel/CHANGELOG.md | 7 + packages/babel-preset-chisel/README.md | 11 + packages/babel-preset-chisel/index.js | 66 + packages/babel-preset-chisel/package.json | 43 + packages/babel-preset-chisel/preact.js | 22 + packages/babel-preset-chisel/react.js | 32 + .../chisel-plugin-code-style/CHANGELOG.md | 11 + packages/chisel-plugin-code-style/README.md | 20 + .../eslint-import-resolver-webpack.js | 1 + packages/chisel-plugin-code-style/index.js | 165 + .../chisel-plugin-code-style/package.json | 41 + .../CHANGELOG.md | 28 + .../chisel-plugin-static-frontend/README.md | 28 + .../chisel-plugin-static-frontend/lib/Post.js | 165 + .../lib/commands/add-page.js | 185 + .../lib/commands/dev.js | 95 + .../lib/content-loader.js | 38 + .../lib/content-raw-loader.js | 4 + .../lib/get-posts.js | 69 + .../lib/htmlhint.js | 73 + .../lib/index.js | 225 + .../lib/inject-revisioned.js | 69 + .../lib/twig-loader.js | 149 + .../package.json | 46 + packages/chisel-plugin-wordpress/.gitignore | 1 + .../chisel-plugin-wordpress/.npmignore | 0 packages/chisel-plugin-wordpress/CHANGELOG.md | 33 + packages/chisel-plugin-wordpress/README.md | 39 + .../commands/add-page.js | 92 + .../chisel-plugin-wordpress/commands/dev.js | 138 + .../commands/wp-config.js | 113 + .../chisel-plugin-wordpress/commands/wp.js | 28 + .../chisel-plugin-wordpress/fetch-wp-cli.js | 17 + packages/chisel-plugin-wordpress/index.js | 61 + packages/chisel-plugin-wordpress/package.json | 42 + .../template/dev-vhost.chisel-tpl.conf | 0 .../wp/wp-config-local.chisel-tpl.php | 10 +- packages/chisel-scripts/CHANGELOG.md | 42 + packages/chisel-scripts/README.md | 26 + packages/chisel-scripts/bin/chisel-scripts.js | 27 + packages/chisel-scripts/lib/PluginAPI.js | 89 + packages/chisel-scripts/lib/Service.js | 249 + .../chisel-scripts/lib/chisel.config.base.js | 31 + .../lib/commands/build/formatStats.js | 79 + .../lib/commands/build/index.js | 125 + .../chisel-scripts/lib/commands/inspect.js | 14 + packages/chisel-scripts/lib/config/base.js | 201 + packages/chisel-scripts/lib/config/css.js | 91 + packages/chisel-scripts/lib/config/js.js | 52 + .../lib/generate-and-serialize-config.js | 9 + .../lib/webpack-loaders/sass-glob-loader.js | 41 + .../lib/webpack-plugins/DynamicPublicPath.js | 24 + .../webpack-plugins/OptimizeCssnanoPlugin.js | 125 + packages/chisel-scripts/package.json | 66 + .../chisel-scripts/webpack.config-sync.js | 16 + packages/chisel-scripts/webpack.config.js | 9 + packages/chisel-shared-utils/CHANGELOG.md | 7 + packages/chisel-shared-utils/README.md | 3 + packages/chisel-shared-utils/index.js | 6 + packages/chisel-shared-utils/lib/copy.js | 50 + .../lib/package-manager.js | 21 + packages/chisel-shared-utils/lib/run.js | 43 + packages/chisel-shared-utils/package.json | 35 + packages/eslint-config-chisel/CHANGELOG.md | 3 + packages/eslint-config-chisel/README.md | 33 + packages/eslint-config-chisel/index.js | 9 + packages/eslint-config-chisel/package.json | 37 + packages/eslint-config-chisel/react.js | 10 + packages/generator-chisel/.gitignore | 2 + packages/generator-chisel/CHANGELOG.md | 78 + packages/generator-chisel/bin/chisel.js | 55 + .../lib/commands/create/Creator.js | 41 + .../lib/commands/create/CreatorPluginAPI.js | 106 + .../lib/commands/create/creators/app/index.js | 170 + .../app/template/.browserslistrc.chisel-tpl | 19 + .../creators/app/template}/.editorconfig | 0 .../creators/app/template/.eslintignore | 4 + .../create/creators/app/template/.eslintrc.js | 25 + .../creators/app/template}/.gitattributes | 0 .../app/template/.gitignore.chisel-tpl | 8 +- .../creators/app/template/.prettierignore | 4 + .../creators/app/template/.stylelintignore | 3 + .../app/template/README.chisel-tpl.md | 3 + .../creators/app/template/babel.config.js | 16 + .../app/template/chisel.config.chisel-tpl.js | 48 + .../app/template/package.chisel-tpl.json | 43 + .../creators/app/template/postcss.config.js | 8 + .../creators/app/template/prettier.config.js | 4 + .../app/template/src/assets/fonts/.keep | 0 .../app/template/src/assets/images/.keep | 0 .../template/src/scripts/app.chisel-tpl.js | 4 +- .../scripts/modules/greeting.chisel-tpl.js | 6 +- .../template/src/styles}/components/_btn.scss | 0 .../src/styles}/components/_footer.scss | 0 .../src/styles}/components/_header.scss | 0 .../src/styles/elements/_blockquote.scss | 20 + .../src/styles/elements/_headings.scss | 33 + .../app/template/src/styles/elements/_hr.scss | 7 + .../template/src/styles}/elements/_html.scss | 0 .../src/styles}/elements/_images.scss | 0 .../template/src/styles}/elements/_links.scss | 0 .../template/src/styles/elements/_lists.scss | 23 + .../template/src/styles/elements/_tables.scss | 11 + .../src/styles/generic/_box-sizing.scss | 20 + .../src/styles}/generic/_font-face.scss | 0 .../src/styles/generic/_normalize.scss | 5 + .../template/src/styles}/generic/_reset.scss | 0 .../template/src/styles}/generic/_shared.scss | 0 .../template/src/styles/main.chisel-tpl.scss | 13 + .../template/src/styles/objects/_layout.scss | 49 + .../src/styles/objects/_list-bare.scss | 13 + .../src/styles/objects/_list-inline.scss | 16 + .../template/src/styles}/objects/_media.scss | 0 .../template/src/styles/objects/_table.scss | 26 + .../src/styles}/objects/_wrapper.scss | 0 .../src/styles}/settings/_global.scss | 7 +- .../src/styles/tools/_breakpoints.scss | 67 + .../template/src/styles/tools/_clearfix.scss | 18 + .../template/src/styles/tools/_hidden.scss | 17 + .../template/src/styles/utilities/_align.scss | 27 + .../src/styles/utilities/_clearfix.scss | 11 + .../template/src/styles/utilities/_hide.scss | 28 + .../app/template/src/styles/vendor/.keep | 0 .../components/footer.chisel-tpl.twig | 3 + .../components/header.chisel-tpl.twig | 2 +- .../templates/layouts/base.chisel-tpl.twig | 42 + .../template/src/templates}/layouts/page.twig | 2 +- .../creators/app/template/stylelint.config.js | 3 + .../create/creators/fe/index-styles.css | 25 +- .../lib/commands/create/creators/fe/index.js | 51 + .../fe/template-index/index.chisel-tpl.html | 77 + .../create/creators/fe/template/.htmlhintrc | 3 + .../create/creators/fe/template/public/.keep | 0 .../lib/commands/create/creators/init.js | 97 + .../create/creators/wp-plugins/index.js | 34 + .../create/creators/wp-plugins/plugins.json | 9 + .../.gitignore.chisel-tpl | 1 + .../chisel-starter-theme/404.chisel-tpl.php | 2 +- .../Chisel/Extensions/ChiselExtension.php | 0 .../Chisel/Extensions/ChiselTwig.php | 120 +- .../Chisel/Extensions/DataType.php | 0 .../Chisel/Extensions/Theme.php | 0 .../Chisel/Extensions/Twig.php | 0 .../chisel-starter-theme/Chisel/Helpers.php | 0 .../wp}/chisel-starter-theme/Chisel/Image.php | 0 .../wp}/chisel-starter-theme/Chisel/Media.php | 0 .../Chisel/Performance.php | 0 .../wp}/chisel-starter-theme/Chisel/Post.php | 0 .../chisel-starter-theme/Chisel/Security.php | 0 .../chisel-starter-theme/Chisel/Settings.php | 25 +- .../wp}/chisel-starter-theme/Chisel/Site.php | 0 .../chisel-starter-theme/README.chisel-tpl.md | 2 +- .../archive.chisel-tpl.php | 2 +- .../author.chisel-tpl.php | 2 +- .../wp}/chisel-starter-theme/footer.php | 0 .../wp}/chisel-starter-theme/functions.php | 0 .../wp}/chisel-starter-theme/header.php | 0 .../chisel-starter-theme/index.chisel-tpl.php | 2 +- .../chisel-starter-theme/page.chisel-tpl.php | 2 +- .../wp/chisel-starter-theme}/screenshot.png | Bin .../search.chisel-tpl.php | 2 +- .../single.chisel-tpl.php | 2 +- .../chisel-starter-theme/style.chisel-tpl.css | 4 +- .../chisel-starter-theme/templates/404.twig | 0 .../templates/author.twig | 0 .../templates/components/comment.twig | 0 .../templates/components/main-nav.twig | 0 .../templates/components/tease-post.twig | 0 .../templates/components/tease.twig | 0 .../chisel-starter-theme/templates/index.twig | 0 .../templates/page-plugin.twig | 0 .../chisel-starter-theme/templates/page.twig | 0 .../templates/single.twig | 0 .../lib/commands/create/creators/wp/index.js | 168 + .../src/styles}/components/_comment-form.scss | 0 .../src/styles}/components/_comment.scss | 0 .../src/styles}/components/_main-nav.scss | 8 +- .../src/styles}/components/_post.scss | 0 .../create/creators/wp/template}/wp-cli.yml | 0 .../wp/template/wp/.gitignore.chisel-tpl | 2 + .../create/creators/wp/template/wp}/.htaccess | 0 .../creators/wp/template/wp}/wp-config.php | 0 .../lib/commands/create/index.js | 12 + .../lib/commands/create/packages-versions.js | 11 + .../lib/commands/create/priorities.js | 34 + .../lib/utils/sort-package.js | 68 + packages/generator-chisel/package.json | 46 + packages/stylelint-config-chisel/CHANGELOG.md | 7 + packages/stylelint-config-chisel/README.md | 25 + packages/stylelint-config-chisel/index.js | 54 + packages/stylelint-config-chisel/package.json | 32 + prettier.config.js | 4 + scripts/index-versions.js | 117 + scripts/prepare-links.js | 15 + scripts/testGlobalSetup.js | 10 + scripts/testGlobalTeardown.js | 10 + scripts/testPuppeteerEnv.js | 21 + scripts/testSetup.js | 301 + scripts/testSetupAfterEnv.js | 26 + test/.eslintrc.yml | 2 - test/app/defaults.shared.js | 104 - test/app/defaults.test.js | 73 - test/app/jquery.test.js | 57 - test/app/jqueryVendor.test.js | 57 - test/app/wordpress.test.js | 47 - test/generate_package.js | 20 - test/page/defaults.test.js | 64 - test/page/wp.test.js | 77 - test/run-tests.sh | 28 - test/wp-config/defaults.test.js | 41 - test/wp-plugins/defaults.test.js | 56 - test/wp/defaults.test.js | 71 - test/wp/srcinwp.test.js | 67 - test/wp/wpcli.test.js | 67 - test/wpcli/defaults.test.js | 58 - yarn.lock | 17340 +++++++++++++--- 455 files changed, 30018 insertions(+), 6651 deletions(-) create mode 100644 .eslintrc.js delete mode 100644 .eslintrc.yml delete mode 100644 .grenrc.js create mode 100644 .nvmrc delete mode 100644 .prettierrc create mode 100644 __tests__/fe/__snapshots__/add-page.js.snap create mode 100644 __tests__/fe/__snapshots__/custom-functions.js.snap create mode 100644 __tests__/fe/__snapshots__/htmlhint.js.snap create mode 100644 __tests__/fe/__snapshots__/inspect.js.snap create mode 100644 __tests__/fe/add-page.js create mode 100644 __tests__/fe/build/0.js create mode 100644 __tests__/fe/build/1.js create mode 100644 __tests__/fe/build/2.js create mode 100644 __tests__/fe/build/__snapshots__/0.js.snap create mode 100644 __tests__/fe/build/__snapshots__/1.js.snap create mode 100644 __tests__/fe/build/__snapshots__/2.js.snap create mode 100644 __tests__/fe/build/helpers.js create mode 100644 __tests__/fe/content/0.js create mode 100644 __tests__/fe/content/1.js create mode 100644 __tests__/fe/content/2.js create mode 100644 __tests__/fe/content/__snapshots__/0.js.snap create mode 100644 __tests__/fe/content/__snapshots__/1.js.snap create mode 100644 __tests__/fe/content/__snapshots__/2.js.snap create mode 100644 __tests__/fe/content/helpers.js create mode 100644 __tests__/fe/custom-functions.js create mode 100644 __tests__/fe/helpers.js create mode 100644 __tests__/fe/htmlhint.js create mode 100644 __tests__/fe/inspect.js create mode 100644 __tests__/generator/__snapshots__/browserslist.js.snap create mode 100644 __tests__/generator/__snapshots__/fe.js.snap create mode 100644 __tests__/generator/__snapshots__/wp.js.snap create mode 100644 __tests__/generator/browserslist.js create mode 100644 __tests__/generator/fe.js create mode 100644 __tests__/generator/wp.js create mode 100644 __tests__/wp/__snapshots__/add-page.js.snap create mode 100644 __tests__/wp/__snapshots__/wp-command.js.snap create mode 100644 __tests__/wp/__snapshots__/wp-config.js.snap create mode 100644 __tests__/wp/add-page.js create mode 100644 __tests__/wp/config-hooks.js create mode 100644 __tests__/wp/dev.js create mode 100644 __tests__/wp/helpers.js create mode 100644 __tests__/wp/wp-command.js create mode 100644 __tests__/wp/wp-config.js create mode 100644 docs/.browserslistrc create mode 100644 docs/.eslintignore create mode 100644 docs/.eslintrc.js create mode 100644 docs/.gitignore rename {generators/app/templates => docs}/.htmlhintrc (100%) create mode 100644 docs/.prettierignore create mode 100644 docs/.stylelintignore create mode 100644 docs/README.md create mode 100644 docs/babel.config.js create mode 100644 docs/chisel.config.js create mode 100644 docs/content/404.md create mode 100644 docs/content/about.md create mode 100644 docs/content/docs.md create mode 100644 docs/content/docs/development.md create mode 100644 docs/content/docs/development/code-quality.md create mode 100644 docs/content/docs/development/configuration.md create mode 100644 docs/content/docs/development/configuration/hooks.md create mode 100644 docs/content/docs/development/itcss.md create mode 100644 docs/content/docs/development/javascript.md create mode 100644 docs/content/docs/development/javascript/jquery.md create mode 100644 docs/content/docs/development/pages.md create mode 100644 docs/content/docs/development/performance.md create mode 100644 docs/content/docs/development/static-content.md create mode 100644 docs/content/docs/development/tasks.md create mode 100644 docs/content/docs/development/twig.md create mode 100644 docs/content/docs/development/wordpress.md create mode 100644 docs/content/docs/features.md create mode 100644 docs/content/docs/installation.md create mode 100644 docs/content/docs/installation/wildcard-virtual-hosts.md create mode 100644 docs/content/docs/setup.md create mode 100644 docs/content/docs/setup/static.md create mode 100644 docs/content/docs/setup/wordpress.md create mode 100644 docs/content/docs/simple.md create mode 100644 docs/content/docs/structure.md create mode 100644 docs/content/docs/structure/static.md create mode 100644 docs/content/docs/structure/wordpress.md create mode 100644 docs/content/index.json create mode 100644 docs/content/tutorials.md create mode 100644 docs/import.js create mode 100644 docs/package.json create mode 100644 docs/postcss.config.js create mode 100644 docs/prettier.config.js rename {generators/app/templates/assets/fonts => docs/public}/.keep (100%) create mode 100644 docs/public/_headers create mode 100644 docs/public/_redirects rename {generators/app/templates/assets/images => docs/src/assets/fonts}/.keep (100%) create mode 100644 docs/src/assets/fonts/quicksand-v21-latin-300.woff2 create mode 100644 docs/src/assets/fonts/quicksand-v21-latin-500.woff2 create mode 100644 docs/src/assets/fonts/quicksand-v21-latin-600.woff2 create mode 100644 docs/src/assets/fonts/quicksand-v21-latin-700.woff2 create mode 100644 docs/src/assets/fonts/quicksand-v21-latin-regular.woff2 rename {generators/app/templates/data => docs/src/assets/images}/.keep (100%) create mode 100644 docs/src/assets/images/arrow.svg create mode 100644 docs/src/assets/images/checkmark.svg create mode 100644 docs/src/assets/images/chisel.jpg create mode 100644 docs/src/assets/images/club-oenologique.png create mode 100644 docs/src/assets/images/favicons/android-chrome-192x192.png create mode 100644 docs/src/assets/images/favicons/android-chrome-512x512.png create mode 100644 docs/src/assets/images/favicons/apple-touch-icon.png create mode 100644 docs/src/assets/images/favicons/browserconfig.xml create mode 100644 docs/src/assets/images/favicons/favicon-16x16.png create mode 100644 docs/src/assets/images/favicons/favicon-32x32.png create mode 100644 docs/src/assets/images/favicons/favicon.ico create mode 100644 docs/src/assets/images/favicons/mstile-144x144.png create mode 100644 docs/src/assets/images/favicons/mstile-150x150.png create mode 100644 docs/src/assets/images/favicons/mstile-310x150.png create mode 100644 docs/src/assets/images/favicons/mstile-310x310.png create mode 100644 docs/src/assets/images/favicons/mstile-70x70.png create mode 100644 docs/src/assets/images/favicons/safari-pinned-tab.svg create mode 100644 docs/src/assets/images/favicons/site.webmanifest create mode 100644 docs/src/assets/images/itcss.svg create mode 100644 docs/src/assets/images/monte-carlo.png create mode 100644 docs/src/assets/images/payette.png create mode 100644 docs/src/assets/images/play.svg create mode 100644 docs/src/assets/images/star.svg create mode 100644 docs/src/assets/images/terminal.svg create mode 100644 docs/src/assets/images/twig.svg create mode 100644 docs/src/assets/images/xfive.png create mode 100644 docs/src/scripts/app.js create mode 100644 docs/src/scripts/helpers/inert.js create mode 100644 docs/src/scripts/modules/greeting.js create mode 100644 docs/src/scripts/modules/onPageNavigation.js create mode 100644 docs/src/scripts/modules/sidebar.js create mode 100644 docs/src/styles/components/_block.scss create mode 100644 docs/src/styles/components/_btn.scss create mode 100644 docs/src/styles/components/_footer.scss create mode 100644 docs/src/styles/components/_header.scss create mode 100644 docs/src/styles/components/_hero.scss create mode 100644 docs/src/styles/components/_highlight.scss create mode 100644 docs/src/styles/components/_logo.scss create mode 100644 docs/src/styles/components/_page-nav.scss create mode 100644 docs/src/styles/components/_post.scss create mode 100644 docs/src/styles/components/_sidebar.scss create mode 100644 docs/src/styles/components/_slider.scss create mode 100644 docs/src/styles/components/_why-chisel.scss rename {generators/app/templates/styles/itcss => docs/src/styles}/elements/_blockquote.scss (92%) create mode 100644 docs/src/styles/elements/_code.scss rename {generators/app/templates/styles/itcss => docs/src/styles}/elements/_headings.scss (100%) rename {generators/app/templates/styles/itcss => docs/src/styles}/elements/_hr.scss (100%) create mode 100644 docs/src/styles/elements/_html-body.scss create mode 100644 docs/src/styles/elements/_images.scss create mode 100644 docs/src/styles/elements/_links.scss rename {generators/app/templates/styles/itcss => docs/src/styles}/elements/_lists.scss (100%) create mode 100644 docs/src/styles/elements/_main.scss rename {generators/app/templates/styles/itcss => docs/src/styles}/elements/_tables.scss (100%) rename {generators/app/templates/styles/itcss => docs/src/styles}/generic/_box-sizing.scss (93%) create mode 100644 docs/src/styles/generic/_font-face.scss rename {generators/app/templates/styles/itcss => docs/src/styles}/generic/_normalize.scss (76%) create mode 100644 docs/src/styles/generic/_reset.scss create mode 100644 docs/src/styles/generic/_shared.scss rename {generators/app/templates/styles/itcss => docs/src/styles}/main.scss (73%) create mode 100644 docs/src/styles/objects/_animations.scss create mode 100644 docs/src/styles/objects/_container.scss create mode 100644 docs/src/styles/objects/_content.scss create mode 100644 docs/src/styles/objects/_icons.scss rename {generators/app/templates/styles/itcss => docs/src/styles}/objects/_layout.scss (100%) rename {generators/app/templates/styles/itcss => docs/src/styles}/objects/_list-bare.scss (100%) rename {generators/app/templates/styles/itcss => docs/src/styles}/objects/_list-inline.scss (100%) create mode 100644 docs/src/styles/objects/_media.scss rename {generators/app/templates/styles/itcss => docs/src/styles}/objects/_table.scss (100%) create mode 100644 docs/src/styles/settings/_global.scss rename {generators/app/templates/styles/itcss => docs/src/styles}/tools/_breakpoints.scss (87%) rename {generators/app/templates/styles/itcss => docs/src/styles}/tools/_clearfix.scss (63%) rename {generators/app/templates/styles/itcss => docs/src/styles}/tools/_hidden.scss (70%) rename {generators/app/templates/styles/itcss => docs/src/styles}/utilities/_align.scss (100%) rename {generators/app/templates/styles/itcss => docs/src/styles}/utilities/_clearfix.scss (100%) rename {generators/app/templates/styles/itcss => docs/src/styles}/utilities/_hide.scss (100%) create mode 100644 docs/src/styles/utilities/_spacing.scss rename {generators/app/templates/scripts => docs/src/styles}/vendor/.keep (100%) create mode 100644 docs/src/styles/vendor/_highlightjs.scss create mode 100644 docs/src/templates/components/block.twig create mode 100644 docs/src/templates/components/footer.twig create mode 100644 docs/src/templates/components/header.twig create mode 100644 docs/src/templates/components/hero.twig create mode 100644 docs/src/templates/components/logo.twig create mode 100644 docs/src/templates/components/page-nav.twig create mode 100644 docs/src/templates/components/page-sidebar.twig create mode 100644 docs/src/templates/components/sidebar.twig create mode 100644 docs/src/templates/components/slider.twig create mode 100644 docs/src/templates/components/why-chisel.twig create mode 100644 docs/src/templates/layouts/base.twig create mode 100644 docs/src/templates/layouts/page.twig create mode 100644 docs/src/templates/post.twig create mode 100644 docs/src/templates/template-home.twig create mode 100644 docs/stylelint.config.js delete mode 100644 generators/app/index.js delete mode 100644 generators/app/templates/.babelrc delete mode 100644 generators/app/templates/.browserslistrc delete mode 100644 generators/app/templates/.eslintignore delete mode 100644 generators/app/templates/.eslintrc delete mode 100644 generators/app/templates/.prettierignore delete mode 100644 generators/app/templates/.prettierrc delete mode 100644 generators/app/templates/.stylelintignore delete mode 100644 generators/app/templates/.stylelintrc.yml delete mode 100644 generators/app/templates/LICENSE delete mode 100644 generators/app/templates/README.md delete mode 100644 generators/app/templates/gitignore delete mode 100644 generators/app/templates/gulp/NameAllModulesPlugin.js delete mode 100644 generators/app/templates/gulp/helpers.js delete mode 100644 generators/app/templates/gulp/prepareConfig.js delete mode 100644 generators/app/templates/gulp/tasks/assets.js delete mode 100644 generators/app/templates/gulp/tasks/build.js delete mode 100644 generators/app/templates/gulp/tasks/lint.js delete mode 100644 generators/app/templates/gulp/tasks/report.js delete mode 100644 generators/app/templates/gulp/tasks/scripts.js delete mode 100644 generators/app/templates/gulp/tasks/serve.js delete mode 100644 generators/app/templates/gulp/tasks/styles.js delete mode 100644 generators/app/templates/gulp/tasks/templates.js delete mode 100644 generators/app/templates/gulp/tasks/vendor.js delete mode 100644 generators/app/templates/gulp/templatesFunctions.js delete mode 100644 generators/app/templates/gulpfile.js delete mode 100644 generators/app/templates/index/project-index.html delete mode 100644 generators/app/templates/package.json delete mode 100644 generators/app/templates/scripts/vendor.json delete mode 100644 generators/app/templates/templates/twig/components/footer.twig delete mode 100644 generators/app/templates/templates/twig/layouts/base.twig delete mode 100644 generators/app/templates/webpack.chisel.config.js delete mode 100644 generators/app/utils/generator.js delete mode 100644 generators/app/utils/index.js delete mode 100644 generators/app/utils/prompts.js delete mode 100644 generators/page/index.js delete mode 100644 generators/wp-config/index.js delete mode 100644 generators/wp-plugins/index.js delete mode 100644 generators/wp-plugins/plugins.json delete mode 100644 generators/wp/index.js delete mode 100755 generators/wp/templates/chisel-starter-theme/gitignore delete mode 100644 generators/wp/templates/gitignore delete mode 100644 generators/wpcli/index.js delete mode 100644 helpers/index.js delete mode 100644 helpers/wpCli.js create mode 100644 lerna.json create mode 100644 packages/babel-preset-chisel/CHANGELOG.md create mode 100644 packages/babel-preset-chisel/README.md create mode 100644 packages/babel-preset-chisel/index.js create mode 100644 packages/babel-preset-chisel/package.json create mode 100644 packages/babel-preset-chisel/preact.js create mode 100644 packages/babel-preset-chisel/react.js create mode 100644 packages/chisel-plugin-code-style/CHANGELOG.md create mode 100644 packages/chisel-plugin-code-style/README.md create mode 100644 packages/chisel-plugin-code-style/eslint-import-resolver-webpack.js create mode 100644 packages/chisel-plugin-code-style/index.js create mode 100644 packages/chisel-plugin-code-style/package.json create mode 100644 packages/chisel-plugin-static-frontend/CHANGELOG.md create mode 100644 packages/chisel-plugin-static-frontend/README.md create mode 100644 packages/chisel-plugin-static-frontend/lib/Post.js create mode 100644 packages/chisel-plugin-static-frontend/lib/commands/add-page.js create mode 100644 packages/chisel-plugin-static-frontend/lib/commands/dev.js create mode 100644 packages/chisel-plugin-static-frontend/lib/content-loader.js create mode 100644 packages/chisel-plugin-static-frontend/lib/content-raw-loader.js create mode 100644 packages/chisel-plugin-static-frontend/lib/get-posts.js create mode 100644 packages/chisel-plugin-static-frontend/lib/htmlhint.js create mode 100644 packages/chisel-plugin-static-frontend/lib/index.js create mode 100644 packages/chisel-plugin-static-frontend/lib/inject-revisioned.js create mode 100644 packages/chisel-plugin-static-frontend/lib/twig-loader.js create mode 100644 packages/chisel-plugin-static-frontend/package.json create mode 100644 packages/chisel-plugin-wordpress/.gitignore rename generators/app/templates/styles/vendor/.keep => packages/chisel-plugin-wordpress/.npmignore (100%) create mode 100644 packages/chisel-plugin-wordpress/CHANGELOG.md create mode 100644 packages/chisel-plugin-wordpress/README.md create mode 100644 packages/chisel-plugin-wordpress/commands/add-page.js create mode 100644 packages/chisel-plugin-wordpress/commands/dev.js create mode 100644 packages/chisel-plugin-wordpress/commands/wp-config.js create mode 100644 packages/chisel-plugin-wordpress/commands/wp.js create mode 100644 packages/chisel-plugin-wordpress/fetch-wp-cli.js create mode 100644 packages/chisel-plugin-wordpress/index.js create mode 100644 packages/chisel-plugin-wordpress/package.json rename generators/wp-config/templates/dev-vhost.conf => packages/chisel-plugin-wordpress/template/dev-vhost.chisel-tpl.conf (100%) rename generators/wp-config/templates/wp-config-local.php => packages/chisel-plugin-wordpress/template/wp/wp-config-local.chisel-tpl.php (83%) create mode 100644 packages/chisel-scripts/CHANGELOG.md create mode 100644 packages/chisel-scripts/README.md create mode 100644 packages/chisel-scripts/bin/chisel-scripts.js create mode 100644 packages/chisel-scripts/lib/PluginAPI.js create mode 100644 packages/chisel-scripts/lib/Service.js create mode 100644 packages/chisel-scripts/lib/chisel.config.base.js create mode 100644 packages/chisel-scripts/lib/commands/build/formatStats.js create mode 100644 packages/chisel-scripts/lib/commands/build/index.js create mode 100644 packages/chisel-scripts/lib/commands/inspect.js create mode 100644 packages/chisel-scripts/lib/config/base.js create mode 100644 packages/chisel-scripts/lib/config/css.js create mode 100644 packages/chisel-scripts/lib/config/js.js create mode 100644 packages/chisel-scripts/lib/generate-and-serialize-config.js create mode 100644 packages/chisel-scripts/lib/webpack-loaders/sass-glob-loader.js create mode 100644 packages/chisel-scripts/lib/webpack-plugins/DynamicPublicPath.js create mode 100644 packages/chisel-scripts/lib/webpack-plugins/OptimizeCssnanoPlugin.js create mode 100644 packages/chisel-scripts/package.json create mode 100644 packages/chisel-scripts/webpack.config-sync.js create mode 100644 packages/chisel-scripts/webpack.config.js create mode 100644 packages/chisel-shared-utils/CHANGELOG.md create mode 100644 packages/chisel-shared-utils/README.md create mode 100644 packages/chisel-shared-utils/index.js create mode 100644 packages/chisel-shared-utils/lib/copy.js create mode 100644 packages/chisel-shared-utils/lib/package-manager.js create mode 100644 packages/chisel-shared-utils/lib/run.js create mode 100644 packages/chisel-shared-utils/package.json create mode 100644 packages/eslint-config-chisel/CHANGELOG.md create mode 100644 packages/eslint-config-chisel/README.md create mode 100644 packages/eslint-config-chisel/index.js create mode 100644 packages/eslint-config-chisel/package.json create mode 100644 packages/eslint-config-chisel/react.js create mode 100644 packages/generator-chisel/.gitignore create mode 100644 packages/generator-chisel/CHANGELOG.md create mode 100644 packages/generator-chisel/bin/chisel.js create mode 100644 packages/generator-chisel/lib/commands/create/Creator.js create mode 100644 packages/generator-chisel/lib/commands/create/CreatorPluginAPI.js create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/index.js create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/.browserslistrc.chisel-tpl rename {generators/app/templates => packages/generator-chisel/lib/commands/create/creators/app/template}/.editorconfig (100%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/.eslintignore create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/.eslintrc.js rename {generators/app/templates => packages/generator-chisel/lib/commands/create/creators/app/template}/.gitattributes (100%) rename .npmignore => packages/generator-chisel/lib/commands/create/creators/app/template/.gitignore.chisel-tpl (88%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/.prettierignore create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/.stylelintignore create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/README.chisel-tpl.md create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/babel.config.js create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/chisel.config.chisel-tpl.js create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/package.chisel-tpl.json create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/postcss.config.js create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/prettier.config.js create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/assets/fonts/.keep create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/assets/images/.keep rename generators/app/templates/scripts/webpack/app.js => packages/generator-chisel/lib/commands/create/creators/app/template/src/scripts/app.chisel-tpl.js (54%) rename generators/app/templates/scripts/webpack/modules/greeting.js => packages/generator-chisel/lib/commands/create/creators/app/template/src/scripts/modules/greeting.chisel-tpl.js (65%) rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/components/_btn.scss (100%) rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/components/_footer.scss (100%) rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/components/_header.scss (100%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_blockquote.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_headings.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_hr.scss rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/elements/_html.scss (100%) rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/elements/_images.scss (100%) rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/elements/_links.scss (100%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_lists.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_tables.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_box-sizing.scss rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/generic/_font-face.scss (100%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_normalize.scss rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/generic/_reset.scss (100%) rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/generic/_shared.scss (100%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/main.chisel-tpl.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_layout.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_list-bare.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_list-inline.scss rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/objects/_media.scss (100%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_table.scss rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/objects/_wrapper.scss (100%) rename {generators/app/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/app/template/src/styles}/settings/_global.scss (88%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_breakpoints.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_clearfix.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_hidden.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_align.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_clearfix.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_hide.scss create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/vendor/.keep create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/components/footer.chisel-tpl.twig rename generators/app/templates/templates/twig/components/header.twig => packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/components/header.chisel-tpl.twig (50%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/layouts/base.chisel-tpl.twig rename {generators/app/templates/templates/twig => packages/generator-chisel/lib/commands/create/creators/app/template/src/templates}/layouts/page.twig (75%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/app/template/stylelint.config.js rename generators/app/templates/index/css/main.css => packages/generator-chisel/lib/commands/create/creators/fe/index-styles.css (81%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/fe/index.js create mode 100644 packages/generator-chisel/lib/commands/create/creators/fe/template-index/index.chisel-tpl.html create mode 100644 packages/generator-chisel/lib/commands/create/creators/fe/template/.htmlhintrc create mode 100644 packages/generator-chisel/lib/commands/create/creators/fe/template/public/.keep create mode 100644 packages/generator-chisel/lib/commands/create/creators/init.js create mode 100644 packages/generator-chisel/lib/commands/create/creators/wp-plugins/index.js create mode 100644 packages/generator-chisel/lib/commands/create/creators/wp-plugins/plugins.json create mode 100644 packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/.gitignore.chisel-tpl rename generators/wp/templates/chisel-starter-theme/404.php => packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/404.chisel-tpl.php (83%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Extensions/ChiselExtension.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Extensions/ChiselTwig.php (61%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Extensions/DataType.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Extensions/Theme.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Extensions/Twig.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Helpers.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Image.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Media.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Performance.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Post.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Security.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Settings.php (54%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/Chisel/Site.php (100%) rename generators/wp/templates/chisel-starter-theme/README.md => packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/README.chisel-tpl.md (78%) rename generators/wp/templates/chisel-starter-theme/archive.php => packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/archive.chisel-tpl.php (97%) rename generators/wp/templates/chisel-starter-theme/author.php => packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/author.chisel-tpl.php (93%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/footer.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/functions.php (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/header.php (100%) rename generators/wp/templates/chisel-starter-theme/index.php => packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/index.chisel-tpl.php (95%) rename generators/wp/templates/chisel-starter-theme/page.php => packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/page.chisel-tpl.php (95%) rename {generators/wp/templates/images => packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme}/screenshot.png (100%) mode change 100755 => 100644 rename generators/wp/templates/chisel-starter-theme/search.php => packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/search.chisel-tpl.php (90%) rename generators/wp/templates/chisel-starter-theme/single.php => packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/single.chisel-tpl.php (93%) rename generators/wp/templates/chisel-starter-theme/style.css => packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/style.chisel-tpl.css (50%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/templates/404.twig (100%) mode change 100755 => 100644 rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/templates/author.twig (100%) mode change 100755 => 100644 rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/templates/components/comment.twig (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/templates/components/main-nav.twig (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/templates/components/tease-post.twig (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/templates/components/tease.twig (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/templates/index.twig (100%) mode change 100755 => 100644 rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/templates/page-plugin.twig (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/templates/page.twig (100%) mode change 100755 => 100644 rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp}/chisel-starter-theme/templates/single.twig (100%) mode change 100755 => 100644 create mode 100644 packages/generator-chisel/lib/commands/create/creators/wp/index.js rename {generators/wp/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles}/components/_comment-form.scss (100%) rename {generators/wp/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles}/components/_comment.scss (100%) rename {generators/wp/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles}/components/_main-nav.scss (96%) rename {generators/wp/templates/styles/itcss => packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles}/components/_post.scss (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp/template}/wp-cli.yml (100%) create mode 100644 packages/generator-chisel/lib/commands/create/creators/wp/template/wp/.gitignore.chisel-tpl rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp/template/wp}/.htaccess (100%) rename {generators/wp/templates => packages/generator-chisel/lib/commands/create/creators/wp/template/wp}/wp-config.php (100%) create mode 100644 packages/generator-chisel/lib/commands/create/index.js create mode 100644 packages/generator-chisel/lib/commands/create/packages-versions.js create mode 100644 packages/generator-chisel/lib/commands/create/priorities.js create mode 100644 packages/generator-chisel/lib/utils/sort-package.js create mode 100644 packages/generator-chisel/package.json create mode 100644 packages/stylelint-config-chisel/CHANGELOG.md create mode 100644 packages/stylelint-config-chisel/README.md create mode 100644 packages/stylelint-config-chisel/index.js create mode 100644 packages/stylelint-config-chisel/package.json create mode 100644 prettier.config.js create mode 100644 scripts/index-versions.js create mode 100644 scripts/prepare-links.js create mode 100644 scripts/testGlobalSetup.js create mode 100644 scripts/testGlobalTeardown.js create mode 100644 scripts/testPuppeteerEnv.js create mode 100644 scripts/testSetup.js create mode 100644 scripts/testSetupAfterEnv.js delete mode 100644 test/.eslintrc.yml delete mode 100644 test/app/defaults.shared.js delete mode 100644 test/app/defaults.test.js delete mode 100644 test/app/jquery.test.js delete mode 100644 test/app/jqueryVendor.test.js delete mode 100644 test/app/wordpress.test.js delete mode 100644 test/generate_package.js delete mode 100644 test/page/defaults.test.js delete mode 100644 test/page/wp.test.js delete mode 100644 test/run-tests.sh delete mode 100644 test/wp-config/defaults.test.js delete mode 100644 test/wp-plugins/defaults.test.js delete mode 100644 test/wp/defaults.test.js delete mode 100644 test/wp/srcinwp.test.js delete mode 100644 test/wp/wpcli.test.js delete mode 100644 test/wpcli/defaults.test.js diff --git a/.eslintignore b/.eslintignore index 5b4ea5fa..337b1672 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,4 @@ +!.eslintrc.js node_modules -generators/app/templates -test/generated_project +/packages/generator-chisel/lib/commands/create/creators/*/template +/test-projects diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..1ed5761d --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,53 @@ +module.exports = { + root: true, + + extends: 'chisel', + + env: { + node: true, + }, + + rules: { + 'global-require': 'off', + 'import/no-dynamic-require': 'off', + 'import/no-extraneous-dependencies': ['error', { devDependencies: true }], + 'no-await-in-loop': 'off', + 'no-param-reassign': 'off', + 'no-console': 'off', + 'no-underscore-dangle': 'off', + + // Airbnb except for of + 'no-restricted-syntax': [ + 'error', + { + selector: 'ForInStatement', + message: + 'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.', + }, + { + selector: 'LabeledStatement', + message: + 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.', + }, + { + selector: 'WithStatement', + message: + '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.', + }, + ], + }, + + overrides: [ + { + files: ['./scripts/testSetup*.js', '**/__tests__/**/*.js'], + + env: { + jest: true, + }, + + rules: { + // 'node/no-extraneous-require': 'off', + }, + }, + ], +}; diff --git a/.eslintrc.yml b/.eslintrc.yml deleted file mode 100644 index 8d985e2a..00000000 --- a/.eslintrc.yml +++ /dev/null @@ -1,30 +0,0 @@ -rules: - indent: ["warn", 2] - no-cond-assign: "warn" - no-empty: ["warn", {allowEmptyCatch: true}] - no-extra-semi: "warn" - no-irregular-whitespace: "warn" - no-unreachable: "warn" - curly: "warn" - no-eval: "warn" - no-floating-decimal: "warn" - no-global-assign: "warn" - no-magic-numbers: ["warn", {ignore: [-1, 0, 1]}] - no-octal: "warn" - no-redeclare: "warn" - no-unused-vars: "warn" - block-spacing: "warn" - brace-style: "warn" - comma-style: ["warn", "last"] - consistent-this: ["warn", "that"] - eol-last: "warn" - func-call-spacing: "warn" - no-trailing-spaces: "warn" - no-undef: "error" - -env: - node: true - -parserOptions: - sourceType: "module" - ecmaVersion: 6 diff --git a/.gitignore b/.gitignore index e752c8d1..4a7aa2d6 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,7 @@ npm-debug.log .rvmrc .vagrant -helpers/wp-cli.phar +# Chisel +/test-projects +/.jest-projects +/.changelog diff --git a/.grenrc.js b/.grenrc.js deleted file mode 100644 index 87f2fefb..00000000 --- a/.grenrc.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - "override": true, - "username": "xfiveco", - "ignoreIssuesWith": [ - "wontfix", - "can't replicate", - "chisel ignore", - "invalid", - "duplicate", - "question" - ], - "template": { - "issue": "- [{{text}}]({{url}}) {{name}}" - }, - "groupBy": { - "Enhancements:": ["enhancement"], - "Fixes:": ["bug"], - "Documentation:": ["documentation"] - } -}; diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..48082f72 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +12 diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 544138be..00000000 --- a/.prettierrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "singleQuote": true -} diff --git a/.travis.yml b/.travis.yml index 875ccf65..c2056717 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,25 @@ +dist: bionic language: node_js node_js: - - "10" - - "8" -addons: - apt: - packages: - - php7.0-cli - - php7.0-mysql + - 10.14.2 + - 10 + - 12 + - 14 +cache: + yarn: true +# addons: +# apt: +# packages: +# - php7.2-cli +# - php7.2-mysql services: - mysql -before_install: - - npm install -g yo - - wget -P /tmp https://github.com/wp-premium/advanced-custom-fields-pro/archive/master.zip - - wget -P /tmp https://github.com/wp-premium/gravityforms/archive/master.zip - - wget -P /tmp https://github.com/wp-sync-db/wp-sync-db/archive/master.zip - - wget -P /tmp https://github.com/wp-sync-db/wp-sync-db-media-files/archive/master.zip -matrix: - include: - - node_js: "8" - env: TEST_VERSIONS=generator - - node_js: "8" - env: TEST_VERSIONS=generated_project - allow_failures: - - env: TEST_VERSIONS=generator - - env: TEST_VERSIONS=generated_project + +before_script: + - yarn prepare-links + - cd packages/chisel-plugin-wordpress; yarn prepare; cd -; + - export FORCE_COLOR=3 + +after_script: + - npm install -g codecov + - codecov diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f295ecc..0a9bc749 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog + + ## v0.16.1 (03/01/2020) #### Enhancements: @@ -87,7 +89,7 @@ #### Fixes: -- [#350](https://github.com/xfiveco/generator-chisel/issues/350) Set more specific paths for dist and vendor folders in .gitignore +- [#350](https://github.com/xfiveco/generator-chisel/issues/350) Set more specific paths for dist and vendor folders in .gitignore --- @@ -140,6 +142,7 @@ --- ## v0.9.0 (25/10/2017) + - [**enhancement**] When running Chisel check if it is up to date [#298](https://github.com/xfiveco/generator-chisel/issues/298) - [**enhancement**] Update link in the readme in generated project to link to specific version [#297](https://github.com/xfiveco/generator-chisel/issues/297) - [**enhancement**] Save Chisel version used to generate project in .yo-rc.json [#296](https://github.com/xfiveco/generator-chisel/issues/296) @@ -150,7 +153,7 @@ - [**enhancement**] Add Media class to Chisel namespace in WP for various media adjustments [#265](https://github.com/xfiveco/generator-chisel/issues/265) - [**enhancement**] Switch to yeoman-generator 2.0 [#262](https://github.com/xfiveco/generator-chisel/issues/262) - [**enhancement**] Change .dev to .test [#261](https://github.com/xfiveco/generator-chisel/issues/261) -- [**enhancement**] Remove get_ from twigs wherever possible [#257](https://github.com/xfiveco/generator-chisel/issues/257) +- [**enhancement**] Remove get\_ from twigs wherever possible [#257](https://github.com/xfiveco/generator-chisel/issues/257) - [**enhancement**] Add doctoc as devDependency and add script to generate TOC in README.md [#256](https://github.com/xfiveco/generator-chisel/issues/256) - [**documentation**] Documented assetPath function [#242](https://github.com/xfiveco/generator-chisel/issues/242) - [**enhancement**] Provide functionality for web fonts loading [#233](https://github.com/xfiveco/generator-chisel/issues/233) @@ -159,6 +162,7 @@ --- ## v0.8.0 (21/09/2017) + - Adding option to select how much ITCSS styling should be included (#182) - Adding JavaScript vendor concatenation (#185) - Using native font stack (#232) @@ -170,13 +174,17 @@ - Switching to the original gulp-twig package (#253) - Moving scripts to head (#258) - Adding unminified versions of styles and scripts to dist (#259) + --- ## v0.7.1 (27/07/2017) + - temporary reverting gulp-stylelint to previous version, fixes #229 (#230) + --- ## v0.7.0 (21/07/2017) + - Added support for local `.yo-rc.json` (#204) - Chisel starter theme improvements - reorganizing things to the Chisel namespace classes for easier updates and adding new functionality, see [Developing theme functionality](https://github.com/xfiveco/generator-chisel#developing-theme-functionality) (#206) - Replacing deprecated `selector-no-id` with `selector-max-id` in stylelint config (#217) @@ -184,9 +192,11 @@ - Updating dependencies (#223) - README updates (#226) - Added wiki page [Setting up WordPress projects at Getfives](https://github.com/xfiveco/generator-chisel/wiki/Setting-up-WordPress-projects-at-Getfives) + --- ## v0.6.4 (06/06/2017) + - Select ES6 by default during project scaffolding (#188) - Use .babelrc for configuring babelify (#190) - Changed Timber core classes names to current convention (#197) @@ -200,22 +210,27 @@ --- ## v0.6.3 (15/05/2017) + - increasing serve performance (#176) - improve watch mode performance (#181) - allowing to choose port for connecting to DB during project setup (#180) - adding `vendor` directory to `scripts` and `styles`, excluding them from linting (#178) - fixing that project folder with number in name didn't match the project slug (#184) + --- ## v0.6.2 (06/04/2017) + - use npm scripts instead of calling gulp directly (#169) - add className function (#171) - add ignore for VS editor files and local "dist (#170) - new Chisel tutorial - [Easy-to-use Code Blocks in WordPress](https://www.xfive.co/blog/easy-use-code-blocks-wordpress/) + --- ## v0.6.1 (29/03/2017) -- Stylelint adjustments (#154) + +- Stylelint adjustments (#154) - Use yarn as install method if available (#159) - Disable BrowserSync synchronization of scroll and clicks - Add autoprefixer to watch @@ -227,6 +242,7 @@ --- ## v0.6.0 (15/02/2017) + - ITCSS improvements and automatic style guide generation - added new elements, objects and sample components - default styles for WP projects - editor content, posts, comments, main navigation, etc. allows quicker prototyping themes - removed compilation of prefixed templates (eg. _template.twig_), now only top level templates compile to pages @@ -237,15 +253,16 @@ - fixing broken WP screenshot - migrating to Yeoman 1.0 - resolving styling deprecation warnings -- [An MVC-like WordPress Development with ACF and Timber](https://www.xfive.co/blog/mvc-like-wordpress-development-acf-timber/) - a blog post showing a sample project which uses Chisel for development +- [An MVC-like WordPress Development with ACF and Timber](https://www.xfive.co/blog/mvc-like-wordpress-development-acf-timber/) - a blog post showing a sample project which uses Chisel for development --- ## v0.5.1 (24/01/2017) + - Introduced revisionedPath and change behaviour of assetPath (#127) - Used hash of project name slug as table name prefix in WP projects -- Added no-undef rule to ESlint -- Support browser globar variables +- Added no-undef rule to ESlint +- Support browser globar variables - Remove template related things on WordPress projects - Allow manual modification of Browsersync proxy URL - Updating docs with explanation how to use jQuery plugins with Browserify @@ -253,16 +270,18 @@ --- ## v0.5.0 (28/11/2016) + - Replacing Composer with WP-CLI (it’s a part of Chisel so no additional install is necessary) - automatic WordPress setup and installation from command line - pages generator works in WordPress projects too - default project name based on the project directory name - default author set to Xfive -- clearfix extend replaced with mixin +- clearfix extend replaced with mixin --- ## v0.4.0 (11/11/2016) + - syncing front-end and WordPress Twig templates (#97) - Chisel starter theme consistency improvements (indentation, automatically generated theme name and author, correct package information) - added project type question @@ -276,43 +295,52 @@ --- ## v0.3.1 (02/11/2016) -This is a patch release. + +This is a patch release. + - Remove `.git` directory from theme folder (#96) --- ## v0.3.0: WordPress support (02/11/2016) + Notable changes and features: + - WP support (#81, #80, #74, #70, #59), thanks @jakub300 and welcome to the team! -- Loosening ESLint rules enhancement (#78) +- Loosening ESLint rules enhancement (#78) - Base our Stylelint config on external standard enhancement (#47) - Tons of bugfixes in development workflow --- ## v0.2.2 (19/09/2016) + - HTML validation with [gulp-htmlhint](https://github.com/bezoerb/gulp-htmlhint) -- Watchify errors handling, see #34 +- Watchify errors handling, see #34 --- ## v0.2.1 (24/08/2016) + - making the project index font size smaller --- ## v0.2.0 (24/08/2016) + - new project index design - excluding private (prefixed with \_) templates from rendering to HTML, see #32 --- ## v0.1.6 (17/08/2016) -- fixing problems with forcing Unix newlines on binary files, eg. font files or PNGs, see #30 + +- fixing problems with forcing Unix newlines on binary files, eg. font files or PNGs, see #30 --- ## v0.1.5 (12/08/2016) + - Fixes #19 - adding stylelint - CSS linting task and configuration - Fixes #29 - adding Twig templates base path - improving editorconfig template @@ -320,4 +348,5 @@ Notable changes and features: --- ## v0.1.4 (08/08/2016) + - listing page sub generator in `package.json` diff --git a/__tests__/fe/__snapshots__/add-page.js.snap b/__tests__/fe/__snapshots__/add-page.js.snap new file mode 100644 index 00000000..3cd2fe37 --- /dev/null +++ b/__tests__/fe/__snapshots__/add-page.js.snap @@ -0,0 +1,1337 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FE add-page Adds pages in default setup 1`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page Adds pages in default setup 2`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ + +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page Adds pages in default setup 3`] = ` +Array [ + "dist/page1.html", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", + "src/templates/page1.twig", +] +`; + +exports[`FE add-page Adds pages in default setup 4`] = ` +"{% extends \\"layouts/base.twig\\" %} +{% set pageName = 'Page 1' %} + +{% block content %} +

Hello

+{% endblock %} + + +" +`; + +exports[`FE add-page Adds pages in default setup 5`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ + +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page Adds pages in default setup 6`] = ` +Array [ + "dist/page1.html", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/second-page.html", + "dist/some-other-page.html", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", + "dist/third-page.html", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", + "src/templates/page1.twig", + "src/templates/second-page.twig", + "src/templates/some-other-page.twig", + "src/templates/third-page.twig", +] +`; + +exports[`FE add-page Adds pages in default setup 7`] = ` +Array [ + Array [], + Array [ + "Page Page 1 created!", + ], + Array [ + "File: --PROJECT-PATH--/src/templates/page1.twig", + ], + Array [], + Array [], + Array [ + "Page Some Other Page created!", + ], + Array [ + "File: --PROJECT-PATH--/src/templates/some-other-page.twig", + ], + Array [], + Array [ + "Page Second Page created!", + ], + Array [ + "File: --PROJECT-PATH--/src/templates/second-page.twig", + ], + Array [], + Array [ + "Page Third Page created!", + ], + Array [ + "File: --PROJECT-PATH--/src/templates/third-page.twig", + ], + Array [], +] +`; + +exports[`FE add-page Adds pages with the same name 1`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ + +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page Adds pages with the same name 2`] = ` +Array [ + "dist/page1-1.html", + "dist/page1.html", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", + "src/templates/page1-1.twig", + "src/templates/page1.twig", +] +`; + +exports[`FE add-page Doesn't build with --no-build 1`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ + +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page Doesn't build with --no-build 2`] = ` +Array [ + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", + "src/templates/page-no-build.twig", +] +`; + +exports[`FE add-page Fails when adding nested page in default setup 1`] = `"Nested pages are supported only when using content directory"`; + +exports[`FE add-page Fails when adding nested page in default setup 2`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page Fails when adding nested page in default setup 3`] = ` +Array [ + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/fine.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", +] +`; + +exports[`FE add-page Fails when no page is passed 1`] = `"Process.exit: 1"`; + +exports[`FE add-page Fails when no page is passed 2`] = ` +Array [ + Array [ + "error: missing required argument 'page'", + ], +] +`; + +exports[`FE add-page Fails when no page is passed 3`] = ` +Array [ + Array [ + 1, + ], +] +`; + +exports[`FE add-page Fails when no page is passed 4`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page Fails when no page is passed 5`] = ` +Array [ + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", +] +`; + +exports[`FE add-page When using content add pages there and supports nested pages 1`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ + +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page When using content add pages there and supports nested pages 2`] = ` +Array [ + "content/hello.twig", + "content/page1.twig", + "dist/hello.html", + "dist/page1.html", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", +] +`; + +exports[`FE add-page When using content add pages there and supports nested pages 3`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ + +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page When using content add pages there and supports nested pages 4`] = ` +Array [ + "content/deeply/nested/some-other-page.twig", + "content/fine.twig", + "content/hello.twig", + "content/nested/interesting-page.twig", + "content/page1.twig", + "dist/deeply/nested/some-other-page.html", + "dist/fine.html", + "dist/hello.html", + "dist/nested/interesting-page.html", + "dist/page1.html", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", +] +`; + +exports[`FE add-page When using content and markdown adds pages and builds them 1`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ + +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page When using content and markdown adds pages and builds them 2`] = ` +Array [ + "content/hello.twig", + "content/page1.md", + "dist/hello.html", + "dist/page1.html", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", + "src/templates/post.twig", +] +`; + +exports[`FE add-page When using content and markdown adds pages and builds them 3`] = ` +" + + + + Project Index - FrontEnd + + + + + + + + +
+

FrontEnd

+

Project index

+ +
+
+

+ This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

+

Pages

+
+ To add more pages run: +
npm run add-page 'My Awesome Page'
+ or +
yarn add-page 'My Awesome Page'
+
+ + +
+
+ + +
+
+

Documentation

+

+ Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

+

+ For detailed information how Chisel works, please check out + www.getchisel.co. +

+

+ If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

+
+
+ +
+ + + +" +`; + +exports[`FE add-page When using content and markdown adds pages and builds them 4`] = ` +Array [ + "content/deeply/nested/some-other-page.md", + "content/fine.md", + "content/hello.twig", + "content/nested/interesting-page.md", + "content/page1.md", + "dist/deeply/nested/some-other-page.html", + "dist/fine.html", + "dist/hello.html", + "dist/nested/interesting-page.html", + "dist/page1.html", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", + "src/templates/post.twig", +] +`; + +exports[`FE add-page When using content and markdown adds pages and builds them 5`] = ` +" + + + + + Page 1 - FrontEnd + + + + + + + +
+ FrontEnd +
+
+

Hello Page 1

+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed id nulla bibendum, volutpat metus eu, pretium mi. In lobortis lobortis rutrum. Nulla eu sem nec enim tincidunt fringilla. Nunc mollis sed metus eget aliquet. In venenatis pharetra cursus. Nunc ultrices laoreet diam, at dictum risus viverra nec. Donec egestas, arcu a hendrerit ornare, nunc augue malesuada eros, nec dignissim nulla massa a enim. Phasellus porta venenatis felis, vitae congue libero pellentesque at. Sed neque sapien, faucibus vel pharetra eu, aliquet eget ipsum. Nulla vel ante enim. Sed arcu ligula, rutrum at mauris molestie, vehicula blandit sapien. Vestibulum tempor dignissim gravida.

+
+
+
+

Copyright © 2020 FrontEnd

+
+ + +" +`; + +exports[`FE add-page When using content and markdown adds pages and builds them 6`] = ` +" + + + + + Some Other Page - FrontEnd + + + + + + + +
+ FrontEnd +
+
+

Hello Some Other Page

+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed id nulla bibendum, volutpat metus eu, pretium mi. In lobortis lobortis rutrum. Nulla eu sem nec enim tincidunt fringilla. Nunc mollis sed metus eget aliquet. In venenatis pharetra cursus. Nunc ultrices laoreet diam, at dictum risus viverra nec. Donec egestas, arcu a hendrerit ornare, nunc augue malesuada eros, nec dignissim nulla massa a enim. Phasellus porta venenatis felis, vitae congue libero pellentesque at. Sed neque sapien, faucibus vel pharetra eu, aliquet eget ipsum. Nulla vel ante enim. Sed arcu ligula, rutrum at mauris molestie, vehicula blandit sapien. Vestibulum tempor dignissim gravida.

+
+
+
+

Copyright © 2020 FrontEnd

+
+ + +" +`; diff --git a/__tests__/fe/__snapshots__/custom-functions.js.snap b/__tests__/fe/__snapshots__/custom-functions.js.snap new file mode 100644 index 00000000..36d62a78 --- /dev/null +++ b/__tests__/fe/__snapshots__/custom-functions.js.snap @@ -0,0 +1,10 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FE Custom Functions Custom functions work 1`] = ` +" +" +`; diff --git a/__tests__/fe/__snapshots__/htmlhint.js.snap b/__tests__/fe/__snapshots__/htmlhint.js.snap new file mode 100644 index 00000000..6d78a4f7 --- /dev/null +++ b/__tests__/fe/__snapshots__/htmlhint.js.snap @@ -0,0 +1,21 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FE HTMLHint HTMLHint errors are logged and fail build 1`] = `"Problems found when checking with HTML Hint"`; + +exports[`FE HTMLHint HTMLHint errors are logged and fail build 2`] = ` +Array [ + Array [], + Array [ + "--PROJECT-PATH--/dist/page-1.html: +L2 |
Hello
 + ^ The attribute name of [ notOkAttribute ] must be in lowercase. (attr-lowercase) + +--PROJECT-PATH--/dist/page-3.html: +L1 |
 + ^ Doctype must be declared first. (doctype-first) +L4 |
  • Line item 2
  •  + ^ The id value [ li1 ] must be unique. (id-unique)", + ], + Array [], +] +`; diff --git a/__tests__/fe/__snapshots__/inspect.js.snap b/__tests__/fe/__snapshots__/inspect.js.snap new file mode 100644 index 00000000..d1e52716 --- /dev/null +++ b/__tests__/fe/__snapshots__/inspect.js.snap @@ -0,0 +1,299 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FE Inspect Generate and inspect FE Project 1`] = ` +Array [ + Array [ + "{ + mode: 'development', + devtool: false, + context: --PROJECT-PATH--', + output: { + path: --PROJECT-PATH--/dist', + filename: '[name].js', + chunkFilename: 'scripts/[id].js' + }, + resolve: { + alias: { + --PROJECT-PATH--/src', + --PROJECT-PATH--/src', + --PROJECT-PATH--/src/scripts', + --PROJECT-PATH--/src/scripts', + assets: --PROJECT-PATH--/src/assets', + --PROJECT-PATH--/src/assets' + }, + modules: [ + 'node_modules', + --PROJECT-PATH--/node_modules' + ] + }, + resolveLoader: { + modules: [ + 'node_modules', + --PROJECT-PATH--/node_modules' + ] + }, + module: { + rules: [ + /* config.module.rule('assets') */ + { + include: [ + --PROJECT-PATH--/src/assets' + ], + oneOf: [ + /* config.module.rule('assets').oneOf('inline') */ + { + resourceQuery: /inline/, + use: [ + /* config.module.rule('assets').oneOf('inline').use('url') */ + { + loader: 'url-loader', + options: { + generator: function () { /* omitted long function */ } + } + } + ] + }, + /* config.module.rule('assets').oneOf('external') */ + { + use: [ + /* config.module.rule('assets').oneOf('external').use('file-loader') */ + { + loader: --PROJECTS-PATH--/node_modules/file-loader/dist/cjs.js', + options: { + name: function () { /* omitted long function */ } + } + } + ] + } + ] + }, + /* config.module.rule('js') */ + { + test: //.m?jsx?$/, + exclude: [ + function () { /* omitted long function */ }, + --PROJECT-PATH--/src/assets' + ], + use: [ + /* config.module.rule('js').use('babel-loader') */ + { + loader: --PROJECTS-PATH--/node_modules/babel-loader/lib/index.js' + } + ] + }, + /* config.module.rule('css') */ + { + test: //.css$/, + exclude: [ + --PROJECT-PATH--/src/assets' + ], + use: [ + /* config.module.rule('css').use('extract-css-loader') */ + { + loader: --PROJECTS-PATH--/node_modules/mini-css-extract-plugin/dist/loader.js', + options: { + hmr: true, + publicPath: '..' + } + }, + /* config.module.rule('css').use('css-loader') */ + { + loader: --PROJECTS-PATH--/node_modules/css-loader/dist/cjs.js', + options: { + sourceMap: true, + 'import': false + } + }, + /* config.module.rule('css').use('postcss-loader') */ + { + loader: --PROJECTS-PATH--/node_modules/postcss-loader/src/index.js', + options: { + sourceMap: true + } + } + ] + }, + /* config.module.rule('scss') */ + { + test: //.scss$/, + exclude: [ + --PROJECT-PATH--/src/assets' + ], + use: [ + /* config.module.rule('scss').use('extract-css-loader') */ + { + loader: --PROJECTS-PATH--/node_modules/mini-css-extract-plugin/dist/loader.js', + options: { + hmr: true, + publicPath: '..' + } + }, + /* config.module.rule('scss').use('css-loader') */ + { + loader: --PROJECTS-PATH--/node_modules/css-loader/dist/cjs.js', + options: { + sourceMap: true, + 'import': false + } + }, + /* config.module.rule('scss').use('postcss-loader') */ + { + loader: --PROJECTS-PATH--/node_modules/postcss-loader/src/index.js', + options: { + sourceMap: true + } + }, + /* config.module.rule('scss').use('sass-loader') */ + { + loader: --PROJECTS-PATH--/node_modules/sass-loader/dist/cjs.js', + options: { + sourceMap: true, + sassOptions: { + indentedSyntax: false, + includePaths: [ + --PROJECT-PATH--/node_modules' + ], + outputStyle: 'expanded' + } + } + }, + /* config.module.rule('scss').use('sass-glob-loader') */ + { + loader: --PROJECTS-PATH--/packages/chisel-scripts/lib/webpack-loaders/sass-glob-loader.js' + } + ] + }, + /* config.module.rule('twig') */ + { + test: //.twig$/, + include: [ + --PROJECT-PATH--/src/templates', + --PROJECT-PATH--/content' + ], + use: [ + /* config.module.rule('twig').use('chisel-twig-loader') */ + { + loader: --PROJECTS-PATH--/packages/chisel-plugin-static-frontend/lib/twig-loader.js', + options: { + options: 'are hidden' + } + } + ] + }, + /* config.module.rule('content') */ + { + test: //.(?:md|json)$/, + type: 'javascript/auto', + include: [ + --PROJECT-PATH--/content' + ], + use: [ + /* config.module.rule('content').use('chisel-twig-loader') */ + { + loader: --PROJECTS-PATH--/packages/chisel-plugin-static-frontend/lib/twig-loader.js', + options: { + options: 'are hidden' + } + }, + /* config.module.rule('content').use('chisel-content-loader') */ + { + loader: --PROJECTS-PATH--/packages/chisel-plugin-static-frontend/lib/content-loader.js', + options: { + options: 'are hidden' + } + } + ] + } + ] + }, + optimization: { + minimizer: [ + /* config.optimization.minimizer('js') */ + new (require(--PROJECTS-PATH--/node_modules/terser-webpack-plugin/dist/cjs.js'))(), + /* config.optimization.minimizer('css') */ + new (require(--PROJECTS-PATH--/packages/chisel-scripts/lib/webpack-plugins/OptimizeCssnanoPlugin.js'))( + { + sourceMap: true + } + ) + ] + }, + plugins: [ + /* config.plugin('devtool-default') */ + new EvalSourceMapDevToolPlugin( + { + module: true, + columns: false, + noSources: false, + test: /(?!(?:^/*|/.s?css)$)/ + } + ), + /* config.plugin('devtool-styles') */ + new SourceMapDevToolPlugin( + { + module: true, + columns: false, + noSources: false, + test: /(?=(?:^/*|/.s?css)$)/ + } + ), + /* config.plugin('case-sensitive-paths') */ + new CaseSensitivePathsPlugin(), + /* config.plugin('chisel-dynamic-public-path') */ + new DynamicPublicPath(), + /* config.plugin('webpackbar') */ + new WebpackBarPlugin(), + /* config.plugin('extract-css') */ + new MiniCssExtractPlugin( + { + filename: '[name].css' + } + ), + /* config.plugin('inject-revisioned') */ + new InjectRevisioned(), + /* config.plugin('copy') */ + new CopyPlugin( + { + patterns: [ + { + from: --PROJECT-PATH--/public', + to: --PROJECT-PATH--/dist', + toType: 'dir', + globOptions: { + ignore: [ + '**/.DS_Store', + '**/.keep' + ] + }, + noErrorOnMissing: true + } + ] + } + ), + /* config.plugin('htmlhint') */ + new HtmlHintPlugin( + { + htmlHintConfig: { + 'attr-lowercase': [ + 'viewBox', + 'preserveAspectRatio' + ] + }, + distPath: --PROJECT-PATH--/dist' + } + ) + ], + entry: { + 'scripts/app': [ + './src/scripts/app.js' + ], + 'styles/main': [ + './src/styles/main.scss' + ] + }, + node: false, + externals: [] +}", + ], +] +`; diff --git a/__tests__/fe/add-page.js b/__tests__/fe/add-page.js new file mode 100644 index 00000000..955c6f7a --- /dev/null +++ b/__tests__/fe/add-page.js @@ -0,0 +1,170 @@ +const fs = require('fs-extra'); +const { defaultAnswers, somePageSimple } = require('./helpers'); + +const indexAndFilesMatchesSnapshot = async () => { + global.chiselTestHelpers.fileMatchesSnapshot('./index.html'); + + await global.chiselTestHelpers.expectFilesToMatchSnapshot([ + './content', + './src/templates', + './dist', + ]); +}; + +describe('FE add-page', () => { + test('Adds pages in default setup', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + global.chiselTestHelpers.fileMatchesSnapshot('./index.html'); + + const consoleMock = jest.spyOn(console, 'log'); + + await global.chiselTestHelpers.runChiselScript(['add-page', 'Page 1']); + + await indexAndFilesMatchesSnapshot(); + global.chiselTestHelpers.fileMatchesSnapshot('./src/templates/page1.twig'); + + await global.chiselTestHelpers.runChiselScript([ + 'add-page', + 'Some Other Page', + 'Second Page', + 'Third Page', + ]); + + await indexAndFilesMatchesSnapshot(); + + global.chiselTestHelpers.normalizeConsoleMockCalls(consoleMock); + expect(consoleMock.mock.calls).toMatchSnapshot(); + }); + + test('Adds pages with the same name', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + await global.chiselTestHelpers.runChiselScript(['add-page', 'Page 1']); + + await global.chiselTestHelpers.runChiselScript(['add-page', 'Page 1']); + + await indexAndFilesMatchesSnapshot(); + }); + + test("Doesn't build with --no-build", async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + await global.chiselTestHelpers.runChiselScript([ + 'add-page', + 'Page No Build', + '--no-build', + ]); + + await indexAndFilesMatchesSnapshot(); + }); + + test('Fails when adding nested page in default setup', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + const addPage = global.chiselTestHelpers.runChiselScript([ + 'add-page', + 'fine', + 'nested/interesting page', + ]); + + await expect(addPage).rejects.toThrowErrorMatchingSnapshot(); + + await indexAndFilesMatchesSnapshot(); + }); + + test('Fails when no page is passed', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + const mockExit = jest + .spyOn(process, 'exit') + .mockImplementation((...args) => { + throw new Error(`Process.exit: ${args.join(', ')}`); + }); + const consoleMock = jest.spyOn(console, 'error'); + + const addPage = global.chiselTestHelpers.runChiselScript(['add-page']); + + await expect(addPage).rejects.toThrowErrorMatchingSnapshot(); + + expect(consoleMock.mock.calls).toMatchSnapshot(); + expect(mockExit.mock.calls).toMatchSnapshot(); + + await indexAndFilesMatchesSnapshot(); + }); + + test('When using content add pages there and supports nested pages', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + fs.outputFileSync('./content/hello.twig', somePageSimple); + + await global.chiselTestHelpers.runChiselScript(['add-page', 'Page 1']); + + await indexAndFilesMatchesSnapshot(); + + await global.chiselTestHelpers.runChiselScript([ + 'add-page', + 'fine', + 'nested/Interesting Page', + 'deeply/nested/Some Other Page', + ]); + + await indexAndFilesMatchesSnapshot(); + }); + + test('When using content and markdown adds pages and builds them', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + fs.outputFileSync('./content/hello.twig', somePageSimple); + fs.outputFileSync( + './src/templates/post.twig', + ` + {% extends "layouts/base.twig" %} + {% set pageName = post.title %} + {% block content %} +

    Hello {{ post.title }}

    +
    {{ post.content }}
    + {% endblock %} + `, + ); + + await global.chiselTestHelpers.runChiselScript(['add-page', 'Page 1']); + + await indexAndFilesMatchesSnapshot(); + + await global.chiselTestHelpers.runChiselScript([ + 'add-page', + 'fine', + 'nested/Interesting Page', + 'deeply/nested/Some Other Page', + ]); + + await indexAndFilesMatchesSnapshot(); + + global.chiselTestHelpers.fileMatchesSnapshot('./dist/page1.html'); + global.chiselTestHelpers.fileMatchesSnapshot( + './dist/deeply/nested/some-other-page.html', + ); + }); +}); diff --git a/__tests__/fe/build/0.js b/__tests__/fe/build/0.js new file mode 100644 index 00000000..b0ed0607 --- /dev/null +++ b/__tests__/fe/build/0.js @@ -0,0 +1,72 @@ +const fs = require('fs-extra'); + +const { defaultAnswers, pageMatchesSnapshot } = require('./helpers.js'); + +describe('FE Build', () => { + test('Generate and build FE Project and process twigs and assets', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + // + // test simple build + // + + const consoleMock = jest.spyOn(console, 'log'); + await global.chiselTestHelpers.runChiselScript(['build']); + + global.chiselTestHelpers.normalizeConsoleMockCalls(consoleMock); + expect(consoleMock.mock.calls).toMatchSnapshot(); + consoleMock.mockClear(); + + await global.chiselTestHelpers.expectFilesToMatchSnapshot(['./dist']); + + // + // test assets, public, twig processing + // + + fs.outputFileSync('./src/assets/hello.txt', 'hello content'); + fs.outputFileSync('./src/assets/not-used.bin', 'hello not used content'); + fs.outputFileSync('./src/assets/nested/hello.txt', 'nested hello content'); + fs.outputFileSync( + './src/assets/nested/hello-not-used.txt', + 'nested hello not used content', + ); + // bug?: deeply nested paths are not preserved + fs.outputFileSync( + './src/assets/deeply/nested/file.abc', + 'nested deeply file content', + ); + fs.outputFileSync('./public/public.txt', 'public file'); + fs.outputFileSync('./public/nested/public.jpg', 'public jpg'); + fs.outputFileSync('./public/very/deeply/nested/file.png', 'file png'); + + fs.outputFileSync( + './src/templates/some-page.twig', + ` + {% extends "layouts/base.twig" %} + {% set pageName = 'Some Page' %} + + {% block content %} +

    Hello

    +
      +
    • {{ assetPath('hello.txt') }}
    • +
    • {{ assetPath('deeply/nested/file.abc') }}
    • +
    • {{ assetPath('nested/hello.txt') }}
    • +
    + {% endblock %} + `, + ); + + await global.chiselTestHelpers.runChiselScript(['build']); + + global.chiselTestHelpers.normalizeConsoleMockCalls(consoleMock); + expect(consoleMock.mock.calls).toMatchSnapshot(); + consoleMock.mockClear(); + + await global.chiselTestHelpers.expectFilesToMatchSnapshot(['./dist']); + + pageMatchesSnapshot(); + }); +}); diff --git a/__tests__/fe/build/1.js b/__tests__/fe/build/1.js new file mode 100644 index 00000000..8145d1f3 --- /dev/null +++ b/__tests__/fe/build/1.js @@ -0,0 +1,30 @@ +const fs = require('fs-extra'); + +const { + defaultAnswers, + pageMatchesSnapshot, + somePageSimple, +} = require('./helpers.js'); + +describe('FE Build', () => { + test('Generate and build FE Project and minify', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + fs.outputFileSync('./src/templates/some-page.twig', somePageSimple); + + await fs.writeFile( + './chisel.config.js', + (await fs.readFile('./chisel.config.js', 'utf8')).replace( + 'staticFrontend: {', + "staticFrontend: { buildFormat: 'minify',", + ), + ); + + await global.chiselTestHelpers.runChiselScript(['build']); + + pageMatchesSnapshot(); + }); +}); diff --git a/__tests__/fe/build/2.js b/__tests__/fe/build/2.js new file mode 100644 index 00000000..c3f599f5 --- /dev/null +++ b/__tests__/fe/build/2.js @@ -0,0 +1,30 @@ +const fs = require('fs-extra'); + +const { + defaultAnswers, + pageMatchesSnapshot, + somePageSimple, +} = require('./helpers.js'); + +describe('FE Build', () => { + test("Generate and build FE Project and don't format", async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + fs.outputFileSync('./src/templates/some-page.twig', somePageSimple); + + await fs.writeFile( + './chisel.config.js', + (await fs.readFile('./chisel.config.js', 'utf8')).replace( + 'staticFrontend: {', + "staticFrontend: { buildFormat: 'as-is',", + ), + ); + + await global.chiselTestHelpers.runChiselScript(['build']); + + pageMatchesSnapshot(); + }); +}); diff --git a/__tests__/fe/build/__snapshots__/0.js.snap b/__tests__/fe/build/__snapshots__/0.js.snap new file mode 100644 index 00000000..b31ba34e --- /dev/null +++ b/__tests__/fe/build/__snapshots__/0.js.snap @@ -0,0 +1,99 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FE Build Generate and build FE Project and process twigs and assets 1`] = ` +Array [ + Array [], + Array [ + " File Size Gzipped + + scripts/app.98db252c.full.js 4.41 KiB 1.35 KiB + scripts/app.98db252c.js 1.18 KiB 0.59 KiB + styles/main.--HASH--.full.css 18.38 KiB 4.70 KiB + styles/main.--HASH--.css 5.50 KiB 1.89 KiB + + Images and other types of assets omitted. +", + ], +] +`; + +exports[`FE Build Generate and build FE Project and process twigs and assets 2`] = ` +Array [ + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", +] +`; + +exports[`FE Build Generate and build FE Project and process twigs and assets 3`] = ` +Array [ + Array [], + Array [ + " File Size Gzipped + + scripts/app.98db252c.full.js 4.41 KiB 1.35 KiB + scripts/app.98db252c.js 1.18 KiB 0.59 KiB + styles/main.--HASH--.full.css 18.38 KiB 4.70 KiB + styles/main.--HASH--.css 5.50 KiB 1.89 KiB + + Images and other types of assets omitted. +", + ], +] +`; + +exports[`FE Build Generate and build FE Project and process twigs and assets 4`] = ` +Array [ + "dist/assets/hello.97980e85.txt", + "dist/assets/nested/file.0aa8fd1f.abc", + "dist/assets/nested/hello.450876f6.txt", + "dist/nested/public.jpg", + "dist/public.txt", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/some-page.html", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", + "dist/very/deeply/nested/file.png", +] +`; + +exports[`FE Build Generate and build FE Project and process twigs and assets 5`] = ` +" + + + + + Some Page - FrontEnd + + + + + + + +
    + FrontEnd +
    +
    +

    Hello

    +
      +
    • assets/hello.97980e85.txt
    • +
    • assets/nested/file.0aa8fd1f.abc
    • +
    • assets/nested/hello.450876f6.txt
    • +
    +
    +
    +

    Copyright © 2020 FrontEnd

    +
    + + +" +`; diff --git a/__tests__/fe/build/__snapshots__/1.js.snap b/__tests__/fe/build/__snapshots__/1.js.snap new file mode 100644 index 00000000..fcaa5454 --- /dev/null +++ b/__tests__/fe/build/__snapshots__/1.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FE Build Generate and build FE Project and minify 1`] = `"Some Page - FrontEnd
    FrontEnd

    Hello

    Copyright © 2020 FrontEnd

    "`; diff --git a/__tests__/fe/build/__snapshots__/2.js.snap b/__tests__/fe/build/__snapshots__/2.js.snap new file mode 100644 index 00000000..cce2fd4f --- /dev/null +++ b/__tests__/fe/build/__snapshots__/2.js.snap @@ -0,0 +1,34 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FE Build Generate and build FE Project and don't format 1`] = ` +" + + + + Some Page - FrontEnd + + + + + + + + + +
    + FrontEnd +
    + + +
    +

    Hello

    +
    + +
    +

    Copyright © 2020 FrontEnd

    +
    + + + +" +`; diff --git a/__tests__/fe/build/helpers.js b/__tests__/fe/build/helpers.js new file mode 100644 index 00000000..dd169847 --- /dev/null +++ b/__tests__/fe/build/helpers.js @@ -0,0 +1,12 @@ +// We have those tests in separate files so jest runs them in separate processes. +// This works around problems with require cache preserved between runs +// (possibly related to import-fresh). + +function pageMatchesSnapshot() { + global.chiselTestHelpers.fileMatchesSnapshot('./dist/some-page.html'); +} + +module.exports.defaultAnswers = require('../helpers').defaultAnswers; +module.exports.somePageSimple = require('../helpers').somePageSimple; + +module.exports.pageMatchesSnapshot = pageMatchesSnapshot; diff --git a/__tests__/fe/content/0.js b/__tests__/fe/content/0.js new file mode 100644 index 00000000..2d9e6181 --- /dev/null +++ b/__tests__/fe/content/0.js @@ -0,0 +1,20 @@ +const fs = require('fs-extra'); + +const { defaultAnswers, md, postPageSimple } = require('./helpers'); + +describe('FE Content', () => { + test('Simple', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + fs.outputFileSync('./content/hello.md', md('Hello', 'Some Content')); + fs.outputFileSync('./src/templates/post.twig', postPageSimple()); + + await global.chiselTestHelpers.runChiselScript(['build']); + + await global.chiselTestHelpers.expectFilesToMatchSnapshot(['./dist']); + await global.chiselTestHelpers.fileMatchesSnapshot('./dist/hello.html'); + }); +}); diff --git a/__tests__/fe/content/1.js b/__tests__/fe/content/1.js new file mode 100644 index 00000000..b59f73dd --- /dev/null +++ b/__tests__/fe/content/1.js @@ -0,0 +1,67 @@ +const fs = require('fs-extra'); +const { defaultAnswers, md, json, postPageSimple } = require('./helpers'); + +describe('FE Content', () => { + test('Nested pages, alt templates, extra data', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + fs.outputFileSync('./content/nested/page.md', md('Hello Page')); + fs.outputFileSync( + './content/nested/more-nested/page.md', + md('Hello More', '', 'date: 2020-04-27T12:30:12Z\nauthor: Jakub'), + ); + fs.outputFileSync( + './content/nested/more-nested/with-template.md', + md( + 'Hello Alt', + 'This author writes things', + 'template: alternative\ndate: 2020-04-27T22:00:00Z\nauthor: Lubos', + ), + ); + fs.outputFileSync('./content/json-page.json', json({})); + + fs.outputFileSync( + './content/nested/json-page.json', + json({ template: 'alternative', title: 'JSON Title', author: 'Jason' }), + ); + + fs.outputFileSync( + './src/templates/post.twig', + postPageSimple( + ` + {% if post.data.date %} + Written on {{ post.data.date.toISOString() }} + by {{ post.data.author }} + in {{ post.data.category }}. + {% endif %} + `, + ), + ); + fs.outputFileSync( + './src/templates/alternative.twig', + postPageSimple( + 'Alternative template with post by {{ post.data.author }}', + ), + ); + + await global.chiselTestHelpers.runChiselScript(['build']); + + await global.chiselTestHelpers.expectFilesToMatchSnapshot(['./dist']); + await global.chiselTestHelpers.fileMatchesSnapshot( + './dist/nested/page.html', + ); + await global.chiselTestHelpers.fileMatchesSnapshot( + './dist/nested/more-nested/page.html', + ); + await global.chiselTestHelpers.fileMatchesSnapshot( + './dist/nested/more-nested/with-template.html', + ); + await global.chiselTestHelpers.fileMatchesSnapshot('./dist/json-page.html'); + await global.chiselTestHelpers.fileMatchesSnapshot( + './dist/nested/json-page.html', + ); + }); +}); diff --git a/__tests__/fe/content/2.js b/__tests__/fe/content/2.js new file mode 100644 index 00000000..7d529127 --- /dev/null +++ b/__tests__/fe/content/2.js @@ -0,0 +1,106 @@ +const fs = require('fs-extra'); +const { defaultAnswers, md, json } = require('./helpers'); + +describe('FE Content', () => { + test('Twig functions work', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + fs.outputFileSync('./content/nested.md', md('Nested Top Level')); + fs.outputFileSync('./content/nested/page.md', md('Nested Page')); + fs.outputFileSync( + './content/really/no-parent-nested/page.md', + md('Nested Page No Parent'), + ); + fs.outputFileSync('./content/top-page.md', md('Top Page')); + fs.outputFileSync('./content/json-page.json', json({ title: 'JSON Page' })); + fs.outputFileSync('./src/assets/hello.txt', 'Hello World'); + fs.outputFileSync('./src/assets/deeply/nested/file.txt', 'DNF'); + + fs.outputFileSync( + './content/class-name.twig', + ` + +
      +
    • {{ className({}) }}
    • +
    • {{ className('') }}
    • +
    • {{ className('c-hello') }}
    • +
    • {{ className('c-hello', 'world', '', false, null, 'something', none, (isDev() ? 'dev' : 'prod')) }}
    • +
    + `, + ); + + fs.outputFileSync( + './content/get-posts.twig', + /* HTML */ ` + + {% set posts = getPosts({ parent: { '$exists': false } }) %} +
      + {% for p in posts %} +
    • + {{ p.id }} - {{ p.children | length }}
      + ({{ p.prev.id}} - {{ p.next.id }}) +
    • + {% endfor %} +
    + `, + ); + + fs.outputFileSync( + './src/templates/post.twig', + /* HTML */ ` + + + + + {{ post.ID }} - {{ post.type }} - {{ post.parent.id ?: 'no p' }} + + + + + +
    + Here is Text File and + DNF. +
    + {% set np = getPosts({ id: 'nested/page' })[0] %} +
    + Links: + +
    + + + `, + ); + + await global.chiselTestHelpers.runChiselScript(['build']); + + const files = [ + 'class-name', + 'get-posts', + 'top-page', + 'json-page', + 'nested/page', + 'really/no-parent-nested/page', + ]; + + for (const file of files) { + await global.chiselTestHelpers.fileMatchesSnapshot(`./dist/${file}.html`); + } + }); +}); diff --git a/__tests__/fe/content/__snapshots__/0.js.snap b/__tests__/fe/content/__snapshots__/0.js.snap new file mode 100644 index 00000000..2c4c700e --- /dev/null +++ b/__tests__/fe/content/__snapshots__/0.js.snap @@ -0,0 +1,21 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FE Content Simple 1`] = ` +Array [ + "dist/hello.html", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", +] +`; + +exports[`FE Content Simple 2`] = ` +" +

    Hello Hello

    +
    +

    Some Content

    +
    " +`; diff --git a/__tests__/fe/content/__snapshots__/1.js.snap b/__tests__/fe/content/__snapshots__/1.js.snap new file mode 100644 index 00000000..f9589bfb --- /dev/null +++ b/__tests__/fe/content/__snapshots__/1.js.snap @@ -0,0 +1,49 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FE Content Nested pages, alt templates, extra data 1`] = ` +Array [ + "dist/json-page.html", + "dist/nested/json-page.html", + "dist/nested/more-nested/page.html", + "dist/nested/more-nested/with-template.html", + "dist/nested/page.html", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", +] +`; + +exports[`FE Content Nested pages, alt templates, extra data 2`] = ` +" +

    Hello Hello Page

    +
    " +`; + +exports[`FE Content Nested pages, alt templates, extra data 3`] = ` +" +

    Hello Hello More

    +
    Written on 2020-04-27T12:30:12.000Z by Jakub in ." +`; + +exports[`FE Content Nested pages, alt templates, extra data 4`] = ` +" +

    Hello Hello Alt

    +
    +

    This author writes things

    +
    Alternative template with post by Lubos" +`; + +exports[`FE Content Nested pages, alt templates, extra data 5`] = ` +" +

    Hello

    +
    " +`; + +exports[`FE Content Nested pages, alt templates, extra data 6`] = ` +" +

    Hello JSON Title

    +
    Alternative template with post by Jason" +`; diff --git a/__tests__/fe/content/__snapshots__/2.js.snap b/__tests__/fe/content/__snapshots__/2.js.snap new file mode 100644 index 00000000..0fb7b313 --- /dev/null +++ b/__tests__/fe/content/__snapshots__/2.js.snap @@ -0,0 +1,123 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FE Content Twig functions work 1`] = ` +" +
      +
    • +
    • +
    • c-hello
    • +
    • c-hello c-hello--world c-hello--something c-hello--prod
    • +
    " +`; + +exports[`FE Content Twig functions work 2`] = ` +" +
      +
    • class-name - 0
      ( - get-posts)
    • +
    • get-posts - 0
      (class-name - json-page)
    • +
    • json-page - 0
      (get-posts - nested)
    • +
    • nested - 1
      (json-page - nested/page)
    • +
    • really/no-parent-nested/page - 0
      (nested/page - top-page)
    • +
    • top-page - 0
      (really/no-parent-nested/page - )
    • +
    " +`; + +exports[`FE Content Twig functions work 3`] = ` +" + + + + top-page - md - no p + + + + + +
    Here is Text File and DNF.
    +
    Links: +
    + + +" +`; + +exports[`FE Content Twig functions work 4`] = ` +" + + + + json-page - json - no p + + + + + +
    Here is Text File and DNF.
    +
    Links: +
    + + +" +`; + +exports[`FE Content Twig functions work 5`] = ` +" + + + + nested/page - md - nested + + + + + +
    Here is Text File and DNF.
    +
    Links: +
    + + +" +`; + +exports[`FE Content Twig functions work 6`] = ` +" + + + + really/no-parent-nested/page - md - no p + + + + + +
    Here is Text File and DNF.
    +
    Links: +
    + + +" +`; diff --git a/__tests__/fe/content/helpers.js b/__tests__/fe/content/helpers.js new file mode 100644 index 00000000..56706730 --- /dev/null +++ b/__tests__/fe/content/helpers.js @@ -0,0 +1,25 @@ +const { defaultAnswers } = require('../helpers'); + +const postPageSimple = (extra = '') => ` + +

    Hello {{ post.title }}

    +
    {{ post.content }}
    +${extra} +`; + +const md = (title, content = '', extra = '') => + ` +--- +title: ${title} +${extra} +--- + +${content} +`.substr(1); + +const json = (obj) => JSON.stringify(obj); + +module.exports.defaultAnswers = defaultAnswers; +module.exports.postPageSimple = postPageSimple; +module.exports.md = md; +module.exports.json = json; diff --git a/__tests__/fe/custom-functions.js b/__tests__/fe/custom-functions.js new file mode 100644 index 00000000..0d5097e2 --- /dev/null +++ b/__tests__/fe/custom-functions.js @@ -0,0 +1,52 @@ +const fs = require('fs-extra'); +const { defaultAnswers } = require('./helpers'); + +describe('FE Custom Functions', () => { + test('Custom functions work ', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create'], + defaultAnswers, + ); + + fs.outputFileSync( + './src/templates/page-1.twig', + /* HTML */ ` + +
      +
    • {{ simple() }}
    • +
    • {{ add(10, 20) }}
    • +
    • {{ somethingAsync() }}
    • +
    + `, + ); + + fs.outputFileSync( + './chisel.config.js', + fs.readFileSync('./chisel.config.js', 'utf8').replace( + /(?=};\n$)/, + ` + staticFrontend: { + functions: { + simple({ functions: { revisionedPath } }) { + return revisionedPath('scripts/app.js'); + }, + + add(_, a, b) { + return 'ADD: ' + (a + b); + }, + + async somethingAsync() { + await new Promise(resolve => setTimeout(resolve, 1000)); + return 'After timeout'; + }, + }, + }, + `, + ), + ); + + await global.chiselTestHelpers.runChiselScript(['build']); + + global.chiselTestHelpers.fileMatchesSnapshot('./dist/page-1.html'); + }); +}); diff --git a/__tests__/fe/helpers.js b/__tests__/fe/helpers.js new file mode 100644 index 00000000..4776e975 --- /dev/null +++ b/__tests__/fe/helpers.js @@ -0,0 +1,27 @@ +const defaultAnswers = [ + null, + { + app: { + name: 'FrontEnd', + author: 'Xfive Tester', + projectType: 'fe', + browsers: ['modern'], + }, + }, + { + fe: { + additionalFeatures: [], + }, + }, +]; + +const somePageSimple = ` +{% extends "layouts/base.twig" %} +{% set pageName = 'Some Page' %} +{% block content %} +

    Hello

    +{% endblock %} +`; + +module.exports.defaultAnswers = defaultAnswers; +module.exports.somePageSimple = somePageSimple; diff --git a/__tests__/fe/htmlhint.js b/__tests__/fe/htmlhint.js new file mode 100644 index 00000000..3eef1cbd --- /dev/null +++ b/__tests__/fe/htmlhint.js @@ -0,0 +1,47 @@ +const fs = require('fs-extra'); +const { defaultAnswers } = require('./helpers'); + +describe('FE HTMLHint', () => { + test('HTMLHint errors are logged and fail build ', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create'], + defaultAnswers, + ); + + fs.outputFileSync( + './src/templates/page-1.twig', + /* HTML */ ` + +
    Hello
    + `, + ); + fs.outputFileSync( + './src/templates/page-2.twig', + /* HTML */ ` + +
    OK!
    + `, + ); + + fs.outputFileSync( + './src/templates/page-3.twig', + /* HTML */ ` +
    +
      +
    • Line item 1
    • +
    • Line item 2
    • +
    +
    + `, + ); + + const consoleMock = jest.spyOn(console, 'log'); + + const build = global.chiselTestHelpers.runChiselScript(['build']); + + await expect(build).rejects.toThrowErrorMatchingSnapshot(); + + global.chiselTestHelpers.normalizeConsoleMockCalls(consoleMock); + expect(consoleMock.mock.calls).toMatchSnapshot(); + }); +}); diff --git a/__tests__/fe/inspect.js b/__tests__/fe/inspect.js new file mode 100644 index 00000000..56400e3f --- /dev/null +++ b/__tests__/fe/inspect.js @@ -0,0 +1,42 @@ +const defaultAnswers = [ + null, + { + app: { + name: 'FrontEnd', + author: 'Xfive Tester', + projectType: 'fe', + browsers: ['modern'], + }, + }, + { + fe: { + additionalFeatures: [], + }, + }, +]; + +describe('FE Inspect', () => { + test.only('Generate and inspect FE Project', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + defaultAnswers, + ); + + const consoleMock = jest + .spyOn(console, 'log') + .mockImplementation(() => undefined); + await global.chiselTestHelpers.runChiselScript(['inspect']); + + if (consoleMock.mock.calls[0] && consoleMock.mock.calls[0][0]) { + consoleMock.mock.calls[0][0] = consoleMock.mock.calls[0][0] + .replace(/\\+/g, '/') + .replace(/'.+generator-chisel/g, '--PROJECTS-PATH--') + .replace( + /--PROJECTS-PATH--\/\.jest-projects\/[^/'"]+/g, + '--PROJECT-PATH--', + ); + } + + expect(consoleMock.mock.calls).toMatchSnapshot(); + }); +}); diff --git a/__tests__/generator/__snapshots__/browserslist.js.snap b/__tests__/generator/__snapshots__/browserslist.js.snap new file mode 100644 index 00000000..b0305386 --- /dev/null +++ b/__tests__/generator/__snapshots__/browserslist.js.snap @@ -0,0 +1,42 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Generator: .browserslist generation should generate all 1`] = ` +"ie 11 +edge 18 +last 3 Android versions +last 3 ChromeAndroid versions +last 3 Chrome versions +last 3 Firefox versions +last 3 Safari versions +last 3 iOS versions +last 3 Edge versions +" +`; + +exports[`Generator: .browserslist generation should generate empty 1`] = ` +" +" +`; + +exports[`Generator: .browserslist generation should generate modern & edge 1`] = ` +"edge 18 +last 3 Android versions +last 3 ChromeAndroid versions +last 3 Chrome versions +last 3 Firefox versions +last 3 Safari versions +last 3 iOS versions +last 3 Edge versions +" +`; + +exports[`Generator: .browserslist generation should generate modern only 1`] = ` +"last 3 Android versions +last 3 ChromeAndroid versions +last 3 Chrome versions +last 3 Firefox versions +last 3 Safari versions +last 3 iOS versions +last 3 Edge versions +" +`; diff --git a/__tests__/generator/__snapshots__/fe.js.snap b/__tests__/generator/__snapshots__/fe.js.snap new file mode 100644 index 00000000..721ab157 --- /dev/null +++ b/__tests__/generator/__snapshots__/fe.js.snap @@ -0,0 +1,398 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Generator Static Generate and build FE Project 1`] = ` +Array [ + ".browserslistrc", + ".editorconfig", + ".eslintignore", + ".eslintrc.js", + ".gitattributes", + ".gitignore", + ".htmlhintrc", + ".prettierignore", + ".stylelintignore", + "README.md", + "babel.config.js", + "chisel.config.js", + "dist/scripts/app.98db252c.full.js", + "dist/scripts/app.98db252c.js", + "dist/scripts/app.98db252c.js.map", + "dist/styles/main.--HASH--.css", + "dist/styles/main.--HASH--.css.map", + "dist/styles/main.--HASH--.full.css", + "index.html", + "package.json", + "postcss.config.js", + "prettier.config.js", + "public/.keep", + "src/assets/fonts/.keep", + "src/assets/images/.keep", + "src/scripts/app.js", + "src/scripts/modules/greeting.js", + "src/styles/components/_btn.scss", + "src/styles/components/_footer.scss", + "src/styles/components/_header.scss", + "src/styles/elements/_blockquote.scss", + "src/styles/elements/_headings.scss", + "src/styles/elements/_hr.scss", + "src/styles/elements/_html.scss", + "src/styles/elements/_images.scss", + "src/styles/elements/_links.scss", + "src/styles/elements/_lists.scss", + "src/styles/elements/_tables.scss", + "src/styles/generic/_box-sizing.scss", + "src/styles/generic/_font-face.scss", + "src/styles/generic/_normalize.scss", + "src/styles/generic/_reset.scss", + "src/styles/generic/_shared.scss", + "src/styles/main.scss", + "src/styles/objects/_layout.scss", + "src/styles/objects/_list-bare.scss", + "src/styles/objects/_list-inline.scss", + "src/styles/objects/_media.scss", + "src/styles/objects/_table.scss", + "src/styles/objects/_wrapper.scss", + "src/styles/settings/_global.scss", + "src/styles/tools/_breakpoints.scss", + "src/styles/tools/_clearfix.scss", + "src/styles/tools/_hidden.scss", + "src/styles/utilities/_align.scss", + "src/styles/utilities/_clearfix.scss", + "src/styles/utilities/_hide.scss", + "src/styles/vendor/.keep", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", + "stylelint.config.js", +] +`; + +exports[`Generator Static Generate and build FE Project 2`] = ` +"/* eslint-disable no-param-reassign */ + +const creatorData = { + chiselVersion: '--VERSION--', + app: { + name: 'FrontEnd', + author: 'Xfive Tester', + projectType: 'fe', + browsers: ['modern'], + nameSlug: 'frontend', + hasJQuery: false, + }, + fe: { additionalFeatures: [] }, +}; + +module.exports = { + creatorData, + + staticFrontend: { + serveDist: false, + skipHtmlExtension: false, + }, + + // To use React and hot reload for React components: + // 1. Run \`yarn add react-hot-loader @hot-loader/react-dom\` + // 3. Mark your root component as hot-exported as described on + // https://github.com/gaearon/react-hot-loader#getting-started (step 2) + // 4. Uncomment line below + // react: true, + + plugins: ['chisel-plugin-code-style', 'chisel-plugin-static-frontend'], +}; +" +`; + +exports[`Generator Static Generates all expected files and config 1`] = ` +Array [ + ".browserslistrc", + ".editorconfig", + ".eslintignore", + ".eslintrc.js", + ".gitattributes", + ".gitignore", + ".htmlhintrc", + ".prettierignore", + ".stylelintignore", + "README.md", + "babel.config.js", + "chisel.config.js", + "index.html", + "package.json", + "postcss.config.js", + "prettier.config.js", + "public/.keep", + "src/assets/fonts/.keep", + "src/assets/images/.keep", + "src/scripts/app.js", + "src/scripts/modules/greeting.js", + "src/styles/components/_btn.scss", + "src/styles/components/_footer.scss", + "src/styles/components/_header.scss", + "src/styles/elements/_blockquote.scss", + "src/styles/elements/_headings.scss", + "src/styles/elements/_hr.scss", + "src/styles/elements/_html.scss", + "src/styles/elements/_images.scss", + "src/styles/elements/_links.scss", + "src/styles/elements/_lists.scss", + "src/styles/elements/_tables.scss", + "src/styles/generic/_box-sizing.scss", + "src/styles/generic/_font-face.scss", + "src/styles/generic/_normalize.scss", + "src/styles/generic/_reset.scss", + "src/styles/generic/_shared.scss", + "src/styles/main.scss", + "src/styles/objects/_layout.scss", + "src/styles/objects/_list-bare.scss", + "src/styles/objects/_list-inline.scss", + "src/styles/objects/_media.scss", + "src/styles/objects/_table.scss", + "src/styles/objects/_wrapper.scss", + "src/styles/settings/_global.scss", + "src/styles/tools/_breakpoints.scss", + "src/styles/tools/_clearfix.scss", + "src/styles/tools/_hidden.scss", + "src/styles/utilities/_align.scss", + "src/styles/utilities/_clearfix.scss", + "src/styles/utilities/_hide.scss", + "src/styles/vendor/.keep", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", + "stylelint.config.js", +] +`; + +exports[`Generator Static Generates all expected files and config 2`] = ` +"/* eslint-disable no-param-reassign */ + +const creatorData = { + chiselVersion: \\"--VERSION--\\", + app: { + name: \\"FrontEnd\\", + author: \\"Xfive Tester\\", + projectType: \\"fe\\", + browsers: [\\"modern\\"], + nameSlug: \\"frontend\\", + hasJQuery: false, + }, + fe: { additionalFeatures: [] }, +}; + +module.exports = { + creatorData, + + staticFrontend: { + serveDist: false, + skipHtmlExtension: false, + }, + + // To use React and hot reload for React components: + // 1. Run \`yarn add react-hot-loader @hot-loader/react-dom\` + // 3. Mark your root component as hot-exported as described on + // https://github.com/gaearon/react-hot-loader#getting-started (step 2) + // 4. Uncomment line below + // react: true, + + plugins: [\\"chisel-plugin-code-style\\", \\"chisel-plugin-static-frontend\\"], +}; +" +`; + +exports[`Generator Static Generates all expected files and config with serveDist 1`] = ` +Array [ + ".browserslistrc", + ".editorconfig", + ".eslintignore", + ".eslintrc.js", + ".gitattributes", + ".gitignore", + ".htmlhintrc", + ".prettierignore", + ".stylelintignore", + "README.md", + "babel.config.js", + "chisel.config.js", + "package.json", + "postcss.config.js", + "prettier.config.js", + "public/.keep", + "src/assets/fonts/.keep", + "src/assets/images/.keep", + "src/scripts/app.js", + "src/scripts/modules/greeting.js", + "src/styles/components/_btn.scss", + "src/styles/components/_footer.scss", + "src/styles/components/_header.scss", + "src/styles/elements/_blockquote.scss", + "src/styles/elements/_headings.scss", + "src/styles/elements/_hr.scss", + "src/styles/elements/_html.scss", + "src/styles/elements/_images.scss", + "src/styles/elements/_links.scss", + "src/styles/elements/_lists.scss", + "src/styles/elements/_tables.scss", + "src/styles/generic/_box-sizing.scss", + "src/styles/generic/_font-face.scss", + "src/styles/generic/_normalize.scss", + "src/styles/generic/_reset.scss", + "src/styles/generic/_shared.scss", + "src/styles/main.scss", + "src/styles/objects/_layout.scss", + "src/styles/objects/_list-bare.scss", + "src/styles/objects/_list-inline.scss", + "src/styles/objects/_media.scss", + "src/styles/objects/_table.scss", + "src/styles/objects/_wrapper.scss", + "src/styles/settings/_global.scss", + "src/styles/tools/_breakpoints.scss", + "src/styles/tools/_clearfix.scss", + "src/styles/tools/_hidden.scss", + "src/styles/utilities/_align.scss", + "src/styles/utilities/_clearfix.scss", + "src/styles/utilities/_hide.scss", + "src/styles/vendor/.keep", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", + "stylelint.config.js", +] +`; + +exports[`Generator Static Generates all expected files and config with serveDist 2`] = ` +"/* eslint-disable no-param-reassign */ + +const creatorData = { + chiselVersion: \\"--VERSION--\\", + app: { + name: \\"FrontEnd\\", + author: \\"Xfive Tester\\", + projectType: \\"fe\\", + browsers: [\\"modern\\"], + nameSlug: \\"frontend\\", + hasJQuery: false, + }, + fe: { additionalFeatures: [\\"serveDist\\"] }, +}; + +module.exports = { + creatorData, + + staticFrontend: { + serveDist: true, + skipHtmlExtension: false, + }, + + // To use React and hot reload for React components: + // 1. Run \`yarn add react-hot-loader @hot-loader/react-dom\` + // 3. Mark your root component as hot-exported as described on + // https://github.com/gaearon/react-hot-loader#getting-started (step 2) + // 4. Uncomment line below + // react: true, + + plugins: [\\"chisel-plugin-code-style\\", \\"chisel-plugin-static-frontend\\"], +}; +" +`; + +exports[`Generator Static Generates all expected files and config with skipHtmlExtension 1`] = ` +Array [ + ".browserslistrc", + ".editorconfig", + ".eslintignore", + ".eslintrc.js", + ".gitattributes", + ".gitignore", + ".htmlhintrc", + ".prettierignore", + ".stylelintignore", + "README.md", + "babel.config.js", + "chisel.config.js", + "index.html", + "package.json", + "postcss.config.js", + "prettier.config.js", + "public/.keep", + "src/assets/fonts/.keep", + "src/assets/images/.keep", + "src/scripts/app.js", + "src/scripts/modules/greeting.js", + "src/styles/components/_btn.scss", + "src/styles/components/_footer.scss", + "src/styles/components/_header.scss", + "src/styles/elements/_blockquote.scss", + "src/styles/elements/_headings.scss", + "src/styles/elements/_hr.scss", + "src/styles/elements/_html.scss", + "src/styles/elements/_images.scss", + "src/styles/elements/_links.scss", + "src/styles/elements/_lists.scss", + "src/styles/elements/_tables.scss", + "src/styles/generic/_box-sizing.scss", + "src/styles/generic/_font-face.scss", + "src/styles/generic/_normalize.scss", + "src/styles/generic/_reset.scss", + "src/styles/generic/_shared.scss", + "src/styles/main.scss", + "src/styles/objects/_layout.scss", + "src/styles/objects/_list-bare.scss", + "src/styles/objects/_list-inline.scss", + "src/styles/objects/_media.scss", + "src/styles/objects/_table.scss", + "src/styles/objects/_wrapper.scss", + "src/styles/settings/_global.scss", + "src/styles/tools/_breakpoints.scss", + "src/styles/tools/_clearfix.scss", + "src/styles/tools/_hidden.scss", + "src/styles/utilities/_align.scss", + "src/styles/utilities/_clearfix.scss", + "src/styles/utilities/_hide.scss", + "src/styles/vendor/.keep", + "src/templates/components/footer.twig", + "src/templates/components/header.twig", + "src/templates/layouts/base.twig", + "src/templates/layouts/page.twig", + "stylelint.config.js", +] +`; + +exports[`Generator Static Generates all expected files and config with skipHtmlExtension 2`] = ` +"/* eslint-disable no-param-reassign */ + +const creatorData = { + chiselVersion: \\"--VERSION--\\", + app: { + name: \\"FrontEnd\\", + author: \\"Xfive Tester\\", + projectType: \\"fe\\", + browsers: [\\"modern\\"], + nameSlug: \\"frontend\\", + hasJQuery: false, + }, + fe: { additionalFeatures: [\\"skipHtmlExtension\\"] }, +}; + +module.exports = { + creatorData, + + staticFrontend: { + serveDist: false, + skipHtmlExtension: true, + }, + + // To use React and hot reload for React components: + // 1. Run \`yarn add react-hot-loader @hot-loader/react-dom\` + // 3. Mark your root component as hot-exported as described on + // https://github.com/gaearon/react-hot-loader#getting-started (step 2) + // 4. Uncomment line below + // react: true, + + plugins: [\\"chisel-plugin-code-style\\", \\"chisel-plugin-static-frontend\\"], +}; +" +`; diff --git a/__tests__/generator/__snapshots__/wp.js.snap b/__tests__/generator/__snapshots__/wp.js.snap new file mode 100644 index 00000000..c9c3ff5c --- /dev/null +++ b/__tests__/generator/__snapshots__/wp.js.snap @@ -0,0 +1,427 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Generator WordPress Generates all expected files 1`] = ` +Array [ + ".browserslistrc", + ".editorconfig", + ".eslintignore", + ".eslintrc.js", + ".gitattributes", + ".gitignore", + ".prettierignore", + ".stylelintignore", + "README.md", + "babel.config.js", + "chisel.config.js", + "package.json", + "postcss.config.js", + "prettier.config.js", + "src/assets/fonts/.keep", + "src/assets/images/.keep", + "src/scripts/app.js", + "src/scripts/modules/greeting.js", + "src/styles/components/_btn.scss", + "src/styles/components/_comment-form.scss", + "src/styles/components/_comment.scss", + "src/styles/components/_footer.scss", + "src/styles/components/_header.scss", + "src/styles/components/_main-nav.scss", + "src/styles/components/_post.scss", + "src/styles/elements/_blockquote.scss", + "src/styles/elements/_headings.scss", + "src/styles/elements/_hr.scss", + "src/styles/elements/_html.scss", + "src/styles/elements/_images.scss", + "src/styles/elements/_links.scss", + "src/styles/elements/_lists.scss", + "src/styles/elements/_tables.scss", + "src/styles/generic/_box-sizing.scss", + "src/styles/generic/_font-face.scss", + "src/styles/generic/_normalize.scss", + "src/styles/generic/_reset.scss", + "src/styles/generic/_shared.scss", + "src/styles/main.scss", + "src/styles/objects/_layout.scss", + "src/styles/objects/_list-bare.scss", + "src/styles/objects/_list-inline.scss", + "src/styles/objects/_media.scss", + "src/styles/objects/_table.scss", + "src/styles/objects/_wrapper.scss", + "src/styles/settings/_global.scss", + "src/styles/tools/_breakpoints.scss", + "src/styles/tools/_clearfix.scss", + "src/styles/tools/_hidden.scss", + "src/styles/utilities/_align.scss", + "src/styles/utilities/_clearfix.scss", + "src/styles/utilities/_hide.scss", + "src/styles/vendor/.keep", + "stylelint.config.js", + "wp-cli.yml", + "wp/.gitignore", + "wp/.htaccess", + "wp/wp-config.php", + "wp/wp-content/themes/chisel-test-wp-chisel/.gitignore", + "wp/wp-content/themes/chisel-test-wp-chisel/404.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/ChiselExtension.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/ChiselTwig.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/DataType.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/Theme.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/Twig.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Helpers.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Image.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Media.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Performance.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Post.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Security.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Settings.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Site.php", + "wp/wp-content/themes/chisel-test-wp-chisel/README.md", + "wp/wp-content/themes/chisel-test-wp-chisel/archive.php", + "wp/wp-content/themes/chisel-test-wp-chisel/author.php", + "wp/wp-content/themes/chisel-test-wp-chisel/footer.php", + "wp/wp-content/themes/chisel-test-wp-chisel/functions.php", + "wp/wp-content/themes/chisel-test-wp-chisel/header.php", + "wp/wp-content/themes/chisel-test-wp-chisel/index.php", + "wp/wp-content/themes/chisel-test-wp-chisel/page.php", + "wp/wp-content/themes/chisel-test-wp-chisel/screenshot.png", + "wp/wp-content/themes/chisel-test-wp-chisel/search.php", + "wp/wp-content/themes/chisel-test-wp-chisel/single.php", + "wp/wp-content/themes/chisel-test-wp-chisel/style.css", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/404.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/author.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/comment.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/footer.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/header.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/main-nav.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/tease-post.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/tease.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/index.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/layouts/base.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/layouts/page.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/page-plugin.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/page.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/single.twig", +] +`; + +exports[`Generator WordPress Generates all expected files and downloads WP 1`] = ` +Array [ + ".browserslistrc", + ".editorconfig", + ".eslintignore", + ".eslintrc.js", + ".gitattributes", + ".gitignore", + ".prettierignore", + ".stylelintignore", + "README.md", + "babel.config.js", + "chisel.config.js", + "package.json", + "postcss.config.js", + "prettier.config.js", + "src/assets/fonts/.keep", + "src/assets/images/.keep", + "src/scripts/app.js", + "src/scripts/modules/greeting.js", + "src/styles/components/_btn.scss", + "src/styles/components/_comment-form.scss", + "src/styles/components/_comment.scss", + "src/styles/components/_footer.scss", + "src/styles/components/_header.scss", + "src/styles/components/_main-nav.scss", + "src/styles/components/_post.scss", + "src/styles/elements/_blockquote.scss", + "src/styles/elements/_headings.scss", + "src/styles/elements/_hr.scss", + "src/styles/elements/_html.scss", + "src/styles/elements/_images.scss", + "src/styles/elements/_links.scss", + "src/styles/elements/_lists.scss", + "src/styles/elements/_tables.scss", + "src/styles/generic/_box-sizing.scss", + "src/styles/generic/_font-face.scss", + "src/styles/generic/_normalize.scss", + "src/styles/generic/_reset.scss", + "src/styles/generic/_shared.scss", + "src/styles/main.scss", + "src/styles/objects/_layout.scss", + "src/styles/objects/_list-bare.scss", + "src/styles/objects/_list-inline.scss", + "src/styles/objects/_media.scss", + "src/styles/objects/_table.scss", + "src/styles/objects/_wrapper.scss", + "src/styles/settings/_global.scss", + "src/styles/tools/_breakpoints.scss", + "src/styles/tools/_clearfix.scss", + "src/styles/tools/_hidden.scss", + "src/styles/utilities/_align.scss", + "src/styles/utilities/_clearfix.scss", + "src/styles/utilities/_hide.scss", + "src/styles/vendor/.keep", + "stylelint.config.js", + "wp-cli.yml", + "wp/.gitignore", + "wp/.htaccess", + "wp/index.php", + "wp/license.txt", + "wp/readme.html", + "wp/wp-activate.php", + "wp/wp-admin/100+ files", + "wp/wp-blog-header.php", + "wp/wp-comments-post.php", + "wp/wp-config-sample.php", + "wp/wp-config.php", + "wp/wp-content/themes/chisel-test-wp-chisel/.gitignore", + "wp/wp-content/themes/chisel-test-wp-chisel/404.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/ChiselExtension.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/ChiselTwig.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/DataType.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/Theme.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/Twig.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Helpers.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Image.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Media.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Performance.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Post.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Security.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Settings.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Site.php", + "wp/wp-content/themes/chisel-test-wp-chisel/README.md", + "wp/wp-content/themes/chisel-test-wp-chisel/archive.php", + "wp/wp-content/themes/chisel-test-wp-chisel/author.php", + "wp/wp-content/themes/chisel-test-wp-chisel/footer.php", + "wp/wp-content/themes/chisel-test-wp-chisel/functions.php", + "wp/wp-content/themes/chisel-test-wp-chisel/header.php", + "wp/wp-content/themes/chisel-test-wp-chisel/index.php", + "wp/wp-content/themes/chisel-test-wp-chisel/page.php", + "wp/wp-content/themes/chisel-test-wp-chisel/screenshot.png", + "wp/wp-content/themes/chisel-test-wp-chisel/search.php", + "wp/wp-content/themes/chisel-test-wp-chisel/single.php", + "wp/wp-content/themes/chisel-test-wp-chisel/style.css", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/404.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/author.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/comment.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/footer.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/header.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/main-nav.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/tease-post.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/tease.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/index.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/layouts/base.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/layouts/page.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/page-plugin.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/page.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/single.twig", + "wp/wp-cron.php", + "wp/wp-includes/100+ files", + "wp/wp-links-opml.php", + "wp/wp-load.php", + "wp/wp-login.php", + "wp/wp-mail.php", + "wp/wp-settings.php", + "wp/wp-signup.php", + "wp/wp-trackback.php", + "wp/xmlrpc.php", +] +`; + +exports[`Generator WordPress Generates all expected files, downloads, configures and installs WP 1`] = ` +Array [ + ".browserslistrc", + ".editorconfig", + ".eslintignore", + ".eslintrc.js", + ".gitattributes", + ".gitignore", + ".prettierignore", + ".stylelintignore", + "README.md", + "babel.config.js", + "chisel.config.js", + "dev-vhost.conf", + "package.json", + "postcss.config.js", + "prettier.config.js", + "src/assets/fonts/.keep", + "src/assets/images/.keep", + "src/scripts/app.js", + "src/scripts/modules/greeting.js", + "src/styles/components/_btn.scss", + "src/styles/components/_comment-form.scss", + "src/styles/components/_comment.scss", + "src/styles/components/_footer.scss", + "src/styles/components/_header.scss", + "src/styles/components/_main-nav.scss", + "src/styles/components/_post.scss", + "src/styles/elements/_blockquote.scss", + "src/styles/elements/_headings.scss", + "src/styles/elements/_hr.scss", + "src/styles/elements/_html.scss", + "src/styles/elements/_images.scss", + "src/styles/elements/_links.scss", + "src/styles/elements/_lists.scss", + "src/styles/elements/_tables.scss", + "src/styles/generic/_box-sizing.scss", + "src/styles/generic/_font-face.scss", + "src/styles/generic/_normalize.scss", + "src/styles/generic/_reset.scss", + "src/styles/generic/_shared.scss", + "src/styles/main.scss", + "src/styles/objects/_layout.scss", + "src/styles/objects/_list-bare.scss", + "src/styles/objects/_list-inline.scss", + "src/styles/objects/_media.scss", + "src/styles/objects/_table.scss", + "src/styles/objects/_wrapper.scss", + "src/styles/settings/_global.scss", + "src/styles/tools/_breakpoints.scss", + "src/styles/tools/_clearfix.scss", + "src/styles/tools/_hidden.scss", + "src/styles/utilities/_align.scss", + "src/styles/utilities/_clearfix.scss", + "src/styles/utilities/_hide.scss", + "src/styles/vendor/.keep", + "stylelint.config.js", + "wp-cli.yml", + "wp/.gitignore", + "wp/.htaccess", + "wp/index.php", + "wp/license.txt", + "wp/readme.html", + "wp/wp-activate.php", + "wp/wp-admin/100+ files", + "wp/wp-blog-header.php", + "wp/wp-comments-post.php", + "wp/wp-config-local.php", + "wp/wp-config-sample.php", + "wp/wp-config.php", + "wp/wp-content/plugins/100+ files", + "wp/wp-content/themes/chisel-test-wp-chisel/.gitignore", + "wp/wp-content/themes/chisel-test-wp-chisel/404.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/ChiselExtension.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/ChiselTwig.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/DataType.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/Theme.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Extensions/Twig.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Helpers.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Image.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Media.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Performance.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Post.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Security.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Settings.php", + "wp/wp-content/themes/chisel-test-wp-chisel/Chisel/Site.php", + "wp/wp-content/themes/chisel-test-wp-chisel/README.md", + "wp/wp-content/themes/chisel-test-wp-chisel/archive.php", + "wp/wp-content/themes/chisel-test-wp-chisel/author.php", + "wp/wp-content/themes/chisel-test-wp-chisel/dist/assets/fonts/.keep.31d6cfe0", + "wp/wp-content/themes/chisel-test-wp-chisel/dist/assets/images/.keep.31d6cfe0", + "wp/wp-content/themes/chisel-test-wp-chisel/dist/manifest.json", + "wp/wp-content/themes/chisel-test-wp-chisel/dist/scripts/app.7cec40e0.full.js", + "wp/wp-content/themes/chisel-test-wp-chisel/dist/scripts/app.7cec40e0.js", + "wp/wp-content/themes/chisel-test-wp-chisel/dist/scripts/app.7cec40e0.js.map", + "wp/wp-content/themes/chisel-test-wp-chisel/dist/styles/main.--HASH--.css", + "wp/wp-content/themes/chisel-test-wp-chisel/dist/styles/main.--HASH--.css.map", + "wp/wp-content/themes/chisel-test-wp-chisel/dist/styles/main.--HASH--.full.css", + "wp/wp-content/themes/chisel-test-wp-chisel/footer.php", + "wp/wp-content/themes/chisel-test-wp-chisel/functions.php", + "wp/wp-content/themes/chisel-test-wp-chisel/header.php", + "wp/wp-content/themes/chisel-test-wp-chisel/index.php", + "wp/wp-content/themes/chisel-test-wp-chisel/page.php", + "wp/wp-content/themes/chisel-test-wp-chisel/screenshot.png", + "wp/wp-content/themes/chisel-test-wp-chisel/search.php", + "wp/wp-content/themes/chisel-test-wp-chisel/single.php", + "wp/wp-content/themes/chisel-test-wp-chisel/style.css", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/404.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/author.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/comment.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/footer.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/header.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/main-nav.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/tease-post.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/components/tease.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/index.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/layouts/base.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/layouts/page.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/page-plugin.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/page.twig", + "wp/wp-content/themes/chisel-test-wp-chisel/templates/single.twig", + "wp/wp-cron.php", + "wp/wp-includes/100+ files", + "wp/wp-links-opml.php", + "wp/wp-load.php", + "wp/wp-login.php", + "wp/wp-mail.php", + "wp/wp-settings.php", + "wp/wp-signup.php", + "wp/wp-trackback.php", + "wp/xmlrpc.php", +] +`; + +exports[`Generator WordPress Generates all expected files, downloads, configures and installs WP 2`] = ` +" + DocumentRoot \\"--PROJECT-PATH--/wp\\" + ServerName chisel-test.test + + AllowOverride All + Require all granted + + +" +`; + +exports[`Generator WordPress Generates all expected files, downloads, configures and installs WP 3`] = ` +" { + test('should generate empty', async () => { + await testWithBrowsers([]); + }); + + test('should generate modern only', async () => { + await testWithBrowsers(['modern']); + }); + + test('should generate modern & edge', async () => { + await testWithBrowsers(['modern', 'edge18']); + }); + + test('should generate all', async () => { + await testWithBrowsers(['modern', 'edge18', 'ie11']); + }); +}); diff --git a/__tests__/generator/fe.js b/__tests__/generator/fe.js new file mode 100644 index 00000000..85a0df6a --- /dev/null +++ b/__tests__/generator/fe.js @@ -0,0 +1,108 @@ +const globby = require('globby'); +const fs = require('fs-extra'); +const prettier = require('prettier'); + +const defaultAnswers = (additionalFeatures = []) => [ + null, + { + app: { + name: 'FrontEnd', + author: 'Xfive Tester', + projectType: 'fe', + browsers: ['modern'], + }, + }, + { + fe: { + additionalFeatures, + }, + }, +]; + +const CONFIG_VERSION_REGEX = /(?<=chiselVersion: ['"])\d+\.\d+\.\d+(?:-[\w.-]+)?(?=['"])/g; + +describe('Generator Static', () => { + test('Generates all expected files and config', async () => { + global.chiselTestHelpers.mockPromptAnswers(defaultAnswers()); + + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-dependencies-install', '--skip-format-and-build'], + defaultAnswers(), + ); + + const files = (await globby('./', { dot: true })).sort(); + + expect(files).toMatchSnapshot(); + expect( + prettier + .format(fs.readFileSync('./chisel.config.js', 'utf8'), { + parser: 'babel', + }) + .replace(CONFIG_VERSION_REGEX, '--VERSION--'), + ).toMatchSnapshot(); + }); + + test('Generates all expected files and config with serveDist', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + [ + 'create', + '--skip-dependencies-install', + '--skip-fe-add-index', + '--skip-format-and-build', + ], + defaultAnswers(['serveDist']), + ); + + const files = (await globby('./', { dot: true })).sort(); + + expect(files).toMatchSnapshot(); + expect( + prettier + .format(fs.readFileSync('./chisel.config.js', 'utf8'), { + parser: 'babel', + }) + .replace(CONFIG_VERSION_REGEX, '--VERSION--'), + ).toMatchSnapshot(); + }); + + test('Generates all expected files and config with skipHtmlExtension', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-dependencies-install', '--skip-format-and-build'], + defaultAnswers(['skipHtmlExtension']), + ); + + const files = (await globby('./', { dot: true })).sort(); + + expect(files).toMatchSnapshot(); + expect( + prettier + .format(fs.readFileSync('./chisel.config.js', 'utf8'), { + parser: 'babel', + }) + .replace(CONFIG_VERSION_REGEX, '--VERSION--'), + ).toMatchSnapshot(); + }); + + test('Generate and build FE Project', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create'], + defaultAnswers(), + ); + + // bug: hash of the css is depends on path of + const files = ( + await globby(['./', '!node_modules', '!yarn.lock'], { dot: true }) + ) + .sort() + .map((val) => + val.replace(/(?<=styles\/main\.)[a-z0-9]+(?=\.)/, '--HASH--'), + ); + + expect(files).toMatchSnapshot(); + expect( + fs + .readFileSync('./chisel.config.js', 'utf8') + .replace(CONFIG_VERSION_REGEX, '--VERSION--'), + ).toMatchSnapshot(); + }); +}); diff --git a/__tests__/generator/wp.js b/__tests__/generator/wp.js new file mode 100644 index 00000000..dacd6d7e --- /dev/null +++ b/__tests__/generator/wp.js @@ -0,0 +1,90 @@ +const globby = require('globby'); + +const defaultAnswers = [ + null, + { + app: { + name: 'Chisel Test WP', + author: 'Xfive Tester', + projectType: 'wp-with-fe', + browsers: ['modern'], + }, + }, + { + wp: { + title: 'Chisel Test', + url: 'http://chisel-test.test/', + adminUser: 'admin', + adminPassword: 'a', + adminEmail: 'jakub.bogucki+chisel-test@xfive.co', + }, + }, + { wpPlugins: { plugins: [] } }, + { + databaseHost: '127.0.0.1', + databasePort: '3306', + databaseName: `chisel-test-wp-dbrand${Date.now()}`, + databaseUser: 'root', + databasePassword: '', + }, +]; + +describe('Generator WordPress', () => { + test('Generates all expected files', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + [ + 'create', + '--skip-dependencies-install', + '--skip-wp-download', + '--skip-wp-config', + '--skip-wp-install', + '--skip-wp-plugins', + '--skip-wp-commands', + '--skip-format-and-build', + ], + defaultAnswers, + ); + + const files = (await globby('./', { dot: true })).sort(); + + expect(files).toMatchSnapshot(); + }); + + test('Generates all expected files and downloads WP', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + [ + 'create', + '--skip-wp-config', + '--skip-wp-install', + '--skip-wp-plugins', + '--skip-wp-commands', + '--skip-format-and-build', + ], + defaultAnswers, + ); + + await global.chiselTestHelpers.expectFilesToMatchSnapshot( + ['./', '!node_modules', '!yarn.lock'], + ['wp/wp-admin/', 'wp/wp-includes/'], + ); + }); + + test('Generates all expected files, downloads, configures and installs WP', async () => { + await jest.resetModules(); + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create'], + defaultAnswers, + { interceptWpConfig: true, mockRandomBytes: true }, + ); + + await global.chiselTestHelpers.expectFilesToMatchSnapshot( + ['./', '!node_modules', '!yarn.lock'], + ['wp/wp-admin/', 'wp/wp-includes/', 'wp/wp-content/plugins/'], + ); + + await global.chiselTestHelpers.fileMatchesSnapshot('./dev-vhost.conf'); + await global.chiselTestHelpers.fileMatchesSnapshot( + './wp/wp-config-local.php', + ); + }); +}); diff --git a/__tests__/wp/__snapshots__/add-page.js.snap b/__tests__/wp/__snapshots__/add-page.js.snap new file mode 100644 index 00000000..0c51c1bc --- /dev/null +++ b/__tests__/wp/__snapshots__/add-page.js.snap @@ -0,0 +1,35 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`WP add-page Add pages 1`] = ` +Array [ + Array [], + Array [ + "Page Page 1 created!", + ], + Array [ + "Template: --PROJECT-PATH--/wp/wp-content/themes/chisel-test-wp-chisel/templates/page-page-1.twig", + ], + Array [ + "URL: http://localhost:8081/?page_id=4", + ], + Array [], + Array [ + "Page Fancy ąęśćłó/Nested/Name created!", + ], + Array [ + "Template: --PROJECT-PATH--/wp/wp-content/themes/chisel-test-wp-chisel/templates/page-fancy-aesclo-nested-name.twig", + ], + Array [ + "URL: http://localhost:8081/?page_id=5", + ], + Array [], +] +`; + +exports[`WP add-page Add pages 2`] = ` +Array [ + "./wp/wp-content/themes/chisel-test-wp-chisel/templates/page-fancy-aesclo-nested-name.twig", + "./wp/wp-content/themes/chisel-test-wp-chisel/templates/page-page-1.twig", + "./wp/wp-content/themes/chisel-test-wp-chisel/templates/page-plugin.twig", +] +`; diff --git a/__tests__/wp/__snapshots__/wp-command.js.snap b/__tests__/wp/__snapshots__/wp-command.js.snap new file mode 100644 index 00000000..8e94ff96 --- /dev/null +++ b/__tests__/wp/__snapshots__/wp-command.js.snap @@ -0,0 +1,18 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`WP wp command Works OK and passes error code on errors 1`] = ` +Object { + "stderr": "", + "stdout": "name,status,update,version +chisel-test-wp-chisel,active,none,", +} +`; + +exports[`WP wp command Works OK and passes error code on errors 2`] = `"Process.exit: 1"`; + +exports[`WP wp command Works OK and passes error code on errors 3`] = ` +Object { + "stderr": "Error: 'not-existing' is not a registered wp command. See 'wp help' for available commands.", + "stdout": "", +} +`; diff --git a/__tests__/wp/__snapshots__/wp-config.js.snap b/__tests__/wp/__snapshots__/wp-config.js.snap new file mode 100644 index 00000000..b81fc64e --- /dev/null +++ b/__tests__/wp/__snapshots__/wp-config.js.snap @@ -0,0 +1,22 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`WP wp-config command Test generating with wrong port first 1`] = ` +Array [ + Array [ + "", + ], + Array [ + "Error: Failed to get current SQL modes. Reason: ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (--ERROR-DETAILS-) +", + ], + Array [ + "", + ], + Array [ + "Trying again...", + ], + Array [ + "", + ], +] +`; diff --git a/__tests__/wp/add-page.js b/__tests__/wp/add-page.js new file mode 100644 index 00000000..d1d855db --- /dev/null +++ b/__tests__/wp/add-page.js @@ -0,0 +1,38 @@ +const fs = require('fs'); +const { answers } = require('./helpers'); + +describe('WP add-page', () => { + test('Add pages', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create'], + answers({ port: 8081 }), + { interceptWpConfig: true, mockRandomBytes: true }, + ); + + const consoleMock = jest.spyOn(console, 'log'); + + await global.chiselTestHelpers.runChiselScript([ + 'add-page', + 'Page 1', + 'Fancy ąęśćłó/Nested/Name', + ]); + + global.chiselTestHelpers.normalizeConsoleMockCalls(consoleMock); + expect(consoleMock.mock.calls).toMatchSnapshot(); + + const templates = './wp/wp-content/themes/chisel-test-wp-chisel/templates'; + await global.chiselTestHelpers.expectFilesToMatchSnapshot([ + `${templates}/page-*.twig`, + ]); + + expect(fs.readFileSync(`${templates}/page-page-1.twig`, 'utf8')).toContain( + `{% set pageName = 'Page 1' %}`, + ); + expect( + fs.readFileSync( + `${templates}/page-fancy-aesclo-nested-name.twig`, + 'utf8', + ), + ).toContain(`{% set pageName = 'Fancy ąęśćłó/Nested/Name' %}`); + }); +}); diff --git a/__tests__/wp/config-hooks.js b/__tests__/wp/config-hooks.js new file mode 100644 index 00000000..f4ee3feb --- /dev/null +++ b/__tests__/wp/config-hooks.js @@ -0,0 +1,48 @@ +const fs = require('fs-extra'); +const path = require('path'); +const supertest = require('supertest'); +const nodeEval = require('node-eval'); +const { answers } = require('./helpers'); + +global.chiselTestHelpers.setupPhpServer(); + +describe('WP config hooks', () => { + test('Starts dev server on different port', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create'], + answers({ port: 8082 }), + { interceptWpConfig: true, mockRandomBytes: true }, + ); + + fs.outputFileSync( + './chisel.config.js', + fs.readFileSync('./chisel.config.js', 'utf8').replace( + /(?=};\n$)/, + ` + hooks: { + wordPress: { + browserSyncConfig(config) { + config.port = 3100; + } + } + }, + `, + ), + ); + + await global.phpServer.start(8082, 'wp'); + + jest.resetModules(); + + // reset modules seems to not actually reset modules + const configPath = path.resolve('./chisel.config.js'); + jest.doMock(configPath, () => { + return nodeEval(fs.readFileSync(configPath, 'utf8'), configPath); + }); + const stop = await global.chiselTestHelpers.runChiselScript(['dev']); + + await supertest('http://localhost:3100').get('/').expect(200); + + await stop(); + }); +}); diff --git a/__tests__/wp/dev.js b/__tests__/wp/dev.js new file mode 100644 index 00000000..eadbda35 --- /dev/null +++ b/__tests__/wp/dev.js @@ -0,0 +1,158 @@ +/** + * @jest-environment ./scripts/testPuppeteerEnv + */ +/* global page */ + +const fs = require('fs-extra'); +const supertest = require('supertest'); +const { answers } = require('./helpers'); + +global.chiselTestHelpers.setupPhpServer(); + +describe.supportsPuppeteer('WP dev', () => { + test('Starts dev server and reloads on changes', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create'], + answers(), + { interceptWpConfig: true, mockRandomBytes: true }, + ); + + await global.phpServer.start(8080, 'wp'); + + const stop = await global.chiselTestHelpers.runChiselScript(['dev']); + + await page.goto('http://localhost:3000'); + global.chiselTestHelpers.browserSync.monitor(page); + + await global.chiselTestHelpers.oncePromise(page, 'bsConnected'); + + await expect(page).not.toMatchElement('#tease-test-1'); + + // Test reload on twig update + + { + const file = + 'wp/wp-content/themes/chisel-test-wp-chisel/templates/components/tease.twig'; + fs.writeFileSync( + file, + fs.readFileSync(file, 'utf8').replace('id="tease-', 'id="tease-test-'), + ); + } + + await global.chiselTestHelpers.oncePromise(page, 'chiselNavigated'); + + await expect(page).toMatchElement('#tease-test-1'); + + // Test Reload on JS Update + + await page.goto('http://localhost:3000/?p=1'); + + await global.chiselTestHelpers.oncePromise(page, 'bsConnected'); + + await expect(page).toMatchElement('.js-greeting', { text: /^World$/ }); + + fs.writeFileSync( + './src/scripts/modules/greeting.js', + fs + .readFileSync('./src/scripts/modules/greeting.js', 'utf8') + // eslint-disable-next-line no-template-curly-in-string + .replace('= name;', '= `Updated ${name} Reloads`;'), + ); + + await global.chiselTestHelpers.oncePromise(page, 'chiselNavigated'); + + await expect(page).toMatchElement('.js-greeting', { + text: /^Updated World Reloads$/, + }); + + // Test CSS Reload without page reload + + const frameNavigated = jest.fn(); + + let cssRequestPromiseResolve; + const cssRequestPromise = new Promise((resolve) => { + cssRequestPromiseResolve = resolve; + }); + + const requestListener = async (req) => { + if (!req.url().includes('styles/main.css')) return; + + const body = (await req.response().buffer()).toString('utf8'); + expect(body).toContain('border-bottom: 1px solid rebeccapurple;'); + cssRequestPromiseResolve(); + }; + + page.on('framenavigated', frameNavigated); + page.on('requestfinished', requestListener); + + fs.writeFileSync( + './src/styles/components/_header.scss', + fs + .readFileSync('./src/styles/components/_header.scss', 'utf8') + // eslint-disable-next-line no-template-curly-in-string + .replace('$color-border', 'rebeccapurple'), + ); + + await cssRequestPromise; + + page.off('requestfinished', requestListener); + page.off('framenavigated', frameNavigated); + + expect(frameNavigated).not.toHaveBeenCalled(); + + // Test reload on asset creation and update + + const request = supertest('http://localhost:3000'); + + fs.writeFileSync('./src/assets/some-asset.txt', 'Hello Some Asset'); + + await global.chiselTestHelpers.oncePromise(page, 'chiselNavigated'); + + const assetsPath = '/wp-content/themes/chisel-test-wp-chisel/dist/assets'; + const assetsUrl = + 'http://localhost:8080/wp-content/themes/chisel-test-wp-chisel/dist/assets'; + + await request + .get(`${assetsPath}/some-asset.6ce8c191.txt`) + .expect(200) + .expect('Content-Length', '16'); + + { + const file = + 'wp/wp-content/themes/chisel-test-wp-chisel/templates/components/header.twig'; + fs.writeFileSync( + file, + fs + .readFileSync(file, 'utf8') + .replace('href="/"', `href="{{ assetPath('some-asset.txt') }}"`), + ); + } + + await global.chiselTestHelpers.oncePromise(page, 'chiselNavigated'); + + await request + .get('/') + .expect( + 200, + new RegExp(`href="${assetsUrl}/some-asset\\.6ce8c191\\.txt"`), + ); + + fs.writeFileSync('./src/assets/some-asset.txt', 'Hello Some Asset Updated'); + + await global.chiselTestHelpers.oncePromise(page, 'chiselNavigated'); + + await request + .get(`${assetsPath}/some-asset.5da764e0.txt`) + .expect(200) + .expect('Content-Length', '24'); + + await request + .get('/') + .expect( + 200, + new RegExp(`href="${assetsUrl}/some-asset\\.5da764e0\\.txt"`), + ); + + await stop(); + }); +}); diff --git a/__tests__/wp/helpers.js b/__tests__/wp/helpers.js new file mode 100644 index 00000000..d83c109c --- /dev/null +++ b/__tests__/wp/helpers.js @@ -0,0 +1,30 @@ +module.exports.answers = function answers({ port = 8080 } = {}) { + return [ + null, + { + app: { + name: 'Chisel Test WP', + author: 'Xfive Tester', + projectType: 'wp-with-fe', + browsers: ['modern'], + }, + }, + { + wp: { + title: 'Chisel Test', + url: `http://localhost:${port}/`, + adminUser: 'admin', + adminPassword: 'a', + adminEmail: 'jakub.bogucki+chisel-test@xfive.co', + }, + }, + { wpPlugins: { plugins: [] } }, + { + databaseHost: '127.0.0.1', + databasePort: '3306', + databaseName: `chisel-test-wp-dbrand${Date.now()}`, + databaseUser: 'root', + databasePassword: '', + }, + ]; +}; diff --git a/__tests__/wp/wp-command.js b/__tests__/wp/wp-command.js new file mode 100644 index 00000000..1f2914bc --- /dev/null +++ b/__tests__/wp/wp-command.js @@ -0,0 +1,58 @@ +const { answers } = require('./helpers'); + +describe('WP wp command', () => { + test('Works OK and passes error code on errors', async () => { + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create'], + answers(), + { interceptWpConfig: true }, + ); + + jest.doMock('execa', () => + jest.fn((...args) => { + if (typeof args[2] === 'object' && args[2].stdio === 'inherit') { + args[2].stdio = 'pipe'; + } + const execa = jest.requireActual('execa'); + return execa(...args); + }), + ); + + jest.spyOn(process, 'exit').mockImplementation((...args) => { + if (args[0] && args[0] !== 0) { + throw new Error(`Process.exit: ${args.join(', ')}`); + } + }); + + const mockArgv = jest + .spyOn(process.argv, 'slice') + .mockImplementationOnce(() => ['theme', 'list', '--format=csv']); + + await global.chiselTestHelpers.runChiselScript(['wp']); + + const mockedExeca = require('execa'); + + expect( + await mockedExeca.mock.results[0].value.then((v) => ({ + stdout: v.stdout, + stderr: v.stderr, + })), + ).toMatchSnapshot(); + + mockedExeca.mockClear(); + + // test not-existing command + + mockArgv.mockImplementationOnce(() => ['not-existing']); + + const run = global.chiselTestHelpers.runChiselScript(['wp']); + await expect(run).rejects.toThrowErrorMatchingSnapshot(); + + expect( + await mockedExeca.mock.results[0].value.catch((e) => ({ + stdout: e.stdout, + stderr: e.stderr, + })), + ).toMatchSnapshot(); + }); +}); diff --git a/__tests__/wp/wp-config.js b/__tests__/wp/wp-config.js new file mode 100644 index 00000000..6aa570c1 --- /dev/null +++ b/__tests__/wp/wp-config.js @@ -0,0 +1,41 @@ +const execa = require('execa'); +const { answers: answersGenerator } = require('./helpers'); + +describe('WP wp-config command', () => { + test('Test generating with wrong port first', async () => { + const answers = answersGenerator(); + const answersLast = answers[answers.length - 1]; + answers.push({ ...answersLast }); + answersLast.databasePort = '3307'; + + const consoleMock = jest.spyOn(console, 'log'); + + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + answers, + { interceptWpConfig: true, mockRandomBytes: true }, + ); + + global.chiselTestHelpers.normalizeConsoleMockCalls(consoleMock); + expect(consoleMock.mock.calls).toMatchSnapshot(); + }); + + test('Test generating with existing database', async () => { + const answers = answersGenerator(); + const answersLast = answers[answers.length - 1]; + answers.push({ useExisting: false }); + + await execa('mysql', [ + '-e', + `CREATE DATABASE \`${answersLast.databaseName}\``, + '-u', + 'root', + ]); + + await global.chiselTestHelpers.generateProjectWithAnswers( + ['create', '--skip-format-and-build'], + answers, + { interceptWpConfig: true, mockRandomBytes: true }, + ); + }); +}); diff --git a/docs/.browserslistrc b/docs/.browserslistrc new file mode 100644 index 00000000..69379b09 --- /dev/null +++ b/docs/.browserslistrc @@ -0,0 +1,7 @@ +last 3 Android versions +last 3 ChromeAndroid versions +last 3 Chrome versions +last 3 Firefox versions +last 3 Safari versions +last 3 iOS versions +last 3 Edge versions diff --git a/docs/.eslintignore b/docs/.eslintignore new file mode 100644 index 00000000..625ef8ac --- /dev/null +++ b/docs/.eslintignore @@ -0,0 +1,4 @@ +!.eslintrc.js +/src/assets +/dist +/wp diff --git a/docs/.eslintrc.js b/docs/.eslintrc.js new file mode 100644 index 00000000..bf207384 --- /dev/null +++ b/docs/.eslintrc.js @@ -0,0 +1,25 @@ +process.env.CHISEL_CONTEXT = __dirname; +const chiselConfig = require('./chisel.config.js'); + +let extend = 'chisel'; + +if (chiselConfig.react) { + extend = 'chisel/react'; +} + +module.exports = { + root: true, + + extends: extend, + + settings: { + 'import/resolver': { + node: {}, + [require.resolve( + 'chisel-plugin-code-style/eslint-import-resolver-webpack', + )]: { + config: require.resolve('chisel-scripts/webpack.config-sync.js'), + }, + }, + }, +}; diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..c6ed9a81 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,2 @@ +/chisel.config.local.js +/dist diff --git a/generators/app/templates/.htmlhintrc b/docs/.htmlhintrc similarity index 100% rename from generators/app/templates/.htmlhintrc rename to docs/.htmlhintrc diff --git a/docs/.prettierignore b/docs/.prettierignore new file mode 100644 index 00000000..4072fe26 --- /dev/null +++ b/docs/.prettierignore @@ -0,0 +1,4 @@ +node_modules +/src/assets +/dist +/wp diff --git a/docs/.stylelintignore b/docs/.stylelintignore new file mode 100644 index 00000000..ca0ac255 --- /dev/null +++ b/docs/.stylelintignore @@ -0,0 +1,3 @@ +/src/assets +/dist +/wp diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..23de4b82 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,3 @@ +# Getchisel + +Getchisel is a project created with Chisel. Please check out Chisel documentation at [https://www.getchisel.co/docs/](www.getchisel.co/docs/). diff --git a/docs/babel.config.js b/docs/babel.config.js new file mode 100644 index 00000000..16746d5d --- /dev/null +++ b/docs/babel.config.js @@ -0,0 +1,16 @@ +const chiselConfig = require('./chisel.config.js'); + +module.exports = { + presets: [ + [ + 'babel-preset-chisel', + { + // global automatic polyfills: + // yarn add core-js then uncomment + // useBuiltIns: 'usage', + }, + ], + chiselConfig.react && ['babel-preset-chisel/react', { hot: true }], + // ['babel-preset-chisel/preact'], + ].filter(Boolean), +}; diff --git a/docs/chisel.config.js b/docs/chisel.config.js new file mode 100644 index 00000000..5bf14d5f --- /dev/null +++ b/docs/chisel.config.js @@ -0,0 +1,129 @@ +const jsdom = require('jsdom'); + +const creatorData = { + chiselVersion: '1.0.0-alpha.11', + app: { + name: 'Getchisel', + author: 'Xfive', + projectType: 'fe', + browsers: ['modern'], + nameSlug: 'getchisel', + hasJQuery: false, + }, + fe: { additionalFeatures: ['serveDist', 'skipHtmlExtension'] }, +}; + +function containsChild(children, postId) { + return children.find((child) => { + let isContain = child.id() === postId; + + if (isContain) return isContain; + + if (child.children()) { + isContain = containsChild(child.children(), postId); + } + + return isContain; + }); +} + +function sidebarChildren(post, children, getPosts, level = 0) { + const currentLevel = level + 1; + const currentPostId = post.id(); + let isActiveParent = false; + + return Promise.all( + children.map(async (child) => { + const childChildren = await getPosts( + { parent: child.id() }, + { 'data.order': 1 }, + ); + + const isCurrent = child.id() === currentPostId; + + if (level === 0) { + isActiveParent = !!containsChild(childChildren, currentPostId); + } + + return /* HTML */ ` +
  • + ${child.title()} + ${childChildren.length > 0 + ? /* HTML */ ` +
      + ${await sidebarChildren( + post, + childChildren, + getPosts, + currentLevel, + )} +
    + ` + : ''} +
  • + `; + }), + ).then((strings) => strings.join('\n')); +} + +module.exports = { + creatorData, + + staticFrontend: { + serveDist: true, + skipHtmlExtension: true, + buildFormat: 'minify', + functions: { + async sidebar({ context: { post }, functions: { getPosts } }) { + if (!post.id().startsWith('docs')) return ''; + const start = (await getPosts({ id: 'docs' }))[0]; + const children = await getPosts( + { parent: start.id() }, + { 'data.order': 1 }, + ); + + return /* HTML */ ` +

    ${start.title()}

    + +
      + ${await sidebarChildren(post, children, getPosts)} +
    + `; + }, + async onPageSidebar({ context: { post } }) { + if (!post.id().startsWith('docs')) return ''; + const { JSDOM } = jsdom; + const dom = new JSDOM(post.content()); + const headings = dom.window.document.querySelectorAll('h2'); + if (headings.length <= 0) return ''; + + return /* HTML */ ` + + `; + }, + }, + }, + + // To use React and hot reload for react components: + // 1. Run `yarn add react-hot-loader @hot-loader/react-dom` + // 3. Mark your root component as hot-exported as described on + // https://github.com/gaearon/react-hot-loader + // 4. Uncomment line below + // react: true, + + plugins: ['chisel-plugin-code-style', 'chisel-plugin-static-frontend'], +}; diff --git a/docs/content/404.md b/docs/content/404.md new file mode 100644 index 00000000..d1767ceb --- /dev/null +++ b/docs/content/404.md @@ -0,0 +1,5 @@ +--- +title: Page not found +excerpt: We are sorry, we couldn't find what you're looking for. +order: 100 +--- diff --git a/docs/content/about.md b/docs/content/about.md new file mode 100644 index 00000000..35ea0455 --- /dev/null +++ b/docs/content/about.md @@ -0,0 +1,13 @@ +--- +title: About +excerpt: Chisel is a creation of Xfive, a web development studio specializing in modern WordPress development. +order: 100 +--- + +At Xfive we love WordPress but we think that WordPress development could be a slightly more pleasant experience. That’s why we are fans of [Timber library](https://upstatement.com/timber/). + +A few years ago we created Chisel, a tool for creating and developing WordPress themes based on Timber. + +The latest version of Chisel was completely rewritten to Webpack and adds a bunch of new [features](https://rewrite-with-webpack-docs-redesign--getchisel.netlify.app/docs/features), including support for static websites. + +If you are looking for documentation of the previous, Gulp based, version, it’s [here](https://old.getchisel.co/). diff --git a/docs/content/docs.md b/docs/content/docs.md new file mode 100644 index 00000000..37cb3f1b --- /dev/null +++ b/docs/content/docs.md @@ -0,0 +1,31 @@ +--- +title: Documentation +excerpt: Our goal is to provide comprehensive and up-to-date documentation of Chisel. +order: 100 +--- + +What follows is an outline of particular documentation sections: + +## [Features](/docs/features) +Chisel features that will make your developer’s life easier. + +## [Installation](/docs/installation) + +Install necessary software so you can work with Chisel. + +## [Project setup](/docs/setup) + +Learn how to setup Chisel project from the command line. + +## [Project structure](/docs/structure) + +Once your Chisel project is setup, get familiar with its structure. + +## [Development](/docs/development) + +Learn how to develop WordPress themes or front-end templates in Chisel. + +## [In simple terms](/docs/simple) + +Explanation of what Chisel is in simple terms. + diff --git a/docs/content/docs/development.md b/docs/content/docs/development.md new file mode 100644 index 00000000..3faf7b5a --- /dev/null +++ b/docs/content/docs/development.md @@ -0,0 +1,7 @@ +--- +title: Development +excerpt: Learn the best development practices with Chisel to produce quality and maintainable code. +order: 1000 +--- + +Development documentation is divided into sections describing various aspects of the development of WordPress themes or front-end templates. diff --git a/docs/content/docs/development/code-quality.md b/docs/content/docs/development/code-quality.md new file mode 100644 index 00000000..d1fbc528 --- /dev/null +++ b/docs/content/docs/development/code-quality.md @@ -0,0 +1,32 @@ +--- +title: Code Quality +excerpt: Chisel uses various tools to increase the quality of your code +order: 1800 +--- + +## [Prettier](https://prettier.io/) - code formatter + +Prettier is a code formatter which can automatically format your code when you save a file. Your code then automatically conforms to the project's coding standards and passes linter checks. + +Prettier comes preinstalled with Chisel and it's synced with Eslint and stylelint (see below). + +One of the easiest ways to use Prettier is to install a plugin for your favorite editor. See _Editor Support_ section on [Prettier's homepage](https://prettier.io/). + +## [ESLint](https://eslint.org/) - JavaScript linter + +ESLint is a JavaScript linter which analyzes your JavaScript source code for potential errors, stylistic issues, etc. + +## [stylelint](https://stylelint.io/) - CSS linter + +stylelint is a CSS linter that helps you avoid errors and enforce consistent conventions in your stylesheets. + +## HTML Validation + +On the front-end projects, HTML files are valided with [htmlhint](https://github.com/bezoerb/gulp-htmlhint) + +## How to tell linters to ignore your code + +Linters check the source code when you run `npm run build`. If for any reason you'd like the linters not to check your source code (for example, you are not able to fix the errors), you can do the following: + +- add `src` to `.eslintignore` to make ESLint ignore your JavaScript files +- add `src` to `.stylelintignore` to make stylelint ignore your SCSS files diff --git a/docs/content/docs/development/configuration.md b/docs/content/docs/development/configuration.md new file mode 100644 index 00000000..a0b18505 --- /dev/null +++ b/docs/content/docs/development/configuration.md @@ -0,0 +1,143 @@ +--- +title: Configuration +order: 1950 +--- + +## Paths + +The paths used by Chisel by default are presented below, all can be updated in the configuration. All paths except for `base` are relative to base. `base` is relative to project root (current working directory is considered project root when running commands). + +```js +{ + source: { + base: 'src', + scripts: 'scripts', + styles: 'styles', + assets: 'assets', + templates: 'templates', // Static only + content: '../content', // Static only + public: '../public', // Static only + }, + output: { + base: 'dist', + scripts: 'scripts', + styles: 'styles', + assets: 'assets', + }, +} +``` + +## Shared (available in both WordPress and Static projects) + + + +### `react` + +`boolean = false` + +Enables react support. When enabled it makes changes necessary to enable JSX processing (Babel), hot reload during development (Babel, webpack), and changes default eslint configuration to support and check react components. + +Before enabling you should: + +1. Install necessary dependencies (`npm install react-hot-loader @hot-loader/react-dom`) +1. Mark your root component as hot-exported as described in [react-hot-loader documentation](https://github.com/gaearon/react-hot-loader#getting-started) + +### `plugins` + +`(string|function)[] = []` + +List of Chisel plugins to be loaded. This is an array that may contain strings that are passed to `require()` so module names or paths to JS files (please use `require.resolve` to ensure the path is properly resolved) or functions that are treated as plugins. + +### `transpileDependencies` + +`Array = []` + +By default `babel-loader` ignores all files inside `node_modules`. If you want to explicitly transpile a dependency with Babel, you can list it in this option. + +### `configureWebpack` + +`object | function` + +If the value is an Object, it will be merged into the final config using [webpack-merge](https://github.com/survivejs/webpack-merge). + +If the value is a function, it will receive the resolved config as the argument. The function can either mutate the config and return nothing, OR return a cloned or merged version of the config. + +See also: [Working with Webpack > Simple Configuration in Vue CLI documentation](https://cli.vuejs.org/guide/webpack.html#simple-configuration). + +### `chainWebpack` + +A function that will receive an instance of `ChainableConfig` powered by [webpack-chain](https://github.com/neutrinojs/webpack-chain). Allows for more fine-grained modification of the internal webpack config. + +See also: [Working with Webpack > Chaining in Vue CLI documentation](https://cli.vuejs.org/guide/webpack.html#chaining-advanced). + +### `hooks` + +Hooks are an advanced feature allowing you to influence Chisel behavior in ways not possible with configuration options. See [Hooks](./configuration/hooks) for details. + +## WordPress Websites + + + +### `wp.directoryName` + +`string = 'wp'` + +Name of the directory containing WordPress files. Some situations like [serving website from a subdirectory on Pantheon](https://pantheon.io/docs/nested-docroot/) may require a different directory name. Please note that additionally you should adjust various ignore files (like `.eslintignore`) and WP CLI config (`wp-cli.yml`). Additionally please note that using non-default value has not been well tested. + +### `wp.themeName` + +`required, string` + +Name of the directory with your theme, default us `[project-slug]-chisel`. + +### `wp.url` + +URL when WordPress is reachable, this is used as a proxy target during development, default is `https://[project-slug].test`. + +## Static Websites + + + +### `staticFrontend.serveDist` + +`boolean = false` + +When enabled development server will serve the dist directory, meaning that url for the page generated from the `src/templates/hello.twig` template will be `https://localhost:3000/hello.html` instead of `https://localhost:3000/dist/hello.html`. + +This is set to `true` when _Serve dist directory in dev / don't generate pages index_ option was selected during project creation. + +### `staticFrontend.skipHtmlExtension` + +`boolean = false` + +When enabled: + +- When using [content](/docs/development/static-content) `post.link` and `postLink` functions return links without HTML extensions. +- During development development server assumes that all URLs without extension are HTML files, for example `/hello` url will look for `/hello.html` file. + +This is set to `true` when _Don't include html extension in links (posts API) & support them in dev_ option was selected during project creation. + +### `staticFrontend.buildFormat` + +`string = 'prettify': 'prettify' | 'minify' | 'as-is'` + +Decide how generated HTML should be formatted. This is applied only during the build, not development. + +- `prettify` (default) - generated is nicely formatted, this is useful when generated files may be manually modified later. +- `minify` - generated HTML is minified, good to use when the site is automatically deployed. +- `as-is` - no additional formatting is done, HTML generated during Twig processing is used. + +### `staticFrontend.htmlHint` + +`boolean = true` + +You can enable or disable [HTML Hint](https://htmlhint.com/) validation here. Note that HTML Hint validation is run on generated html files during development/build, not on the source files. + +### `functions` + +`{ [function name]: (functionContext, ...args) => any } = {}` + +The object containing functions that will be available in Twig templates. + +- Functions can be `async`. +- Functions receive `functionContext` object as first argument followed by arguments that were passed to the function. `functionContext` object contains two properties `context` that contains Twig Context (variables available inside Twig templates) and functions object that contains Chisel builtin functions that are available in Twig templates. `context` may contain `post` object when [using content directory](/docs/development/static-content). See the config file for this documentation to see an example of a custom function [chisel.config.js](https://github.com/xfiveco/generator-chisel/tree/master/docs/chisel.config.js#L80). diff --git a/docs/content/docs/development/configuration/hooks.md b/docs/content/docs/development/configuration/hooks.md new file mode 100644 index 00000000..9a5ee6e8 --- /dev/null +++ b/docs/content/docs/development/configuration/hooks.md @@ -0,0 +1,52 @@ +--- +title: Hooks +excerpt: Hooks are listeners to events happening inside Chisel allowing you to influence Chisel behavior in ways not possible with configuration options. +order: 1975 +--- + +Please note that while the list of available hooks is limited we're open to adding more when necessary. + +## Shared (available in both WordPress and Static projects) + +### `pluginsToInitialize(plugins)` + +Called before plugins are initialized, allows you to modify the plugins that will be initialized. + +### `pluginsInitialized` + +Called after all plugins have been initialized. + +## WordPress Websites + +### `wordPress.devMiddlewareOptions(devMiddlewareOptions)` + +Called during `dev` command, allows you to modify [webpack-dev-middleware options](https://github.com/webpack/webpack-dev-middleware#options). + +### `wordPress.hotMiddlewareOptions(hotMiddlewareOptions)` + +Called during `dev` command, allows you to modify [webpack-hot-middleware options](https://github.com/webpack-contrib/webpack-hot-middleware#middleware). + +### `wordPress.browserSyncConfig(browserSyncConfig)` + +Called during `dev` command, allows you to modify [BrowserSync options](https://www.browsersync.io/docs/options). + +## Static Websites + +Nothing at the moment. + +## Example + +```js +{ + hooks: { + wordPress: { + browserSyncConfig(config) { + // Stop the browser from automatically opening + config.open = false; + // Don't show any notifications in the browser + config.notify = false; + }, + }, + }, +} +``` diff --git a/docs/content/docs/development/itcss.md b/docs/content/docs/development/itcss.md new file mode 100644 index 00000000..bdc7911f --- /dev/null +++ b/docs/content/docs/development/itcss.md @@ -0,0 +1,47 @@ +--- +title: ITCSS +excerpt: ITCSS stands for Inverted Triangle CSS and it helps you make project CSS scalable and maintainable. +order: 1500 +--- + +One of the key principles of ITCSS is that it separates your CSS codebase into several sections (called layers) which take form of the inverted triangle. These layers are present in Chisel as following folders inside the `src/styles` folder: + +## `settings` + +Used with preprocessors and contain font, color definitions, etc. + +## `tools` + +Globally used mixins and functions. It’s important not to output any CSS in the first two layers. + +## `generic` + +Reset and/or normalize styles, box-sizing definition, etc. This is the first layer which generates actual CSS. + +## `elements` + +Styling for bare HTML elements (like H1, A, etc.). These come with default styling from the browser so you can redefine them here. + +## `objects` + +class-based selectors which define undecorated design patterns, for example, media object known from OOCSS + +## `components` + +Specific UI components. This is where the majority of your work takes place and our UI components are often composed of Objects and Components + +## `utilities` + +Utilities and helper classes with the ability to override anything which goes before in the triangle, eg. hide helper class + +## `vendor` + +Chisel's addition to the original ITCSS structure. This is where you can place the vendor's specific CSS. + +## `main.scss` + +The main file where other stylesheets are imported, does not write styles directly to this file. + +When starting to work with ITCSS in Chisel, try to follow the existing code structure and examples. + +For more detailed introduction to ITCSS, check out the blog post [ITCSS: Scalable and Maintainable CSS Architecture](https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/) diff --git a/docs/content/docs/development/javascript.md b/docs/content/docs/development/javascript.md new file mode 100644 index 00000000..7d71cb36 --- /dev/null +++ b/docs/content/docs/development/javascript.md @@ -0,0 +1,21 @@ +--- +title: JavaScript +excerpt: Chisel supports writing modern JavaScript with ES6+ +order: 1600 +--- + +You will write your JavaScript in the `src/sripts` folder which is organized in the following manner: + +- `app.js` - entry point file, everything required/imported in this file will be bundled together by [webpack](https://webpack.js.org/) +- `modules` - store your functionality to separate files in this folder and require/import them in the entry point file +- `modules/greeting.js` - a sample JS module, delete or replace this one with your functionality + +Chisel supports multiple entry points so you can create other files in the `scripts` directory next to `app.js` and they will be bundled separately. You can also use [dynamic imports](https://webpack.js.org/api/module-methods/#import) to load a fragment of code only when you need it. + +## Files optimization + +JavaScript bundles created when running `npm run build` are minified and file names are revisioned. That means that a content hash is append to the filename so it looks like this `app.7ea16125.js`. This way you can set up content caching in the far future. + +## Code formatting and linting + +Check out [Code Quality](/docs/development/code-quality). diff --git a/docs/content/docs/development/javascript/jquery.md b/docs/content/docs/development/javascript/jquery.md new file mode 100644 index 00000000..3394aea4 --- /dev/null +++ b/docs/content/docs/development/javascript/jquery.md @@ -0,0 +1,87 @@ +--- +title: jQuery +excerpt: You might not need jQuery. But if you do, check out some specifics when working with jQuery in Chisel. +order: 1700 +--- + +## Using jQuery plugins with webpack + +One of the known issues we encounter while front-end development is usage of the jQuery plugins like `flexslider` alongside webpack module bundler. + +The usual solution to that problem can be treated this way: + +### 1) Install `jquery` node-module if you haven't done it yet + +This is needed because many jQuery plugins have a check if they run inside a module bundler and require `jquery` to be a node-module, but they tend to bind themselves to global `$` object either way. + +```bash +npm install --save jquery +``` + +### 2) Make jQuery global (for various reasons) + +```js +window.jQuery = window.$ = require('jquery'); +``` + +### 3) Require plugin + +```js +require('flexslider'); // Usually they bind to global jQuery object +``` + +## Using jQuery and its plugins outside of the webpack bundle + + + +From time to time you may stumble upon a legacy jQuery plugin or one which just doesn't want to play nice with webpack. In such a case, you can setup the project to place jQuery and its plugins _outside of the main bundle_. + +### Existing project setup + +You can try the following steps: + +#### 1) Place jquery in assets directory and load it in the template + +Download and place jQuery (for example [`jquery.min.js`](https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js)) in the assets directory, then load it in the `layouts/base.twig` before `app.js`: + +```twig + + +``` + +> Note: in the above example we additionally created the `jquery` directory in the `assets` directory. + +#### 2) Exclude jQuery from webpack + +Open up `chisel.config.js` in the root directory and add following function to exported object: + +```js +configureWebpack(config) { + config.externals.push({ jquery: 'window.jQuery' }); +}, +``` + +This ensures that when jQuery is imported from one of your JS files, or libraries imported by your JS files it references global jQuery we're loading in the template instead of loading a second copy of jQuery. + +### How to use it + +This setup will allow you to place plugins inside a special `src/scripts/vendor` directory. Mind they won't be picked up automatically! You need to add the plugin name in the `src/scripts/vendor.json` file. Assuming that you've placed `select2.full.min.js` inside the _vendor_, the _vendor.json_ file should look like this: + +When you need to use a jQuery plugin that's not compatible with JS bundling tools you can place them in the assets directory and load them between jQuery and your JS. + +```twig + + + +``` + +### Notes + +When writing code it's possible to `import $ from 'jquery'` or `var $ = require('jquery')` and **use plugins from the assets** directory. + +## Library not available through npm + +Place it in assets directory and load in a base layout like demonstrated above. diff --git a/docs/content/docs/development/pages.md b/docs/content/docs/development/pages.md new file mode 100644 index 00000000..8fa35ede --- /dev/null +++ b/docs/content/docs/development/pages.md @@ -0,0 +1,41 @@ +--- +title: Pages +excerpt: Once your project is setup, you need to add pages, you will be working on, to it. +order: 1200 +--- + +## Adding pages + +From the command line type: + +```bash +npm run add-page "Page Name" +``` + +for example + +```bash +npm run add-page "Home" +``` + +You can also create multiple pages at once by separating page names with space: + +```bash +npm run add-page "Home" "About Us" "Contact Us" "News" +``` + +### WordPress Website + +When you add a page on WordPress project: + +- Twig template is automatically created in `wp/wp-content/themes/[your-theme]/templates/page-{page-slug}.twig` +- Page is accessible at `project-name.test/{page-slug}` +- If you haven't before, flush the rewrite rules _Settings -> Permalinks -> Save changes_ + +### Static Website + +In Static project, it creates Twig template in `src/templates` directory or it creates Twig templates or markdown files in `content` directory if it is used. The project index is regenerated (if it's used) and the page is added to it. + +## Removing pages + +To remove the page remove its template or content file, and remove it from WP Admin or project index if necessary. diff --git a/docs/content/docs/development/performance.md b/docs/content/docs/development/performance.md new file mode 100644 index 00000000..6b8c6821 --- /dev/null +++ b/docs/content/docs/development/performance.md @@ -0,0 +1,24 @@ +--- +title: Performance +excerpt: Chisel aims to offer great performance out-of-box. The rest is up to you. +order: 1900 +--- + +## JavaScript + +JavaScript bundle is minified and deferred. + +The file name is revisioned. A content hash is appended to the filename (eg. `app.7ea16125.js`) so you can set up content caching in the far future. + +## CSS + +CSS styles are concatenated to one file and minified. + +The file name is revisioned. A content hash is appended to the filename (eg. `main.6a889b04.css`) so you can set up content caching in the far future. + +## WordPress + +- jQuery is not included by default +- [Disable Emojis](https://wordpress.org/plugins/disable-emojis/) plugin is installed +- static resources (CSS, JS, images) are served with far-future expires headers to leverage browser caching +- we recommend using WordPress hosting which uses a proxy cache (eg. [Pantheon](https://pantheon.io/)) or a cache plugin which generates static HTML files like [WP Rocket](https://wp-rocket.me/) diff --git a/docs/content/docs/development/static-content.md b/docs/content/docs/development/static-content.md new file mode 100644 index 00000000..ad0786d9 --- /dev/null +++ b/docs/content/docs/development/static-content.md @@ -0,0 +1,101 @@ +--- +title: Static Content +excerpt: When working on Static Websites you can leverage content directory to create nested pages structure or generate pages based on Markdown or JSON content +order: 1250 +--- + +By default after creating a Static Website project, new pages are created in the `src/templates` directory. This doesn't support nested pages or doesn't integrate well with rich content (like Markdown). + +To support more use cases for Chisel we created an opt-in content experience. To use it you need to create a project top-level `content` directory. Inside this directory, you can create Twig, Markdown, and JSON files. + +- Markdown files can contain YAML front matter (block wrapper with triple-dashed lines at the beginning of the file, see example below). +- Markdown and JSON are rendered using templates from the `src/templates` directory, `twig` files are rendered directly. + - By default `post.twig` template is used. + - MD & JSON files can define a template to use to render a given file using the `template` property. +- When rendering content `post` object is available (details after example). +- `getPosts` function is available in templates to query all + +## Example + +Let's create `content/static-content.md` with following content: + +```text-md +--- +title: Static Content +excerpt: When working on Static Websites you can leverage content directory to create nested pages structure or generate pages based on Markdown or JSON content +order: 1250 +--- + +By default after creating a Static Website project, new pages are created in the `src/templates` directory. This doesn't support nested pages or doesn't integrate well with rich content (like Markdown). +``` + +And `src/templates/post.twig`: + +```twig +{% extends "layouts/base.twig" %} +{% block content %} +
    +

    {{ post.title }}

    +

    {{ post.data.excerpt }}

    +
    {{ post.content }}
    +
    +{% endblock %} +``` + +As we can see, all of the content from our markdown file is available for us in the template. Everything from front matter (or JSON content) is available as a `post.data` object. The title is aliased for convenience. Some other properties (like `template` or `order`) may have special meaning but they are available in the data object. Markdown document content is available, converted to HTML, as `post.content`. + +## `post` object + +`post` object is available in templates when rendering content pages with data for the current page. Array of `post` objects is returned by `getPosts` function. + +> Note that when you're using post object in custom Twig functions the propertied documented below are functions. Some may also be async functions (returning Promise). + +### `post.id` / `post.ID` + +ID is a path to the post without extension. + +### `post.type` + +One of: `twig`, `md`, `json`. + +### `post.title` + +Alias for `post.data.title` or empty string. + +### `post.parent` + +Parent post object, null when there is no parent, this may be true for top-level files, but also when there is no direct parent page, for example `nested/hello` page exists but not `nested`. + +### `post.children` + +Child posts array. + +### `post.data` + +All the content from the Markdown or JSON file is stored in `post.data` + +### `post.contentRaw` / `post.content` + +In Markdown files `content` contains main document content converted to HTML, `contentRaw` original Markdown content. In other types, both are empty strings. + +### `post.link` / `post.link(otherPost)` + +Returns link to the post, absolute by default, relative to `otherPost` if passed. The link may have an `html` extension depending on the configuration. + +`postLink` function (`postLink(otherPost)`) is available to generate link relative to current post, shortHand to `otherPost.link(post)`. + +### `post.adjacent(sort, query)`, `post.prev`, `post.prev(field)` `post.next`, `post.next(field) + +Adjacent return adjacent post based on given sort order and query. + +Prev/next return previous or next post sorted by given field (`data.order` by default) and ID as a secondary sort field. + +## `getPosts(query, sort)` function + +Allows to query all pages available on the site. Internal store is based on [NeDB](https://github.com/louischatriot/nedb). Please check [its documentation for querying](https://github.com/louischatriot/nedb#finding-documents) to learn more. + +For example `getPosts({ parent: { '$exists': false } }, { 'data.order': 1 })` would search for documents that have no parents and sort them by `order` field. + +## Development limitations + +When running the development server all changes to existing documents should be applied and the page reloaded but additions, removals, and renames of existing documents are not supported at this time and require a manual restart of the dev server. diff --git a/docs/content/docs/development/tasks.md b/docs/content/docs/development/tasks.md new file mode 100644 index 00000000..b63d9335 --- /dev/null +++ b/docs/content/docs/development/tasks.md @@ -0,0 +1,88 @@ +--- +title: Tasks +excerpt: Development tasks are commands you use on the command line to start development. +order: 1100 +--- + +Once you [setup a project](/docs/setup) and get familiar with [the project structure](/docs/structure), it's time to start development. To do so, use the following tasks on your **command line**. + +## `npm run dev` + +This is a basic command to work with Chisel. It starts a development server with your project at `localhost:3000` and opens the address in your browser. + +The command then starts a task that watches for changes in your source files. This is what happens if you make changes in the following files: + +- **Twig templates** are compiled to PHP on WordPress project or to HTML on front-end projects and the browser reloads the page +- **Content files** are compiled to HTML using Twig templates, see [Static Content](/docs/development/static-content) for more details. +- **PHP files** - browser reloads the page +- **SCSS files** are compiled to CSS and the browser injects new CSS to the page +- **JavaScript files** are transpiled with Babel and the browser reloads the page + +During development unminified version of files are linked in pages. + +### Browsersync configuration (WordPress only) + +If you'd like to change the Browsersync configuration, you can do so in `chisel.config.js`, for example here we've changed notifications and browser opening: + +```js +{ + hooks: { + wordPress: { + browserSyncConfig(config) { + // Stop the browser from automatically opening + config.open = false; + // Don't show any notifications in the browser + config.notify = false; + }, + }, + }, +} +``` + +See [Hooks documentation](/docs/development/configuration/hooks) for more information. + +### Proxy on WordPress projects + +Browsersync proxies to your WordPress instance running at `project-name.test` (or other address configured during project creation), it means that when you look at the project at `localhost:3000`, it loads the project from `project-name.test`. + +You can configure the url in `chisel.config.js` by changing `url` in `wp` variable. + +```js +// ... +const wp = { + // ... + url: 'https://some-target:8888/', +}; +// ... +``` + +If you don't want to commit your url to repository, you can also create `chisel.config.local.js` file with similar content: + +```js +module.exports = { + wp: { + url: 'https://some-target:8888/', + }, +}; +``` + +## `npm run build` + +This command lints (validates compliance with good practices) JS and SCCS files and then creates production-ready files in the `dist` folder. + +Generated JS and CSS files are minified and JS, CSS, and assets are revisioned. Revisioning files mean that a content hash is append to the filename so it looks like this `main.6a889b04.css`. This way you can set up content caching in the far future. + +In WordPress projects depending on where you are looking at your project, a different version of styles and scripts are used in WordPress projects: + +- `localhost:3000` - unminified CSS +- `project-name.test` - revisioned and minified CSS and JS files + +## `npm run build-report` + +This is a special variant of build that additionally generated three files (`report-analyzer.html`, `report-source-map-scripts.html`, and `report-source-map-styles.html`). that give you more insides into the size of generated files. + +The first one is generated with [Webpack Bundle Analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer) and the other two are generated with [source-map-explorer](https://github.com/danvk/source-map-explorer). On the one hand, WBA is working only with JS, on the other hand, it provides more insides and more options when analyzing JS size. Because of that, we decided to include both solutions. + +## `npm run add-page` + +See [Pages](./pages). diff --git a/docs/content/docs/development/twig.md b/docs/content/docs/development/twig.md new file mode 100644 index 00000000..39b0ea17 --- /dev/null +++ b/docs/content/docs/development/twig.md @@ -0,0 +1,11 @@ +--- +title: Twig +excerpt: Chisel uses Twig templating engine. +order: 1300 +--- + +In WordPress projects, Twig is implemented via [Timber](https://www.upstatement.com/timber/). In front-end projects, Twig is supported via its JavaScript implementation, [Twig.js](https://github.com/twigjs/twig.js). + +Twig syntax is very intuitive and flexible. For more details on how to work with it, check out the [documentation](https://twig.symfony.com/doc/2.x/). + +When writing Twig templates, follow official [Twig coding standards](https://twig.symfony.com/doc/2.x/coding_standards.html). diff --git a/docs/content/docs/development/wordpress.md b/docs/content/docs/development/wordpress.md new file mode 100644 index 00000000..d4f1af34 --- /dev/null +++ b/docs/content/docs/development/wordpress.md @@ -0,0 +1,176 @@ +--- +title: WordPress +excerpt: Chisel supports easy and fast theme development with Timber. Chisel's starter theme helps you organize project functionality in a logical, maintainable way. +order: 1400 +--- + +## Creating theme front-end + +Chisel allows easy front-end development prior to WordPress development. Suppose you have 3 pages to develop the front-end for `Team`, `Team Member`, `Contact`. + +1. Add these pages from the command line like described in the previous sections +2. Now your pages are accessible under `project-name.test/team/`, `project-name.test/team-member/` and `project-name.test/contact/`. +3. Start adding HTML to relevant Twig templates. Where applicable try to use [Twig syntax](https://twig.symfony.com/doc/3.x/templates.html) +4. Create styles in `src/styles`. +5. Once you are done with front-end development a WordPress developer will add the required functionality + +## Developing theme functionality + +Inside the theme, there is a `Chisel` folder with various classes which extend WordPress or add theme functionality. It's recommended to follow the existing structure and update these classes or add new classes here instead of adding functionality directly to `functions.php`. + +Classes you can work with: + +### `\Chisel\Media.php` + +Default media settings for Chisel, you can change or extend media settings here. + +### `\Chisel\Post.php` + +This class extends the `\Timber\Post` class + +### `\Chisel\Performance.php` + +Class for optimizing performance allows to setup which JS scripts should be deferred or asynced + +### `\Chisel\Site.php` + +This class extends the `\Timber\Site` class and is used to setup whole site related configuration + +### `\Chisel\Security.php` + +Default security settings for Chisel, you can change or extend security settings here + +### `\Chisel\Extensions\DataType.php` + +Use this class to register custom post types and taxonomies + +### `\Chisel\Extensions\Twig.php` + +Use this class to extend Twig functionality + +### `\Chisel\Extensions\Theme.php` + +Use this class to extend theme functionality + +If you want to add a new custom class, you can copy and adjust one of the existing classes. Then load your class in `functions.php` + +Refer to [Timber](https://upstatement.com/timber/) documentation if you are new to WordPress development with Timber. + +## Built-in extensions for Timber + +### `ChiselPost` + +You can use this function if you want to create a post class inside the Twig file. As an argument, you can pass post id, post object, or an array consisting of field values for the post. When creating a fake post by passing an array of fields as an argument you can use `_fields` key to set post meta values loaded via the `get_field` method to simulate for example ACF values. You can also load the existing post that will have fake fields by passing the post's id with an `ID` key: + +Example usage: + +```php +{% set post = ChiselPost({ + 'post_title': 'Fake post title', + 'post_content': 'Fake post content', + '_fields': { + 'special_acf_field': 'field value' + } +}) %} +``` + +This will create a `\Chisel\Post` object that you can use like any other post loaded from the database: + +```html +
    +

    {{ post.title }}

    +

    {{ post.content }}

    +

    {{ post.get_field('special_acf_field') }}

    +
    +``` + +### `className` + +You can use this function if you want to avoid writing long classes with multiple modifiers by hand: + +Example usage: + +```php +
    +``` + +It will generate (assuming post of type `post` and no thumbnail): + +```html +
    +``` + +`assetPath`: this function returns the real path of the asset file from the `dist/assets` folder. + +Example usage: + +```twig +{{ site.name }} +``` + +## Good practices + +### Use `get_field` + +When using ACF try to always use `get_field` method of `Chisel\Post` instead of direct call to the field: + +#### Good: + +```html +{{ post.get_field('field_name') }} +``` + +#### Bad: + +```html +{{ post.field_name }} +``` + +Read more on the topic in [ACF Cookbook](https://timber.github.io/docs/guides/acf-cookbook/) + +### Security + +In addition to default security settings you can also: + +#### Protect WP includes + +Add `.htaccess` to the `wp-includes` folder with the following content: + +```bash + + Order allow,deny + Deny from all + + + Allow from all + + + Allow from all + +``` + +#### Protect uploads folder + +Add `.htaccess` to the `wp-content/uploads` folder with the following content: + +```bash + + Order allow,deny + Deny from all + +``` + +Note: this can break some plugins + +## Common issues + +### Gravity Forms JavaScript issues + +If you encounter Gravity Forms JavaScript issues that might be related to Chisel using a `defer` tag, check out [this workaround](https://bjornjohansen.com/load-gravity-forms-js-in-footer). diff --git a/docs/content/docs/features.md b/docs/content/docs/features.md new file mode 100644 index 00000000..a1070b6f --- /dev/null +++ b/docs/content/docs/features.md @@ -0,0 +1,17 @@ +--- +title: Features +excerpt: Chisel comes with a lot of features that help you to develop your project faster and with higher quality. +order: 150 +--- + +- automatic [WP-CLI](https://wp-cli.org/) based WordPress installation +- automatic installation of [Timber](https://upstatement.com/timber/) and [Disable Emojis](https://wordpress.org/plugins/disable-emojis/) plugin, optional installation of other plugins like [ACF](https://www.advancedcustomfields.com/) +- Chisel WordPress starter theme with a logical, easy to follow structure +- [Twig](https://twig.sensiolabs.org/) templating engine +- webpack based JS/SCSS bundling with hot reload in dev mode +- creation of separate non-minified bundles during build +- SCSS with [ITCSS architecture](https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/) +- [PostCSS](https://postcss.org/) support +- stylelint, Prettier and ESLint with [config tailored for Chisel](https://github.com/xfiveco/eslint-config-chisel) and [Prettier](https://prettier.io/) synced together for consistent and hassle free code formatting +- HTML validation with [htmlhint](https://github.com/bezoerb/gulp-htmlhint) +- optional React support diff --git a/docs/content/docs/installation.md b/docs/content/docs/installation.md new file mode 100644 index 00000000..49dee727 --- /dev/null +++ b/docs/content/docs/installation.md @@ -0,0 +1,53 @@ +--- +title: Installation +excerpt: The following software needs to be installed if you want to setup and develop projects with Chisel +order: 200 +--- + +_These installations need to be done just once so you can skip this section if you have the software already installed._ + +## Node.js + +Install [Node.js](https://nodejs.org/) so you can work with `npm`, Node package manager. Version 10.14.2+ or 12+ is required. + +## Chisel + +Install Chisel globally. In your [command line](https://webdesign.tutsplus.com/articles/the-command-line-for-web-design-introduction--cms-23493) type: + +```bash +yarn global add generator-chisel +# or +npm -g install generator-chisel +``` + +If you want to update your existing Chisel installation to the latest version, also run: + +```bash +yarn global add generator-chisel +# or +npm -g install generator-chisel +``` + +## Apache, PHP, and MySQL + +If you want to develop WordPress projects, you need to install Apache, PHP, and MySQL. The easiest option is to use development environments like [MAMP](https://www.mamp.info/en/) or [XAMPP](https://www.apachefriends.org). If using MAMP, check _Allow network access to MySQL_. + +If you are on macOS, we recommend to install necessary packages with Homebrew according to the following guides: + +- [macOS 11.0 Big Sur Apache Setup: Multiple PHP Versions](https://getgrav.org/blog/macos-bigsur-apache-multiple-php-versions) - skip multiple PHP versions installation if you want +- [macOS 11.0 Big Sur Apache Setup: MySQL, Xdebug & More...](https://getgrav.org/blog/macos-bigsur-apache-mysql-vhost-apc) - you can skip YAML and Xdebug installation + +### Known Issues + +#### `mysql` or `mysqlcheck` not found + +Chisel is using [WP-CLI](https://wp-cli.org/) for most WP-related operations. WP-CLI is using `mysql` and `mysqlcheck` binaries, so check out if you have `mysql` and `mysqlcheck` binaries in your `$PATH` by running the following commands: + +```bash +mysql --version +mysqlcheck --version +``` + +## Problems with installation? + +[Submit an issue](https://github.com/xfiveco/generator-chisel/issues) at GitHub with a label `question` or write us to the e-mail [chisel@xfive.co](mailto:chisel@xfive.co). We are happy to help. diff --git a/docs/content/docs/installation/wildcard-virtual-hosts.md b/docs/content/docs/installation/wildcard-virtual-hosts.md new file mode 100644 index 00000000..c61a0a1a --- /dev/null +++ b/docs/content/docs/installation/wildcard-virtual-hosts.md @@ -0,0 +1,132 @@ +--- +title: Wildcard virtual hosts +excerpt: This step is optional but highly recommended if you develop WordPress projects +order: 300 +--- + +It will ensure that each new local development domain will work out of the box on your computer and you won’t have to edit `hosts` and `httpd-vhosts.conf` files every time. This is achieved by setting up wildcard virtual hosts and DNS. + +## macOS + +Throughout this guide, we assume that your username is `developer` and you store your projects inside `~/Projects` directory. + +Based on an awesome tutorial from [Chris Mallinson](https://mallinson.ca/osx-web-development/). + +This tutorial assumes you have MySQL and Apache installed (they come by default with macOS). If you use MAMP, use it as you like, but this tutorial aims for a built-in Apache & MySQL setup. You can find additional information about where MAMP stores its config files [in this article](https://dev.to/crankysparrow/configuring-virtual-hosts-with-mamp-f3i). + +Make sure you have Xcode (`xcode-select --install`) and [brew](https://brew.sh/) installed. + +### 1. Install and setup `dnsmasq` + +This is for `*.test` domain wildcarding: + +```bash +brew install dnsmasq +cd $(brew --prefix); mkdir etc; echo 'address=/.test/127.0.0.1' > etc/dnsmasq.conf +sudo cp -v $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons +sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist +sudo mkdir /etc/resolver +sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/test' +``` + +### 2. Edit `/etc/apache2/httpd.conf` + +Uncomment the line (remove `#`): + +```bash +LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so +``` + +### 3. Edit `/etc/apache2/extra/httpd-vhosts.conf` + +Add VirtualHost config. + +Reminder – we are assuming your username is `developer` and your store projects inside `~/Projects` directory. + +```apacheconf + + ServerAlias localhost *.test + # Chisel stores WP inside wp folder in the root of your project + VirtualDocumentRoot /Users/developer/Projects/%1/wp + UseCanonicalName Off + + Options FollowSymLinks + AllowOverride All + Order allow,deny + Allow from all + Require all granted + + +``` + +### 4. Restart Apache + +```bash +sudo apachectl restart +``` + +## Linux + +Follow the article here: [https://brunodbo.be/blog/2013/04/26/setting-up-wildcard-apache-virtual-host-wildcard-dns](https://web.archive.org/web/20200219082058/http://brunodbo.be/blog/2013/04/26/setting-up-wildcard-apache-virtual-host-wildcard-dns). + +## Windows + +### 1. Install and setup Acrylic DNS Proxy + +This is for `*.test` domain wildcarding + +Download and install [Acrylic DNS Proxy](https://mayakron.altervista.org/wikibase/show.php?id=AcrylicHome), then set it up at your system, eg. [Windows 10](http://mayakron.altervista.org/support/acrylic/Windows10Configuration.htm). + +Add `127.0.0.1 *.test` to **AcrylicHosts.txt** file so it looks like: + +```text +127.0.0.1 localhost localhost.localdomain +::1 localhost localhost.localdomain +127.0.0.1 *.test +``` + +### 2. Edit `httpd.conf` + +If you are using [XAMP](https://www.apachefriends.org/) it would be located in `c:\xampp\apache\conf`. Uncomment the line (remove `#`): + +```apacheconf +LoadModule vhost_alias_module modules/mod_vhost_alias.so +``` + +### 3. Edit `httpd-vhosts.conf` + +If you are using [XAMP](https://www.apachefriends.org/) it would be located in `c:\xampp\apache\conf\extra`. Add VirtualHost config: + +```apacheconf + + Options Indexes FollowSymLinks Includes ExecCGI + AllowOverride All + Order allow,deny + Allow from all + + + + ServerName localhost + ServerAlias localhost + DocumentRoot c:/xampp/htdocs/ + + + + ServerAlias *.test + # notice wp at the end, that's because Chisel serves WP from a subfolder + VirtualDocumentRoot c:/xampp/htdocs/%-1/%-2+/wp + +``` + +### 4. Restart Apache + +Restart Apache from the XAMPP control. + +## You're all set up! + +Now your projects inside `~/Projects` directory (`c:\xampp\htdocs\test` on Windows) will directly map to `*.test` host, so: + +- `/User/developer/Projects/testproject` (`c:\xampp\htdocs\test\testproject`) will be available under `https://testproject.test` +- `/User/developer/Projects/mywork` (`c:\xampp\htdocs\test\mywork`) will be available under `https://mywork.test` + +And so on. Chisel will set up BrowserSync proxy for you under `your-project-name.test` address. It's advisable that you name your project (during `chisel create` command) exactly the same as the directory you're in, so there's no need for you to configure anything. diff --git a/docs/content/docs/setup.md b/docs/content/docs/setup.md new file mode 100644 index 00000000..ab819572 --- /dev/null +++ b/docs/content/docs/setup.md @@ -0,0 +1,18 @@ +--- +title: Project setup +excerpt: Learn how to setup Chisel project from the command line +order: 400 +--- + +Once you [installed Chisel](/docs/installation), you can setup a project by running the following command on the command line: + +```bash +chisel create +``` + +Chisel asks you a few questions about your project and allows you to choose the project type. You can set up two different types of project: + +- [WordPress Website Setup](/docs/setup/wordpress) +- [Static Website Setup](/docs/setup/static) + +Chisel then creates all required files for your project and installs the necessary software. diff --git a/docs/content/docs/setup/static.md b/docs/content/docs/setup/static.md new file mode 100644 index 00000000..9086d9d4 --- /dev/null +++ b/docs/content/docs/setup/static.md @@ -0,0 +1,39 @@ +--- +title: Static Website Setup +excerpt: How to setup static website with Chisel +order: 600 +--- + +## 1. Create project directory + +Create a new project directory and change your working directory to it. You can use the following commands on the command line: + +```bash +mkdir project-name +cd project-name +``` + +## 2. Run Chisel + +Run Chisel from the project directory + +```bash +chisel create +``` + +Insert project name (you can use the default one based on the working directory name), author, and select _Front-end Templates_ project type. Select browsers you're supporting, optional additional features (see below) and wait until the installation completes. + +Additional features are available during installation, they can be also enabled later in `chisel.config.js`: + +- _Serve dist directory in dev / don't generate pages index_: by default chisel generates index page with pages you create outside of the dist directory, this may be useful when you're working on static templates that somebody will later work on (for example different developer will integrate with backend). If you're working on a _website_ that'll be deployed from the Chisel project it's probably good to enable this to match dev server behavior with the deployed site. +- _Don't include html extension in links (posts API) & support them in dev_: When enabled dev server will support urls without html extension. Additionally, when working with [content](/docs/development/static-content) html extension will be omitted from generated links. + +> To speed up the installation process we recommend using [Yarn](https://classic.yarnpkg.com/en/). Chisel will automatically detect it and run if possible. Otherwise, it falls back to the default NPM install + +## 3. Setting up an existing project + +If you are joining the development of an existing front-end project which was already set up with Chisel, you don't have to set it up again. Follow these steps: + +1. Clone repository +2. Run `npm install` or `yarn` +3. Run `npm run build` and `npm run dev` diff --git a/docs/content/docs/setup/wordpress.md b/docs/content/docs/setup/wordpress.md new file mode 100644 index 00000000..620840a0 --- /dev/null +++ b/docs/content/docs/setup/wordpress.md @@ -0,0 +1,76 @@ +--- +title: WordPress Website Setup +excerpt: How to setup a WordPress website with Chisel +order: 500 +--- + +
    + +
    + + +## 1. Create project directory + +Create new project directory and change your working directory to it. You can use the following commands on the command line: + +```bash +mkdir project-name +cd project-name +``` + +## 2. Run Chisel + +Run Chisel from the project directory: + +```bash +chisel create +``` + +Insert project name (you can use the default one based on the working directory name), author and select _WordPress Website_ project type. Select supported browsers. + +Then continue with WordPress setup as follows: + +- _Enter title for the new site_: title of your WordPress website +- _Enter URL_: the URL at which your WordPress project runs +- _Enter admin user_: WordPress admin user, a different name than `admin` is suggested to increase security +- _Enter admin password_: WordPress admin user password +- _Enter admin email_ + +Select optional plugins which should be installed from the list and wait until installation is complete. + +After project dependencies are installed and WordPress is downloaded you'll be asked additional questions to configure it (generate `wp-config-local.php`): + +- _Enter the database host_: `127.0.0.1` +- _Enter the database port_: `3306` +- _Enter the database name_: the project database name +- _Enter the database user_: user who can access the database +- _Enter the database password_: password for the user + +> To speedup installation process we recommend using [Yarn](https://classic.yarnpkg.com/en/). Chisel will automatically detect it and run if possible. Otherwise it falls back to default NPM install. + +## 3. Set up virtual host + +Alternatively, we recommend setting up [wildcard virtual hosts](/docs/installation/wildcard-virtual-hosts) so your project domain works out of box. + +If you haven’t set them up, you will have to add project domain to your `hosts` file + +```text +127.0.0.1 project-name.test +``` + +Then use automatically generated `dev-vhost.conf` and add it to the Apache `httpd-vhosts.conf` file or add + +```apacheconf +IncludeOptional /path/to/projects/*/dev-vhost.conf +``` + +in your Apache configuration to automatically load configuration for multiple projects. + +## 4. Setting up an existing project + +If you are joining development of an existing WordPress project which was already set up with Chisel, you don't have to set it up again. Follow these steps: + +1. Clone the repository. +1. Run `npm install` or `yarn` and `npm run build`. +1. Run `npx chisel-scripts wp-config`, it will create the database if necessary and then create _wp-config-local.php_ and generate _dev-vhost.conf_. +1. Import DB dump or enable _WP Sync DB_ plugin and use it to import database and files. Check out the wiki page explaining how you can [use WP Sync DB plugin to migrate database](https://wptips.dev/wp-sync-db/). diff --git a/docs/content/docs/simple.md b/docs/content/docs/simple.md new file mode 100644 index 00000000..fa6bcffc --- /dev/null +++ b/docs/content/docs/simple.md @@ -0,0 +1,54 @@ +--- +title: In simple terms +excerpt: Some of the concepts behind Chisel and similar tools can be difficult to understand at first. We'll try to explain them in simple terms here. So grab your coffee and let's get to it. +order: 2000 +hideOnpageSidebar: true +--- + +## What is Chisel? + +Chisel is like an **automatic coffee machine** which can produce different types of coffees. When you get Chisel (i.e., when you [install it on your computer](/docs/installation)), you can set up different types of projects with it, namely WordPress projects or static websites. + +## How do I work with Chisel? + +Chisel doesn't have any shiny buttons to press, it is controlled from the [command line](https://webdesign.tutsplus.com/articles/the-command-line-for-web-design-introduction--cms-23493). The basic command is `chisel create`. You typically run it in an empty folder where you want to set up your new project. + +## How does Chisel know what kind of coffee... er, project, I want? + +When you run it, it will ask you a few questions, like what project type you want to set up, among others. + +## How does Chisel create my project files? + +Like a coffee machine with different types of coffees or other ingredients in it, Chisel is installed in your computer with ingredients for your project. These are templates of various project files. Depending on your answers during the project setup, it takes some of these templates, customizes them, and creates new project files from them. + +## Why does Chisel install something for the project yet? + +Each project set up with Chisel comes with a bunch of useful tools to automate common web development tasks like browser reloading, CSS minification, etc. The exact list of these tools depends on your project type and answers during the setup and is stored in the file called `package.json`. So when Chisel ends setting up your project files, it will take a look at the list of these tools and installs them. + +## Can I change the project type when it's already setup? + +No, when you got your espresso or latte, you cannot put it back in the machine to make it something different. However, if you know what you are doing, you could improve it, maybe with a bit of milk or cinnamon. + +Similarly, once Chisel sets up the project, you cannot change the project type. You could do some customization to the project by adding new tools to it or customizing the existing ones, but it's not something you usually have to do. Chisel produces delicious projects out-of-box. + +## I've got a Chisel project from a developer and I'd like to continue working on that. What should I do? + +1. First, [install Chisel](/docs/installation) +1. Next, set up a project: + - [WordPress project](/docs/setup/wordpress#4-setting-up-an-existing-project) - scroll down to _Setting up an existing project_ + - [Static project](/docs/setup/static#3-setting-up-an-existing-project) - scroll down to _Setting up an existing project_ +1. If you have trouble installing Chisel or setting up a project, [submit an issue](https://github.com/xfiveco/generator-chisel/issues) at GitHub with a label `question` or write us to the e-mail [chisel@xfive.co](mailto:chisel@xfive.co). We are happy to help. + +## I've got a Chisel project from a developer, but I'm a fan of good old CSS and HTML + +The good old HTML & CSS, who wouldn't like those, right? However, we recommend that you give Chisel a chance, install it, and setup the existing project so you can use the power and flexibility of modern development workflow. See the previous question for how to do that. + +If you still would like to work with CSS and HTML directly, they are stored in the `dist` folder. Chisel automatically creates unminified CSS, the file name looks somewhat like `main.6a889b04.full.css`. Unfortunately, there is no reasonable way how to work with JavaScript files in the `dist` folder directly. + +**Beware, once you edit HTML or CSS in the `dist` folder, you or other developers shouldn't use [standard project workflow and tasks](/docs/development/tasks) anymore.** The standard development workflow overrides the content of the `dist` folder so you could lose your changes. + +For the full overview and comparison of old school vs. modern development workflow check out [this article](https://www.xfive.co/blog/craft-perfect-websites-chisel/). + +## What if I have a problem with the Chisel installation or Chisel project? + +[Submit an issue](https://github.com/xfiveco/generator-chisel/issues) at GitHub with a label `question` or write us to the e-mail [chisel@xfive.co](mailto:chisel@xfive.co). We are happy to help. diff --git a/docs/content/docs/structure.md b/docs/content/docs/structure.md new file mode 100644 index 00000000..cf8d684d --- /dev/null +++ b/docs/content/docs/structure.md @@ -0,0 +1,10 @@ +--- +title: Project structure +excerpt: Before starting actual development, get familiar with the project structure generated by Chisel +order: 700 +--- + +The project structure is files and folders generated by Chisel in your project. The structure is similar for WordPress website and static website: + +- [WordPress website structure](/docs/structure/wordpress) +- [Static website structure](/docs/structure/static) diff --git a/docs/content/docs/structure/static.md b/docs/content/docs/structure/static.md new file mode 100644 index 00000000..011983e7 --- /dev/null +++ b/docs/content/docs/structure/static.md @@ -0,0 +1,56 @@ +--- +title: Static Website Structure +excerpt: Static website project generated by Chisel consists of the following folders and files +order: 900 +--- + +_On a typical project, you will work in the `src` folder and check your work in the `dist` folder so you don’t have to touch other files._ + +## `content` + +An optional directory that doesn't exist by default, when created allows you to create nested pages with Twig or use content stored in Markdown or JSON files to create pages, see [Static Content](/docs/development/static-content) for more information. + +## `dist` + +Production-ready files are automatically generated here, this is where you check your work in a browser. + +## `node_modules` + +[Node.js](https://nodejs.org/) modules for various project tasks. + +## `public` + +All files here are copied as-is to the `dist` directory. You can use it for example to place a `favicon.ico` file, or when you need to place a file with a specific file for example for domain ownership verification. You can also use it to store media uploaded from CMS like Netlify CMS. + +## `src` + +**This is where you do development**. The project source files are organized in the following subfolders: + +- `assets` - static asset files (images, fonts, etc.) - files from this folder can be used in styles (`url('~assets/path/to/file')`), JS (`import filePath from '~/assets/path/to/file`) or in Twig (`{{ assetPath('path/to/file') }}`), +- `scripts` - JavaScript files, check out [JavaScript documentation](/docs/development/javascript), +- `styles` - Sass files with ITCSS structure, check out [ITCSS documentation](/docs/development/itcss), +- `templates` - Twig templates, check out [Twig documentation](/docs/development/twig). + +## Configuration files + +Chisel uses various configuration files. Usually, it's not necessary to touch these files, unless stated otherwise. + +- `.browserslistrc` - Supported browsers list used to generate only necessary normalization styles, JS transformations, and (when enabled in `babel.config.js`) automatic polyfills +- `.editorconfig` - [EditorConfig](https://editorconfig.org/) configuration file to achieve consistent coding style +- `.eslintignore` - [ESLint](https://eslint.org/) ignore file +- `.eslintrc.js` - [ESLint](https://eslint.org/) configuration file to achieve consistent JavaScript coding style (you can update it to your preference) +- `.gitattributes` - [Git](https://git-scm.com/) configuration file to force Unix line endings in text files +- `.gitignore` - default Git ignore files and folders +- `.htmlhintrc` - [HTMLHint](https://github.com/htmlhint/HTMLHint) configuration file +- `.prettierignore` - [Prettier](https://prettier.io/) ignore file +- `.stylelintignore` - [stylelint](https://stylelint.io/) ignore file +- `babel.config.js` - Babel configuration file +- `chisel.config.js` - Chisel config file, see [Configuration](/docs/development/configuration) for more details +- `index.html` - project index with project pages listed, it won't exist when the option to skip it was selected when generating project +- `package.json` - project metadata and dependencies +- `package-lock.json` - [npm lock file](https://docs.npmjs.com/cli/v7/configuring-npm/package-lock-json), if you use npm +- `prettier.config.js` - [Prettier](https://prettier.io/) config file +- `postcss.config.js` - [PostCSS](https://postcss.org/) config file +- `README.md` - project readme; you can use it for the project documentation +- `stylelint.config.js` - [stylelint](https://stylelint.io/) configuration file to achieve consistent CSS coding style (you can update it to your preference) +- `yarn.lock` - [Yarn lock file](https://classic.yarnpkg.com/en/docs/yarn-lock/), if you use Yarn diff --git a/docs/content/docs/structure/wordpress.md b/docs/content/docs/structure/wordpress.md new file mode 100644 index 00000000..2766879b --- /dev/null +++ b/docs/content/docs/structure/wordpress.md @@ -0,0 +1,86 @@ +--- +title: WordPress Website Structure +excerpt: WordPress website project generated by Chisel consists of the following folders and files +order: 800 +--- + +## `node_modules` + +[Node.js](https://nodejs.org/) modules for various project tasks. + +## `src` + +**This is where you do front-end development**. The project source files are organized in the following subfolders: + +- `assets` - static asset files (images, fonts, etc.) - files from this folder can be used in styles (`url('~assets/path/to/file')`), JS (`import filePath from '~/assets/path/to/file`) or in Twig (`{{ assetPath('path/to/file') }}`), +- `scripts` - JavaScript files, check out [JavaScript documentation](/docs/development/javascript), +- `styles` - Sass files with ITCSS structure, check out [ITCSS documentation](/docs/development/itcss). + +### Moving `src` folder to the theme folder + +It's possible to have the `src` folder in your theme folder, follow these steps: + +1. Move the `src` folder to the theme folder - `wp/wp-content/themes/your-theme-chisel`. +1. In `chisel.config.js` set `source.base` to `wp/wp-content/themes/your-theme-chisel/src`, see [Configuration](/docs/development/configuration) for more details. +1. You need to update ignore files (`.eslintignore`, `.prettierignore`, `.stylelintignore`). First, remove slash from `/src/assets` so it works with assets in the theme, then to not ignore new `src` directory we need to recursively exclude our directory. In those files replace + + ```text + /wp + + ``` + + with + + ```text + /wp/* + !/wp/wp-content + /wp/wp-content/* + !/wp/wp-content/themes/ + /wp/wp-content/themes/* + !/wp/wp-content/themes/[your-theme]-chisel + /wp/wp-content/themes/[your-theme]-chisel/* + !/wp/wp-content/themes/[your-theme]-chisel/src + ``` + +## `wp` + +This is where WordPress is installed. + +## `wp/wp-config-local.php` + +WordPress `wp-config.php` file is altered to provide support for local configuration. All settings except Authentication Unique Keys and Salts, database charset, and ABS_PATH can be set in the `wp-config-local.php` file for purposes of local development. The file is added automatically to `.gitignore` and should not be committed and stored on the production server. + +If there is a `wp-config-local.php` file available in this directory then the environment is recognized as local and configuration from this file is used. If it doesn't exist then settings from `wp-config.php` are used. + +## `wp/wp-content/themes/your-theme-chisel` + +**This is where you do theme development**. The theme folder includes Chisel starter theme with the following structure: + +- `dist` - production-ready files are automatically generated here. +- `Chisel` - various classes used to extend or add new functionality to your theme. Check out [WordPress development](/docs/development/wordpress) +- `templates` - Twig templates, check out [Twig documentation](/docs/development/twig) +- `functions.php`, `index.php`, etc. - Chisel starter theme files + +## Configuration files + +Chisel uses various configuration files. Usually, it's not necessary to touch these files, unless stated otherwise. + +- `.browserslistrc` - Supported browsers list used to generate only necessary normalization styles, JS transformations, and (when enabled in `babel.config.js`) automatic polyfills +- `.editorconfig` - [EditorConfig](https://editorconfig.org/) configuration file to achieve consistent coding style +- `.eslintignore` - [ESLint](https://eslint.org/) ignore file +- `.eslintrc.js` - [ESLint](https://eslint.org/) configuration file to achieve consistent JavaScript coding style (you can update it to your preference) +- `.gitattributes` - [Git](https://git-scm.com/) configuration file to force Unix line endings in text files +- `.gitignore` - default Git ignore files and folders +- `.prettierignore` - [Prettier](https://prettier.io/) ignore file +- `.stylelintignore` - [stylelint](https://stylelint.io/) ignore file +- `babel.config.js` - [Babel](https://babeljs.io/) configuration file +- `chisel.config.js` - Chisel config file, see [Configuration](/docs/development/configuration) for more details +- `dev-vhost.conf` - automatically generated virtual host configuration (not needed if you use [wildcard virtual hosts](/docs/installation/wildcard-virtual-hosts)) +- `package.json` - project metadata and dependencies +- `package-lock.json` - [npm lock file](https://docs.npmjs.com/cli/v7/configuring-npm/package-lock-json), if you use npm +- `postcss.config.js` - [PostCSS](https://postcss.org/) config file +- `prettier.config.js` - [Prettier](https://prettier.io/) config file +- `README.md` - project readme; you can use it for the project documentation +- `stylelint.config.js` - [stylelint](https://stylelint.io/) configuration file to achieve consistent CSS coding style (you can update it to your preference) +- `wp-cli.yml` - [WP CLI](https://wp-cli.org/) configuration file +- `yarn.lock` - [Yarn lock file](https://classic.yarnpkg.com/en/docs/yarn-lock/), if you use Yarn diff --git a/docs/content/index.json b/docs/content/index.json new file mode 100644 index 00000000..a5e35827 --- /dev/null +++ b/docs/content/index.json @@ -0,0 +1,110 @@ +{ + "template": "template-home", + "title": "A modern development framework for WordPress and static websites", + "order": 0, + "hero" : { + "title": "A modern development framework for WordPress and static websites", + "description": "Craft fast and easy to maintain WordPress and static sites. Use the power and simplicity of Timber and Twig. Make your CSS scalable and maintainable with ITCSS. Get rid of tedious manual tasks with Chisel’s modern development workflow.", + "buttons": [ + { + "link": "/docs/installation", + "text": "Get started", + "fill": true + }, + { + "link": "#why-chisel", + "text": "Learn more" + } + ], + "media": { + "image": { + "src": "images/chisel.jpg", + "alt": "Video Poster", + "width": 600, + "height": 370 + }, + "video": { + "src": "https://www.youtube.com/embed/RIJ8Z_gBh5s" + } + } + }, + "whychisel" : { + "sectionTitle": "Why Chisel", + "ctaLink": "If you like Chisel, give it a star on GitHub!", + "blocks": [ + { + "layout": "default", + "title": "Simplicity and power of Timber and Twig", + "excerpt": "Chisel is a WordPress development framework for creating easy to maintain and fast websites", + "description": "

    Use Chisel to build WordPress websites based on a popular Timber library. Or build a static website using the same Twig template engine and store the content in markdown files.

    ", + "image": { + "src": "images/twig.svg", + "alt": "Twig", + "width": 324, + "height": 360 + } + }, + { + "layout": "reversed", + "title": "Scalable and maintainable CSS with ITCSS", + "description": + "

    ITCSS stands for Inverted Triangle CSS - it’s a CSS architecture created by a renowned CSS author, Harry Roberts. CSS in Chisel’s projects is organized according to ITCSS and helps you to keep your project styles scalable and maintainable.

    ", + "image": { + "src": "images/itcss.svg", + "alt": "ITCSS", + "width": 401, + "height": 347 + } + }, + { + "layout": "default", + "title": "Modern development workflow", + "description": + "

    JS/SCSS bundling with hot reload, JS/SCSS linting, hashed and revisioned static assets, React support and many others... Chisel comes with a lot of features which help you to develop your project faster and with higher quality.

    ", + "image": { + "src": "images/terminal.svg", + "alt": "Chisel Create", + "width": 295, + "height": 338 + } + } + ] + }, + "slider": { + "title": "Built with Chisel", + "images": [ + { + "src": "images/monte-carlo.png", + "alt": "Monte Carlo Landing Page", + "link": "https://www.montecarlodata.com/", + "height": 126, + "width": 276 + }, + { + "src": "images/club-oenologique.png", + "alt": "Club Oenologique Landing Page", + "link": "https://cluboenologique.com/", + "height": 126, + "width": 276 + }, + { + "src": "images/payette.png", + "alt": "Payette Landing Page", + "link": "https://www.payette.com/", + "height": 126, + "width": 276 + }, + { + "src": "images/xfive.png", + "alt": "Xfive Landing Page", + "link": "https://www.xfive.co/", + "height": 126, + "width": 276 + } + ], + "cta": { + "link": "/docs/installation", + "text": "Get started" + } + } +} diff --git a/docs/content/tutorials.md b/docs/content/tutorials.md new file mode 100644 index 00000000..f4ed23fd --- /dev/null +++ b/docs/content/tutorials.md @@ -0,0 +1,21 @@ +--- +title: Tutorials +excerpt: Get inspired with our tutorials on how to effectively develop websites with Chisel. +order: 00 +--- + +## [Chisel Recipes](https://github.com/xfiveco/chisel-recipes) + +Collection of solutions and tips for developing Chisel projects. + +## [Craft perfect websites with Chisel](https://www.xfive.co/blog/craft-perfect-websites-chisel/) + +A detailed comparison of old-school and modern web development workflows. Find out how tools like Chisel can make your life easier. + +## [An MVC-like WordPress Development with ACF and Timber](https://www.xfive.co/blog/mvc-like-wordpress-development-acf-timber/) + +Improve your WordPress themes with ACF, Timber, and a grain of inspiration from the MVC pattern. + +## [Easy-to-use Code Blocks in WordPress](https://www.xfive.co/blog/easy-use-code-blocks-wordpress/) + +Create easy-to-use code blocks in WordPress with ACF, Timber, and Prism.js diff --git a/docs/import.js b/docs/import.js new file mode 100644 index 00000000..e63ee920 --- /dev/null +++ b/docs/import.js @@ -0,0 +1,38 @@ +/* eslint-disable no-console */ + +const { execSync } = require('child_process'); +const { URL } = require('url'); +const path = require('path'); +const fs = require('fs'); + +const postsRaw = execSync( + "curl 'http://getchisel.test/wp-json/wp/v2/pages?per_page=50'", +); +const posts = JSON.parse(postsRaw).filter( + (post) => post.template !== 'template-home.php', +); + +posts.forEach((post) => { + const link = new URL(post.link); + const { pathname } = link; + const file = pathname.slice(-1) === '/' ? pathname.slice(0, -1) : pathname; + const fileToWrite = `${path.join('./content', path.relative('/', file))}.md`; + console.log(path.relative('/', file)); + execSync(`mkdir -p '${path.dirname(fileToWrite)}'`); + const content = post.content.rendered.replace( + /http:\/\/getchisel.test(\/[^\s)]*)\//g, + '$1', + ); + fs.writeFileSync( + fileToWrite, + `--- +title: ${post.title.rendered} +excerpt: ${post.excerpt.rendered} +order: ${post.menu_order}0 +--- + +${content} +`, + ); + execSync(`yarn prettier --write '${fileToWrite}'`); +}); diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 00000000..20bab76f --- /dev/null +++ b/docs/package.json @@ -0,0 +1,40 @@ +{ + "name": "getchisel", + "version": "0.0.0", + "private": true, + "license": "UNLICENSED", + "description": "Getchisel", + "author": "Xfive", + "scripts": { + "dev": "chisel-scripts dev", + "watch": "chisel-scripts dev", + "build": "chisel-scripts lint && chisel-scripts build", + "build-report": "chisel-scripts build --report", + "lint": "chisel-scripts lint", + "add-page": "chisel-scripts add-page" + }, + "dependencies": { + "highlight.js": "^10.7.2", + "jsdom": "^16.5.3" + }, + "devDependencies": { + "autoprefixer": "^9.8.0", + "babel-preset-chisel": "^1.0.0-alpha.0", + "browserslist": "^4.12.0", + "chisel-plugin-code-style": "^1.0.0-alpha.1", + "chisel-plugin-static-frontend": "^1.0.0-alpha.4", + "chisel-scripts": "^1.0.0-alpha.7", + "postcss-normalize": "^9.0.0" + }, + "engines": { + "node": "^10.14.2 || ^12 || ^14" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.{js,scss}": "chisel-scripts lint" + } +} diff --git a/docs/postcss.config.js b/docs/postcss.config.js new file mode 100644 index 00000000..6908ebc4 --- /dev/null +++ b/docs/postcss.config.js @@ -0,0 +1,8 @@ +/* eslint import/no-extraneous-dependencies: ["error", { "devDependencies": true }], global-require: off */ + +module.exports = { + plugins: [ + require('autoprefixer')({ grid: 'autoplace' }), + require('postcss-normalize')(), + ], +}; diff --git a/docs/prettier.config.js b/docs/prettier.config.js new file mode 100644 index 00000000..de2f53cd --- /dev/null +++ b/docs/prettier.config.js @@ -0,0 +1,4 @@ +module.exports = { + singleQuote: true, + trailingComma: 'all', +}; diff --git a/generators/app/templates/assets/fonts/.keep b/docs/public/.keep similarity index 100% rename from generators/app/templates/assets/fonts/.keep rename to docs/public/.keep diff --git a/docs/public/_headers b/docs/public/_headers new file mode 100644 index 00000000..c5c748f1 --- /dev/null +++ b/docs/public/_headers @@ -0,0 +1,8 @@ +/assets/* + Cache-Control: public, max-age=31536000, immutable + +/scripts/* + Cache-Control: public, max-age=31536000, immutable + +/styles/* + Cache-Control: public, max-age=31536000, immutable diff --git a/docs/public/_redirects b/docs/public/_redirects new file mode 100644 index 00000000..7c9db845 --- /dev/null +++ b/docs/public/_redirects @@ -0,0 +1,2 @@ +/docs/setup/frontend /docs/setup/static +/docs/structure/frontend /docs/structure/static diff --git a/generators/app/templates/assets/images/.keep b/docs/src/assets/fonts/.keep similarity index 100% rename from generators/app/templates/assets/images/.keep rename to docs/src/assets/fonts/.keep diff --git a/docs/src/assets/fonts/quicksand-v21-latin-300.woff2 b/docs/src/assets/fonts/quicksand-v21-latin-300.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1dd8c77469c7477553fbe23dac658ee13faf3786 GIT binary patch literal 12852 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 literal 0 HcmV?d00001 diff --git a/docs/src/assets/fonts/quicksand-v21-latin-700.woff2 b/docs/src/assets/fonts/quicksand-v21-latin-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a4c4103e9c1641888aaa8be90455adfbda2ee667 GIT binary patch literal 13176 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%0DM+i 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 eRMJ^E2WaIXNq|V!_x= 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 SlA(T1vj \ No newline at end of file diff --git a/docs/src/assets/images/checkmark.svg b/docs/src/assets/images/checkmark.svg new file mode 100644 index 00000000..f40f2c2d --- /dev/null +++ b/docs/src/assets/images/checkmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/src/assets/images/chisel.jpg b/docs/src/assets/images/chisel.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6a4d24a7e61ab8e90a4dced7de1b98af0ed16d23 GIT binary patch literal 5527 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 Ue_B9n|9@CLZ6mE34Q#~!0FduDGynhq literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/club-oenologique.png b/docs/src/assets/images/club-oenologique.png new file mode 100644 index 0000000000000000000000000000000000000000..822dcba13c7908fe484d5d5813e24b16400ec668 GIT binary patch literal 182029 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

    4z&P?wFi8F=-!-tX?Lm^f5pJ~!4 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

    q_( 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 WF-g%RE+LQr0000Gx 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 z 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 AGynhq literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/android-chrome-512x512.png b/docs/src/assets/images/favicons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0683ae69b7fe3eec92e9b5bb79a6c84af58ed1 GIT binary patch literal 39689 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 literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/apple-touch-icon.png b/docs/src/assets/images/favicons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..471cb2a606174bead73c006df1dfbc24f54fb768 GIT binary patch literal 14027 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 Sa;5@b0g{nW6t59A3jSXKizb`^ literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/browserconfig.xml b/docs/src/assets/images/favicons/browserconfig.xml new file mode 100644 index 00000000..f9c2e67f --- /dev/null +++ b/docs/src/assets/images/favicons/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #2b5797 + + + diff --git a/docs/src/assets/images/favicons/favicon-16x16.png b/docs/src/assets/images/favicons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..bada4f033085662c6b7f7c965e81482341df3990 GIT binary patch literal 1187 zcmZ`%doPz zZOtQgh(cKz8ucF(={dp`GmKA-PB-}@~H4-K}q zbhHEjSX0Qv2pDa)m$?btU2wZj!ticVAUzO(#uBToSW}3dSmX#g0GAH}ko!FVoA4-i z7JwW)0P{=$2$cXhWLC9*aTI_ZW8onT5+u00#CUmr<^17EopvmU$cc&m_Vd7WN^n*f z{rs7jtHGp9Dml9#|K1V5_~XY?_F$=yla|8g71sRpV(#*FJ7o12W5R0z)nf#K@Q|Y zGS2M`G|WgZu7W0f0TlWlj_;E7wY4h54N{q`Z*+9#p;!v@Diwpn`YEMyQ1Y8bD(Ss@ zr?sa?YcMQycBn+6PNQ*AA=h8*}S2YQ0+FM)Y3WcttLxrfjkjY_WT#qcyA_yYy z(YCe9#SId@e#)pHLnicy_%0&8gBT`_h6PwaWM%^CSIQNGa}!gDq#0=zBF!R1);c%- z=d+>7{=N|e`4{0!6yeO)jF5uDl)ijfhQ%~CVa;xon^B&>pw-q*8(zOL3hSxQ>1JgWC~VU& zj@a_03P%*R?#*8z=C1qJw_9*W94(l5C2XL13j!3ELMNdNrdXSO`(v*Ae*>>AD8xVp zM$2L{nf5mJyWh99eb4R|GY-PU(()T?Ys;&v%VniESqUuWt>~p)=4i{EJ1t&WM>3|E z;ZYV=CHefq;^M-BB3^VPD}0EYPY$7mQYds(f}OHOfC!y`C0q*y6*7$Q3QRux- z{j_#Qox0j#cO`!8X>nN|Z)7~sY|)<+{BhC;=Wbu!ID2*sZ9N*m59s^{ivbs|Fnq*5 z>khC^A8|>ixbd;v1Oh8N0S4fW_x8f!eR1Bt3@<-|w?E;Kk2@Yuz~ht6=@xGZ(mC<$ z#7qA#z(%e%LqYUq#wl(@>;K-rOr@q6 zB7ljrl?Thp&e@JuW^ZEWM9lT+iZ^k7#BfqQ(u-Fv%Hs$BAIst1^Nu;s3t@VyCB N017FT*l>b*?LVgODs%t< literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/favicon-32x32.png b/docs/src/assets/images/favicons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..ec06d97eb306df00f99a67f027630c103e06d23e GIT binary patch literal 3251 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 literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/favicon.ico b/docs/src/assets/images/favicons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..559536551a4be213efd5138555c213931d8dd6e0 GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/mstile-144x144.png b/docs/src/assets/images/favicons/mstile-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..2215efd0d30289884e491bd29d6900107e86fe13 GIT binary patch literal 8448 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 literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/mstile-150x150.png b/docs/src/assets/images/favicons/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..65ff8bdf58457c03bfe96ca952e49d175ff41bfb GIT binary patch literal 8122 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 H`568`iZKd> literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/mstile-310x150.png b/docs/src/assets/images/favicons/mstile-310x150.png new file mode 100644 index 0000000000000000000000000000000000000000..467237ac334270e814de41cb0315a08882e1dbee GIT binary patch literal 8722 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 W@^q_Q7}0BEc0snx02Mg1>A0=yCc literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/mstile-310x310.png b/docs/src/assets/images/favicons/mstile-310x310.png new file mode 100644 index 0000000000000000000000000000000000000000..c759de4b368fb78e5c8a77bb828dcc340a6b984b GIT binary patch literal 18542 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 Gp$Pz3rg)_Q literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/mstile-70x70.png b/docs/src/assets/images/favicons/mstile-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..40139d4d5ad2fdcc6da68857e4ee00ea33abd2fe GIT binary patch literal 5498 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 literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/favicons/safari-pinned-tab.svg b/docs/src/assets/images/favicons/safari-pinned-tab.svg new file mode 100644 index 00000000..6cb6f670 --- /dev/null +++ b/docs/src/assets/images/favicons/safari-pinned-tab.svg @@ -0,0 +1,97 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + diff --git a/docs/src/assets/images/favicons/site.webmanifest b/docs/src/assets/images/favicons/site.webmanifest new file mode 100644 index 00000000..b20abb7c --- /dev/null +++ b/docs/src/assets/images/favicons/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/docs/src/assets/images/itcss.svg b/docs/src/assets/images/itcss.svg new file mode 100644 index 00000000..bc48976e --- /dev/null +++ b/docs/src/assets/images/itcss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/src/assets/images/monte-carlo.png b/docs/src/assets/images/monte-carlo.png new file mode 100644 index 0000000000000000000000000000000000000000..d9059bb23f1933ab5f84ccccc16dae4f322fe612 GIT binary patch literal 60307 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

    sg2-}cl>_7&i5D|~Cry+UWl}};AUs{h| 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

    7*2OTZ9KZ{!+qd8nDSmnRHVk{DsP2571cVO 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 literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/payette.png b/docs/src/assets/images/payette.png new file mode 100644 index 0000000000000000000000000000000000000000..8852504c9f988d9f3576bb64fbd9e29e7b917d76 GIT binary patch literal 362965 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 e#PE8L(2=e&$ zb=?9ADZaFrWm+k+Vnx;p!%-2&WAOzj(rg?+v1O4&h#&gorx3pAJ;OM)NFh$Jv7DI5 zZ=~j-DED`w3=xC2+m?b{IUE#WfZ`f>#4tb+$Bo}#wPeMf&wcjQPcC@()lYwV-aIHp zGF$+P1VB=XWC$q&a+6AN*`A#^EMD>M5@I3-Zqp6>S$+m6P8-|ff?CO$NX*o7P+XB; zoWh7!9*V02lxRuRY3q3?it^M3IiQG{5yn0aigHt5ybDn5?bXADw3!A-9)fGe{bPnz zKe(fBZjPHeYt9yTjrrA~XjMdPue4KdMPD5AA@qP^Wmg8Eh`}x~4vK0ygQBs|pf^TL zHlv+EQLc4c67HY}P{afXC7=jQ0*Y>eqQyy2boy|{=x(S(oRo7buonEiZlV_ zwjreniX#Ew5kY=x8q}g#i~iT~Ox(8vw{8JqS*WXMM7+zHOgfvuKCjcMm6@?XFPorP z0RI`5!B(K=HK@cKAKM9y=-wl%lEVFk7^JTRkgUlD%gEUlBg@h(#&g8YJm^MQm3V$h zRyz}YQ&7wV_42C##rc3@e&(E#jJztVM%=)l2v<9kpqPcimy9$pF{=VDbY5mg+RBx! zZq#qzLnv_X-g}#NedmK)*YEAEC@eCde*2?Khc7)nlzKaWRLheqr+==EnDnJh_0^&> z%(&Y9#~ax2a_Q1!8W+(66j$RSm!&@?7$S}JenCvqfu#mr5@7U{uza%hqt+!w(U3$DDK^+YHATf_n zHacuBpa@?YndccZcLIuPqalQ4E+M&EBRO|UBoW}7F_>r^?8rrqr+f2ObXZo4wpF*3 z(>%qF@OoBnvx)My92P-EI*PwHs*U{}XNp6=@lE}6nUkH4DnaKzbdC~&*wh(=}+(3`RXS*D8hdR z7Lja$QE?7ahh#)YKDf9OjHIT)cb6lwxCZy%6BY@I42IKC#9`^i&*0;7I4B}+pFDOf zJPJkS3HJVqCT}Ohb=pFC2SG6<*rHa-HI5jn01bWesC;+`Q0zL3Hb3ki&|~Zjt;PS= zFmdf$`^Wmu{@{*1*6i1JF7B+6SK8H`5tM&mpok(Q4#ncIF@MZn8O^qd?a{F@yCY9c zP;~Smn&>bXhX+i3rjWtTD@Er>!tJC9U`Y;&L1oyJ0KC9P3zE{PSXARVrMed_eGH18 zK!7sQ7+$7@QVeiVM0kcx$iW#mn6qD)#E2^_FBlDm%QV3R`l>WmP1KGX=5F=DLUE*# zune@%s;HCnC{rwdJ%Va)gzDL5f@24J0t7^G@kJ;m1T7RmDXOlA4r~&ONgtZsI;Geq z$C?^~BBWvjZOqbA86ef(8j)c-H&4a9Y*3Df2P864M-mZNuu_l<$I=jFBM6D?iL_Z7 zLnWXrpW2s+isB3;jY%m2mtq+tVpaw{Icru{UXj<#K`|Tex-yHP2q3Sl$d}=Zz~7li z1kGqI`uXKEAN_(B7jK+A+*(oJq#M3+=ECN1>gnA@#Li92f~f?AxL+ee*Wlm zx!oUgcok)LZ(hb6ii=mSTt9t%eb30yweLK-dN7Q+Er0#a?kggzzqB1t#Lue^QB6Sc zq$F920U5%Z92D!Qq}|#`vHfJ&N&dV}NKi~2VtJM@)U0R_NTmAWIdOIqvc3ZTAFM`r4)$Z5gfjRUnsf# zx!7EV!tL$woy%X)in)x6tfrdL`y38LM}p%Hyf-Puj?qI%N+Ti7non3KGZ|~r+x3S7 z_~nfpVk5H-4vy0%;yPibp~#5HhZF?@rWDx>MTo{+KoOiHB)%*aJD6$Mk$Wg%^LoHU z4vO^+=Lc@NBH!{XT5|PVzDB@!2##iWr;6m@g53V3H2p{lJ zDwwh$(E=#m=b*UZFBZX%lLSSd#x0erm6)byMSgY|KIYlD!GwsSKH%()7`nc->W6*u zZ{1lH8asRT#2pli5EPqhLv=BN!u%z*)AmAnFH!@}v2oIHp;7 zY=GjxYpI$7Av)@T>4!bC*C=;(7{z;2ZwFfy1L z#2ata6*|H;0=)#qUvo;4Kp>P9Zi67qmNt>kEKRz#;?g3iiss=^ts?bDI!d_#yU;Rm zX`U1qEN!n6(@@!n6lI1O3_-BVtAVuRav=yRmKJBqn~Mv8M+69gMutxuVQknKigxgU z*?9$}_*i(+tymaX^7`v@N@W_2xD^;=R*_L5rjLlpvMcc@EhCF&Ys21X4Ip}V@15%p zfBx{)y^n4@f9Ee1D=X@Y-oAC^*`W>ZpeV=t+S7>-Zk>D>>_yXiv>lRAvekGlP$9RsEJ|oeBpC2V!68K`u25BiMQ;OR$F7VoG*A9XfyEk#}Gk}OAF_EB{Xl>QB zYIgp7!AN*!)#OIoyKQnIzGA#=LMP#611jU&j z>%tJyI4ZF)olck7a8=k5MluLdoI!~QzeQ3bYYB=NGK(>Vn;E}e{$rg3OzetR%9VriN^Cil)^$d#DgMuHU zCPt-`I(5o`&V?lOFa~Tp+V%sAT?T!Rt~YY0Yt^dZK9p^*3LPOR#yaymJ$^vZQRDBD zjx`}d*6CM`$-J?6h@gnU`sh-#=S2X;7~*EJkjxhIs`})^Z-4WfubHkH4H1*q)7TSa zQ1k`Ra-8(IlrFf;fFia(dr`TK$zV<%ibnOY!N^0=6z~9&P>M=*|{IiT3(@cJ~_dl!wQM)86|DuvQ1gP8D+tu4o< zp~#pBBPgyer&p8+;sOB7mWnC6B7;~J*IRmg4ee&kWGHQin=F;JYjjSZ&lCiwrD6(rt+Lx-5wVooL;QGOAQL;T2#y(Dl?4RFJbd+>H8C9t!xMN~8Uyc|W6_8L zN)jIlFFO+vOF*$b8yOs{EuxAMP}v8qMEN*0;+)rEvjD|6DV{d#P+Jc|NZaJFHSs3Dw?Eq zSb4kt!SkD8IN8Vldh6!RGJC|Uqh-<<5C@lh-Dy&aDB6^+zIF3lb-me%+%TqlaZprX zRlC{j65)#phf`r}ss$7gQyfHAY&UvvNhz*7hLGE_X()n;+#9az57+m%HuP6*TfKH~ zeH}qj+SARTSc29gnyZ~zLhduJmMjJqKTg$(Uu1?Y&onsaRUV4ajh`Wq&4nU-vr@;pXWJYI#;_<)i+IO5OMIaGSY~-zDdIop@V0b;Ht5I>y z&8a25$f!st6p46UNIRc#MJAj!P8c@AT+^SJpvV%?JmXuat-MK6yarILrR+0~1V!Xm zc%{e}Z-2jS*|Lq_|N75fT>&Tpc1#yeLlKZ9n}Xszc3=i5zWVAsmX-naxRlC^Ok~En z&TJ3rikYm`dp5b^v(r|F0YzxVk?^6lBO4Bc*QQplUtd1Bby1>Rw7zVM%a_E`bWFq! zI6I1BUC2Hg<4cbc6ixb`_`n#T`0W9L;nLlH`FWW?ubflDZ5I2)@Exo2wm4l1 zX*AwKzm#2;XfAuau|?PRi!fOLUud)+JIw4DW*v&(2ZxcVqruSi%zXEShma# zleK5ZVj!N{pU?8hyi}wU55*>N6OoY-k1{rFA{f|@`+o>K_kbqv^^Whawma=PZ9VH~ z#FhfbGz3VHm?nXMl>la;T9gPmpdnle1X5BK62dJUE(wH7kuU<%Xe|^$s#uG2UN@(r zXgyHtYPC~m<88C0K>&FV-e5%q}Wv4Gpi&uBj)|SPMv(sltCKT@U4b{EqzXa&s-Q16Hle2TsWt5* z*xOIvv{atP9Wl3qpop1kPzzY(;bqhs=@igdZNxC<;5M|HApsv~z?=$$avOgb$knC! zY?*RtKoaj4fygtFLW@|)pS3cjiaFxajs%){firP`v1T{oE!e+q+=MMHXja_BkKetu zo-4Gh`?Jk|u@-Ci-g$8ygCbgS2!T%%6rW*G{IODG{fmevUwj%?I&{IH2=pz+zu`vB z+x$QaX!!;TG;23MMkHNDOJ81iJ|x5sC=wM%bLYl#hV~YZS8XZJ8E8|wRALvP2v1jw z22jkki=^_plA=}yMXY3jK)%PFT7V? zySoWX>ssY~dl(c!Nx7sqs;9SScQ2^e+ec88TPu@Fw!X4`YhgimcZbPj#)vbORoq!9 z=DKSfJQTAyDCQCrvx_j%2PFxmSlA4uScJ~l+(AGQOQ#5mVB!K4vj~bb?}vKvxS^L- zb|bUpy=kz}0u&8$8&2zy{Sy>fWD^t}Nyc7-ew@8#26(ABH1-EjoLESo^Pn+k#~OoT zW*pauV;XE$C)=A#*)FSOa>~IS7=wXLHgfhR7|(`BM&#=>QcZ7NU56PHd6kubqM^6L zCYOL_kcuG@s6@+a3z`rHkg}(PP$}2rRFHuV=Y>Q@4_Jsx1cN0%w+f}G)8WGi9-;Wp zW9u${6FJw$ZGcW(N{3@%`CYdz!wdV;{jjjl_Mfc?4ntav2E~@C2j3t2`nR9$+GX4} zd*i^Z;jV2c@ozI8PdMDxdHmGm%!zY1X8p=`e8=Opy0ENjVS*0$A~f=;G#C4kAs^g- zA%~m{E7;0siW`>?>_2;J%gl|F&!vt@WE z%QVSiVLp34oNy`OQZy>=DFRFz5foYaERB_v3Nkh@r5N=5+L-4_k2#Pf4hn}1_pcD%L#o&mJg1WkrX8WkqL(uo^$ndP>yE{tiX;zm#;EKc|EB0qq8?7I_zvq1xFJZORn}8%r#k<$7#k}&GHS2z{ zdF@Mo_Ws(R{cPpWo_Pk#@IgSlQJdm3c;cCrFXBv*VUj_S7W@H)_;`Lm`bnHazVQc2 zk)M4=0E*PZ^A2pk;dR7Aapm(NnLZAR!=n>96XjdVinnl3loAwG92BJ{y}i`0lq%4& z%|Wq*L9w+9P<;FCl0(0I8%h!B^RGVb1r$qdG1%iC(E}(-nruzGn|eAFR@idV7IFwh zxs9M$OUp!hd(#MtxFuz8EqUeLKR;8{=j=5Z9D1u+>-9UGRMxN$Ln)F$jt@|DEI9GicNvwHj2!HHK9gDDlW@Fcyo)6M+B|S<7}D zGV53(uEJuACnzG81!t}Y{g?I)3;t%(`dq-o5+ffUsS~ts@vrPZs$(D+aKIGoj(7BSOfG1_+8r zZcknuPB?n_;Qq@uh=|k!J}Hz6-2Ritu%4ypO?aCmhHJLox_)fG8a4L?C}uD!CgV;} z90|Aw5jU^SHn^%CPG+WNHBuGGE+SJ3y+h9_#j^5p%rJq?s(@>6LqALlib+as8JgI# z0L8A}PdqC{{a4ae~WyZ}|9TZjNo=8yXmCK(FIsPofw>?{jkITOCORV&}T6 ztlG;Oe=UOt>qvegO}dt1AzSCgExQi(o48} zYyHZfF$6wAIWxo}p!f`ewBr+ecMi*)p9U2f6z5$dP?mY}zo*atHt(m%kNGhuKB^Q^ zZwboO4vl?8Pz>bejKOz2h7{i5b{IG)_5q3u zO0h6I$<%0-E2M${2E{Q3Me6+egY+5Sw#<)(giJ;T;73%{o4XV##$hihMHWG^tVdB7 zuCVsBCPm-?GC~5S2q?^!5MU7=v~XH9 zTYz>OG$Onp99GyZ=rse&NK`SxTS}9w=KKh7oAg6qcra{^0xTznz?!I{4dB_-~)h5zt-}_h8@_ z#!oJsK7I1UjRz<8Chv-N2gcDqWshzbk7HvF-V%~!0nUd(nXVGE{E5&A@*FrvP~1Oz za{uKMm+=8U+@GhxW-f)zS3Y&_U9aoUNSn;f8P*h8IWW>hNS2Ht%Ri#4V8yp{lGg%Ib&%!kfK~Ve&Tl!1^D87hC zh(rcO!s8!RV#jG;NO)^e$@W)X>B=ocUs+3bVM$$)#R!!x7Qkfz#ShGHd-3gBt%SEs z@kbvafrUsL7#i7|$G7BA;5`A6Zk&9idpgymm0U0$R$(d`cV-C2>Ri*)(b3aT?6k^@ zzy=Hw6`>Cil<4BpKfaC3z?f4R2gUE^U>y4q*Z2ceaIY%3<3cAAT&rn+ACZt>UkZNi z+&e^No%0QN9y8pifCGw<67LZY=dHKt@vD2%?hnXG#dwt~-k3IIp%BO$E1@=F)_!&bW1zjLzM$iQhMLaMl;?VHNN|CbXg+Lh^Tdvk_ zgiwS5CR2(lgMzA|Y7ygsvGU>KfrjFts)6FXkv6qUsdS0s9Dbu7P&61#eyLoM-EHeF zI`r$!*za6dn2q$gM1CGdt2lC$_$~vZOBx>0SsjY8_OKye=DCr7RJwU?NfU^uPf^(zM5x7=@M1kS0l3 zc@q>G0zVxLB1J;)VXm%M5Nf~;NgQ~djTo06xIP!adL9%pozT8d@wkKdZa@O zVX`0#0j-Yuug~GSeD2(V{Ra-*xQmU?`;b0k1N7nE&6_r*MH)sj2X>rWYdM@tB(S!$w|vhF~^50 zFMc%o#Y&;ZOP!OW?m%?{LDBCe6*Mqfk+9%Biw;2g^I^K}Ny&gXOxDHeJlHu#$CV6< z!HFRR#h_5CK4Yor^K60z=`)DPOt@*_8A=f-B;iOQccqf-eW5*4{l8~Q9YlroNYgi;E=`Gz##e77|V|M>Zjcsa)cN|B)W zh{f!-GYHtNS1D1e)@WO>Yk&{NQhMKy1Enon-W%xeF9Q^z6Da^i2Ev5^7r$!j>w%d5 z>N<3%c=myWFCqT z+x3_WZ>+Q$iay-k^l4oQGHGfntgPI0db`uQBU`su zLXh>;+S2xPzz`orXGw1_(q~&*Pa0YpAMFtBU9_o#j5=nBZK#3zNPAW#o4R}5-B^K-T3e&;?#UKuf22D2H(j0)I90!Tv zaa2nIx0;%w7!;om%Fb@u9rSz@YAChwG32+6xj~HiAtW|bb+8W5i8U@3qtTgdwStXU zlG=);3J#0BF`J;Mi;YmkN+d9jP|$Q>xF;?)9NBc{vgzJ9n6ZZ!bX_?4+m9>yuO2(L z?~*4obQvP-HOJL+myc$`YPRAuCY?|0bDilb*m|a@23t!LRH;?_X_d=N1)!*-Ee0?- zNO$f)?n`PCPtz;_~GK2kv6U%3*Bsdw^a?l{_BC zx*cv<JbRL3|cREZ&IwD{4A!9P%Pl!6KzGOy1EiBsnF<2UeiqDyF@M$lkSTtXCTj zf_byq4GfA)u`-qxnJ#56IT&Rj+c4N}1B%q5h{i+|o}mcasQ;)nZ3hGbRz5F-QUH5tjf^E897d)5c6@$MF3H&LD#& z#mICbhsDM66&)*53cj#(Ma-c1sG%ZntIbB6#f!$Wtc1c>OsWCJiG}^lbo&ZWUs9?e; z$E?kU@3+BE64b1oSV=ZR__@LtmH|b6r898He82dbGmFLanTO)jE2-(`f37~W!0#ue zi1Ur-pO0ZsTpsB$1B%Eeh5^Mb{R1QAV|gQc0mam^Jc6RnXVi!QMUlWHm8-L{aH^Xu>vP zKvBM@2N!!F8hdRDKrylh6B@k=PAMvSdM#wJn1sO>le}K9MfxnN7C1CMkzI^cr{qs+ zGTQM9GY*;p=*e)y_<^=)AxUPQoEWI`z@!s!9gMR%}I4>i|UnacDs)BJf8sr8qHh9*G8Gh(U3H zzEf$aLx)#nY$LbXS*MH6l1kxoor>2PK88wE>**pRzoxk$sYjv9C%-OApAB+*k^_4M zB3SETI20ju+9Y=DiHRXBR`wKR!*cP3C|$TZG6utbQgq(1tT-Helw=0S$~CmcN^Z7T zu?oaymRJ;ei`Arc>m|;*rg%UR`ExLIszM&lI(yV{K&09e7wR#@g)Iw>=y-Q#YTsuc zf4u+dmnXmeEmd5?mWHiP{rudGeJNqf;I^v${KkzVhnu^yOSTskQvEr#E$8g@8+Xs0 z*ng_ssSCr|q$D|C=iHEiY3Xo4(VL(Hqf}`5^TK2n*{zVOtXpn8ym57Q-_d;sPwqQ> zc;C5)53e6Qd2&*xP|Hp33zr|Byj9bk7%stKtHnEW;B5N3wTUrEpQi|l)a<@%7jkC= zpt!GsVUVD>xMqO2*4F9xeFMq-6AO`$3S@`~*w|W)(=V3g`>PYUo&A?cCbI1;_@~l` zLn5wTwwe!uB0Gb{IU?S01t2~P6whm7vK7Ra*vBt-Har#~wpR zHV?(eaDs@-c__ZPl1f*A;?s|X34l6;ivV)9R+j%H*SR5LfAf-r9o+cOBW}IFsY}-Oe=t zMY0I42+3HRnXbo58g;(jV$jGNn>*y{=={*7D`0eQ7MP_H`db(PEVw61f?~r_R-qMR z1jQIhWo1!oB%EiX!aeGc=YwP5B1;X}64uDAj|>Tp(;IBSy4+x~)O3WS+eo7C&bC{z z1T5UtO-w|@h2eNIEiD{7MgT>R4!wdEcq~tAWL3 z$vcrhf4pHCz!1B0>ez{WlU>`9DD<=vT{`apieEnXeg;qs4_opa4@GFHU`cXvf>(!# zmO_Nt9jpls8D81gd&eFgo1H_Jy6^0MtnNDpChk8=Tl@|yUEZl

    Fv`+HSSce;{~KelfecI%hABH%EA;ecL~J^_#m|~40N_O>C^mGJ6kZ{` zZp5H7RUfBbgz+lrwC6Pp7xj02+leN#StX2XT7G`vvsjQ*Pi6N1wTD@*mO_3(vh z9Xf7WAWJKp3m?!ZnNR3x1J(<3piP3VO@U~#R=FTPR`zakn-wss3%!{TVKM3DlEJpC88sC)EN(xLCe)5;+jta?6 zx>k}OqY+0Xb8bOSEm(BkQpvC0;^0rGW@`eK2vz$TKGbDvm+VTW@jdq}pg)on6;8Gp zv~jWxb_^%svZfG#zdImuhaaBY;VozzSO6l9jIWYD{8_JlsVImsiH_qtQ=7t$L3;)2 zt$R`A8c%NcqF3n`hv#=)VHP~Y^$Zfo?3jor10bc(e`sIABe1}bWQdI4t0H_sJ1XG5 zOk4qt4qH zB6OF=s|gDDrIB6IgA<=v16HOu_hT60`GMHy*DGX7`h*5D{94bhtarwT%%lMOdYXD; z15A5q;lOVP0~L7*{UQIRKH|W4e%QaMdY!&h{9<_p=qm==NPU`gGokT2KOW~fFX#1X zM3`zM>fSj5frW6ow6a7JHKB z3knV>Dh3?~dGeY*H1LW1d97LGv?v63hgeUIS19 z7(Fb0Y^t2izZCUjD7aNt7yT=W+5IwVE?8(v_8C@VZJ34@#3!=%2Wf1j@U+!Km*1BQ~{^gbI=hW@%K z#{*m=>eR25mu1KA`f2@Ei1&X?6-1QPrgC2RQwtf%Q@k#YOSZ>%@G{o4*D?AdF54pL z71UbpgZ02O9=X9k8MEsR3{XwKyj}Rww{Snwb>rr(y?lq;{OfMB&iLmqsQ?oP9BfP) z!MfC^%g!nS^&P8?h3Jy7vE2UQryoh}!ol|FKoB(K0(|50|Su zM1Kl{AZh3j@$B3A3BAU$@@;7fc+$Xl-{1(L!qn$}n2O#kEIoAaB@XHaiNq@Yr9JR> zyM%Ffb_<^{Y8kp^S7Iq75+1z%`)WuNT)7}-<e*;@F?Mjyd~4WTW)!RVcK9Y?hc&-BwKN(VTi41QK##)tNbHYtmeG`&0Y@ObjXcS?y5Wothw(71pvHk z1f3bgXcirQtum@+$fjB{J{7y&F8?xN=JLhILJgR4@b~hK@!cP{%#=D<-7hDqO$)lAT4{AaHl{l3faWg?-VcPy;H*xEEu52y+6lt zdh{5I2Lxd868kH2I&hD65l9v7?PI4h5hMBz$yiw6Nqy-)*I|7~roUL`Jbex8$o75rl_ibO53Vnr#q9Z^hyaOd_1_z3+vb%d6M|J ztv_w7YWzX{xO5IsN#+}!dOkzKo7Mv<0!cY5L67jkygnbh>nh4)(El@6K^Pjf3>L5R z^L{#jO%4ss;#YxMHcA-wV8oyF`15V;Z+M?#ifV`_W0F%Cy>#DK($+Zm#dBGE-SOdr zwZ>KO9S+Il5zOb}suzSfr{(*-lzQ_fau}@wuLPu{&-*3jmY=;)yX?RK^8_V+IORNA z9}w_vf1db0ATUEW&^L%k$)%QM&CKoN=G5CXXrrRX$92H`mSNrQ^I}l?qCzoi0jJVb zUYUagG6gzg5AQ*1#FphKenVTp->=4M?+qSwb_-lIFaFmLDoz?+tu@;Ya9iTRxeIBJM9$AS;KXLC(*Ks3;nFYj1;HjN+_5EXccL zeE{~Lgzl7#9>e@6Gcuk=(sFLs_%jAO1049h!SeoU9r8!G5_W>lClK)rKQ2=224~on z3rNOEHN*5tsp!Q&MGg;>q{2}S#8|hr%2Ot?320noQY4?Nr-{~Ed9kw=iTZgP(yHH6 zcQQ?vaU7C1+F$$Kf`VLv3AbSweE_1CWsfu$)DF9!YlYZS$^PJI*)@J)gh#8&6Lc;) z2AEk`Kx_8${!%$+WpQ%9XOIfbEDO;skLz)FJ0%h|F)CKN5J!18DpQ}#$dHt zRdVX`fBV$#F%j~Pi3J$|Ux)D(P!!H3@dwx@4fBd7|v#}~dAxil-k|Ez8k7C@F z3V1sDUty+0e-NN0f8@R4>F+^Kh=qQ8FxstWNR&H$OmRUkO_@xB{mJAg51-JTCg_sU zzH0gOcWvP$wW_oOUrFkXo=THO%ycSj(yqw_76RB4Hjp#Sl`gEIk5ZKNSuF6IBUf?) zo%OZ!QvrSI5E*)Qn;QP>m1>pQ4zc4CU(x=FJf7Y{DWI`!VK4uCUF&w9#HUKcIdz|R z0_%*j7GtSOjKaFZ>i-CH&@)UpyR}gGz`L?&a&zAr4|{H*>vPU$^viVBIA$$CD$^?X zpR+6I$OqZ#j-fiG3>w6y#`bWNSzEKy4LIUtn;J5b$ zKtQiDp&BcImdWew>=MIQ{Eyyw->T)|pH;qwGdW=x2+fx5{7@CfFV%>F>(j*sk_Ba4 zbj0T%J7jK(8bu=ycM}%44dQgu;)cN!u@@{P~a35@ZlY3SX+mDQ6i0QYZvR4=M>I z{9tMcn#W{xFRHsGOF#?^1*8DIZ9agoLg`>O2&Rs%kdR@}MscxPN$d|7BDiWXFdL1H z2nOybqasO9-zbu4-j^|bJWnV^@3e3JE6z=lVCl`nyhY>7PO&5-OOczp?_U~M(x#c8 z8-XV>ql^bcbF$5FDB2nbahGCxbNcDgc4%J>K~AjlI$z^IZ$6ucfutWq0Gyr>yLa>) zaiw|Y_o}){g%>YbhLtvwBX{b6J>N6cqCIkVpzn3&T{hOo!)j;jq{e$KUif$>foyp4 zUTXT`xD^Rzu5s;}ibpW6W5!_IH;MOT12RQGs+EZ70bsEonu8c=^WTl)C-(lHS3Tq} zUO-Z_qTu4-NoD>`*Jf-hlI? z010p!W%h@9E>5fJ**kWVyQ9+?#t>5r9`JW8u$SBDDc7`wI)B`ePqYH0K4~>q+4C@h zijrIdd!RHoD)&kB6RF?uWDAtnZ;YIRsTJY_=};M6JmX9?dul@WGqdq<#^7H!G7IwY zYd15M!W<@ow=Xis?7Z6EWHvO-(ryx%xMie1mmpN4MY|h#6k?}#530%6w&=W>!hC9? zC@f!WLjRr=QhjPQl=bsF zcUUJn4UNQz+r6Soaaa zfCqqOd^@>u=SuEV<8^M@?CcfbDdBo}YF%FFeOrmK5TAt$pL55j2XGF{oNMHakeMB} zQ8(0~uu3t(zm3R~y2$e}Em*C2hgrdNy)7o16c>;V=ne508*f2Af> z`2G3`PY;UP-Ov5gKdgG5;~F2Wv5B|YCONUM|4Nx2n3_?vt=I^YPiWAz$%0GJkDYQ~ z!aXua1;yq>5^w6{GF(1@+(IETi;?e&GVUrFo|c+oAXQ^p@F3NWbwx(HtCLbC0R=E+ znHNOxCl}ek3P1E@1>LyxT1V?P>T$|>$QP;cJOY$<8yo=yU{OhDbife-SW*{YY!44? z!P_>nO4yK8Ckda7S~S=*dyiJxpM;TweUJbXR$u4o?iQHzu@Vx9b&sE+EC_Xx_+v#} zO(kop>LK(DDU^jn#XG44xk&}6B2Zvcnu0WeUwK4b z_SSdm%To<6eRZM-oC?Y9QGgqcwXYtH-#}wQkZM&nEi!YSyn1u9yf|>s!*XIWnQ+HJ?W%~<$#|}#V5h(4XjDQq?Gid>{jI>uUv|kdT`+!Ap?CrF{XgNRo925 zcv(g|JIkaqpMUPRQwQ27DBe%nG4T$YfyZB}?~LoP6xRah7RoVBRYbz@sP2_Z8Y?0+ zZqI%XY}q)GGkK7gElls-@vUh#h5Dz&ENbUToEEgSNG~;Wl0_#B83@5DWnCoKw>%XRgW-i-v9wgkVYbsrQ za4g8*X*Hr`y1?vQ>4AuFE6%&Xt%ZmuI+d{`xF7I%K}^EBJf20ZqHO4<<(hLo;vcPD zen_Y=xYHvKcu97D_+j-nW9r7)u5dg7C(RBqB5SJG_!CsW`#(yT2*5dCW+e%hc_R$q zWEEar`z5fTQaSPhK;iU(0{uG7`xp8)ZWVsSf=`5!dT{a9aYdTLTh$Fl>5hPf#YOENyMi`SQ*&I( z<=Xk1%DO7*S~+u+iGkoKFV65Az~05>1Ut4!%nJLHB0q<~`&9cNC)>*Y(KT9$0mIEm z1YOr_kkvJIk5oh~$mgAuWlbC42FUiyKZc5Gxk^dsT7;O+w^Z#c$P6Sief1 zva0?a(bWzIxtV&XuyoS6Q3R?=hm)X212CH~@fAV{516RN1h;LX{L5Kc*hB#Sb@$1Y0KiRZ$yTVK$Gm=GEWL!hozNPwXe+ z^BmpWKA>Q!)OLC~{)F#7?=%P-epv~DH+@3CN%M6j)Ernc7J0C>_Tbya26S1koSwE! zqp_)p=lQ@Ez4RiZxB>6_;#$6^R#Gx=hNg53KkV=CY(A+_TuPXd$hekgi1ovGmLFty ze~)q6@Rx`k(CuKBZ8wF+^nL?G0U;+5%z=e!0FWmz@;88_#6b$IW`08s0!{%r;A$en z&c@pm#s6&v%po%*lV_!m%A_L+r}>=H=xx)GIYh`T51_@2p+X3`xqmM*f1Ll z@L&8_Q|O8-o>5djoc;3A47aaCTR3MsD3V#xn1^qONt@unrJTf6*gr!_+f|{$Q`)S9 zo65@n>-LI`!k$d??%RIpu@ta1bUaRf1wre)!v>^EC_0m`g1b)`eA|yx6sw6t)u@RD z|LpmpR0Y}ZKe3=>ly6bCp}?AN$*7GJ!uYyq|0bSmL~yKFk_0P-e^$2$ziVbL&~JdD zgoObx-#z&~9%$_$$2`Kk@j~j&p+y8?Cbak2N8oARF!2?o6615LC;#doO|cbHjRYYw z%i=%87rxw|dhk`aen53-Uo^JF7hmG7dp(6wqLbcRm~9OW8`@|-akFFM+EOgP} z4aEOY{@4%=83>HQu(s#Vy|cg%^0|Kc>i4gaR93>Kpr_v_Nn`gM+uZ+MM)VdYd55du zO#n2laG5%g+(*!cex`~~R25j~l-~mWG2eSZ=1{(_nx6Enc=p3q(AZfoE82EtIlt~5fkl+{%b$BKq5u*@2j{->M@qn{Zkq!T&L(0@HXRE5dsZ*Mkz@gY86JLoZ@WW9 zF_h1NXAyNi?d9k#!mrxT898pgOF=6lPc8U@r>+f+Zd8|r84oO;rqU#MVa+DU8frHW z%t;W%a2I5<^O^a1U+q*Qti03&XHBTw zPDc0(S`UotHx-hvqKFLLRvzMP(kRKJqLaQA8>cCQT_{&E09PcB7Z2Y{T^GmdPwL+4 zp!_O=sVLy+DGY*drTN*@X}uZiewF$^*=l;m8LMgWRt=Og*f70$&c}$ZhB(It-p%Ve zSIvB3<*8T+v%GKDFlNj1I~IqHcoDe%D^c~Y?_H)q!2?A#j%oS=h`L!)RXt}b15Kz7 zbal{0kjYuvYtV(JAp)8@QQ&`g93pS%b}Xyqy=VE)rBDuVvV69W`sefZZO}tV{>F5o zREBZ$cDD!ow(j2oCtpDrEJd*n2LQ`%D-A{H#T6N0JSDHK%+B(y>C-P#^8_y@Pn%E{ z_B#DIFV`d5UbNg>k~Sk=c#xrB0nu%aX#_Ccs%V(W#Wv$K#*||hM<8ZhKk%KsdLi4N zl1>$J;nW^!>6~KVXhrfj1cMjuas5?aU-vCM=a1?)Bll6qPtmwYuM!-T7x%Q6;g`o- zd-?mWXy;Xi+{KlUlk)ropQ7u^mcT6*2pRk5-s1!-;CHz5?_7!TYx>UTkS&2^f~CC+ z8r(R~1d8s*qvP*yE_E1K3;F&zhG_G7^dzZakM^s{^kFB5J}rvXk1SR=m5}AmQr4)0 z!208suNC78bx?}e@o2#~j(XoXP)uWIJOF+&DB!0$MUM3Z$sDFqXnU%O1AiD^40X{iq_=z@| zpKrvy9Xr4+&s;rGrQB$phw)QUelOZEE?5fM_i?+M|3zAbh=*4YXBrZbfs_@>7^hO0dHN9i+EsNeB?)Dk%JMj7A1BrjU?Cx z0w52w>QP~3z2tDa`ui^&v29EYQ#gGtxv|dsCzF)=(B|TxSu)4afi}#_4Kuhe3YEvH zN-_yA)^KGEvr_w-<)fJfHKPCs0|MU3i||zqo&@IB#sim|T)Kua(SB5Q1J}+cT1(xW1ev#~u4G z|KyO+2;5ydis%}($4kUeNdkeG$jJSPPu%917(i#RJNKS)6E)q!84hh9%|Is`3V)gL z9<>W+$b~%|v~Pc^cY#eQPaA_+pTydW$wN@OE;fID!>{qhiJo1E96xNp_o{#Q+oRjO z{V-SSi>+QrS~*Ub`Z$g94Ol=@zJoocCa0?z1ve~~b6T27HV>;AxO~{RN zzj4MUBj(dlZe=Q#aS5i<6?L$3oaO9rteF_o-|Rv+SJpYJ?^3LZp+{mp-3SnKR;*5!Zvv77zMGg<7ZT`X_>)Oxk2 ziV)`>3B9!R0e!hPGo~kdVX=M$T^?&ye4knBgy(Tr6QWYXwZgu%xXdP(CcJW;tVR}=`bK#FCZ`e+TwiqO`XP#6}tVNNzQ$<+0h5l;2 z8~O=~j<8FfnzC}}Zht=Zwa8+3HVGwpN8f>?$v`{4Ns*eiJ~>Z}Il8~38}e3aoYN|O z-&@LXe_%}XhJN88lmU%)^BdepU#Bc@JO!B3-*KFR&P!`!y}Fcd1v@f zP40H*HE^%ROofPor&wn_0dF(U#P4h+HKbL0XiUQ8!V2D=9zsPOw(*nyb>2eSE1CD? zx!1&h7zIFm@&x3b*1iSsk@~;Y2)d%1d&h$4r9DTZz)v=+r)T+0*XegsiIFz0WOSr>tq zk23LyBLivazytoX8=Ymw#PG^k*e_L8`(pK3V{oS3)X*=!MSMWikK=Gb&Gw>PmZ347 zlxNqX!Thrm=ntnXgCv@VB+BEBaQ3I(EQrfs1VlW|{Kc*ZcspmcGO6Z}zW7aQO5eGB zy_ImPBl7OAYV(q_XpSju^u5D6RyHeQ*R!06WE8jk)&>x_3BLM=ow~d8$rkWd;;e7@ z_wti#6{jYCJ~Nxwqe3c6M&0mWey%sm#%t%WIvBx%ZsP_MtCsUphu7}2?k;(c0O$A( zB(?i5hXWIl=NmIfjf0T(?a$1>5$0vC|9zOe>HGEA_%K=m#KTZC1JhyL4-1juqu z;j_ZQe#E~$K)-Q(C%8rCqPB$;jtahQ_}GrTe3krKZ{Tm`l=77kQvZ*AfVQG2YZhWR0 zIW|EV6Z7d4J4*JSF$*f>vEfZ?eOE_^$8U1;AkAKAfwBK?ey+H$>tjJ5ve3M%Z9+k? z0w3eMR@WgmzjRli$HPi~_v7DZ+AD7-PXuC=YuGSgqeKd)7q>O)0sfWfUR(f3gN9pN zyP)yXNK8e+`VX{SCn2?|l0u<*9kZC=@tS^qQ1nE`oL23)G)Sq(KeEH7hh})stR~X8 zG{VUA4IxW>&L1+tm3d%iHo@U3DJ}#jaw;JxY$Iyn$O+mQw6DA;LGdzrUUfTzVC$W* z#_u2KFo*^P+^3GEIq$4(cuc}{bvqHcG5xDeV|gyKHWP`@UKh|SW=&L%b9XG}(gU1A ztgr|Y55&Kmb^4$0p!gn6ev~n$@JnZAgl+tu=H?#tJ(gG~s=lKGUJt`mOnO3-;wqh*kyQgZ!SvVM`+QFb7&&M`_ z2xc_?D~}C$5COYU;3Anj_w~C&VFn$4ifNAR{QYcxeF>07xz!!X1#Zxjy(6-;VulAX zq8q2yN9}6mf9PAu8Q*8MM!E@+p;b)gFo5=Y;ecO3s%M*qzRZ&|(4WEcw}6ltMIh;G zRmcoaJ{P5wejZ{}RrqTYZ`CiN1Zz#=z~ZeumNVva*qio*Z;-_KegPF56icFN{DtNP z7#`cgbB-FhIbFB1eCJrR-1kqc-gv}~>mK*rpB$>m*7tJTCL^~*KVhE;3I*eorqVuK1rl4*a4K@izI@_HQe-Ow;oy4mMK%?v(3ICw#3KJOoa}sf`@>=;YAr!+&D1nx@=5vISnJyz2 zoMFB>Lk{(h5a)UROYeGzL#y=sYhrp9`h1=?%bJ8_Cd!fooJYzSpr*(%&5_hB3NNl$ z7SKlYl_mzEn`XYQTm*^{*Q-bd=>*w|H)W8Kna--Vsm`^vgJaH}$|79G5K3Y86d*hL z{DAq_3k3x^1q_UBMU+IFQ2|Z4`MIVmFA9|+iOH#lnt06m*nbc_9ISrXWXQ}EFWNG{ z2z5UD(?x%${kSgPeZTio{&rg4%$yWJo%g=rzMt9k(7YqD*Lq7iR>d_!8JU%+n(dGo z*Gvs*w3DyECwRS4GEPMFKKIPMo(1d$hv%2=DUdyEaa<1^e>2lU2acO6_DoMtu8_dQ zOvTP%Yp8q{i=4L>I?O8+zMH z_P*D(elBz$H8+L!h~r3WfA-*km}S8u^cWTmMQjztMia!Gk7Roby*n=p$gFE?6lu{B zp4Ccc3*u?};(gr#?w_K&3I9Bko9~GYns|-Uni}?8?>py@*UX$(gRGiKc6Bz?-X01@ zFUG>cH@d3MU=+vfC7QY;HPS!B07dQ5&`zJt1)pD6H>kI(t64qVeB8!e!GC?bJG}C} zdN7G{Hv?FyeDW%!kg4qw-yL@0P>cteA_uW#bgy8g7WiqQ;O(CvpnnDv1qs}aa-8Ea zbj=tH9~{7d>%^)M6?DHmIn3=B<5&WsN0JO90Py>e7d%uqmUn z|GGa~Iwz`9v?dpFk5c$!$?4T#v-AsE75mQQe;IC`e(Bm(v$Zm}5u*>Egiv;4~|_=Nb?#=EP` zGTbb`^T!(LmXGp(_b^q`9KCIq6i;|~RE0hLq_|A#k)FI(#lN$^LC8Q#U}o8n;iBuO z-NVm7>P&F?n_t@B4!%dvyJoCp{h0*aio`L3tN_aFRsdYE4(f{!-8gsf86h|p$_8B?g-$gXIx5(xV=?F&3Qj2b!rIUB>o)GI5 zT$k#rOuAI}vzgjiHBKw{pa645gNDLR;4@~9??n}H$gwxc4{^#<#XpK@TKi+@OZ}ep6=Y0t#fPRrXSK&3QnLDNknFuw*TE})mR!&z}$UI|&#p>2-?OQ|2;yKy8w$2u` zNg)ohV`hy(8tc@GM&=hcJe-WwCpi&VaXn*g-&hTP9n8L2%%s*~{DzkukHu4th6YSj zh#UX~yoc?&e{(ka^5-?8;{xsxP65`acPRXu+x_tSSyx6@`!V273I|ZKm;Dd1s5u`q z|33CavSI|r)$@-Runc-)tegilfaasjG{UW#z*7b2XaH2l-h9^3F&GkAI6G&MF3J&D zpAiasHNMH0{&Klqx0O<5qS){v(!2fx1&^pRq4(gRdjUdQ?n#MlP_6BZNEYS(**0I< zcA00fGMiS}9EdH&!puH)S&8aqjDcG<^fRJpcAxw7R+3{bVoh>+74F zFLh2S-tv=;i=6*;X9mOhFPtA^&PCThbVCA8ERN5=5{5etN7TINA_laz1;1kZzQ2P|Dv#%3AUEEBX^-4rR?o4xvqc9bkV%rqX0O)-Yx@AH^#-@Pz#_3fSh*uSo z_XJKy{prELRFd5dg$>Sh%|?|vT%N}f^qBI02@hOO@DOl5Jf}O`v{S~|Uw%3CIQN+% z0!I1+A{cj;pra#s>e{3SN;Nq8WVh$Y$*t+SM%mGL3H@sR6K17bTJ04KZ;LOIIIHFt z#>GO<5Y_u7cmCLhRzwPmN?4aqaSm+re23A0Xt}z)GV11#w5nwBC$n&jI?P`D@JuYW z;7iYV`BMhjNp?D({;`Itz8DyLhleh(XoI#UF!-r~pcqkKypQzsSGO%j?~jobe|(XW9j;`KDHfvmw+QpcoRTbVIexXm^5Lk_e%JUs2ps5GrdsY~%$~(%r ztYRYrJjObU`C9F$LSlp|fDFR#`^R75Z4D!5Y)0W%ZDP1AwSzGYe?wIJl(O~*`t;~? zTS{iCg;$T!*{&t|wePu?RYmh7VWqj1FTXR3(VHEJ!f8spQwW9VX~1@yn&VnJ@#ov; z4PIyk*kM?Em=e0WVpd#!{G)I1b>FUpJxOER1F}L{5L6o~xA;^~FZ2wy?ZAw8I?d8uwg3rk-#+ zac1x6_bZKvy(%k>k&Oqj;ZsNm!&Twz_2K3NI!+UJtSxW!E? zg+Put-074@08KjViS{;VbyFrc-R_`~4Q59~vzz~^=Q&!H3dv|Oso7Xbvy%D>y{s_Qkg^ccR>a@O_*%#@*eikL`k;aFM(YY!5 z>eySo%*;-WfR=tdK*+ER=US*waEQ1yNIDzDpYje_0RK=w|D5~ltHfy&s5||>pk61%J6?l2dwbnXA5|;X2&r`{&*V)#q zpkAv|Nz6|$hWTiH)#0~1zye+fu#NCvZZepBw8NrYeFBovPZx6p9CESKQ*Ce{1TgQX zdH2sVOjB0He^AL%74^%Qh z`7RW?24;qt5N*khY5_WMdw#Z&z3KaqV|&WOgcznftkP4DORIjA;;65FOirQ}wTv1V zL&~SbUvw$q=e*FCOUd(9rurGe`ayl1{};VbDS*UHO-Hz%c8)D*Zjp^Kw_ro|-%dUj zIdEXU@mRN=BxnY1zLgi%?x&pVlnQsrb~y|xovYCcG}uekAb`bWGCFxk zKbH_#zOZbvy&2%Bo%6&U(N3Sj-ElXHD!r`6>o%T_khy5G1@X5o_>#XDX1zZDm`20`ne=9PaRX# zQ7ZLoY=}vPMw1p5=S|stw&yB+^2WBiliKeajl`cF!c9gl{sUO*liWatwsFcunqR5m zy9|yDFJu{jDl}y45T^(%vHPo-eBci$HzwZf8|^!4-5(fty5ZRLLc=D4JPJW zL?YOcJI44-=!)Gl9{HHHE8VH_URTqyQOuY|0eFW6NPrI|WIS}Zcu7&ZS!A(+{;JBL zKagU+VY}|s^ME3SD4$Ti1zq}zm4kkU@dShZKE2ZBtVukCiNj{o`BzBt*89G@Iu+51 z+=#E0yQ)j1=3=@|nm#~ogfEe=_M1}Vvl*_8$h&-)_PLAJ;WP;XZs9DGZWm4RLLyzS z%#0Wa`@jO4Il0uK@tK;VSypuj%p^<>y?K9hjvZ~$?E60VxfVrkiwpaQ*NS^|1FS|4 zj-%r)kJ&R^fJimIxYOA7uQf-H3Ng9CajW zt1A74B4e$42EBBs?h6t!-D?Zua~@9E+%Agk54~FT*IdsgIx@DeWr9MLY*yfO)rzb7 zG-fcD3>Xj}eQYcAGAM}t_NAod%oXwbOQFt|xM#v85E( zrM(Spby`nh@v;KY96lF3m0&M{?ZiH(Q7qrh8k(kqL_qs7v)35$-7r5aI5B>GvV;}F zkaFfEuY0PD4&O;KpBB<+o;h=(<3EaU>UPpP$IaWO znFUz>zH{Vd>fu2}MQpe?gcP+f#F!-CKN*R!v6N^I>RoPp$-* zUl=qR@cWx@1yzrBXB&K8-WvOa#(lTp9_ebd-%js9H-O!i1^sc_r2pZAKJ-SM`iAO4 z$eRSAbK>Osto<>0Ofzr*?UrlWe55oKjN1jf_^8*K(_L96VGi(HjwJo31x0J70{< zx^}WoqGSa9616xuhjEWH>e{ zKd2U+ZSCO4>u8e_55_oTuvl_5g*oF%-N`ML^oeMzYmUmm~^v zw<-on(X^@NO+0aVNYO{93eIjF3S*zB0mf~Fg*)@AZ8Z~PXS{~I>6-+g`^BZ5} zJqL0@qa+Qb>`PeiwUQ=D@);bg7KQ|}nx%;4h8(NfFtEz% zY${c{o@53cg(Ar14?_OrQTY(*^@L2IQbEm2k&*yq3i3nCw!sTAE$PGvpdjsO6c|m3 zE~2d-dVUfg50}q*A&8J|^IVocXLKy!4QdsR%Yy0nXihSVfp-wAxhOgo@$%vJtn}4k;xX$@O!jIB2D4 z$E?~~J)+dctfDk4GcLp3EAx>d#ngA%zp3eFTugVZd=uC15B3|r7|$542|Nw<*p+>f zv6g#!_;CW_?RFSvYLVv@=?bl0shKr@VeuO7+*m65`&`+G!6fIX2JlD^zyCv-lQL*; z)4&`?OY3K)(Ip^OK!B`sB?xgpaz9wPD;XGWEZO3%e~8s1@(5X!)UF-V{Ik|xn&UQ{ zOe+Dg)RM|27*iyWM8yP~&{DFqpZ`K|c(EI&CFDPdvD{LFK- z;G}>ql{oIC6(2ghSK2U@8F^iqbXDQB(OUBJX1S1>GOAzuT;1#T*1FfJ;7g1Sj70Yo z=gqprF++D20bbg9&4E05KLjC`=@?Ns*95|`toJswRu3MggAkzTlun+?#ye?Dj!lBV zP3Z;0;MR0S)R7K zL%Hj{#uH+Ev#vj%+94eE!C5n<7Tj8{=jP$oqJO}P_f|r*<|TmLj;6%$Aso1+!nWM< z{{6+S-KbS%Clk%($gI~6CF={LQqrR21 zVu~UlLu*kUTCct0@E~WNGoG9}Cw{UaNQ6VGB23H@w29Qro4nNi%8kM;``-Y2>|HsXQ7^#6J*9gUJJTo(P^jhU|7wCJYZfDdI zz&>BK^FDhsneq~7%k_wmG>DwO&X+6wF+eU*%K*@xS!yNg|RXe zwfX;9yE*juciAS(6=@WhSjJU12KH=_i(03X0#1t22BN-mUw&G?j?H@yzc2S}*rmHT zEk; z{U6Iffk4{C$9>}p+ri|UosWl;8gq?+mh1`0l@MxFwrUs$ib&lw+kTAgF$>47r>5R! z?;1 zDo@DF;KyPj0KEe*NV=gwF+DAbDd>brkdU^08i~gM zSmukZxD>yG@e!M*Ksu_3U2(sn3So6x>7KBeCOU{6Pzz0p*!_>(ViMeERw?0TksRWT zmLNoYL7>|8H*w_A%B(J-qT$|LdNnN;DbVIe+2*H>ZiyH!!ui!0tHPEsfc`b1zZs>U z7eKtsFt16ij5XU-Un&>3SflVo&e7(6e7SAi{!~R$@rE)w7eblWOt@ShcDWkb6_Iw6iGaT}QHdPYP_N4R9SZ>Mdr2*lH?Bo3kc<=wAjtE)jgFBJ#3 zJ-;XSM}k111SQvIMc3@&sH@O*-v3_rw4htuxOYk?LZ5``mPk16zI+N=zDR)BH9tiJ zD79C}+whhe<0fME?;M}d*<1(WO%1s@WpjoxD!99Y!+#^#XR06q9cdNrrJV09fRm}7 zc!G>Pj(X_|-O`11W#3oVVLr_;LSbQ)N#cBPSeb5B< z1P?V8fo|@lK!C~Ju3Bz@9! zwQfknwwpO7%kHlVPf5eyckC$~ZGwSKrkI!S~rWHV#2{!SuG(cRZ-$6Id zZsUeZf%{?Q)t(AXG001(SFbc}bTYQ0$RN-uA?@eBkD=ldr@U<3EPJU(4wXi(?DKk2 z&<+79g%OB}5*8kBjwn%(kuuD{=J4HsKG-~;JW&165AyFo_?uTwjXxq+jaPAt>?DK) z=*OvGz=hXoM+J^W0=2;&At6EZ^(LE=OY(0*0qmhST{y^zXC<0OH{;xQ@7m8c2l{&r zQ+YIoZyvrB*4EcNLKP2>GZerDrtDuim6Tx857)`xfV&^9{n_`%j_L){)MW&2J8KY^ zIBiNJ>p~L>ui#9Gs-efV$mF4Hq!W}7^~wFt7>RruPMB*drZ?07$-_*VWL+Wqf4t}q z&T#o(Q}u3hDlTF8PVV4yj0s!2ek7bsS8s+BP+1(8|B8?BxfG|dD?j?QYqw@= zJr((j&a~-!Jc42R7&Isc(PZiqKjjUmY^PIsCCg$f>R)Ok(;~J;$3(|RoZ?ANeOUDA ziiq0Wlah95;V8rno)P`zuwPH%byelPDPClC?Jd{7p>zL)4!=0g2XSK9QvI4|X7J@4b(wg-)7pUhXpt_p#O^rRVB(3!-W=8FOoHnw03Crp#>a(Kgpy zG;R?bXIc8acqr}L*sr*AEQQXxCPYn8+ATUUiE0_S@vIkzp?6Hu98SD@nGOM1Ky7Bp z!F-@Wyg1|}ndUaG2&QrGEx<$oB7zfc7J~xH*3jUT&O_~Y*L{ibBRO)2@9Ka3@LEe( z8?8NGR2&6gSvkFzm4uLM>BJi?sVlIGyiGS+?R8=kq^2KR$ z8z3{I+Q@s!`Mth(?kVL+oeqQIThfqzVI!igmKFoQH})0Xry)f{LTb-qB+Y_401?Op ziVY_w_fRzV+Aw*V;+ObVcV|9GTvkWwQdNgD*_nF(_=~@;=Ckh4>SLM{->hUS(SRcQ z6hdjK^}f{NHur8W7JoaV`TO_kNgtkX_Ymv0NTr{D<|TLG=Pm0afByLaAU1sPi% zzbhBl&(oJr;bj4{e(zE5JOJ9)G8s-Wi%u#Sk|{!wsguQnx^htdB&D&lU-I4{i82By z()H!~N zIDI}y7`h3ZQl43~tHLpGcRMAN0Cxo7ut#fwn-O(Df(Km;YE4hYdv=gT2=GL>mpco1 zEPFTxo-v5)#>=C(d8~p*u=X&WF`{wO4_%V!-2j=2NnxR-_KMMo#L(U+-t&=6jGPJ| zcq?L!g+aY(K@#EXP(ldNBcaAD=jSO0_>Xs2xFBHl#w1!XmTE$Yd{YbcI>$4{f4-R|-+qmuIez=hafpZ@fISu@9BwQrd)u zi6aYa3*Tj)BS^4)l!jQ>Vn-UN1S9%@S6z~SUXgT)Ny2p*>HPkhT)PfoeD-5(#pFB# zT{SRvoHvV|5$hw{BNp9nSj|Q#p5!xshuhS-9;`Bq1V9phB)>#p1F;jrx^#sf!!6dG zsjCNXZ1^Wn1of4re7GLRhcI;}Pg^tF=U7PX_v(D-mZ}z)I>W7`55oo(x@^3wb)t_m zOFG~;UaOwn$%PDs8L}ZzvBJVpn(`TGO30M{h*VOz8i+`ux7VdVjAOOW@=sYO7>rcSpijOxrS14!!TWSXjCpN2G&?vqc>{N==rTVbXw z$7#bk$UkdBo8MdPOedcs@yy-uJ0V-{#%gJ{i(i1x+2x5)X1(R|v%tRx5n7qp`Qf>3 z7=zl|#as^$`~(*rKcP2*8e$vij|MltzN$i=gN*t2Ljq zw!=`Ir*Fj+xpg<0147?;Sz!5kQnQ`rF)$luIEXRRsb=PHJNhL)EpuwgN4W8f?n_F( zoPRmMz6-Nemw&!&8g3233@_90WcXj+p{8R(jK(E}oBmj+4_E0iZBF82#ILl&EOjX+ zb?L!Gz*B@ZVQ?WHq=MEAGAga|`R+go4L(tkE`jNMWKmH@`(8h1mR^>qmcekpAN4oM z=XfL-Z!bbmlrU*xMG6^Q!O#3;rV+>pailE|>mNGf-|@JRXXTK3Xz|BaWL*}gN_ao+ zVTn|sEMy2HZ_Zs4=a#hJELTz`(xa8Q=8uP@B6Phbw@xngkXDQn){>s;L>% zmGrZFcVgeU9R0~2vQ!tZ^WNuS$nWEjp{1XL7SWDvfJAMj)F)j{p`sA>6d<(zyPqYm z@Pex~f6L>2ZW}Ld6^YJeH-93&BpE*DU04MjX~<)M;Ri9XYG?R#Q`5#Zs*;1RLP=M) zHgQ+M()FX?NxmS$DQx|8pufNOc4FWK_V1{ugu`+1qW0}R%Rf}C19+;$4YW@RHa=@S zjSkZm=0XNMT%MFGiy%U|v@CjmsTVkP>{$J3mDMB8{3)68Hahk{8EfXdP)kAxjT8<9 z17El2gAjpoUQcgFG zay<(#u3yEFbI#(MpDCD)!XQT|94W;-!OzK3hTb!Zg4?;_0 zZ~qdut1m)bz`Bz=R|Rj^Ih`(++T6n$l{oac! z$2#{b4RFr(q}0q9bl;EyCqnB3T#e0jJKMu@HOgCIZzn3lKkM(i+)&3Lnr;?NsYw9u z^Sq`u`V8DkydxB+7Z1)|Wvans5hWU8!QssBv!I?$8n1TfrpgD{Me8UO zo*=vs+))a?XzU+y14^HxUC&kH$F+$`0T%#@;HRN+A5G)o=)R99Vhy+bv=kR1RwnIF z0n(HS2L@qgj+^73$UcdjBT_s2f;!$T79j(eK}ozE+-Cr~lSpp~AMFKnStB zXhZH#A)HsXl?$q%LJLI~s*mb;&}{>S%0qrSa966@Yn2S|wtIAD>{^?dh|yw+kwbJA z-Jn^epJa=~5oP*LS=pI>)6KX7I`PTiFW`wd3u8e(ilfeT+lj;Uw3jg!ishx&=Nh?P zr;2olAG#6NQ5uzOhfteX;vzm4o^5IHyxE4Y8>Peq6GVf{VW02165FvM$%NET5jx=1 zLIDOju*EWs9(sf_C2Lpm9*G0dJvo%QInV%VlR~UNk59{^NdOP_rU27#|7nkCA)Oe- zuOD*Zzu7@Qpa|9$>fglY=|mejodk#UKnyXtDv_%Fxg*rCp*#j`qw9{tVpKYvIs@TAU5+>dFFOF0Z<~z;SIb8^$!sJYJ=CGX(^a%NwBwEGKZ4_%i6f7K zhp~s@Glx(abJx;l8$(rtC6#|<>vpA~#}Q*p8`*4DTJN=r!I|Nm&R}rErdnI|J-J#7 z`@eISFFO2NKcD~bRj2gw?26aktQUAGj=2SEQ;_a%RU8e*`x23mvJQ z5!%E>kS#|)UMMAVI3C*NdRINrPZr0bt3zx|zEF(h*T0X-x+WTJy5^J3gq_IfD*0&4 zz)TArun@MG87zd5GLW9~rhEBh{=Zt9s(ck{Me|GP$E%xu_=kwaNeW+oFONoz5m(M_ zF6?&C#RuK5aNWZ?D(4KvLEpb~#FusG`tUr`jb^o}6*UJ8Of6tn61qp#q~+PWN4sYQ z*@p5y1vF@ITuS)A3tG=^D^qUN{0rU~7yV~nTDeO6=A|Vz8CN}V+2h&A8NZ=r*c1Z_ zN*)t%gy9Tc=#!?qS03qKv-0r@vKCewB@n$pQpAJfLu;K7mTa z#D&F0;@C^iSZTVYvS#y47ZpzheTPOo0Dk^22ie)*ua9bZxOe+{he?;y(C~%2U~x@| zY;P!^q_FmBEr@6|;cCSDN=vf2Y`3O^@HKq2g%G0Vm*h`OYwRUy>F}u)*_Tp~RGX3B zeetnDU)F@sMKA&cwN%Vl)65w`Hxw--7e9k3-|n#vG4n4i?622_)o$mEpCngv7C$YA z9cQ}cL7St9+HFa(%$tqm40Lmu*>&SI@lahwsyfwi<|ddFGtKWWG`FjaFurHI9A4wp zF@afH*HP2cS&tWA(GKv>H3@O-R442Uc>cUReAwV9Xp@y#;GuEm;xrCpK4~z1Ca9ArnQmbG+)XHc#)#9t*Nx$4jCwWwUpZ7OsC^c8JXwBhF(+dDyLEAgzh|GQ z?G+L*=scWjv|_QzS*}Vq@iXwbr&@5;gl0Y^AO@kUR<=^T+BXZE~v8hf7%zU=oAPI-E7%C>Dp%W5TbWOfxnipc;4E}EpVPZgd z^5v*R!nK2MzshR}KkeruU^gppM+A0#45Jz@y8PP(r z#ZJ2)yD6c!o!*!^Ln+(HbVcU)Ir-RqZNwFSv>TPtbbMbZDL)(=9{p&}=dW^BqlTqj z+x!$};6TAqB9yp< zmh%X(+Bf;c`}Su^5g~ak3uZI)R5KJLh_F4^ICh;C8_FU8*dk{)Xelj^;}4YnS3B$V zG*hKfg=KrfCq@67^y3#H|I)vpD0#!zvs(xeX7BjdT-hSTr4=sLv|Wj#U^ zp$}WksIn<4XH#h_ZR^Zpd+;c^&F@9~thS!vNsL!k)=bpo*UV80mF7gOAC|rz)Z#gE zD6H^rvX>+>r~69`ht>W}-IbiI!x8_+ruLDlwr}B_>zvnC%Yk~@P;Zpc+3}~~kBnW@ zxco|^&Ci??4|}(L+|O#O4u7v7ADmxb&#>v90x%|kWJhm;0$c)MUa`xsoOf3`hKJGo z*0du{mG3J)&o#{Q+~&OY3${}uU)gE;0ko z4^;daD3hYmXLQnUHyPzl(&dYxk^LqI2MI_VJ3`2CeaHZZ1lN)$RM=)tZ;~{D7zcsz zdYoiHy*x)c?Rf%0^yIu<|7+B~pmNx$mM(uC0deNm38;Li@6#?-%)0k8KoqbmYb>(@ zv}e<}hmJHgh-F7@0zs!6a$F^@Eq=e8hKgZkS5;j((E@WW23)6AoSt^l0oevEt(`uN zX1RmYhLg#`-M(7`U-dl>NksIXO;aRC0`%aKFZ^9b0ADL z{qPAjMo)+7-u4@0q~h0f z&CpUN0|5Hg>Ct@dR2$~U+O$*=Urn{`fTZd&!CXN+Y69RRfMPXF1}%wVnWWGf3WGah z@MF3gcj^$J-1!%t))@fSmkRt79&}UqPK7G^8E4M@9(DBOW$|^=zC|v+;sWJPKg^}W>FKG?%Acf^0`=UG5cv0vG&Y?<6RWr?wEja{XP z995MCi;dOKb&ma-c=_|&Z|knV$L58uc`bQ0@uun$Ea_vC4emr8xG(W3*;A8_XnqrK zCJ4)ZR*DjP5d2_2W1CaUO{I;m5i;e>nt@Ij`rS$pQd%oa-V%+tGk-*8KIG0RuCQ(& zsm>F?t{3ioI=)`~=6CtVjHKZb6h=_vXU0b$U8dq#WT9!BPiUsIIT+aExSw@VQRLIfi z`NEFPkNWc-TO367G;{pqfIn|pAqj_P{>a=_=v=H}T_dnY}4U4meqi`Qgt;(WeMKfY#tjm=*TxdL3${+StV&k#vP}K|Ma;k{;=Bfo=`rX9W-)gKT8uupr#Zfes>1 zzAVBR->)xy^Tp>K|o11*3x0= z=W$S5vvvr8k{Pp*dkzZyp0K^$Cw;6waW2Z6Q1a!bu~$fA*tC3|p}IYE?*%CqD#q#- zCd+C=jIxfJ^c$BzX>i1)gZQ>AwzG3Th(lJJbd+KSHdw-Sn>Un%5Dl6D%94XK$4qOR z^$($p{cfs?ecgf}$1IqZ?pV|AO|uOEv-{j=A`}-_tNjr2hqw9tx`OGmO)77677QD) zj0=q|K6E4sq?S)1p(-*l+O4T+7it~r=TQ-gga$b;P+6h%~YrC%vuo6<7iel z1gXkVGvXj#nG!_SA)|LYGoc-Oqxr8K{_z{H-5%FkbO%wdsTXY3xC}o~ync_#eu!xR zaBiQu8Py3R9+dTPK5U8Tm;%XXP&BERWdRLyzWaF&x{zONbVKEh0cI^9ni@`d>I$|m z5-t?J2{q_|K51+urZ>fm6~Zfk&C|N!Q&=2x4tL0 zmvMU&P_!<+&w<`msd5<1yo-tS4jJ9d>+AbtxWOX(Zfse}Jz5C|Ix_;j*>OF(iGNcz zG%h%4MNWbC-v*3x;e)sWL_3aea@#yQw%q7Y3!L414KR)7-;L09cEF)V3MtctZ^XKD zdA|3sd9X(@9)RW+lNqJrHM)Qj(C{36;K2$q<=b=4$PV?%I^{7~NS^oI^fJJ8WMTKs z`6z3S+DeRprrat`MLz56w&fbG^8sgiWlGOK%c79&Q=3YQf!7U0i^_KYK=;?lzwB8v zzx(sgmM@cOUM(93E#(r}jWj@Lalc}{I-|!3?uFmmlzxM`jg{OPMEDS;E52zM6Y7Nh zWd0(!VEFRQXJu;qLbVy$L5Yb0dy|>Mp}u`Xam81VrI4A&h3VeiH-d?jR0f4_uHTv^ zu(S;Lys8$|=VbrRqqkcBwyqWA^6^>n{m3Y3zUJI^=lp!3ZQSfM=^+c6A~`DxI>+ht z?=8F8rt1!Th+wjqjbNCYo>DP={pKzfj)gdZBb|lzU9)! zoJ5F67?n(mw90Ejt>B+TL|&T!2&4&)hGS})*J+1^ifY9}u|8k_BZiXwT=?QOK*$Je zUcQ@;+#cVApi(7rs3engM`DU#k}{GGZF2@VbOttk;>;bCPaEji5YSg9{)Xq{Y>$0q z`Y;lpGfD~LkK$2*A|Ivn5bc!~;>W)p7-qNMh%vFxmM8~wlZ$V5HI6&byy2ejP5QjY zNaf3I-B(%O`t`kWqO9||{#yK{!BYbxPQi7WMY|=Y)M>i$<6u=zd*Zd#sGzVQx2MnT zK)5yrmWc{GqetDjIH(U{KniN@3jZ9JOs1P7*f$;1gU;NHrZEdJ+Be^UH?wQv>*0m( zDIclj=~NqE$X_>l$69D?KI!x-Hx4A1=e0)so@Z|ubb#|{qZUX?4$#F%B*tJNzPBuj z%7VdMhPVh(mO(K2mmNSJw4%+k+O$hIzBnM_4oiM)MmYZ7+JKvH zD<=d0)qdciV;QK3m!(?wly4};Y8q+0zV6^C5z9~(V=siskEg!wHFxHo&+{=Bez0zd zeN&}pw<}t-X`h1sd6>)u3zCZ)ZT@l3tgTt*h~#WWoY`-|R{e0U;$_}N^te${5EG=A zyRo>XD+hbjh2&hlzNm_u%inEIdWZBIE7+?|sSX1BXd$^}Y;+VT^Cx}iG=2{Wq)*uX zr~x42HpZRWwXB@O6Kz-JoRGdEOyUTDBb+Lqzv*30uupm$UOBC|yYh;lD8=OuYe3R` z@p|GjhW&c(jL_TPq^ixT&pX!n>5{VYTk~H4F{ZlNI4B&2YgfdbY0Z_mD1t@zN`qr` zQbQOMWz038h3>p}W$0!ogQ3qHC%x?f^@wH6ItU0K1Z;vsks?h}U*YSC{?s}au;5=! z1tfbI^Df=sOxcUYT0V!Y;(f6J zuJt+EiY$K5?u8d2Wo>opEiB~q*J|oSlx&YGi(;?TGb9Dtdj7?fGY1}r<_95d8#Xq~ z;E69REurr;%aQ{a?y(`O3a+R4WUoq5e5| zv%rq!a`nR2z5LFZj9Px*(SX>FYqkeM`M2A)o9eO2H_!m>nu1h}f&U(`t}-CaHLeIP&8rwGV{%PDeIsbaSN z+dR0Ma>-c0uO0ObmNsE1URT$D>ngD!QeAMfThXO#L4a7PGJHlY$QzS&yS@KPu~2RT z6>);TGvm@YFUNmYWOgOfAJB;_4i0Sr1I#V z`Kml#8_$c+g1Ob&{Q2_3*{_XeiUitxO4S~aa@Orm8wI%@ zrA4_&Mkb5<`(4xglvE+Zn||HFQgffYEOt)G^Hsgfl9j3~qp-Q17{VgXN%7!8b?cBD z0xi!!JQO(OO--I5d#2P@SM92vAK-6~NOSea5{JaU>XWlL7K6A3zK0B4xqOS6Y{aWtJ7X`*}Q#DUW)t>o7(#E29+O zIXw$dX-^B?5Ww*0BWeZ+-gq?RPM~}@Qgddt25JMfi2LxgpcpE8cMy9Wokd%8-C7i@ z3jiF-o%{d=wfY+9kg|KhFsX0wmA*hE2>{h!{kUMw(i-5w-^?ox+e1;E6t6ZF*MHSWVw{`@APP3jC-eJXAFamg|*L$7trtne8L9Oi6@19Ul z)_)P5{=Od9hE*cc+!d{hN%}hFc|Lv`tkd-!6QTYdYI5wqBu-Rd-4hHZgBH6x1}(~>XT^G{e&JB$*5j~kZ6`ly$>FQg=S9vZ zjrKX>^Y#oyV-@wirrzd_0rD>8%3;vSl&PmkReYpP8?SOJWeY=Vm{1R1gODX}mK2R- zpB%Z~17}u0mt#`MC}F84(;wZpBsQO86qQ{_!hq-|^C`pGA+UT(T7o0=y~02LM}W?! z5l$V?BIeJUqAn7gtll{eelD!xL#6&31(_FSxdleUw*lS&t8C5q5~tEC01(eJ^VPxlm?Baq9p;B> z76Lc3$VjLLxkI~n92OCUXqIp6t*9v`Tkl>6LT>R71}`-fJb^#HANE_1ZXr-FiWaJC zDuFw-=ugO|e%mG$y$*91IW5$X86{!i!(Nrlyp*-)ti+aWufKB*G*zp}#`yL1sBmk= zH?lSfgCFA0mQN#@EY7AG|Yasvq|71`xU>-u>e|Cz4u^ ze47Steu0yaPy*1Yo}J^{1QOvWgn`r#Z|;+;fqe#sKcWBL5EdSStCQWt53aNTz8Eo*_u(_yS_zhII_Vx@L@x*PEvsapb>N*&!+3iyD&A*-_KrNGn&cTL^ z#nQaQHP?vK&j*XmgIXls6z`t1&uvU*&8*T#QHz609c5b{shTienxLjrq7-b-jt}w< zuWma+YqLgcYtK&;9x_QJuWOqPJ_eWOm7%_O4b~`i8Vm0jS@NpJJNl6t>+v5lJ>G%( zFV%ipsFyOF2$ma&vc^s_F@J6!-S)E9K z0n_v|kQvV#jiHA1alWfDZBVFD;Tb5ZXhH3zq-J@VP}^)$y{95hk)I@c$>2hliXXZAe|uZz^()JN++Hrqv)6 zoH{}8Aoo!Uy^0dVH*3hH^16c+q&h~z{R@zO`CgUCSN^#)4NpIG-5H)5^nq!->w?QPJ@QVNIt;kiDv`9gQU? ztB|9}Gh_nfFx7oqy@+}AW2q6j+_hsq&F+zZc$R^+NR{q!+&Q^n_wq4m+>xxkqQTU)vjh-U%uj+Ky^$; zXpt*C)Vh0&RrNwZ8H45+KJRtB5UtYkbZ=gQN4KQr?052=Ng3e11eMw_(1@R>(eDuo zB(;sc_FHhN6SHJxmS)VzT(Nd$^{vLvYN){2_BQBA?N#g2#3@T5((YZKz8w0@^~u=N z-*j0$#%NMSh>KQo~BXG|d8hLkT+-^$M*U%xyxSi&vex8HPd z_3esaz_coO4sxTQo?tl3k?@hvX?dL(vwfO5Dd1N+<0-D%!NL^6Bn5GMRSU-H!55 z3GL|qj;f`}6$t+Ep7hEF>C=VL?aB4;Jj`WmOo|(7SUB-607I-`<`Q~~He<|P5_%G# z?V*-pl zc*Bv-k?4yEK&W33Sw=PTle~)z-O_8YRF^Q)Y8Mg4keHbUD zJr2jy!}WWeQm`fLx1O*ZIll^J9H{ICfzRF6v|q`L$*bVk>M@)pY0Q-hWftbTD^@e% z+-~-jZw}SFopWUNDf+&o-xYJvr~71NlL>n}KK?QjFs(kI2G_|KGj_rI<)NPt!D7V( zqbZ&$m`Jyx6Xy`ioz<3cr$fRKzI<&iehVe>dKOI0JI~_zM@y)bg$`rJG$oeu0Glqp zds1#A?5E!#FQlUqCc6m`HoWR6*+T%`)oYE&Sh`x}Urobz{nLFv1$-*14Sck~`X8?u zR6_*J+=Yda)^lv_bGYoM-@_fn-3rla)4rc z);1ml>WCV-R)CraKSI#=uCjib6M#RyVk#E-)|AN75WHD%)^~5#VXeje8ZiIt)4QY5 zl$G3S^_ie5s$&z36|Xj+@B-KAabR{y{<&~}Mpu*Mkp`f?{5*521}W<=h98o)_K_ti z)XC#aPJ%d()1Memf5~k3#@m$jaLcZ(vhhV#Jvvl&hcaya?d(U%uqb4g7DZqNNzU(u z+F;#Nl&_*9MoT;&1X>xdT)!QlVXhz9=l#v(d2)3CUD%+wQ|d!%0GZ9jP@%#k*lf2_ zPyDw`L)SnG{qIo$G7}HoEQ5udL7+~Oo`5Fj3SA#%w4b<2uzJ{f(;GA|Yrqe?6qRJq zxBjOuOo@ou&BQPeSLMTrQDM)804gG!TBkX8vY{v$27gU`xP9)F*`8Gn=8}lmy-bq; z8NFYZGXT8Ksq>knrkDYh;u|18;CB=0PH?ZUQcM~8h~=}zk5yJapA_ji9(c{jSvLh; z)s8lB@3|1ag&Aq@)Rp61RerTBaR@ASr_LJEOvaBs)+-rS%b8rb6hSDqrFO!lHEaZW zcE9qH{k%@v@wHaO1vSLDPw^zy<1p_`I}7GdGg}&`|EjIsNVBoc%hKa7@TS zh>~j*H1V-FvJx9i3L*vk<>3M%ja3ylnN^ZUF1zO*mkNIo{pbWi{zvXxdwL@ox! z?NHJ6v*aBWK~Pz;(c7s((W&Y-60~~qeh^BuA|s;((Op$d+c*d)Df8Iwxjc(1au}pY z@`P2Gc>_pLz z$03&j505$KS%YE>L^1KYv)}!Imgjp2o*8w%fZ{^igd#{F-|!Yz(NR%tElUT%MPJWt zhl_D{i@0cuq1`KGX|@4HPsKGCIV-23tS$m`1A%8`Lm?a%TOeenVr+nj$OcycA)NB| zjb=MF;&GJNWxuF4S8)zVA2s_=afp}bmaQ~+Sdaa?H@xTYgf zL9vr2$#jOwwe+~WMeP$HJ#AkJ;XtK!p0ZMUBx@3oZB1sm+NyU8& zC@!=;C?cpxMphYUOyZGZB2SV0VhE#Sg=Dgqf80NoK4%Kh6m=yBMIWlF^iSb19|P-X zNeM_JD0a%ODh5z>+uB{FVjNy+_$#haCyM$kl{e}D)OfKj{;{T_>ttn(1<+}!u>=wK z28tgxo6v4WeSM0SHBv{FiM6&y%yJCbC#ZLfu2nP>94Hp^EYhcc1wY5JWs~x1Za|7% zSV{^*EY(%|d^v1WyPxZWPUk$#Nyt>mc8`~jqN$H|=N6M7=wi`nqSt*#b!_>uQGV7=wT<3@`a#oEFK$MiH@l;$!)p9Q56b*QWMK0L{OI){Y$^tR#6Cq*9w0NiJ z%W(i>%tUS$JwwG%iQ}mlcC&y)uy`?tiuZe;c&Fu_m3$Ty#YDt`qV)3|MYqp6UP2(F zh=8J};tPD3O}w1W@DEgsqq!Syp6>#R3vC;UNL1X%RdDM>(fwCr+|%oLHg{m59%E6f z!-v0z?=o1rhkYpgFeq9vPFcnb&!-MOF3uv3kU>!)<8k!_W2e#EB`sI3wAK8qVjQFe zFDq?r;wv-1Mjg=VeukDwLWa4WkYR50l6-LqrzkRfzFwHO^R=>=s4Y}f+@K0%t!U`O z+Ui=l3}N}DxUOJgD-?KZxid)?s5R12p^o~*LoM#}Qy>S)@K&=qr%DF{i8bU9vErIv+H?wPRiJuUv~E=+;CjE-;#ZPzWxQz4Z=T@^h?XxuCg@@`a5`hsGng8R1?w-_Y- zN0y4Sia4`#l1DTqQss=QT1imG9YVV{W)LP0U6UUy>mdxICdwAu$_i7h*wu++Beyo_ zu2yQrQBqz#c)u@a)77PeS3A{NH&5$c37Rqo0x0IG&BhQGSKOu;ju2&DOBz}Wt7`=7 zDF>Zk5zpsW)yp6f+(JP$u)simV>PX~h7|5PQv{$6W(2?UdF$k}j;lBCx&Ew^oo;4N z%YBD?t9ZguEk7b>G;zDPAZdzY76$csh|8M_$I7*|T$v&>#0Z`lJI3zRdM9t^w2_Q` z@h#4=@ECVJF9oM)V9Yf61@$vd(UuXQ-|X=-qlk2s6g)rZog&e*C7&-aqZoW5+p69d z6yt7|h>2k;7$u746r~4r5fX`>k;uZydVq>*c^tu)(A-F|D7@)^at zpp4Q)cfzQuZMAOCt0y0EH)F((<1F!J=`t-hH7K4;^ehKTk|h~x_tl7sM!mU=p^(Z) zy;FC!Nt&|ABf+zCs!R~$-77*O_urM7#qcuri9uj7Xw_e%__=Qleu#@f5iDlT6f;io zI~^&0XI?Sno^guNjGP#Xw|#S)XQFjITcRb?%wi{sKv6bP_tP+o0f{GFqDCK5Eb@t* zFQB_+6o1$nihJ#}=jnU@JuRU4pVIz{oe^>4mmhxg*3n)MAFYunCVk?NLykTq8VbO3 zJ~Cn@FyeyrGxllT$X!4Gcs4Dr+L6_om&gc*s4^53o4zN`m`IT5OBKfz<(~bYIe+IL#xPU}gc=08<&ml8Ny9CAk3Z&zoPrGr1Lw#sX#AH3hJI?fkM8bnJI zpKDfGX()&Xj64UEjS9$B=scNdMj0<^S|HeIP9{_f$rsjj!YAp-kGskxNBpAc%;7v8 z07Zz{aR-ha8d;9O4XTpn2wWo4Y#gFzpJu6#(g_&sbtfrPCR~-KoF=|dnU$&#%v<{^ zZb#YUV4`2QPhU&5S<3wu2*cfO;gdlwHKs?a$=N#5(zhbT;1o?TF@(>Se3pVy4Dqv_ zDPk4F+%SKr2or5)SX8!+K%(D(pIPDO*P6O+mSd2xXhb~aoa@#(OazHaJHy0+q+`Wn z{|Jhw@43^Sd;UqUxPapSLb*+&So-+mkH7rr^EaipOrJZw^^fTD52vGXY0a!i-^p`EfjUIcsR}AT*gVCafzoESF-Y&%Q$I(w!b0^yY0~Tce2kY z{7)??hN4$kQ99Qrp2PloDL@e>hO%u-Jv$~I&K)cs8<42OL>D^4 zM2g!HP$YV$Z)hth?zN|&$Yr60Hnp>9S83;eQ@ifA8-GCbr^bIWUzB!n3XlG}t9{#+ z+S%U1Uh${x%%8H`Zu%2<-NilZv>T7%2YAbHmFy4U9kSXj(k`3gy}bCkUh new Component())); diff --git a/docs/src/scripts/helpers/inert.js b/docs/src/scripts/helpers/inert.js new file mode 100644 index 00000000..3c6c6f19 --- /dev/null +++ b/docs/src/scripts/helpers/inert.js @@ -0,0 +1,740 @@ +/* eslint-disable */ +/** + * This work is licensed under the W3C Software and Document License + * (http://www.w3.org/Consortium/Legal/2015/copyright-software-and-document). + */ + +(function() { + // Return early if we're not running inside of the browser. + if (typeof window === 'undefined') { + return; + } + + // Convenience function for converting NodeLists. + /** @type {typeof Array.prototype.slice} */ + const slice = Array.prototype.slice; + + /** + * IE has a non-standard name for "matches". + * @type {typeof Element.prototype.matches} + */ + const matches = + Element.prototype.matches || Element.prototype.msMatchesSelector; + + /** @type {string} */ + const _focusableElementsString = ['a[href]', + 'area[href]', + 'input:not([disabled])', + 'select:not([disabled])', + 'textarea:not([disabled])', + 'button:not([disabled])', + 'details', + 'summary', + 'iframe', + 'object', + 'embed', + '[contenteditable]'].join(','); + + /** + * `InertRoot` manages a single inert subtree, i.e. a DOM subtree whose root element has an `inert` + * attribute. + * + * Its main functions are: + * + * - to create and maintain a set of managed `InertNode`s, including when mutations occur in the + * subtree. The `makeSubtreeUnfocusable()` method handles collecting `InertNode`s via registering + * each focusable node in the subtree with the singleton `InertManager` which manages all known + * focusable nodes within inert subtrees. `InertManager` ensures that a single `InertNode` + * instance exists for each focusable node which has at least one inert root as an ancestor. + * + * - to notify all managed `InertNode`s when this subtree stops being inert (i.e. when the `inert` + * attribute is removed from the root node). This is handled in the destructor, which calls the + * `deregister` method on `InertManager` for each managed inert node. + */ + class InertRoot { + /** + * @param {!Element} rootElement The Element at the root of the inert subtree. + * @param {!InertManager} inertManager The global singleton InertManager object. + */ + constructor(rootElement, inertManager) { + /** @type {!InertManager} */ + this._inertManager = inertManager; + + /** @type {!Element} */ + this._rootElement = rootElement; + + /** + * @type {!Set} + * All managed focusable nodes in this InertRoot's subtree. + */ + this._managedNodes = new Set(); + + // Make the subtree hidden from assistive technology + if (this._rootElement.hasAttribute('aria-hidden')) { + /** @type {?string} */ + this._savedAriaHidden = this._rootElement.getAttribute('aria-hidden'); + } else { + this._savedAriaHidden = null; + } + this._rootElement.setAttribute('aria-hidden', 'true'); + + // Make all focusable elements in the subtree unfocusable and add them to _managedNodes + this._makeSubtreeUnfocusable(this._rootElement); + + // Watch for: + // - any additions in the subtree: make them unfocusable too + // - any removals from the subtree: remove them from this inert root's managed nodes + // - attribute changes: if `tabindex` is added, or removed from an intrinsically focusable + // element, make that node a managed node. + this._observer = new MutationObserver(this._onMutation.bind(this)); + this._observer.observe(this._rootElement, {attributes: true, childList: true, subtree: true}); + } + + /** + * Call this whenever this object is about to become obsolete. This unwinds all of the state + * stored in this object and updates the state of all of the managed nodes. + */ + destructor() { + this._observer.disconnect(); + + if (this._rootElement) { + if (this._savedAriaHidden !== null) { + this._rootElement.setAttribute('aria-hidden', this._savedAriaHidden); + } else { + this._rootElement.removeAttribute('aria-hidden'); + } + } + + this._managedNodes.forEach(function(inertNode) { + this._unmanageNode(inertNode.node); + }, this); + + // Note we cast the nulls to the ANY type here because: + // 1) We want the class properties to be declared as non-null, or else we + // need even more casts throughout this code. All bets are off if an + // instance has been destroyed and a method is called. + // 2) We don't want to cast "this", because we want type-aware optimizations + // to know which properties we're setting. + this._observer = /** @type {?} */ (null); + this._rootElement = /** @type {?} */ (null); + this._managedNodes = /** @type {?} */ (null); + this._inertManager = /** @type {?} */ (null); + } + + /** + * @return {!Set} A copy of this InertRoot's managed nodes set. + */ + get managedNodes() { + return new Set(this._managedNodes); + } + + /** @return {boolean} */ + get hasSavedAriaHidden() { + return this._savedAriaHidden !== null; + } + + /** @param {?string} ariaHidden */ + set savedAriaHidden(ariaHidden) { + this._savedAriaHidden = ariaHidden; + } + + /** @return {?string} */ + get savedAriaHidden() { + return this._savedAriaHidden; + } + + /** + * @param {!Node} startNode + */ + _makeSubtreeUnfocusable(startNode) { + composedTreeWalk(startNode, (node) => this._visitNode(node)); + + let activeElement = document.activeElement; + + if (!document.body.contains(startNode)) { + // startNode may be in shadow DOM, so find its nearest shadowRoot to get the activeElement. + let node = startNode; + /** @type {!ShadowRoot|undefined} */ + let root = undefined; + while (node) { + if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { + root = /** @type {!ShadowRoot} */ (node); + break; + } + node = node.parentNode; + } + if (root) { + activeElement = root.activeElement; + } + } + if (startNode.contains(activeElement)) { + activeElement.blur(); + // In IE11, if an element is already focused, and then set to tabindex=-1 + // calling blur() will not actually move the focus. + // To work around this we call focus() on the body instead. + if (activeElement === document.activeElement) { + document.body.focus(); + } + } + } + + /** + * @param {!Node} node + */ + _visitNode(node) { + if (node.nodeType !== Node.ELEMENT_NODE) { + return; + } + const element = /** @type {!Element} */ (node); + + // If a descendant inert root becomes un-inert, its descendants will still be inert because of + // this inert root, so all of its managed nodes need to be adopted by this InertRoot. + if (element !== this._rootElement && element.hasAttribute('inert')) { + this._adoptInertRoot(element); + } + + if (matches.call(element, _focusableElementsString) || element.hasAttribute('tabindex')) { + this._manageNode(element); + } + } + + /** + * Register the given node with this InertRoot and with InertManager. + * @param {!Node} node + */ + _manageNode(node) { + const inertNode = this._inertManager.register(node, this); + this._managedNodes.add(inertNode); + } + + /** + * Unregister the given node with this InertRoot and with InertManager. + * @param {!Node} node + */ + _unmanageNode(node) { + const inertNode = this._inertManager.deregister(node, this); + if (inertNode) { + this._managedNodes.delete(inertNode); + } + } + + /** + * Unregister the entire subtree starting at `startNode`. + * @param {!Node} startNode + */ + _unmanageSubtree(startNode) { + composedTreeWalk(startNode, (node) => this._unmanageNode(node)); + } + + /** + * If a descendant node is found with an `inert` attribute, adopt its managed nodes. + * @param {!Element} node + */ + _adoptInertRoot(node) { + let inertSubroot = this._inertManager.getInertRoot(node); + + // During initialisation this inert root may not have been registered yet, + // so register it now if need be. + if (!inertSubroot) { + this._inertManager.setInert(node, true); + inertSubroot = this._inertManager.getInertRoot(node); + } + + inertSubroot.managedNodes.forEach(function(savedInertNode) { + this._manageNode(savedInertNode.node); + }, this); + } + + /** + * Callback used when mutation observer detects subtree additions, removals, or attribute changes. + * @param {!Array} records + * @param {!MutationObserver} self + */ + _onMutation(records, self) { + records.forEach(function(record) { + const target = /** @type {!Element} */ (record.target); + if (record.type === 'childList') { + // Manage added nodes + slice.call(record.addedNodes).forEach(function(node) { + this._makeSubtreeUnfocusable(node); + }, this); + + // Un-manage removed nodes + slice.call(record.removedNodes).forEach(function(node) { + this._unmanageSubtree(node); + }, this); + } else if (record.type === 'attributes') { + if (record.attributeName === 'tabindex') { + // Re-initialise inert node if tabindex changes + this._manageNode(target); + } else if (target !== this._rootElement && + record.attributeName === 'inert' && + target.hasAttribute('inert')) { + // If a new inert root is added, adopt its managed nodes and make sure it knows about the + // already managed nodes from this inert subroot. + this._adoptInertRoot(target); + const inertSubroot = this._inertManager.getInertRoot(target); + this._managedNodes.forEach(function(managedNode) { + if (target.contains(managedNode.node)) { + inertSubroot._manageNode(managedNode.node); + } + }); + } + } + }, this); + } + } + + /** + * `InertNode` initialises and manages a single inert node. + * A node is inert if it is a descendant of one or more inert root elements. + * + * On construction, `InertNode` saves the existing `tabindex` value for the node, if any, and + * either removes the `tabindex` attribute or sets it to `-1`, depending on whether the element + * is intrinsically focusable or not. + * + * `InertNode` maintains a set of `InertRoot`s which are descendants of this `InertNode`. When an + * `InertRoot` is destroyed, and calls `InertManager.deregister()`, the `InertManager` notifies the + * `InertNode` via `removeInertRoot()`, which in turn destroys the `InertNode` if no `InertRoot`s + * remain in the set. On destruction, `InertNode` reinstates the stored `tabindex` if one exists, + * or removes the `tabindex` attribute if the element is intrinsically focusable. + */ + class InertNode { + /** + * @param {!Node} node A focusable element to be made inert. + * @param {!InertRoot} inertRoot The inert root element associated with this inert node. + */ + constructor(node, inertRoot) { + /** @type {!Node} */ + this._node = node; + + /** @type {boolean} */ + this._overrodeFocusMethod = false; + + /** + * @type {!Set} The set of descendant inert roots. + * If and only if this set becomes empty, this node is no longer inert. + */ + this._inertRoots = new Set([inertRoot]); + + /** @type {?number} */ + this._savedTabIndex = null; + + /** @type {boolean} */ + this._destroyed = false; + + // Save any prior tabindex info and make this node untabbable + this.ensureUntabbable(); + } + + /** + * Call this whenever this object is about to become obsolete. + * This makes the managed node focusable again and deletes all of the previously stored state. + */ + destructor() { + this._throwIfDestroyed(); + + if (this._node && this._node.nodeType === Node.ELEMENT_NODE) { + const element = /** @type {!Element} */ (this._node); + if (this._savedTabIndex !== null) { + element.setAttribute('tabindex', this._savedTabIndex); + } else { + element.removeAttribute('tabindex'); + } + + // Use `delete` to restore native focus method. + if (this._overrodeFocusMethod) { + delete element.focus; + } + } + + // See note in InertRoot.destructor for why we cast these nulls to ANY. + this._node = /** @type {?} */ (null); + this._inertRoots = /** @type {?} */ (null); + this._destroyed = true; + } + + /** + * @type {boolean} Whether this object is obsolete because the managed node is no longer inert. + * If the object has been destroyed, any attempt to access it will cause an exception. + */ + get destroyed() { + return /** @type {!InertNode} */ (this)._destroyed; + } + + /** + * Throw if user tries to access destroyed InertNode. + */ + _throwIfDestroyed() { + if (this.destroyed) { + throw new Error('Trying to access destroyed InertNode'); + } + } + + /** @return {boolean} */ + get hasSavedTabIndex() { + return this._savedTabIndex !== null; + } + + /** @return {!Node} */ + get node() { + this._throwIfDestroyed(); + return this._node; + } + + /** @param {?number} tabIndex */ + set savedTabIndex(tabIndex) { + this._throwIfDestroyed(); + this._savedTabIndex = tabIndex; + } + + /** @return {?number} */ + get savedTabIndex() { + this._throwIfDestroyed(); + return this._savedTabIndex; + } + + /** Save the existing tabindex value and make the node untabbable and unfocusable */ + ensureUntabbable() { + if (this.node.nodeType !== Node.ELEMENT_NODE) { + return; + } + const element = /** @type {!Element} */ (this.node); + if (matches.call(element, _focusableElementsString)) { + if (/** @type {!HTMLElement} */ (element).tabIndex === -1 && + this.hasSavedTabIndex) { + return; + } + + if (element.hasAttribute('tabindex')) { + this._savedTabIndex = /** @type {!HTMLElement} */ (element).tabIndex; + } + element.setAttribute('tabindex', '-1'); + if (element.nodeType === Node.ELEMENT_NODE) { + element.focus = function() {}; + this._overrodeFocusMethod = true; + } + } else if (element.hasAttribute('tabindex')) { + this._savedTabIndex = /** @type {!HTMLElement} */ (element).tabIndex; + element.removeAttribute('tabindex'); + } + } + + /** + * Add another inert root to this inert node's set of managing inert roots. + * @param {!InertRoot} inertRoot + */ + addInertRoot(inertRoot) { + this._throwIfDestroyed(); + this._inertRoots.add(inertRoot); + } + + /** + * Remove the given inert root from this inert node's set of managing inert roots. + * If the set of managing inert roots becomes empty, this node is no longer inert, + * so the object should be destroyed. + * @param {!InertRoot} inertRoot + */ + removeInertRoot(inertRoot) { + this._throwIfDestroyed(); + this._inertRoots.delete(inertRoot); + if (this._inertRoots.size === 0) { + this.destructor(); + } + } + } + + /** + * InertManager is a per-document singleton object which manages all inert roots and nodes. + * + * When an element becomes an inert root by having an `inert` attribute set and/or its `inert` + * property set to `true`, the `setInert` method creates an `InertRoot` object for the element. + * The `InertRoot` in turn registers itself as managing all of the element's focusable descendant + * nodes via the `register()` method. The `InertManager` ensures that a single `InertNode` instance + * is created for each such node, via the `_managedNodes` map. + */ + class InertManager { + /** + * @param {!Document} document + */ + constructor(document) { + if (!document) { + throw new Error('Missing required argument; InertManager needs to wrap a document.'); + } + + /** @type {!Document} */ + this._document = document; + + /** + * All managed nodes known to this InertManager. In a map to allow looking up by Node. + * @type {!Map} + */ + this._managedNodes = new Map(); + + /** + * All inert roots known to this InertManager. In a map to allow looking up by Node. + * @type {!Map} + */ + this._inertRoots = new Map(); + + /** + * Observer for mutations on `document.body`. + * @type {!MutationObserver} + */ + this._observer = new MutationObserver(this._watchForInert.bind(this)); + + // Add inert style. + addInertStyle(document.head || document.body || document.documentElement); + + // Wait for document to be loaded. + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', this._onDocumentLoaded.bind(this)); + } else { + this._onDocumentLoaded(); + } + } + + /** + * Set whether the given element should be an inert root or not. + * @param {!Element} root + * @param {boolean} inert + */ + setInert(root, inert) { + if (inert) { + if (this._inertRoots.has(root)) { // element is already inert + return; + } + + const inertRoot = new InertRoot(root, this); + root.setAttribute('inert', ''); + this._inertRoots.set(root, inertRoot); + // If not contained in the document, it must be in a shadowRoot. + // Ensure inert styles are added there. + if (!this._document.body.contains(root)) { + let parent = root.parentNode; + while (parent) { + if (parent.nodeType === 11) { + addInertStyle(parent); + } + parent = parent.parentNode; + } + } + } else { + if (!this._inertRoots.has(root)) { // element is already non-inert + return; + } + + const inertRoot = this._inertRoots.get(root); + inertRoot.destructor(); + this._inertRoots.delete(root); + root.removeAttribute('inert'); + } + } + + /** + * Get the InertRoot object corresponding to the given inert root element, if any. + * @param {!Node} element + * @return {!InertRoot|undefined} + */ + getInertRoot(element) { + return this._inertRoots.get(element); + } + + /** + * Register the given InertRoot as managing the given node. + * In the case where the node has a previously existing inert root, this inert root will + * be added to its set of inert roots. + * @param {!Node} node + * @param {!InertRoot} inertRoot + * @return {!InertNode} inertNode + */ + register(node, inertRoot) { + let inertNode = this._managedNodes.get(node); + if (inertNode !== undefined) { // node was already in an inert subtree + inertNode.addInertRoot(inertRoot); + } else { + inertNode = new InertNode(node, inertRoot); + } + + this._managedNodes.set(node, inertNode); + + return inertNode; + } + + /** + * De-register the given InertRoot as managing the given inert node. + * Removes the inert root from the InertNode's set of managing inert roots, and remove the inert + * node from the InertManager's set of managed nodes if it is destroyed. + * If the node is not currently managed, this is essentially a no-op. + * @param {!Node} node + * @param {!InertRoot} inertRoot + * @return {?InertNode} The potentially destroyed InertNode associated with this node, if any. + */ + deregister(node, inertRoot) { + const inertNode = this._managedNodes.get(node); + if (!inertNode) { + return null; + } + + inertNode.removeInertRoot(inertRoot); + if (inertNode.destroyed) { + this._managedNodes.delete(node); + } + + return inertNode; + } + + /** + * Callback used when document has finished loading. + */ + _onDocumentLoaded() { + // Find all inert roots in document and make them actually inert. + const inertElements = slice.call(this._document.querySelectorAll('[inert]')); + inertElements.forEach(function(inertElement) { + this.setInert(inertElement, true); + }, this); + + // Comment this out to use programmatic API only. + this._observer.observe(this._document.body || this._document.documentElement, {attributes: true, subtree: true, childList: true}); + } + + /** + * Callback used when mutation observer detects attribute changes. + * @param {!Array} records + * @param {!MutationObserver} self + */ + _watchForInert(records, self) { + const _this = this; + records.forEach(function(record) { + switch (record.type) { + case 'childList': + slice.call(record.addedNodes).forEach(function(node) { + if (node.nodeType !== Node.ELEMENT_NODE) { + return; + } + const inertElements = slice.call(node.querySelectorAll('[inert]')); + if (matches.call(node, '[inert]')) { + inertElements.unshift(node); + } + inertElements.forEach(function(inertElement) { + this.setInert(inertElement, true); + }, _this); + }, _this); + break; + case 'attributes': + if (record.attributeName !== 'inert') { + return; + } + const target = /** @type {!Element} */ (record.target); + const inert = target.hasAttribute('inert'); + _this.setInert(target, inert); + break; + } + }, this); + } + } + + /** + * Recursively walk the composed tree from |node|. + * @param {!Node} node + * @param {(function (!Element))=} callback Callback to be called for each element traversed, + * before descending into child nodes. + * @param {?ShadowRoot=} shadowRootAncestor The nearest ShadowRoot ancestor, if any. + */ + function composedTreeWalk(node, callback, shadowRootAncestor) { + if (node.nodeType == Node.ELEMENT_NODE) { + const element = /** @type {!Element} */ (node); + if (callback) { + callback(element); + } + + // Descend into node: + // If it has a ShadowRoot, ignore all child elements - these will be picked + // up by the or elements. Descend straight into the + // ShadowRoot. + const shadowRoot = /** @type {!HTMLElement} */ (element).shadowRoot; + if (shadowRoot) { + composedTreeWalk(shadowRoot, callback, shadowRoot); + return; + } + + // If it is a element, descend into distributed elements - these + // are elements from outside the shadow root which are rendered inside the + // shadow DOM. + if (element.localName == 'content') { + const content = /** @type {!HTMLContentElement} */ (element); + // Verifies if ShadowDom v0 is supported. + const distributedNodes = content.getDistributedNodes ? + content.getDistributedNodes() : []; + for (let i = 0; i < distributedNodes.length; i++) { + composedTreeWalk(distributedNodes[i], callback, shadowRootAncestor); + } + return; + } + + // If it is a element, descend into assigned nodes - these + // are elements from outside the shadow root which are rendered inside the + // shadow DOM. + if (element.localName == 'slot') { + const slot = /** @type {!HTMLSlotElement} */ (element); + // Verify if ShadowDom v1 is supported. + const distributedNodes = slot.assignedNodes ? + slot.assignedNodes({flatten: true}) : []; + for (let i = 0; i < distributedNodes.length; i++) { + composedTreeWalk(distributedNodes[i], callback, shadowRootAncestor); + } + return; + } + } + + // If it is neither the parent of a ShadowRoot, a element, a + // element, nor a element recurse normally. + let child = node.firstChild; + while (child != null) { + composedTreeWalk(child, callback, shadowRootAncestor); + child = child.nextSibling; + } + } + + /** + * Adds a style element to the node containing the inert specific styles + * @param {!Node} node + */ + function addInertStyle(node) { + if (node.querySelector('style#inert-style, link#inert-style')) { + return; + } + const style = document.createElement('style'); + style.setAttribute('id', 'inert-style'); + style.textContent = '\n'+ + '[inert] {\n' + + ' pointer-events: none;\n' + + ' cursor: default;\n' + + '}\n' + + '\n' + + '[inert], [inert] * {\n' + + ' -webkit-user-select: none;\n' + + ' -moz-user-select: none;\n' + + ' -ms-user-select: none;\n' + + ' user-select: none;\n' + + '}\n'; + node.appendChild(style); + } + + if (!Element.prototype.hasOwnProperty('inert')) { + /** @type {!InertManager} */ + const inertManager = new InertManager(document); + + Object.defineProperty(Element.prototype, 'inert', { + enumerable: true, + /** @this {!Element} */ + get: function() { + return this.hasAttribute('inert'); + }, + /** @this {!Element} */ + set: function(inert) { + inertManager.setInert(this, inert); + }, + }); + } +})(); \ No newline at end of file diff --git a/docs/src/scripts/modules/greeting.js b/docs/src/scripts/modules/greeting.js new file mode 100644 index 00000000..e3165e15 --- /dev/null +++ b/docs/src/scripts/modules/greeting.js @@ -0,0 +1,9 @@ +const greeting = (name) => { + const element = document.querySelector('.js-greeting'); + + if (element) { + element.innerHTML = name; + } +}; + +export default greeting; diff --git a/docs/src/scripts/modules/onPageNavigation.js b/docs/src/scripts/modules/onPageNavigation.js new file mode 100644 index 00000000..21a13b5c --- /dev/null +++ b/docs/src/scripts/modules/onPageNavigation.js @@ -0,0 +1,115 @@ +class onPageNavigation { + constructor() { + if (!this.setVars()) return; + + this.setEvents(); + } + + setVars() { + this.BREAKPOINT = 1023; + + this.atts = { + activeClass: 'c-page-sidebar__link--active', + selectedClass: 'c-page-sidebar__link--selected', + activeOffset: 100, // Sets how early activate the item + }; + + this.sidebar = document.querySelector('.c-page-sidebar'); + this.article = document.querySelector('.c-post__article'); + + if (!this.sidebar || !this.article) return false; + + this.links = this.sidebar.querySelectorAll('a'); + this.titles = this.article.querySelectorAll('h2'); + this.titleBoundings = this.setBoundings(); + this.activeLink = null; + this.selectedLink = null; + + return true; + } + + setEvents() { + window.addEventListener('scroll', () => { + if (window.innerWidth > this.BREAKPOINT) { + this.onScroll(); + } + }); + + window.addEventListener('resize', () => { + if (window.innerWidth > this.BREAKPOINT) { + this.titleBoundings = this.setBoundings(); + } + }); + + this.links.forEach((link) => { + if (window.innerWidth > this.BREAKPOINT) { + link.addEventListener('click', () => this.setSelectedLink(link)); + } + }); + } + + setSelectedLink(link) { + const { selectedClass } = this.atts; + + if (this.selectedLink) { + this.selectedLink.classList.remove(selectedClass); + } + + link.classList.add(selectedClass); + this.selectedLink = link; + } + + onScroll() { + const { activeClass } = this.atts; + + if ( + this.titleBoundings[0] > window.pageYOffset && + this.links[0].classList.contains(activeClass) + ) { + this.links[0].classList.remove(activeClass); + this.activeLink = null; + } + + for (let idx = 0; idx < this.titleBoundings.length; idx += 1) { + const offset = this.titleBoundings[idx]; + + const nextOffset = this.titleBoundings[idx + 1] + ? this.titleBoundings[idx + 1] + : document.body.scrollHeight; + + if ( + window.pageYOffset >= offset && + window.pageYOffset < nextOffset && + this.activeLink !== this.links[idx] + ) { + if (this.activeLink) { + this.activeLink.classList.remove(activeClass); + } + + this.links[idx].classList.add(activeClass); + this.activeLink = this.links[idx]; + break; + } + } + } + + setBoundings() { + return Array.from(this.titles).map((title) => { + return this.getOffsetTop(title); + }); + } + + getOffsetTop(element) { + const { activeOffset } = this.atts; + let offsetTop = 0; + let tmpElement = element; + while (tmpElement) { + offsetTop += tmpElement.offsetTop; + tmpElement = tmpElement.offsetParent; + } + offsetTop -= activeOffset; + return offsetTop; + } +} + +export default onPageNavigation; diff --git a/docs/src/scripts/modules/sidebar.js b/docs/src/scripts/modules/sidebar.js new file mode 100644 index 00000000..9efb3ba4 --- /dev/null +++ b/docs/src/scripts/modules/sidebar.js @@ -0,0 +1,112 @@ +class Sidebar { + constructor() { + if (!this.setVars()) return; + + this.setEvents(); + } + + setVars() { + this.NOT_ACTIVE = false; + this.BREAKPOINT = 1023; + + this.atts = { + activeClass: 'c-sidebar--active', + noScroll: 'no-scroll', + }; + + this.section = document.querySelector('.js-sidebar'); + + if (!this.section) return false; + + this.mainElements = document.querySelectorAll( + 'article, .c-page-sidebar, header, footer', + ); + this.button = this.section.querySelector('.js-toggle'); + this.content = this.section.querySelector('.c-siderbar__content'); + + return true; + } + + setEvents() { + window.addEventListener('DOMContentLoaded', () => { + if (window.innerWidth <= this.BREAKPOINT) { + this.section.setAttribute('inert', 'true'); + } + }); + + window.addEventListener('resize', () => { + if (window.innerWidth > this.BREAKPOINT) { + this.destroySidebar(); + } else { + this.section.setAttribute('inert', 'true'); + } + }); + + this.button.addEventListener('click', () => { + this.toggleSidebar(); + }); + } + + toggleSidebar() { + const { activeClass } = this.atts; + + if (this.section.classList.contains(activeClass)) { + this.closeSidebar(); + } else { + this.openSidebar(); + } + } + + openSidebar() { + const { activeClass } = this.atts; + + this.section.classList.add(activeClass); + this.section.removeAttribute('inert'); + this.disableDocumentScroll(); + this.setInert(); + } + + closeSidebar() { + const { activeClass } = this.atts; + + this.section.classList.remove(activeClass); + this.section.setAttribute('inert', 'true'); + this.enableDocumentScroll(); + this.setInert(this.NOT_ACTIVE); + } + + destroySidebar() { + const { activeClass } = this.atts; + + this.section.classList.remove(activeClass); + this.section.removeAttribute('inert'); + this.enableDocumentScroll(); + this.setInert(this.NOT_ACTIVE); + } + + setInert(isActive = true) { + this.mainElements.forEach((element) => + isActive + ? element.setAttribute('inert', 'true') + : element.removeAttribute('inert'), + ); + } + + disableDocumentScroll() { + const { noScroll } = this.atts; + + if (document.documentElement.classList.contains(noScroll)) return; + + document.documentElement.classList.add(noScroll); + } + + enableDocumentScroll() { + const { noScroll } = this.atts; + + if (!document.documentElement.classList.contains(noScroll)) return; + + document.documentElement.classList.remove(noScroll); + } +} + +export default Sidebar; diff --git a/docs/src/styles/components/_block.scss b/docs/src/styles/components/_block.scss new file mode 100644 index 00000000..b5f5397d --- /dev/null +++ b/docs/src/styles/components/_block.scss @@ -0,0 +1,87 @@ +/* ========================================================================== + #BLOCK + ========================================================================== */ + +.c-block { + display: flex; + flex-direction: column-reverse; + align-items: center; + + @include bp('medium') { + flex-direction: row; + align-items: flex-end; + } + + @include bp('large') { + justify-content: space-between; + } +} + +.c-block--reversed { + @include bp('medium') { + flex-direction: row-reverse; + } +} + +.c-block__content { + margin-top: 4rem; + + @include bp('medium') { + width: 50%; + margin-right: 6rem; + margin-top: 0; + } + + @include bp('large') { + width: 40%; + } + + .c-block--reversed & { + @include bp('medium') { + margin-right: 0; + margin-left: 6rem; + } + + @include bp('large') { + width: 40%; + } + } + + &::after { + content: ''; + display: block; + width: 31px; + height: 20px; + background-color: $color-bright-sun; + margin-top: 3rem; + } +} + +.c-block__image-wrapper { + flex-shrink: 0; + + @include bp('medium') { + width: 50%; + } + + @include bp('large') { + width: 33%; + } +} + +.c-block__image { + width: 100%; + object-fit: contain; + + @include bp('large') { + width: auto; + } +} + +.c-block__title { + font-size: 2.4rem; +} + +.c-block__post-entry { + font-size: 1.8rem; +} diff --git a/docs/src/styles/components/_btn.scss b/docs/src/styles/components/_btn.scss new file mode 100644 index 00000000..bd803142 --- /dev/null +++ b/docs/src/styles/components/_btn.scss @@ -0,0 +1,171 @@ +/* ========================================================================== + #BUTTONS + ========================================================================== */ + +/** + * This is an example component. Extend inuitcss by building your own components + * that make up your UI. Component classes are prefixed with a `c-`. + */ + +/** + * 1. Allow us to style box model properties. + * 2. Line different sized buttons up a little nicer. + * 3. Make buttons inherit font styles (often necessary when styling `input`s as + * buttons). + * 4. Reset/normalize some styles. + * 5. Force all button-styled elements to appear clickable. + */ + +.c-btn { + display: inline-block; /* [1] */ + vertical-align: middle; /* [2] */ + font: inherit; /* [3] */ + text-align: center; /* [4] */ + margin: 0; /* [4] */ + text-decoration: none; /* [4] */ + cursor: pointer; /* [5] */ + transition: $global-transition; + border-radius: $global-radius; + line-height: 1.375; + font-size: 1.6rem; + padding: 1.4rem; + + @include bp('small') { + padding: 1.4rem 3.1rem; + } +} + +/* Style variants + ========================================================================== */ + +.c-btn--primary { + background-color: $color-secondary; + + &, + &:hover, + &:active, + &:focus { + color: $color-white; + } + + &:hover, + &:focus { + background-color: $color-primary; + } +} + +.c-btn--secondary { + background-color: $color-white; + border: 1px solid $color-secondary; + + &, + &:hover, + &:active, + &:focus { + color: $color-primary; + } + + &:hover, + &:focus { + background-color: $color-primary; + border-color: $color-primary; + color: $color-white; + } +} + +.c-btn--video { + background-color: transparent; + padding: 0; + height: 100%; + width: 100%; + border: none; + display: flex; + align-items: center; + justify-content: center; + + &.loading { + &::before { + animation: o-pulse-circle 1s infinite cubic-bezier(0.4, 0, 0.2, 1); + } + } +} + +.c-menu-button { + position: absolute; + top: 10.6rem; + left: calc(100% - 1px); + height: 26px; + width: 29px; + padding: 2rem; + color: $color-primary; + cursor: pointer; + background-color: $color-white; + border: 1px solid; + pointer-events: all !important; + + @include bp('large') { + display: none; + } + + @include bp('small') { + top: 8.6rem; + } + + .c-sidebar--active & { + left: auto; + right: 2rem; + } +} + +.c-menu-button-bar { + display: block; + position: absolute; + top: 50%; + margin-top: -1px; + width: 30px; + height: 4px; + border-radius: 4px; + background-color: $color-primary; + transition: all 0.3s ease; + transform: translateX(-50%); + left: 50%; + + &.c-menu-button-bar--top { + transform: translate(-50%, -8px); + } + + &.c-menu-button-bar--bottom { + transform: translate(-50%, 8px); + } + + .c-sidebar--active & { + background-color: $color-secondary; + + &.c-menu-button-bar--top { + transform: translate(-50%, 0) rotate(45deg); + } + + &.c-menu-button-bar--middle { + opacity: 0; + } + + &.c-menu-button-bar--bottom { + transform: translate(-50%, 0) rotate(-45deg); + } + } + + .c-menu-button:hover & { + background-color: $color-secondary; + } +} + +/* Size variants + ========================================================================== */ + +.c-btn--small { + padding: 0.25rem 0.5rem; +} + +.c-btn--large { + padding: 0.75rem 1.5rem; +} diff --git a/docs/src/styles/components/_footer.scss b/docs/src/styles/components/_footer.scss new file mode 100644 index 00000000..edb1caac --- /dev/null +++ b/docs/src/styles/components/_footer.scss @@ -0,0 +1,25 @@ +/* ========================================================================== + #FOOTER + ========================================================================== */ + +.c-footer { + font-size: 1.8rem; + background-color: $color-very-light-grey; + font-weight: 500; +} + +.c-footer__container { + padding-top: 5.4rem; + padding-bottom: 4.6rem; + display: flex; + justify-content: space-between; + align-items: center; + + @include bp-down('small') { + flex-direction: column; + } +} + +.c-footer__link { + text-decoration: none; +} diff --git a/docs/src/styles/components/_header.scss b/docs/src/styles/components/_header.scss new file mode 100644 index 00000000..a036c021 --- /dev/null +++ b/docs/src/styles/components/_header.scss @@ -0,0 +1,92 @@ +/* ========================================================================== + #HEADER + ========================================================================== */ + +.c-header { + background-color: $color-very-light-grey; +} + +.c-header__inner { + padding: 2rem 0; + min-height: 11rem; + display: flex; + justify-content: space-between; +} + +.c-header__left { + flex: 0 0 auto; + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + @include bp('large') { + justify-content: initial; + flex-direction: row; + width: auto; + } +} + +.c-header__logo { + padding-bottom: 1rem; + font-size: 0.7em; + + @include bp('large') { + padding-bottom: 0; + padding-right: 8rem; + font-size: 1em; + } +} + +.c-header__nav { + display: flex; + list-style: none; + margin: 1rem -1.5rem; + + @include bp-down('medium') { + flex-wrap: wrap; + justify-content: center; + } + + @include bp('large') { + margin: 0 -2.5rem; + } +} + +.c-header__nav-item { + margin: 0.8rem; + + @include bp('small') { + margin: 0; + } + + @include bp('large') { + padding: 0 1.5rem; + } + + &--current a { + color: $color-secondary; + } +} + +.c-header__nav-link { + text-decoration: none; + font-weight: 500; + padding: 1rem; +} + +.c-header__right { + display: flex; + align-items: center; + + @include bp-down('large') { + display: none; + } +} + +.c-header__right-iframe { + height: 30px; + width: 130px; + border: 0; +} diff --git a/docs/src/styles/components/_hero.scss b/docs/src/styles/components/_hero.scss new file mode 100644 index 00000000..7598c849 --- /dev/null +++ b/docs/src/styles/components/_hero.scss @@ -0,0 +1,89 @@ +/* ========================================================================== + #HERO + ========================================================================== */ + +.c-hero__inner { + display: flex; + align-items: center; + flex-direction: column-reverse; + + @include bp('large') { + flex-direction: row; + } +} + +.c-hero__content { + margin-top: 2rem; + + @include bp('medium') { + margin-top: 4rem; + } + + @include bp('large') { + margin-top: 0; + max-width: 44%; + } +} + +.c-hero__title { + font-size: 3.4rem; + line-height: 1.25; +} + +.c-hero__buttons { + display: flex; +} + +.c-hero__button { + & + & { + margin-left: 1.6rem; + + @include bp('large') { + margin-left: 3.7rem; + } + } +} + +.c-hero__media { + width: 100%; + + @include bp('large') { + max-width: 55%; + } +} + +.c-hero__media-wrapper { + position: relative; + width: 100%; + height: 0; + padding-bottom: 61.5%; + overflow: hidden; + background-color: $color-mercury; +} + +.c-hero__image { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + z-index: 1; +} + +.c-hero__video-button { + position: absolute; + top: 0; + left: 0; + z-index: 2; +} + +.c-hero__video { + z-index: 0; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border: none; +} diff --git a/docs/src/styles/components/_highlight.scss b/docs/src/styles/components/_highlight.scss new file mode 100644 index 00000000..50f2eb8a --- /dev/null +++ b/docs/src/styles/components/_highlight.scss @@ -0,0 +1,8 @@ +/* ========================================================================== + #HIGHLIGHT + ========================================================================== */ + +.c-highlight { + color: $color-secondary; + font-weight: inherit; +} diff --git a/docs/src/styles/components/_logo.scss b/docs/src/styles/components/_logo.scss new file mode 100644 index 00000000..3f88eb54 --- /dev/null +++ b/docs/src/styles/components/_logo.scss @@ -0,0 +1,37 @@ +/* ========================================================================== + #LOGO + ========================================================================== */ + +$logo-base-font-size: 18; + +@function logo-em($size) { + @return $size / $logo-base-font-size * 1em; +} + +.c-logo__link { + display: flex; + align-items: center; + text-decoration: none; + + > * { + text-decoration: none; + } +} + +.c-logo__icon-wrapper { + padding-right: logo-em(8.83); +} + +.c-logo__icon { + display: block; + width: 1em; + height: 1em; + font-size: logo-em(44.16); +} + +.c-logo__text { + font-size: logo-em(33); + font-weight: 700; + color: $color-secondary; + text-decoration: none; +} diff --git a/docs/src/styles/components/_page-nav.scss b/docs/src/styles/components/_page-nav.scss new file mode 100644 index 00000000..18d63b95 --- /dev/null +++ b/docs/src/styles/components/_page-nav.scss @@ -0,0 +1,60 @@ +/* ========================================================================== + #PAGE-NAV + ========================================================================== */ + +.c-page-nav { + display: flex; +} + +.c-page-nav__item { + &--prev { + padding-left: 5.2rem; + } + + &--next { + padding: 0 5.2rem 0 2rem; + margin-left: auto; + text-align: right; + } +} + +.c-page-nav__link { + text-decoration: none; +} + +.c-page-nav__heading { + display: block; +} + +.c-page-nav__text { + position: relative; + display: block; + font-weight: 600; + font-size: 1.8rem; + margin-top: 0.5rem; + + @include bp('medium') { + font-size: 2.4rem; + } + + &::before { + position: absolute; + top: 50%; + transform: translateY(-50%); + width: 28px; + height: 17px; + } + + .c-page-nav__item--prev & { + &::before { + left: -5.2rem; + } + } + + .c-page-nav__item--next & { + &::before { + transform: translateY(-50%) rotate(180deg); + right: -5.2rem; + } + } +} diff --git a/docs/src/styles/components/_post.scss b/docs/src/styles/components/_post.scss new file mode 100644 index 00000000..1a3c9762 --- /dev/null +++ b/docs/src/styles/components/_post.scss @@ -0,0 +1,22 @@ +/* ========================================================================== + #POST + ========================================================================== */ + +.c-post { + display: flex; + flex-direction: column-reverse; + width: 100%; + + @include bp('large') { + flex-direction: row; + } +} + +.c-post__article { + display: flex; + flex-direction: column; + + @include bp('large') { + max-width: 58%; + } +} diff --git a/docs/src/styles/components/_sidebar.scss b/docs/src/styles/components/_sidebar.scss new file mode 100644 index 00000000..0d61a940 --- /dev/null +++ b/docs/src/styles/components/_sidebar.scss @@ -0,0 +1,135 @@ +/* ========================================================================== + #SIDEBAR + ========================================================================== */ + +.c-sidebar { + position: fixed; + transform: translateX(-100%); + top: 0; + left: 0; + flex-shrink: 0; + margin-right: 5.5rem; + padding: 9.5rem 2rem 0; + height: 100%; + width: 100%; + transition: transform 0.2s; + background-color: $color-white; + z-index: 100; + + &--active { + transform: translateX(0); + overflow-y: auto; + } + + @include bp('large') { + position: sticky; + transform: none; + height: max-content; + width: 18.5%; + padding: 9.5rem 0 0; + } + + a { + text-decoration: none; + } +} + +.c-sidebar__titles { + margin-top: 2.2rem; + overflow-x: hidden; + overflow-y: auto; + + @include bp('large') { + max-height: calc(100vh - 26rem); + } + + li { + margin-bottom: 0.5rem; + + @include bp('large') { + margin-bottom: 0; + } + } +} + +.c-sidebar__child--level-1 { + > .c-sidebar__link { + font-weight: 600; + } + + &:not(:last-child) { + margin-bottom: 3rem; + } + + .c-sidebar__children { + display: none; + margin-top: 0; + } + + &.c-sidebar__active-parent, + &.c-sidebar__current { + .c-sidebar__children { + display: block; + } + } +} + +.c-sidebar__current { + color: $color-secondary; + font-weight: 500; + + > a { + color: inherit; + } +} + +.c-sidebar__title { + text-transform: uppercase; + font-weight: 500; +} + +/* Sidebar variants + ========================================================================== */ +.c-page-sidebar { + margin-right: 0; + padding-right: 0; + top: 0; + right: 0; + flex-shrink: 0; + height: max-content; + width: 100%; + margin-left: 0; + padding-top: 0; + margin-top: 2rem; + position: relative; + font-size: 1.6rem; + + @include bp('large') { + width: 11%; + padding-top: 9.5rem; + margin-top: 7.5rem; + position: sticky; + } +} + +.c-page-sidebar__link { + text-decoration: none; + + &--active { + font-weight: 600; + } + + &--selected { + color: $color-secondary; + } +} + +.c-sidebar__headings { + overflow-x: hidden; + overflow-y: auto; + max-height: calc(100vh - 31rem); + + li { + margin-bottom: 0.75em; + } +} diff --git a/docs/src/styles/components/_slider.scss b/docs/src/styles/components/_slider.scss new file mode 100644 index 00000000..5e76b7b5 --- /dev/null +++ b/docs/src/styles/components/_slider.scss @@ -0,0 +1,72 @@ +/* ========================================================================== + #SLIDER + ========================================================================== */ + +.c-slider__container { + text-align: center; +} + +.c-slider__title { + font-size: 3.4rem; + line-height: 1.25; + font-weight: 700; +} + +.c-slider__slides { + overflow: hidden; + display: flex; + margin: -2rem 0; + flex-direction: column; + align-items: center; + justify-content: space-between; + + @include bp('large') { + flex-direction: row; + margin: 0 -1rem; + } +} + +.c-slider__slide { + filter: drop-shadow(0 4px 10px rgba($color-black, 0.1)); + flex-shrink: 0; + width: 100%; + margin: 2rem 0; + transition: transform 0.2s; + + &:hover { + transform: scale(1.1); + } + + @include bp('medium') { + width: 60%; + } + + @include bp('large') { + height: 128px; + margin: 0 1rem; + width: 23%; + } +} + +.c-slider__slide-image { + width: 100%; + object-fit: contain; + height: auto; +} + +.c-slider__pagination-items { + display: flex; + align-items: center; + justify-content: center; +} + +.c-slider__pagination-item { + width: 44px; + height: 2px; + margin: 0 0.25rem; + background-color: $color-mercury; +} + +.c-slider__pagination-item--current { + background-color: $color-mulled-wine; +} diff --git a/docs/src/styles/components/_why-chisel.scss b/docs/src/styles/components/_why-chisel.scss new file mode 100644 index 00000000..7ec33a68 --- /dev/null +++ b/docs/src/styles/components/_why-chisel.scss @@ -0,0 +1,29 @@ +/* ========================================================================== + #WHY-CHISEL + ========================================================================== */ + +.c-why-chisel__title { + font-size: 3.4rem; + text-align: center; +} + +.c-why-chisel__feature-item { + & + & { + margin-top: 10rem; + + @include bp('medium') { + margin-top: 18rem; + } + } +} + +.c-why-chisel__cta { + display: flex; + align-items: center; + justify-content: center; +} + +.c-why-chisel__cta-text { + font-weight: 500; + margin: 0 8px; +} diff --git a/generators/app/templates/styles/itcss/elements/_blockquote.scss b/docs/src/styles/elements/_blockquote.scss similarity index 92% rename from generators/app/templates/styles/itcss/elements/_blockquote.scss rename to docs/src/styles/elements/_blockquote.scss index 0a0cd4aa..4cfd1928 100644 --- a/generators/app/templates/styles/itcss/elements/_blockquote.scss +++ b/docs/src/styles/elements/_blockquote.scss @@ -7,13 +7,13 @@ blockquote { font-style: italic; p:first-child { - &:before { + &::before { content: open-quote; } } p:last-child { - &:after { + &::after { content: close-quote; } } diff --git a/docs/src/styles/elements/_code.scss b/docs/src/styles/elements/_code.scss new file mode 100644 index 00000000..0828a068 --- /dev/null +++ b/docs/src/styles/elements/_code.scss @@ -0,0 +1,13 @@ +:not(pre) > code { + // background: $color-fill; + // color: $color-text-emp; + font-family: 'Lucida Console', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', + monospace; + font-weight: 400; + // font-size: rem(20); + // padding: 0.1em 0.3em; + + // &::selection { + // background: #fce29f; + // } +} diff --git a/generators/app/templates/styles/itcss/elements/_headings.scss b/docs/src/styles/elements/_headings.scss similarity index 100% rename from generators/app/templates/styles/itcss/elements/_headings.scss rename to docs/src/styles/elements/_headings.scss diff --git a/generators/app/templates/styles/itcss/elements/_hr.scss b/docs/src/styles/elements/_hr.scss similarity index 100% rename from generators/app/templates/styles/itcss/elements/_hr.scss rename to docs/src/styles/elements/_hr.scss diff --git a/docs/src/styles/elements/_html-body.scss b/docs/src/styles/elements/_html-body.scss new file mode 100644 index 00000000..d6566cf7 --- /dev/null +++ b/docs/src/styles/elements/_html-body.scss @@ -0,0 +1,36 @@ +/* ========================================================================== + #PAGE + ========================================================================== */ + +html { + background: $color-bg; + color: $color-text; + font-family: $font-sans-serif; + font-size: 0.625rem; + line-height: 1.5; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + scroll-behavior: smooth; + overflow-y: scroll; +} + +.no-scroll { + height: 100vh; + overflow: hidden; + + @supports (-webkit-touch-callout: none) { + height: fill-available; + + body { + min-height: fill-available; + } + } +} + +body { + font-size: 1.8rem; + display: flex; + min-height: 100vh; + flex-direction: column; +} diff --git a/docs/src/styles/elements/_images.scss b/docs/src/styles/elements/_images.scss new file mode 100644 index 00000000..00fd1b8a --- /dev/null +++ b/docs/src/styles/elements/_images.scss @@ -0,0 +1,27 @@ +/* ========================================================================== + #IMAGES + ========================================================================== */ + +/** + * 1. Fluid images for responsive purposes. + * 2. Offset `alt` text from surrounding copy. + * 3. Setting `vertical-align` removes the whitespace that appears under `img` + * elements when they are dropped into a page as-is. Safer alternative to + * using `display: block;`. + */ + +img { + font-style: italic; /* [2] */ + max-width: 100%; /* [1] */ + vertical-align: middle; /* [3] */ +} + +/** + * 1. If a `width` and/or `height` attribute have been explicitly defined, let’s + * not make the image fluid. + */ + +img[width], +img[height] { + max-width: none; +} diff --git a/docs/src/styles/elements/_links.scss b/docs/src/styles/elements/_links.scss new file mode 100644 index 00000000..fb5e1bd3 --- /dev/null +++ b/docs/src/styles/elements/_links.scss @@ -0,0 +1,17 @@ +/* ========================================================================== + #LINKS + ========================================================================== */ + +a { + color: $color-link; + font-weight: 500; + text-decoration: underline; + + &:hover { + color: $color-hover; + + strong { + color: $color-bright-sun; + } + } +} diff --git a/generators/app/templates/styles/itcss/elements/_lists.scss b/docs/src/styles/elements/_lists.scss similarity index 100% rename from generators/app/templates/styles/itcss/elements/_lists.scss rename to docs/src/styles/elements/_lists.scss diff --git a/docs/src/styles/elements/_main.scss b/docs/src/styles/elements/_main.scss new file mode 100644 index 00000000..9f3899af --- /dev/null +++ b/docs/src/styles/elements/_main.scss @@ -0,0 +1,9 @@ +/* ========================================================================== + #PAGE + ========================================================================== */ + +main { + display: flex; + flex-direction: column; + flex-grow: 1; +} diff --git a/generators/app/templates/styles/itcss/elements/_tables.scss b/docs/src/styles/elements/_tables.scss similarity index 100% rename from generators/app/templates/styles/itcss/elements/_tables.scss rename to docs/src/styles/elements/_tables.scss diff --git a/generators/app/templates/styles/itcss/generic/_box-sizing.scss b/docs/src/styles/generic/_box-sizing.scss similarity index 93% rename from generators/app/templates/styles/itcss/generic/_box-sizing.scss rename to docs/src/styles/generic/_box-sizing.scss index d8473ac7..878538cb 100644 --- a/generators/app/templates/styles/itcss/generic/_box-sizing.scss +++ b/docs/src/styles/generic/_box-sizing.scss @@ -13,8 +13,8 @@ html { * { &, - &:before, - &:after { + &::before, + &::after { box-sizing: inherit; } } diff --git a/docs/src/styles/generic/_font-face.scss b/docs/src/styles/generic/_font-face.scss new file mode 100644 index 00000000..b603b72b --- /dev/null +++ b/docs/src/styles/generic/_font-face.scss @@ -0,0 +1,53 @@ +/* ========================================================================== + #FONT-FACE + ========================================================================== */ + +/** + * Add font-display: swap to font-face blocks here + * https://www.zachleat.com/web/comprehensive-webfonts/#font-display + */ + +/* quicksand-300 - latin */ +// @font-face { +// font-family: Quicksand; +// font-style: normal; +// font-weight: 300; +// font-display: swap; +// src: url('../assets/fonts/quicksand-v21-latin-300.woff2') format('woff2'); /* Chrome 26+, Opera 23+, Firefox 39+ */ +// } + +/* quicksand-regular - latin */ +@font-face { + font-family: Quicksand; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('../assets/fonts/quicksand-v21-latin-regular.woff2') format('woff2'); /* Chrome 26+, Opera 23+, Firefox 39+ */ +} + +/* quicksand-500 - latin */ +@font-face { + font-family: Quicksand; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url('../assets/fonts/quicksand-v21-latin-500.woff2') format('woff2'); /* Chrome 26+, Opera 23+, Firefox 39+ */ +} + +/* quicksand-600 - latin */ +// @font-face { +// font-family: Quicksand; +// font-style: normal; +// font-weight: 600; +// font-display: swap; +// src: url('../assets/fonts/quicksand-v21-latin-600.woff2') format('woff2'); /* Chrome 26+, Opera 23+, Firefox 39+ */ +// } + +/* quicksand-700 - latin */ +@font-face { + font-family: Quicksand; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url('../assets/fonts/quicksand-v21-latin-700.woff2') format('woff2'); /* Chrome 26+, Opera 23+, Firefox 39+ */ +} diff --git a/generators/app/templates/styles/itcss/generic/_normalize.scss b/docs/src/styles/generic/_normalize.scss similarity index 76% rename from generators/app/templates/styles/itcss/generic/_normalize.scss rename to docs/src/styles/generic/_normalize.scss index 80ca68c2..f578d48e 100644 --- a/generators/app/templates/styles/itcss/generic/_normalize.scss +++ b/docs/src/styles/generic/_normalize.scss @@ -2,4 +2,4 @@ #NORMALIZE ========================================================================== */ -@import 'normalize-scss/sass/normalize/import-now'; +@import-normalize; diff --git a/docs/src/styles/generic/_reset.scss b/docs/src/styles/generic/_reset.scss new file mode 100644 index 00000000..7d850993 --- /dev/null +++ b/docs/src/styles/generic/_reset.scss @@ -0,0 +1,59 @@ +/* ========================================================================== + #RESET + ========================================================================== */ + +/** + * A very simple reset that sits on top of Normalize.css. + */ + +body, +h1, +h2, +h3, +h4, +h5, +h6, +blockquote, +p, +pre, +dl, +dd, +ol, +ul, +figure, +hr, +fieldset, +legend { + margin: 0; + padding: 0; +} + +/** + * Remove trailing margins from nested lists. + */ + +li > { + ol, + ul { + margin-bottom: 0; + } +} + +/** + * Remove default table spacing. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +/** + * 1. Reset Chrome and Firefox behaviour which sets a `min-width: min-content;` + * on fieldsets. + */ + +fieldset { + min-width: 0; /* [1] */ + border: 0; +} diff --git a/docs/src/styles/generic/_shared.scss b/docs/src/styles/generic/_shared.scss new file mode 100644 index 00000000..3f2323e8 --- /dev/null +++ b/docs/src/styles/generic/_shared.scss @@ -0,0 +1,42 @@ +/* ========================================================================== + #SHARED + ========================================================================== */ + +/** + * Shared declarations for certain elements. + */ + +/** + * Always declare margins in the same direction: + * csswizardry.com/2012/06/single-direction-margin-declarations + */ + +address, +h1, +h2, +h3, +h4, +h5, +h6, +blockquote, +p, +pre, +dl, +ol, +ul, +figure, +hr, +table, +fieldset { + margin-bottom: 1.3rem; +} + +/** + * Consistent indentation for lists. + */ + +dd, +ol, +ul { + margin-left: 1rem; +} diff --git a/generators/app/templates/styles/itcss/main.scss b/docs/src/styles/main.scss similarity index 73% rename from generators/app/templates/styles/itcss/main.scss rename to docs/src/styles/main.scss index 4d409a27..2680c29a 100644 --- a/generators/app/templates/styles/itcss/main.scss +++ b/docs/src/styles/main.scss @@ -1,12 +1,13 @@ /* - Project: <%= name %> - Author: <%= author %> + Project: Getchisel + Author: Xfive */ @import 'settings/*'; @import 'tools/*'; @import 'generic/*'; @import 'elements/*'; +@import 'vendor/*'; @import 'objects/*'; @import 'components/*'; @import 'utilities/*'; diff --git a/docs/src/styles/objects/_animations.scss b/docs/src/styles/objects/_animations.scss new file mode 100644 index 00000000..2d2a2fb8 --- /dev/null +++ b/docs/src/styles/objects/_animations.scss @@ -0,0 +1,16 @@ +@keyframes o-pulse-circle { + 0% { + transform: scale(0.95); + box-shadow: 0 0 0 0 rgba($color-primary, 0.7); + } + + 70% { + transform: scale(1); + box-shadow: 0 0 0 1.5rem rgba($color-primary, 0); + } + + 100% { + transform: scale(0.95); + box-shadow: 0 0 0 0 rgba($color-primary, 0); + } +} diff --git a/docs/src/styles/objects/_container.scss b/docs/src/styles/objects/_container.scss new file mode 100644 index 00000000..3278b6f7 --- /dev/null +++ b/docs/src/styles/objects/_container.scss @@ -0,0 +1,14 @@ +/* ========================================================================== + #WRAPPER + ========================================================================== */ + +/** + * Page-level constraining and wrapping elements. + */ + +.o-container { + margin-right: auto; + margin-left: auto; + max-width: 118rem + 4rem; + padding: 0 2rem; +} diff --git a/docs/src/styles/objects/_content.scss b/docs/src/styles/objects/_content.scss new file mode 100644 index 00000000..796aa18d --- /dev/null +++ b/docs/src/styles/objects/_content.scss @@ -0,0 +1,220 @@ +/* ========================================================================== + #CONTENT + ========================================================================== */ + +.o-content { + h1, + h2, + h3, + h4, + h5, + h6, + p, + pre, + ul { + margin: 0; + } + + h1, + h2 { + font-weight: 600; + } + + h3, + h4, + h5, + h6 { + font-weight: 500; + } + + h1 { + font-size: 2.4rem; + + @include bp('large') { + font-size: 3.2rem; + } + } + + h2, + h3 { + font-size: 2.2rem; + margin: 2rem 0; + + @include bp('large') { + font-size: 2.4rem; + margin: 2rem 0 0.4rem; + } + } + + h4, + h5, + h6 { + font-size: 1.8rem; + margin-bottom: 2rem; + + @include bp('large') { + margin-bottom: 4rem; + } + } + + strong { + font-weight: 700; + } + + p { + margin-bottom: 2.8rem; + } + + code { + font-weight: inherit; + overflow-wrap: break-word; + font-size: 0.889em; + background-color: $color-very-light-grey; + padding: 4px 7px; + } + + ul, + ol { + margin-top: 2.8rem; + margin-left: 0; + list-style: none; + } + + ul { + margin-left: 0.2em; + } + + li { + position: relative; + margin-bottom: 2rem; + + @include bp('large') { + margin-bottom: 2.8rem; + } + } + + ol { + counter-reset: list; + } + + ol > li { + list-style: decimal; + + &::marker { + content: none; + } + + &::before { + counter-increment: list; + content: counter(list) '.'; + position: absolute; + top: 0; + left: 0; + } + } + + ul > li { + &::before { + content: ''; + position: absolute; + width: 13px; + height: 13px; + top: 8px; + left: 0; + background-color: $color-secondary; + } + } + + ol > li, + ul > li { + padding-left: 3.3rem; + } + + li:not(:last-child) { + margin-bottom: 2rem; + + @include bp('large') { + margin-bottom: 2.6rem; + } + } + + a { + font-weight: 500; + overflow-wrap: break-word; + } + + pre > code[class*='language-'] { + overflow-wrap: break-word; + margin-bottom: 3rem; + + @include bp('large') { + margin-bottom: 4.8rem; + } + } + + blockquote p { + position: relative; + font-style: normal; + color: $color-cornflower-blue; + padding-left: 29px; + + &::before { + @extend %o-icons; + @extend %o-icons--checkmark; + + position: absolute; + left: 0; + top: 6px; + } + + &::after { + content: none; + } + } + + figure { + position: relative; + padding-bottom: 56%; + margin-bottom: 4rem; + + iframe { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + border: none; + } + } + + .c-intro { + font-weight: 600; + margin: 2.4rem 0 0.8rem; + font-size: 2rem; + + @include bp('large') { + font-size: 2.4rem; + margin: 3.6rem 0 1.2rem; + } + + a { + font-weight: inherit; + } + } + + .c-post__entry { + > :first-child:not(p) { + margin-top: 2rem; + + @include bp('large') { + margin-top: 4.2rem; + } + } + } + + .c-page-nav { + margin-top: 5.8rem; + display: flex; + justify-content: space-between; + } +} diff --git a/docs/src/styles/objects/_icons.scss b/docs/src/styles/objects/_icons.scss new file mode 100644 index 00000000..12257de2 --- /dev/null +++ b/docs/src/styles/objects/_icons.scss @@ -0,0 +1,37 @@ +/* ========================================================================== + #ICONS + ========================================================================== */ + +.o-icons::before, +%o-icons::before { + content: ''; + background-size: contain; + background-repeat: no-repeat; + display: block; +} + +.o-icons--star::before { + width: 33px; + height: 33px; + background-image: url('~assets/images/star.svg'); +} + +.o-icons--play::before { + background-image: url('~assets/images/play.svg'); + height: 50px; + width: 50px; + border-radius: 100%; +} + +.o-icons--arrow::before { + background-image: url('~assets/images/arrow.svg'); + width: 28px; + height: 17px; + border-radius: 100%; +} + +%o-icons--checkmark::before { + background-image: url('~assets/images/checkmark.svg'); + width: 17px; + height: 17px; +} diff --git a/generators/app/templates/styles/itcss/objects/_layout.scss b/docs/src/styles/objects/_layout.scss similarity index 100% rename from generators/app/templates/styles/itcss/objects/_layout.scss rename to docs/src/styles/objects/_layout.scss diff --git a/generators/app/templates/styles/itcss/objects/_list-bare.scss b/docs/src/styles/objects/_list-bare.scss similarity index 100% rename from generators/app/templates/styles/itcss/objects/_list-bare.scss rename to docs/src/styles/objects/_list-bare.scss diff --git a/generators/app/templates/styles/itcss/objects/_list-inline.scss b/docs/src/styles/objects/_list-inline.scss similarity index 100% rename from generators/app/templates/styles/itcss/objects/_list-inline.scss rename to docs/src/styles/objects/_list-inline.scss diff --git a/docs/src/styles/objects/_media.scss b/docs/src/styles/objects/_media.scss new file mode 100644 index 00000000..a5e99dc2 --- /dev/null +++ b/docs/src/styles/objects/_media.scss @@ -0,0 +1,54 @@ +/* ========================================================================== + #MEDIA + ========================================================================== */ + +/** + * Place any image- and text-like content side-by-side, as per: + * http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code + */ + +.o-media { + @include clearfix(); + + display: block; +} + +.o-media__img { + float: left; + margin-right: 1rem; + + > img { + display: block; + } +} + +.o-media__body { + display: block; + overflow: hidden; + + &, + > :last-child { + margin-bottom: 0; + } +} + +/* Reversed media objects + ========================================================================== */ + +.o-media--reverse { + > .o-media__img { + float: right; + margin-left: 1rem; + margin-right: 0; + } +} + +/* Gutterless media objects + ========================================================================== */ + +.o-media--flush { + > .o-media__img { + margin-left: 0; + margin-right: 0; + } +} diff --git a/generators/app/templates/styles/itcss/objects/_table.scss b/docs/src/styles/objects/_table.scss similarity index 100% rename from generators/app/templates/styles/itcss/objects/_table.scss rename to docs/src/styles/objects/_table.scss diff --git a/docs/src/styles/settings/_global.scss b/docs/src/styles/settings/_global.scss new file mode 100644 index 00000000..3ff815eb --- /dev/null +++ b/docs/src/styles/settings/_global.scss @@ -0,0 +1,74 @@ +// ========================================================================== +// #GLOBAL +// ========================================================================== +// The global settings file contains any project-wide variables; things that +// need to be made available to the entire codebase. + +$global-radius: 5px !default; +$global-transition: all 300ms ease-in-out !default; + +/* Fonts + ========================================================================== */ + +$font-sans-serif: 'Quicksand', -apple-system, system-ui, BlinkMacSystemFont, + 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', sans-serif !default; + +/* Breakpoints + ========================================================================== */ + +$breakpoints: ( + small: 480 / 16 * 1rem, + medium: 768 / 16 * 1rem, + large: 1024 / 16 * 1rem, + xlarge: 1280 / 16 * 1rem, + full: 1600 / 16 * 1rem, +); + +/* Spacing + ========================================================================== */ + +$spacing: ( + auto: auto, + 0: 0, + 2: 2rem, + 3: 3rem, + 4: 4rem, + 6: 6rem, + 8: 8rem, + 10: 8rem, + 12: 12rem, + 14: 14rem, + 16: 16rem, + 18: 18rem, +); + +/* Colors + ========================================================================== */ + +// Colors shouldn't be used directly but reassigned +$color-white: #fff; +$color-black: #000; +$color-very-light-grey: #f0f1f3; +$color-light-grey: #999; +$color-medium-grey: #666; +$color-dark-grey: #333; + +$color-primary: #2a1468; +$color-secondary: #ff6d54; +$color-rhino: #2d2b57; +$color-titan-white: #e3dfff; +$color-bright-sun: #fed049; +$color-mercury: #e4e4e4; +$color-mulled-wine: #494771; +$color-cornflower-blue: #915ff2; + +// Text +$color-bg: $color-white; +$color-text: $color-primary; + +// Links +$color-link: $color-primary; +$color-hover: $color-secondary; + +// Borders +$color-border: $color-very-light-grey; diff --git a/generators/app/templates/styles/itcss/tools/_breakpoints.scss b/docs/src/styles/tools/_breakpoints.scss similarity index 87% rename from generators/app/templates/styles/itcss/tools/_breakpoints.scss rename to docs/src/styles/tools/_breakpoints.scss index f9c44c3d..9691f8a2 100644 --- a/generators/app/templates/styles/itcss/tools/_breakpoints.scss +++ b/docs/src/styles/tools/_breakpoints.scss @@ -1,6 +1,6 @@ -///* ======================================================================== -// #BREAKPOINTS -// ======================================================================== */ +// ========================================================================== +// #BREAKPOINTS +// ========================================================================== @function bp-val($name) { @if type-of($name) == 'number' { @@ -25,6 +25,7 @@ } $next-key: nth($breakpoint-names, $n + 1); + @return map-get($breakpoints, $next-key); } diff --git a/generators/app/templates/styles/itcss/tools/_clearfix.scss b/docs/src/styles/tools/_clearfix.scss similarity index 63% rename from generators/app/templates/styles/itcss/tools/_clearfix.scss rename to docs/src/styles/tools/_clearfix.scss index 875d6b69..1ec5761a 100644 --- a/generators/app/templates/styles/itcss/tools/_clearfix.scss +++ b/docs/src/styles/tools/_clearfix.scss @@ -1,6 +1,6 @@ -///* ======================================================================== -// #CLEARFIX -// ======================================================================== */ +// ========================================================================== +// #CLEARFIX +// ========================================================================== // Mixin to drop micro clearfix into a selector. Further reading: // http://www.cssmojo.com/the-very-latest-clearfix-reloaded/ @@ -10,10 +10,9 @@ // } @mixin clearfix() { - &:after { + &::after { content: '' !important; display: block !important; clear: both !important; } } - diff --git a/generators/app/templates/styles/itcss/tools/_hidden.scss b/docs/src/styles/tools/_hidden.scss similarity index 70% rename from generators/app/templates/styles/itcss/tools/_hidden.scss rename to docs/src/styles/tools/_hidden.scss index 48eef976..e60ece29 100644 --- a/generators/app/templates/styles/itcss/tools/_hidden.scss +++ b/docs/src/styles/tools/_hidden.scss @@ -1,6 +1,6 @@ -///* ======================================================================== -// #HIDDEN-VISUALLY -// ======================================================================== */ +// ========================================================================== +// #HIDDEN-VISUALLY +// ========================================================================== // Mixin to quickly apply accessible hiding to elements. @mixin hidden-visually() { diff --git a/generators/app/templates/styles/itcss/utilities/_align.scss b/docs/src/styles/utilities/_align.scss similarity index 100% rename from generators/app/templates/styles/itcss/utilities/_align.scss rename to docs/src/styles/utilities/_align.scss diff --git a/generators/app/templates/styles/itcss/utilities/_clearfix.scss b/docs/src/styles/utilities/_clearfix.scss similarity index 100% rename from generators/app/templates/styles/itcss/utilities/_clearfix.scss rename to docs/src/styles/utilities/_clearfix.scss diff --git a/generators/app/templates/styles/itcss/utilities/_hide.scss b/docs/src/styles/utilities/_hide.scss similarity index 100% rename from generators/app/templates/styles/itcss/utilities/_hide.scss rename to docs/src/styles/utilities/_hide.scss diff --git a/docs/src/styles/utilities/_spacing.scss b/docs/src/styles/utilities/_spacing.scss new file mode 100644 index 00000000..3cc9665f --- /dev/null +++ b/docs/src/styles/utilities/_spacing.scss @@ -0,0 +1,55 @@ +/* stylelint-disable max-nesting-depth */ + +/* ========================================================================== + #SPACING + ========================================================================== */ + +@each $key, $size in $spacing { + $sides: 'top' 'right' 'bottom' 'left'; + + .margin-#{$key} { + margin: $size; + } + + @each $side in $sides { + .margin-#{$side}-#{$key} { + margin-#{$side}: $size; + } + } + + @each $breakpointKey, $breakpoint in $breakpoints { + @each $side in $sides { + .margin-#{$side}-#{$breakpointKey}-#{$key} { + @include bp($breakpointKey) { + margin-#{$side}: $size; + } + } + } + } +} + +@each $key, $size in $spacing { + $sides: 'top' 'right' 'bottom' 'left'; + + @if $size != 'auto' { + .padding-#{$key} { + padding: $size; + } + + @each $side in $sides { + .padding-#{$side}-#{$key} { + padding-#{$side}: $size; + } + } + + @each $breakpointKey, $breakpoint in $breakpoints { + @each $side in $sides { + .padding-#{$side}-#{$breakpointKey}-#{$key} { + @include bp($breakpointKey) { + padding-#{$side}: $size; + } + } + } + } + } +} diff --git a/generators/app/templates/scripts/vendor/.keep b/docs/src/styles/vendor/.keep similarity index 100% rename from generators/app/templates/scripts/vendor/.keep rename to docs/src/styles/vendor/.keep diff --git a/docs/src/styles/vendor/_highlightjs.scss b/docs/src/styles/vendor/_highlightjs.scss new file mode 100644 index 00000000..8f6c3922 --- /dev/null +++ b/docs/src/styles/vendor/_highlightjs.scss @@ -0,0 +1,147 @@ +/* stylelint-disable property-no-vendor-prefix, selector-no-vendor-prefix, selector-no-qualifying-type, no-descending-specificity, selector-class-pattern */ + +code[class*='language-'], +pre[class*='language-'] { + color: $color-titan-white; + background: $color-rhino; + border-radius: 1rem; + font-family: 'Lucida Console', Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', + monospace; + font-size: 1.4rem; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + + &.language-text-md { + white-space: pre-line; + } +} + +pre[class*='language-']::selection, +pre[class*='language-'] ::selection, +code[class*='language-']::selection, +code[class*='language-'] ::selection { + background: $color-primary; +} + +@media print { + code[class*='language-'], + pre[class*='language-'] { + text-shadow: none; + } +} + +/* Code blocks */ +pre > code[class*='language-'] { + padding: 3rem 2rem; + margin: 0 0 2.5rem 0; + overflow: auto; + display: block; + background: #2d2b57; + color: #e3dfff; + font-weight: normal; + font-size: 1.4rem; +} + +/* Inline code */ +:not(pre) > code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +/** + * Shades of Purple Theme — for Highlightjs. + * + * @author (c) Ahmad Awais + * @link GitHub Repo → https://github.com/ahmadawais/Shades-of-Purple-HighlightJS + * @version 1.5.0 + */ + +.hljs-subst { + color: #e3dfff; +} + +.hljs-title { + color: #fad000; + font-weight: normal; +} + +.hljs-name { + color: #a1feff; +} + +.hljs-tag { + color: #fff; +} + +.hljs-attr { + color: #f8d000; + font-style: italic; +} + +.hljs-built_in, +.hljs-selector-tag, +.hljs-section { + color: #fb9e00; +} + +.hljs-keyword { + color: #fb9e00; +} + +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-code, +.hljs-regexp, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-quote, +.hljs-deletion { + color: #4cd213; +} + +.hljs-meta, +.hljs-meta-string { + color: #fb9e00; +} + +.hljs-comment { + color: #ac65ff; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-name, +.hljs-strong { + font-weight: normal; +} + +.hljs-literal, +.hljs-number { + color: #fa658d; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/docs/src/templates/components/block.twig b/docs/src/templates/components/block.twig new file mode 100644 index 00000000..b759e467 --- /dev/null +++ b/docs/src/templates/components/block.twig @@ -0,0 +1,22 @@ +{% if loop.first == false %} +

    +{% endif %} +
    +
    +

    {{ block_item.title }}

    +
    +
    + {{ block_item.description }} +
    +
    +
    +
    + {{ block_item.image.alt }} +
    +
    diff --git a/docs/src/templates/components/footer.twig b/docs/src/templates/components/footer.twig new file mode 100644 index 00000000..bdb63f81 --- /dev/null +++ b/docs/src/templates/components/footer.twig @@ -0,0 +1,6 @@ +
    diff --git a/docs/src/templates/components/header.twig b/docs/src/templates/components/header.twig new file mode 100644 index 00000000..03668558 --- /dev/null +++ b/docs/src/templates/components/header.twig @@ -0,0 +1,29 @@ +{% set main_nav = [ + { title: 'Docs', link: '/docs' }, + getPosts({ id: 'tutorials' })[0], + { title: 'About', link: '/about' }, +] %} + + +
    +
    +
    +
    + + +
    + +
    + +
    +
    +
    +
    diff --git a/docs/src/templates/components/hero.twig b/docs/src/templates/components/hero.twig new file mode 100644 index 00000000..fe117f57 --- /dev/null +++ b/docs/src/templates/components/hero.twig @@ -0,0 +1,40 @@ +
    +
    +
    +
    +

    {{ args.title }}

    +

    {{ args.description }}

    +
    + {% for button in args.buttons %} + {{ button.text }} + {% endfor %} +
    +
    +
    +
    + {% if args.media.image and not args.media.video %} + {{ args.media.image.alt }} + {% endif %} + {% if args.media.video %} +
    + +
    + {% endif %} +
    +
    +
    +
    +
    diff --git a/docs/src/templates/components/logo.twig b/docs/src/templates/components/logo.twig new file mode 100644 index 00000000..959e972d --- /dev/null +++ b/docs/src/templates/components/logo.twig @@ -0,0 +1,19 @@ + diff --git a/docs/src/templates/components/page-nav.twig b/docs/src/templates/components/page-nav.twig new file mode 100644 index 00000000..7d25d1f0 --- /dev/null +++ b/docs/src/templates/components/page-nav.twig @@ -0,0 +1,24 @@ +{% if post.parent %} + +{% endif %} diff --git a/docs/src/templates/components/page-sidebar.twig b/docs/src/templates/components/page-sidebar.twig new file mode 100644 index 00000000..9ed32b07 --- /dev/null +++ b/docs/src/templates/components/page-sidebar.twig @@ -0,0 +1,8 @@ +{% if sidebar is not empty %} + +{% endif %} diff --git a/docs/src/templates/components/sidebar.twig b/docs/src/templates/components/sidebar.twig new file mode 100644 index 00000000..d9d2d329 --- /dev/null +++ b/docs/src/templates/components/sidebar.twig @@ -0,0 +1,12 @@ +{% if sidebar is not empty %} + +{% endif %} diff --git a/docs/src/templates/components/slider.twig b/docs/src/templates/components/slider.twig new file mode 100644 index 00000000..a36f9529 --- /dev/null +++ b/docs/src/templates/components/slider.twig @@ -0,0 +1,32 @@ +
    +
    +

    {{ args.title }}

    +
      + {% for image in args.images %} +
    • + + {{ image.alt }} + +
    • + {% endfor %} +
    + {% if args.images|length > 4 %} + + {% endif %} + + {{ args.cta.text }} + +
    +
    diff --git a/docs/src/templates/components/why-chisel.twig b/docs/src/templates/components/why-chisel.twig new file mode 100644 index 00000000..4a8ea41c --- /dev/null +++ b/docs/src/templates/components/why-chisel.twig @@ -0,0 +1,19 @@ +
    +
    +

    {{ args.sectionTitle }}

    +
      + {% for block_item in args.blocks %} +
    • + {% include 'components/block.twig' %} +
    • + {% endfor %} +
    +
    + +

    + {{ args.ctaLink }} +

    + +
    +
    +
    diff --git a/docs/src/templates/layouts/base.twig b/docs/src/templates/layouts/base.twig new file mode 100644 index 00000000..766cb7e5 --- /dev/null +++ b/docs/src/templates/layouts/base.twig @@ -0,0 +1,62 @@ + + + + + {% if post.data.template == 'template-home' %} + Chisel - {{ post.title }} + {% else %} + {{ post.title }} - Chisel + {% endif %} + + + + + {% if isDev() %} + + {% endif %} + + + + + + + + + + + + + + + + + {% block head %} + {% endblock %} + + + + + {% block header %} + {% include 'components/header.twig' %} + {% endblock %} + + +
    + {% block content %} + Sorry, no content + {% endblock %} +
    + + {% block footer %} + {% include 'components/footer.twig' %} + {% endblock %} + + + diff --git a/docs/src/templates/layouts/page.twig b/docs/src/templates/layouts/page.twig new file mode 100644 index 00000000..6643534d --- /dev/null +++ b/docs/src/templates/layouts/page.twig @@ -0,0 +1,8 @@ +{% extends "layouts/base.twig" %} +{% set pageName = '<%= pageName %>' %} + +{% block content %} +

    Hello + +

    +{% endblock %} diff --git a/docs/src/templates/post.twig b/docs/src/templates/post.twig new file mode 100644 index 00000000..e8e8df57 --- /dev/null +++ b/docs/src/templates/post.twig @@ -0,0 +1,31 @@ +{% extends "layouts/base.twig" %} +{% block content %} + +
    + {% set sidebar = sidebar() %} + {% include 'components/sidebar.twig' %} + +
    +
    +

    {{ post.title }}{{ isDev() ? (' (' ~ post.data.order ~ ')') : '' }}

    +

    {{ post.data.excerpt }}

    +
    + {{post.content}} +
    +
    + {% include 'components/page-nav.twig' %} +
    + + {% if not post.data.hideOnpageSidebar %} + {% set sidebar = onPageSidebar() %} + {% include 'components/page-sidebar.twig' %} + {% endif %} + +
    + +{% endblock %} diff --git a/docs/src/templates/template-home.twig b/docs/src/templates/template-home.twig new file mode 100644 index 00000000..8a3c8ccb --- /dev/null +++ b/docs/src/templates/template-home.twig @@ -0,0 +1,8 @@ +{% extends "layouts/base.twig" %} + +{% block content %} + {% include 'components/hero.twig' with { 'args': post.data.hero } %} + {% include 'components/why-chisel.twig' with { 'args': post.data.whychisel } %} + {% include 'components/slider.twig' with { 'args': post.data.slider } %} +
    +{% endblock %} diff --git a/docs/stylelint.config.js b/docs/stylelint.config.js new file mode 100644 index 00000000..bc6a23ad --- /dev/null +++ b/docs/stylelint.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ['stylelint-config-chisel'], +}; diff --git a/generators/app/index.js b/generators/app/index.js deleted file mode 100644 index bb59b4b5..00000000 --- a/generators/app/index.js +++ /dev/null @@ -1,92 +0,0 @@ -'use strict'; - -const Generator = require('yeoman-generator'); -const utils = require('./utils'); -const chalk = require('chalk'); -const commandExists = require('command-exists').sync; - -module.exports = class extends Generator { - - constructor(args, opts) { - super(args, opts); - } - - initializing() { - if (this.config.existed) { - this.log('A Chisel project already exists in this folder.'); - this.log( - 'If you are trying to setup an existing project, check out the' + - ' documentation at https://www.getchisel.co/docs/setup/' - ); - this.log( - 'If the process of generating project was interrupted and you would' + - ' like to continue, we recommend cleaning up the directory and' + - ' starting again.' - ); - process.exit(1); - } - } - - prompting() { - const done = this.async(); - - // Welcome user - this.log(''); - this.log(chalk.yellow(' *********************************************') + '\n'); - this.log(chalk.yellow(' Welcome to Chisel') + '\n'); - this.log(chalk.reset(' https://github.com/xfiveco/generator-chisel') + '\n'); - this.log(chalk.yellow(' *********************************************') + '\n'); - - this.prompt(utils.prompts.questions).then(function (answers) { - utils.prompts.setAnswers.apply(this, [answers]); - done(); - }.bind(this)); - } - - configuring() { - // Yeoman config file - utils.generator.config.call(this); - - // Project configuration files - utils.generator.dotfiles.call(this); - - // Application files - utils.generator.appfiles.call(this); - } - - writing() { - // Project index - utils.generator.projectInfo.call(this); - - // Template files - utils.generator.templates.call(this); - - // Stylesheet files - utils.generator.stylesheets.call(this); - - // JavaScript files - utils.generator.javascripts.call(this); - - // Gulp modules - utils.generator.gulpfiles.call(this); - } - - installWordpress() { - if(this.prompts.projectType != 'wp-with-fe' || - (this.options['skip-install'] && !this.options['run-wp'])) { - return; - } - this.composeWith(require.resolve('../wp')) - } - - installNpm() { - const isYarn = commandExists('yarn'); - this.log(chalk.yellow('\nINSTALLATION\n')); - this.installDependencies({ - yarn: isYarn, - npm: !isYarn, - bower: false, - skipInstall: this.options['skip-install'] - }); - } -} diff --git a/generators/app/templates/.babelrc b/generators/app/templates/.babelrc deleted file mode 100644 index 6d91df1a..00000000 --- a/generators/app/templates/.babelrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "presets": ["@babel/preset-env"], - "plugins": ["@babel/plugin-syntax-dynamic-import"] -} diff --git a/generators/app/templates/.browserslistrc b/generators/app/templates/.browserslistrc deleted file mode 100644 index e18db385..00000000 --- a/generators/app/templates/.browserslistrc +++ /dev/null @@ -1,7 +0,0 @@ -ie >= 11 -last 1 ChromeAndroid versions -last 2 Chrome versions -last 2 Firefox versions -last 2 Safari versions -last 2 iOS versions -last 2 Edge versions diff --git a/generators/app/templates/.eslintignore b/generators/app/templates/.eslintignore deleted file mode 100644 index cbb4fc59..00000000 --- a/generators/app/templates/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -vendor -dist -*.json diff --git a/generators/app/templates/.eslintrc b/generators/app/templates/.eslintrc deleted file mode 100644 index 8a25697c..00000000 --- a/generators/app/templates/.eslintrc +++ /dev/null @@ -1,27 +0,0 @@ -{ - "extends": "chisel", - "overrides": [ - { - "files": [ - "gulpfile.js", - "gulp/**/*.js", - "webpack.chisel.config.js" - ], - "parserOptions": { - "sourceType": "script" - }, - "rules": { - "import/no-extraneous-dependencies": [ - "error", - { - "devDependencies": true - } - ], - "no-console": "off" - }, - "env": { - "node": true - } - } - ] -} diff --git a/generators/app/templates/.prettierignore b/generators/app/templates/.prettierignore deleted file mode 100644 index e3bae5aa..00000000 --- a/generators/app/templates/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -vendor -dist diff --git a/generators/app/templates/.prettierrc b/generators/app/templates/.prettierrc deleted file mode 100644 index a68de1d2..00000000 --- a/generators/app/templates/.prettierrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "singleQuote": true, - "trailingComma": "all", - "overrides": [ - { - "files": [ - "gulpfile.js", - "gulp/**/*.js", - "webpack.chisel.config.js" - ], - "options": { - "trailingComma": "es5" - } - } - ] -} diff --git a/generators/app/templates/.stylelintignore b/generators/app/templates/.stylelintignore deleted file mode 100644 index 691cb6b2..00000000 --- a/generators/app/templates/.stylelintignore +++ /dev/null @@ -1,2 +0,0 @@ -vendor -dist diff --git a/generators/app/templates/.stylelintrc.yml b/generators/app/templates/.stylelintrc.yml deleted file mode 100644 index 669979c7..00000000 --- a/generators/app/templates/.stylelintrc.yml +++ /dev/null @@ -1,91 +0,0 @@ -rules: - at-rule-name-case: lower - block-closing-brace-empty-line-before: never - block-closing-brace-newline-after: always - block-no-empty: true - block-opening-brace-newline-after: always-multi-line - block-opening-brace-newline-before: never-single-line - block-opening-brace-space-after: always-single-line - block-opening-brace-space-before: always - color-hex-case: lower - color-no-invalid-hex: true - comment-no-empty: true - comment-whitespace-inside: always - declaration-block-no-duplicate-properties: true - declaration-block-no-shorthand-property-overrides: true - declaration-block-semicolon-newline-after: always-multi-line - declaration-block-trailing-semicolon: always - declaration-colon-space-after: always-single-line - declaration-colon-space-before: never - font-family-name-quotes: always-where-recommended - function-comma-space-after: always-single-line - function-name-case: lower - function-parentheses-space-inside: never-single-line - function-url-quotes: always - function-whitespace-after: always - indentation: - - 2 - - ignore: inside-parens - length-zero-no-unit: - - true - - severity: error - max-empty-lines: 2 - max-nesting-depth: 3 - no-duplicate-selectors: true - no-eol-whitespace: true - no-extra-semicolons: true - no-invalid-double-slash-comments: true - no-missing-end-of-source-newline: true - number-leading-zero: - - always - - severity: error - number-no-trailing-zeros: true - property-case: - - lower - - severity: error - property-no-vendor-prefix: true - rule-empty-line-before: - - always - - except: - - first-nested - ignore: - - after-comment - selector-attribute-brackets-space-inside: never - selector-attribute-operator-space-after: never - selector-attribute-operator-space-before: never - selector-attribute-quotes: always - selector-class-pattern: ^(?:(?:a|o|c|u|t|s|is|has|_|js|qa)-)?[a-zA-Z0-9]+(?:-[a-zA-Z0-9\\@]+)*(?:__[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)?(?:--[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)?(?:\\[.+\\])?$ - selector-combinator-space-after: always - selector-combinator-space-before: always - selector-list-comma-space-after: always-single-line - selector-list-comma-space-before: never - selector-max-compound-selectors: 3 - selector-max-empty-lines: 0 - selector-max-id: - - 0 - - severity: error - selector-no-qualifying-type: - - true - - ignore: - - attribute - selector-pseudo-class-case: lower - selector-pseudo-class-no-unknown: true - selector-pseudo-element-case: lower - selector-type-case: - - lower - - severity: error - selector-type-no-unknown: true - string-no-newline: true - string-quotes: single - unit-case: - - lower - - severity: error - unit-no-unknown: true - value-keyword-case: - - lower - - ignoreKeywords: BlinkMacSystemFont - - severity: error - value-list-comma-space-after: always-single-line - value-list-comma-space-before: never - -defaultSeverity: warning diff --git a/generators/app/templates/LICENSE b/generators/app/templates/LICENSE deleted file mode 100644 index de06440e..00000000 --- a/generators/app/templates/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Xfive Pty Ltd. - -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. diff --git a/generators/app/templates/README.md b/generators/app/templates/README.md deleted file mode 100644 index d3a8e387..00000000 --- a/generators/app/templates/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# <%= name %> - -<%= name %> is a project created with Chisel. Please check out Chisel documentation at [https://www.getchisel.co/docs/](www.getchisel.co/docs/). - diff --git a/generators/app/templates/gitignore b/generators/app/templates/gitignore deleted file mode 100644 index b5a5e6d9..00000000 --- a/generators/app/templates/gitignore +++ /dev/null @@ -1,52 +0,0 @@ -# Numerous always-ignore extensions -*.diff -*.err -*.orig -*.log -*.rej -*.swo -*.swp -*.vi -*.7z -*.dmg -*.gz -*.iso -*.rar -*.tar -*~ - -# OS or Editor folders -.DS_Store -._* -Desktop.ini -Thumbs.db -.Spotlight-V100 -.Trashes -.cache -.project -.settings -.tmproj -*.esproj -nbproject -*.sublime-project -*.sublime-workspace -.idea - -# Folders to ignore -temp -tmp -.tmp -node_modules -src/bower_components<% if (projectType == 'fe') { %> -dist<% } %> - -# Others -npm-debug.log -.rbenv -.rbenv-version -.ruby-gemset -.ruby-version -.rvmrc -.vagrant -dev-vhost.conf -.yo-rc-local.json diff --git a/generators/app/templates/gulp/NameAllModulesPlugin.js b/generators/app/templates/gulp/NameAllModulesPlugin.js deleted file mode 100644 index 06f12d26..00000000 --- a/generators/app/templates/gulp/NameAllModulesPlugin.js +++ /dev/null @@ -1,21 +0,0 @@ -// Based on https://www.npmjs.com/package/name-all-modules-plugin @1.0.1 - -'use strict'; - -function NameAllModulesPlugin() {} - -NameAllModulesPlugin.prototype.apply = function nameAllModulesPlugin(compiler) { - compiler.plugin('compilation', compilation => { - compilation.plugin('before-module-ids', modules => { - modules.forEach(module => { - if (module.id !== null) { - return; - } - // eslint-disable-next-line no-param-reassign - module.id = module.identifier().replace(process.cwd(), ''); - }); - }); - }); -}; - -module.exports = NameAllModulesPlugin; diff --git a/generators/app/templates/gulp/helpers.js b/generators/app/templates/gulp/helpers.js deleted file mode 100644 index aeeec4db..00000000 --- a/generators/app/templates/gulp/helpers.js +++ /dev/null @@ -1,94 +0,0 @@ -'use strict'; - -const through = require('through2'); -const path = require('path'); -const fs = require('fs'); -const ignore = require('ignore'); - -const IGNORE_FILENAME = '.stylelintignore'; -const FILE_NOT_FOUND_ERROR_CODE = 'ENOENT'; - -let webpackManifestFile; - -module.exports = function helpers() { - return { - onError(error) { - console.error(error.message); - console.error(error.stack); - - this.emit('end'); - }, - removeSourceMap() { - return through.obj(function removeSourceMap(file, enc, callback) { - // eslint-disable-next-line no-param-reassign - delete file.sourceMap; - this.push(file); - callback(); - }); - }, - stealWebpackManifest() { - return through.obj(function stealWebpackManifest(file, enc, callback) { - if (file.basename === 'manifest.json') { - webpackManifestFile = file; - } else { - this.push(file); - } - callback(); - }); - }, - prepareWebpackManifest() { - const pathMap = {}; - return through.obj( - function createPathMap(file, enc, callback) { - this.push(file); - if (file.path && file.revOrigPath) { - pathMap[path.basename(file.revOrigPath)] = path.basename(file.path); - } - callback(); - }, - function prepareWebpackManifest(callback) { - if (!webpackManifestFile) { - callback(); - return; - } - const webpackManifest = JSON.parse(webpackManifestFile.contents); - Object.keys(webpackManifest).forEach(chunkName => { - const fileName = webpackManifest[chunkName]; - const newName = pathMap[fileName]; - if (!newName) { - throw new Error(`could not find generated file ${fileName}`); - } - webpackManifest[chunkName] = newName; - }); - webpackManifestFile.contents = Buffer.from( - JSON.stringify(webpackManifest) - ); - this.push(webpackManifestFile); - callback(); - } - ); - }, - prepareStylelintIgnorer() { - // Based on https://github.com/stylelint/stylelint/blob/234372e8c8bb5f9c35952728fd18f01f5fba8890/lib/standalone.js#L49-L61 - const absoluteIgnoreFilePath = path.resolve( - process.cwd(), - IGNORE_FILENAME - ); - let ignoreText = ''; - try { - ignoreText = fs.readFileSync(absoluteIgnoreFilePath, 'utf8'); - } catch (readError) { - if (readError.code !== FILE_NOT_FOUND_ERROR_CODE) throw readError; - } - return ignore().add(ignoreText); - }, - skipIgnoredFiles(ignorer) { - return through.obj(function stealWebpackManifest(file, enc, callback) { - if (!ignorer.ignores(path.relative(process.cwd(), file.path))) { - this.push(file); - } - callback(); - }); - }, - }; -}; diff --git a/generators/app/templates/gulp/prepareConfig.js b/generators/app/templates/gulp/prepareConfig.js deleted file mode 100644 index 875fdf9d..00000000 --- a/generators/app/templates/gulp/prepareConfig.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -const path = require('path'); -<% if (projectType == 'wp-with-fe') { %> -// WordPress destination paths should be inside WP template -function prepareWpConfig(config) { - const { dest, src } = config; - const wordpressTemplatePath = path.join( - dest.wordpress, - 'wp-content/themes', - dest.wordpressTheme - ); - - dest.base = path.join( - dest.wordpress, - 'wp-content/themes', - dest.wordpressTheme, - dest.base - ); - - src.templatesWatch = [ - path.join(wordpressTemplatePath, src.templatesPath, '**/*.twig'), - path.join(wordpressTemplatePath, '**/*.php'), - ]; - - return config; -} -<% } %> -module.exports = function prepareConfig(config) { - const { <% if (projectType != 'wp-with-fe') { %>templatesWatch, <% } %>templatesBuild, base } = config.src; -<% if (projectType == 'wp-with-fe') { %> - Object.assign(config, prepareWpConfig(config));<% } else { %> - templatesWatch[0] = path.join(base, templatesWatch[0]); - templatesWatch[1] = path.join(base, templatesWatch[1]);<% } %> - templatesBuild[0] = path.join(base, templatesBuild[0]); - - return config; -}; diff --git a/generators/app/templates/gulp/tasks/assets.js b/generators/app/templates/gulp/tasks/assets.js deleted file mode 100644 index 17e55384..00000000 --- a/generators/app/templates/gulp/tasks/assets.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -const path = require('path'); - -module.exports = function assetsTask(gulp, plugins, config) { - const { dest, src } = config; - - gulp.task('assets-clean', () => - plugins.del([path.join(dest.base, dest.assets)]) - ); - - gulp.task('assets-build', ['assets-clean'], () => - gulp - .src([path.join(src.base, src.assets), '!**/.keep'], { - base: src.base, - }) - .pipe(gulp.dest(dest.base)) - .on('end', plugins.browserSync.reload) - ); - - gulp.task('assets-watch', () => - gulp - .src([path.join(src.base, src.assets), '!**/.keep'], { - base: src.base, - }) - .pipe(plugins.newer(dest.base)) - .pipe(gulp.dest(dest.base)) - .on('end', plugins.browserSync.reload) - ); -}; diff --git a/generators/app/templates/gulp/tasks/build.js b/generators/app/templates/gulp/tasks/build.js deleted file mode 100644 index b73a975e..00000000 --- a/generators/app/templates/gulp/tasks/build.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -module.exports = function buildTask(gulp, plugins, config) { - gulp.task('clean', () => plugins.del([config.dest.base])); -<% if(projectType == 'wp-with-fe') { %> - gulp.task( - 'build', - plugins.sequence( - 'clean', - 'styles-build', - 'lint-js', - 'scripts-build', - 'vendor-build' - ) - );<% } else { %> - gulp.task( - 'build', - plugins.sequence( - 'clean', - 'styles-build', - 'lint-js', - 'scripts-build', - 'vendor-build', - 'templates-build', - 'validate-html' - ) - );<% } %> -}; diff --git a/generators/app/templates/gulp/tasks/lint.js b/generators/app/templates/gulp/tasks/lint.js deleted file mode 100644 index 7f29f648..00000000 --- a/generators/app/templates/gulp/tasks/lint.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -const path = require('path'); - -module.exports = function lintTask(gulp, plugins, config, helpers) { - const { src, dest } = config; - const ignorer = helpers.prepareStylelintIgnorer(); - - gulp.task('lint-js', () => - gulp - .src(path.join(src.base, src.scripts)) - .pipe(plugins.eslint()) - .pipe(plugins.eslint.format()) - .pipe(plugins.eslint.failAfterError()) - ); - - gulp.task('lint-css', () => - gulp - .src(path.join(src.base, src.styles)) - .pipe(helpers.skipIgnoredFiles(ignorer)) - .pipe( - plugins.stylelint({ - reporters: [{ formatter: 'string', console: true }], - }) - ) - ); - - gulp.task('validate-html', () => - gulp - .src(`${dest.base}/**/*.html`) - .pipe(plugins.htmlhint('.htmlhintrc')) - .pipe(plugins.htmlhint.reporter()) - ); -}; diff --git a/generators/app/templates/gulp/tasks/report.js b/generators/app/templates/gulp/tasks/report.js deleted file mode 100644 index 5b1ffdbe..00000000 --- a/generators/app/templates/gulp/tasks/report.js +++ /dev/null @@ -1,231 +0,0 @@ -'use strict'; - -const path = require('path'); -const through = require('through2'); -const zlib = require('zlib'); -const http = require('http'); -const fs = require('fs'); -const explore = require('source-map-explorer'); -const os = require('os'); -const opn = require('opn'); - -const MEBIBYTE = 1024 * 1024; - -const files = {}; -const exploredCache = new Map(); - -function listFiles({ destBase }) { - return through.obj(function getInfoAboutFile(file, enc, callback) { - const relativePath = path.relative(destBase, file.path); - const bufferContents = Buffer.isBuffer(file.contents) - ? file.contents - : Buffer.from(file.contents); - - files[relativePath] = { - path: file.path, - hasSourceMap: false, - size: bufferContents.length, - sizeGzipped: -1, - notes: [], - }; - - zlib.gzip(bufferContents, (err, zipped) => { - if (err) { - throw err; - } - - files[relativePath].sizeGzipped = zipped.length; - callback(); - }); - - this.push(file); - }); -} - -function markSouceMaps({ destBase }) { - return through.obj((file, enc, callback) => { - const relativePath = path.relative(destBase, file.path); - - if (!files[relativePath]) { - return; - } - - if (file.sourceMap && file.sourceMap.preExistingComment) { - if (file.sourceMap.sources.length > 1) { - files[relativePath].hasSourceMap = true; - } else { - files[relativePath].notes.push('only one file'); - } - } - - callback(); - }); -} - -function escapeHTML(s) { - return s - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(//g, '>'); -} - -function hasFile(resolvedPath) { - if (!resolvedPath.endsWith('.html')) { - return false; - } - - const sourcePath = resolvedPath.slice(0, -5); - - return fs.existsSync(sourcePath); -} - -function formatSize(n) { - if (n < 1024) { - return `${n} B`; - } else if (n < MEBIBYTE) { - return `${(n / 1024).toFixed(2)} KiB`; - } - return `${(n / MEBIBYTE).toFixed(2)} MiB`; -} - -// https://github.com/shakyShane/dev-ip/blob/9f5a1b6154a16db88ca276c08426867c55924e61/lib/dev-ip.js -function getIp() { - const networkInterfaces = os.networkInterfaces(); - const matches = []; - - Object.keys(networkInterfaces).forEach(item => { - networkInterfaces[item].forEach(address => { - if (address.internal === false && address.family === 'IPv4') { - matches.push(address.address); - } - }); - }); - - return matches; -} - -function startServer({ destBase }) { - const root = path.resolve(destBase); - const server = http.createServer((req, res) => { - const { url } = req; - const resolvedPath = path.resolve(root, path.join(root, url)); - - if (!resolvedPath.startsWith(root)) { - res.writeHead(403); - res.end(); - return; - } - - if (url === '/') { - res.writeHead(200, { - 'Content-Type': 'text/html; charset=utf-8', - }); - - res.write( - `Chisel SourceMap Reports - - ` - ); - - const links = Object.keys(files) - .sort() - .map(link => { - const file = files[link]; - const escapedLink = escapeHTML(link); - return ` - - - - - - - `; - }); - - res.write(links.join('')); - - res.write('
    NameSizeGzipped sizeNotes
    ${ - file.hasSourceMap - ? `${escapedLink}` - : escapedLink - }${formatSize(file.size)}${formatSize(file.sizeGzipped)}${escapeHTML(file.notes.join(', '))}
    '); - - res.end(); - } else if (hasFile(resolvedPath)) { - const sourcePath = resolvedPath.slice(0, -5); - let explored; - - if (!exploredCache.has(sourcePath)) { - try { - explored = explore(sourcePath, { html: true }); - exploredCache.set(sourcePath, explored); - } catch (e) { - res.writeHead(500, { - 'Content-Type': 'text/plain; charset=utf-8', - }); - res.write('Error when generating report:\n'); - res.end(e.message); - return; - } - } else { - explored = exploredCache.get(sourcePath); - } - - res.writeHead(200, { - 'Content-Type': 'text/html; charset=utf-8', - }); - - res.end(explored.html); - } else { - res.writeHead(404); - res.end(); - } - }); - - server.listen(err => { - if (err) { - throw err; - } - - const { port } = server.address(); - - const urls = ['localhost', ...getIp()].map( - host => `http://${host}:${port}` - ); - - console.log(`Bundle Report is started at ${urls.join(', ')}`); - console.log('Use Ctrl+C to close it'); - - opn(urls[0]).catch(() => { - console.log( - 'Failed to open browser. Please open one of above adressess manually' - ); - }); - }); -} - -module.exports = function reportTaskCreator(gulp, plugins, config) { - const { dest, src } = config; - - gulp.task('report-prepare', () => - gulp - .src([ - path.join(dest.base, dest.scripts, '**/*'), - path.join(dest.base, dest.styles, '**/*'), - '!**/*.map', - ]) - .pipe(listFiles({ destBase: dest.base })) - .pipe(plugins.sourcemaps.init({ loadMaps: true })) - .pipe(markSouceMaps({ destBase: dest.base })) - ); - - gulp.task( - 'report', - ['report-prepare'], - () => - new Promise(() => { - startServer({ destBase: dest.base }); - }) - ); -}; diff --git a/generators/app/templates/gulp/tasks/scripts.js b/generators/app/templates/gulp/tasks/scripts.js deleted file mode 100644 index cc2b348b..00000000 --- a/generators/app/templates/gulp/tasks/scripts.js +++ /dev/null @@ -1,82 +0,0 @@ -'use strict'; - -const path = require('path'); -const webpack = require('webpack'); -const webpackConfigGenerator = require('../../webpack.chisel.config.js'); - -let webpackConfig; - -module.exports = function scriptsTask(gulp, plugins, config, helpers) { - function webpackDone(isDev) { - // Based on https://github.com/webpack/webpack-cli/blob/1eb340f4f32bb5303de9355d51e0bcf712755c0b/bin/webpack.js - return (err, stats) => { - if (err) { - console.error(err.stack || err); - if (err.details) { - console.error(err.details); - } - process.exit(1); // eslint-disable-line - } - let statsConfig = webpackConfig.stats || 'normal'; - if (typeof statsConfig === 'string') { - statsConfig = stats.constructor.presetToOptions(statsConfig); - Object.assign(statsConfig, { colors: true }); - } - const statsString = stats.toString(statsConfig); - console.log(statsString); - if (isDev) {<% if(projectType == 'fe') { %> - if (statsString.includes('manifest-dev.json')) { - gulp.start('templates-watch'); - } else { - plugins.browserSync.reload(); - }<% } else { %> - plugins.browserSync.reload();<% } %> - } - }; - } - - gulp.task('scripts-load-config', () => - webpackConfigGenerator().then(loadedConfig => { - webpackConfig = loadedConfig; - }) - ); - - gulp.task('scripts-watch', ['scripts-load-config'], () => { - gulp - .src(path.join(config.src.base, config.src.scriptsMain)) - .pipe(plugins.vinylNamed()) - .pipe(plugins.webpackStream(webpackConfig, webpack, webpackDone(true))) - .pipe(gulp.dest(path.join(config.dest.base, config.dest.scripts))); - }); - - gulp.task('scripts-build', ['scripts-load-config'], () => - gulp - .src(path.join(config.src.base, config.src.scriptsMain)) - .pipe(plugins.vinylNamed()) - .pipe(plugins.webpackStream(webpackConfig, webpack, webpackDone(false))) - .pipe(helpers.stealWebpackManifest()) - .pipe(plugins.sourcemaps.init({ loadMaps: true })) - .pipe( - plugins.mirror( - plugins.uglifyEs.default(), - plugins.multipipe( - helpers.removeSourceMap(), - plugins.rename({ suffix: '.full' }) - ) - ) - ) - .pipe(plugins.sourcemaps.write('./')) - .pipe(plugins.rev()) - .pipe(plugins.revReplace()) - .pipe(helpers.prepareWebpackManifest()) - .pipe(gulp.dest(path.join(config.dest.base, config.dest.scripts))) - .pipe( - plugins.rev.manifest({ - path: path.join(config.dest.base, config.dest.revManifest), - base: config.dest.base, - merge: true, - }) - ) - .pipe(gulp.dest(config.dest.base)) - ); -}; diff --git a/generators/app/templates/gulp/tasks/serve.js b/generators/app/templates/gulp/tasks/serve.js deleted file mode 100644 index 034b3792..00000000 --- a/generators/app/templates/gulp/tasks/serve.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -const path = require('path'); - -module.exports = function serveTask( - gulp, - plugins, - config, - helpers, - generatorConfig // eslint-disable-line no-unused-vars -) { - const { base, styles, vendorConfig, assets, templatesWatch } = config.src;<% if(projectType == 'wp-with-fe') { %> - const startTasks = ['styles-watch', 'assets-watch', 'vendor-watch'];<% } else { %> - const startTasks = ['styles-watch', 'assets-watch', 'vendor-watch']; - - gulp.task('vendor-rebuild-template', ['vendor-watch'], () => { - gulp.start('templates-watch'); - });<% } %> - - gulp.task('serve', startTasks, () => {<% if(projectType == 'wp-with-fe') { %> - const name = generatorConfig.nameSlug; - const browserSyncConfig = { - proxy: { - target: generatorConfig.proxyTarget || `${name}.test`, - reqHeaders: { - 'x-chisel-proxy': '1', - }, - }, - ghostMode: false, - online: true, - };<% } else { %> - gulp.start('templates-watch'); - - const browserSyncConfig = { - server: './', - ghostMode: false, - online: true, - };<% } %> - - plugins.browserSync.init(browserSyncConfig); - - gulp.watch(path.join(base, styles), ['styles-watch']);<% if(projectType == 'fe') { %> - gulp.watch(templatesWatch, ['templates-watch']); - gulp.watch(path.join(base, vendorConfig), ['vendor-rebuild-template']);<% } %> - gulp.watch(path.join(base, assets), ['assets-watch']);<% if(projectType == 'wp-with-fe') { %> - gulp.watch(templatesWatch).on('change', plugins.browserSync.reload); - gulp.watch(path.join(base, vendorConfig), () => { - gulp.start('vendor-watch', () => { - plugins.browserSync.reload(); - }); - });<% } %> - }); -}; diff --git a/generators/app/templates/gulp/tasks/styles.js b/generators/app/templates/gulp/tasks/styles.js deleted file mode 100644 index bff15216..00000000 --- a/generators/app/templates/gulp/tasks/styles.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict'; - -const path = require('path'); - -module.exports = function stylesTask(gulp, plugins, config, helpers) { - // eslint-disable-next-line global-require - const postcssPlugins = [require('autoprefixer')()]; - - gulp.task('styles-watch', () => - gulp - .src(path.join(config.src.base, config.src.stylesMain)) - .pipe(plugins.sourcemaps.init()) - .pipe(plugins.plumber(helpers.onError)) - .pipe(plugins.sassGlob()) - .pipe( - plugins.sass({ - outputStyle: 'expanded', - includePaths: ['node_modules'], - }) - ) - .pipe(plugins.postcss(postcssPlugins)) - .pipe(plugins.sourcemaps.write('./')) - .pipe(gulp.dest(path.join(config.dest.base, config.dest.styles))) - .pipe(plugins.browserSync.stream({ match: '**/*.css' })) - ); - - gulp.task('styles-build', ['assets-build', 'lint-css'], () => - gulp - .src(path.join(config.src.base, config.src.stylesMain)) - .pipe(plugins.sourcemaps.init()) - .pipe(plugins.plumber(helpers.onError)) - .pipe(plugins.sassGlob()) - .pipe( - plugins.sass({ - outputStyle: 'expanded', - includePaths: ['node_modules'], - }) - ) - .pipe(plugins.postcss(postcssPlugins)) - .pipe( - plugins.mirror( - plugins.cleanCss(), - plugins.multipipe( - helpers.removeSourceMap(), - plugins.rename({ - suffix: '.full', - }) - ) - ) - ) - .pipe(plugins.sourcemaps.write('./')) - .pipe(plugins.rev()) - .pipe(plugins.revReplace()) - .pipe(gulp.dest(path.join(config.dest.base, config.dest.styles))) - .pipe( - plugins.rev.manifest({ - path: path.join(config.dest.base, config.dest.revManifest), - base: config.dest.base, - }) - ) - .pipe(gulp.dest(config.dest.base)) - .pipe(plugins.browserSync.stream()) - ); -}; diff --git a/generators/app/templates/gulp/tasks/templates.js b/generators/app/templates/gulp/tasks/templates.js deleted file mode 100644 index a28ce3b4..00000000 --- a/generators/app/templates/gulp/tasks/templates.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const templatesFunctions = require('../templatesFunctions'); - -module.exports = function templatesTask(gulp, plugins, config, helpers) { - const { src, dest } = config; - - function getTemplateInputData(file) { - let data; - try { - data = JSON.parse( - fs.readFileSync( - path.join(src.base, src.dataPath, `${path.basename(file.path)}.json`) - ) - ); - } catch (error) { - // Mute errors related to missing input data & log all other - if (error.code !== 'ENOENT') { - console.error(error); - } - } - return data || {}; - } - - function templates(manifest) { - const buildIncludedGlobs = src.templatesBuild || ''; - const buildIncludedFilter = plugins.filter(buildIncludedGlobs); - - return gulp - .src(src.templatesWatch) - .on('end', plugins.browserSync.reload) - .pipe(plugins.plumber(helpers.onError)) - .pipe(buildIncludedFilter) - .pipe(plugins.data(getTemplateInputData)) - .pipe( - plugins.twig({ - base: path.join(src.base, src.templatesPath), - functions: templatesFunctions({ - config, - manifest, - }), - errorLogToConsole: true, - }) - ) - .pipe(plugins.prettify({ indent_size: 2, preserve_newlines: true })) - .pipe(gulp.dest(dest.base)); - } - - gulp.task('templates-watch', () => templates()); - - gulp.task('templates-build', () => { - const manifest = JSON.parse( - fs.readFileSync(path.join(dest.base, dest.revManifest), 'utf8') - ); - return templates(manifest); - }); -}; diff --git a/generators/app/templates/gulp/tasks/vendor.js b/generators/app/templates/gulp/tasks/vendor.js deleted file mode 100644 index 8b9d51f8..00000000 --- a/generators/app/templates/gulp/tasks/vendor.js +++ /dev/null @@ -1,138 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const chalk = require('chalk'); -const through2 = require('through2'); - -function monitorFileList(fileList) { - const readFiles = []; - return through2.obj( - (file, enc, cb) => { - readFiles.push(file.path); - cb(null, file); - }, - cb => { - if (fileList.resolved.length !== readFiles.length) { - const missingFiles = []; - fileList.resolved.forEach((val, index) => { - if (readFiles.indexOf(val) === -1) { - missingFiles.push(`${fileList.parsed[index]} resolved to ${val}`); - } - }); - cb( - new Error( - ` - ${chalk.red('It looks like some files from vendor.json has not been found:')} - ${missingFiles.join(',\n')} - ` - ) - ); - return; - } - cb(); - } - ); -} - -module.exports = function bundleVendorTask(gulp, plugins, config, helpers) { - const fileListPath = path.join(config.src.base, config.src.vendorConfig); - function resolveFileList(fileList) { - const resolvedFileList = fileList.slice(); - for (let i = 0; i < resolvedFileList.length; i += 1) { - const val = resolvedFileList[i]; - if (typeof val === 'string' && val.length > 1) { - if (val[0] === '/') { - resolvedFileList[i] = val.substr(1); - } else { - resolvedFileList[i] = path.join( - config.src.base, - config.src.vendorBase, - resolvedFileList[i] - ); - } - resolvedFileList[i] = path.resolve(process.cwd(), resolvedFileList[i]); - } - } - return resolvedFileList; - } - function getFileList() { - let fileList = ''; - let parsedFileList; - - try { - fileList = fs.readFileSync(fileListPath, 'utf8'); - } catch (error) { - throw new Error( - chalk.red( - "Couldn't open vendor.json. Please make sure it's present in your /src/scripts directory!" - ) - ); - } - - try { - parsedFileList = JSON.parse(fileList); - } catch (error) { - throw new Error(chalk.red(error)); - } - - if (!Array.isArray(parsedFileList)) { - throw new Error(chalk.red('vendor.json is not Array')); - } - - return { - parsed: parsedFileList, - resolved: resolveFileList(parsedFileList), - }; - } - - gulp.task('vendor-watch', () => { - const fileList = getFileList(); - - if (fileList.resolved.length) { - return gulp - .src(fileList.resolved) - .pipe(plugins.plumber(helpers.onError)) - .pipe(monitorFileList(fileList)) - .pipe(plugins.sourcemaps.init()) - .pipe(plugins.concat('vendor.js')) - .pipe(plugins.sourcemaps.write('./')) - .pipe(gulp.dest(path.join(config.dest.base, config.dest.scripts))); - } - - return plugins.del([ - path.join(config.dest.base, config.dest.scripts, 'vendor.js'), - ]); - }); - - gulp.task('vendor-build', () => { - const fileList = getFileList(); - - return gulp - .src(fileList.resolved) - .pipe(monitorFileList(fileList)) - .pipe(plugins.sourcemaps.init()) - .pipe(plugins.concat('vendor.js')) - .pipe( - plugins.mirror( - plugins.uglifyEs.default(), - plugins.multipipe( - helpers.removeSourceMap(), - plugins.rename({ suffix: '.full' }) - ) - ) - ) - .pipe(plugins.sourcemaps.write('./')) - .pipe(plugins.rev()) - .pipe(plugins.revReplace()) - .pipe(gulp.dest(path.join(config.dest.base, config.dest.scripts))) - .pipe( - plugins.rev.manifest({ - path: path.join(config.dest.base, config.dest.revManifest), - base: config.dest.base, - merge: true, - }) - ) - .pipe(gulp.dest(config.dest.base)); - }); -}; diff --git a/generators/app/templates/gulp/templatesFunctions.js b/generators/app/templates/gulp/templatesFunctions.js deleted file mode 100644 index 74d7dde5..00000000 --- a/generators/app/templates/gulp/templatesFunctions.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict'; - -const path = require('path'); -const fs = require('fs'); - -module.exports = function templateFunctions(data = {}) { - const webpackManifestPath = path.join( - data.config.dest.base, - data.config.dest.scripts, - `manifest${!data.manifest ? '-dev' : ''}.json` - ); - - return [ - { - name: 'revisionedPath', - func(fullPath) { - const pathToFile = path.basename(fullPath); - if (data.manifest) { - if (!data.manifest[pathToFile]) { - throw new Error(`File ${pathToFile} seems to not be revisioned`); - } - return path.join(path.dirname(fullPath), data.manifest[pathToFile]); - } - - return fullPath; - }, - }, - { - name: 'assetPath', - func(assetPath) { - return path.join(data.config.dest.assets, assetPath); - }, - }, - { - name: 'className', - func(...args) { - const name = args.shift(); - if (typeof name !== 'string' || name === '') { - return ''; - } - const classes = [name]; - let el; - for (let i = 0; i < args.length; i += 1) { - el = args[i]; - if (el && typeof el === 'string') { - classes.push(`${name}--${el}`); - } - } - return classes.join(' '); - }, - }, - { - name: 'hasVendor', - func() { - if (!data.manifest) { - return fs.existsSync( - path.join( - data.config.dest.base, - data.config.dest.scripts, - 'vendor.js' - ) - ); - } - - return !!data.manifest['vendor.js']; - }, - }, - { - name: 'getScriptsPath', - func() { - return 'scripts/'; - }, - }, - { - name: 'hasWebpackManifest', - func() { - return fs.existsSync(webpackManifestPath); - }, - }, - { - name: 'getWebpackManifest', - func() { - return fs.readFileSync(webpackManifestPath, 'utf8'); - }, - }, - ]; -}; diff --git a/generators/app/templates/gulpfile.js b/generators/app/templates/gulpfile.js deleted file mode 100644 index 1c3e243d..00000000 --- a/generators/app/templates/gulpfile.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -const gulp = require('gulp'); -const _ = require('lodash'); -const plugins = require('gulp-load-plugins')({ - pattern: '*', - rename: { 'stylelint': 'stylelintLib', 'eslint': 'eslintLib' }, -}); -let config = require('./package.json').chisel; -const generatorConfig = require('./.yo-rc.json')['generator-chisel'].config; -const helpers = require('./gulp/helpers')(gulp, plugins, config); -config = require('./gulp/prepareConfig')(config); - -try { - // eslint-disable-next-line global-require, import/no-unresolved - const generatorConfigLocal = require('./.yo-rc-local.json')[ - 'generator-chisel' - ].config; - _.merge(generatorConfig, generatorConfigLocal); -} catch (e) { - // Do nothing -} - -/** - * Batch tasks loader - */ -plugins.glob.sync('gulp/tasks/*').forEach(path => { - const fixedPath = path.replace('gulp/', './gulp/'); - // eslint-disable-next-line global-require, import/no-dynamic-require - require(fixedPath)(gulp, plugins, config, helpers, generatorConfig); -}); - -gulp.task('default', ['serve', 'scripts-watch']); - -gulp.once('task_start', task => { - process.env.NODE_ENV = task.task === 'build' ? 'production' : 'development'; -}); diff --git a/generators/app/templates/index/project-index.html b/generators/app/templates/index/project-index.html deleted file mode 100644 index 2896834c..00000000 --- a/generators/app/templates/index/project-index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - Project Index - <%= name %> - - - - - -
    -

    <%= name %>

    -

    Project index

    - -
    -
    -

    This project is powered by Chisel, a development framework for creating easy to maintain and fast front-end templates.

    -

    Pages

    - - <%% if (!locals.pages) { %> -
    - To add more pages run: -
    yo chisel:page 'My Awesome Page'
    -
    - <%% } %> -
    -
    - - -
    -
    -

    Documentation

    -

    Chisel supports modern web development workflows and helps developers to create a code base which is easy to maintain.

    -

    For detailed information how Chisel works, please check out www.getchisel.co.

    -

    If you are just looking for your deliverable files, they are located inside the dist folder. No files found outside of that folder should usually be uploaded to your server (e.g. this file).

    -
    -
    - -
    - - - diff --git a/generators/app/templates/package.json b/generators/app/templates/package.json deleted file mode 100644 index c84dee2a..00000000 --- a/generators/app/templates/package.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "name": "<%= nameSlug %>", - "version": "0.0.1", - "author": "<%= author %>", - "description": "<%= nameSlug %>", - "scripts": { - "build": "gulp build", - "build-report": "gulp build && gulp report", - "dev": "gulp", - "lint": "gulp lint-js && gulp lint-css", - "start": "gulp", - "watch": "gulp" - }, - "chisel": { - "src": { - "assets": "assets/**/*", - "app": "scripts/app.js", - "base": "src", - "dataPath": "data/", - "scripts": "scripts/**/*", - "scriptsMain": "scripts/*.js", - "styles": "styles/**/*", - "stylesMain": "styles/*.scss", - "templatesBuild": [ - "templates/*.{twig,html}" - ], - "templatesWatch": [ - "templates/**/*.{twig,html}", - "data/**.json" - ], - "templatesPath": "templates/", - "vendorBase": "scripts/vendor", - "vendorConfig": "scripts/vendor.json" - }, - "dest": {<% if (projectType == 'wp-with-fe') { %> - "wordpress": "wp", - "wordpressTheme": "<%= nameSlug %>-chisel",<% } %> - "assets": "assets", - "base": "dist", - "revManifest": "rev-manifest.json", - "scripts": "scripts", - "styles": "styles" - } - }, - "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "autoprefixer": "^8.1", - "babel-loader": "^8.0.0", - "browser-sync": "^2.23.6", - "chalk": "^2.3.2", - "chunk-manifest-webpack-plugin": "^1.1.2", - "del": "^3.0.0", - "eslint": "^5.16.0", - "eslint-config-chisel": "^2.0.0", - "glob": "^7.1.2", - "gulp": "^3.9.1", - "gulp-clean-css": "^3.9.3", - "gulp-cli": "^1.3.0", - "gulp-concat": "^2.6.1", - "gulp-data": "^1.3.1", - "gulp-debug": "^3.2.0", - "gulp-eslint": "^5.0.0", - "gulp-filter": "^5.1.0", - "gulp-htmlhint": "^2.1.0", - "gulp-load-plugins": "^1.5.0", - "gulp-mirror": "^1.0.0", - "gulp-newer": "^1.4.0", - "gulp-plumber": "^1.2.0", - "gulp-postcss": "^7.0.1", - "gulp-prettify": "^0.5.0", - "gulp-rename": "^1.2.2", - "gulp-rev": "^8.1.1", - "gulp-rev-replace": "^0.4.4", - "gulp-sass": "^3.2.0", - "gulp-sass-glob": "^1.0.8", - "gulp-sequence": "^1.0.0", - "gulp-sourcemaps": "^2.6.4", - "gulp-stylelint": "^7.0.0",<% if (projectType == 'fe') { %> - "gulp-twig": "^v1.2.0",<% } %> - "gulp-uglify-es": "^1.0.4", - "ignore": "^3.3.8", - "lodash": "^4.17.5", - "multipipe": "^2.0.3", - "opn": "^5.3.0", - "pre-commit": "^1.2.2", - "prettier": "1.14.3", - "source-map-explorer": "^1.6.0", - "stylelint": "^9.2.1", - "through2": "^2.0.3", - "vinyl-named": "^1.1.0", - "webpack": "^3.11.0", - "webpack-stream": "^4.0.2" - }, - "dependencies": {<% if (has_jquery) { %> - "jquery": "^3.3.1",<% } %> - "normalize-scss": "^7.0.1" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0" - }, - "pre-commit": [ - "lint" - ] -} diff --git a/generators/app/templates/scripts/vendor.json b/generators/app/templates/scripts/vendor.json deleted file mode 100644 index 229bfcdb..00000000 --- a/generators/app/templates/scripts/vendor.json +++ /dev/null @@ -1,3 +0,0 @@ -<% if (has_jquery_vendor_config) { %>[ - "/node_modules/jquery/dist/jquery.js" -]<% } else { %>[]<% } %> diff --git a/generators/app/templates/templates/twig/components/footer.twig b/generators/app/templates/templates/twig/components/footer.twig deleted file mode 100644 index 8e397d12..00000000 --- a/generators/app/templates/templates/twig/components/footer.twig +++ /dev/null @@ -1,3 +0,0 @@ -
    -

    Copyright © {{"now"|date('Y')}} <%= name %>

    -
    diff --git a/generators/app/templates/templates/twig/layouts/base.twig b/generators/app/templates/templates/twig/layouts/base.twig deleted file mode 100644 index 0b99ac3b..00000000 --- a/generators/app/templates/templates/twig/layouts/base.twig +++ /dev/null @@ -1,46 +0,0 @@ - - - - <% if (projectType == 'fe') { %> - {{ pageName }} - <%= name %><% } %> - - - - {% if hasVendor() %} - - {% endif %} - {% if hasWebpackManifest() %} - - {% endif %} - -<% if (projectType == 'wp-with-fe') { %> - {{function('wp_head')}}<% } %> - {% block head %} - {% endblock %} - - - - {% block header %} - {% include 'components/header.twig' %} - {% endblock %} - <% if (projectType == 'wp-with-fe') { %> - {% include 'components/main-nav.twig' %}<% } %> - -
    - {% block content %} - Sorry, no content - {% endblock %} -
    - - {% block footer %} - {% include 'components/footer.twig' %} - {% endblock %}<% if (projectType == 'wp-with-fe') { %> - {{ function('wp_footer') }}<% } %> - - diff --git a/generators/app/templates/webpack.chisel.config.js b/generators/app/templates/webpack.chisel.config.js deleted file mode 100644 index 6a9aa0be..00000000 --- a/generators/app/templates/webpack.chisel.config.js +++ /dev/null @@ -1,63 +0,0 @@ -// This webpack configuration is meant to be used by Chisel build scripts. -// It should not be used with Webpack CLI. - -'use strict'; - -const webpack = require('webpack'); -const path = require('path'); -const ChunkManifestPlugin = require('chunk-manifest-webpack-plugin'); -const NameAllModulesPlugin = require('./gulp/NameAllModulesPlugin'); - -function createConfig(cb) { - const isDevelopment = process.env.NODE_ENV === 'development'; - const isProduction = process.env.NODE_ENV === 'production'; - - const config = { - output: { - filename: '[id].bundle.js', - chunkFilename: '[id].chunk.js', - }, - externals: {<% if (has_jquery_vendor_config) { %> - jquery: 'window.jQuery', - <% } %>}, - devtool: 'inline-source-map', - stats: { colors: true, modules: false }, - watch: isDevelopment, - module: { - rules: [ - { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' }, - ], - }, - node: false, - plugins: [ - new webpack.HashedModuleIdsPlugin(), - new webpack.NamedModulesPlugin(), - new webpack.NamedChunksPlugin(chunk => { - if (chunk.name) { - return chunk.name; - } - return `${chunk - .mapModules(module => { - const file = path.relative(module.context, module.request); - return `${path.basename(file, path.extname(file))}-${module.id}`; - }) - .join('_')}.c`; - }), - new NameAllModulesPlugin(), - new ChunkManifestPlugin({ - filename: `manifest${!isProduction ? '-dev' : ''}.json`, - }), - new webpack.optimize.ModuleConcatenationPlugin(), - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), - }), - ], - }; - - cb(config); -} - -module.exports = () => - new Promise(resolve => { - createConfig(resolve); - }); diff --git a/generators/app/utils/generator.js b/generators/app/utils/generator.js deleted file mode 100644 index 46f13a42..00000000 --- a/generators/app/utils/generator.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; - -var helpers = { - copy: function (template, destination, context) { - if (context && Object.keys(context).length) { - this.fs.copyTpl(this.templatePath(template), this.destinationPath(destination), context); - } else { - this.fs.copy(this.templatePath(template), this.destinationPath(destination)); - } - } -}; - -var Generator = { - config: function () { - this.config.set('config', this.prompts); - }, - - dotfiles: function () { - helpers.copy.call(this, '.*', '', this.prompts); - helpers.copy.call(this, 'gitignore', '.gitignore', this.prompts); - helpers.copy.call(this, 'assets/**/.*', 'src/assets/'); - }, - - appfiles: function () { - helpers.copy.call(this, 'package.json', 'package.json', this.prompts); - helpers.copy.call(this, 'webpack.chisel.config.js', 'webpack.chisel.config.js', this.prompts); - }, - - gulpfiles: function () { - helpers.copy.call(this, 'gulpfile.js', 'gulpfile.js', this.prompts); - helpers.copy.call(this, 'gulp/**/*', 'gulp/', this.prompts); - helpers.copy.call(this, '.babelrc', '.babelrc'); - }, - - projectInfo: function () { - if(this.prompts.projectType != 'wp-with-fe') { - helpers.copy.call(this, 'index/project-index.html', 'index/project-index.html', this.prompts); - helpers.copy.call(this, 'index/css/main.css', 'index/css/main.css'); - this.fs.copyTpl(this.destinationPath('index/project-index.html'), - this.destinationPath('index.html'), this.prompts); - } - helpers.copy.call(this, 'README.md', 'README.md', this.prompts); - }, - - templates: function () { - var base = 'src/templates/'; - if(this.prompts.projectType == 'wp-with-fe') { - base = 'wp/wp-content/themes/'+this.prompts.nameSlug+'-chisel/templates/'; - } - helpers.copy.call(this, 'templates/twig/**/*', base, this.prompts); - }, - - stylesheets: function () { - helpers.copy.call(this, 'styles/vendor/.keep', 'src/styles/vendor/.keep'); - helpers.copy.call(this, 'styles/itcss/**/*', 'src/styles/', this.prompts); - }, - - javascripts: function () { - helpers.copy.call(this, 'scripts/vendor/.keep', 'src/scripts/vendor/.keep'); - helpers.copy.call(this, 'scripts/webpack/**/*', 'src/scripts/', this.prompts); - helpers.copy.call(this, 'scripts/vendor.json', 'src/scripts/vendor.json', this.prompts); - } -}; - -module.exports = Generator; diff --git a/generators/app/utils/index.js b/generators/app/utils/index.js deleted file mode 100644 index b7d5bedd..00000000 --- a/generators/app/utils/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -var Utils = { - prompts: require('./prompts'), - generator: require('./generator') -}; - -module.exports = Utils; diff --git a/generators/app/utils/prompts.js b/generators/app/utils/prompts.js deleted file mode 100644 index f54cf31e..00000000 --- a/generators/app/utils/prompts.js +++ /dev/null @@ -1,129 +0,0 @@ -'use strict'; - -var _ = require('lodash'); -var path = require('path'); -var limax = require('limax'); -const cp = require('child_process'); -const updateNotifier = require('update-notifier'); -const packageJson = require('../../../package.json'); -let hasUpdate = false; - -function slug(str) { - return limax(str, {separateNumbers: false}).replace(/[^a-z0-9-]/g, '-'); -} - -const FIRST_LETTER = 0; -const SECOND_LETTER = 1; -const ONE_CHARACTER = 1; -const CHISEL_VERSION_CHECK_TIMEOUT = 5000; - -var Prompts = { - questions: [ - { - type: 'confirm', - name: 'ignoreOutdatedChisel', - message: 'Are you sure you want to continue?', - default: false, - when: function() { - const done = this.async(); - let calledDone = false; - const notifier = updateNotifier({ - pkg: packageJson, - callback: (err, update) => { - if(calledDone) { - return; - } - calledDone = true; - if(update && update.type && update.type != 'latest') { - notifier.update = update; - hasUpdate = true; - notifier.notify({defer: false, isGlobal: true}); - return done(null, true); - } - done(null, false); - }, - }) - setTimeout(function() { - if(calledDone) { - return; - } - calledDone = true; - done(null, false); - }, CHISEL_VERSION_CHECK_TIMEOUT); - } - }, - { - name: 'name', - message: 'Please enter the project name:', - default: () => path.basename(process.cwd()) - .split(/-/g) - .map(word => `${word.substring(FIRST_LETTER, ONE_CHARACTER).toUpperCase()}${word.substring(SECOND_LETTER)}`) - .join(' '), - validate: function (input) { - return !!input; - }, - when: function(answers) { - if(hasUpdate && !answers.ignoreOutdatedChisel) { - process.exit(1); - } - return true; - } - }, - { - name: 'author', - message: 'Please enter author name:', - default: () => { - try { - var fullName = cp.execSync('git config user.name', { - timeout: 2000 - }); - var name = fullName.toString('utf8').trim(); - return name; - } catch(e) {} - return undefined; - } - }, - { - type: 'list', - name: 'projectType', - message: 'Please select project type:', - choices: [{ - name: 'WordPress Website', - value: 'wp-with-fe' - }, { - name: 'Front-end Templates', - value: 'fe' - }] - }, - { - type: 'confirm', - name: 'has_jquery', - message: 'Include jQuery?', - default: false - }, - { - when: function (answers) { - return answers.has_jquery; - }, - type: 'confirm', - name: 'has_jquery_vendor_config', - message: 'Would you like to configure vendor bundle for jQuery plugins?', - default: true - } - ], - - setAnswers: function (answers) { - this.prompts = {}; - - this.prompts.name = answers.name; - this.prompts.author = answers.author; - this.prompts.projectType = answers.projectType; - this.prompts.nameSlug = slug(answers.name); - this.prompts.nameCamel = _.upperFirst(_.camelCase(answers.name)); - this.prompts.chiselVersion = packageJson.version; - this.prompts.has_jquery = answers.has_jquery; - this.prompts.has_jquery_vendor_config = answers.has_jquery_vendor_config; - } -}; - -module.exports = Prompts; diff --git a/generators/page/index.js b/generators/page/index.js deleted file mode 100644 index 008a262a..00000000 --- a/generators/page/index.js +++ /dev/null @@ -1,155 +0,0 @@ -'use strict'; - -var Generator = require('yeoman-generator'); -var _ = require('lodash'); -var wpCli = require('../../helpers/wpCli'); -var async = require('async'); -var path = require('path'); -var helpers = require('../../helpers'); - -const STDOUT = 0; -const REGEX_FIRST_GROUP = 1; - -module.exports = class extends Generator { - /** - * Extends base Yeoman constructor - * @public - */ - constructor(args, opts) { - super(args, opts); - this.sourceRoot(this.destinationRoot()); - - this.option('skip-build', { - desc: 'Do not run `gulp build` after pages are created', - type: Boolean, - defaults: false - }); - - this.argument('newPages', { - desc: 'List of names', - type: Array, - required: false - }); - } - - /** - * Reads current generator config and list of pages - * @public - */ - initializing() { - if(!this.config.existed) { - this.log('You need to run this generator in a project directory.'); - process.exit(1); - } - this.configuration = this.config.get('config'); - this.pages = this.config.get('pages'); - } - - /** - * Gets new pages listed in arguments and checks if there're any pages to render - * @public - */ - getPages() { - this.pages = _.union(this.pages, this.options.newPages); - - if (_.isEmpty(this.pages)) { - this.log('Page names list cannot be empty.'); - process.exit(); - } - - // Updated the generator config file with new pages - this.config.set('pages', this.pages); - } - - /** - * Generates template files based on provided list or stored in config file - * @public - */ - _generatePages() { - this.pages.forEach(function(pageName) { - var fileName = _.kebabCase(pageName) + '.twig'; - - // Write file if not exists - if (!this.fs.exists(this.destinationPath('src/templates/' + fileName))) { - this.fs.copyTpl(this.templatePath('src/templates/layouts/page.twig'), this.destinationPath('src/templates/' + fileName), { - pageName: pageName - }); - } - }, this); - } - - /** - * Updates main project page listing with generated page list - * @public - */ - _updateIndex() { - var pagesObject = []; - - this.pages.forEach(function(page) { - pagesObject.push({ name: page, slug: _.kebabCase(page) }); - }); - - this.fs.copyTpl(this.templatePath('index/project-index.html'), this.destinationPath('index.html'), { pages: pagesObject }); - } - - _wp_single(pageName, callback) { - var id = 0; - var slug = ''; - async.waterfall([ - (cb) => wpCli(['post', 'create', { - post_type: 'page', - post_title: pageName, - post_status: 'publish' - }], cb), - (stdio, cb) => { - var stdout = stdio[STDOUT].toString('utf8'); - id = /Created post (\d+)\./.exec(stdout)[REGEX_FIRST_GROUP]; - cb(!id); - }, - (cb) => wpCli(['post', 'get', String(id), {format: 'json'}], {hideStdio: true}, cb), - (stdio, cb) => { - var json = JSON.parse(stdio[STDOUT]); - slug = json.post_name; - cb(!slug); - }, - (cb) => { - var pack = JSON.parse(this.fs.read(this.destinationPath('package.json'))); - var chisel = pack.chisel, dest = chisel.dest; - var templates = path.join(dest.wordpress, 'wp-content/themes', - dest.wordpressTheme, chisel.src.templatesPath); - this.fs.copyTpl( - this.destinationPath(path.join(templates, 'page.twig')), - this.destinationPath(path.join(templates, 'page-'+slug+'.twig')), - {pageName: pageName} - ); - cb(); - } - ], callback); - } - - _writing_wp_with_fe(callback) { - async.eachSeries(this.options.newPages, this._wp_single.bind(this), callback); - } - - writing() { - if (this.configuration.projectType == 'wp-with-fe') { - var done = this.async(); - this._writing_wp_with_fe(helpers.throwIfError(done)); - } else { - this._generatePages.call(this); - this._updateIndex.call(this); - } - } - - /** - * Runs build helpers if they're not skipped by generator - * @public - */ - install() { - if (!this.options['skip-build'] && this.configuration.projectType == 'fe') { - this.spawnCommand('gulp', ['build']); - } - - this.log('All done!'); - } -} diff --git a/generators/wp-config/index.js b/generators/wp-config/index.js deleted file mode 100644 index 4b20bd6b..00000000 --- a/generators/wp-config/index.js +++ /dev/null @@ -1,143 +0,0 @@ -'use strict'; -var Generator = require('yeoman-generator'), - fs = require('fs'), - helpers = require('../../helpers'), - async = require('async'), - mysql = require('mysql'); - -module.exports = class extends Generator { - - constructor(args, opts) { - super(args, opts); - } - - initializing() { - this.configuration = this.config.get('config'); - if(!this.configuration) { - this.log('You need to run this generator in a project directory.'); - process.exit(); - } - } - - _prompting(cb) { - var prompts = [ - { - name: 'databaseHost', - message: 'Enter the database host:', - default: '127.0.0.1' - }, { - name: 'databasePort', - message: 'Enter the database port:', - default: 3306, - validate: function (input) { - if (isNaN(input)) { - return 'Please, enter number'; - } - return true; - } - }, { - name: 'databaseName', - message: 'Enter the database name:', - default: this.configuration.nameSlug - }, { - name: 'databaseUser', - message: 'Enter the database user:', - default: 'root' - }, { - type: 'password', - name: 'databasePassword', - message: 'Enter the database password:', - } - ]; - - this.prompt(prompts).then((answers) => { - this.prompts = answers; - this.prompts['databaseHostPort'] = answers['databaseHost'] + ':' + answers['databasePort']; - cb(); - }); - } - - prompting() { - var done = this.async(); - async.doDuring( - (cb) => this._prompting(cb), - (cb) => { - // In tests we are passing String object instead of empty string - // because yeoman-test seems to ignore empty string - var connection = new mysql.createConnection({ - host: this.prompts.databaseHost, - port: this.prompts.databasePort, - user: this.prompts.databaseUser, - password: this.prompts.databasePassword.toString() - }); - connection.connect((err) => { - if(err) { - console.log('Error when testing database connection:'); - console.log(err.toString()); - } else { - connection.destroy(); - } - cb(null, err); - }) - }, - helpers.throwIfError(done) - ); - } - - writing() { - var name = this.configuration.nameSlug; - this.fs.copyTpl(this.templatePath('dev-vhost.conf'), - this.destinationPath('dev-vhost.conf'), { - documentRoot: process.cwd()+'/wp', - serverName: name + '.test', - dbName: name - } - ); - } - - /** - * Wrap setting in quotes if needed. - */ - _getDbSetting(setting) { - var val = this.prompts[setting]; - if(val.startsWith('$_')) { - return val; - } - // TODO That's not proper escaping - return '\'' + this.prompts[setting] + '\''; - } - - _updateWpConfig(cb) { - async.waterfall([ - (cb) => fs.readFile('wp/wp-config-local.php', 'utf8', cb), - (config, cb) => { - var prefix = helpers.makePrefix(this.configuration.nameSlug); - config = config - .replace('\'localhost\'', this._getDbSetting('databaseHostPort')) - .replace('\'database_name_here\'', this._getDbSetting('databaseName')) - .replace('\'username_here\'', this._getDbSetting('databaseUser')) - .replace('\'password_here\'', this._getDbSetting('databasePassword')) - .replace('wp_', prefix + '_'); - - fs.writeFile('wp/wp-config-local.php', config, cb); - } - ], cb); - } - - install() { - var done = this.async(); - var files = { - 'wp-config-local.php': 'wp/wp-config-local.php', - } - async.series([ - (cb) => helpers.copyFiles(this.sourceRoot(), files, cb), - (cb) => this._updateWpConfig(cb), - ], (err) => { - if(err) { - throw err; - } - this.log('Local config generated') - done(); - }); - } -} diff --git a/generators/wp-plugins/index.js b/generators/wp-plugins/index.js deleted file mode 100644 index 44ef348c..00000000 --- a/generators/wp-plugins/index.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; -var Generator = require('yeoman-generator'); -var plugins = require('./plugins.json'); -var helpers = require('../../helpers'); -var wpCli = require('../../helpers/wpCli'); - -const FIRST_ANSWER_INDEX = 0; - -module.exports = class extends Generator { - - constructor(args, opts) { - super(args, opts); - } - - initializing() { - this.configuration = this.config.get('config'); - if(!this.configuration) { - this.log('You need to run this generator in a project directory.'); - process.exit(); - } - } - - prompting() { - var prompts = [ - { - type: 'checkbox', - name: 'plugins', - message: 'Select optional plugins' - } - ]; - - var choices = prompts[FIRST_ANSWER_INDEX].choices = []; - - Object.keys(plugins).forEach((id) => { - choices.push({ - name: plugins[id], - value: id - }) - }) - - var done = this.async(); - this.prompt(prompts).then((answers) => { - this.prompts = answers; - done(); - }); - } - - end() { - if(!this.prompts.plugins.length) { - return; - } - var done = this.async(); - wpCli(['plugin', 'install', {activate: true}].concat(this.prompts.plugins), helpers.throwIfError(done)); - } -} diff --git a/generators/wp-plugins/plugins.json b/generators/wp-plugins/plugins.json deleted file mode 100644 index 17e7975e..00000000 --- a/generators/wp-plugins/plugins.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "https://github.com/WordPress/classic-editor/archive/master.zip": "Classic Editor", - "https://github.com/wp-premium/advanced-custom-fields-pro/archive/master.zip": "Advanced Custom Fields Pro", - "https://github.com/wp-premium/gravityforms/archive/master.zip": "Gravity Forms", - "https://github.com/wp-sync-db/wp-sync-db/archive/master.zip": "WP Sync DB", - "https://github.com/wp-sync-db/wp-sync-db-media-files/archive/master.zip": "WP Sync DB Media File Addon" -} diff --git a/generators/wp/index.js b/generators/wp/index.js deleted file mode 100644 index fedb4955..00000000 --- a/generators/wp/index.js +++ /dev/null @@ -1,257 +0,0 @@ -'use strict'; - -const Generator = require('yeoman-generator'); -const fs = require('fs'); -const fse = require('fs-extra'); -const crypto = require('crypto'); -const helpers = require('../../helpers'); -const wpCli = require('../../helpers/wpCli'); -const async = require('async'); -const cp = require('child_process'); -const chalk = require('chalk'); - -const WP_CONFIG_UNIQUE_STRING_BYTES = 30; -const STDOUT = 0; -const STDERR = 1; - -module.exports = class extends Generator { - - constructor(args, opts) { - super(args, opts); - } - - initializing () { - this.configuration = this.config.get('config'); - if(!this.configuration) { - this.log('You need to run this generator in a project directory.'); - process.exit(); - } - if(!this.options['skip-config']) { - this.composeWith(require.resolve('../wp-config')) - } - if(!this.options['skip-plugins']) { - this.composeWith(require.resolve('../wp-plugins')); - } - - this.configuration.themeFolder = this.configuration.nameSlug + '-chisel'; - } - - prompting() { - var prompts = [ - { - name: 'title', - message: 'Enter title for the new site:', - default: this.configuration.name - }, { - name: 'url', - message: 'Enter URL:', - default: 'http://'+this.configuration.nameSlug+'.test/' - }, { - name: 'adminUser', - message: 'Enter admin user:', - default: () => { - try { - var fullName = cp.execSync('git config user.name', { - timeout: 2000 - }); - var nameParts = fullName.toString('utf8').trim().split(" "); - // eslint-disable-next-line no-magic-numbers - var name = nameParts[0].toLowerCase() + Math.floor(1000 + Math.random() * 9000); - return name; - } catch(e) {} - return undefined; - } - }, { - name: 'adminPassword', - message: 'Enter admin password:', - type: 'password', - validate: (str) => (str.length > 0) - }, { - name: 'adminEmail', - message: 'Enter admin email:', - validate: (str) => /.+@.+/.test(str), - default: () => { - try { - var email = cp.execSync('git config user.email', { - timeout: 2000 - }); - email = email.toString('utf8').trim(); - if(/.+@.+/.test(email)) { - return email; - } - } catch(e) {} - return undefined; - } - }, { - type: 'list', - name: 'srcPlacement', - message: 'Where do you want to place the \'src\' folder:', - choices: [{ - name: 'Project root folder', - value: 'root' - }, { - name: 'WordPress theme folder', - value: 'theme' - }] - } - ]; - - var done = this.async(); - this.log(chalk.yellow('\nWORDPRESS SETUP\n')); - this.prompt(prompts).then((answers) => { - this.prompts = answers; - done(); - }); - } - - _updateWpConfig(cb) { - async.waterfall([ - (cb) => fs.readFile('wp/wp-config.php', 'utf8', cb), - (config, cb) => { - var prefix = helpers.makePrefix(this.configuration.nameSlug); - config = config.replace('wp_', prefix + '_'); - - config = config.replace(/put your unique phrase here/g, - () => crypto.randomBytes(WP_CONFIG_UNIQUE_STRING_BYTES).toString('base64')) - - fs.writeFile('wp/wp-config.php', config, cb); - } - ], cb); - } - - _updateSrcFolderConfig() { - fs.readFile('package.json', 'utf8', (err, config) => { - if (err) { - throw err; - } else { - config = config.replace('"base": "src"', '"base": "wp/wp-content/themes/'+this.configuration.themeFolder+'/src"'); - fs.writeFile('package.json', config, (err) => { - if (err) { - throw err; - } else { - console.log('Updated the src path.'); - } - }); - } - }); - } - - _moveSrcFolder() { - fse.move( - this.destinationPath('src'), - this.destinationPath('wp/wp-content/themes/'+this.configuration.themeFolder+'/src'), - function (err) { - if (err) { - return console.error(err); - } else { - console.log("The src folder moved to the theme folder.") - } - } - ); - } - - _copyTheme() { - // Copy Chisel starter theme - this.fs.copyTpl(this.templatePath('chisel-starter-theme'), - this.destinationPath('wp/wp-content/themes/'+this.configuration.themeFolder), this.configuration); - - // Copy screenshot - this.fs.copy(this.templatePath('images/screenshot.png'), - this.destinationPath('wp/wp-content/themes/'+this.configuration.themeFolder+'/screenshot.png')); - - this.fs.move( - this.destinationPath('wp/wp-content/themes/'+this.configuration.themeFolder+'/gitignore'), - this.destinationPath('wp/wp-content/themes/'+this.configuration.themeFolder+'/.gitignore') - ); - } - - _copyThemeStyles() { - this.fs.copyTpl(this.templatePath('styles/itcss/**/*'), - this.destinationPath('src/styles/'), this.configuration); - } - - _checkIfDatabaseExists(cb) { - wpCli(['db', 'check'], {hideStdio: true}, (err, stdio) => { - var stdout = stdio[STDOUT].toString('utf8'); - var stderr = stdio[STDERR].toString('utf8'); - if(stderr.indexOf('Unknown database') != -1) { - cb(null, false); - } else if(stdout.indexOf('Success') != -1) { - cb(null, true); - } else { - cb(['Error when checking database', stdout, stderr]); - } - }); - } - - _askIfContinueWithCurrentDb(cb) { - this.prompt([ - { - type: 'confirm', - name: 'continue', - message: 'Database already exist, do you want to use existing database?' - } - ]).then((answers) => { - if(answers.continue) { - cb(null, []) - } else { - cb('You decided to not continue'); - } - }); - } - - _dropCreateDatabase(cb) { - async.waterfall([ - (cb) => this._checkIfDatabaseExists(cb), - (exists, cb) => (exists ? wpCli(['db', 'drop'], cb) : cb(null, [])), - (stdio, cb) => this._checkIfDatabaseExists(cb), - (exists, cb) => - (exists ? this._askIfContinueWithCurrentDb(cb) : wpCli(['db', 'create'], cb)), - ], cb); - } - - _runWpCli(cb) { - if(this.options.skipWpCli) { - cb(); return; - } - async.series([ - (cb) => this._dropCreateDatabase(cb), - (cb) => wpCli(['core', 'install', { - url: this.prompts.url, - title: this.prompts.title, - admin_user: this.prompts.adminUser, - admin_password: this.prompts.adminPassword, - admin_email: this.prompts.adminEmail - }], cb), - (cb) => wpCli(['plugin', 'install', 'timber-library', 'disable-emojis', {activate: true}], cb), - (cb) => wpCli(['theme', 'activate', this.configuration.themeFolder], cb) - ], cb); - } - - install() { - this._copyTheme(); - this._copyThemeStyles(); - var done = this.async(); - wpCli(['core', 'download', '--skip-content'], helpers.throwIfError(done)) - } - - end() { - var done = this.async(); - var files = { - 'wp-config.php': 'wp/wp-config.php', - 'gitignore': 'wp/.gitignore', - '.htaccess': 'wp/.htaccess', - 'wp-cli.yml': 'wp-cli.yml' - } - async.series([ - (cb) => helpers.copyFiles(this.sourceRoot(), files, cb), - (cb) => this._updateWpConfig(cb), - (cb) => this._runWpCli(cb) - ], helpers.throwIfError(done)); - - if (this.prompts.srcPlacement === 'theme') { - this._moveSrcFolder(); - this._updateSrcFolderConfig(); - } - } -} diff --git a/generators/wp/templates/chisel-starter-theme/gitignore b/generators/wp/templates/chisel-starter-theme/gitignore deleted file mode 100755 index 1521c8b7..00000000 --- a/generators/wp/templates/chisel-starter-theme/gitignore +++ /dev/null @@ -1 +0,0 @@ -dist diff --git a/generators/wp/templates/gitignore b/generators/wp/templates/gitignore deleted file mode 100644 index 0430bb9a..00000000 --- a/generators/wp/templates/gitignore +++ /dev/null @@ -1,2 +0,0 @@ -wp-content/uploads -wp-config-local.php diff --git a/generators/wpcli/index.js b/generators/wpcli/index.js deleted file mode 100644 index cf8a387d..00000000 --- a/generators/wpcli/index.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; -var Generator = require('yeoman-generator'); -var wpCli = require('../../helpers/wpCli'); - -const EXIT_CODE_SUCCESS = 0; -const FIRST_NOT_IGNORED_ARGUMENT_INDEX = 3; - -module.exports = class extends Generator { - - constructor(args, opts) { - super(args, opts); - } - - initializing() { - this.configuration = this.config.get('config'); - if(!this.configuration) { - this.log('You need to run this generator in a project directory.'); - process.exit(); - } - } - - end() { - // pass arguments except node, yo and generator name - wpCli( - process.argv.slice(FIRST_NOT_IGNORED_ARGUMENT_INDEX), - (code) => process.exit(code || EXIT_CODE_SUCCESS) - ); - } -} diff --git a/helpers/index.js b/helpers/index.js deleted file mode 100644 index d4825407..00000000 --- a/helpers/index.js +++ /dev/null @@ -1,37 +0,0 @@ -var path = require('path'); -var fs = require('fs'); -var async = require('async'); -var crypto = require('crypto'); - -const PREFIX_LENGTH = 8; - -var Helpers = { - copyFiles: function(sourceRoot, files, cb) { - async.eachOfSeries(files, (newName, oldName, cb) => { - async.waterfall([ - (cb) => fs.readFile(path.join(sourceRoot, oldName), cb), - (body, cb) => fs.writeFile(newName, body, cb) - ], cb); - }, cb); - }, - - throwIfError: function(cb) { - return function(err) { - if(err) { - throw err; - } - cb(); - } - }, - - makePrefix: function(nameSlug) { - return crypto.createHash('sha256') - .update(nameSlug, 'utf8') - .digest('base64') - .replace(/[+/=]/g, '') - .substr(0, PREFIX_LENGTH) - .toLowerCase(); - } -}; - -module.exports = Helpers; diff --git a/helpers/wpCli.js b/helpers/wpCli.js deleted file mode 100644 index 00d32292..00000000 --- a/helpers/wpCli.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -var cp = require('child_process'); -var path = require('path'); -const EXIT_CODE_SUCCESS = 0; - -function getWpCliPath() { - return path.join(__dirname, 'wp-cli.phar'); -} - -function getDefaultArgs() { - return [getWpCliPath(), '--path=wp', '--color']; -} - -function parseParams(params) { - var args = []; - Object.keys(params).forEach((key) => { - var val = params[key]; - if(typeof val == 'boolean') { - args.push('--'+key); - } else { - args.push('--'+key+'='+val); - } - }); - return args; -} - -module.exports = function runCommand(args, opts, cb) { - if(typeof opts == 'function') { - cb = opts; - opts = {}; - } - for(let i = 0; i < args.length; i++) { - if(typeof args[i] == 'object') { - let parsed = parseParams(args[i]); - args.splice.apply(args, [i, 1].concat(parsed)); - i += parsed.length-1; - } - } - args = [].concat(getDefaultArgs(), args); - - var stdout = [], stderr = []; - var proc = cp.spawn('php', args, {stdio: ['inherit', 'pipe', 'pipe']}); - - proc.stdout.on('data', - (data) => (stdout.push(data) && !opts.hideStdio && process.stdout.write(data))); - proc.stderr.on('data', - (data) => (stderr.push(data) && !opts.hideStdio && process.stderr.write(data))); - - proc.on('close', (code) => - cb((code === EXIT_CODE_SUCCESS ? null : code), [Buffer.concat(stdout), Buffer.concat(stderr)])); - -} diff --git a/lerna.json b/lerna.json new file mode 100644 index 00000000..ab0dc2cf --- /dev/null +++ b/lerna.json @@ -0,0 +1,17 @@ +{ + "npmClient": "yarn", + "useWorkspaces": true, + "version": "independent", + "packages": ["packages/*"], + "granularPathspec": false, + "ignoreChanges": [ + "**/__fixtures__/**", + "**/__tests__/**", + "**/*.md", + "**/.gitignore" + ], + "changelog": { + "repo": "xfiveco/generator-chisel", + "cacheDir": ".changelog" + } +} diff --git a/package.json b/package.json index 9f30d1a9..d7b947f4 100644 --- a/package.json +++ b/package.json @@ -1,52 +1,68 @@ { - "name": "generator-chisel", - "version": "0.16.1", - "description": "A Yeoman generator for scaffolding front-end and WordPress projects", - "homepage": "https://www.getchisel.co/", - "author": { - "name": "Xfive", - "email": "hello@xfive.co", - "url": "https://www.xfive.co" - }, - "files": [ - "generators", - "helpers" - ], - "main": "generators\\index.js", - "keywords": [ - "yeoman-generator", - "twig", - "wordpress", - "scss", - "itcss", - "webpack", - "babel" + "name": "root", + "private": true, + "workspaces": [ + "packages/*", + "docs", + "test-projects/*" ], "scripts": { - "test": "bash test/run-tests.sh", - "prepublish": "php -r \"copy('https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar', 'helpers/wp-cli.phar'); if(!file_exists('helpers/wp-cli.phar')) exit(1);\"" + "lint": "eslint --no-eslintrc -c .eslintrc.js **/*.js", + "version": "node scripts/index-versions.js", + "prepare-links": "node scripts/prepare-links.js", + "lerna-version": "lerna version --no-private", + "lerna-publish": "lerna publish from-git", + "lerna-publish-next": "lerna publish from-git --pre-dist-tag next", + "test-local": "jest -w 1", + "test": "jest --coverage" }, - "dependencies": { - "async": "^2.6.3", - "chalk": "^2.4.2", - "command-exists": "^1.2.8", - "fs-extra": "^8.1.0", - "limax": "^1.7.0", - "lodash": "^4.17.15", - "mysql": "^2.17.1", - "update-notifier": "^3.0.1", - "yeoman-generator": "^4.0.1" + "jest": { + "testEnvironment": "node", + "testTimeout": 240000, + "globalSetup": "/scripts/testGlobalSetup.js", + "globalTeardown": "/scripts/testGlobalTeardown.js", + "setupFiles": [ + "/scripts/testSetup.js" + ], + "setupFilesAfterEnv": [ + "/scripts/testSetupAfterEnv.js", + "expect-puppeteer" + ], + "watchPathIgnorePatterns": [ + "/test-projects", + "/.jest-projects" + ], + "testPathIgnorePatterns": [ + "helpers", + "/node_modules/" + ], + "collectCoverageFrom": [ + "**/*.{js,jsx}", + "!**/node_modules/**", + "!**/.jest-projects/**", + "!**/test-projects/**", + "!**/coverage/**", + "!/packages/generator-chisel/lib/commands/create/creators/*/template/**/*.js" + ] }, "devDependencies": { - "cross-spawn": "^6.0.5", - "eslint": "^6.1.0", - "mocha": "^6.2.0", - "yeoman-assert": "^3.1.1", - "yeoman-test": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0" + "conventional-changelog": "^3.1.21", + "eslint": "^7.2.0", + "execa": "^4.0.2", + "expect-puppeteer": "^4.4.0", + "fs-extra": "^9.0.1", + "globby": "^11.0.1", + "jest": "^26.1.0", + "jest-environment-puppeteer": "^4.4.0", + "lerna": "^3.22.0", + "lerna-changelog": "^1.0.1", + "node-eval": "^2.0.0", + "prettier": "^2.0.5", + "random-js": "^2.1.0", + "stream-to-promise": "^3.0.0", + "supertest": "^4.0.2" }, - "repository": "git@github.com:xfiveco/generator-chisel.git", - "license": "MIT" + "optionalDependencies": { + "puppeteer": "^5.2.1" + } } diff --git a/packages/babel-preset-chisel/CHANGELOG.md b/packages/babel-preset-chisel/CHANGELOG.md new file mode 100644 index 00000000..05f22504 --- /dev/null +++ b/packages/babel-preset-chisel/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + + + +## 1.0.0-alpha.0 (2020-07-01) + +- Rewrite with webpack ([75952b3](https://github.com/xfiveco/generator-chisel/commit/75952b3)) diff --git a/packages/babel-preset-chisel/README.md b/packages/babel-preset-chisel/README.md new file mode 100644 index 00000000..adbbb619 --- /dev/null +++ b/packages/babel-preset-chisel/README.md @@ -0,0 +1,11 @@ +# babel-preset-chisel + +Default babel preset used in Chisel projects. Based on [@babel/preset-env](https://babeljs.io/docs/en/babel-preset-env.html). Check index.js to see what it includes and available options. + +## babel-preset-chisel/react + +Includes [@babel/preset-react](https://babeljs.io/docs/en/babel-preset-react.html) and [react-hot-loader](https://github.com/gaearon/react-hot-loader) babel plugin during development. + +## babel-preset-chisel/preact + +Includes [@babel/plugin-transform-react-jsx](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx/) preconfigured for use with preact. diff --git a/packages/babel-preset-chisel/index.js b/packages/babel-preset-chisel/index.js new file mode 100644 index 00000000..e02a5d0e --- /dev/null +++ b/packages/babel-preset-chisel/index.js @@ -0,0 +1,66 @@ +const path = require('path'); + +module.exports = function chiselPreset(api, options = {}) { + const runtimePath = path.dirname( + require.resolve('@babel/runtime/package.json'), + ); + const runtimeVersion = require('@babel/runtime/package.json').version; + + const { + modules = false, + bugfixes = true, + useBuiltIns = false, + shippedProposals = true, + + // Undocumented option of @babel/plugin-transform-runtime. + // When enabled, an absolute path is used when importing a runtime helper after transforming. + // This ensures the transpiled file always use the runtime version required in this package. + // However, this may cause hash inconsistency if the project is moved to another directory. + // So here we allow user to explicit disable this option if hash consistency is a requirement + // and the runtime version is sure to be correct. + absoluteRuntime = runtimePath, + // TODO: do we want that? + + // https://babeljs.io/docs/en/babel-plugin-transform-runtime#version + // By default transform-runtime assumes that @babel/runtime@7.0.0-beta.0 is installed, which means helpers introduced later than 7.0.0-beta.0 will be inlined instead of imported. + // See https://github.com/babel/babel/issues/10261 + // And https://github.com/facebook/docusaurus/pull/2111 + version = runtimeVersion, + + processOptions = (_, opts) => opts, + } = options; + + return { + presets: [ + [ + require('@babel/preset-env'), + processOptions('@babel/preset-env', { + modules, + bugfixes, + useBuiltIns, + // eslint-disable-next-line import/no-unresolved + corejs: useBuiltIns ? require('core-js/package.json').version : false, + shippedProposals, + }), + ], + ], + plugins: [ + [ + require('@babel/plugin-transform-runtime'), + processOptions('@babel/plugin-transform-runtime', { + regenerator: useBuiltIns !== 'usage', + + // polyfills are injected by preset-env & polyfillsPlugin, so no need to add them again + corejs: false, + + helpers: true, + useESModules: !modules, + + absoluteRuntime, + + version, + }), + ], + ], + }; +}; diff --git a/packages/babel-preset-chisel/package.json b/packages/babel-preset-chisel/package.json new file mode 100644 index 00000000..959adcef --- /dev/null +++ b/packages/babel-preset-chisel/package.json @@ -0,0 +1,43 @@ +{ + "name": "babel-preset-chisel", + "version": "1.0.0-alpha.0", + "description": "TODO", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/xfiveco/generator-chisel.git", + "directory": "packages/babel-preset-chisel" + }, + "author": { + "name": "Xfive", + "email": "hello@xfive.co", + "url": "https://www.xfive.co" + }, + "homepage": "https://www.getchisel.co/", + "license": "MIT", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "bugs": { + "url": "https://github.com/xfiveco/generator-chisel/issues" + }, + "engines": { + "node": ">=10" + }, + "dependencies": { + "@babel/core": "^7.10.2", + "@babel/plugin-transform-react-jsx": "^7.10.1", + "@babel/plugin-transform-runtime": "^7.10.1", + "@babel/preset-env": "^7.10.2", + "@babel/preset-react": "^7.10.1", + "@babel/runtime": "^7.10.2" + }, + "peerDependencies": { + "core-js": "^3" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + } + } +} diff --git a/packages/babel-preset-chisel/preact.js b/packages/babel-preset-chisel/preact.js new file mode 100644 index 00000000..cc42decb --- /dev/null +++ b/packages/babel-preset-chisel/preact.js @@ -0,0 +1,22 @@ +// TODO: not tested + +module.exports = function chiselPreactPreset(api, options) { + const { + pragma = 'h', + pragmaFrag = 'Fragment', + processOptions = (_, opts) => opts, + } = options; + + return { + plugins: [ + [ + require('@babel/plugin-transform-react-jsx'), + processOptions('@babel/plugin-transform-react-jsx', { + pragma, + pragmaFrag, + useBuiltIns: true, + }), + ], + ], + }; +}; diff --git a/packages/babel-preset-chisel/react.js b/packages/babel-preset-chisel/react.js new file mode 100644 index 00000000..3ee3fef3 --- /dev/null +++ b/packages/babel-preset-chisel/react.js @@ -0,0 +1,32 @@ +// TODO: not tested + +// possible improvements: +// * @babel/plugin-transform-react-constant-elements +// * automatic mode? + +module.exports = function chiselReactPreset(api, options) { + const env = api.env(); // TODO: test + const { + pragma, + pragmaFrag, + hot = false, + processOptions = (_, opts) => opts, + } = options; + + const isDevelopment = env === 'development' || env === 'test'; + + return { + presets: [ + [ + require('@babel/preset-react'), + processOptions('@babel/preset-react', { + pragma, + pragmaFrag, + useBuiltIns: true, + development: isDevelopment, + }), + ], + ], + plugins: [...(hot ? ['react-hot-loader/babel'] : [])], + }; +}; diff --git a/packages/chisel-plugin-code-style/CHANGELOG.md b/packages/chisel-plugin-code-style/CHANGELOG.md new file mode 100644 index 00000000..1a4d4c26 --- /dev/null +++ b/packages/chisel-plugin-code-style/CHANGELOG.md @@ -0,0 +1,11 @@ +# Changelog + + + +## 1.0.0-alpha.1 (2020-07-06) + +- Update code style: handle errors when checking for ignored paths ([706046b](https://github.com/xfiveco/generator-chisel/commit/706046b)) + +## 1.0.0-alpha.0 (2020-07-01) + +- Rewrite with webpack ([75952b3](https://github.com/xfiveco/generator-chisel/commit/75952b3)) diff --git a/packages/chisel-plugin-code-style/README.md b/packages/chisel-plugin-code-style/README.md new file mode 100644 index 00000000..7571508b --- /dev/null +++ b/packages/chisel-plugin-code-style/README.md @@ -0,0 +1,20 @@ +# chisel-plugin-code-style + +Code style (eslint, stylelint) plugin for Chisel. + +## Injected Commands + +- **`chisel-scripts lint`** + + ```text + Usage: chisel-scripts lint [options] [files...] + + lint and fix source files + + Options: + --no-fix do not fix errors or warnings + ``` + +## Configuration + +Standard `eslint` or `stylelint` configuration. diff --git a/packages/chisel-plugin-code-style/eslint-import-resolver-webpack.js b/packages/chisel-plugin-code-style/eslint-import-resolver-webpack.js new file mode 100644 index 00000000..5677657b --- /dev/null +++ b/packages/chisel-plugin-code-style/eslint-import-resolver-webpack.js @@ -0,0 +1 @@ +module.exports = require('eslint-import-resolver-webpack'); diff --git a/packages/chisel-plugin-code-style/index.js b/packages/chisel-plugin-code-style/index.js new file mode 100644 index 00000000..3b96b34e --- /dev/null +++ b/packages/chisel-plugin-code-style/index.js @@ -0,0 +1,165 @@ +module.exports = (api, options) => { + api.registerCommand( + 'lint [files...]', + async (command) => + command + .description('lint and fix source files') + .option('--no-fix', 'do not fix errors or warnings'), + async (files, cmd) => { + const globby = require('globby'); + const fs = require('fs-extra'); + const slash = (str) => str.replace(/\\/g, '/'); + + const cwd = api.resolve(); + let isUsingDefaultPaths = false; + + if (files.length === 0) { + files = ['**/*.{js,scss}']; + isUsingDefaultPaths = true; + } + + const wpDir = (options.wp || {}).directoryName; + + const ignore = [ + ...(wpDir + ? [ + `${wpDir}/wp-admin`, + `${wpDir}/wp-includes`, + `${wpDir}/wp-content/plugins`, + ] + : []), + 'node_modules', + '.git', + ].filter(Boolean); + + const filesNormalized = [].concat( + ...(await Promise.all( + files.map(async (file) => { + const fileAbs = api.resolve(file); + if (await fs.pathExists(fileAbs)) { + return slash(fileAbs); // required for stylelint + } + + return globby(file, { + cwd, + absolute: true, + dot: true, + ignore, + }); + }), + )), + ); + + // console.log(filesNormalized); + // fs.writeFileSync( + // __dirname + '/tmp.json', + // JSON.stringify(filesNormalized) + // ); + + if (filesNormalized.length === 0) { + console.error('No files found'); + process.exit(1); + } + + const jsFiles = filesNormalized.filter((file) => file.endsWith('.js')); + const scssFiles = filesNormalized.filter((file) => + file.endsWith('.scss'), + ); + const hasJS = jsFiles.length > 0; + const hasScss = scssFiles.length > 0; + let exit = 0; + + if (hasJS) { + const { CLIEngine } = require('eslint'); + const path = require('path'); + + const config = { + cwd, + fix: cmd.fix, + }; + + const engine = new CLIEngine(config); + + const jsFileNotIgnored = jsFiles.filter((file) => { + try { + return !engine.isPathIgnored(file); + } catch (e) { + if (isUsingDefaultPaths) { + return false; + } + + throw e; + } + }); + + // https://github.com/vuejs/vue-cli/blob/a41cac220a5bc5e5305807f5249178cbcbf642f4/packages/%40vue/cli-plugin-eslint/lint.js#L72 + const processCwd = process.cwd; + process.cwd = () => cwd; + + const report = engine.executeOnFiles(jsFileNotIgnored); + + process.cwd = processCwd; + + const formatter = engine.getFormatter('codeframe'); + + if (config.fix) { + CLIEngine.outputFixes(report); + } + + if (report.errorCount > 0) { + exit = 1; + } + + const hasFixed = report.results.some((f) => f.output); + if (hasFixed) { + console.log(`The following JS files have been auto-fixed:`); + console.log(); + report.results.forEach((f) => { + if (f.output) { + console.log(` ${path.relative(cwd, f.filePath)}`); + } + }); + console.log(); + } + + if (report.warningCount || report.errorCount) { + console.log(formatter(report.results)); + } else { + console.log( + hasFixed + ? `All JS lint issues auto-fixed.` + : `No JS lint issues found!`, + ); + } + } + + if (hasScss) { + // inspired by https://github.com/olegskl/gulp-stylelint/blob/95921fed4cea5b11feb04395675d3abeb38464db/src/index.js + const stylelint = require('stylelint'); + + const config = { + fix: cmd.fix, + configBasedir: cwd, + globbyOptions: { cwd }, + files: scssFiles, + formatter: 'string', + allowEmptyInput: true, + }; + + const resultObject = await stylelint.lint(config); + + if (resultObject.errored) { + exit = 1; + } else if (!resultObject.output) { + console.log(`No SCSS lint issues found OR all issues auto-fixed.`); + } + + if (resultObject.output) { + console.log(resultObject.output); + } + } + + process.exit(exit); + }, + ); +}; diff --git a/packages/chisel-plugin-code-style/package.json b/packages/chisel-plugin-code-style/package.json new file mode 100644 index 00000000..8af5ea03 --- /dev/null +++ b/packages/chisel-plugin-code-style/package.json @@ -0,0 +1,41 @@ +{ + "name": "chisel-plugin-code-style", + "version": "1.0.0-alpha.1", + "description": "TODO", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/xfiveco/generator-chisel.git", + "directory": "packages/chisel-plugin-code-style" + }, + "author": { + "name": "Xfive", + "email": "hello@xfive.co", + "url": "https://www.xfive.co" + }, + "homepage": "https://www.getchisel.co/", + "license": "MIT", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "bugs": { + "url": "https://github.com/xfiveco/generator-chisel/issues" + }, + "engines": { + "node": ">=10" + }, + "dependencies": { + "eslint": "6.8.0", + "eslint-config-chisel": "^3.0.0-alpha.0", + "eslint-import-resolver-webpack": "^0.12.1", + "eslint-plugin-import": "^2.22.0", + "fs-extra": "^9.0.1", + "globby": "^11.0.1", + "husky": "^4.2.5", + "lint-staged": "^10.2.11", + "prettier": "^2.0.5", + "stylelint": "^13.6.0", + "stylelint-config-chisel": "^1.0.0-alpha.0", + "webpack": "^4.43.0" + } +} diff --git a/packages/chisel-plugin-static-frontend/CHANGELOG.md b/packages/chisel-plugin-static-frontend/CHANGELOG.md new file mode 100644 index 00000000..94e0c298 --- /dev/null +++ b/packages/chisel-plugin-static-frontend/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog + + + +## 1.0.0-alpha.5 (2021-12-16) + +## 1.0.0-alpha.4 (2020-09-21) + +- Update HTMLHint: add default config and add HTMLHtnt tests ([cf3db2c](https://github.com/xfiveco/generator-chisel/commit/cf3db2c)) +- Update Post: fix links with extension on nested pages ([e55fc29](https://github.com/xfiveco/generator-chisel/commit/e55fc29)) + +## 1.0.0-alpha.3 (2020-08-04) + +- Add frontend generator and commands tests ([c32fa26](https://github.com/xfiveco/generator-chisel/commit/c32fa26)) +- Handle nested posts without parent ([4552fe4](https://github.com/xfiveco/generator-chisel/commit/4552fe4)) +- Simplify Post data & title implementations a bit ([d87780b](https://github.com/xfiveco/generator-chisel/commit/d87780b)) + +## 1.0.0-alpha.2 (2020-07-22) + +- Add adjectent/next/prev functions to Post ([f682160](https://github.com/xfiveco/generator-chisel/commit/f682160)) + +## 1.0.0-alpha.1 (2020-07-21) + +- Add custom functions, improve post link generation ([cdbf11a](https://github.com/xfiveco/generator-chisel/commit/cdbf11a)) + +## 1.0.0-alpha.0 (2020-07-21) + +- Add Static Frontend ([0c6db7a](https://github.com/xfiveco/generator-chisel/commit/0c6db7a)) diff --git a/packages/chisel-plugin-static-frontend/README.md b/packages/chisel-plugin-static-frontend/README.md new file mode 100644 index 00000000..2caea758 --- /dev/null +++ b/packages/chisel-plugin-static-frontend/README.md @@ -0,0 +1,28 @@ +# chisel-plugin-static-frontend + +Extends chisel-scripts with support for building static websites using Twig templates and (optionally) markdown content (processed using [marked](https://marked.js.org/)). + +## Injected Commands + +- **`chisel-scripts build`** + + Adds `--no-htmlhint` option. + +- **`chisel-scripts dev`** + + ```text + Usage: chisel-scripts dev [options] + + start development server + ``` + +- **`chisel-scripts add-page`** + + ```text + Usage: chisel-scripts add-page [options] + + add page(s) (creates twig templates or markdown files) + + Options: + --no-build do not build after adding pages + ``` diff --git a/packages/chisel-plugin-static-frontend/lib/Post.js b/packages/chisel-plugin-static-frontend/lib/Post.js new file mode 100644 index 00000000..7d3084ef --- /dev/null +++ b/packages/chisel-plugin-static-frontend/lib/Post.js @@ -0,0 +1,165 @@ +const { posix } = require('path'); +const hexoFrontMatter = require('hexo-front-matter'); +const marked = require('marked'); +const { omit } = require('lodash'); + +const rawLoader = require.resolve('./content-raw-loader.js'); + +module.exports = ({ options, getPostsCreator }) => + class Post { + constructor(post) { + this._id = post.id; + this._type = post.type; + this._data = post.data || {}; + this._contentRaw = post.contentRaw || ''; + this._content = ''; + this._parent = null; + this._children = []; + this._loadedContent = ''; + this._file = post.file || ''; + } + + id() { + return this._id; + } + + ID() { + return this.id(); + } + + type() { + return this._type; + } + + title() { + return this._data.title || ''; + } + + parent() { + return this._parent; + } + + children() { + return this._children; + } + + data() { + return this._data; + } + + contentRaw() { + return this._contentRaw; + } + + content() { + return this._content; + } + + link(post) { + const p = post + ? posix.join( + posix.relative( + posix.dirname(post.link()), + posix.dirname(this.link()), + ), + posix.basename(this.link()), + ) + : posix.join('/', this._id); + + if (!options.staticFrontend.skipHtmlExtension && !p.endsWith('.html')) { + return `${p}.html`; + } + + return p.replace(/\/index$/, '/'); + } + + async adjacent(sort = { id: 1 }, query = {}) { + // cache? + const posts = await getPostsCreator()(query, sort); + const currentIndex = posts.indexOf(this); + if (currentIndex === -1) return null; + return posts[currentIndex + 1] || null; + } + + async next(field = 'data.order') { + return this.adjacent({ [field]: 1, id: 1 }); + } + + async prev(field = 'data.order') { + return this.adjacent({ [field]: -1, id: -1 }); + } + + toJSON() { + const res = { + id: this.id(), + title: this._title, + data: this._data, + children: this.children().map((child) => child.id()), + content: this.content(), + contentRaw: this.contentRaw(), + }; + + if (this._parent) { + res.parent = this._parent._id; + } + + return res; + } + + _setParent(post) { + this._parent = post; + } + + _setChildren(posts) { + this._children = posts; + } + + _setContent(content) { + this._content = content; + } + + loadContent(content) { + if (content === this._loadedContent) { + // console.log('Trying to load current content'); + return; + } + + this._loadedContent = content; + + if (this._type === 'md') { + const parsedContent = hexoFrontMatter.parse(content); + const data = omit(parsedContent, ['_content']); + Object.entries(data).forEach(([key, item]) => { + // revert https://github.com/hexojs/hexo-front-matter/blob/ccbdff36d151a56932418cdc6d0329d866032a1b/lib/front_matter.js#L59 + if (item instanceof Date) { + data[key] = new Date( + item.getTime() - item.getTimezoneOffset() * 60 * 1000, + ); + } + }); + this._data = data; + this._contentRaw = parsedContent._content || ''; + this._content = marked(parsedContent._content) || ''; + } else if (this._type === 'json') { + const parsedContent = JSON.parse(content); + this._data = parsedContent; + } + } + + async loadContentWithLoader(loaderContext) { + const content = await new Promise((resolve, reject) => { + loaderContext.loadModule( + `!!${rawLoader}!${this._file}`, + (err, source) => { + if (err) { + reject(err); + } else { + resolve(JSON.parse(source)); + } + }, + ); + }); + + return this.loadContent(content); + } + }; diff --git a/packages/chisel-plugin-static-frontend/lib/commands/add-page.js b/packages/chisel-plugin-static-frontend/lib/commands/add-page.js new file mode 100644 index 00000000..84458553 --- /dev/null +++ b/packages/chisel-plugin-static-frontend/lib/commands/add-page.js @@ -0,0 +1,185 @@ +const markdownPageTemplate = ` +--- +title: <%= pageName %> +--- + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed id nulla bibendum, volutpat metus eu, pretium mi. In lobortis lobortis rutrum. Nulla eu sem nec enim tincidunt fringilla. Nunc mollis sed metus eget aliquet. In venenatis pharetra cursus. Nunc ultrices laoreet diam, at dictum risus viverra nec. Donec egestas, arcu a hendrerit ornare, nunc augue malesuada eros, nec dignissim nulla massa a enim. Phasellus porta venenatis felis, vitae congue libero pellentesque at. Sed neque sapien, faucibus vel pharetra eu, aliquet eget ipsum. Nulla vel ante enim. Sed arcu ligula, rutrum at mauris molestie, vehicula blandit sapien. Vestibulum tempor dignissim gravida. +`.substr(1); + +module.exports = (api, options) => { + api.registerCommand( + 'add-page ', + (command) => + command + .description('add page(s) (creates twig templates or markdown files)') + .option('--no-build', 'do not build after adding pages'), + async (pages, cmd) => { + const fs = require('fs-extra'); + const path = require('path'); + const { runLocal, chalk } = require('chisel-shared-utils'); + const { template } = require('lodash'); + const speakingUrl = require('speakingurl'); + const prettier = require('prettier'); + + const runLocalCurrent = (args, opts) => + runLocal(args, { ...opts, cwd: api.resolve() }); + + const contentDir = api.resolve( + options.source.base, + options.source.content, + ); + + const indexPath = api.resolve('index.html'); + const hasIndex = await fs.pathExists(indexPath); + const isContent = await fs.pathExists(contentDir); + + let fileType = 'twig'; + let supportsNested = false; + let targetDir = options.source.templates; + if (isContent) { + supportsNested = true; + targetDir = options.source.content; + + const hasDefaultTemplate = await fs.pathExists( + api.resolve( + options.source.base, + options.source.templates, + 'post.twig', + ), + ); + + if (hasDefaultTemplate) { + fileType = 'md'; + } + } + + targetDir = api.resolve(options.source.base, targetDir); + + let templateCompiled; + if (fileType === 'twig') { + const templatesFiles = [ + api.resolve( + options.source.base, + options.source.templates, + 'layouts/page.twig', + ), + ]; + + let templateFileSelected; + + for (const file of templatesFiles) { + if (await fs.pathExists(file)) { + templateFileSelected = file; + break; + } + } + + const templateBody = await fs.readFile(templateFileSelected, { + encoding: 'utf8', + }); + templateCompiled = template(templateBody, { + sourceURL: templateFileSelected, + }); + } else if (fileType === 'md') { + templateCompiled = template(markdownPageTemplate); + } + + console.log(); + + const addedPages = []; + + for (const page of pages) { + const dir = page.includes('/') ? path.posix.dirname(page) : ''; + const name = path.posix.basename(page); + const slug = speakingUrl(name) // like project slug generation + .replace(/(?<=[^\d])-(\d+)/g, (_, d) => d) + .replace(/[^a-z0-9-]/g, '-'); + + if (dir && !supportsNested) { + throw new Error( + 'Nested pages are supported only when using content directory', + ); + } + + // eslint-disable-next-line no-constant-condition + for (let n = 0; true; n += 1) { + const localSlug = !n ? slug : `${slug}-${n}`; + const targetFile = path.join( + targetDir, + dir, + `${localSlug}.${fileType}`, + ); + + if (!(await fs.pathExists(targetFile))) { + await fs.outputFile( + targetFile, + templateCompiled({ + ...options.creatorData, + pageDir: dir, + pageName: name, + pageSlug: localSlug, + }), + ); + + addedPages.push({ + dir, + slug: localSlug, + name, + path: path.posix.join(dir, `${localSlug}.html`), + }); + + console.log(chalk.greenBright.bold(`Page ${page} created!`)); + console.log(`${chalk.bold(`File:`)} ${targetFile}`); + console.log(); + + break; + } + } + } + + if (hasIndex) { + let index = await fs.readFile(indexPath, { encoding: 'utf8' }); + + const templateRegex = (tpl) => + new RegExp( + `.*)`, + 's', + ); + + if (//.exec(index)) { + const pagesTemplateRegex = templateRegex('pages'); + index = index + .replace( + //, + pagesTemplateRegex.exec(index)[1], + ) + .replace(pagesTemplateRegex, ''); + } + + const pageTemplateRegex = templateRegex('page'); + const indexPageTemplate = pageTemplateRegex.exec(index)[1]; + const indexPageTemplateCompiled = template(indexPageTemplate); + + index = index.replace( + /(?=)/, + `${addedPages + .map((page) => indexPageTemplateCompiled({ page })) + .join('\n')}\n`, + ); + + index = prettier.format(index, { + ...prettier.resolveConfig.sync(indexPath), + filepath: indexPath, + }); + + await fs.writeFile(indexPath, index); + + if (cmd.build) { + await runLocalCurrent(['chisel-scripts', 'build'], { + execaOpts: { stdio: 'inherit' }, + }); + } + } + }, + ); +}; diff --git a/packages/chisel-plugin-static-frontend/lib/commands/dev.js b/packages/chisel-plugin-static-frontend/lib/commands/dev.js new file mode 100644 index 00000000..4aacc718 --- /dev/null +++ b/packages/chisel-plugin-static-frontend/lib/commands/dev.js @@ -0,0 +1,95 @@ +const path = require('path'); + +const defaults = { + host: '0.0.0.0', + port: 3000, + https: false, + hot: true, + stats: 'errors-warnings', + open: true, + useLocalIp: true, +}; + +const beforeAddHtmlExtension = (app) => { + app.use((req, res, next) => { + // console.log(req.url, req.headers); + if (!req.url.endsWith('/') && !path.posix.extname(req.url)) { + req.url += '.html'; + } + next(); + }); +}; + +module.exports = (api, options) => { + api.registerCommand( + 'dev', + (command) => command.description('start development server'), + async () => { + const webpack = require('webpack'); + const WebpackDevServer = require('webpack-dev-server'); + const HtmlWebpackPlugin = require('html-webpack-plugin'); + const { debounce } = require('lodash'); + + process.env.NODE_ENV = 'development'; + + const config = await api.service.resolveWebpackConfig(); + + const projectDevServerOptions = { + ...defaults, + ...{ + publicPath: options.staticFrontend.serveDist + ? '/' + : `/${options.output.base}/`, + }, + ...config.devServer, + ...options.devServer, + }; + + if (options.staticFrontend.skipHtmlExtension) { + const oldBefore = projectDevServerOptions.before; + projectDevServerOptions.before = (...args) => { + beforeAddHtmlExtension(...args); + if (oldBefore) oldBefore(...args); + }; + } + + projectDevServerOptions.port = + Number(process.env.PORT) || projectDevServerOptions.port; + + const compiler = webpack(config); + + const server = new WebpackDevServer(compiler, projectDevServerOptions); + + const reloadDebounced = debounce(() => { + // console.log('reload'); + server.sockWrite(server.sockets, 'content-changed'); + }, 100); + + compiler.hooks.compilation.tap( + 'chisel-plugin-static-frontend', + (compilation) => { + HtmlWebpackPlugin.getHooks(compilation).afterEmit.tap( + 'chisel-plugin-static-frontend', + // eslint-disable-next-line no-unused-vars + (data) => { + // console.log(`Emit ${data.outputName}`); + reloadDebounced(); + }, + ); + }, + ); + + await new Promise((resolve) => { + compiler.hooks.done.tap('chisel-plugin-static-frontend', resolve); + }); + + server.listen( + projectDevServerOptions.port, + projectDevServerOptions.host, + (err) => { + if (err) throw err; + }, + ); + }, + ); +}; diff --git a/packages/chisel-plugin-static-frontend/lib/content-loader.js b/packages/chisel-plugin-static-frontend/lib/content-loader.js new file mode 100644 index 00000000..281eb980 --- /dev/null +++ b/packages/chisel-plugin-static-frontend/lib/content-loader.js @@ -0,0 +1,38 @@ +const { getOptions } = require('loader-utils'); +const fs = require('fs-extra'); +const { loaderOptionsSymbol } = require('./index'); + +module.exports = async function stringLoader(content) { + // console.log(`Content loader for ${this.resourcePath}`); + + const loaderOptions = getOptions(this)[loaderOptionsSymbol]; + + if (!loaderOptions) { + throw new Error('Options not passed'); + } + + const { api, options, filesMap } = loaderOptions; + + // console.log(typeof loaderOptions); + // console.log(Object.keys(loaderOptions)); + const post = filesMap[this.resourcePath]; + + if (!post) { + throw new Error(`Post for ${this.resourcePath} not found`); + } + + await post.loadContent(content); + + const template = post.data().template || 'post'; + + const templatePath = api.resolve( + options.source.base, + options.source.templates, + `${template}.twig`, + ); + + this.addDependency(templatePath); + const templateContent = await fs.readFile(templatePath, 'utf8'); + + return { isContent: true, post, templateContent, templatePath }; +}; diff --git a/packages/chisel-plugin-static-frontend/lib/content-raw-loader.js b/packages/chisel-plugin-static-frontend/lib/content-raw-loader.js new file mode 100644 index 00000000..176e71e3 --- /dev/null +++ b/packages/chisel-plugin-static-frontend/lib/content-raw-loader.js @@ -0,0 +1,4 @@ +module.exports = function stringLoader(content) { + // console.log(`Raw loader for ${this.resourcePath}`); + return JSON.stringify(content); +}; diff --git a/packages/chisel-plugin-static-frontend/lib/get-posts.js b/packages/chisel-plugin-static-frontend/lib/get-posts.js new file mode 100644 index 00000000..72e54311 --- /dev/null +++ b/packages/chisel-plugin-static-frontend/lib/get-posts.js @@ -0,0 +1,69 @@ +const { + cloneDeepWith, + has, + omit, + isPlainObject, + toPairs, + fromPairs, +} = require('lodash'); + +module.exports = ({ db, postsMap }) => (loader = null) => async ( + query = {}, + sort = { id: 1 }, +) => { + if (typeof query === 'string') { + query = JSON.parse(query); + } + + // twig doesn't keep doesn't od properties in object, but they provide + // _keys array with order + const cloneCustomizer = (val) => { + if (isPlainObject(val) && has(val, '_keys')) { + const keys = val._keys; + return cloneDeepWith( + fromPairs( + toPairs(omit(val, ['_keys'])).sort( + ([key1], [key2]) => keys.indexOf(key1) - keys.indexOf(key2), + ), + ), + cloneCustomizer, + ); + } + + return undefined; + }; + + const queryWithoutKeys = cloneDeepWith(query, cloneCustomizer); + const sortWithoutKeys = cloneDeepWith(sort, cloneCustomizer); + + if (!loader) { + return (await db.find(queryWithoutKeys).sort(sortWithoutKeys)).map( + ({ id }) => postsMap[id], + ); + } + + const postsRaw = await db.find(queryWithoutKeys); + + const posts = postsRaw.map(({ id }) => postsMap[id]); + + posts.forEach((loopPost) => { + if (loopPost._file) { + loader.addDependency(loopPost._file); + } + }); + + await Promise.all( + posts.map((loopPost) => loopPost.loadContentWithLoader(loader)), + ); + + await Promise.all( + posts.map((loopPost) => + db.update({ id: loopPost.id() }, loopPost.toJSON()), + ), + ); + + // we may update data that impacts query or sorting order + const postsRaw2 = await db.find(queryWithoutKeys).sort(sortWithoutKeys); + + return postsRaw2.map(({ id }) => postsMap[id]); +}; diff --git a/packages/chisel-plugin-static-frontend/lib/htmlhint.js b/packages/chisel-plugin-static-frontend/lib/htmlhint.js new file mode 100644 index 00000000..bd52b238 --- /dev/null +++ b/packages/chisel-plugin-static-frontend/lib/htmlhint.js @@ -0,0 +1,73 @@ +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const { HTMLHint } = require('htmlhint'); +const { chalk } = require('chisel-shared-utils'); +const path = require('path'); + +class HtmlHintPlugin { + constructor(options = {}) { + this.options = options; + } + + apply(compiler) { + let htmlProblems = []; + const problemsCache = {}; + + compiler.hooks.compilation.tap('HtmlHintPlugin', (compilation) => { + const { htmlHintConfig, distPath } = this.options; + const normalizedConfig = { + ...HTMLHint.defaultRuleset, + ...htmlHintConfig, + }; + + HtmlWebpackPlugin.getHooks(compilation).beforeEmit.tap( + 'HtmlHintPlugin', + (data) => { + const { outputName, html } = data; + const messages = HTMLHint.verify(html, normalizedConfig); + + const cached = problemsCache[outputName]; + + if (cached && cached.html === html) { + if (cached.report) { + htmlProblems.push(cached.report); + } + + return; + } + + if (messages && messages.length > 0) { + const messagesText = HTMLHint.format(messages, { + colors: chalk.supportsColor, + }) + .map((msg) => msg.split('\x1b[31m').join('\x1b[33m')) + .join('\n'); + const fileName = chalk.bold( + `${path.resolve(distPath, data.outputName)}:`, + ); + const report = `${fileName}\n${messagesText}`; + + problemsCache[outputName] = { html, report }; + htmlProblems.push(report); + } else { + problemsCache[outputName] = { html, report: '' }; + } + }, + ); + }); + + compiler.hooks.done.tap('HtmlHintPlugin', () => { + if (htmlProblems.length > 0) { + console.log(); + console.log(htmlProblems.join('\n\n')); + console.log(); + htmlProblems = []; + + if (process.env.NODE_ENV === 'production') { + throw new Error('Problems found when checking with HTML Hint'); + } + } + }); + } +} + +module.exports = HtmlHintPlugin; diff --git a/packages/chisel-plugin-static-frontend/lib/index.js b/packages/chisel-plugin-static-frontend/lib/index.js new file mode 100644 index 00000000..57cdba9a --- /dev/null +++ b/packages/chisel-plugin-static-frontend/lib/index.js @@ -0,0 +1,225 @@ +const fs = require('fs-extra'); +const path = require('path'); +const globby = require('globby'); + +// use symbol to pass options so they're not stringified when inspecting +const loaderOptionsSymbol = Symbol('loaderOptions'); + +const slash = (str) => str.replace(/\\/g, '/'); + +function mapExcept(map, toRemove) { + if (!toRemove) { + return map; + } + + return Object.fromEntries( + Object.entries(map).filter(([, value]) => value !== toRemove), + ); +} + +function setParentForChildren(posts) { + posts.forEach((post) => { + const children = post.children(); + children.forEach((child) => { + child._setParent(post); + }); + }); +} + +function setChildren(map) { + const keysWithoutSelf = Object.keys(mapExcept(map, map[''])); + if (map['']) { + map['']._setChildren( + keysWithoutSelf.map((key) => map[key]['']).filter(Boolean), + ); + } + keysWithoutSelf.forEach((key) => setChildren(map[key])); +} + +module.exports = (api, options) => { + const templatesPath = api.resolve( + options.source.base, + options.source.templates, + ); + const contentPath = api.resolve(options.source.base, options.source.content); + + const postsMap = {}; + const postsDeepMap = {}; + const filesMap = {}; + + const loaderOptions = { + options, + api, + postsMap, + postsDeepMap, + filesMap, + }; + + api.chainWebpack(async (webpackConfig) => { + const chiselLoadersOptions = { + options: 'are hidden', + [loaderOptionsSymbol]: loaderOptions, + }; + + // prettier-ignore + webpackConfig.module.rule('twig').test(/\.twig$/) + .include + .add(templatesPath) + .add(contentPath) + .end() + .use('chisel-twig-loader') + .loader(require.resolve('./twig-loader')) + .options(chiselLoadersOptions); + + // prettier-ignore + // webpackConfig.module.rule('content').test(/\.(?:md|json)}}$/) + webpackConfig.module.rule('content').test(/\.(?:md|json)$/) + .type('javascript/auto') // https://stackoverflow.com/a/49083832 + .include + .add(contentPath) + .end() + .use('chisel-twig-loader') + .loader(require.resolve('./twig-loader')) + .options(chiselLoadersOptions) + .end() + .use('chisel-content-loader') + .loader(require.resolve('./content-loader')) + .options(chiselLoadersOptions); + + webpackConfig + .plugin(`inject-revisioned`) + .use(require('./inject-revisioned')); + + const contentPathExists = await fs.pathExists(contentPath); + const templatesBasePath = contentPathExists ? contentPath : templatesPath; + const templates = path.join( + templatesBasePath, + contentPathExists ? '**/*.{twig,md,json}' : '*.twig', + ); + + const templatesFiles = await globby(slash(templates)); + + const idForFile = (file) => { + const relative = path.relative(templatesBasePath, file); + + return slash( + path.join( + path.dirname(relative), + `${path.basename(relative, path.extname(relative))}`, + ), + ); + }; + + if (contentPathExists) { + const postCreator = require('./Post'); + const getPostsCreator = require('./get-posts'); + const Datastore = require('nedb-promises'); + const db = Datastore.create(); + loaderOptions.db = db; + loaderOptions.getPostsCreator = getPostsCreator(loaderOptions); + const Post = postCreator(loaderOptions); + + for (const file of templatesFiles) { + const ext = path.extname(file); + const id = idForFile(file); + + if (postsMap[id]) { + throw new Error(`Post with id ${id} already exists`); + } + + const post = new Post({ + id, + type: ext.substr(1), + file: path.resolve(file), + }); + + postsMap[id] = post; + filesMap[path.resolve(file)] = post; + + const idParts = id.split('/'); + let map = postsDeepMap; + while (idParts.length) { + const el = idParts.shift(); + if (!map[el]) { + map[el] = {}; + } + map = map[el]; + } + map[''] = post; + } + + setChildren(postsDeepMap); + setParentForChildren(Object.values(postsMap)); + + const posts = Object.values(postsMap); + + await db.insert(posts.map((post) => post.toJSON())); + } + + templatesFiles.forEach((file) => { + const id = idForFile(file); + webpackConfig + .plugin(`template-${id}`) + .use(require('html-webpack-plugin'), [ + { + filename: `${id}.html`, + template: file, + inject: false, + minify: Boolean( + process.env.NODE_ENV === 'production' && + options.staticFrontend.buildFormat === 'minify', + ), + }, + ]); + }); + + const publicDir = api.resolve(options.source.base, options.source.public); + if (await fs.pathExists(publicDir)) { + const copyOptions = { + patterns: [ + { + from: publicDir, + to: api.resolve(options.output.base), + toType: 'dir', + globOptions: { + ignore: ['**/.DS_Store', '**/.keep'], + }, + noErrorOnMissing: true, + }, + ], + }; + // prettier-ignore + webpackConfig + .plugin('copy') + .use(require('copy-webpack-plugin'), [copyOptions]) + } + + if (options.staticFrontend.htmlHint) { + const htmlHintPath = api.resolve('.htmlhintrc'); + const htmlHintConfig = (await fs.pathExists(htmlHintPath)) + ? JSON.parse(await fs.readFile(htmlHintPath, { encoding: 'utf8' })) + : {}; + + webpackConfig + .plugin(`htmlhint`) + .use(require('./htmlhint'), [ + { htmlHintConfig, distPath: api.resolve(options.output.base) }, + ]); + } + }); + + const buildCommand = api.service.programCommands.build; + if (buildCommand) { + buildCommand.option('--no-htmlhint'); + + api.service.programCommands.build.on('option:no-htmlhint', () => { + options.staticFrontend.htmlHint = false; + }); + } + + ['dev', 'add-page'].forEach((command) => { + require(`./commands/${command}`)(api, options); + }); +}; + +module.exports.loaderOptionsSymbol = loaderOptionsSymbol; diff --git a/packages/chisel-plugin-static-frontend/lib/inject-revisioned.js b/packages/chisel-plugin-static-frontend/lib/inject-revisioned.js new file mode 100644 index 00000000..26e4c9f4 --- /dev/null +++ b/packages/chisel-plugin-static-frontend/lib/inject-revisioned.js @@ -0,0 +1,69 @@ +/* eslint-disable class-methods-use-this */ + +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const path = require('path'); + +// Based on https://github.com/danethurber/webpack-manifest-plugin/blob/v3.0.0-rc.0/lib/plugin.js#L44 +const transformExtensions = /^(gz|map)$/i; +const getFileType = (str) => { + str = str.replace(/\?.*/, ''); + const split = str.split('.'); + let ext = split.pop(); + if (transformExtensions.test(ext)) { + ext = `${split.pop()}.${ext}`; + } + return ext; +}; + +const revisionedPathRegex = /---CHISEL-REVISIONED-PATH---([\d\w+/]*=*)---/g; + +module.exports = class InjectRevisioned { + apply(compiler) { + let chunksMap = {}; + + compiler.hooks.emit.tap('InjectRevisioned', (compilation) => { + const map = {}; + const { chunks } = compilation + .getStats() + // .toJson(); + .toJson({ all: false, chunks: true }); + + chunks.forEach((chunk) => { + // console.log(chunk); + // console.log(chunk.names, chunk.name); + // console.log(chunk.files); + chunk.files + .filter((file) => !file.includes('hot-update')) + .forEach((file) => { + const ext = getFileType(file); + const name = path.posix.join( + path.posix.dirname(file), + `${path.posix.basename(chunk.id)}.${ext}`, + ); + + map[name] = file; + }); + }); + + // console.log(map); + + chunksMap = map; + }); + + compiler.hooks.compilation.tap('InjectRevisioned', (compilation) => { + HtmlWebpackPlugin.getHooks(compilation).beforeEmit.tap( + 'InjectRevisioned', + (data) => { + data.html = data.html.replace(revisionedPathRegex, (_, pathHash) => { + const assetPath = Buffer.from(pathHash, 'base64').toString('utf8'); + if (chunksMap[assetPath]) { + return chunksMap[assetPath]; + } + // return ''; + throw new Error(`File ${assetPath} seems to not be revisioned`); + }); + }, + ); + }); + } +}; diff --git a/packages/chisel-plugin-static-frontend/lib/twig-loader.js b/packages/chisel-plugin-static-frontend/lib/twig-loader.js new file mode 100644 index 00000000..c302d7ba --- /dev/null +++ b/packages/chisel-plugin-static-frontend/lib/twig-loader.js @@ -0,0 +1,149 @@ +const { factory: twigFactory } = require('twig'); +const { getOptions } = require('loader-utils'); +const fs = require('fs-extra'); +const path = require('path'); +const prettify = require('js-beautify'); +const { loaderOptionsSymbol } = require('./index'); + +const sharedFunctions = { + isDev: () => process.env.NODE_ENV === 'development', + className: (...args) => { + const name = args.shift(); + if (typeof name !== 'string' || name === '') { + return ''; + } + const classes = [name]; + let el; + for (let i = 0; i < args.length; i += 1) { + el = args[i]; + if (el && typeof el === 'string') { + classes.push(`${name}--${el}`); + } + } + return classes.join(' '); + }, +}; + +module.exports = async function chiselTwigLoader(loaderContent) { + // console.log(`Twig loader for ${this.resourcePath}`); + const isContent = loaderContent.isContent || false; + const content = isContent ? loaderContent.templateContent : loaderContent; + const twigPath = isContent ? loaderContent.templatePath : this.resourcePath; + const twigContext = {}; + + const loaderOptions = getOptions(this)[loaderOptionsSymbol]; + + if (!loaderOptions) { + throw new Error('Options not passed'); + } + + const { options, getPostsCreator, filesMap } = loaderOptions; + + // console.log({ path: this.resourcePath }); + const functions = { + ...sharedFunctions, + revisionedPath: (fullPath) => { + const pathBase64 = Buffer.from(fullPath, 'utf8').toString('base64'); + return `---CHISEL-REVISIONED-PATH---${pathBase64}---`; + }, + assetPath: (file) => + new Promise((resolve, reject) => { + // TODO: nested + this.loadModule(`~assets/${file}`, (err, source) => { + if (err) { + reject(err); + return; + } + resolve(JSON.parse(source.replace(/^[^"]+/, '').replace(/;$/, ''))); + }); + }), + getDistPath: () => './', + }; + + const post = loaderContent.post || filesMap[this.resourcePath]; + if (post) { + twigContext.post = post; + + const original = { ...functions }; + let relativeToPost = path.posix.relative( + `/${path.posix.dirname(post.id())}`, + '/', + ); + if (relativeToPost) relativeToPost += '/'; + Object.assign(functions, { + revisionedPath: (fullPath) => { + const orig = original.revisionedPath; + return `${relativeToPost}${orig(fullPath)}`; + }, + assetPath: async (file) => { + const orig = original.assetPath; + return `${relativeToPost}${await orig(file)}`; + }, + getDistPath: () => relativeToPost || './', + getPosts: getPostsCreator(this), + postLink: (p) => p.link(post), + }); + } + + if (typeof options.staticFrontend.functions === 'object') { + const context = { context: twigContext, functions: { ...functions } }; + Object.entries(options.staticFrontend.functions).forEach(([name, func]) => { + functions[name] = (...args) => func(context, ...args); + }); + } + + const Twig = twigFactory(); + + Twig.extend((TwigCore) => { + TwigCore.Templates.registerLoader('fs', (location, params, callback) => { + params.path = params.path || location; + + // console.log(`Twig load ${params.path}`); + const fullPath = path.isAbsolute(params.path) + ? params.path + : path.resolve(this.rootContext, options.source.base, params.path); + if (fullPath === twigPath) { + params.data = content; + } else { + this.addDependency(fullPath); + // possible optimization: short term cache to avoid often reading from fs + params.data = fs.readFileSync(fullPath, 'utf8'); + } + + const template = new TwigCore.Template(params); + if (typeof callback === 'function') { + callback(template); + } + return template; + }); + + Object.entries(functions).forEach(([name, func]) => { + Twig.extendFunction(name, func); + }); + }); + + const shouldPrettify = Boolean( + process.env.NODE_ENV === 'production' && + options.staticFrontend.buildFormat === 'prettify', + ); + + const prettifyOptions = { + indent_size: 2, + preserve_newlines: false, + }; + + return Twig.twig({ + path: twigPath, + base: 'templates/', + rethrow: true, + twigContext, + }) + .renderAsync(twigContext) + .then((data) => { + if (shouldPrettify) { + data = prettify.html(data, prettifyOptions); + } + + return `export default ${JSON.stringify(data)};`; + }); +}; diff --git a/packages/chisel-plugin-static-frontend/package.json b/packages/chisel-plugin-static-frontend/package.json new file mode 100644 index 00000000..cca81cd1 --- /dev/null +++ b/packages/chisel-plugin-static-frontend/package.json @@ -0,0 +1,46 @@ +{ + "name": "chisel-plugin-static-frontend", + "version": "1.0.0-alpha.5", + "description": "TODO", + "main": "lib/index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/xfiveco/generator-chisel.git", + "directory": "packages/chisel-plugin-static-frontend" + }, + "author": { + "name": "Xfive", + "email": "hello@xfive.co", + "url": "https://www.xfive.co" + }, + "homepage": "https://www.getchisel.co/", + "license": "MIT", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "bugs": { + "url": "https://github.com/xfiveco/generator-chisel/issues" + }, + "engines": { + "node": ">=10" + }, + "dependencies": { + "chisel-shared-utils": "^1.0.0-alpha.0", + "copy-webpack-plugin": "^6.0.3", + "fs-extra": "^9.0.1", + "globby": "^11.0.1", + "hexo-front-matter": "^1.0.0", + "html-webpack-plugin": "^4.3.0", + "htmlhint": "^0.14.1", + "js-beautify": "^1.11.0", + "loader-utils": "^2.0.0", + "lodash": "^4.17.19", + "marked": "^1.1.0", + "nedb-promises": "^4.0.3", + "prettier": "^2.0.5", + "speakingurl": "^14.0.1", + "twig": "^1.15.1", + "webpack": "^4.43.0", + "webpack-dev-server": "^3.11.0" + } +} diff --git a/packages/chisel-plugin-wordpress/.gitignore b/packages/chisel-plugin-wordpress/.gitignore new file mode 100644 index 00000000..7b367678 --- /dev/null +++ b/packages/chisel-plugin-wordpress/.gitignore @@ -0,0 +1 @@ +/wp-cli.phar diff --git a/generators/app/templates/styles/vendor/.keep b/packages/chisel-plugin-wordpress/.npmignore similarity index 100% rename from generators/app/templates/styles/vendor/.keep rename to packages/chisel-plugin-wordpress/.npmignore diff --git a/packages/chisel-plugin-wordpress/CHANGELOG.md b/packages/chisel-plugin-wordpress/CHANGELOG.md new file mode 100644 index 00000000..2463b88b --- /dev/null +++ b/packages/chisel-plugin-wordpress/CHANGELOG.md @@ -0,0 +1,33 @@ +# Changelog + + + +## 1.0.0-alpha.6 (2021-12-16) + +## 1.0.0-alpha.5 (2020-09-21) + +- Add Changelogs ([25d6245](https://github.com/xfiveco/generator-chisel/commit/25d6245)) +- Add Readmes ([35fd430](https://github.com/xfiveco/generator-chisel/commit/35fd430)) +- Add WP dev server test with puppeteer ([dbc0f1d](https://github.com/xfiveco/generator-chisel/commit/dbc0f1d)) +- Update WP: improve dev server startup, add more tests ([803f8fe](https://github.com/xfiveco/generator-chisel/commit/803f8fe)) +- WP: change default help option for wp command, add tests ([2205722](https://github.com/xfiveco/generator-chisel/commit/2205722)) + +## 1.0.0-alpha.4 (2020-07-06) + +- Add hooks to modify webpack options and few other things ([9ec1f07](https://github.com/xfiveco/generator-chisel/commit/9ec1f07)) + +## 1.0.0-alpha.3 (2020-07-06) + +- Add add-page command ([1a98eb4](https://github.com/xfiveco/generator-chisel/commit/1a98eb4)) + +## 1.0.0-alpha.2 (2020-07-03) + +- Fix command with npm, remove unused variable ([e1c1d07](https://github.com/xfiveco/generator-chisel/commit/e1c1d07)) + +## 1.0.0-alpha.1 (2020-07-03) + +- Fix typo, make browsersync port configurable ([a76890e](https://github.com/xfiveco/generator-chisel/commit/a76890e)) + +## 1.0.0-alpha.0 (2020-07-01) + +- Rewrite with webpack ([75952b3](https://github.com/xfiveco/generator-chisel/commit/75952b3)) diff --git a/packages/chisel-plugin-wordpress/README.md b/packages/chisel-plugin-wordpress/README.md new file mode 100644 index 00000000..f1faa9d9 --- /dev/null +++ b/packages/chisel-plugin-wordpress/README.md @@ -0,0 +1,39 @@ +# chisel-plugin-wordpress + +Modifies chisel-scripts' webpack config with copying of assets and generation of json manifest used to link assets from WordPress templates. + +## Injected Commands + +- **`chisel-scripts dev`** + + Uses [Browsersync](https://www.browsersync.io/) in combination with [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) and [webpack-hot-middleware](https://github.com/webpack-contrib/webpack-hot-middleware) to provide good development experience. + + ```text + Usage: chisel-scripts dev [options] + + start development server + ``` + +- **`chisel-scripts wp`** + + ```text + Usage: chisel-scripts wp [options] + + run WP-CLI command + ``` + +- **`chisel-scripts wp-config`** + + ```text + Usage: chisel-scripts wp-config [options] + + configure WP (writes wp/wp-config-local.php an dev-vhost.conf) + ``` + +- **`chisel-scripts add-page`** + + ```text + Usage: chisel-scripts add-page [options] + + add page(s) (creates twig templates and entries in WP) + ``` diff --git a/packages/chisel-plugin-wordpress/commands/add-page.js b/packages/chisel-plugin-wordpress/commands/add-page.js new file mode 100644 index 00000000..33b38c65 --- /dev/null +++ b/packages/chisel-plugin-wordpress/commands/add-page.js @@ -0,0 +1,92 @@ +module.exports = (api, options) => { + api.registerCommand( + 'add-page ', + (command) => + command.description( + 'add page(s) (creates twig templates and entries in WP)', + ), + async (pages) => { + const fs = require('fs-extra'); + const { runLocal, chalk } = require('chisel-shared-utils'); + const { kebabCase, template } = require('lodash'); + + const wp = (args, opts) => + runLocal(['chisel-scripts', 'wp', ...args], { + ...opts, + cwd: api.resolve(), + }); + + const { wp: wpOptions } = options; + const theme = `${wpOptions.directoryName}/wp-content/themes/${wpOptions.themeName}`; + const templatesFiles = [ + api.resolve(theme, options.source.templates, 'layouts/page.twig'), + ]; + + let templateFileSelected; + + for (const file of templatesFiles) { + if (await fs.pathExists(file)) { + templateFileSelected = file; + break; + } + } + + const templateBody = await fs.readFile(templateFileSelected, { + encoding: 'utf8', + }); + const templateCompiled = template(templateBody, { + sourceURL: templateFileSelected, + }); + + console.log(); + + for (const page of pages) { + // let slug = ''; + + const createPost = await wp( + [ + 'post', + 'create', + { post_type: 'page', post_title: page, post_status: 'publish' }, + ], + { silent: true }, + ); + + const id = /Created post (\d+)\./.exec(createPost.stdout)[1]; + + if (!id) { + throw new Error('Post id not found'); + } + + const postDetailsCmd = await wp( + ['post', 'get', id, { format: 'json' }], + { silent: true }, + ); + + const postDetails = JSON.parse(postDetailsCmd.stdout); + + const slug = postDetails.post_name; + const targetFileName = `page-${slug}.twig`; + const targetPath = api.resolve( + theme, + options.source.templates, + targetFileName, + ); + + await fs.outputFile( + targetPath, + templateCompiled({ + ...options.creatorData, + pageName: page, + pageSlug: slug, + }), + ); + + console.log(chalk.greenBright.bold(`Page ${page} created!`)); + console.log(`${chalk.bold(`Template:`)} ${targetPath}`); + console.log(`${chalk.bold(`URL:`)} ${postDetails.guid}`); + console.log(); + } + }, + ); +}; diff --git a/packages/chisel-plugin-wordpress/commands/dev.js b/packages/chisel-plugin-wordpress/commands/dev.js new file mode 100644 index 00000000..4686cc34 --- /dev/null +++ b/packages/chisel-plugin-wordpress/commands/dev.js @@ -0,0 +1,138 @@ +module.exports = (api, options) => { + const { wordPress: hooks } = api.hooks; + + api.registerCommand( + 'dev', + (command) => command.description('start development server'), + async () => { + const fs = require('fs-extra'); + + api.chainWebpack((webpackConfig) => { + webpackConfig + .plugin('hot-module-replacement') + .use(require('webpack/lib/HotModuleReplacementPlugin')); + + const hotPath = require.resolve('webpack-hot-middleware/client'); + const hotWithQuery = `${hotPath}?reload=true`; + + Object.values(webpackConfig.entryPoints.entries()).forEach((entry) => { + entry.prepend(hotWithQuery); + }); + }); + + const browserSync = require('browser-sync'); + const webpack = require('webpack'); + const webpackDevMiddleware = require('webpack-dev-middleware'); + const webpackHotMiddleware = require('webpack-hot-middleware'); + + process.env.NODE_ENV = 'development'; + + const config = await api.service.resolveWebpackConfig(); + const compiler = webpack(config); + const bs = browserSync.create(); + + const { directoryName, themeName } = options.wp; + + const devMiddlewareOptions = { + publicPath: `/wp-content/themes/${themeName}/dist`, + stats: 'errors-warnings', + }; + + await hooks.devMiddlewareOptions.promise(devMiddlewareOptions); + + const devMiddleware = webpackDevMiddleware( + compiler, + devMiddlewareOptions, + ); + + const hotMiddlewareOptions = { log: false }; + + await hooks.hotMiddlewareOptions.promise(hotMiddlewareOptions); + + const hotMiddleware = webpackHotMiddleware( + compiler, + hotMiddlewareOptions, + ); + + const browserSyncConfig = { + proxy: { + target: options.wp.url, + reqHeaders: { + 'x-chisel-proxy': '1', + }, + }, + ghostMode: false, + online: true, + middleware: [devMiddleware, hotMiddleware], + port: parseInt(process.env.PORT, 10) || 3000, + }; + + await new Promise((resolve) => { + devMiddleware.context.compiler.hooks.done.tap( + 'chisel-plugin-webpack', + resolve, + ); + }); + + await hooks.browserSyncConfig.promise(browserSyncConfig); + + await new Promise((resolve) => { + bs.init(browserSyncConfig, resolve); + }); + + const devManifestPath = api.resolve( + options.output.base, + 'manifest-dev.json', + ); + + let watchReady = false; + let fileManifestBody = ''; + const watcher = bs.watch( + api.resolve(directoryName, 'wp-content/themes', themeName), + (ev, file) => { + // save initial content of manifest file + if (!fileManifestBody && file === devManifestPath) { + fs.readFile(file, { encoding: 'utf8' }).then((content) => { + fileManifestBody = content; + }); + } + + // don't reload before initialized + if (!watchReady) return; + + // reload on changes in php and twig files + if (file.endsWith('.php') || file.endsWith('.twig')) { + bs.reload(); + } + + // detect changes in manifest (so changes in assets) and reload + if (fileManifestBody && file === devManifestPath) { + fs.readFile(file, { encoding: 'utf8' }).then((content) => { + if (content !== fileManifestBody) { + fileManifestBody = content; + bs.reload(); + } + }); + } + }, + ); + + await new Promise((resolve) => { + watcher.on('ready', () => { + watchReady = true; + resolve(); + }); + }); + + return () => { + bs.exit(); // no callback supported + return Promise.all([ + new Promise((resolve) => { + devMiddleware.close(resolve); + }), + watcher.close(), + ]); + }; + }, + ); +}; diff --git a/packages/chisel-plugin-wordpress/commands/wp-config.js b/packages/chisel-plugin-wordpress/commands/wp-config.js new file mode 100644 index 00000000..3ea4d9a9 --- /dev/null +++ b/packages/chisel-plugin-wordpress/commands/wp-config.js @@ -0,0 +1,113 @@ +module.exports = (api, options) => { + api.registerCommand( + 'wp-config', + (command) => + command.description( + 'configure WP (writes wp/wp-config-local.php an dev-vhost.conf)', + ), + async () => { + const { runLocal, copy } = require('chisel-shared-utils'); + const wp = (args, opts) => + runLocal(['chisel-scripts', 'wp', ...args], { + ...opts, + cwd: api.resolve(), + }); + const inquirer = require('inquirer'); + const path = require('path'); + + const prompts = [ + { + name: 'databaseHost', + message: 'Enter the database host:', + default: '127.0.0.1', + }, + { + type: 'number', + name: 'databasePort', + message: 'Enter the database port:', + default: 3306, + }, + { + name: 'databaseName', + message: 'Enter the database name:', + default: require(api.resolve('package.json')).name, + }, + { + name: 'databaseUser', + message: 'Enter the database user:', + default: 'root', + }, + { + type: 'password', + name: 'databasePassword', + message: 'Enter the database password:', + }, + ]; + + const promptAndCreateDB = async () => { + const answers = await inquirer.prompt(prompts); + + answers.databaseHostPort = `${answers.databaseHost}:${answers.databasePort}`; + + const { url } = options.wp; + const { tablePrefix } = options.creatorData.wp; + + await copy({ + from: path.join(__dirname, '../template'), + to: api.resolve(), + templateData: { + ...answers, + documentRoot: api.resolve('wp'), + serverName: new URL(url).hostname, + tablePrefix, + }, + }); + + const res = await wp(['db', 'query', 'SELECT 1'], { + reject: false, + silent: true, + }); + + if (res.exitCode !== 0) { + if ( + res.stderr.includes('ERROR 1049') || + res.stderr.includes('Unknown database') + ) { + await wp(['db', 'create']); + } else { + console.log(res.stdout); + console.log(res.stderr); + throw res; + } + } else { + // exists + const { useExisting } = await inquirer.prompt([ + { + type: 'confirm', + name: 'useExisting', + message: + 'Database already exist, do you want to use existing database?', + }, + ]); + + if (!useExisting) { + await wp(['db', 'drop', '--yes']); + await wp(['db', 'create']); + } + } + }; + + // eslint-disable-next-line no-constant-condition + while (true) { + try { + await promptAndCreateDB(); + break; + } catch (e) { + console.log(''); + console.log('Trying again...'); + console.log(''); + } + } + }, + ); +}; diff --git a/packages/chisel-plugin-wordpress/commands/wp.js b/packages/chisel-plugin-wordpress/commands/wp.js new file mode 100644 index 00000000..6ee34627 --- /dev/null +++ b/packages/chisel-plugin-wordpress/commands/wp.js @@ -0,0 +1,28 @@ +module.exports = (api) => { + api.registerCommand( + 'wp', + (command) => + command + .description('run WP-CLI command') + .allowUnknownOption() + .helpOption('--chisel-help'), + async () => { + const execa = require('execa'); + const path = require('path'); + + const args = process.argv.slice(3); + const wpCliPath = path.resolve(__dirname, '..', 'wp-cli.phar'); + + try { + // TODO: use: reject: false + // TODO: use chisel-shared-utils + const wp = await execa('php', [wpCliPath, '--color', ...args], { + stdio: 'inherit', + }); + process.exit(wp.exitCode); + } catch (e) { + process.exit(e.exitCode); + } + }, + ); +}; diff --git a/packages/chisel-plugin-wordpress/fetch-wp-cli.js b/packages/chisel-plugin-wordpress/fetch-wp-cli.js new file mode 100644 index 00000000..5b8982dc --- /dev/null +++ b/packages/chisel-plugin-wordpress/fetch-wp-cli.js @@ -0,0 +1,17 @@ +const axios = require('axios'); +const fs = require('fs'); +const execa = require('execa'); + +(async () => { + const { + data: file, + } = await axios( + 'https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar', + { responseType: 'arraybuffer' }, + ); + fs.writeFileSync('./wp-cli.phar', file); + await execa('php', ['./wp-cli.phar', '--info']); +})().catch((err) => { + console.error(String(err)); + process.exit(1); +}); diff --git a/packages/chisel-plugin-wordpress/index.js b/packages/chisel-plugin-wordpress/index.js new file mode 100644 index 00000000..06b44932 --- /dev/null +++ b/packages/chisel-plugin-wordpress/index.js @@ -0,0 +1,61 @@ +module.exports = (api, options) => { + const { AsyncSeriesHook } = api.tapable; + + api.registerHooks('wordPress', { + devMiddlewareOptions: new AsyncSeriesHook(['options']), + hotMiddlewareOptions: new AsyncSeriesHook(['options']), + browserSyncConfig: new AsyncSeriesHook(['config']), + }); + + api.chainWebpack((webpackConfig) => { + const path = require('path'); + const isProd = process.env.NODE_ENV === 'production'; + const outDir = api.service.projectOptions.output.assets; + + // TODO: not working when adding/removing files (on Windows only?) + // works after you modify something else + + webpackConfig.plugin('wordpress-copy').use(require('copy-webpack-plugin'), [ + { + patterns: [ + { + from: path.join( + api.service.projectOptions.source.base, + api.service.projectOptions.source.assets, + ), + // from: path.posix.join( + // api.service.projectOptions.source.base, + // api.service.projectOptions.source.assets, + // '**/*' + // ), + // from: path.posix.join( + // api.service.projectOptions.source.base, + // api.service.projectOptions.source.assets + // ), + to: `${outDir}/[path][name].[contenthash:8].[ext]`, + }, + ], + }, + ]); + + webpackConfig + .plugin('wordpress-manifest') + .use(require('webpack-manifest-plugin'), [ + { + fileName: `manifest${!isProd ? '-dev' : ''}.json`, + writeToFileEmit: !isProd, + map(obj) { + if (obj.isAsset && obj.name.startsWith(`${outDir}/`)) { + obj.name = obj.name.replace(/\.[\da-f]{8}(?=(?:\.[^.]*)?$)/, ''); + } + + return obj; + }, + }, + ]); + }); + + ['dev', 'wp', 'wp-config', 'add-page'].forEach((command) => { + require(`./commands/${command}`)(api, options); + }); +}; diff --git a/packages/chisel-plugin-wordpress/package.json b/packages/chisel-plugin-wordpress/package.json new file mode 100644 index 00000000..d214b1cd --- /dev/null +++ b/packages/chisel-plugin-wordpress/package.json @@ -0,0 +1,42 @@ +{ + "name": "chisel-plugin-wordpress", + "version": "1.0.0-alpha.6", + "description": "TODO", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/xfiveco/generator-chisel.git", + "directory": "packages/chisel-wordpress" + }, + "author": { + "name": "Xfive", + "email": "hello@xfive.co", + "url": "https://www.xfive.co" + }, + "homepage": "https://www.getchisel.co/", + "license": "MIT", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1", + "prepare": "node ./fetch-wp-cli.js" + }, + "bugs": { + "url": "https://github.com/xfiveco/generator-chisel/issues" + }, + "engines": { + "node": ">=10" + }, + "dependencies": { + "axios": "^0.19.2", + "browser-sync": "^2.26.7", + "chisel-shared-utils": "^1.0.0-alpha.0", + "copy-webpack-plugin": "^6.0.1", + "execa": "^4.0.2", + "fs-extra": "^9.0.1", + "inquirer": "^7.1.0", + "lodash": "^4.17.15", + "webpack": "^4.43.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-hot-middleware": "^2.25.0", + "webpack-manifest-plugin": "3.0.0-rc.0" + } +} diff --git a/generators/wp-config/templates/dev-vhost.conf b/packages/chisel-plugin-wordpress/template/dev-vhost.chisel-tpl.conf similarity index 100% rename from generators/wp-config/templates/dev-vhost.conf rename to packages/chisel-plugin-wordpress/template/dev-vhost.chisel-tpl.conf diff --git a/generators/wp-config/templates/wp-config-local.php b/packages/chisel-plugin-wordpress/template/wp/wp-config-local.chisel-tpl.php similarity index 83% rename from generators/wp-config/templates/wp-config-local.php rename to packages/chisel-plugin-wordpress/template/wp/wp-config-local.chisel-tpl.php index ab1bde2a..607230c0 100644 --- a/generators/wp-config/templates/wp-config-local.php +++ b/packages/chisel-plugin-wordpress/template/wp/wp-config-local.chisel-tpl.php @@ -12,16 +12,16 @@ // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ -define( 'DB_NAME', 'database_name_here' ); +define( 'DB_NAME', '<%= databaseName %>' ); /** MySQL database username */ -define( 'DB_USER', 'username_here' ); +define( 'DB_USER', '<%= databaseUser %>' ); /** MySQL database password */ -define( 'DB_PASSWORD', 'password_here' ); +define( 'DB_PASSWORD', '<%= databasePassword %>' ); /** MySQL hostname */ -define( 'DB_HOST', 'localhost' ); +define( 'DB_HOST', '<%= databaseHostPort %>' ); /** @@ -30,7 +30,7 @@ * You can have multiple installations in one database if you give each * a unique prefix. Only numbers, letters, and underscores please! */ -$table_prefix = 'wp_'; +$table_prefix = '<%= tablePrefix %>'; /** * For developers: WordPress debugging mode. diff --git a/packages/chisel-scripts/CHANGELOG.md b/packages/chisel-scripts/CHANGELOG.md new file mode 100644 index 00000000..6d99b4e3 --- /dev/null +++ b/packages/chisel-scripts/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + + + +## 1.0.0-alpha.8 (2021-12-16) + +## 1.0.0-alpha.7 (2020-09-21) + +- Add WP dev server test with puppeteer ([dbc0f1d](https://github.com/xfiveco/generator-chisel/commit/dbc0f1d)) + +## 1.0.0-alpha.6 (2020-08-06) + +- Update CSS bundling: use custom loader instead of importer, make fibers optional ([829dc26](https://github.com/xfiveco/generator-chisel/commit/829dc26)) + +## 1.0.0-alpha.5 (2020-08-04) + +- Add frontend generator and commands tests ([c32fa26](https://github.com/xfiveco/generator-chisel/commit/c32fa26)) +- Fix source maps for styles during development ([8ba6e78](https://github.com/xfiveco/generator-chisel/commit/8ba6e78)) +- Improve base config, final config generation ([61ce1d5](https://github.com/xfiveco/generator-chisel/commit/61ce1d5)) +- Update babel loader config: support transpileDependencies, exclude assets ([c5e21bd](https://github.com/xfiveco/generator-chisel/commit/c5e21bd)) + +## 1.0.0-alpha.4 (2020-07-21) + +- Add Changelogs ([25d6245](https://github.com/xfiveco/generator-chisel/commit/25d6245)) +- Add Readmes ([35fd430](https://github.com/xfiveco/generator-chisel/commit/35fd430)) +- Add Static Frontend ([0c6db7a](https://github.com/xfiveco/generator-chisel/commit/0c6db7a)) + +## 1.0.0-alpha.3 (2020-07-06) + +- Add hooks to modify webpack options and few other things ([9ec1f07](https://github.com/xfiveco/generator-chisel/commit/9ec1f07)) + +## 1.0.0-alpha.2 (2020-07-06) + +- Add build report support ([048a84a](https://github.com/xfiveco/generator-chisel/commit/048a84a)) + +## 1.0.0-alpha.1 (2020-07-06) + +- Add add-page command ([1a98eb4](https://github.com/xfiveco/generator-chisel/commit/1a98eb4)) + +## 1.0.0-alpha.0 (2020-07-01) + +- Rewrite with webpack ([75952b3](https://github.com/xfiveco/generator-chisel/commit/75952b3)) diff --git a/packages/chisel-scripts/README.md b/packages/chisel-scripts/README.md new file mode 100644 index 00000000..ad55a8da --- /dev/null +++ b/packages/chisel-scripts/README.md @@ -0,0 +1,26 @@ +# chisel-scripts + +Main package containing scripts and configuration used by Chisel projects. + +## Injected commands + +- **`chisel-scripts build`** + + ```text + Usage: chisel-scripts build [options] + + build for production + + Options: + --no-clean do not remove the dist directory before building the project + --watch watch for changes + --report generate report to help analyze bundles content + ``` + +- **`chisel-scripts inspect`** + + ```text + Usage: chisel-scripts inspect [options] + + inspect internal webpack config + ``` diff --git a/packages/chisel-scripts/bin/chisel-scripts.js b/packages/chisel-scripts/bin/chisel-scripts.js new file mode 100644 index 00000000..82d00822 --- /dev/null +++ b/packages/chisel-scripts/bin/chisel-scripts.js @@ -0,0 +1,27 @@ +#!/usr/bin/env node + +const Service = require('../lib/Service'); + +// console.log('CREATE SERVICE'); + +if (!Object.fromEntries) { + Object.fromEntries = function fromEntries(iterable) { + return [...iterable].reduce((obj, [key, val]) => { + obj[key] = val; + return obj; + }, {}); + }; +} + +if (typeof jest !== 'undefined') { + module.exports = (argv) => { + const service = new Service(); + return service.run(argv[0], argv.slice(1)); + }; +} else { + const service = new Service(); + service.run(process.argv[2], process.argv.slice(3)).catch((err) => { + console.error(err); + process.exit(1); + }); +} diff --git a/packages/chisel-scripts/lib/PluginAPI.js b/packages/chisel-scripts/lib/PluginAPI.js new file mode 100644 index 00000000..789affe3 --- /dev/null +++ b/packages/chisel-scripts/lib/PluginAPI.js @@ -0,0 +1,89 @@ +const path = require('path'); +const tapable = require('tapable'); + +// Based on https://github.com/vuejs/vue-cli/blob/80b93951b1710733a66765cbd535b12b7bb59279/packages/%40vue/cli-service/lib/PluginAPI.js + +module.exports = class PluginAPI { + constructor(id, service) { + this.id = id; + /** @type import('./Service') */ + this.service = service; + + this.tapable = tapable; + } + + get hooks() { + return this.service.hooks; + } + + /** + * Register a command that will become available as `chisel-scripts [name]`. + * + * @param {string} name + * @param {object} [opts] + * @param {function} fn + * (args: { [string]: string }, rawArgs: string[]) => ?Promise + */ + registerCommand(name, opts, fn) { + if (!fn) { + fn = opts; + opts = null; + } + + const command = this.service.program.command(name); + this.service.programCommands[command.name()] = command; + + command.action(fn); + + if (opts) { + opts(command); + } + } + + registerHooks(scope, hooks = {}) { + if (this.service.hooksFromPlugins[scope]) { + throw new Error(`Hooks scope ${scope} is already registered`); + } + + this.service.hooksFromPlugins[scope] = Object.freeze({ ...hooks }); + this.service.hooks = Object.freeze({ + ...this.service.hooksBase, + ...this.service.hooksFromPlugins, + }); + } + + /** + * Register a function that will receive a chainable webpack config + * the function is lazy and won't be called until `resolveWebpackConfig` is + * called + * + * @param {function} fn + */ + chainWebpack(fn) { + this.service.webpackChainFns.push(fn); + } + + /** + * Register + * - a webpack configuration object that will be merged into the config + * OR + * - a function that will receive the raw webpack config. + * the function can either mutate the config directly or return an object + * that will be merged into the config. + * + * @param {object | function} fn + */ + configureWebpack(fn) { + this.service.webpackRawConfigFns.push(fn); + } + + /** + * Resolve path for a project. + * + * @param {string} _path - Relative path from project root + * @return {string} The resolved absolute path. + */ + resolve(..._path) { + return path.resolve(this.service.context, ..._path.filter(Boolean)); + } +}; diff --git a/packages/chisel-scripts/lib/Service.js b/packages/chisel-scripts/lib/Service.js new file mode 100644 index 00000000..b8a221a4 --- /dev/null +++ b/packages/chisel-scripts/lib/Service.js @@ -0,0 +1,249 @@ +// Based on https://github.com/vuejs/vue-cli/blob/80b93951b1710733a66765cbd535b12b7bb59279/packages/%40vue/cli-service/lib/Service.js + +const merge = require('webpack-merge'); +const Config = require('webpack-chain'); +const path = require('path'); +const { defaultsDeep } = require('lodash'); +const { Command } = require('commander'); +const { AsyncSeriesHook } = require('tapable'); +const PluginAPI = require('./PluginAPI'); + +function cloneRuleNames(to, from) { + if (!to || !from) { + return; + } + from.forEach((r, i) => { + if (to[i]) { + Object.defineProperty(to[i], '__ruleNames', { + // eslint-disable-next-line no-underscore-dangle + value: r.__ruleNames, + }); + cloneRuleNames(to[i].oneOf, r.oneOf); + } + }); +} + +module.exports = class Service { + constructor(context) { + this.initialized = false; + this.webpackChainFns = []; + this.webpackRawConfigFns = []; + + this.hooksBase = Object.freeze({ + pluginsToInitialize: new AsyncSeriesHook(['plugins']), + pluginsInitialized: new AsyncSeriesHook([]), + projectOptionsLoaded: new AsyncSeriesHook(['options']), + configHooksLoaded: new AsyncSeriesHook(['service']), + }); + this.hooksFromPlugins = {}; + this.hooks = this.hooksBase; + + this.program = new Command('chisel-scripts'); + this.programCommands = {}; + this.context = context || process.env.CHISEL_CONTEXT || process.cwd(); + this.plugins = this.loadPlugins(); + } + + // eslint-disable-next-line class-methods-use-this + loadPlugins() { + const idToPlugin = (id) => ({ + id: id.replace(/^.\//, 'built-in:'), + apply: require(id), + }); + + const builtInPlugins = [ + // './commands/serve', + './commands/build', + './commands/inspect', + // config plugins are order sensitive + './config/base', + './config/js', + './config/css', + // './config/prod', + ]; + + const plugins = []; + + plugins.push(...builtInPlugins.map(idToPlugin)); + + return plugins; + } + + async initializePlugins() { + const plugins = [...this.plugins]; + await this.hooks.pluginsToInitialize.promise(plugins); + + for (const { id, apply } of plugins) { + await apply(new PluginAPI(id, this), this.projectOptions); + } + + await this.hooks.pluginsInitialized.promise(); + } + + async init() { + if (this.initialized) return; + this.initialized = true; + + this.program.version(require('../package.json').version); + + const baseOptions = require('./chisel.config.base.js'); + const userOptions = require(path.resolve(this.context, 'chisel.config.js')); + let userLocalOptions = {}; + try { + userLocalOptions = require(path.resolve( + this.context, + 'chisel.config.local.js', + )); + } catch (e) { + // + } + + this.projectOptions = defaultsDeep( + {}, + userLocalOptions, + userOptions, + baseOptions, + ); + + await this.hooks.projectOptionsLoaded.promise(this.projectOptions); + + this.initializeProjectOptionsHooks(); + + await this.hooks.configHooksLoaded.promise(this); + + if (Array.isArray(userOptions.plugins)) { + userOptions.plugins.forEach((plugin, index) => { + if (typeof plugin === 'string') { + this.plugins.push({ id: plugin, apply: require(plugin) }); + } else if (typeof plugin === 'function') { + this.plugins.push({ + id: plugin.name || `plugin${index}`, + apply: plugin, + }); + } + }); + } + + await this.initializePlugins(); + + // apply webpack configs from project config file + if (this.projectOptions.chainWebpack) { + this.webpackChainFns.push(this.projectOptions.chainWebpack); + } + + if (this.projectOptions.configureWebpack) { + this.webpackRawConfigFns.push(this.projectOptions.configureWebpack); + } + } + + initializeProjectOptionsHooks() { + const { hooks: optionsHooks } = this.projectOptions; + if (!optionsHooks) return; + + const subscribe = (hooks, taps) => { + Object.entries(taps).forEach(([name, tap]) => { + const hook = hooks[name]; + + if (hook instanceof AsyncSeriesHook) { + hook.tapPromise('ChiselConfig', (...args) => + Promise.resolve(tap(...args)), + ); + } else { + throw new Error(`Don't know how to tap to ${name} hook`); + } + }); + }; + + const hooksToSubscribe = Object.fromEntries( + Object.entries(optionsHooks).filter( + ([, value]) => typeof value === 'function', + ), + ); + + const hooksFromPlugins = Object.fromEntries( + Object.entries(optionsHooks).filter( + ([, value]) => typeof value === 'object', + ), + ); + + subscribe(this.hooks, hooksToSubscribe); + + if (Object.keys(hooksFromPlugins).length > 0) { + this.hooks.pluginsInitialized.tap('Service', () => { + Object.entries(hooksFromPlugins).forEach(([plugin, taps]) => { + subscribe(this.hooks[plugin], taps); + }); + }); + } + } + + async run(name, args = []) { + await this.init(); + + const commanderArgs = [...(name ? [name] : []), ...args]; + + await this.program.parseAsync(commanderArgs, { from: 'user' }); + if (this.program._actionResults) { + const results = await Promise.all(this.program._actionResults); + if (results.length === 1) { + return results[0]; + } + + return results; + } + + return undefined; + } + + async resolveChainableWebpackConfig() { + const chainableConfig = new Config(); + for (const fn of this.webpackChainFns) { + await fn(chainableConfig); + } + return chainableConfig; + } + + async resolveWebpackConfig(chainableConfig) { + if (!chainableConfig) { + chainableConfig = await this.resolveChainableWebpackConfig(); + } + + // get raw config + let config = chainableConfig.toConfig(); + const original = config; + + if (typeof config.node === 'undefined') { + config.node = false; + } + + if (!Array.isArray(config.externals)) { + config.externals = + typeof config.externals === 'undefined' ? [] : [config.externals]; + } + + // apply raw config fns + this.webpackRawConfigFns.forEach((fn) => { + if (typeof fn === 'function') { + // function with optional return value + const res = fn(config); + if (res) { + config = merge(config, res); + } + } else if (fn) { + // merge literal values + config = merge(config, fn); + } + }); + + // #2206 If config is merged by merge-webpack, it discards the __ruleNames + // information injected by webpack-chain. Restore the info so that + // vue inspect works properly. + if (config !== original) { + cloneRuleNames( + config.module && config.module.rules, + original.module && original.module.rules, + ); + } + return config; + } +}; diff --git a/packages/chisel-scripts/lib/chisel.config.base.js b/packages/chisel-scripts/lib/chisel.config.base.js new file mode 100644 index 00000000..0905c0b2 --- /dev/null +++ b/packages/chisel-scripts/lib/chisel.config.base.js @@ -0,0 +1,31 @@ +module.exports = { + source: { + base: 'src', + scripts: 'scripts', + styles: 'styles', + assets: 'assets', + templates: 'templates', + content: '../content', + public: '../public', + }, + + output: { + base: 'dist', + scripts: 'scripts', + styles: 'styles', + assets: 'assets', + }, + + wp: { + directoryName: 'wp', + }, + + staticFrontend: { + serveDist: false, + skipHtmlExtension: false, + buildFormat: 'prettify', // prettify, minify, as-is/undefined + htmlHint: true, + }, + + plugins: [], +}; diff --git a/packages/chisel-scripts/lib/commands/build/formatStats.js b/packages/chisel-scripts/lib/commands/build/formatStats.js new file mode 100644 index 00000000..2925a1f2 --- /dev/null +++ b/packages/chisel-scripts/lib/commands/build/formatStats.js @@ -0,0 +1,79 @@ +// https://github.com/vuejs/vue-cli/blob/dcfb0bdbc948d73371f70d650f0f808f81c51cc1/packages/%40vue/cli-service/lib/commands/build/formatStats.js#L1 + +module.exports = function formatStats(stats, dir, assetsDir, api) { + const fs = require('fs'); + const path = require('path'); + const zlib = require('zlib'); + const ui = require('cliui')({ width: 80 }); + const { chalk } = require('chisel-shared-utils'); + + const json = stats.toJson({ + hash: false, + modules: false, + chunks: false, + }); + + let assets = json.assets + ? json.assets + : json.children.reduce((acc, child) => acc.concat(child.assets), []); + + const seenNames = new Map(); + const isJS = (val) => /\.js$/.test(val); + const isCSS = (val) => /\.css$/.test(val); + const isMinJS = (val) => /\.min\.js$/.test(val); + assets = assets + .map((a) => { + [a.name] = a.name.split('?'); + return a; + }) + .filter((a) => { + if (seenNames.has(a.name)) { + return false; + } + seenNames.set(a.name, true); + return (isJS(a.name) || isCSS(a.name)) && !a.name.startsWith(assetsDir); + }) + .sort((a, b) => { + if (isJS(a.name) && isCSS(b.name)) return -1; + if (isCSS(a.name) && isJS(b.name)) return 1; + if (isMinJS(a.name) && !isMinJS(b.name)) return -1; + if (!isMinJS(a.name) && isMinJS(b.name)) return 1; + return b.size - a.size; + }); + + function formatSize(size) { + return `${(size / 1024).toFixed(2)} KiB`; + } + + function getGzippedSize(asset) { + const filepath = api.resolve(path.join(dir, asset.name)); + const buffer = fs.readFileSync(filepath); + return formatSize(zlib.gzipSync(buffer).length); + } + + function makeRow(a, b, c) { + return ` ${a}\t ${b}\t ${c}`; + } + + ui.div( + `${makeRow( + chalk.cyan.bold(`File`), + chalk.cyan.bold(`Size`), + chalk.cyan.bold(`Gzipped`), + )}\n\n${assets + .map((asset) => + makeRow( + /js$/.test(asset.name) + ? chalk.green(asset.name) + : chalk.blue(asset.name), + formatSize(asset.size), + getGzippedSize(asset), + ), + ) + .join(`\n`)}`, + ); + + return `${ui.toString()}\n\n ${chalk.gray( + `Images and other types of assets omitted.`, + )}\n`; +}; diff --git a/packages/chisel-scripts/lib/commands/build/index.js b/packages/chisel-scripts/lib/commands/build/index.js new file mode 100644 index 00000000..4dd9ba74 --- /dev/null +++ b/packages/chisel-scripts/lib/commands/build/index.js @@ -0,0 +1,125 @@ +// TODO: no minify? +// TODO: report + +module.exports = (api, options) => { + api.registerCommand( + 'build', + (command) => + command + .description('build for production') + .option( + '--no-clean', + 'do not remove the dist directory before building the project', + ) + .option('--watch', 'watch for changes') + .option('--report', 'generate report to help analyze bundles content'), + async (cmd) => { + const path = require('path'); + const webpack = require('webpack'); + const { chalk } = require('chisel-shared-utils'); + const fs = require('fs-extra'); + const formatStats = require('./formatStats'); + + process.env.NODE_ENV = 'production'; + + if (cmd.clean) { + await fs.remove(api.resolve(options.output.base)); + } + + const REPORT_ANALYZER_FILE_NAME = 'report-analyzer.html'; + api.chainWebpack((webpackConfig) => { + if (cmd.report) { + webpackConfig + .plugin('webpack-bundle-analyzer') + .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, [ + { + analyzerMode: 'static', + reportFilename: REPORT_ANALYZER_FILE_NAME, + openAnalyzer: false, + }, + ]); + } + }); + + const config = await api.service.resolveWebpackConfig(); + + await new Promise((resolve, reject) => { + const targetDir = api.resolve(options.output.base); + config.watch = Boolean(cmd.watch); + + webpack(config, (err, stats) => { + if (err) { + reject(err); + return; + } + + const info = stats.toJson(); + + if (stats.hasErrors()) { + console.log(stats.toString({ colors: chalk.supportsColor })); + reject(new Error('Build failed with errors.')); + return; + } + + if (stats.hasWarnings()) { + console.warn(info.warnings); + } + + const targetDirShort = path.relative(api.service.context, targetDir); + const assetsDir = `${options.output.assets}/`; + console.log(); + console.log(formatStats(stats, targetDirShort, assetsDir, api)); + + resolve(); + }); + }); + + if (cmd.report) { + const slash = (str) => str.replace(/\\/g, '/'); + const { explore } = require('source-map-explorer'); + const open = require('open'); + + const outAnalyzer = api.resolve( + options.output.base, + REPORT_ANALYZER_FILE_NAME, + ); + const outSmScripts = api.resolve( + options.output.base, + 'report-source-map-scripts.html', + ); + const outSmStyles = api.resolve( + options.output.base, + 'report-source-map-styles.html', + ); + + await Promise.all([ + explore( + slash( + api.resolve(options.output.base, options.output.scripts, '*.js'), + ), + { output: { format: 'html', filename: outSmScripts } }, + ), + explore( + slash( + api.resolve(options.output.base, options.output.styles, '*.css'), + ), + { output: { format: 'html', filename: outSmStyles } }, + ), + ]).then(() => {}); + + console.log(); + console.log(chalk.greenBright.bold(`Reports generated:`)); + console.log(`${chalk.bold(`Webpack Bundle Analyzer:`)} ${outAnalyzer}`); + console.log( + `${chalk.bold(`Source map for script(s):`)} ${outSmScripts}`, + ); + console.log(`${chalk.bold(`Source map for style(s):`)} ${outSmStyles}`); + console.log(); + + open(outAnalyzer); + open(outSmScripts); + open(outSmStyles); + } + }, + ); +}; diff --git a/packages/chisel-scripts/lib/commands/inspect.js b/packages/chisel-scripts/lib/commands/inspect.js new file mode 100644 index 00000000..4cb280d0 --- /dev/null +++ b/packages/chisel-scripts/lib/commands/inspect.js @@ -0,0 +1,14 @@ +module.exports = (api) => { + api.registerCommand( + 'inspect', + (command) => command.description('inspect internal webpack config'), + async () => { + const { toString } = require('webpack-chain'); + const { highlight } = require('cli-highlight'); + + const config = await api.service.resolveWebpackConfig(); + + console.log(highlight(toString(config), { language: 'js' })); + }, + ); +}; diff --git a/packages/chisel-scripts/lib/config/base.js b/packages/chisel-scripts/lib/config/base.js new file mode 100644 index 00000000..eabd80b6 --- /dev/null +++ b/packages/chisel-scripts/lib/config/base.js @@ -0,0 +1,201 @@ +module.exports = (api, options) => { + api.chainWebpack(async (webpackConfig) => { + const globby = require('globby'); + const path = require('path'); + + const isProd = process.env.NODE_ENV === 'production'; + const { + productionSourceMap = true, + productionMinimize = true, + react, + } = options; + + if (isProd) { + webpackConfig + .mode('production') + .devtool(productionSourceMap ? 'source-map' : false); + + if (!productionMinimize) { + webpackConfig.optimization.minimize(false); + } + } else { + // webpackConfig.mode('development').devtool('cheap-module-eval-source-map'); + webpackConfig.mode('development').devtool(false); + + // Use separate source maps for styles due to + // https://github.com/webpack-contrib/mini-css-extract-plugin/issues/529 + + const devToolShared = { + module: true, + columns: false, + noSources: false, + }; + + // * is mini-css-extract-plugin + + webpackConfig + .plugin('devtool-default') + .use(require('webpack/lib/EvalSourceMapDevToolPlugin'), [ + { + ...devToolShared, + test: /(?!(?:^\*|\.s?css)$)/, + }, + ]); + + webpackConfig + .plugin('devtool-styles') + .use(require('webpack/lib/SourceMapDevToolPlugin'), [ + { + ...devToolShared, + test: /(?=(?:^\*|\.s?css)$)/, + }, + ]); + } + + const baseDir = api.resolve(options.source.base); + + webpackConfig.context(api.service.context); + + ( + await globby([ + path.join(baseDir, options.source.scripts, '*.js').replace(/\\/g, '/'), + path.join(baseDir, options.source.styles, '*.scss').replace(/\\/g, '/'), + ]) + ) + .map((p) => path.relative(api.service.context, p)) + .sort() + .forEach((p) => { + const ext = path.extname(p); + const base = path.basename(p, ext); + const isScript = ext !== '.scss'; + const outDir = options.output[!isScript ? 'styles' : 'scripts']; + const name = `${outDir}/${base}`; + const entry = webpackConfig.entry(name).add(`./${p}`); + + if (isScript) { + if (react) { + entry.prepend('react-hot-loader/patch'); + } + } + }); + + const outScriptsDir = options.output.scripts; + webpackConfig.output + .path(api.resolve(options.output.base)) + .filename(`[name]${isProd ? '.[contenthash:8]' : ''}.js`) + .chunkFilename(`${outScriptsDir}/[id].js`); + + // prettier-ignore + webpackConfig.resolve + .modules + .add('node_modules') + .add(api.resolve('node_modules')) + .end() + .alias + .set('@@', api.resolve(options.source.base)) + .set('~~', api.resolve(options.source.base)) + .set('@', api.resolve(options.source.base, options.source.scripts)) + .set('~', api.resolve(options.source.base, options.source.scripts)) + .set('assets', api.resolve(options.source.base, options.source.assets)) + .set('~assets', api.resolve(options.source.base, options.source.assets)); + + if (react) { + if (!isProd) { + webpackConfig.resolve.alias.set('react-dom', '@hot-loader/react-dom'); + } + } + + const fileLoaderOptions = { + name(p) { + const relative = path.relative( + path.join(baseDir, options.source.assets), + path.dirname(p), + ); + + if (!relative) { + return `${options.output.assets}/[name].[hash:8].[ext]`; + } + + return `${options.output.assets}/[folder]/[name].[hash:8].[ext]`; + }, + }; + + const urlLoaderOptions = { + generator(content, mimetype, encoding, resourcePath) { + if (resourcePath.endsWith('.svg')) { + return require('mini-svg-data-uri')(content.toString()); + } + + return `data:${mimetype}${ + encoding ? `;${encoding}` : '' + },${content.toString(encoding || undefined)}`; + }, + }; + + // prettier-ignore + webpackConfig.module + .rule('assets') + .include + .add(api.resolve(path.join(baseDir, options.source.assets))) + .end() + .oneOf('inline') + .resourceQuery(/inline/) + .use('url') + .loader('url-loader') + .options(urlLoaderOptions) + .end() + .end() + .oneOf('external') + .use('file-loader') + .loader(require.resolve('file-loader')) + .options(fileLoaderOptions) + + // prettier-ignore + webpackConfig.resolveLoader + .modules + .add('node_modules') + .add(api.resolve('node_modules')) + + webpackConfig + .plugin('case-sensitive-paths') + .use(require('case-sensitive-paths-webpack-plugin')); + + webpackConfig + .plugin('chisel-dynamic-public-path') + .use(require('../webpack-plugins/DynamicPublicPath')); + + webpackConfig.plugin('webpackbar').use(require('webpackbar')); + + if (isProd) { + // keep chunk ids stable so async chunks have consistent hash (#1916) + webpackConfig + .plugin('named-chunks') + .use(require('webpack/lib/NamedChunksPlugin'), [ + (chunk) => { + if (chunk.name) { + return chunk.name; + } + + const hash = require('hash-sum'); + const joinedHash = hash( + Array.from(chunk.modulesIterable, (m) => m.id).join('_'), + ); + return `chunk-${joinedHash}`; + }, + ]); + + // keep module.id stable when vendor modules does not change + webpackConfig + .plugin('hash-module-ids') + .use(require('webpack/lib/HashedModuleIdsPlugin'), [ + { hashDigest: 'hex' }, + ]); + + if (productionMinimize) { + webpackConfig + .plugin('unminified-webpack-plugin') + .use(require('unminified-webpack-plugin'), [{ postfix: 'full' }]); + } + } + }); +}; diff --git a/packages/chisel-scripts/lib/config/css.js b/packages/chisel-scripts/lib/config/css.js new file mode 100644 index 00000000..b6e6537a --- /dev/null +++ b/packages/chisel-scripts/lib/config/css.js @@ -0,0 +1,91 @@ +module.exports = (api, options) => { + api.chainWebpack((webpackConfig) => { + const path = require('path'); + + const isProd = process.env.NODE_ENV === 'production'; + const sourceMap = true; + + const sassLoaderOptions = { + sourceMap, + sassOptions: { + indentedSyntax: false, + includePaths: [api.resolve('node_modules')], // TODO: don't use? + outputStyle: 'expanded', + }, + }; + + const postCssLoaderOptions = { + sourceMap, + }; + + const cssLoaderOptions = { + sourceMap, + import: false, + }; + + const extractCssLoaderOptions = { + hmr: !isProd, + publicPath: path.relative( + api.resolve(path.join(options.source.base, options.source.styles)), + api.resolve(options.source.base), + ), + }; + + const assetsDir = api.resolve( + path.join(options.source.base, options.source.assets), + ); + + // Note: thread loader cannot be used right now + // https://github.com/webpack-contrib/thread-loader/issues/79 + + const createCssLoader = (rule, test) => { + // prettier-ignore + return webpackConfig.module.rule(rule).test(test) + .exclude + .add(assetsDir) + .end() + .use('extract-css-loader') + .loader(require('mini-css-extract-plugin').loader) + .options(extractCssLoaderOptions) + .end() + .use('css-loader') + .loader(require.resolve('css-loader')) + .options(cssLoaderOptions) + .end() + .use('postcss-loader') + .loader(require.resolve('postcss-loader')) + .options(postCssLoaderOptions) + .end() + }; + + createCssLoader('css', /\.css$/); + + // prettier-ignore + createCssLoader('scss', /\.scss$/) + .use('sass-loader') + .loader(require.resolve('sass-loader')) + .options(sassLoaderOptions) + .end() + .use('sass-glob-loader') + .loader(require.resolve('../webpack-loaders/sass-glob-loader.js')) + .end(); + + webpackConfig + .plugin('extract-css') + .use(require('mini-css-extract-plugin'), [ + { filename: `[name]${isProd ? '.[contenthash:8]' : ''}.css` }, + ]); + + webpackConfig.optimization + .minimizer('css') + .use(require.resolve('../webpack-plugins/OptimizeCssnanoPlugin'), [ + { sourceMap: true }, + ]); + + if (isProd) { + webpackConfig + .plugin('style-only-entries') + .use(require('webpack-fix-style-only-entries'), [{ silent: true }]); + } + }); +}; diff --git a/packages/chisel-scripts/lib/config/js.js b/packages/chisel-scripts/lib/config/js.js new file mode 100644 index 00000000..fcc40787 --- /dev/null +++ b/packages/chisel-scripts/lib/config/js.js @@ -0,0 +1,52 @@ +// TODO: allow easy inclusion of selected node modules +// cache loader? + +const path = require('path'); + +const isWindows = process.platform === 'win32'; +// https://github.com/vuejs/vue-cli/blob/544e0547054947c471fe9d71a2b967e57f5f3111/packages/%40vue/cli-plugin-babel/index.js +function genTranspileDepRegex(transpileDependencies) { + const deps = transpileDependencies.map((dep) => { + if (typeof dep === 'string') { + const depPath = path.join('node_modules', dep, '/'); + return isWindows + ? depPath.replace(/\\/g, '\\\\') // double escape for windows style path + : depPath; + } + if (dep instanceof RegExp) { + return dep.source; + } + return undefined; + }); + return deps.length ? new RegExp(deps.join('|')) : null; +} + +module.exports = (api, options) => { + api.chainWebpack((webpackConfig) => { + const transpileDepRegex = genTranspileDepRegex( + options.transpileDependencies || [], + ); + + const excludeFunction = (filepath) => { + if (transpileDepRegex && transpileDepRegex.test(filepath)) { + return false; + } + // Don't transpile node_modules + return /node_modules/.test(filepath); + }; + + // prettier-ignore + webpackConfig.module.rule('js') + .test(/\.m?jsx?$/) + .exclude + .add(excludeFunction) + .add(api.resolve(options.source.base, options.source.assets)) + .end() + .use('babel-loader') + .loader(require.resolve('babel-loader')) + + webpackConfig.optimization + .minimizer('js') + .use(require.resolve('terser-webpack-plugin')); + }); +}; diff --git a/packages/chisel-scripts/lib/generate-and-serialize-config.js b/packages/chisel-scripts/lib/generate-and-serialize-config.js new file mode 100644 index 00000000..8185d0ad --- /dev/null +++ b/packages/chisel-scripts/lib/generate-and-serialize-config.js @@ -0,0 +1,9 @@ +console.log = console.error.bind(console); + +const { toString } = require('webpack-chain'); +const config = require('../webpack.config'); + +config.then((cfg) => { + cfg.plugins = []; // problems with serialization + process.stdout.write(toString(cfg, { verbose: true })); +}); diff --git a/packages/chisel-scripts/lib/webpack-loaders/sass-glob-loader.js b/packages/chisel-scripts/lib/webpack-loaders/sass-glob-loader.js new file mode 100644 index 00000000..8b298ce4 --- /dev/null +++ b/packages/chisel-scripts/lib/webpack-loaders/sass-glob-loader.js @@ -0,0 +1,41 @@ +// Based on https://github.com/mikevercoelen/gulp-sass-glob/blob/255ee047789e69c82d5e3fc87452360ef8c56f41/src/index.js + +// we initially used custom dart-sass importer instead of this but there +// is noticeable performance difference + +const path = require('path'); +const globby = require('globby'); + +const IMPORT_RE = /^([ \t]*(?:\/\*.*)?)@import\s+["']([^"']+(?:\.scss|\.sass)?)["'];?([ \t]*(?:\/[/*].*)?)$/gm; + +module.exports = async function sassGlobLoader(content) { + // console.log(`Sass glob loader for ${this.resourcePath}`); + + const file = this.resourcePath; + const base = path.dirname(file); + + const newContent = content.replace( + IMPORT_RE, + (importRule, startComment, globPattern, endComment) => { + if (globby.hasMagic(globPattern)) { + const files = globby.sync(globPattern, { cwd: base }).sort(); + + const filesString = files.map((f) => `@import '${f}';`).join('\n'); + + // Inlining sources here makes sass build even faster + // but breaks source maps + // const filesString = files + // .map((f) => fs.readFileSync(path.join(base, f), 'utf8')) + // .join('\n'); + + return startComment + filesString + endComment; + } + + return importRule; + }, + ); + + // console.log(newContent); + + return newContent; +}; diff --git a/packages/chisel-scripts/lib/webpack-plugins/DynamicPublicPath.js b/packages/chisel-scripts/lib/webpack-plugins/DynamicPublicPath.js new file mode 100644 index 00000000..ebc836e9 --- /dev/null +++ b/packages/chisel-scripts/lib/webpack-plugins/DynamicPublicPath.js @@ -0,0 +1,24 @@ +class DynamicPublicPath { + constructor(options = {}) { + this.options = options; + } + + // eslint-disable-next-line class-methods-use-this + apply(compiler) { + compiler.hooks.compilation.tap('DynamicPublicPath', (compilation) => { + compilation.mainTemplate.hooks.requireExtensions.tap( + 'DynamicPublicPath', + (source) => { + // Inspired by https://github.com/webpack/webpack/blob/9fe42e7c4027d0a74addaa3352973f6bb6d20689/lib/MainTemplate.js#L237 + source += + '\n\n// Chisel: Allow public path to be modified during runtime\n' + + '__webpack_require__.p = (typeof document !== "undefined" && document.documentElement.dataset.webpackPublicPath) || __webpack_require__.p;'; + + return source; + }, + ); + }); + } +} + +module.exports = DynamicPublicPath; diff --git a/packages/chisel-scripts/lib/webpack-plugins/OptimizeCssnanoPlugin.js b/packages/chisel-scripts/lib/webpack-plugins/OptimizeCssnanoPlugin.js new file mode 100644 index 00000000..63015174 --- /dev/null +++ b/packages/chisel-scripts/lib/webpack-plugins/OptimizeCssnanoPlugin.js @@ -0,0 +1,125 @@ +// Based on https://github.com/intervolga/optimize-cssnano-plugin/blob/123de8b2212dbe5335be1a5c49e981ec8c2e1268/index.js +// changed regexp to work with unminified-webpack-plugin +/* eslint-disable */ + +const cssnano = require('cssnano'); +const postcss = require('postcss'); + +/** + * Optimize cssnano plugin + * + * @param {Object} options + */ +function OptimizeCssnanoPlugin(options) { + this.options = Object.assign({ + sourceMap: false, + cssnanoOptions: { + preset: 'default', + }, + }, options); + + if (this.options.sourceMap) { + this.options.sourceMap = Object.assign( + {inline: false}, + this.options.sourceMap || {}); + } +} + +OptimizeCssnanoPlugin.prototype.apply = function(compiler) { + const self = this; + + compiler.hooks.emit.tapAsync('OptimizeCssnanoPlugin', + function(compilation, callback) { + // Search for CSS assets + const assetsNames = Object.keys(compilation.assets) + .filter((assetName) => { + return /(? { + // Original CSS + const asset = compilation.assets[assetName]; + const originalCss = asset.source(); + + // Options for particalar cssnano call + const postCssOptions = { + from: assetName, + to: assetName, + map: false, + }; + const cssnanoOptions = self.options.cssnanoOptions; + + // Extract or remove previous map + const mapName = assetName + '.map'; + if (self.options.sourceMap) { + // Use previous map if exist... + if (compilation.assets[mapName]) { + const mapObject = JSON.parse(compilation.assets[mapName].source()); + + // ... and not empty + if (mapObject.sources.length > 0 || mapObject.mappings.length > 0) { + postCssOptions.map = Object.assign({ + prev: compilation.assets[mapName].source(), + }, self.options.sourceMap); + } else { + postCssOptions.map = Object.assign({}, self.options.sourceMap); + } + } + } else { + delete compilation.assets[mapName]; + } + + // Run minification + const promise = postcss([cssnano(cssnanoOptions)]) + .process(originalCss, postCssOptions) + .then((result) => { + if (hasErrors) { + return; + } + + // Extract CSS back to assets + const processedCss = result.css; + compilation.assets[assetName] = { + source: function() { + return processedCss; + }, + size: function() { + return processedCss.length; + }, + }; + + // Extract map back to assets + if (result.map) { + const processedMap = result.map.toString(); + + compilation.assets[mapName] = { + source: function() { + return processedMap; + }, + size: function() { + return processedMap.length; + }, + }; + } + } + ).catch(function(err) { + hasErrors = true; + throw new Error('CSS minification error: ' + err.message + + '. File: ' + assetName); + } + ); + promises.push(promise); + }); + + Promise.all(promises) + .then(function() { + callback(); + }) + .catch(callback); + }); +}; + +module.exports = OptimizeCssnanoPlugin; diff --git a/packages/chisel-scripts/package.json b/packages/chisel-scripts/package.json new file mode 100644 index 00000000..958e0a71 --- /dev/null +++ b/packages/chisel-scripts/package.json @@ -0,0 +1,66 @@ +{ + "name": "chisel-scripts", + "version": "1.0.0-alpha.8", + "description": "TODO", + "bin": { + "chisel-scripts": "bin/chisel-scripts.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/xfiveco/generator-chisel.git", + "directory": "packages/chisel-scripts" + }, + "author": { + "name": "Xfive", + "email": "hello@xfive.co", + "url": "https://www.xfive.co" + }, + "homepage": "https://www.getchisel.co/", + "license": "MIT", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "bugs": { + "url": "https://github.com/xfiveco/generator-chisel/issues" + }, + "engines": { + "node": ">=10" + }, + "dependencies": { + "@babel/core": "^7.10.2", + "babel-loader": "^8.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "chisel-shared-utils": "^1.0.0-alpha.0", + "cli-highlight": "^2.1.4", + "cliui": "^6.0.0", + "commander": "^5.1.0", + "css-loader": "^3.5.3", + "cssnano": "^4.1.10", + "file-loader": "^6.0.0", + "fs-extra": "^9.0.1", + "globby": "^11.0.1", + "hash-sum": "^2.0.0", + "lodash": "^4.17.15", + "mini-css-extract-plugin": "^0.9.0", + "mini-svg-data-uri": "^1.2.3", + "open": "^7.0.4", + "postcss": "^7.0.32", + "postcss-loader": "^3.0.0", + "sass": "^1.26.7", + "sass-loader": "^8.0.2", + "source-map-explorer": "^2.4.2", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^3.0.5", + "unminified-webpack-plugin": "^2.0.0", + "url-loader": "^4.1.0", + "webpack": "^4.43.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-fix-style-only-entries": "^0.5.0", + "webpack-merge": "^4.2.2", + "webpackbar": "^4.0.0" + }, + "optionalDependencies": { + "fibers": "^5.0.0" + } +} diff --git a/packages/chisel-scripts/webpack.config-sync.js b/packages/chisel-scripts/webpack.config-sync.js new file mode 100644 index 00000000..57723440 --- /dev/null +++ b/packages/chisel-scripts/webpack.config-sync.js @@ -0,0 +1,16 @@ +// eslint-plugin-import requires config to be returned synchronously +// This is absolutely awful way to do that + +const { execa } = require('chisel-shared-utils'); + +const { stdout, stderr } = execa.sync(process.execPath, [ + ...process.execArgv, + require.resolve('./lib//generate-and-serialize-config.js'), +]); + +process.stderr.write(stderr); + +// eslint-disable-next-line no-eval +const cfg = eval(`(${stdout})`); + +module.exports = cfg; diff --git a/packages/chisel-scripts/webpack.config.js b/packages/chisel-scripts/webpack.config.js new file mode 100644 index 00000000..064c2889 --- /dev/null +++ b/packages/chisel-scripts/webpack.config.js @@ -0,0 +1,9 @@ +const Service = require('./lib/Service'); + +const service = new Service(); + +module.exports = (async () => { + await service.init(); + + return service.resolveWebpackConfig(); +})(); diff --git a/packages/chisel-shared-utils/CHANGELOG.md b/packages/chisel-shared-utils/CHANGELOG.md new file mode 100644 index 00000000..05f22504 --- /dev/null +++ b/packages/chisel-shared-utils/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + + + +## 1.0.0-alpha.0 (2020-07-01) + +- Rewrite with webpack ([75952b3](https://github.com/xfiveco/generator-chisel/commit/75952b3)) diff --git a/packages/chisel-shared-utils/README.md b/packages/chisel-shared-utils/README.md new file mode 100644 index 00000000..d038d80a --- /dev/null +++ b/packages/chisel-shared-utils/README.md @@ -0,0 +1,3 @@ +# chisel-scripts-shared-utils + +Shared utilities used by many Chisel packages. diff --git a/packages/chisel-shared-utils/index.js b/packages/chisel-shared-utils/index.js new file mode 100644 index 00000000..c028452f --- /dev/null +++ b/packages/chisel-shared-utils/index.js @@ -0,0 +1,6 @@ +['package-manager', 'run', 'copy'].forEach((lib) => { + Object.assign(exports, require(`./lib/${lib}`)); +}); + +exports.execa = require('execa'); +exports.chalk = require('chalk'); diff --git a/packages/chisel-shared-utils/lib/copy.js b/packages/chisel-shared-utils/lib/copy.js new file mode 100644 index 00000000..d2814894 --- /dev/null +++ b/packages/chisel-shared-utils/lib/copy.js @@ -0,0 +1,50 @@ +module.exports.copy = async function copy(options = {}) { + const fs = require('fs-extra'); + const path = require('path'); + const globby = require('globby'); + const { template } = require('lodash'); + const slash = (str) => str.replace(/\\/g, '/'); + const CHISEL_TEMPLATE = /\.chisel-tpl(?:$|(?=\.))/; + + const { + expandDirectories = true, + dot = true, + from: basePath = process.cwd(), + to = process.cwd(), + templateData = {}, + } = options; + let { file = ['.'] } = options; + + if (!Array.isArray(file)) file = [file]; + const basePathPosix = slash(basePath); + const filesPaths = file.map((p) => { + return path.posix.join(basePathPosix, p); + }); + const files = await globby(filesPaths, { + expandDirectories, + cwd: basePath, + dot, + }); + + const promises = files.map((f) => { + const relative = path.relative(basePath, f); + let target = path.resolve(to, relative); + + if (f.match(CHISEL_TEMPLATE)) { + target = target.replace(CHISEL_TEMPLATE, ''); + + return fs + .readFile(f, { encoding: 'utf8' }) + .then((fileBody) => + fs.outputFile( + target, + template(fileBody, { sourceURL: f })(templateData), + ), + ); + } + + return fs.copy(f, target, { overwrite: true }); + }); + + return Promise.all(promises); +}; diff --git a/packages/chisel-shared-utils/lib/package-manager.js b/packages/chisel-shared-utils/lib/package-manager.js new file mode 100644 index 00000000..7e518f63 --- /dev/null +++ b/packages/chisel-shared-utils/lib/package-manager.js @@ -0,0 +1,21 @@ +let $hasYarn; +function hasYarn() { + if ($hasYarn !== undefined) return $hasYarn; + + const commandExists = require('command-exists'); + $hasYarn = commandExists.sync('yarn'); + return $hasYarn; +} + +module.exports.hasYarn = hasYarn; + +function installDependencies(opts = {}) { + const execa = require('execa'); + + return execa(hasYarn() ? 'yarn' : 'npm', ['install'], { + stdio: 'inherit', + ...opts, + }); +} + +module.exports.installDependencies = installDependencies; diff --git a/packages/chisel-shared-utils/lib/run.js b/packages/chisel-shared-utils/lib/run.js new file mode 100644 index 00000000..abf90a09 --- /dev/null +++ b/packages/chisel-shared-utils/lib/run.js @@ -0,0 +1,43 @@ +function run(args, options = {}) { + const { silent = false, cwd, reject = true, execaOpts = {} } = options; + const { interactive = !silent } = options; + + const execa = require('execa'); + const execaOptsNormalized = { + stdio: [interactive ? 'inherit' : 'pipe', 'pipe', 'pipe'], + cwd, + reject, + ...execaOpts, + }; + + const argsNormalized = [] + .concat( + ...args.slice(1).map((arg) => { + if (typeof arg !== 'object') return arg; + + return Object.entries(arg).map(([key, val]) => + typeof val === 'boolean' ? val && `--${key}` : `--${key}=${val}`, + ); + }), + ) + .filter(Boolean); + + const runn = execa(args[0], argsNormalized, execaOptsNormalized); + + if (!silent) { + if (runn.stdout) runn.stdout.pipe(process.stdout); + if (runn.stderr) runn.stderr.pipe(process.stderr); + } + + return runn; +} + +module.exports.run = run; + +function runLocal(args, options = {}) { + const { hasYarn } = require('./package-manager'); + const start = hasYarn() ? ['yarn', '--silent'] : ['npx']; + return run([...start, ...args], options); +} + +module.exports.runLocal = runLocal; diff --git a/packages/chisel-shared-utils/package.json b/packages/chisel-shared-utils/package.json new file mode 100644 index 00000000..0117a2f1 --- /dev/null +++ b/packages/chisel-shared-utils/package.json @@ -0,0 +1,35 @@ +{ + "name": "chisel-shared-utils", + "version": "1.0.0-alpha.0", + "description": "TODO", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/xfiveco/generator-chisel.git", + "directory": "packages/chisel-shared-utils" + }, + "author": { + "name": "Xfive", + "email": "hello@xfive.co", + "url": "https://www.xfive.co" + }, + "homepage": "https://www.getchisel.co/", + "license": "MIT", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "bugs": { + "url": "https://github.com/xfiveco/generator-chisel/issues" + }, + "engines": { + "node": ">=10" + }, + "dependencies": { + "chalk": "^4.1.0", + "command-exists": "^1.2.9", + "execa": "^4.0.2", + "fs-extra": "^9.0.1", + "globby": "^11.0.1", + "lodash": "^4.17.15" + } +} diff --git a/packages/eslint-config-chisel/CHANGELOG.md b/packages/eslint-config-chisel/CHANGELOG.md new file mode 100644 index 00000000..3f7b09d7 --- /dev/null +++ b/packages/eslint-config-chisel/CHANGELOG.md @@ -0,0 +1,3 @@ +## 3.0.0-alpha.0 (2020-07-01) + +- Rewrite with webpack ([75952b3](https://github.com/xfiveco/generator-chisel/commit/75952b3)) diff --git a/packages/eslint-config-chisel/README.md b/packages/eslint-config-chisel/README.md new file mode 100644 index 00000000..3ef26d16 --- /dev/null +++ b/packages/eslint-config-chisel/README.md @@ -0,0 +1,33 @@ +# eslint-config-chisel + +Eslint config based on [Aribnb config](https://github.com/airbnb/javascript) you can use with ES6. Integrates with [Prettier](https://github.com/prettier/prettier). + +## Prettier + +You'll have to install Prettier on your own in order to use it. It won't be included by default when you install this package. Don't hesitate to add your own `.prettierrc` file to [customise code formatting](https://github.com/prettier/prettier#configuration-file). + +## Installation + +We recommend to use Yarn however you are free to use NPM. Snippet from the example below will install Eslint and Prettier as you'll need both of them to make use of this config. + +```bash +yarn add --dev eslint prettier eslint-config-chisel +``` + +## Usage + +Add this to your `.eslintrc` or other eslint configuration file: + +```json +{ + "extends": "chisel" +} +``` + +## React + +Additional `chisel/react` config is provided. It should be used **instead of** `chisel` in React projects. + +## Nonstandard module resolution + +This eslint config is monitoring if all imports/requires are resolving properly. It may not work if custom aliases (for example `~/` or `@/`) are used. In such cases [eslint-import-resolver-webpack](https://www.npmjs.com/package/eslint-import-resolver-webpack) should be added. diff --git a/packages/eslint-config-chisel/index.js b/packages/eslint-config-chisel/index.js new file mode 100644 index 00000000..f36cfb29 --- /dev/null +++ b/packages/eslint-config-chisel/index.js @@ -0,0 +1,9 @@ +module.exports = { + extends: ['airbnb/base', 'prettier'], + plugins: ['prettier'], + env: { browser: true, es6: true }, + rules: { + 'prettier/prettier': 'error', + }, + parser: 'babel-eslint', +}; diff --git a/packages/eslint-config-chisel/package.json b/packages/eslint-config-chisel/package.json new file mode 100644 index 00000000..316094ad --- /dev/null +++ b/packages/eslint-config-chisel/package.json @@ -0,0 +1,37 @@ +{ + "name": "eslint-config-chisel", + "version": "3.0.0-alpha.0", + "description": "TODO", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/xfiveco/generator-chisel.git", + "directory": "packages/eslint-config-chisel" + }, + "author": { + "name": "Xfive", + "email": "hello@xfive.co", + "url": "https://www.xfive.co" + }, + "homepage": "https://www.getchisel.co/", + "license": "MIT", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "bugs": { + "url": "https://github.com/xfiveco/generator-chisel/issues" + }, + "engines": { + "node": ">=10" + }, + "dependencies": { + "babel-eslint": "^10.1.0", + "eslint-config-airbnb": "^18.1.0", + "eslint-config-prettier": "^6.11.0", + "eslint-plugin-import": "^2.21.2", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-react": "^7.20.0", + "eslint-plugin-react-hooks": "^4.0.4" + } +} diff --git a/packages/eslint-config-chisel/react.js b/packages/eslint-config-chisel/react.js new file mode 100644 index 00000000..fa553d32 --- /dev/null +++ b/packages/eslint-config-chisel/react.js @@ -0,0 +1,10 @@ +module.exports = { + extends: ['airbnb', 'prettier', 'prettier/react'], + plugins: ['prettier'], + env: { browser: true, es6: true }, + rules: { + 'prettier/prettier': 'error', + 'react/jsx-filename-extension': ['error', { extensions: ['.js'] }], + }, + parser: 'babel-eslint', +}; diff --git a/packages/generator-chisel/.gitignore b/packages/generator-chisel/.gitignore new file mode 100644 index 00000000..8a845df9 --- /dev/null +++ b/packages/generator-chisel/.gitignore @@ -0,0 +1,2 @@ +/CHANGELOG-CHISEL.md +/README.md diff --git a/packages/generator-chisel/CHANGELOG.md b/packages/generator-chisel/CHANGELOG.md new file mode 100644 index 00000000..5cd969bd --- /dev/null +++ b/packages/generator-chisel/CHANGELOG.md @@ -0,0 +1,78 @@ +# Changelog + + + +## 1.0.0-alpha.14 (2021-12-16) + +- Fix ::before and ::after ([adf82b3](https://github.com/xfiveco/generator-chisel/commit/adf82b3)), closes [#508](https://github.com/xfiveco/generator-chisel/issues/508) + +## 1.0.0-alpha.13 (2021-09-29) + +- Change postcss-normalize package ([f1b9ea4](https://github.com/xfiveco/generator-chisel/commit/f1b9ea4)) +- Fix Eslint import error (#493) (#496) ([0e0fabe](https://github.com/xfiveco/generator-chisel/commit/0e0fabe)), closes [#493](https://github.com/xfiveco/generator-chisel/issues/493) [#496](https://github.com/xfiveco/generator-chisel/issues/496) +- Minify Styles & Update Tests (#501) ([4a2e720](https://github.com/xfiveco/generator-chisel/commit/4a2e720)), closes [#501](https://github.com/xfiveco/generator-chisel/issues/501) +- Update chisel index page (#497) (#499) ([7219131](https://github.com/xfiveco/generator-chisel/commit/7219131)), closes [#497](https://github.com/xfiveco/generator-chisel/issues/497) [#499](https://github.com/xfiveco/generator-chisel/issues/499) [#499](https://github.com/xfiveco/generator-chisel/issues/499) + +## 1.0.0-alpha.12 (2021-01-23) + +- Support Node 14 ([c7da9a6](https://github.com/xfiveco/generator-chisel/commit/c7da9a6)) + +## 1.0.0-alpha.11 (2020-09-21) + +- Change gitignore file name to ensure they're include in npm package ([f09752e](https://github.com/xfiveco/generator-chisel/commit/f09752e)) +- Publish ([f804f33](https://github.com/xfiveco/generator-chisel/commit/f804f33)) + +## 1.0.0-alpha.10 (2020-08-04) + +- Add frontend generator and commands tests ([c32fa26](https://github.com/xfiveco/generator-chisel/commit/c32fa26)) +- Change minimum node version per earlier tests with travis ([b809708](https://github.com/xfiveco/generator-chisel/commit/b809708)) +- Improve config template ([a4cff31](https://github.com/xfiveco/generator-chisel/commit/a4cff31)) +- Improve default ignore files ([44ce712](https://github.com/xfiveco/generator-chisel/commit/44ce712)) +- Publish ([6a85f99](https://github.com/xfiveco/generator-chisel/commit/6a85f99)) +- Publish ([f770d3c](https://github.com/xfiveco/generator-chisel/commit/f770d3c)) + +## 1.0.0-alpha.9 (2020-07-21) + +- Ignore dist in generated projects ([f9c76a0](https://github.com/xfiveco/generator-chisel/commit/f9c76a0)) + +## 1.0.0-alpha.8 (2020-07-21) + +- Add Changelogs ([25d6245](https://github.com/xfiveco/generator-chisel/commit/25d6245)) +- Add Readmes ([35fd430](https://github.com/xfiveco/generator-chisel/commit/35fd430)) +- Add some tests and travis config ([7b89252](https://github.com/xfiveco/generator-chisel/commit/7b89252)) +- Add Static Frontend ([0c6db7a](https://github.com/xfiveco/generator-chisel/commit/0c6db7a)) +- Update incorrect log & comment ([f7037a3](https://github.com/xfiveco/generator-chisel/commit/f7037a3)) + +## 1.0.0-alpha.7 (2020-07-06) + +- Add hooks to modify webpack options and few other things ([9ec1f07](https://github.com/xfiveco/generator-chisel/commit/9ec1f07)) + +## 1.0.0-alpha.6 (2020-07-06) + +- Add build report support ([048a84a](https://github.com/xfiveco/generator-chisel/commit/048a84a)) + +## 1.0.0-alpha.5 (2020-07-06) + +- Add add-page command ([1a98eb4](https://github.com/xfiveco/generator-chisel/commit/1a98eb4)) +- Fix templates in php files ([87f1258](https://github.com/xfiveco/generator-chisel/commit/87f1258)) +- Format Settings and initManifest in ChiselTwig.php ([55f6b20](https://github.com/xfiveco/generator-chisel/commit/55f6b20)) + +## 1.0.0-alpha.4 (2020-07-06) + +- Include license when sorting package.json ([fd206c2](https://github.com/xfiveco/generator-chisel/commit/fd206c2)) + +## 1.0.0-alpha.3 (2020-07-03) + +- Fix lint/buid with npm ([d81791b](https://github.com/xfiveco/generator-chisel/commit/d81791b)) + +## 1.0.0-alpha.2 (2020-07-03) + +- Fix command with npm, remove unused variable ([e1c1d07](https://github.com/xfiveco/generator-chisel/commit/e1c1d07)) + +## 1.0.0-alpha.1 (2020-07-03) + +- Fix typo, make browsersync port configurable ([a76890e](https://github.com/xfiveco/generator-chisel/commit/a76890e)) + +## 1.0.0-alpha.0 (2020-07-01) + +- Rewrite with webpack ([75952b3](https://github.com/xfiveco/generator-chisel/commit/75952b3)) diff --git a/packages/generator-chisel/bin/chisel.js b/packages/generator-chisel/bin/chisel.js new file mode 100644 index 00000000..041f32ff --- /dev/null +++ b/packages/generator-chisel/bin/chisel.js @@ -0,0 +1,55 @@ +#!/usr/bin/env node + +const { Command } = require('commander'); + +const handlePromise = (promise) => + promise.catch((err) => { + if (typeof jest === 'undefined') { + console.error(err); + process.exit(1); + } + + return Promise.reject(err); + }); + +const createProgram = () => { + const program = new Command(); + + program + .command('create') + .description('create a new project powered by Chisel') + .option('--skip-dependencies-install') + .option('--skip-wp-download') + .option('--skip-wp-config') + .option('--skip-wp-install') + .option('--skip-wp-commands') + .option('--skip-wp-plugins') + .option('--skip-fe-add-index') + .option('--skip-format-and-build') + .option( + '--link', + 'link Chisel packages (yarn link) in created project (for development)', + ) + .action((...args) => { + const cmd = args.slice(-1)[0]; + args = args.slice(0, -1); + return handlePromise(require('../lib/commands/create')({ args, cmd })); + }); + + return program; +}; + +(async () => { + if (typeof jest !== 'undefined') { + module.exports = (argv) => createProgram().parseAsync(argv); + return; + } + + const program = createProgram(); + + program.parse(process.argv); + + if (process.argv.length <= 2) { + program.outputHelp(); + } +})(); diff --git a/packages/generator-chisel/lib/commands/create/Creator.js b/packages/generator-chisel/lib/commands/create/Creator.js new file mode 100644 index 00000000..1cac01fe --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/Creator.js @@ -0,0 +1,41 @@ +const TinyQueue = require('tinyqueue'); +const path = require('path'); +const CreatorPluginAPI = require('./CreatorPluginAPI'); + +module.exports = class Creator { + constructor(context, opts) { + this.data = { + chiselVersion: require('../../../package.json').version, + }; + this.queue = new TinyQueue( + [], + (a, b) => a.priority - b.priority || a.index - b.index, + ); + this.context = context || process.env.CHISEL_CONTEXT || process.cwd(); + this.args = opts.args; + this.cmd = opts.cmd; + this.index = 0; + } + + schedule(priority, action) { + if (typeof priority !== 'number') { + throw new Error('priority must be a number'); + } + + // eslint-disable-next-line no-plusplus + this.queue.push({ priority, index: this.index++, action }); + } + + async loadCreator(name) { + const ppath = path.join(__dirname, 'creators', name); + const init = require(ppath); + return init(new CreatorPluginAPI(name, this)); + } + + async run() { + while (this.queue.length) { + const item = this.queue.pop(); + await item.action(); + } + } +}; diff --git a/packages/generator-chisel/lib/commands/create/CreatorPluginAPI.js b/packages/generator-chisel/lib/commands/create/CreatorPluginAPI.js new file mode 100644 index 00000000..8a1b227b --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/CreatorPluginAPI.js @@ -0,0 +1,106 @@ +const inquirer = require('inquirer'); +const path = require('path'); +const fs = require('fs-extra'); +const { merge, camelCase } = require('lodash'); +const PRIORITIES = require('./priorities'); +const sortPackage = require('../../utils/sort-package'); + +module.exports = class CreatorPluginAPI { + constructor(id, creator) { + this.id = id; + this.creator = creator; + this.PRIORITIES = PRIORITIES; + } + + resolve(..._path) { + return path.resolve(this.creator.context, ..._path.filter(Boolean)); + } + + schedule(...args) { + return this.creator.schedule(...args); + } + + async prompt(questions) { + if (!Array.isArray(questions)) { + questions = [questions]; + } + + const questionsNormalized = questions.map((question) => { + const questionCopy = { ...question }; + if (questionCopy.name) { + questionCopy.name = `${camelCase(this.id)}.${questionCopy.name}`; + } + + return questionCopy; + }); + + const answers = await inquirer.prompt( + questionsNormalized, + this.creator.data, + ); + + // console.log(answers, { answers: JSON.stringify(answers) }); + + merge(this.creator.data, answers); + + return this.creator.data[this.id]; + } + + // eslint-disable-next-line class-methods-use-this + async promptLocal(questions) { + const answers = await inquirer.prompt(questions); + // console.log({ answers: JSON.stringify(answers) }); + return answers; + } + + // @param from is relative to creator directory + copy(options = {}) { + const { copy } = require('chisel-shared-utils'); + + return copy({ + ...options, + from: path.resolve( + __dirname, + 'creators', + this.id, + options.from || 'template', + ), + to: this.resolve(options.to), + templateData: { + ...this.creator.data, + creatorData: this.creator.data, + }, + }); + } + + async modifyFile(file, modifier, options = {}) { + const filePath = this.resolve(file); + const { + encoding = 'utf8', + isJson = path.extname(file) === '.json', + } = options; + + let fileBody = await fs.readFile(file, { encoding }); + + if (isJson) { + fileBody = JSON.parse(fileBody); + } + + let modified = await modifier(fileBody); + + if (modified === undefined) { + modified = fileBody; + } + + const packageJsonPath = this.resolve('package.json'); + + if (filePath === packageJsonPath) { + modified = sortPackage(modified); + modified = `${JSON.stringify(modified, null, 2)}\n`; + } else if (isJson && typeof modified === 'object') { + modified = JSON.stringify(modified); + } + + return fs.writeFile(file, modified); + } +}; diff --git a/packages/generator-chisel/lib/commands/create/creators/app/index.js b/packages/generator-chisel/lib/commands/create/creators/app/index.js new file mode 100644 index 00000000..839f7177 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/index.js @@ -0,0 +1,170 @@ +const path = require('path'); +const { startCase } = require('lodash'); +const speakingUrl = require('speakingurl'); +const { + execa, + run, + runLocal, + installDependencies, +} = require('chisel-shared-utils'); +const packagesVersions = require('../../packages-versions'); + +module.exports = async (api) => { + const runLocalCurrent = (args, opts) => + runLocal(args, { ...opts, cwd: api.resolve() }); + + api.schedule(api.PRIORITIES.PROMPT, async () => { + // TODO: project exisits + + const userName = execa('git', ['config', 'user.name'], { + timeout: 2000, + }).catch(() => ({})); + + const app = await api.prompt([ + { + name: 'name', + message: 'Please enter the project name:', + default: () => startCase(path.basename(process.cwd())), + validate: (val) => Boolean(val), + }, + { + name: 'author', + message: 'Please enter author name:', + default: async () => (await userName).stdout, + }, + { + type: 'list', + name: 'projectType', + message: 'Please select project type:', + choices: [ + { + name: 'WordPress Website', + value: 'wp-with-fe', + }, + { + name: 'Static Website', + value: 'fe', + }, + ], + }, + { + type: 'checkbox', + name: 'browsers', + message: 'Which browsers are you supporting?', + choices: [ + { + name: 'Modern (3 recent versions of popular browsers)', + short: 'Modern', + value: 'modern', + checked: true, + }, + { + name: 'Edge 18 (last Edge version before engine change)', + short: 'Edge 18', + value: 'edge18', + checked: true, + }, + { + name: 'Internet Explorer 11', + value: 'ie11', + }, + ], + }, + ]); + + const { projectType } = app; + + app.nameSlug = speakingUrl(app.name) + .replace(/(?<=[^\d])-(\d+)/g, (_, d) => d) + .replace(/[^a-z0-9-]/g, '-'); + // app.nameCamel = camelCase(app.nameSlug); + app.hasJQuery = false; + + if (projectType === 'wp-with-fe') { + await api.creator.loadCreator('wp'); + } else if (projectType === 'fe') { + await api.creator.loadCreator('fe'); + } + }); + + // For linking we need to first install packages from npm registry and then + // link local ones, if we don't do this yarn won't create proper entries in + // node_modules/.bin and chisel-scripts command won't work + let installedPackages; + api.schedule(api.PRIORITIES.COPY, async () => { + await api.copy(); + + const modifyDependencies = (deps) => { + Object.keys(deps).forEach((dep) => { + if (!packagesVersions[dep]) return; + if (process.env.CHISEL_TEST) { + deps[dep] = `file:../../packages/${dep}`; + return; + } + deps[dep] = `^${packagesVersions[dep]}`; + }); + }; + + await api.modifyFile('package.json', (body) => { + installedPackages = [ + ...Object.keys(body.dependencies), + ...Object.keys(body.devDependencies), + ]; + + modifyDependencies(body.dependencies); + modifyDependencies(body.devDependencies); + }); + }); + + api.schedule(api.PRIORITIES.INSTALL_DEPENDENCIES, async () => { + if (api.creator.cmd.skipDependenciesInstall) return; + + if (process.env.CHISEL_TEST && !process.env.CI) { + require('fs').symlinkSync( + process.env.CHISEL_TEST_NODE_MODULES, + api.resolve('node_modules'), + 'junction', + ); + } + + await installDependencies({ cwd: api.resolve() }); + + if (api.creator.cmd.link) { + const availablePackages = Object.keys(packagesVersions); + const installedAndAvailable = installedPackages.filter((pkg) => + availablePackages.includes(pkg), + ); + + for (const pkg of installedAndAvailable) { + console.log(`Running yarn link ${pkg}...`); + await run(['yarn', 'link', pkg], { cwd: api.resolve() }); + } + + console.log(`Linking done`); + } + }); + + api.schedule(api.PRIORITIES.COPY_SECOND, async () => { + await api.copy({ file: 'chisel.config.chisel-tpl.js' }); + }); + + api.schedule(api.PRIORITIES.FORMAT, async () => { + if (api.creator.cmd.skipFormatAndBuild) return; + + console.log('Formatting code...'); + await runLocalCurrent(['chisel-scripts', 'lint'], { silent: true }); + }); + + api.schedule(api.PRIORITIES.BUILD, async () => { + if (api.creator.cmd.skipFormatAndBuild) return; + + console.log('Building...'); + await runLocalCurrent(['chisel-scripts', 'build'], { + execaOpts: { stdio: 'inherit' }, + }); + }); + + // api.schedule(api.PRIORITIES.END_MESSAGE, async () => { + // console.log('') + // }); +}; diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/.browserslistrc.chisel-tpl b/packages/generator-chisel/lib/commands/create/creators/app/template/.browserslistrc.chisel-tpl new file mode 100644 index 00000000..54bf712f --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/.browserslistrc.chisel-tpl @@ -0,0 +1,19 @@ +<%= + [ + app.browsers.includes('ie11') && 'ie 11', + app.browsers.includes('edge18') && 'edge 18', + ...(app.browsers.includes('modern') + ? [ + 'last 3 Android versions', + 'last 3 ChromeAndroid versions', + 'last 3 Chrome versions', + 'last 3 Firefox versions', + 'last 3 Safari versions', + 'last 3 iOS versions', + 'last 3 Edge versions', + ] + : []), + ] + .filter(Boolean) + .join('\n') +%> diff --git a/generators/app/templates/.editorconfig b/packages/generator-chisel/lib/commands/create/creators/app/template/.editorconfig similarity index 100% rename from generators/app/templates/.editorconfig rename to packages/generator-chisel/lib/commands/create/creators/app/template/.editorconfig diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/.eslintignore b/packages/generator-chisel/lib/commands/create/creators/app/template/.eslintignore new file mode 100644 index 00000000..625ef8ac --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/.eslintignore @@ -0,0 +1,4 @@ +!.eslintrc.js +/src/assets +/dist +/wp diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/.eslintrc.js b/packages/generator-chisel/lib/commands/create/creators/app/template/.eslintrc.js new file mode 100644 index 00000000..15058ae3 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/.eslintrc.js @@ -0,0 +1,25 @@ +process.env.CHISEL_CONTEXT = __dirname; +const chiselConfig = require('./chisel.config'); + +let extend = 'chisel'; + +if (chiselConfig.react) { + extend = 'chisel/react'; +} + +module.exports = { + root: true, + + extends: extend, + + settings: { + 'import/resolver': { + node: {}, + [require.resolve( + 'chisel-plugin-code-style/eslint-import-resolver-webpack', + )]: { + config: require.resolve('chisel-scripts/webpack.config-sync.js'), + }, + }, + }, +}; diff --git a/generators/app/templates/.gitattributes b/packages/generator-chisel/lib/commands/create/creators/app/template/.gitattributes similarity index 100% rename from generators/app/templates/.gitattributes rename to packages/generator-chisel/lib/commands/create/creators/app/template/.gitattributes diff --git a/.npmignore b/packages/generator-chisel/lib/commands/create/creators/app/template/.gitignore.chisel-tpl similarity index 88% rename from .npmignore rename to packages/generator-chisel/lib/commands/create/creators/app/template/.gitignore.chisel-tpl index 09551d0b..5d679b14 100644 --- a/.npmignore +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/.gitignore.chisel-tpl @@ -13,7 +13,6 @@ *.iso *.rar *.tar -*.zip *~ # OS or Editor folders @@ -38,8 +37,6 @@ temp tmp .tmp node_modules -src/bower_components -dist # Others npm-debug.log @@ -49,3 +46,8 @@ npm-debug.log .ruby-version .rvmrc .vagrant + +# Chisel +/dev-vhost.conf +/chisel.config.local.js +/dist diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/.prettierignore b/packages/generator-chisel/lib/commands/create/creators/app/template/.prettierignore new file mode 100644 index 00000000..4072fe26 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/.prettierignore @@ -0,0 +1,4 @@ +node_modules +/src/assets +/dist +/wp diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/.stylelintignore b/packages/generator-chisel/lib/commands/create/creators/app/template/.stylelintignore new file mode 100644 index 00000000..ca0ac255 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/.stylelintignore @@ -0,0 +1,3 @@ +/src/assets +/dist +/wp diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/README.chisel-tpl.md b/packages/generator-chisel/lib/commands/create/creators/app/template/README.chisel-tpl.md new file mode 100644 index 00000000..b0a89177 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/README.chisel-tpl.md @@ -0,0 +1,3 @@ +# <%= app.name %> + +<%= app.name %> is a project created with Chisel. Please check out Chisel documentation at [https://www.getchisel.co/docs/](www.getchisel.co/docs/). diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/babel.config.js b/packages/generator-chisel/lib/commands/create/creators/app/template/babel.config.js new file mode 100644 index 00000000..343e7f32 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/babel.config.js @@ -0,0 +1,16 @@ +const chiselConfig = require('./chisel.config'); + +module.exports = { + presets: [ + [ + 'babel-preset-chisel', + { + // global automatic polyfills: + // yarn add core-js then uncomment + // useBuiltIns: 'usage', + }, + ], + chiselConfig.react && ['babel-preset-chisel/react', { hot: true }], + // ['babel-preset-chisel/preact'], + ].filter(Boolean), +}; diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/chisel.config.chisel-tpl.js b/packages/generator-chisel/lib/commands/create/creators/app/template/chisel.config.chisel-tpl.js new file mode 100644 index 00000000..b519c332 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/chisel.config.chisel-tpl.js @@ -0,0 +1,48 @@ +/* eslint-disable no-param-reassign */ + +const creatorData = <%= JSON.stringify(creatorData) %>; + +<% + const isWP = app.projectType == 'wp-with-fe'; + const isFE = app.projectType == 'fe'; + if(isWP) { + let url = /^https?:\/\//.test(wp.url) ? wp.url : `http://${wp.url}`; + if(url.endsWith('/')) url = url.slice(0, -1); + print(`const wp = { + directoryName: 'wp', + themeName: '${app.nameSlug}-chisel', + url: ${JSON.stringify(url)}, + }`); + } +%> + +module.exports = { + creatorData, + + <%= !isWP ? '' : ` + wp, + + output: { + base: \`\${wp.directoryName}/wp-content/themes/\${wp.themeName}/dist\` + },` %> + + <%= !isFE ? '' : ` + staticFrontend: { + serveDist: ${String(fe.additionalFeatures.includes('serveDist'))}, + skipHtmlExtension: ${String(fe.additionalFeatures.includes('skipHtmlExtension'))}, + }, + ` %> + + // To use React and hot reload for React components: + // 1. Run `yarn add react-hot-loader @hot-loader/react-dom` + // 3. Mark your root component as hot-exported as described on + // https://github.com/gaearon/react-hot-loader#getting-started (step 2) + // 4. Uncomment line below + // react: true, + + plugins: [ + 'chisel-plugin-code-style', + <%= isWP ? "'chisel-plugin-wordpress'," : '' %> + <%= isFE ? "'chisel-plugin-static-frontend'," : '' %> + ], +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/package.chisel-tpl.json b/packages/generator-chisel/lib/commands/create/creators/app/template/package.chisel-tpl.json new file mode 100644 index 00000000..44f6272e --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/package.chisel-tpl.json @@ -0,0 +1,43 @@ +<% /* This file will be later formatted and sorted */ %> +<% /* Don't worry too much how it looks here */ %> +{ + "name": "<%= app.nameSlug %>", + "version": "0.0.0", + "private": true, + "license": "UNLICENSED", + "author": "<%= app.author %>", + "description": "<%= app.name %>", + "scripts": { + "dev": "chisel-scripts dev", + "watch": "chisel-scripts dev", + "build": "chisel-scripts lint && chisel-scripts build", + "build-report": "chisel-scripts build --report", + <%= app.projectType == 'wp-with-fe' ? `"wp": "chisel-scripts wp",` : '' %> + "add-page": "chisel-scripts add-page", + "lint": "chisel-scripts lint" + }, + "devDependencies": { + <%= app.projectType == 'wp-with-fe' ? `"chisel-plugin-wordpress": "*",` : '' %> + <%= app.projectType == 'fe' ? `"chisel-plugin-static-frontend": "*",` : '' %> + "babel-preset-chisel": "*", + "@jakub300/postcss-normalize": "^9.0.1", + "autoprefixer": "^9.8.0", + <% /* required by postcss-normalize for some reason */ %> + "browserslist": "^4.12.0", + "chisel-plugin-code-style": "*", + "chisel-scripts": "*" + }, + "dependencies": { + }, + "engines": { + "node": "^10.14.2 || ^12 || ^14" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.{js,scss}": "chisel-scripts lint" + } +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/postcss.config.js b/packages/generator-chisel/lib/commands/create/creators/app/template/postcss.config.js new file mode 100644 index 00000000..37d4ecc5 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/postcss.config.js @@ -0,0 +1,8 @@ +/* eslint import/no-extraneous-dependencies: ["error", { "devDependencies": true }], global-require: off */ + +module.exports = { + plugins: [ + require('autoprefixer')({ grid: 'autoplace' }), + require('@jakub300/postcss-normalize')(), + ], +}; diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/prettier.config.js b/packages/generator-chisel/lib/commands/create/creators/app/template/prettier.config.js new file mode 100644 index 00000000..de2f53cd --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/prettier.config.js @@ -0,0 +1,4 @@ +module.exports = { + singleQuote: true, + trailingComma: 'all', +}; diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/assets/fonts/.keep b/packages/generator-chisel/lib/commands/create/creators/app/template/src/assets/fonts/.keep new file mode 100644 index 00000000..e69de29b diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/assets/images/.keep b/packages/generator-chisel/lib/commands/create/creators/app/template/src/assets/images/.keep new file mode 100644 index 00000000..e69de29b diff --git a/generators/app/templates/scripts/webpack/app.js b/packages/generator-chisel/lib/commands/create/creators/app/template/src/scripts/app.chisel-tpl.js similarity index 54% rename from generators/app/templates/scripts/webpack/app.js rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/scripts/app.chisel-tpl.js index baa2c01a..11e1e0cc 100644 --- a/generators/app/templates/scripts/webpack/app.js +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/scripts/app.chisel-tpl.js @@ -1,6 +1,6 @@ /* - Project: <%= name %> - Author: <%= author %> + Project: <%= app.name %> + Author: <%= app.author %> */ import greet from './modules/greeting'; diff --git a/generators/app/templates/scripts/webpack/modules/greeting.js b/packages/generator-chisel/lib/commands/create/creators/app/template/src/scripts/modules/greeting.chisel-tpl.js similarity index 65% rename from generators/app/templates/scripts/webpack/modules/greeting.js rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/scripts/modules/greeting.chisel-tpl.js index 20e87c04..1d0ce949 100644 --- a/generators/app/templates/scripts/webpack/modules/greeting.js +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/scripts/modules/greeting.chisel-tpl.js @@ -1,12 +1,12 @@ -<% if (has_jquery) { %>import $ from 'jquery'; +<% if (app.hasJQuery) { %>import $ from 'jquery'; -const greeting = name => { +const greeting = (name) => { const element = $('.js-greeting'); if (element.length) { element.text(name); } -};<% } else { %>const greeting = name => { +};<% } else { %>const greeting = (name) => { const element = document.querySelector('.js-greeting'); if (element) { diff --git a/generators/app/templates/styles/itcss/components/_btn.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/components/_btn.scss similarity index 100% rename from generators/app/templates/styles/itcss/components/_btn.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/components/_btn.scss diff --git a/generators/app/templates/styles/itcss/components/_footer.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/components/_footer.scss similarity index 100% rename from generators/app/templates/styles/itcss/components/_footer.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/components/_footer.scss diff --git a/generators/app/templates/styles/itcss/components/_header.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/components/_header.scss similarity index 100% rename from generators/app/templates/styles/itcss/components/_header.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/components/_header.scss diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_blockquote.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_blockquote.scss new file mode 100644 index 00000000..4cfd1928 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_blockquote.scss @@ -0,0 +1,20 @@ +/* ========================================================================== + #BLOCKQUOTES + ========================================================================== */ + +blockquote { + quotes: '“' '”' '‘' '’'; + font-style: italic; + + p:first-child { + &::before { + content: open-quote; + } + } + + p:last-child { + &::after { + content: close-quote; + } + } +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_headings.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_headings.scss new file mode 100644 index 00000000..33fa2c67 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_headings.scss @@ -0,0 +1,33 @@ +/* ========================================================================== + #HEADINGS + ========================================================================== */ + +/** + * Simple default styles for headings 1 through 6. Anything more opinionated + * than simple font-size changes should likely be applied via classes (see: + * http://csswizardry.com/2016/02/managing-typography-on-large-apps/). + */ + +h1 { + font-size: 2.25rem; +} + +h2 { + font-size: 1.75rem; +} + +h3 { + font-size: 1.5rem; +} + +h4 { + font-size: 1.25rem; +} + +h5 { + font-size: 1.125rem; +} + +h6 { + font-size: 1rem; +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_hr.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_hr.scss new file mode 100644 index 00000000..1b3f84d5 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_hr.scss @@ -0,0 +1,7 @@ +/* ========================================================================== + #HR + ========================================================================== */ + +hr { + display: block; +} diff --git a/generators/app/templates/styles/itcss/elements/_html.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_html.scss similarity index 100% rename from generators/app/templates/styles/itcss/elements/_html.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_html.scss diff --git a/generators/app/templates/styles/itcss/elements/_images.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_images.scss similarity index 100% rename from generators/app/templates/styles/itcss/elements/_images.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_images.scss diff --git a/generators/app/templates/styles/itcss/elements/_links.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_links.scss similarity index 100% rename from generators/app/templates/styles/itcss/elements/_links.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_links.scss diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_lists.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_lists.scss new file mode 100644 index 00000000..300d944f --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_lists.scss @@ -0,0 +1,23 @@ +/* ========================================================================== + #LISTS + ========================================================================== */ + +li { + margin-bottom: 0.5rem; + + > ul, + > ol { + margin-bottom: 0; + margin-left: 1rem; + margin-top: 0.5rem; + } +} + +dt { + font-weight: bold; +} + +dd { + margin-bottom: 1rem; + margin-left: 1rem; +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_tables.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_tables.scss new file mode 100644 index 00000000..62566165 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/elements/_tables.scss @@ -0,0 +1,11 @@ +/* ========================================================================== + #TABLES + ========================================================================== */ + +/** + * 1. Ensure tables fill up as much space as possible. + */ + +table { + width: 100%; /* [1] */ +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_box-sizing.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_box-sizing.scss new file mode 100644 index 00000000..878538cb --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_box-sizing.scss @@ -0,0 +1,20 @@ +/* ========================================================================== + #BOX-SIZING + ========================================================================== */ + +/** + * More sensible default box-sizing: + * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice + */ + +html { + box-sizing: border-box; +} + +* { + &, + &::before, + &::after { + box-sizing: inherit; + } +} diff --git a/generators/app/templates/styles/itcss/generic/_font-face.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_font-face.scss similarity index 100% rename from generators/app/templates/styles/itcss/generic/_font-face.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_font-face.scss diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_normalize.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_normalize.scss new file mode 100644 index 00000000..f578d48e --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_normalize.scss @@ -0,0 +1,5 @@ +/* ========================================================================== + #NORMALIZE + ========================================================================== */ + +@import-normalize; diff --git a/generators/app/templates/styles/itcss/generic/_reset.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_reset.scss similarity index 100% rename from generators/app/templates/styles/itcss/generic/_reset.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_reset.scss diff --git a/generators/app/templates/styles/itcss/generic/_shared.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_shared.scss similarity index 100% rename from generators/app/templates/styles/itcss/generic/_shared.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/generic/_shared.scss diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/main.chisel-tpl.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/main.chisel-tpl.scss new file mode 100644 index 00000000..9a9456bb --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/main.chisel-tpl.scss @@ -0,0 +1,13 @@ +/* + Project: <%= app.name %> + Author: <%= app.author %> + */ + +@import 'settings/*'; +@import 'tools/*'; +@import 'generic/*'; +@import 'elements/*'; +@import 'vendor/*'; +@import 'objects/*'; +@import 'components/*'; +@import 'utilities/*'; diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_layout.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_layout.scss new file mode 100644 index 00000000..0569d075 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_layout.scss @@ -0,0 +1,49 @@ +/* ========================================================================== + #LAYOUT + ========================================================================== */ + +/* Simple flexbox layout system */ + +.o-layout { + display: block; + + @include bp(medium) { + display: flex; + } +} + +.o-layout__item { + flex: 1; +} + +.o-layout--guttered { + justify-content: space-between; + + > .o-layout__item { + flex: none; + } +} + +.o-layout--2 { + > .o-layout__item { + @include bp(medium) { + width: 49%; + } + } +} + +.o-layout--3 { + > .o-layout__item { + @include bp(medium) { + width: 32%; + } + } +} + +.o-layout--4 { + > .o-layout__item { + @include bp(medium) { + width: 24%; + } + } +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_list-bare.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_list-bare.scss new file mode 100644 index 00000000..ed2eb37f --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_list-bare.scss @@ -0,0 +1,13 @@ +/* ========================================================================== + #LIST-BARE + ========================================================================== */ + +/** + * Strip list-like appearance from lists by removing their bullets, and any + * indentation. + */ + +.o-list-bare { + list-style: none; + margin-left: 0; +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_list-inline.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_list-inline.scss new file mode 100644 index 00000000..a75981a3 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_list-inline.scss @@ -0,0 +1,16 @@ +/* ========================================================================== + #LIST-INLINE + ========================================================================== */ + +/** + * The list-inline object simply displays a list of items in one line. + */ + +.o-list-inline { + list-style: none; + margin-left: 0; +} + +.o-list-inline__item { + display: inline-block; +} diff --git a/generators/app/templates/styles/itcss/objects/_media.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_media.scss similarity index 100% rename from generators/app/templates/styles/itcss/objects/_media.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_media.scss diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_table.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_table.scss new file mode 100644 index 00000000..542f8ae0 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_table.scss @@ -0,0 +1,26 @@ +/* ========================================================================== + #TABLE + ========================================================================== */ + +/** + * A simple object for manipulating the structure of HTML `table`s. + */ + +.o-table { + width: 100%; +} + +/* Equal-width table cells. + ========================================================================== */ + +/** + * `table-layout: fixed` forces all cells within a table to occupy the same + * width as each other. This also has performance benefits: because the browser + * does not need to (re)calculate cell dimensions based on content it discovers, + * the table can be rendered very quickly. Further reading: + * https://developer.mozilla.org/en-US/docs/Web/CSS/table-layout#Values + */ + +.o-table--fixed { + table-layout: fixed; +} diff --git a/generators/app/templates/styles/itcss/objects/_wrapper.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_wrapper.scss similarity index 100% rename from generators/app/templates/styles/itcss/objects/_wrapper.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/objects/_wrapper.scss diff --git a/generators/app/templates/styles/itcss/settings/_global.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/settings/_global.scss similarity index 88% rename from generators/app/templates/styles/itcss/settings/_global.scss rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/settings/_global.scss index 76d26ccb..c03a01fc 100644 --- a/generators/app/templates/styles/itcss/settings/_global.scss +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/settings/_global.scss @@ -1,6 +1,6 @@ -///* ======================================================================== -// #GLOBAL -// ======================================================================== */ +// ========================================================================== +// #GLOBAL +// ========================================================================== // The global settings file contains any project-wide variables; things that // need to be made available to the entire codebase. @@ -24,7 +24,6 @@ $breakpoints: ( full: 1600px, ); - /* Colors ========================================================================== */ diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_breakpoints.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_breakpoints.scss new file mode 100644 index 00000000..a2e5fdc8 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_breakpoints.scss @@ -0,0 +1,67 @@ +// ========================================================================== +// #BREAKPOINTS +// ========================================================================== + +@function bp-val($name) { + @if type-of($name) == 'number' { + @return $name; + } + + $val: map-get($breakpoints, $name); + + @if $val == null { + @error 'Breakpoint #{$name} not found'; + } + + @return $val; +} + +@function bp-val-next($name) { + $breakpoint-names: map_keys($breakpoints); + $n: index($breakpoint-names, $name); + + @if $n >= length($breakpoint-names) { + @error 'Next breakpoint after #{$name} not found'; + } + + $next-key: nth($breakpoint-names, $n + 1); + @return map-get($breakpoints, $next-key); +} + +@mixin bp($name) { + $val: bp-val($name); + + @media (min-width: $val) { + @content; + } +} + +@mixin bp-down($name) { + $val: bp-val($name); + + @media (max-width: $val - 0.02) { + @content; + } +} + +@mixin bp-only($name) { + @if type-of($name) == 'number' { + @error '#{$name} should be breakpoint name'; + } + + $min: bp-val($name); + $max: bp-val-next($name); + + @media (min-width: $min) and (max-width: $max - 0.02) { + @content; + } +} + +@mixin bp-between($name1, $name2) { + $min: bp-val($name1); + $max: bp-val($name2); + + @media (min-width: $min) and (max-width: $max - 0.02) { + @content; + } +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_clearfix.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_clearfix.scss new file mode 100644 index 00000000..1ec5761a --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_clearfix.scss @@ -0,0 +1,18 @@ +// ========================================================================== +// #CLEARFIX +// ========================================================================== + +// Mixin to drop micro clearfix into a selector. Further reading: +// http://www.cssmojo.com/the-very-latest-clearfix-reloaded/ +// +// .usage { +// @include clearfix(); +// } + +@mixin clearfix() { + &::after { + content: '' !important; + display: block !important; + clear: both !important; + } +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_hidden.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_hidden.scss new file mode 100644 index 00000000..e60ece29 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/tools/_hidden.scss @@ -0,0 +1,17 @@ +// ========================================================================== +// #HIDDEN-VISUALLY +// ========================================================================== + +// Mixin to quickly apply accessible hiding to elements. +@mixin hidden-visually() { + border: 0 !important; + clip: rect(0 0 0 0) !important; + clip-path: inset(50%) !important; + height: 1px !important; + margin: -1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + white-space: nowrap !important; + width: 1px !important; +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_align.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_align.scss new file mode 100644 index 00000000..00794c90 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_align.scss @@ -0,0 +1,27 @@ +/* ========================================================================== + #ALIGN + ========================================================================== */ + +.u-float-left { + float: left; +} + +.u-float-right { + float: right; +} + +.u-clear { + clear: both; +} + +.u-text-center { + text-align: center; +} + +.u-text-left { + text-align: left; +} + +.u-text-right { + text-align: right; +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_clearfix.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_clearfix.scss new file mode 100644 index 00000000..bc1ee8de --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_clearfix.scss @@ -0,0 +1,11 @@ +/* ========================================================================== + #CLEARFIX + ========================================================================== */ + +/** + * Attach our clearfix mixin to a utility class. + */ + +.u-clearfix { + @include clearfix(); +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_hide.scss b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_hide.scss new file mode 100644 index 00000000..9321cd70 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/utilities/_hide.scss @@ -0,0 +1,28 @@ +/* ========================================================================== + #HIDE + ========================================================================== */ + +/** + * Hide only visually, but have it available for screen readers: + * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility + */ + +.u-hidden-visually { + @include hidden-visually(); +} + +/** + * Hide visually and from screen readers. + */ + +.u-hidden { + display: none !important; +} + +.u-hidden\@small { + display: none; + + @include bp(medium) { + display: block; + } +} diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/vendor/.keep b/packages/generator-chisel/lib/commands/create/creators/app/template/src/styles/vendor/.keep new file mode 100644 index 00000000..e69de29b diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/components/footer.chisel-tpl.twig b/packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/components/footer.chisel-tpl.twig new file mode 100644 index 00000000..0a71ecd7 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/components/footer.chisel-tpl.twig @@ -0,0 +1,3 @@ +
    +

    Copyright © {{"now"|date('Y')}} <%= app.name %>

    +
    diff --git a/generators/app/templates/templates/twig/components/header.twig b/packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/components/header.chisel-tpl.twig similarity index 50% rename from generators/app/templates/templates/twig/components/header.twig rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/components/header.chisel-tpl.twig index 79ef8ea1..b563bd9a 100644 --- a/generators/app/templates/templates/twig/components/header.twig +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/components/header.chisel-tpl.twig @@ -1,3 +1,3 @@
    - <%= name %> + <%= app.name %>
    diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/layouts/base.chisel-tpl.twig b/packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/layouts/base.chisel-tpl.twig new file mode 100644 index 00000000..624c8e4b --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/layouts/base.chisel-tpl.twig @@ -0,0 +1,42 @@ +<% const isWP = app.projectType === 'wp-with-fe' %> + + + <% if (app.projectType == 'fe') { %> + {{ pageName }} - <%= app.name %><% } %> + + + + {% if isDev() %} + + {% endif %} + +<% if (isWP) { %> + + {{ function('wp_head') }} +<% } %> + {% block head %} + {% endblock %} + + + +<% if (isWP) { %> {{ function('wp_body_open') }} +<% } %> + {% block header %} + {% include 'components/header.twig' %} + {% endblock %} + <% if (isWP) { %> + {% include 'components/main-nav.twig' %}<% } %> + +
    + {% block content %} + Sorry, no content + {% endblock %} +
    + + {% block footer %} + {% include 'components/footer.twig' %} + {% endblock %} +<% if (isWP) { %> + {{ function('wp_footer') }}<% } %> + + diff --git a/generators/app/templates/templates/twig/layouts/page.twig b/packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/layouts/page.twig similarity index 75% rename from generators/app/templates/templates/twig/layouts/page.twig rename to packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/layouts/page.twig index cbfa007c..6e6076a3 100644 --- a/generators/app/templates/templates/twig/layouts/page.twig +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/src/templates/layouts/page.twig @@ -1,5 +1,5 @@ {% extends "layouts/base.twig" %} -{% set pageName = '<%%= pageName %>' %} +{% set pageName = '<%= pageName %>' %} {% block content %}

    Hello

    diff --git a/packages/generator-chisel/lib/commands/create/creators/app/template/stylelint.config.js b/packages/generator-chisel/lib/commands/create/creators/app/template/stylelint.config.js new file mode 100644 index 00000000..bc6a23ad --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/app/template/stylelint.config.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ['stylelint-config-chisel'], +}; diff --git a/generators/app/templates/index/css/main.css b/packages/generator-chisel/lib/commands/create/creators/fe/index-styles.css similarity index 81% rename from generators/app/templates/index/css/main.css rename to packages/generator-chisel/lib/commands/create/creators/fe/index-styles.css index 13abe938..d0ca1988 100644 --- a/generators/app/templates/index/css/main.css +++ b/packages/generator-chisel/lib/commands/create/creators/fe/index-styles.css @@ -18,14 +18,27 @@ html { body { background: #f2e9da; - background-image: repeating-linear-gradient(180deg, transparent, transparent 40px, #eae3d7 40px, #eae3d7 41px), - repeating-linear-gradient(90deg, transparent, transparent 40px, #eae3d7 40px, #eae3d7 41px); + background-image: repeating-linear-gradient( + 180deg, + transparent, + transparent 40px, + #eae3d7 40px, + #eae3d7 41px + ), + repeating-linear-gradient( + 90deg, + transparent, + transparent 40px, + #eae3d7 40px, + #eae3d7 41px + ); color: #1b3729; font-family: 'Crimson Text', serif; padding: 1em; } -a, a:link { +a, +a:link { color: #b08b31; } @@ -51,6 +64,10 @@ p { margin-top: 1em; } +.c-section__note:not(:last-child) { + display: none; +} + /* Header */ .c-page-title { margin: 0; @@ -93,7 +110,7 @@ p { position: relative; } -.c-list li:before { +.c-list li::before { background: #ecbb42; content: ''; display: block; diff --git a/packages/generator-chisel/lib/commands/create/creators/fe/index.js b/packages/generator-chisel/lib/commands/create/creators/fe/index.js new file mode 100644 index 00000000..6e5be404 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/fe/index.js @@ -0,0 +1,51 @@ +const { runLocal } = require('chisel-shared-utils'); + +module.exports = (api) => { + const runLocalCurrent = (args, opts) => + runLocal(args, { ...opts, cwd: api.resolve() }); + + api.schedule(api.PRIORITIES.PROMPT, async () => { + await api.prompt([ + { + type: 'checkbox', + name: 'additionalFeatures', + message: 'Additional features:', + choices: [ + { + value: 'serveDist', + name: "Serve dist directory in dev / don't generate pages index", + }, + { + value: 'skipHtmlExtension', + name: + "Don't include html extension in links (posts API) & support them in dev", + }, + ], + }, + ]); + }); + + api.schedule(api.PRIORITIES.COPY, async () => { + await api.copy(); + + if (!api.creator.data.fe.additionalFeatures.includes('serveDist')) { + await api.copy({ from: 'template-index' }); + + // lodash escaping seems to be broken, we use custom one + await api.modifyFile('index.html', (file) => { + return file.replace(/<\\%/g, '<%'); + }); + } + + api.schedule(api.PRIORITIES.FE_ADD_INDEX, async () => { + if (api.creator.cmd.skipFeAddIndex) return; + if (!api.creator.data.fe.additionalFeatures.includes('serveDist')) return; + + console.log('Adding index.twig page...'); + await runLocalCurrent( + ['chisel-scripts', 'add-page', 'Index', '--no-build'], + { execaOpts: { stdio: 'inherit' } }, + ); + }); + }); +}; diff --git a/packages/generator-chisel/lib/commands/create/creators/fe/template-index/index.chisel-tpl.html b/packages/generator-chisel/lib/commands/create/creators/fe/template-index/index.chisel-tpl.html new file mode 100644 index 00000000..99722a27 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/fe/template-index/index.chisel-tpl.html @@ -0,0 +1,77 @@ + + + + + Project Index - <%= app.name %> + + + + + + + + +
    +

    <%= app.name %>

    +

    Project index

    + +
    +
    +

    + This project is powered by + Chisel, a development + framework for creating easy to maintain and fast front-end + templates. +

    +

    Pages

    +
    + To add more pages run: +
    npm run add-page 'My Awesome Page'
    + or +
    yarn add-page 'My Awesome Page'
    +
    + +
    +
    + + +
    +
    +

    Documentation

    +

    + Chisel supports modern web development workflows and helps + developers to create a code base which is easy to + maintain. +

    +

    + For detailed information how Chisel works, please check out + www.getchisel.co. +

    +

    + If you are just looking for your deliverable files, they are located + inside the dist folder. No files found outside of that + folder should usually be uploaded to your server (e.g. this file). +

    +
    +
    + +
    + + + diff --git a/packages/generator-chisel/lib/commands/create/creators/fe/template/.htmlhintrc b/packages/generator-chisel/lib/commands/create/creators/fe/template/.htmlhintrc new file mode 100644 index 00000000..5dbff4d6 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/fe/template/.htmlhintrc @@ -0,0 +1,3 @@ +{ + "attr-lowercase": ["viewBox", "preserveAspectRatio"] +} diff --git a/packages/generator-chisel/lib/commands/create/creators/fe/template/public/.keep b/packages/generator-chisel/lib/commands/create/creators/fe/template/public/.keep new file mode 100644 index 00000000..e69de29b diff --git a/packages/generator-chisel/lib/commands/create/creators/init.js b/packages/generator-chisel/lib/commands/create/creators/init.js new file mode 100644 index 00000000..d0341bd0 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/init.js @@ -0,0 +1,97 @@ +const updateNotifier = require('update-notifier'); +const { chalk } = require('chisel-shared-utils'); +const fs = require('fs-extra'); +const pkg = require('../../../../package.json'); + +const CHECK_UPDATE_DIST_TAGS = pkg.version.includes('-') + ? ['next', 'latest'] + : ['latest']; + +module.exports = async (api) => { + async function maybeContinue() { + const { continue: cont } = await api.promptLocal([ + { + type: 'confirm', + name: 'continue', + message: 'Are you sure you want to continue?', + default: false, + }, + ]); + + if (!cont) { + process.exit(1); + } + } + + api.schedule(api.PRIORITIES.HELLO, async () => { + if (process.env.CHISEL_TEST) return; + console.log(); + console.log(chalk.yellow('*'.repeat(47))); + console.log(); + console.log(chalk.yellow(' Welcome to Chisel')); + console.log(); + console.log(chalk.reset(' https://www.getchisel.co')); + console.log(chalk.reset(' https://github.com/xfiveco/generator-chisel')); + console.log(); + console.log(chalk.yellow('*'.repeat(47))); + console.log(); + }); + + api.schedule(api.PRIORITIES.CHECK_UPDATE, async () => { + if (process.env.CHISEL_TEST) return; + + const timeout = new Promise((_, reject) => + setTimeout(() => reject(new Error('timeout')), 5000), + ); + + try { + const updates = await Promise.all( + CHECK_UPDATE_DIST_TAGS.map(async (distTag) => { + const notifier = updateNotifier({ + pkg, + updateCheckInterval: Infinity, + distTag, + }); + + const info = await Promise.race([notifier.fetchInfo(), timeout]); + notifier.update = info; + const hasUpdate = + info.latest !== info.current && info.type !== distTag; + + return { + notifier, + info, + hasUpdate, + }; + }), + ); + + const firstUpdate = updates.find((update) => update.hasUpdate); + + if (firstUpdate) { + firstUpdate.notifier.notify({ defer: false, isGlobal: true }); + + await maybeContinue(); + } + } catch (e) { + console.error('Update check failed'); + } + }); + + api.schedule(api.PRIORITIES.CHECK_EXIST, async () => { + if (await fs.pathExists(api.resolve('chisel.config.js'))) { + console.log('A Chisel project already exists in this folder.'); + console.log( + 'If you are trying to setup an existing project, check out the' + + ' documentation at https://www.getchisel.co/docs/setup/', + ); + console.log( + 'If the process of generating project was interrupted and you would' + + ' like to continue, we recommend cleaning up the directory and' + + ' starting again.', + ); + + await maybeContinue(); + } + }); +}; diff --git a/packages/generator-chisel/lib/commands/create/creators/wp-plugins/index.js b/packages/generator-chisel/lib/commands/create/creators/wp-plugins/index.js new file mode 100644 index 00000000..023fde53 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/wp-plugins/index.js @@ -0,0 +1,34 @@ +const { runLocal } = require('chisel-shared-utils'); +const plugins = require('./plugins.json'); + +module.exports = (api) => { + if (api.creator.cmd.skipWpPlugins) return; + + api.schedule(api.PRIORITIES.PROMPT, async () => { + await api.prompt([ + { + type: 'checkbox', + name: 'plugins', + message: 'Select optional plugins', + choices: Object.keys(plugins.plugins), + }, + ]); + }); + + api.schedule(api.PRIORITIES.WP_PLUGINS, async () => { + const { plugins: selectedPlugins } = api.creator.data.wpPlugins; + if (selectedPlugins.length === 0) return; + + await runLocal( + [ + 'chisel-scripts', + 'wp', + 'plugin', + 'install', + { activate: true }, + ...selectedPlugins.map((name) => plugins.plugins[name]), + ], + { cwd: api.resolve() }, + ); + }); +}; diff --git a/packages/generator-chisel/lib/commands/create/creators/wp-plugins/plugins.json b/packages/generator-chisel/lib/commands/create/creators/wp-plugins/plugins.json new file mode 100644 index 00000000..7ee5eff3 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/wp-plugins/plugins.json @@ -0,0 +1,9 @@ +{ + "plugins": { + "Classic Editor": "classic-editor", + "WP Premium: Advanced Custom Fields Pro": "https://github.com/wp-premium/advanced-custom-fields-pro/archive/master.zip", + "WP Premium: Gravity Forms": "https://github.com/wp-premium/gravityforms/archive/master.zip", + "WP Sync DB": "https://github.com/wp-sync-db/wp-sync-db/archive/master.zip", + "WP Sync DB Media File Addon": "https://github.com/wp-sync-db/wp-sync-db-media-files/archive/master.zip" + } +} diff --git a/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/.gitignore.chisel-tpl b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/.gitignore.chisel-tpl new file mode 100644 index 00000000..9b1c8b13 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/.gitignore.chisel-tpl @@ -0,0 +1 @@ +/dist diff --git a/generators/wp/templates/chisel-starter-theme/404.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/404.chisel-tpl.php similarity index 83% rename from generators/wp/templates/chisel-starter-theme/404.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/404.chisel-tpl.php index c0683b97..74c50590 100644 --- a/generators/wp/templates/chisel-starter-theme/404.php +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/404.chisel-tpl.php @@ -2,7 +2,7 @@ /** * The template for displaying 404 pages (Not Found) * - * @package <%= nameSlug %> + * @package <%= app.nameSlug %> */ $context = \Timber\Timber::get_context(); diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Extensions/ChiselExtension.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/ChiselExtension.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Extensions/ChiselExtension.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/ChiselExtension.php diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Extensions/ChiselTwig.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/ChiselTwig.php similarity index 61% rename from generators/wp/templates/chisel-starter-theme/Chisel/Extensions/ChiselTwig.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/ChiselTwig.php index ae4c7e53..a798e283 100644 --- a/generators/wp/templates/chisel-starter-theme/Chisel/Extensions/ChiselTwig.php +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/ChiselTwig.php @@ -66,22 +66,17 @@ public function extendTwig( $twig ) { $this->registerFunction( $twig, - 'hasVendor' + 'hasFile' ); $this->registerFunction( $twig, - 'getScriptsPath' + 'getDistPath' ); $this->registerFunction( $twig, - 'hasWebpackManifest' - ); - - $this->registerFunction( - $twig, - 'getWebpackManifest' + 'isDev' ); return $twig; @@ -102,38 +97,25 @@ public function getManifest() { /** * Returns the real path of the revisioned file. - * When CHISEL_DEV_ENV is defined it returns - * path based on the manifest file content. + * based on the manifest file content. * * @param $asset * * @return string */ public function revisionedPath( $asset ) { - $pathinfo = pathinfo( $asset ); + $manifest = $this->getManifest(); - if ( ! defined( 'CHISEL_DEV_ENV' ) ) { - $manifest = $this->getManifest(); - if ( ! array_key_exists( $pathinfo['basename'], $manifest ) ) { - return 'FILE-NOT-REVISIONED'; - } - - return sprintf( - '%s/%s%s/%s', - get_template_directory_uri(), - \Chisel\Settings::DIST_PATH, - $pathinfo['dirname'], - $manifest[ $pathinfo['basename'] ] - ); - } else { - return sprintf( - '%s/%s%s%s', - get_template_directory_uri(), - \Chisel\Settings::DIST_PATH, - trim( $asset, '/' ), - '?' . time() - ); + if ( ! array_key_exists( $asset, $manifest ) ) { + return 'FILE-NOT-REVISIONED'; } + + return sprintf( + '%s/%s%s', + get_template_directory_uri(), + \Chisel\Settings::DIST_PATH, + $manifest[ $asset ] + ); } /** @@ -144,12 +126,7 @@ public function revisionedPath( $asset ) { * @return string */ public function assetPath( $asset ) { - return sprintf( - '%s/%s%s', - get_template_directory_uri(), - \Chisel\Settings::ASSETS_PATH, - trim( $asset, '/' ) - ); + return $this->revisionedPath( \Chisel\Settings::ASSETS_PATH . $asset ); } /** @@ -205,80 +182,51 @@ public function chiselImage( $pid, $ImageClass = '\Chisel\Image' ) { } /** - * Verifies existence of the vendor.js file + * Verifies existence of the given file in manifest * * @return bool */ - public function hasVendor() { - if ( defined( 'CHISEL_DEV_ENV' ) ) { - return file_exists( - sprintf( - '%s/%s%s', - get_template_directory(), - \Chisel\Settings::DIST_PATH, - 'scripts/vendor.js' - ) - ); - } else { - $manifest = $this->getManifest(); + public function hasFile( $asset ) { + $manifest = $this->getManifest(); - return array_key_exists( 'vendor.js', $manifest ); - } + return array_key_exists( $asset, $manifest ); } /** - * Returns the real path of the scripts directory. + * Returns the real path of the dist directory. * * @return string */ - public function getScriptsPath() { + public function getDistPath() { return sprintf( '%s/%s', get_template_directory_uri(), - \Chisel\Settings::SCRIPTS_PATH + \Chisel\Settings::DIST_PATH ); } /** - * Verifies existence of webpack manifest file. + * Checks if request is in development environment * - * @return bool + * @return boolean */ - public function hasWebpackManifest() { - return file_exists( - sprintf( - '%s/%s', - get_template_directory(), - \Chisel\Settings::getWebpackManifestPath() - ) - ); - } - - /** - * Returns the contents of the webpack manifest file. - * - * @return string - */ - public function getWebpackManifest() { - if( $this->hasWebpackManifest() ) { - return file_get_contents( - sprintf( - '%s/%s', - get_template_directory(), - \Chisel\Settings::getWebpackManifestPath() - ) - ); - } - return ''; + public function isDev() { + return defined( 'CHISEL_DEV_ENV' ); } /** * Loads data from manifest file. */ private function initManifest() { - if ( file_exists( get_template_directory() . '/' . \Chisel\Settings::MANIFEST_PATH ) ) { + $manifest_path = defined( 'CHISEL_DEV_ENV' ) + ? \Chisel\Settings::MANIFEST_DEV_PATH + : \Chisel\Settings::MANIFEST_PATH; + + if ( file_exists( get_template_directory() . '/' . $manifest_path ) ) { $this->manifest = json_decode( - file_get_contents( get_template_directory() . '/' . \Chisel\Settings::MANIFEST_PATH ), + file_get_contents( + get_template_directory() . '/' . $manifest_path + ), true ); } diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Extensions/DataType.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/DataType.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Extensions/DataType.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/DataType.php diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Extensions/Theme.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/Theme.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Extensions/Theme.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/Theme.php diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Extensions/Twig.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/Twig.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Extensions/Twig.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Extensions/Twig.php diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Helpers.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Helpers.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Helpers.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Helpers.php diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Image.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Image.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Image.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Image.php diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Media.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Media.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Media.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Media.php diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Performance.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Performance.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Performance.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Performance.php diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Post.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Post.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Post.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Post.php diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Security.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Security.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Security.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Security.php diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Settings.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Settings.php similarity index 54% rename from generators/wp/templates/chisel-starter-theme/Chisel/Settings.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Settings.php index e06cead9..786d92d0 100644 --- a/generators/wp/templates/chisel-starter-theme/Chisel/Settings.php +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Settings.php @@ -9,29 +9,14 @@ * Use this class to store configuration constants */ class Settings { - const MANIFEST_PATH = 'dist/rev-manifest.json'; - const WEBPACK_MANIFEST_PATH = 'dist/scripts/manifest.json'; - const WEBPACK_MANIFEST_DEV_PATH = 'dist/scripts/manifest-dev.json'; - const DIST_PATH = 'dist/'; - const ASSETS_PATH = 'dist/assets/'; - const SCRIPTS_PATH = 'dist/scripts/'; - const TEMPLATES_DIR = 'templates'; + const MANIFEST_PATH = 'dist/manifest.json'; + const MANIFEST_DEV_PATH = 'dist/manifest-dev.json'; + const DIST_PATH = 'dist/'; + const ASSETS_PATH = 'assets/'; + const TEMPLATES_DIR = 'templates'; private $extensions = array( 'ChiselTwig', 'Twig', 'Theme', 'DataType' ); - /** - * Get relative path of webpack manifest based on environment - * - * @return string - */ - public static function getWebpackManifestPath() { - if ( defined( 'CHISEL_DEV_ENV' ) ) { - return self::WEBPACK_MANIFEST_DEV_PATH; - } else { - return self::WEBPACK_MANIFEST_PATH; - } - } - public function __construct() { $this->loadExtensions(); } diff --git a/generators/wp/templates/chisel-starter-theme/Chisel/Site.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Site.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/Chisel/Site.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/Chisel/Site.php diff --git a/generators/wp/templates/chisel-starter-theme/README.md b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/README.chisel-tpl.md similarity index 78% rename from generators/wp/templates/chisel-starter-theme/README.md rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/README.chisel-tpl.md index 0dd14709..d2a15d66 100644 --- a/generators/wp/templates/chisel-starter-theme/README.md +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/README.chisel-tpl.md @@ -1,4 +1,4 @@ -<%= name %> theme for WordPress based on Timber library. +<%= app.name %> theme for WordPress based on Timber library. All files directly under templates/ should extend some layout defined in layouts/ directory. diff --git a/generators/wp/templates/chisel-starter-theme/archive.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/archive.chisel-tpl.php similarity index 97% rename from generators/wp/templates/chisel-starter-theme/archive.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/archive.chisel-tpl.php index 8e7d387d..00fc7175 100644 --- a/generators/wp/templates/chisel-starter-theme/archive.php +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/archive.chisel-tpl.php @@ -7,7 +7,7 @@ * * Learn more: http://codex.wordpress.org/Template_Hierarchy * - * @package <%= nameSlug %> + * @package <%= app.nameSlug %> */ $templates = array( 'archive.twig', 'index.twig' ); diff --git a/generators/wp/templates/chisel-starter-theme/author.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/author.chisel-tpl.php similarity index 93% rename from generators/wp/templates/chisel-starter-theme/author.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/author.chisel-tpl.php index 74711d54..ccdad17d 100644 --- a/generators/wp/templates/chisel-starter-theme/author.php +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/author.chisel-tpl.php @@ -2,7 +2,7 @@ /** * The template for displaying Author Archive pages * - * @package <%= nameSlug %> + * @package <%= app.nameSlug %> */ global $wp_query; diff --git a/generators/wp/templates/chisel-starter-theme/footer.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/footer.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/footer.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/footer.php diff --git a/generators/wp/templates/chisel-starter-theme/functions.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/functions.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/functions.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/functions.php diff --git a/generators/wp/templates/chisel-starter-theme/header.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/header.php similarity index 100% rename from generators/wp/templates/chisel-starter-theme/header.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/header.php diff --git a/generators/wp/templates/chisel-starter-theme/index.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/index.chisel-tpl.php similarity index 95% rename from generators/wp/templates/chisel-starter-theme/index.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/index.chisel-tpl.php index 49da1622..9f13f8e4 100644 --- a/generators/wp/templates/chisel-starter-theme/index.php +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/index.chisel-tpl.php @@ -6,7 +6,7 @@ * It is used to display a page when nothing more specific matches a query. * E.g., it puts together the home page when no home.php file exists * - * @package <%= nameSlug %> + * @package <%= app.nameSlug %> */ if ( ! \Chisel\Helpers::isTimberActivated() ) { diff --git a/generators/wp/templates/chisel-starter-theme/page.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/page.chisel-tpl.php similarity index 95% rename from generators/wp/templates/chisel-starter-theme/page.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/page.chisel-tpl.php index abd81cf8..4639f5cc 100644 --- a/generators/wp/templates/chisel-starter-theme/page.php +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/page.chisel-tpl.php @@ -14,7 +14,7 @@ * /mytheme/page-mypage.php * (in which case you'll want to duplicate this file and save to the above path) * - * @package <%= nameSlug %> + * @package <%= app.nameSlug %> */ global $post; diff --git a/generators/wp/templates/images/screenshot.png b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/screenshot.png old mode 100755 new mode 100644 similarity index 100% rename from generators/wp/templates/images/screenshot.png rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/screenshot.png diff --git a/generators/wp/templates/chisel-starter-theme/search.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/search.chisel-tpl.php similarity index 90% rename from generators/wp/templates/chisel-starter-theme/search.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/search.chisel-tpl.php index 44b834e0..b424bd9e 100644 --- a/generators/wp/templates/chisel-starter-theme/search.php +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/search.chisel-tpl.php @@ -2,7 +2,7 @@ /** * Search results page * - * @package <%= nameSlug %> + * @package <%= app.nameSlug %> */ $templates = array( 'search.twig', 'archive.twig', 'index.twig' ); diff --git a/generators/wp/templates/chisel-starter-theme/single.php b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/single.chisel-tpl.php similarity index 93% rename from generators/wp/templates/chisel-starter-theme/single.php rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/single.chisel-tpl.php index bc727c81..6df04050 100644 --- a/generators/wp/templates/chisel-starter-theme/single.php +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/single.chisel-tpl.php @@ -4,7 +4,7 @@ * * Methods for TimberHelper can be found in the /lib sub-directory * - * @package <%= nameSlug %> + * @package <%= app.nameSlug %> */ global $post; diff --git a/generators/wp/templates/chisel-starter-theme/style.css b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/style.chisel-tpl.css similarity index 50% rename from generators/wp/templates/chisel-starter-theme/style.css rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/style.chisel-tpl.css index ffbdaa3b..1ef26c85 100644 --- a/generators/wp/templates/chisel-starter-theme/style.css +++ b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/style.chisel-tpl.css @@ -1,5 +1,5 @@ /* - * Theme Name: <%= name %> + * Theme Name: <%= app.name %> * Description: Chisel Starter Theme to use with Timber - * Author: <%= author %> + * Author: <%= app.author %> */ diff --git a/generators/wp/templates/chisel-starter-theme/templates/404.twig b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/404.twig old mode 100755 new mode 100644 similarity index 100% rename from generators/wp/templates/chisel-starter-theme/templates/404.twig rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/404.twig diff --git a/generators/wp/templates/chisel-starter-theme/templates/author.twig b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/author.twig old mode 100755 new mode 100644 similarity index 100% rename from generators/wp/templates/chisel-starter-theme/templates/author.twig rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/author.twig diff --git a/generators/wp/templates/chisel-starter-theme/templates/components/comment.twig b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/components/comment.twig similarity index 100% rename from generators/wp/templates/chisel-starter-theme/templates/components/comment.twig rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/components/comment.twig diff --git a/generators/wp/templates/chisel-starter-theme/templates/components/main-nav.twig b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/components/main-nav.twig similarity index 100% rename from generators/wp/templates/chisel-starter-theme/templates/components/main-nav.twig rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/components/main-nav.twig diff --git a/generators/wp/templates/chisel-starter-theme/templates/components/tease-post.twig b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/components/tease-post.twig similarity index 100% rename from generators/wp/templates/chisel-starter-theme/templates/components/tease-post.twig rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/components/tease-post.twig diff --git a/generators/wp/templates/chisel-starter-theme/templates/components/tease.twig b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/components/tease.twig similarity index 100% rename from generators/wp/templates/chisel-starter-theme/templates/components/tease.twig rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/components/tease.twig diff --git a/generators/wp/templates/chisel-starter-theme/templates/index.twig b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/index.twig old mode 100755 new mode 100644 similarity index 100% rename from generators/wp/templates/chisel-starter-theme/templates/index.twig rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/index.twig diff --git a/generators/wp/templates/chisel-starter-theme/templates/page-plugin.twig b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/page-plugin.twig similarity index 100% rename from generators/wp/templates/chisel-starter-theme/templates/page-plugin.twig rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/page-plugin.twig diff --git a/generators/wp/templates/chisel-starter-theme/templates/page.twig b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/page.twig old mode 100755 new mode 100644 similarity index 100% rename from generators/wp/templates/chisel-starter-theme/templates/page.twig rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/page.twig diff --git a/generators/wp/templates/chisel-starter-theme/templates/single.twig b/packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/single.twig old mode 100755 new mode 100644 similarity index 100% rename from generators/wp/templates/chisel-starter-theme/templates/single.twig rename to packages/generator-chisel/lib/commands/create/creators/wp/chisel-starter-theme/templates/single.twig diff --git a/packages/generator-chisel/lib/commands/create/creators/wp/index.js b/packages/generator-chisel/lib/commands/create/creators/wp/index.js new file mode 100644 index 00000000..bf8d4c65 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/wp/index.js @@ -0,0 +1,168 @@ +const { execa, runLocal } = require('chisel-shared-utils'); +const crypto = require('crypto'); +const fs = require('fs-extra'); + +module.exports = (api) => { + const wp = (args, opts) => + runLocal(['chisel-scripts', 'wp', ...args], { + ...opts, + cwd: api.resolve(), + }); + + const gitConfig = (field) => + execa('git', ['config', field], { + timeout: 2000, + cwd: api.resolve(), + }).catch(() => ({})); + + api.schedule(api.PRIORITIES.PROMPT, async () => { + await api.creator.loadCreator('wp-plugins'); + + const userName = gitConfig('user.name'); + const userEmail = gitConfig('user.email'); + + await api.prompt([ + { + name: 'title', + message: 'Enter title for the new site:', + default: api.creator.data.app.name, + }, + { + name: 'url', + message: 'Enter URL:', + default: `http://${api.creator.data.app.nameSlug}.test/`, + }, + { + name: 'adminUser', + message: 'Enter admin user:', + default: async () => { + const nameParts = ((await userName).stdout || '').trim().split(' '); + if (!nameParts[0]) return undefined; + return ( + nameParts[0].toLowerCase() + Math.floor(1000 + Math.random() * 9000) + ); + }, + }, + { + name: 'adminPassword', + message: 'Enter admin password:', + type: 'password', + validate: (str) => str.length > 0, + }, + { + name: 'adminEmail', + message: 'Enter admin email:', + validate: (str) => /.+@.+/.test(str), + default: async () => { + const email = ((await userEmail).stdout || '').trim(); + return /.+@.+/.test(email) ? email : undefined; + }, + }, + // { + // type: 'list', + // name: 'srcPlacement', + // message: "Where do you want to place the 'src' folder:", + // choices: [ + // { + // name: 'Project root folder', + // value: 'root', + // }, + // { + // name: 'WordPress theme folder', + // value: 'theme', + // }, + // ], + // }, + ]); + + api.creator.data.wp.tablePrefix = `${crypto + .randomBytes(32) + .toString('base64') + .replace(/[+/=]/g, '') + .substr(0, 8) + .toLowerCase()}_`; + }); + + api.schedule(api.PRIORITIES.COPY, async () => { + const wpDist = require(api.resolve('chisel.config.js')).output.base; + + await fs.move( + api.resolve('src/templates'), + api.resolve(wpDist, '../templates'), + { overwrite: true }, + ); + + await api.copy(); // template directory + + const { tablePrefix } = api.creator.data.wp; + await api.modifyFile('wp/wp-config.php', (body) => + body + .replace('wp_', tablePrefix) + .replace(/put your unique phrase here/g, () => + crypto.randomBytes(30).toString('base64'), + ), + ); + await api.copy({ from: 'chisel-starter-theme', to: `${wpDist}/..` }); + }); + + api.schedule(api.PRIORITIES.WP_DOWNLOAD, async () => { + if (api.creator.cmd.skipWpDownload) return; + + await wp(['core', 'download', '--skip-content']); + }); + + api.schedule(api.PRIORITIES.WP_CONFIG, async () => { + if (api.creator.cmd.skipWpConfig) return; + + await runLocal(['chisel-scripts', 'wp-config'], { + cwd: api.resolve(), + execaOpts: { stdio: 'inherit' }, + }); + }); + + api.schedule(api.PRIORITIES.WP_INSTALL, async () => { + const { wp: wpData } = api.creator.data; + + if (api.creator.cmd.skipWpInstall) { + delete wpData.adminPassword; + return; + } + + await wp([ + 'core', + 'install', + { + url: wpData.url, + title: wpData.title, + admin_user: wpData.adminUser, + admin_password: wpData.adminPassword, + admin_email: wpData.adminEmail, + }, + ]); + + delete wpData.adminPassword; + }); + + api.schedule(api.PRIORITIES.WP_INSTALL_PLUGINS, async () => { + if (api.creator.cmd.skipWpCommands) return; + + await wp([ + 'plugin', + 'install', + 'timber-library', + 'disable-emojis', + { activate: true }, + ]); + }); + + api.schedule(api.PRIORITIES.WP_THEME_ACTIVATE, async () => { + if (api.creator.cmd.skipWpCommands) return; + + const { themeName } = require(api.resolve('chisel.config.js')).wp; + await wp(['theme', 'activate', themeName]); + }); + + // api.schedule(api.PRIORITIES., async () => { + + // }); +}; diff --git a/generators/wp/templates/styles/itcss/components/_comment-form.scss b/packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles/components/_comment-form.scss similarity index 100% rename from generators/wp/templates/styles/itcss/components/_comment-form.scss rename to packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles/components/_comment-form.scss diff --git a/generators/wp/templates/styles/itcss/components/_comment.scss b/packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles/components/_comment.scss similarity index 100% rename from generators/wp/templates/styles/itcss/components/_comment.scss rename to packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles/components/_comment.scss diff --git a/generators/wp/templates/styles/itcss/components/_main-nav.scss b/packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles/components/_main-nav.scss similarity index 96% rename from generators/wp/templates/styles/itcss/components/_main-nav.scss rename to packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles/components/_main-nav.scss index c6ab1bd0..82a4a7dc 100644 --- a/generators/wp/templates/styles/itcss/components/_main-nav.scss +++ b/packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles/components/_main-nav.scss @@ -12,10 +12,6 @@ list-style: none; margin: 0 1em 0 0; padding: 0; - - &:hover .c-main-nav__dropdown { - display: flex; - } } .c-main-nav__link { @@ -34,6 +30,10 @@ flex-direction: column; margin: 0; position: absolute; + + .c-main-nav__item:hover & { + display: flex; + } } .c-main-nav__subitem { diff --git a/generators/wp/templates/styles/itcss/components/_post.scss b/packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles/components/_post.scss similarity index 100% rename from generators/wp/templates/styles/itcss/components/_post.scss rename to packages/generator-chisel/lib/commands/create/creators/wp/template/src/styles/components/_post.scss diff --git a/generators/wp/templates/wp-cli.yml b/packages/generator-chisel/lib/commands/create/creators/wp/template/wp-cli.yml similarity index 100% rename from generators/wp/templates/wp-cli.yml rename to packages/generator-chisel/lib/commands/create/creators/wp/template/wp-cli.yml diff --git a/packages/generator-chisel/lib/commands/create/creators/wp/template/wp/.gitignore.chisel-tpl b/packages/generator-chisel/lib/commands/create/creators/wp/template/wp/.gitignore.chisel-tpl new file mode 100644 index 00000000..1e2422e8 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/creators/wp/template/wp/.gitignore.chisel-tpl @@ -0,0 +1,2 @@ +/wp-content/uploads +/wp-config-local.php diff --git a/generators/wp/templates/.htaccess b/packages/generator-chisel/lib/commands/create/creators/wp/template/wp/.htaccess similarity index 100% rename from generators/wp/templates/.htaccess rename to packages/generator-chisel/lib/commands/create/creators/wp/template/wp/.htaccess diff --git a/generators/wp/templates/wp-config.php b/packages/generator-chisel/lib/commands/create/creators/wp/template/wp/wp-config.php similarity index 100% rename from generators/wp/templates/wp-config.php rename to packages/generator-chisel/lib/commands/create/creators/wp/template/wp/wp-config.php diff --git a/packages/generator-chisel/lib/commands/create/index.js b/packages/generator-chisel/lib/commands/create/index.js new file mode 100644 index 00000000..7b36fd51 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/index.js @@ -0,0 +1,12 @@ +const Creator = require('./Creator'); + +const createCommand = async ({ args, cmd }) => { + const creator = new Creator(undefined, { args, cmd }); + + await creator.loadCreator('init'); + await creator.loadCreator('app'); + + return creator.run(); +}; + +module.exports = createCommand; diff --git a/packages/generator-chisel/lib/commands/create/packages-versions.js b/packages/generator-chisel/lib/commands/create/packages-versions.js new file mode 100644 index 00000000..22cc7533 --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/packages-versions.js @@ -0,0 +1,11 @@ +module.exports = { + 'babel-preset-chisel': '1.0.0-alpha.0', + 'chisel-plugin-code-style': '1.0.0-alpha.1', + 'chisel-plugin-static-frontend': '1.0.0-alpha.5', + 'chisel-plugin-wordpress': '1.0.0-alpha.6', + 'chisel-scripts': '1.0.0-alpha.8', + 'chisel-shared-utils': '1.0.0-alpha.0', + 'eslint-config-chisel': '3.0.0-alpha.0', + 'generator-chisel': '1.0.0-alpha.14', + 'stylelint-config-chisel': '1.0.0-alpha.0', +}; diff --git a/packages/generator-chisel/lib/commands/create/priorities.js b/packages/generator-chisel/lib/commands/create/priorities.js new file mode 100644 index 00000000..5d5decce --- /dev/null +++ b/packages/generator-chisel/lib/commands/create/priorities.js @@ -0,0 +1,34 @@ +module.exports = { + HELLO: 10, + CHECK_UPDATE: 20, + CHECK_EXIST: 30, + + // Basic: + PROMPT: 100, + + // we can copy wp files here + // downloading WP seems to preserve files created earlier + COPY: 500, + + // UPDATE_CONFIG: 900, + + INSTALL_DEPENDENCIES: 1000, + + // we need chisel-scripts and plugins installed to run wp commands + // we separate different steps as future proofing + WP_DOWNLOAD: 1100, + WP_CONFIG: 1200, + WP_INSTALL: 1300, + WP_INSTALL_PLUGINS: 1400, + WP_THEME_ACTIVATE: 1500, + WP_PLUGINS: 1600, + + COPY_SECOND: 2000, + + FE_ADD_INDEX: 2600, + FORMAT: 2500, + + BUILD: 3000, + + END_MESSAGE: 5000, +}; diff --git a/packages/generator-chisel/lib/utils/sort-package.js b/packages/generator-chisel/lib/utils/sort-package.js new file mode 100644 index 00000000..c243fbf6 --- /dev/null +++ b/packages/generator-chisel/lib/utils/sort-package.js @@ -0,0 +1,68 @@ +// Based on: +// * https://github.com/vuejs/vue-cli/blob/1a0b59142aa8797810ca90705290d960a4ee6d1e/packages/%40vue/cli/lib/Generator.js#L225 +// * https://github.com/vuejs/vue-cli/blob/1a0b59142aa8797810ca90705290d960a4ee6d1e/packages/%40vue/cli/lib/util/sortObject.js + +function sortObject(obj, keyOrder, dontSortByUnicode) { + if (!obj) return undefined; + const res = {}; + + if (keyOrder) { + keyOrder.forEach((key) => { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + res[key] = obj[key]; + delete obj[key]; + } + }); + } + + const keys = Object.keys(obj); + + if (!dontSortByUnicode) keys.sort(); + keys.forEach((key) => { + res[key] = obj[key]; + }); + + return res; +} + +module.exports = function sortPackage(pkg) { + pkg.dependencies = sortObject(pkg.dependencies); + pkg.devDependencies = sortObject(pkg.devDependencies); + pkg.scripts = sortObject(pkg.scripts, [ + 'dev', + 'watch', + 'build', + 'build-report', + 'lint', + 'add-page', + 'wp', + ]); + pkg = sortObject(pkg, [ + 'name', + 'version', + 'private', + 'license', + 'description', + 'author', + 'scripts', + 'main', + 'module', + 'browser', + 'jsDelivr', + 'unpkg', + 'files', + 'dependencies', + 'devDependencies', + 'peerDependencies', + 'engines', + 'vue', + 'babel', + 'eslintConfig', + 'prettier', + 'postcss', + 'browserslist', + 'jest', + ]); + + return pkg; +}; diff --git a/packages/generator-chisel/package.json b/packages/generator-chisel/package.json new file mode 100644 index 00000000..01f53c99 --- /dev/null +++ b/packages/generator-chisel/package.json @@ -0,0 +1,46 @@ +{ + "name": "generator-chisel", + "version": "1.0.0-alpha.14", + "description": "A generator for scaffolding front-end and WordPress projects", + "bin": { + "chisel": "bin/chisel.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/xfiveco/generator-chisel.git", + "directory": "packages/generator-chisel" + }, + "author": { + "name": "Xfive", + "email": "hello@xfive.co", + "url": "https://www.xfive.co" + }, + "homepage": "https://www.getchisel.co/", + "license": "MIT", + "keywords": [ + "twig", + "wordpress", + "scss", + "itcss", + "webpack", + "babel" + ], + "scripts": { + "test": "bash test/run-tests.sh" + }, + "engines": { + "node": "^10.13.0 || ^12 || ^14" + }, + "dependencies": { + "chisel-shared-utils": "^1.0.0-alpha.0", + "commander": "^5.1.0", + "execa": "^4.0.2", + "fs-extra": "^9.0.1", + "globby": "^11.0.1", + "inquirer": "^7.1.0", + "lodash": "^4.17.15", + "speakingurl": "^14.0.1", + "tinyqueue": "^2.0.3", + "update-notifier": "^4.1.0" + } +} diff --git a/packages/stylelint-config-chisel/CHANGELOG.md b/packages/stylelint-config-chisel/CHANGELOG.md new file mode 100644 index 00000000..05f22504 --- /dev/null +++ b/packages/stylelint-config-chisel/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + + + +## 1.0.0-alpha.0 (2020-07-01) + +- Rewrite with webpack ([75952b3](https://github.com/xfiveco/generator-chisel/commit/75952b3)) diff --git a/packages/stylelint-config-chisel/README.md b/packages/stylelint-config-chisel/README.md new file mode 100644 index 00000000..30e43eb3 --- /dev/null +++ b/packages/stylelint-config-chisel/README.md @@ -0,0 +1,25 @@ +# stylelint-config-chisel + +Stylelint config based on [stylelint-config-standard](https://github.com/stylelint/stylelint-config-standard) with Prettier and custom additions. + +## Prettier + +You'll have to install Prettier on your own in order to use it. It won't be included by default when you install this package. Don't hesitate to add your own `.prettierrc` file to [customise code formatting](https://github.com/prettier/prettier#configuration-file). + +## Installation + +We recommend to use Yarn however you are free to use NPM. Snippet from the example below will install Eslint and Prettier as you'll need both of them to make use of this config. + +```bash +yarn add --dev stylelint prettier stylelint-config-chisel +``` + +## Usage + +Add this to your `.stylelintrc` or other stylelint configuration file: + +```json +{ + "extends": "stylelint-config-chisel" +} +``` diff --git a/packages/stylelint-config-chisel/index.js b/packages/stylelint-config-chisel/index.js new file mode 100644 index 00000000..1bec94ab --- /dev/null +++ b/packages/stylelint-config-chisel/index.js @@ -0,0 +1,54 @@ +// TODO: order? + +// Some additions based on: +// * https://github.com/chrisvfritz/vue-enterprise-boilerplate/blob/890438c3b898d6ed921fd2d0e3b84f2fe7162d89/stylelint.config.js +// * https://github.com/bjankord/stylelint-config-sass-guidelines/blob/5bcf85acdb9ef37e4eeaf492b6b60aed4bc0d5e8/index.js#L81 + +module.exports = { + extends: ['stylelint-config-standard', 'stylelint-config-prettier'], + plugins: ['stylelint-scss', 'stylelint-prettier'], + rules: { + 'prettier/prettier': true, + + // Based on old Chisel config: + 'selector-class-pattern': + '^(?:(?:a|o|c|u|t|s|is|has|_|js|qa)-)?[a-zA-Z0-9]+(?:-[a-zA-Z0-9\\@]+)*(?:__[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)?(?:--[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)?(?:\\[.+\\])?$', + 'font-family-name-quotes': 'always-where-recommended', + 'function-url-quotes': 'always', + 'max-nesting-depth': 3, + 'property-no-vendor-prefix': true, + 'selector-max-compound-selectors': 3, + 'selector-max-id': 0, + 'selector-no-qualifying-type': [true, { ignore: ['attribute'] }], + 'value-keyword-case': ['lower', { ignoreKeywords: 'BlinkMacSystemFont' }], + + // Additions: + 'selector-no-vendor-prefix': true, + 'value-no-vendor-prefix': true, + 'scss/double-slash-comment-whitespace-inside': 'always', + 'scss/dollar-variable-no-missing-interpolation': true, + 'scss/selector-no-redundant-nesting-selector': true, + 'at-rule-no-unknown': null, + 'scss/at-rule-no-unknown': true, + 'scss/at-extend-no-missing-placeholder': true, + 'scss/at-import-partial-extension-blacklist': ['scss'], + + // Additions that MAY CONFLICT WITH PRETTIER: + 'rule-empty-line-before': [ + 'always-multi-line', + { + except: ['first-nested'], + ignore: ['after-comment'], + severity: 'warning', + }, + ], + 'at-rule-empty-line-before': [ + 'always', + { + except: ['blockless-after-same-name-blockless', 'first-nested'], + ignore: ['after-comment'], + ignoreAtRules: ['else'], + }, + ], + }, +}; diff --git a/packages/stylelint-config-chisel/package.json b/packages/stylelint-config-chisel/package.json new file mode 100644 index 00000000..d4fc205a --- /dev/null +++ b/packages/stylelint-config-chisel/package.json @@ -0,0 +1,32 @@ +{ + "name": "stylelint-config-chisel", + "version": "1.0.0-alpha.0", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/xfiveco/generator-chisel.git", + "directory": "packages/stylelint-config-chisel" + }, + "author": { + "name": "Xfive", + "email": "hello@xfive.co", + "url": "https://www.xfive.co" + }, + "homepage": "https://www.getchisel.co/", + "license": "MIT", + "scripts": { + "test": "echo \"Error: run tests from root\" && exit 1" + }, + "bugs": { + "url": "https://github.com/xfiveco/generator-chisel/issues" + }, + "engines": { + "node": ">=10" + }, + "dependencies": { + "stylelint-config-prettier": "^8.0.1", + "stylelint-config-standard": "^20.0.0", + "stylelint-prettier": "^1.1.2", + "stylelint-scss": "^3.17.2" + } +} diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 00000000..de2f53cd --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,4 @@ +module.exports = { + singleQuote: true, + trailingComma: 'all', +}; diff --git a/scripts/index-versions.js b/scripts/index-versions.js new file mode 100644 index 00000000..498cedc6 --- /dev/null +++ b/scripts/index-versions.js @@ -0,0 +1,117 @@ +const globby = require('globby'); +const path = require('path'); +const prettier = require('prettier'); +const fs = require('fs-extra'); +const conventionalChangelog = require('conventional-changelog'); +const streamToPromise = require('stream-to-promise'); +const { Changelog } = require('lerna-changelog'); +const { load: loadConfig } = require('lerna-changelog/lib/configuration.js'); +const oldVersions = require('../packages/generator-chisel/lib/commands/create/packages-versions.js'); + +const files = globby + .sync(path.join(__dirname, '../packages/*/package.json').replace(/\\/g, '/')) + .sort(); + +const packagesVersions = Object.fromEntries( + files.map((file) => { + const pack = require(file); + return [pack.name, pack.version]; + }), +); + +let packagesVersionsString = `module.exports = ${JSON.stringify( + packagesVersions, +)}`; + +packagesVersionsString = prettier.format(packagesVersionsString, { + ...prettier.resolveConfig.sync(__filename), + filepath: __filename, +}); + +fs.writeFileSync( + path.join( + __dirname, + '../packages/generator-chisel/lib/commands/create/packages-versions.js', + ), + packagesVersionsString, +); + +// Copy readme so it's included in generator-chisel package +fs.copySync('./README.md', './packages/generator-chisel/README.md'); + +Object.entries(oldVersions).map(async ([name, version]) => { + if (packagesVersions[name] === version) return; + + const packageDir = path.resolve(__dirname, `../packages/${name}`); + + const stream = conventionalChangelog( + { + pkg: { path: packageDir }, + tagPrefix: `${name}@`, + }, + undefined, + { path: `packages/${name}` }, + ); + const data = (await streamToPromise(stream)).toString('utf8'); + const changelogFile = path.join(packageDir, 'CHANGELOG.md'); + + const changelog = await fs.readFile(changelogFile, 'utf8'); + + const changelogNew = changelog.replace( + '', + `\n${data}`, + ); + + const changelogFormatted = prettier.format(changelogNew, { + ...prettier.resolveConfig.sync(changelogFile), + filepath: __filename, + parser: 'markdown', + }); + + await fs.writeFile(changelogFile, changelogFormatted); +}); + +// TODO: Not Well Tested +if ( + !process.env.LENRA_CHANGELOG_SKIP && + packagesVersions['generator-chisel'] !== oldVersions['generator-chisel'] +) { + (async () => { + const config = loadConfig(); + + config.nextVersion = `v${packagesVersions['generator-chisel']}`; + + const options = { + tagFrom: + process.env.LENRA_CHANGELOG_TAG_FROM || + `generator-chisel@${oldVersions['generator-chisel']}`, + }; + + const data = await new Changelog(config).createMarkdown(options); + const changelogFile = path.join(__dirname, '../CHANGELOG.md'); + const currentChangelog = await fs.readFile(changelogFile, 'utf8'); + + const changelogNew = currentChangelog.replace( + '', + `\n${data}`, + ); + + const changelogFormatted = prettier.format(changelogNew, { + ...prettier.resolveConfig.sync(changelogFile), + filepath: __filename, + parser: 'markdown', + }); + + await fs.writeFile(changelogFile, changelogFormatted); + await fs.writeFile( + path.join(__dirname, '../packages/generator-chisel/CHANGELOG-CHISEL.md'), + changelogFormatted, + ); + })(); +} + +process.on('unhandledRejection', (reason) => { + console.log('Unhandled Rejection'); + console.log(reason); + process.exit(1); +}); diff --git a/scripts/prepare-links.js b/scripts/prepare-links.js new file mode 100644 index 00000000..9b110130 --- /dev/null +++ b/scripts/prepare-links.js @@ -0,0 +1,15 @@ +const globby = require('globby'); +const path = require('path'); +const execa = require('execa'); + +const dirs = globby + .sync(path.join(__dirname, '../packages/*').replace(/\\/g, '/'), { + onlyDirectories: true, + }) + .sort(); + +dirs.forEach((dir) => { + console.log(`Running yarn link in ${dir}`); + execa.sync('yarn', ['link'], { cwd: dir, stdio: 'inherit' }); + console.log(); +}); diff --git a/scripts/testGlobalSetup.js b/scripts/testGlobalSetup.js new file mode 100644 index 00000000..81729536 --- /dev/null +++ b/scripts/testGlobalSetup.js @@ -0,0 +1,10 @@ +module.exports = (jestConfig) => { + try { + require('puppeteer'); + return require('jest-environment-puppeteer/setup')(jestConfig); + } catch (e) { + // + } + + return undefined; +}; diff --git a/scripts/testGlobalTeardown.js b/scripts/testGlobalTeardown.js new file mode 100644 index 00000000..7288f64e --- /dev/null +++ b/scripts/testGlobalTeardown.js @@ -0,0 +1,10 @@ +module.exports = (jestConfig) => { + try { + require('puppeteer'); + return require('jest-environment-puppeteer/teardown')(jestConfig); + } catch (e) { + // + } + + return undefined; +}; diff --git a/scripts/testPuppeteerEnv.js b/scripts/testPuppeteerEnv.js new file mode 100644 index 00000000..ee8c05f3 --- /dev/null +++ b/scripts/testPuppeteerEnv.js @@ -0,0 +1,21 @@ +const PuppeteerEnvironment = require('jest-environment-puppeteer'); + +module.exports = class PuppeteerCustomEnvironment extends PuppeteerEnvironment { + setup() { + try { + require('puppeteer'); + return super.setup(); + } catch (e) { + // + } + + return undefined; + } + + teardown() { + console.log('teardown'); + if (!this.global.puppeteerConfig) return undefined; + + return super.teardown(); + } +}; diff --git a/scripts/testSetup.js b/scripts/testSetup.js new file mode 100644 index 00000000..c4d8a77c --- /dev/null +++ b/scripts/testSetup.js @@ -0,0 +1,301 @@ +/* eslint-disable import/no-extraneous-dependencies */ + +const fs = require('fs-extra'); +const path = require('path'); +const { merge } = require('lodash'); +const globby = require('globby'); +const Module = require('module'); + +process.env.CHISEL_TEST = true; +// process.env.CHISEL_ROOT = path.join(__dirname, '..'); +process.env.CHISEL_TEST_NODE_MODULES = path.join( + __dirname, + '../.jest-projects/deps/node_modules', +); + +fs.mkdirpSync(process.env.CHISEL_TEST_NODE_MODULES); + +global.chiselTestHelpers = { + mockPromptAnswers(answersGenerator) { + const inquirer = require('inquirer'); + + let question = 0; + const original = inquirer.prompt; + inquirer.prompt = jest.fn(async (questions, data) => { + question += 1; + + const answers = answersGenerator(data); + + return answers[question] ? answers[question]() : undefined; + }); + + return () => { + inquirer.prompt = original; + }; + }, + + async generateProjectWithAnswers( + params, + answers, + { interceptWpConfig = false, mockRandomBytes = false } = {}, + ) { + const binPath = path.resolve( + __dirname, + '../packages/generator-chisel/bin/chisel', + ); + + let unMockAnswers; + if (answers) { + unMockAnswers = global.chiselTestHelpers.mockPromptAnswers((data) => + answers.map((ans) => () => merge({}, data, ans)), + ); + } + + let unMockRun; + if (interceptWpConfig) { + const sharedUtils = require('chisel-shared-utils'); + const original = sharedUtils.run; + + const { isEqual } = require('lodash'); + sharedUtils.runLocal = jest.fn((...args) => { + if (isEqual(args[0], ['chisel-scripts', 'wp-config'])) { + return global.chiselTestHelpers.runChiselScript(['wp-config']); + } + + return original(...args); + }); + + unMockRun = () => { + sharedUtils.runLocal = original; + }; + } + + let unMockRandomBytes; + if (mockRandomBytes) { + const crypto = require('crypto'); + const original = crypto.randomBytes; + + let randomCallNumber = 0; + + crypto.randomBytes = jest.fn((bytes) => { + randomCallNumber += 1; + const { MersenneTwister19937 } = require('random-js'); + const mt = MersenneTwister19937.seedWithArray([ + 20200807, + randomCallNumber, + ]); + + return Buffer.from([...Array(bytes)].map(() => mt.next() % 256)); + }); + + unMockRandomBytes = () => { + crypto.randomBytes = original; + }; + } + + const chisel = require('../packages/generator-chisel/bin/chisel'); + await chisel([process.argv[0], binPath, ...params]); + + if (unMockAnswers) unMockAnswers(); + if (unMockRun) unMockRun(); + if (unMockRandomBytes) unMockRandomBytes(); + }, + + async runChiselScript(args) { + const generator = path.dirname(__dirname); + const paths = Module._nodeModulePaths(process.cwd()).filter((p) => + p.startsWith(generator), + ); + + for (const p of paths) { + const fibers = path.join(p, 'fibers'); + if (await fs.exists(fibers)) { + await fs.remove(fibers); + } + } + + return require('chisel-scripts/bin/chisel-scripts')(args); + }, + + async expectFilesToMatchSnapshot( + filesPaths = ['./', '!node_modules', '!yarn.lock'], + groupsPrefixes = [], + ) { + // bug: hash of the css is depends on path of + let files = (await globby(filesPaths, { dot: true })) + .sort() + .map((val) => + val.replace(/(?<=styles\/main\.)[a-z0-9]+(?=\.)/, '--HASH--'), + ); + + const groupsPrefixesCounts = groupsPrefixes.map( + (prefix) => files.filter((file) => file.startsWith(prefix)).length, + ); + + files = files.filter( + (file) => !groupsPrefixes.some((prefix) => file.startsWith(prefix)), + ); + + groupsPrefixes.forEach((prefix, index) => { + const count = groupsPrefixesCounts[index]; + if (count === 0) return; + + const countStr = count > 100 ? '100+ files' : count; + + files.push(`${prefix}${countStr}`); + }); + + files = files.sort(); + + expect(files).toMatchSnapshot(); + }, + + normalizeConsoleMockCalls(consoleMock) { + consoleMock.mock.calls.forEach((call) => { + if (typeof call[0] === 'string') { + call[0] = call[0] + .replace(/(?<=styles\/main\.)[a-z0-9]+(?=\.)/g, '--HASH--') + .split(process.cwd()) + .join('--PROJECT-PATH--') + .replace(/\\+/g, '/') + .replace( + /(?<=Can't connect to MySQL server on '[\d.]+' \()[^\)]+(?=\))/g, + '--ERROR-DETAILS-', + ); + } + }); + + if (consoleMock.mock.calls[1] && consoleMock.mock.calls[1][0]) { + // in Ci in Node 12 and 14 there is difference in gzip compression + // ex. https://travis-ci.com/github/jakub300/generator-chisel/builds/231019589 + const nodeVersion = parseInt(process.versions.node.split('.')[0], 10); + const call = consoleMock.mock.calls[1][0]; + if (nodeVersion === 10) { + consoleMock.mock.calls[1][0] = call.replace('4.86 KiB', '4.85 KiB'); + } else if (nodeVersion === 12) { + consoleMock.mock.calls[1][0] = call.replace('1.87 KiB', '1.88 KiB'); + } + } + }, + + fileMatchesSnapshot(file) { + expect( + fs + .readFileSync(file, 'utf8') + .replace(/(?<=styles\/main\.)[a-z0-9]+(?=\.)/g, '--HASH--') + .replace(/dbrand\d+/g, '--DB-RAND--') + .split(process.cwd()) + .join('--PROJECT-PATH--') + .replace(/(?<=--PROJECT-PATH--)\\/g, '/') + .replace(/Copyright © 202\d /g, 'Copyright © 2020 '), + ).toMatchSnapshot(); + }, + + setupPhpServer() { + const execa = require('execa'); + + global.phpServer = { + async start(port = 8080, dir = '.') { + if (global.phpServerProcess) { + await global.phpServer.stop(); + } + + global.phpServerProcess = execa( + 'php', + ['-S', `127.0.0.1:${port}`, '-t', dir], + { stdio: 'inherit' }, + ); + }, + + async stop() { + const proc = global.phpServerProcess; + if (proc) { + global.phpServerProcess = undefined; + proc.kill('SIGTERM', { + forceKillAfterTimeout: 2000, + }); + + return proc.catch(() => {}); + } + + throw new Error('Process is already stopped'); + }, + }; + + afterEach(async () => { + if (global.phpServerProcess) { + // global.phpServerProcess. + await global.phpServer.stop(); + global.phpServerProcess = undefined; + } + }); + }, + + browserSync: { + monitor(page) { + let previousMessage = ''; + let isWaitingForClose = false; + let stopWaiting = false; + + function wait() { + page + .waitForSelector('#__bs_notify__') + .finally(() => { + if (stopWaiting) return; + wait(); + }) + .then(() => { + if (!isWaitingForClose) { + isWaitingForClose = true; + page + .waitForSelector('#__bs_notify__', { hidden: true }) + .then(() => { + previousMessage = ''; + isWaitingForClose = false; + }) + .catch(() => {}); + } + return page.$('#__bs_notify__'); + }) + .then((el) => el.getProperty('textContent')) + .then((val) => val.jsonValue()) + .then((str) => { + if (previousMessage === str) { + return; + } + console.log({ bsMessgae: str }); + previousMessage = str; + process.nextTick(() => page.emit('bsNotify', str)); + if (str === 'Browsersync: connected') { + process.nextTick(() => page.emit('bsConnected')); + } + }) + .catch(() => {}); + } + wait(); + + page.on('framenavigated', () => { + console.log('chiselNavigated'); + process.nextTick(() => page.emit('chiselNavigated')); + }); + + page.on('close', () => { + stopWaiting = true; + }); + }, + }, + + oncePromise(resource, ev) { + return new Promise((resolve) => { + resource.once(ev, (...args) => { + if (args.length === 0) { + resolve(); + } else if (args.length === 1) { + resolve(args[0]); + } else { + resolve(args); + } + }); + }); + }, +}; diff --git a/scripts/testSetupAfterEnv.js b/scripts/testSetupAfterEnv.js new file mode 100644 index 00000000..c7b701a9 --- /dev/null +++ b/scripts/testSetupAfterEnv.js @@ -0,0 +1,26 @@ +const fs = require('fs-extra'); +const path = require('path'); + +const initialDir = process.cwd(); + +beforeEach(() => { + const now = new Date().toISOString().replace(/[^\w\d]/g, ''); + const dir = path.resolve(initialDir, '.jest-projects', now); + fs.mkdirpSync(dir); + process.chdir(dir); +}); + +afterEach(async () => { + const currentPwd = process.cwd(); + process.chdir(initialDir); + if (currentPwd.includes('.jest-projects')) { + // console.log('REMOVE SYNC', new Date().toISOString()); + // await fs.remove(currentPwd); + await fs.remove(currentPwd); + } +}); + +const supportsPuppeteer = process.version !== 'v10.14.2'; +describe.supportsPuppeteer = supportsPuppeteer ? describe : describe.skip; +test.supportsPuppeteer = supportsPuppeteer ? test : test.skip; +it.supportsPuppeteer = supportsPuppeteer ? it : it.skip; diff --git a/test/.eslintrc.yml b/test/.eslintrc.yml deleted file mode 100644 index 9808c3b2..00000000 --- a/test/.eslintrc.yml +++ /dev/null @@ -1,2 +0,0 @@ -env: - mocha: true diff --git a/test/app/defaults.shared.js b/test/app/defaults.shared.js deleted file mode 100644 index 7fa9b5f5..00000000 --- a/test/app/defaults.shared.js +++ /dev/null @@ -1,104 +0,0 @@ -var assert = require('yeoman-assert'); - -function addTests() { - it('can be imported without blowing up', function (done) { - assert(require('../../generators/app') !== undefined); - - done(); - }); - - it('should generate configuration files', function (done) { - assert.file([ - '.babelrc', - '.browserslistrc', - '.editorconfig', - '.eslintrc', - '.prettierrc', - '.gitattributes', - '.stylelintrc.yml', - '.gitignore', - 'package.json', - 'index/project-index.html', - 'index/css/main.css', - 'README.md', - 'webpack.chisel.config.js' - ]); - - done(); - }); - - it('should generate gulp files', function (done) { - assert.file([ - 'gulpfile.js', - 'gulp/helpers.js', - 'gulp/tasks/assets.js', - 'gulp/tasks/build.js', - 'gulp/tasks/lint.js', - 'gulp/tasks/scripts.js', - 'gulp/tasks/serve.js', - 'gulp/tasks/styles.js', - 'gulp/tasks/templates.js' - ]); - - done(); - }); - - it('should generate scripts', function (done) { - assert.file([ - 'src/scripts/app.js', - 'src/scripts/modules/greeting.js' - ]); - - done(); - }); - - it('should generate assets structure', function (done) { - assert.file([ - 'src/assets/fonts/.keep', - 'src/assets/images/.keep' - ]); - - done(); - }); - - it('should generate proper app name in every file', function (done) { - assert.fileContent('package.json', '"name": "hello2d-waeszorld-2-d"'); - assert.fileContent('index/project-index.html', 'Project Index - Hello2d Wąęśźorld_2 :D'); - - done(); - }); - - it('should create valid Yeoman configuration file', function (done) { - assert.file('.yo-rc.json'); - assert.fileContent('.yo-rc.json', '"name": "Hello2d Wąęśźorld_2 :D"'); - assert.fileContent('.yo-rc.json', '"author": "Test Author"'); - assert.fileContent('.yo-rc.json', /"chiselVersion": "(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?"/) - - done(); - }); - - it('should create index file without pages', function (done) { - assert.file('index.html'); - assert.fileContent('index.html', 'To add more pages run'); - - done(); - }); - - it('should add gulp-twig to package.json', function(done) { - assert.fileContent('package.json', '"gulp-twig"'); - - done(); - }); - - it('should install Prettier and config for it', function (done) { - assert.fileContent('package.json', '"prettier":'); - assert.fileContent('.prettierrc', '{'); - assert.fileContent('.prettierrc', '"singleQuote": true,'); - assert.fileContent('.prettierrc', '"trailingComma": "es5"'); - assert.fileContent('.prettierrc', '}'); - - done(); - }); -} - -module.exports = addTests; diff --git a/test/app/defaults.test.js b/test/app/defaults.test.js deleted file mode 100644 index a114ce8c..00000000 --- a/test/app/defaults.test.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); - -describe('Chisel Generator with default options', function () { - before(function (done) { - - helpers - .run(path.join(__dirname, '../../generators/app')) - .withOptions({ - 'skip-install': true - }) - .withPrompts({ - name: 'Hello2d Wąęśźorld_2 :D', - author: 'Test Author', - projectType: 'fe' - }) - .on('end', done); - }); - - require('./defaults.shared.js')(); - - it('should generate templates', function (done) { - assert.file([ - 'src/templates/components/footer.twig', - 'src/templates/components/header.twig', - 'src/templates/layouts/base.twig', - 'src/templates/layouts/page.twig' - ]); - - done(); - }); - - it('should generate stylesheets', function (done) { - assert.file([ - 'src/styles/main.scss', - 'src/styles/settings/_global.scss', - 'src/styles/tools/_breakpoints.scss', - 'src/styles/tools/_clearfix.scss', - 'src/styles/tools/_hidden.scss', - 'src/styles/generic/_box-sizing.scss', - 'src/styles/generic/_font-face.scss', - 'src/styles/generic/_normalize.scss', - 'src/styles/generic/_reset.scss', - 'src/styles/generic/_shared.scss', - 'src/styles/elements/_blockquote.scss', - 'src/styles/elements/_headings.scss', - 'src/styles/elements/_hr.scss', - 'src/styles/elements/_html.scss', - 'src/styles/elements/_images.scss', - 'src/styles/elements/_links.scss', - 'src/styles/elements/_lists.scss', - 'src/styles/elements/_tables.scss', - 'src/styles/objects/_layout.scss', - 'src/styles/objects/_list-bare.scss', - 'src/styles/objects/_list-inline.scss', - 'src/styles/objects/_media.scss', - 'src/styles/objects/_table.scss', - 'src/styles/objects/_wrapper.scss', - 'src/styles/components/_btn.scss', - 'src/styles/components/_footer.scss', - 'src/styles/components/_header.scss', - 'src/styles/utilities/_align.scss', - 'src/styles/utilities/_clearfix.scss', - 'src/styles/utilities/_hide.scss' - ]); - - done(); - }); - -}); diff --git a/test/app/jquery.test.js b/test/app/jquery.test.js deleted file mode 100644 index bd2ace42..00000000 --- a/test/app/jquery.test.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); - -describe('Chisel Generator with jQuery', function () { - before(function (done) { - - helpers - .run(path.join(__dirname, '../../generators/app')) - .withOptions({ - 'skip-install': true - }) - .withPrompts({ - name: 'Test Project', - author: 'Test Author', - has_jquery: true, - has_jquery_vendor_config: false - }) - .on('end', done); - }); - - it('should add jQuery as a dependency in package.json', function (done) { - assert.fileContent('package.json', '"jquery":'); - - done(); - }); - - it('should create a jQuery example in a module', function (done) { - assert.file('src/scripts/modules/greeting.js'); - assert.fileContent('src/scripts/modules/greeting.js', "import $ from 'jquery';"); - assert.fileContent('src/scripts/modules/greeting.js', "const element = $('.js-greeting');"); - - done(); - }); - - it('should create valid Yeoman configuration file', function (done) { - assert.file('.yo-rc.json'); - assert.fileContent('.yo-rc.json', '"has_jquery": true' ); - assert.fileContent('.yo-rc.json', '"has_jquery_vendor_config": false' ); - - done(); - }); - - it('should create empty vendor list', function(done) { - assert.fileContent('src/scripts/vendor.json', '[]'); - - done(); - }) - - it('should not add jQuery to externals in webpack config', function(done) { - assert.fileContent('webpack.chisel.config.js', 'externals: {},'); - - done(); - }) -}); diff --git a/test/app/jqueryVendor.test.js b/test/app/jqueryVendor.test.js deleted file mode 100644 index c6c656f6..00000000 --- a/test/app/jqueryVendor.test.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); - -describe('Chisel Generator with jQuery in vendor bundle', function () { - before(function (done) { - - helpers - .run(path.join(__dirname, '../../generators/app')) - .withOptions({ - 'skip-install': true - }) - .withPrompts({ - name: 'Test Project', - author: 'Test Author', - has_jquery: true, - has_jquery_vendor_config: true - }) - .on('end', done); - }); - - it('should add jQuery as a dependency in package.json', function (done) { - assert.fileContent('package.json', '"jquery":'); - - done(); - }); - - it('should create a jQuery example in a module', function (done) { - assert.file('src/scripts/modules/greeting.js'); - assert.fileContent('src/scripts/modules/greeting.js', "import $ from 'jquery';"); - assert.fileContent('src/scripts/modules/greeting.js', "const element = $('.js-greeting');"); - - done(); - }); - - it('should create valid Yeoman configuration file', function (done) { - assert.file('.yo-rc.json'); - assert.fileContent('.yo-rc.json', '"has_jquery": true' ); - assert.fileContent('.yo-rc.json', '"has_jquery_vendor_config": true' ); - - done(); - }); - - it('should create vendor list with jQuery', function(done) { - assert.fileContent('src/scripts/vendor.json', '"/node_modules/jquery/dist/jquery.js"'); - - done(); - }) - - it('should add jQuery to externals in webpack config', function(done) { - assert.fileContent('webpack.chisel.config.js', "jquery: 'window.jQuery',"); - - done(); - }) -}); diff --git a/test/app/wordpress.test.js b/test/app/wordpress.test.js deleted file mode 100644 index e6812327..00000000 --- a/test/app/wordpress.test.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); - -describe('Chisel Generator with WordPress', function () { - before(function (done) { - - helpers - .run(path.join(__dirname, '../../generators/app')) - .withOptions({ - 'skip-install': true - }) - .withPrompts({ - name: 'Test Project', - author: 'Test Author', - projectType: 'wp-with-fe' - }) - .on('end', done); - }); - - it('should add WordPress directory to package.json', function(done) { - assert.fileContent('package.json', '"wordpress": "wp"'); - - done(); - }) - - it('should add WP theme name to package.json', function(done) { - assert.fileContent('package.json', '"wordpressTheme": "test-project-chisel"'); - - done(); - }) - - it('should add proxy to Browsersync config', function(done) { - assert.fileContent('gulp/tasks/serve.js', - 'target: generatorConfig.proxyTarget || `${name}.test`,'); - - done(); - }); - - it('should not add gulp-twig-up-to-date to package.json', function(done) { - assert.noFileContent('package.json', '"gulp-twig-up-to-date"'); - - done(); - }); -}); diff --git a/test/generate_package.js b/test/generate_package.js deleted file mode 100644 index eab30729..00000000 --- a/test/generate_package.js +++ /dev/null @@ -1,20 +0,0 @@ -if(!process.env['TEST_VERSIONS'] || process.env['TEST_VERSIONS'] != 'generated_project') { - process.exit(); -} - -var fs = require('fs'); -var ejs = require('ejs'); - -var options = { - name: "Test1", - author: "JB", - nameSlug: "test-1", - nameCamel: "Test1", - projectType: "fe", - has_jquery: true, - has_jquery_vendor_config: false, -} - -var file = fs.readFileSync('../generators/app/templates/package.json', 'utf8'); -var generatedFile = ejs.render(file, options); -fs.writeFileSync('generated_project/package.json', generatedFile); diff --git a/test/page/defaults.test.js b/test/page/defaults.test.js deleted file mode 100644 index 4d6e152a..00000000 --- a/test/page/defaults.test.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict'; - -var path = require('path'); -var async = require('async'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); - -describe('Chisel Generator with default options', function () { - before(function (done) { - - async.series([ - function (callback) { - helpers - .run(path.join(__dirname, '../../generators/app')) - .withOptions({ - 'skip-install': true - }) - .withPrompts({ - projectName: 'Test Project' - }) - .on('end', callback); - }, - function (callback) { - helpers - .run(path.join(__dirname, '../../generators/page'), { tmpdir: false }) - .withArguments(['Home', 'Test']) - .withOptions({ - 'skip-build': true - }) - .on('ready', function (generator) { - generator.conflicter.force = true; - }) - .on('end', callback); - } - ], done); - - }); - - describe('Page subgenerator', function () { - it('can be imported without blowing up', function (done) { - assert(require('../../generators/page') !== undefined); - - done(); - }); - - it('should generate Twig templates', function (done) { - assert.file([ - 'src/templates/home.twig', - 'src/templates/test.twig' - ]); - - done(); - }); - - it('should create valid Yeoman configuration file', function (done) { - assert.file('.yo-rc.json'); - assert.fileContent('.yo-rc.json', '"pages": ['); - assert.fileContent('.yo-rc.json', '"Home"'); - assert.fileContent('.yo-rc.json', '"Test"'); - - done(); - }); - }); -}); diff --git a/test/page/wp.test.js b/test/page/wp.test.js deleted file mode 100644 index 9be84ba4..00000000 --- a/test/page/wp.test.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); -var async = require('async'); - -const TEN_SECONDS = 10000; -const FOUR_MINUTES = 240000; - -describe('Chisel Generator with WordPress (subgenerator, WP-CLI integration)', function () { - describe('Page subgenerator', function() { - this.timeout(TEN_SECONDS) - - before(function (done) { - this.timeout(FOUR_MINUTES) - - // We skip those tests when running locally because they - // require database at 127.0.0.1 with root user and no password. - if(!process.env.TRAVIS) { - this.skip(); return; - } - - async.series([ - function (callback) { - helpers - .run(path.join(__dirname, '../../generators/app')) - .withOptions({ - 'skip-install': true, - 'run-wp': true - }) - .withPrompts({ - name: 'Test Project', - author: 'Test Author', - projectType: 'wp-with-fe', - databasePassword: new String(''), - adminPassword: 'pass', - adminEmail: 'user@example.com', - plugins: [] - }) - .on('end', callback); - }, - function(callback) { - helpers - .run(path.join(__dirname, '../../generators/page'), { tmpdir: false }) - .withArguments(['Home', 'Test']) - .withOptions({ - 'skip-build': true - }) - .on('ready', function (generator) { - generator.conflicter.force = true; - }) - .on('end', callback); - } - ], done) - }); - - it('should generate Twig templates', function (done) { - assert.file([ - 'wp/wp-content/themes/test-project-chisel/templates/page-home.twig', - 'wp/wp-content/themes/test-project-chisel/templates/page-test.twig' - ]); - - done(); - }); - - it('should create valid Yeoman configuration file', function (done) { - assert.file('.yo-rc.json'); - assert.fileContent('.yo-rc.json', '"pages": ['); - assert.fileContent('.yo-rc.json', '"Home"'); - assert.fileContent('.yo-rc.json', '"Test"'); - - done(); - }); - - }) -}); diff --git a/test/run-tests.sh b/test/run-tests.sh deleted file mode 100644 index aafa62b4..00000000 --- a/test/run-tests.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -set -e - -if [ "$TEST_VERSIONS" == "" ]; then - eslint . - mocha test/**/*.test.js -b --reporter spec -elif [ "$TEST_VERSIONS" == "generator" ]; then - rm -rf node_modules - npm install --quiet > /dev/null - npm install --quiet -g nsp npm-check > /dev/null - npm shrinkwrap --dev - nsp check - npm-check -s -elif [ "$TEST_VERSIONS" == "generated_project" ]; then - npm install --quiet -g nsp npm-check ejs > /dev/null - cd "$(dirname "$0")" - mkdir generated_project - node generate_package.js - cd generated_project - npm install --quiet > /dev/null - npm shrinkwrap --dev - nsp check - npm-check -s -else - echo 'Bad value of $TEST_VERSIONS' - exit 1 -fi diff --git a/test/wp-config/defaults.test.js b/test/wp-config/defaults.test.js deleted file mode 100644 index 49de77e0..00000000 --- a/test/wp-config/defaults.test.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); -var fs = require('fs'); - -const TEN_SECONDS = 10000; - -describe('Chisel Generator with WordPress (wp-config subgenerator)', function () { - before(function (done) { - this.timeout(TEN_SECONDS) - - // We skip those tests when running locally because they - // require database at 127.0.0.1 with root user and no password. - if(!process.env.TRAVIS) { - this.skip(); return; - } - - var context = helpers - .run(path.join(__dirname, '../../generators/wp-config')) - .withOptions({ - skipInstall: false - }) - .withPrompts({ - databasePassword: new String('') - }) - .withLocalConfig({config: {nameSlug: "test-1"}}) - .on('ready', () => { - fs.mkdirSync(path.join(context.targetDirectory, 'wp')); - }) - .on('end', done); - }); - - it('should update wp-config-local', function(done) { - assert.fileContent('wp/wp-config-local.php', '127.0.0.1'); - assert.fileContent('wp/wp-config-local.php', '7r4dz5cz_'); - - done(); - }) -}); diff --git a/test/wp-plugins/defaults.test.js b/test/wp-plugins/defaults.test.js deleted file mode 100644 index 6d9406bd..00000000 --- a/test/wp-plugins/defaults.test.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); -var wpCli = require('../../helpers/wpCli'); - -const TEN_SECONDS = 10000; -const FOUR_MINUTES = 240000; -const STDOUT = 0; - -describe('Chisel Generator with WordPress (wp-plugins subgenerator)', function () { - this.timeout(TEN_SECONDS) - - before(function (done) { - this.timeout(FOUR_MINUTES) - - // We skip those tests when running locally because they - // require database at 127.0.0.1 with root user and no password. - if(!process.env.TRAVIS) { - this.skip(); return; - } - - helpers - .run(path.join(__dirname, '../../generators/app')) - .withOptions({ - 'skip-install': true, - 'run-wp': true - }) - .withPrompts({ - name: 'Test Project Plugins', - author: 'Test Author', - projectType: 'wp-with-fe', - databasePassword: new String(''), - adminPassword: 'pass', - adminEmail: 'user@example.com', - plugins: ['https://github.com/wp-premium/advanced-custom-fields-pro/archive/master.zip', - 'https://github.com/wp-sync-db/wp-sync-db/archive/master.zip'] - }) - .on('end', done); - }); - - it('should download and activate ACF', function(done) { - wpCli(['plugin', 'status', 'advanced-custom-fields-pro'], (err, stdio) => { - assert(stdio[STDOUT].toString('utf8').indexOf('Active') != -1); - done(); - }) - }) - - it('should download and activate WP Sync DB', function(done) { - wpCli(['plugin', 'status', 'wp-sync-db'], (err, stdio) => { - assert(stdio[STDOUT].toString('utf8').indexOf('Active') != -1); - done(); - }) - }) -}); diff --git a/test/wp/defaults.test.js b/test/wp/defaults.test.js deleted file mode 100644 index dd093f3d..00000000 --- a/test/wp/defaults.test.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); - -const FOUR_MINUTES = 240000; - -describe('Chisel Generator with WordPress (subgenerator)', function () { - before(function (done) { - this.timeout(FOUR_MINUTES) - - helpers - .run(path.join(__dirname, '../../generators/wp')) - .withOptions({ - skipInstall: false, - skipPlugins: true, - skipWpCli: true, - skipConfig: true - }) - .withLocalConfig({ - config: { - nameSlug: "test-1", - name: "Test 1", - has_jquery: false, - has_jquery_vendor_config: false, - author: "Test Author", - projectType: 'wp-with-fe', - srcPlacement: 'root' - } - }) - .on('end', done); - }); - - it('should download WordPress', function(done) { - assert.file('wp/index.php'); - - done(); - }); - - it('should update wp-config', function(done) { - assert.fileContent('wp/wp-config.php', '7r4dz5cz_'); - assert.noFileContent('wp/wp-config.php', 'put your unique phrase here'); - - done(); - }) - - it('should add .gitignore', function(done) { - assert.file('wp/.gitignore'); - - done(); - }) - - it('should add wp-cli.yml', function(done) { - assert.file('wp-cli.yml'); - - done(); - }) - - it('should download our theme', function(done) { - assert.file('wp/wp-content/themes/test-1-chisel/index.php'); - - done(); - }) - - it('should remove .git from our theme', function(done) { - assert.noFile('wp/wp-content/themes/test-1-chisel/.git'); - - done(); - }) -}); diff --git a/test/wp/srcinwp.test.js b/test/wp/srcinwp.test.js deleted file mode 100644 index 28bebf2c..00000000 --- a/test/wp/srcinwp.test.js +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); - -const FOUR_MINUTES = 240000; - -describe('Chisel Generator with WordPress (subgenerator, src inside theme)', function () { - before(function (done) { - this.timeout(FOUR_MINUTES) - - // We skip those tests when running locally because they - // require database at 127.0.0.1 with root user and no password. - if(!process.env.TRAVIS) { - this.skip(); return; - } - - helpers - .run(path.join(__dirname, '../../generators/app')) - .withOptions({ - 'skip-install': true, - 'run-wp': true - }) - .withPrompts({ - name: 'Test Project SRC in WP', - author: 'Test Author', - projectType: 'wp-with-fe', - databasePassword: new String(''), - adminPassword: 'pass', - adminEmail: 'user@example.com', - plugins: [], - srcPlacement: 'theme' - }) - .on('end', done); - }); - - it('should have no src in main directory', function(done) { - assert.noFile('src'); - - done(); - }) - - it('should move base src into theme directory', function(done) { - var base = 'wp/wp-content/themes/test-project-src-in-wp-chisel/src'; - assert.file([ - base, - base+'/assets/images/.keep', - base+'/scripts/app.js', - base+'/styles/main.scss', - base+'/styles/settings/_global.scss', - base+'/styles/components/_header.scss' - ]); - - done(); - }) - - it('should move WP-specific styles into theme directory', function(done) { - var base = 'wp/wp-content/themes/test-project-src-in-wp-chisel/src'; - assert.file([ - base+'/styles/components/_comment.scss', - base+'/styles/components/_post.scss' - ]); - - done(); - }) -}); diff --git a/test/wp/wpcli.test.js b/test/wp/wpcli.test.js deleted file mode 100644 index 2ac8278b..00000000 --- a/test/wp/wpcli.test.js +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); -var wpCli = require('../../helpers/wpCli'); - -const TEN_SECONDS = 10000; -const FOUR_MINUTES = 240000; -const STDOUT = 0; - -describe('Chisel Generator with WordPress (subgenerator, WP-CLI integration)', function () { - this.timeout(TEN_SECONDS) - - before(function (done) { - this.timeout(FOUR_MINUTES) - - // We skip those tests when running locally because they - // require database at 127.0.0.1 with root user and no password. - if(!process.env.TRAVIS) { - this.skip(); return; - } - - helpers - .run(path.join(__dirname, '../../generators/wp')) - .withOptions({ - skipInstall: false, - skipPlugins: true - }) - .withPrompts({ - databasePassword: new String(''), - adminPassword: 'pass', - adminEmail: 'user@example.com' - }) - .withLocalConfig({config: {nameSlug: "test-1", name: "Test 1", author: "Test Author", projectType: 'wp-with-fe'}}) - .on('end', done); - - }); - - it('should install WordPress', function(done) { - wpCli(['core', 'is-installed'], (err) => { - assert(!err); - done(); - }) - }); - - it('should install and activate Timber', function(done) { - wpCli(['plugin', 'status', 'timber-library'], (err, stdio) => { - assert(stdio[STDOUT].toString('utf8').indexOf('Active') != -1); - done(); - }) - }); - - it('should activate Theme', function(done) { - wpCli(['theme', 'status', 'test-1-chisel'], (err, stdio) => { - assert(stdio[STDOUT].toString('utf8').indexOf('Active') != -1); - done(); - }) - }); - - it('should install and activate Disable Emojis Plugin', function(done) { - wpCli(['plugin', 'status', 'disable-emojis'], (err, stdio) => { - assert(stdio[STDOUT].toString('utf8').indexOf('Active') != -1); - done(); - }) - }); -}); diff --git a/test/wpcli/defaults.test.js b/test/wpcli/defaults.test.js deleted file mode 100644 index e8f7230b..00000000 --- a/test/wpcli/defaults.test.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -var path = require('path'); -var helpers = require('yeoman-test'); -var assert = require('yeoman-assert'); -var async = require('async'); -var wpCli = require('../../helpers/wpCli'); -var spawn = require('cross-spawn'); - -const TEN_SECONDS = 10000; -const FOUR_MINUTES = 240000; -const STDOUT = 0; - -describe('Chisel Generator with WordPress (wpcli subgenerator)', function () { - this.timeout(TEN_SECONDS) - - before(function (done) { - this.timeout(FOUR_MINUTES) - - // We skip those tests when running locally because they - // require database at 127.0.0.1 with root user and no password. - if(!process.env.TRAVIS) { - this.skip(); return; - } - - async.series([ - function(callback) { - helpers - .run(path.join(__dirname, '../../generators/wp')) - .withOptions({ - skipInstall: false, - skipPlugins: true - }) - .withPrompts({ - databasePassword: new String(''), - adminPassword: 'pass', - adminEmail: 'user@example.com' - }) - .withLocalConfig({config: {nameSlug: "test-cli", name: "Test Cli", author: "Test Author", projectType: 'wp-with-fe'}}) - .on('end', callback); - }, - function (callback) { - spawn('yo', [path.join(__dirname, '../../generators/wpcli'), - 'plugin', 'install', 'rest-api', '--activate'], {stdio: 'inherit'}) - .on('exit', callback) - .on('error', callback); - } - ], done) - }); - - it('should install and activate Rest API', function(done) { - wpCli(['plugin', 'status', 'rest-api'], (err, stdio) => { - assert(stdio[STDOUT].toString('utf8').indexOf('Active') != -1); - done(); - }) - }); - -}); diff --git a/yarn.lock b/yarn.lock index 88a69b9d..6ed780ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,3606 +2,14985 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== +"@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.0.0" + "@babel/highlight" "^7.10.4" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== +"@babel/compat-data@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.4.tgz#706a6484ee6f910b719b696a9194f8da7d7ac241" + integrity sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw== dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@>=7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.10.2", "@babel/core@^7.7.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d" + integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" + integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== + dependencies: + "@babel/types" "^7.10.4" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-builder-react-jsx-experimental@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.4.tgz#d0ffb875184d749c63ffe1f4f65be15143ec322d" + integrity sha512-LyacH/kgQPgLAuaWrvvq1+E7f5bLyT8jXCh7nM67sRsy2cpIGfgWJ+FCnAKQXfY+F0tXUaN6FqLkp4JiCzdK8Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-builder-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" + integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-compilation-targets@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== + dependencies: + "@babel/compat-data" "^7.10.4" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" + integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" + integrity sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.4" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" + integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== + dependencies: + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@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-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" + integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-module-transforms@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" + integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^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-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.4.tgz#59b373daaf3458e5747dece71bbaf45f9676af6d" + integrity sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" + integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== + dependencies: + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-split-export-declaration@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" + integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== + dependencies: + "@babel/types" "^7.10.4" + +"@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-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@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" - esutils "^2.0.2" js-tokens "^4.0.0" -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" +"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.7.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" + integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" +"@babel/plugin-proposal-async-generator-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" + integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@babel/plugin-proposal-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" + integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78" - integrity sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw== +"@babel/plugin-proposal-dynamic-import@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== dependencies: - type-detect "4.0.8" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@sinonjs/formatio@^3.0.0", "@sinonjs/formatio@^3.1.0": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.2.1.tgz#52310f2f9bcbc67bdac18c94ad4901b95fde267e" - integrity sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ== +"@babel/plugin-proposal-json-strings@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== dependencies: - "@sinonjs/commons" "^1" - "@sinonjs/samsam" "^3.1.0" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" -"@sinonjs/samsam@^2.1.2": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-2.1.3.tgz#62cf2a9b624edc795134135fe37fc2ae8ea36be3" - integrity sha512-8zNeBkSKhU9a5cRNbpCKau2WWPfan+Q2zDlcXvXyhn9EsMqgYs4qzo0XHNVlXC6ABQL8fT6nV+zzo5RTHJzyXw== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@sinonjs/samsam@^3.1.0": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.2.tgz#63942e3d5eb0b79f6de3bef9abfad15fb4b6401b" - integrity sha512-ILO/rR8LfAb60Y1Yfp9vxfYAASK43NFC2mLzpvLUbCQY/Qu8YwReboseu8aheCEkyElZF2L2T9mHcR2bgdvZyA== +"@babel/plugin-proposal-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== dependencies: - "@sinonjs/commons" "^1.0.2" - array-from "^2.1.1" - lodash "^4.17.11" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@sinonjs/text-encoding@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" - integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== +"@babel/plugin-proposal-object-rest-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" + integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== +"@babel/plugin-proposal-optional-catch-binding@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== dependencies: - defer-to-connect "^1.0.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== +"@babel/plugin-proposal-optional-chaining@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" + integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== +"@babel/plugin-proposal-private-methods@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" + integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@types/minimatch@*", "@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@types/node@*": - version "12.6.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.8.tgz#e469b4bf9d1c9832aee4907ba8a051494357c12c" - integrity sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg== +"@babel/plugin-syntax-async-generators@^7.8.0", "@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" -"@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== +"@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" -acorn-jsx@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.0.tgz#958584ddb60990c02c97c1bd9d521fce433bb101" - integrity sha512-XkB50fn0MURDyww9+UYL3c1yLbOBz0ZFvrdYlGB8l+Ije1oSC75qAqrzSPjYQbdnQUzhlUGNKuesryAv0gxZOg== +"@babel/plugin-syntax-class-properties@^7.10.4", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" + integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" -acorn@^6.0.7: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" -ajv@^6.10.0: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== +"@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: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + "@babel/helper-plugin-utils" "^7.10.4" -ajv@^6.9.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== +"@babel/plugin-syntax-json-strings@^7.8.0", "@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: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + "@babel/helper-plugin-utils" "^7.8.0" -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== +"@babel/plugin-syntax-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" + integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== dependencies: - string-width "^3.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -ansi-colors@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" - integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== +"@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" -ansi-escapes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@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" -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@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" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +"@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" -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" +"@babel/plugin-syntax-optional-catch-binding@^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" -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +"@babel/plugin-syntax-optional-chaining@^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" -ansi-styles@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750" +"@babel/plugin-syntax-top-level-await@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== dependencies: - color-convert "^1.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" +"@babel/plugin-transform-arrow-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== dependencies: - color-convert "^1.9.0" + "@babel/helper-plugin-utils" "^7.10.4" -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" +"@babel/plugin-transform-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== dependencies: - sprintf-js "~1.0.2" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" +"@babel/plugin-transform-block-scoped-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +"@babel/plugin-transform-block-scoping@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" + integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + lodash "^4.17.13" -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" +"@babel/plugin-transform-classes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" +"@babel/plugin-transform-computed-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== +"@babel/plugin-transform-destructuring@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" -array-from@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195" - integrity sha1-z+nYwmYoudxa7MYqn12PHzUsEZU= +"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -array-union@^1.0.1, array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" +"@babel/plugin-transform-duplicate-keys@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== dependencies: - array-uniq "^1.0.1" + "@babel/helper-plugin-utils" "^7.10.4" -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== +"@babel/plugin-transform-exponentiation-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" +"@babel/plugin-transform-for-of@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +"@babel/plugin-transform-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -arrify@^1.0.0, arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" +"@babel/plugin-transform-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== +"@babel/plugin-transform-member-expression-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" +"@babel/plugin-transform-modules-amd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" + integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +"@babel/plugin-transform-modules-commonjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== + dependencies: + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" + integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" -async@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" +"@babel/plugin-transform-modules-umd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== dependencies: - lodash "^4.14.0" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -async@^2.6.2, async@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== dependencies: - lodash "^4.17.14" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" +"@babel/plugin-transform-new-target@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +"@babel/plugin-transform-object-super@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +"@babel/plugin-transform-parameters@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" + integrity sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" +"@babel/plugin-transform-property-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== 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" + "@babel/helper-plugin-utils" "^7.10.4" -bignumber.js@7.2.1: - version "7.2.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" - integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== +"@babel/plugin-transform-react-display-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" + integrity sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" -binaryextensions@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.2.tgz#c83c3d74233ba7674e4f313cb2a2b70f54e94b7c" +"@babel/plugin-transform-react-jsx-development@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz#6ec90f244394604623880e15ebc3c34c356258ba" + integrity sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" -boxen@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" - integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A== +"@babel/plugin-transform-react-jsx-self@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" + integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^2.4.2" - cli-boxes "^2.2.0" - string-width "^3.0.0" - term-size "^1.2.0" - type-fest "^0.3.0" - widest-line "^2.0.0" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" -brace-expansion@^1.0.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" +"@babel/plugin-transform-react-jsx-source@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.4.tgz#86baf0fcccfe58084e06446a80858e1deae8f291" + integrity sha512-FTK3eQFrPv2aveerUSazFmGygqIdTtvskG50SnGnbEUnRPcGx2ylBhdFIzoVS1ty44hEgcPoCAyw5r3VDEq+Ug== dependencies: - balanced-match "^0.4.1" - concat-map "0.0.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" +"@babel/plugin-transform-react-jsx@^7.10.1", "@babel/plugin-transform-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" + integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" + +"@babel/plugin-transform-react-pure-annotations@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" + integrity sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-runtime@^7.10.1": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.4.tgz#594fb53453ea1b6f0779cceb48ce0718a447feb7" + integrity sha512-8ULlGv8p+Vuxu+kz2Y1dk6MYS2b/Dki+NO6/0ZlfSj5tMalfDL7jI/o/2a+rrWLqSXvnadEqc2WguB4gdQIxZw== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" + integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-sticky-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" + integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-escapes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" + integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.10.2": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" + integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== + dependencies: + "@babel/compat-data" "^7.10.4" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.10.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.10.4" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.10.4" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.10.4" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" +"@babel/preset-react@^7.10.1": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" + integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.10.4" + "@babel/plugin-transform-react-jsx" "^7.10.4" + "@babel/plugin-transform-react-jsx-development" "^7.10.4" + "@babel/plugin-transform-react-jsx-self" "^7.10.4" + "@babel/plugin-transform-react-jsx-source" "^7.10.4" + "@babel/plugin-transform-react-pure-annotations" "^7.10.4" + +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz#f29fc1990307c4c57b10dbd6ce667b27159d9e0d" + integrity sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.8.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" + integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4", "@babel/template@^7.3.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.7.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" + integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" + integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.13" + 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== + +"@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: - 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" + exec-sh "^0.3.2" + minimist "^1.2.0" -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" +"@csstools/normalize.css@*": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" +"@evocateur/libnpmaccess@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" + integrity sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + npm-package-arg "^6.1.0" -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" +"@evocateur/libnpmpublish@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz#55df09d2dca136afba9c88c759ca272198db9f1a" + integrity sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg== dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" + "@evocateur/npm-registry-fetch" "^4.0.0" + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + lodash.clonedeep "^4.5.0" + normalize-package-data "^2.4.0" + npm-package-arg "^6.1.0" + semver "^5.5.1" + ssri "^6.0.1" -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" +"@evocateur/npm-registry-fetch@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz#8c4c38766d8d32d3200fcb0a83f064b57365ed66" + integrity sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + npm-package-arg "^6.1.0" + safe-buffer "^5.1.2" + +"@evocateur/pacote@^9.6.3": + version "9.6.5" + resolved "https://registry.yarnpkg.com/@evocateur/pacote/-/pacote-9.6.5.tgz#33de32ba210b6f17c20ebab4d497efc6755f4ae5" + integrity sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + bluebird "^3.5.3" + cacache "^12.0.3" + chownr "^1.1.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.5.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.4.4" + npm-pick-manifest "^3.0.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.1" + rimraf "^2.6.3" + safe-buffer "^5.2.0" + semver "^5.7.0" + ssri "^6.0.1" + tar "^4.4.10" + unique-filename "^1.1.1" + which "^1.3.1" -buffer-shims@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== -bulk-replace@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/bulk-replace/-/bulk-replace-0.0.1.tgz#f095682a896abd4b3d9e08de409cc222e213f9dd" +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" +"@hapi/joi@^15.0.3": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== 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" + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + "@hapi/hoek" "^8.3.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== +"@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" -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== +"@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.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.1.0.tgz#f67c89e4f4d04dbcf7b052aed5ab9c74f915b954" + integrity sha512-+0lpTHMd/8pJp+Nd4lyip+/Iyf2dZJvcCqrlkeZQoQid+JlThA4M9vxHtheyrQ99jJTMQam+es4BcvZ5W5cC3A== + dependencies: + "@jest/types" "^26.1.0" + chalk "^4.0.0" + jest-message-util "^26.1.0" + jest-util "^26.1.0" + slash "^3.0.0" + +"@jest/core@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.1.0.tgz#4580555b522de412a7998b3938c851e4f9da1c18" + integrity sha512-zyizYmDJOOVke4OO/De//aiv8b07OwZzL2cfsvWF3q9YssfpcKfcnZAwDY8f+A76xXSMMYe8i/f/LPocLlByfw== + dependencies: + "@jest/console" "^26.1.0" + "@jest/reporters" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^26.1.0" + jest-config "^26.1.0" + jest-haste-map "^26.1.0" + jest-message-util "^26.1.0" + jest-regex-util "^26.0.0" + jest-resolve "^26.1.0" + jest-resolve-dependencies "^26.1.0" + jest-runner "^26.1.0" + jest-runtime "^26.1.0" + jest-snapshot "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" + jest-watcher "^26.1.0" + 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.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.1.0.tgz#378853bcdd1c2443b4555ab908cfbabb851e96da" + integrity sha512-86+DNcGongbX7ai/KE/S3/NcUVZfrwvFzOOWX/W+OOTvTds7j07LtC+MgGydH5c8Ri3uIrvdmVgd1xFD5zt/xA== + dependencies: + "@jest/fake-timers" "^26.1.0" + "@jest/types" "^26.1.0" + jest-mock "^26.1.0" + +"@jest/fake-timers@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.1.0.tgz#9a76b7a94c351cdbc0ad53e5a748789f819a65fe" + integrity sha512-Y5F3kBVWxhau3TJ825iuWy++BAuQzK/xEa+wD9vDH3RytW9f2DbMVodfUQC54rZDX3POqdxCgcKdgcOL0rYUpA== + dependencies: + "@jest/types" "^26.1.0" + "@sinonjs/fake-timers" "^6.0.1" + jest-message-util "^26.1.0" + jest-mock "^26.1.0" + jest-util "^26.1.0" + +"@jest/globals@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.1.0.tgz#6cc5d7cbb79b76b120f2403d7d755693cf063ab1" + integrity sha512-MKiHPNaT+ZoG85oMaYUmGHEqu98y3WO2yeIDJrs2sJqHhYOy3Z6F7F/luzFomRQ8SQ1wEkmahFAz2291Iv8EAw== + dependencies: + "@jest/environment" "^26.1.0" + "@jest/types" "^26.1.0" + expect "^26.1.0" + +"@jest/reporters@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.1.0.tgz#08952e90c90282e14ff49e927bdf1873617dae78" + integrity sha512-SVAysur9FOIojJbF4wLP0TybmqwDkdnFxHSPzHMMIYyBtldCW9gG+Q5xWjpMFyErDiwlRuPyMSJSU64A67Pazg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" + 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.1.0" + jest-resolve "^26.1.0" + jest-util "^26.1.0" + jest-worker "^26.1.0" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^4.1.3" + optionalDependencies: + node-notifier "^7.0.0" -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" +"@jest/source-map@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.1.0.tgz#a6a020d00e7d9478f4b690167c5e8b77e63adb26" + integrity sha512-XYRPYx4eEVX15cMT9mstnO7hkHP3krNtKfxUYd8L7gbtia8JvZZ6bMzSwa6IQJENbudTwKMw5R1BePRD+bkEmA== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.1.0.tgz#a93fa15b21ad3c7ceb21c2b4c35be2e407d8e971" + integrity sha512-Xz44mhXph93EYMA8aYDz+75mFbarTV/d/x0yMdI3tfSRs/vh4CqSxgzVmCps1fPkHDCtn0tU8IH9iCKgGeGpfw== + dependencies: + "@jest/console" "^26.1.0" + "@jest/types" "^26.1.0" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.1.0.tgz#41a6fc8b850c3f33f48288ea9ea517c047e7f14e" + integrity sha512-Z/hcK+rTq56E6sBwMoQhSRDVjqrGtj1y14e2bIgcowARaIE1SgOanwx6gvY4Q9gTKMoZQXbXvptji+q5GYxa6Q== + dependencies: + "@jest/test-result" "^26.1.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.1.0" + jest-runner "^26.1.0" + jest-runtime "^26.1.0" + +"@jest/transform@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.1.0.tgz#697f48898c2a2787c9b4cb71d09d7e617464e509" + integrity sha512-ICPm6sUXmZJieq45ix28k0s+d/z2E8CHDsq+WwtWI6kW8m7I8kPqarSEcUN86entHQ570ZBRci5OWaKL0wlAWw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^26.1.0" + 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.1.0" + jest-regex-util "^26.0.0" + jest-util "^26.1.0" + 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.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.1.0.tgz#f8afaaaeeb23b5cad49dd1f7779689941dcb6057" + integrity sha512-GXigDDsp6ZlNMhXQDeuy/iYCDsRIHJabWtDzvnn36+aqFfG14JmFV0e/iXxY4SP9vbXSiPNOWdehU5MeqrYHBQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@lerna/add@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.21.0.tgz#27007bde71cc7b0a2969ab3c2f0ae41578b4577b" + integrity sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A== + dependencies: + "@evocateur/pacote" "^9.6.3" + "@lerna/bootstrap" "3.21.0" + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + npm-package-arg "^6.1.0" + p-map "^2.1.0" + semver "^6.2.0" + +"@lerna/bootstrap@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.21.0.tgz#bcd1b651be5b0970b20d8fae04c864548123aed6" + integrity sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/has-npm-version" "3.16.5" + "@lerna/npm-install" "3.16.5" + "@lerna/package-graph" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.16.5" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/symlink-binary" "3.17.0" + "@lerna/symlink-dependencies" "3.17.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + get-port "^4.2.0" + multimatch "^3.0.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^2.1.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + read-package-tree "^5.1.6" + semver "^6.2.0" + +"@lerna/changed@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.21.0.tgz#108e15f679bfe077af500f58248c634f1044ea0b" + integrity sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw== + dependencies: + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/listable" "3.18.5" + "@lerna/output" "3.13.0" + +"@lerna/check-working-tree@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz#b4f8ae61bb4523561dfb9f8f8d874dd46bb44baa" + integrity sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ== + dependencies: + "@lerna/collect-uncommitted" "3.16.5" + "@lerna/describe-ref" "3.16.5" + "@lerna/validation-error" "3.13.0" + +"@lerna/child-process@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.16.5.tgz#38fa3c18064aa4ac0754ad80114776a7b36a69b2" + integrity sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg== + dependencies: + chalk "^2.3.1" + execa "^1.0.0" + strong-log-transformer "^2.0.0" + +"@lerna/clean@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.21.0.tgz#c0b46b5300cc3dae2cda3bec14b803082da3856d" + integrity sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.16.5" + p-map "^2.1.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + +"@lerna/cli@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.18.5.tgz#c90c461542fcd35b6d5b015a290fb0dbfb41d242" + integrity sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA== + dependencies: + "@lerna/global-options" "3.13.0" + dedent "^0.7.0" + npmlog "^4.1.2" + yargs "^14.2.2" + +"@lerna/collect-uncommitted@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz#a494d61aac31cdc7aec4bbe52c96550274132e63" + integrity sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg== + dependencies: + "@lerna/child-process" "3.16.5" + chalk "^2.3.1" + figgy-pudding "^3.5.1" + npmlog "^4.1.2" + +"@lerna/collect-updates@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.20.0.tgz#62f9d76ba21a25b7d9fbf31c02de88744a564bd1" + integrity sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/describe-ref" "3.16.5" + minimatch "^3.0.4" + npmlog "^4.1.2" + slash "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d" +"@lerna/command@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.21.0.tgz#9a2383759dc7b700dacfa8a22b2f3a6e190121f7" + integrity sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/package-graph" "3.18.5" + "@lerna/project" "3.21.0" + "@lerna/validation-error" "3.13.0" + "@lerna/write-log-file" "3.13.0" + clone-deep "^4.0.1" + dedent "^0.7.0" + execa "^1.0.0" + is-ci "^2.0.0" + npmlog "^4.1.2" + +"@lerna/conventional-commits@3.22.0": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz#2798f4881ee2ef457bdae027ab7d0bf0af6f1e09" + integrity sha512-z4ZZk1e8Mhz7+IS8NxHr64wyklHctCJyWpJKEZZPJiLFJ8yKto/x38O80R10pIzC0rr8Sy/OsjSH4bl0TbbgqA== + dependencies: + "@lerna/validation-error" "3.13.0" + conventional-changelog-angular "^5.0.3" + conventional-changelog-core "^3.1.6" + conventional-recommended-bump "^5.0.0" + fs-extra "^8.1.0" + get-stream "^4.0.0" + lodash.template "^4.5.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^4.0.1" + semver "^6.2.0" + +"@lerna/create-symlink@3.16.2": + version "3.16.2" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.16.2.tgz#412cb8e59a72f5a7d9463e4e4721ad2070149967" + integrity sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw== + dependencies: + "@zkochan/cmd-shim" "^3.1.0" + fs-extra "^8.1.0" + npmlog "^4.1.2" + +"@lerna/create@3.22.0": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.22.0.tgz#d6bbd037c3dc5b425fe5f6d1b817057c278f7619" + integrity sha512-MdiQQzCcB4E9fBF1TyMOaAEz9lUjIHp1Ju9H7f3lXze5JK6Fl5NYkouAvsLgY6YSIhXMY8AHW2zzXeBDY4yWkw== + dependencies: + "@evocateur/pacote" "^9.6.3" + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/validation-error" "3.13.0" + camelcase "^5.0.0" + dedent "^0.7.0" + fs-extra "^8.1.0" + globby "^9.2.0" + init-package-json "^1.10.3" + npm-package-arg "^6.1.0" + p-reduce "^1.0.0" + pify "^4.0.1" + semver "^6.2.0" + slash "^2.0.0" + validate-npm-package-license "^3.0.3" + validate-npm-package-name "^3.0.0" + whatwg-url "^7.0.0" + +"@lerna/describe-ref@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.16.5.tgz#a338c25aaed837d3dc70b8a72c447c5c66346ac0" + integrity sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw== + dependencies: + "@lerna/child-process" "3.16.5" + npmlog "^4.1.2" + +"@lerna/diff@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.21.0.tgz#e6df0d8b9916167ff5a49fcb02ac06424280a68d" + integrity sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/validation-error" "3.13.0" + npmlog "^4.1.2" + +"@lerna/exec@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.21.0.tgz#17f07533893cb918a17b41bcc566dc437016db26" + integrity sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/profiler" "3.20.0" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + p-map "^2.1.0" + +"@lerna/filter-options@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.20.0.tgz#0f0f5d5a4783856eece4204708cc902cbc8af59b" + integrity sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g== + dependencies: + "@lerna/collect-updates" "3.20.0" + "@lerna/filter-packages" "3.18.0" + dedent "^0.7.0" + figgy-pudding "^3.5.1" + npmlog "^4.1.2" + +"@lerna/filter-packages@3.18.0": + version "3.18.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.18.0.tgz#6a7a376d285208db03a82958cfb8172e179b4e70" + integrity sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ== + dependencies: + "@lerna/validation-error" "3.13.0" + multimatch "^3.0.0" + npmlog "^4.1.2" + +"@lerna/get-npm-exec-opts@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" + integrity sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw== + dependencies: + npmlog "^4.1.2" + +"@lerna/get-packed@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.16.0.tgz#1b316b706dcee86c7baa55e50b087959447852ff" + integrity sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw== + dependencies: + fs-extra "^8.1.0" + ssri "^6.0.1" + tar "^4.4.8" + +"@lerna/github-client@3.22.0": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.22.0.tgz#5d816aa4f76747ed736ae64ff962b8f15c354d95" + integrity sha512-O/GwPW+Gzr3Eb5bk+nTzTJ3uv+jh5jGho9BOqKlajXaOkMYGBELEAqV5+uARNGWZFvYAiF4PgqHb6aCUu7XdXg== + dependencies: + "@lerna/child-process" "3.16.5" + "@octokit/plugin-enterprise-rest" "^6.0.1" + "@octokit/rest" "^16.28.4" + git-url-parse "^11.1.2" + npmlog "^4.1.2" + +"@lerna/gitlab-client@3.15.0": + version "3.15.0" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz#91f4ec8c697b5ac57f7f25bd50fe659d24aa96a6" + integrity sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q== + dependencies: + node-fetch "^2.5.0" + npmlog "^4.1.2" + whatwg-url "^7.0.0" + +"@lerna/global-options@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" + integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== + +"@lerna/has-npm-version@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz#ab83956f211d8923ea6afe9b979b38cc73b15326" + integrity sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q== + dependencies: + "@lerna/child-process" "3.16.5" + semver "^6.2.0" + +"@lerna/import@3.22.0": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.22.0.tgz#1a5f0394f38e23c4f642a123e5e1517e70d068d2" + integrity sha512-uWOlexasM5XR6tXi4YehODtH9Y3OZrFht3mGUFFT3OIl2s+V85xIGFfqFGMTipMPAGb2oF1UBLL48kR43hRsOg== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + fs-extra "^8.1.0" + p-map-series "^1.0.0" + +"@lerna/info@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-3.21.0.tgz#76696b676fdb0f35d48c83c63c1e32bb5e37814f" + integrity sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/output" "3.13.0" + envinfo "^7.3.1" + +"@lerna/init@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.21.0.tgz#1e810934dc8bf4e5386c031041881d3b4096aa5c" + integrity sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/command" "3.21.0" + fs-extra "^8.1.0" + p-map "^2.1.0" + write-json-file "^3.2.0" + +"@lerna/link@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.21.0.tgz#8be68ff0ccee104b174b5bbd606302c2f06e9d9b" + integrity sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/package-graph" "3.18.5" + "@lerna/symlink-dependencies" "3.17.0" + p-map "^2.1.0" + slash "^2.0.0" + +"@lerna/list@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.21.0.tgz#42f76fafa56dea13b691ec8cab13832691d61da2" + integrity sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/listable" "3.18.5" + "@lerna/output" "3.13.0" + +"@lerna/listable@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.18.5.tgz#e82798405b5ed8fc51843c8ef1e7a0e497388a1a" + integrity sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg== + dependencies: + "@lerna/query-graph" "3.18.5" + chalk "^2.3.1" + columnify "^1.5.4" + +"@lerna/log-packed@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.16.0.tgz#f83991041ee77b2495634e14470b42259fd2bc16" + integrity sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ== + dependencies: + byte-size "^5.0.1" + columnify "^1.5.4" + has-unicode "^2.0.1" + npmlog "^4.1.2" + +"@lerna/npm-conf@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.16.0.tgz#1c10a89ae2f6c2ee96962557738685300d376827" + integrity sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA== + dependencies: + config-chain "^1.1.11" + pify "^4.0.1" + +"@lerna/npm-dist-tag@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz#9ef9abb7c104077b31f6fab22cc73b314d54ac55" + integrity sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ== + dependencies: + "@evocateur/npm-registry-fetch" "^4.0.0" + "@lerna/otplease" "3.18.5" + figgy-pudding "^3.5.1" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + +"@lerna/npm-install@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.16.5.tgz#d6bfdc16f81285da66515ae47924d6e278d637d3" + integrity sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/get-npm-exec-opts" "3.13.0" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + signal-exit "^3.0.2" + write-pkg "^3.1.0" + +"@lerna/npm-publish@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.18.5.tgz#240e4039959fd9816b49c5b07421e11b5cb000af" + integrity sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg== + dependencies: + "@evocateur/libnpmpublish" "^1.2.2" + "@lerna/otplease" "3.18.5" + "@lerna/run-lifecycle" "3.16.2" + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^4.0.1" + read-package-json "^2.0.13" + +"@lerna/npm-run-script@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz#9c2ec82453a26c0b46edc0bb7c15816c821f5c15" + integrity sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ== + dependencies: + "@lerna/child-process" "3.16.5" + "@lerna/get-npm-exec-opts" "3.13.0" + npmlog "^4.1.2" + +"@lerna/otplease@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-3.18.5.tgz#b77b8e760b40abad9f7658d988f3ea77d4fd0231" + integrity sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog== + dependencies: + "@lerna/prompt" "3.18.5" + figgy-pudding "^3.5.1" + +"@lerna/output@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" + integrity sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg== + dependencies: + npmlog "^4.1.2" + +"@lerna/pack-directory@3.16.4": + version "3.16.4" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.16.4.tgz#3eae5f91bdf5acfe0384510ed53faddc4c074693" + integrity sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng== + dependencies: + "@lerna/get-packed" "3.16.0" + "@lerna/package" "3.16.0" + "@lerna/run-lifecycle" "3.16.2" + figgy-pudding "^3.5.1" + npm-packlist "^1.4.4" + npmlog "^4.1.2" + tar "^4.4.10" + temp-write "^3.4.0" + +"@lerna/package-graph@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.18.5.tgz#c740e2ea3578d059e551633e950690831b941f6b" + integrity sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA== + dependencies: + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/validation-error" "3.13.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + semver "^6.2.0" + +"@lerna/package@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.16.0.tgz#7e0a46e4697ed8b8a9c14d59c7f890e0d38ba13c" + integrity sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw== + dependencies: + load-json-file "^5.3.0" + npm-package-arg "^6.1.0" + write-pkg "^3.1.0" + +"@lerna/prerelease-id-from-version@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz#b24bfa789f5e1baab914d7b08baae9b7bd7d83a1" + integrity sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA== + dependencies: + semver "^6.2.0" + +"@lerna/profiler@3.20.0": + version "3.20.0" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-3.20.0.tgz#0f6dc236f4ea8f9ea5f358c6703305a4f32ad051" + integrity sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg== + dependencies: + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npmlog "^4.1.2" + upath "^1.2.0" + +"@lerna/project@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.21.0.tgz#5d784d2d10c561a00f20320bcdb040997c10502d" + integrity sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A== + dependencies: + "@lerna/package" "3.16.0" + "@lerna/validation-error" "3.13.0" + cosmiconfig "^5.1.0" + dedent "^0.7.0" + dot-prop "^4.2.0" + glob-parent "^5.0.0" + globby "^9.2.0" + load-json-file "^5.3.0" + npmlog "^4.1.2" + p-map "^2.1.0" + resolve-from "^4.0.0" + write-json-file "^3.2.0" + +"@lerna/prompt@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.18.5.tgz#628cd545f225887d060491ab95df899cfc5218a1" + integrity sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ== + dependencies: + inquirer "^6.2.0" + npmlog "^4.1.2" + +"@lerna/publish@3.22.1": + version "3.22.1" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.22.1.tgz#b4f7ce3fba1e9afb28be4a1f3d88222269ba9519" + integrity sha512-PG9CM9HUYDreb1FbJwFg90TCBQooGjj+n/pb3gw/eH5mEDq0p8wKdLFe0qkiqUkm/Ub5C8DbVFertIo0Vd0zcw== + dependencies: + "@evocateur/libnpmaccess" "^3.1.2" + "@evocateur/npm-registry-fetch" "^4.0.0" + "@evocateur/pacote" "^9.6.3" + "@lerna/check-working-tree" "3.16.5" + "@lerna/child-process" "3.16.5" + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/describe-ref" "3.16.5" + "@lerna/log-packed" "3.16.0" + "@lerna/npm-conf" "3.16.0" + "@lerna/npm-dist-tag" "3.18.5" + "@lerna/npm-publish" "3.18.5" + "@lerna/otplease" "3.18.5" + "@lerna/output" "3.13.0" + "@lerna/pack-directory" "3.16.4" + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/prompt" "3.18.5" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + "@lerna/version" "3.22.1" + figgy-pudding "^3.5.1" + fs-extra "^8.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^2.1.0" + p-pipe "^1.2.0" + semver "^6.2.0" + +"@lerna/pulse-till-done@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" + integrity sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA== dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" + npmlog "^4.1.2" -chalk@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" +"@lerna/query-graph@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-3.18.5.tgz#df4830bb5155273003bf35e8dda1c32d0927bd86" + integrity sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA== dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" + "@lerna/package-graph" "3.18.5" + figgy-pudding "^3.5.1" -chalk@^2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" +"@lerna/resolve-symlink@3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz#37fc7095fabdbcf317c26eb74e0d0bde8efd2386" + integrity sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ== dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" + fs-extra "^8.1.0" + npmlog "^4.1.2" + read-cmd-shim "^1.0.1" -chalk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" +"@lerna/rimraf-dir@3.16.5": + version "3.16.5" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz#04316ab5ffd2909657aaf388ea502cb8c2f20a09" + integrity sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA== dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" + "@lerna/child-process" "3.16.5" + npmlog "^4.1.2" + path-exists "^3.0.0" + rimraf "^2.6.2" -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== +"@lerna/run-lifecycle@3.16.2": + version "3.16.2" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz#67b288f8ea964db9ea4fb1fbc7715d5bbb0bce00" + integrity sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A== + dependencies: + "@lerna/npm-conf" "3.16.0" + figgy-pudding "^3.5.1" + npm-lifecycle "^3.1.2" + npmlog "^4.1.2" + +"@lerna/run-topologically@3.18.5": + version "3.18.5" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-3.18.5.tgz#3cd639da20e967d7672cb88db0f756b92f2fdfc3" + integrity sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg== + dependencies: + "@lerna/query-graph" "3.18.5" + figgy-pudding "^3.5.1" + p-queue "^4.0.0" + +"@lerna/run@3.21.0": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.21.0.tgz#2a35ec84979e4d6e42474fe148d32e5de1cac891" + integrity sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q== + dependencies: + "@lerna/command" "3.21.0" + "@lerna/filter-options" "3.20.0" + "@lerna/npm-run-script" "3.16.5" + "@lerna/output" "3.13.0" + "@lerna/profiler" "3.20.0" + "@lerna/run-topologically" "3.18.5" + "@lerna/timer" "3.13.0" + "@lerna/validation-error" "3.13.0" + p-map "^2.1.0" + +"@lerna/symlink-binary@3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz#8f8031b309863814883d3f009877f82e38aef45a" + integrity sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ== + dependencies: + "@lerna/create-symlink" "3.16.2" + "@lerna/package" "3.16.0" + fs-extra "^8.1.0" + p-map "^2.1.0" + +"@lerna/symlink-dependencies@3.17.0": + version "3.17.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz#48d6360e985865a0e56cd8b51b308a526308784a" + integrity sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q== + dependencies: + "@lerna/create-symlink" "3.16.2" + "@lerna/resolve-symlink" "3.16.0" + "@lerna/symlink-binary" "3.17.0" + fs-extra "^8.1.0" + p-finally "^1.0.0" + p-map "^2.1.0" + p-map-series "^1.0.0" + +"@lerna/timer@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" + integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw== + +"@lerna/validation-error@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" + integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA== + dependencies: + npmlog "^4.1.2" + +"@lerna/version@3.22.1": + version "3.22.1" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.22.1.tgz#9805a9247a47ee62d6b81bd9fa5fb728b24b59e2" + integrity sha512-PSGt/K1hVqreAFoi3zjD0VEDupQ2WZVlVIwesrE5GbrL2BjXowjCsTDPqblahDUPy0hp6h7E2kG855yLTp62+g== + dependencies: + "@lerna/check-working-tree" "3.16.5" + "@lerna/child-process" "3.16.5" + "@lerna/collect-updates" "3.20.0" + "@lerna/command" "3.21.0" + "@lerna/conventional-commits" "3.22.0" + "@lerna/github-client" "3.22.0" + "@lerna/gitlab-client" "3.15.0" + "@lerna/output" "3.13.0" + "@lerna/prerelease-id-from-version" "3.16.0" + "@lerna/prompt" "3.18.5" + "@lerna/run-lifecycle" "3.16.2" + "@lerna/run-topologically" "3.18.5" + "@lerna/validation-error" "3.13.0" + chalk "^2.3.1" + dedent "^0.7.0" + load-json-file "^5.3.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + p-map "^2.1.0" + p-pipe "^1.2.0" + p-reduce "^1.0.0" + p-waterfall "^1.0.0" + semver "^6.2.0" + slash "^2.0.0" + temp-write "^3.4.0" + write-json-file "^3.2.0" + +"@lerna/write-log-file@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" + integrity sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A== dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" + npmlog "^4.1.2" + write-file-atomic "^2.3.0" -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== +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.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== +"@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" -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" +"@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.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@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: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" -cli-boxes@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" - integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== +"@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" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" +"@octokit/auth-token@^2.4.0": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.2.tgz#10d0ae979b100fa6b72fa0e8e63e27e6d0dbff8a" + integrity sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ== dependencies: - restore-cursor "^2.0.0" + "@octokit/types" "^5.0.0" -cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" +"@octokit/endpoint@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.3.tgz#dd09b599662d7e1b66374a177ab620d8cdf73487" + integrity sha512-Y900+r0gIz+cWp6ytnkibbD95ucEzDSKzlEnaWS52hbCDNcCJYO5mRmWW7HRAnDc7am+N/5Lnd8MppSaTYx1Yg== dependencies: - colors "1.0.3" + "@octokit/types" "^5.0.0" + is-plain-object "^3.0.0" + universal-user-agent "^5.0.0" -cli-width@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" +"@octokit/plugin-enterprise-rest@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +"@octokit/plugin-paginate-rest@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" + integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" + "@octokit/types" "^2.0.1" -clone-buffer@^1.0.0: +"@octokit/plugin-request-log@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e" + integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw== -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= +"@octokit/plugin-rest-endpoint-methods@2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" + integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== dependencies: - mimic-response "^1.0.0" + "@octokit/types" "^2.0.1" + deprecation "^2.3.1" -clone-stats@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" +"@octokit/request-error@^1.0.2": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" + integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== + dependencies: + "@octokit/types" "^2.0.0" + deprecation "^2.0.0" + once "^1.4.0" -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" +"@octokit/request-error@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.2.tgz#0e76b83f5d8fdda1db99027ea5f617c2e6ba9ed0" + integrity sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw== + dependencies: + "@octokit/types" "^5.0.1" + deprecation "^2.0.0" + once "^1.4.0" -clone@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" +"@octokit/request@^5.2.0": + version "5.4.5" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.5.tgz#8df65bd812047521f7e9db6ff118c06ba84ac10b" + integrity sha512-atAs5GAGbZedvJXXdjtKljin+e2SltEs48B3naJjqWupYl2IUBbB/CJisyjbNHcKpHzb3E+OYEZ46G8eakXgQg== + dependencies: + "@octokit/endpoint" "^6.0.1" + "@octokit/request-error" "^2.0.0" + "@octokit/types" "^5.0.0" + deprecation "^2.0.0" + is-plain-object "^3.0.0" + node-fetch "^2.3.0" + once "^1.4.0" + universal-user-agent "^5.0.0" + +"@octokit/rest@^16.28.4": + version "16.43.2" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b" + integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ== + dependencies: + "@octokit/auth-token" "^2.4.0" + "@octokit/plugin-paginate-rest" "^1.1.1" + "@octokit/plugin-request-log" "^1.0.0" + "@octokit/plugin-rest-endpoint-methods" "2.4.0" + "@octokit/request" "^5.2.0" + "@octokit/request-error" "^1.0.2" + atob-lite "^2.0.0" + before-after-hook "^2.0.0" + btoa-lite "^1.0.0" + deprecation "^2.0.0" + lodash.get "^4.4.2" + lodash.set "^4.3.2" + lodash.uniq "^4.5.0" + octokit-pagination-methods "^1.1.0" + once "^1.4.0" + universal-user-agent "^4.0.0" -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= +"@octokit/types@^2.0.0", "@octokit/types@^2.0.1": + version "2.16.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" + integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q== + dependencies: + "@types/node" ">= 8" -cloneable-readable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" +"@octokit/types@^5.0.0", "@octokit/types@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.0.1.tgz#5459e9a5e9df8565dcc62c17a34491904d71971e" + integrity sha512-GorvORVwp244fGKEt3cgt/P+M0MGy4xEDbckw+K5ojEezxyMDgCaYPKVct+/eWQfZXOT7uq0xRpmrl/+hliabA== dependencies: - inherits "^2.0.1" - process-nextick-args "^1.0.6" - through2 "^2.0.1" + "@types/node" ">= 8" -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" +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" +"@sinonjs/commons@^1.7.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.0.tgz#c8d68821a854c555bba172f3b06959a0039b236d" + integrity sha512-wEj54PfsZ5jGSwMX68G8ZXFawcSglQSXqCftWX3ec8MDUzQdHgcKvw97awHbY0efQEL5iKUOAmmVtoYgmrSG4Q== dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" + type-detect "4.0.8" -color-convert@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" +"@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: - color-name "^1.1.1" + "@sinonjs/commons" "^1.7.0" -color-convert@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" +"@stylelint/postcss-css-in-js@^0.37.1": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.1.tgz#41e5e7660f73d88227610e18c6ebb262d56ac125" + integrity sha512-UMf2Rni3JGKi3ZwYRGMYJ5ipOA5ENJSKMtYA/pE1ZLURwdh7B5+z2r73RmWvub+N0UuH1Lo+TGfCgYwPvqpXNw== dependencies: - color-name "^1.1.1" + "@babel/core" ">=7.9.0" -color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +"@stylelint/postcss-markdown@^0.36.1": + version "0.36.1" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz#829b87e6c0f108014533d9d7b987dc9efb6632e8" + integrity sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw== + dependencies: + remark "^12.0.0" + unist-util-find-all-after "^3.0.1" -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" -command-exists@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -commander@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-1.1.1.tgz#50d1651868ae60eccff0a2d9f34595376bc6b041" - dependencies: - keypress "0.1.x" +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.9" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" + integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" -component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" -configstore@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-4.0.0.tgz#5933311e95d3687efb592c528b922d9262d227e7" - integrity sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ== +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.13.tgz#1874914be974a492e1b4cb00585cabb274e8ba18" + integrity sha512-i+zS7t6/s9cdQvbqKDARrcbrPvtJGlbYsMkazo03nTAK3RX9FNrLllXys22uiTGJapPOTZTQ35nHh4ISph4SLQ== dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" + "@babel/types" "^7.3.0" -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -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" +"@types/glob@^7.1.1": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.2.tgz#06ca26521353a545d94a0adc74f38a59d232c987" + integrity sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" +"@types/graceful-fs@^4.1.2": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" + integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== dependencies: - capture-stack-trace "^1.0.0" + "@types/node" "*" -cross-spawn@^5.0.1: +"@types/html-minifier-terser@^5.0.0": version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880" + integrity sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA== -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" +"@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: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" + "@types/istanbul-lib-coverage" "*" -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" -dargs@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-6.0.0.tgz#da35d4633cd821de868f97d645f8d1f9b0353a24" +"@types/json-schema@^7.0.4": + version "7.0.5" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" + integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== -dargs@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-6.1.0.tgz#1f3b9b56393ecf8caa7cbfd6c31496ffcfb9b272" - integrity sha512-5dVBvpBLBnPwSsYXqfybFyehMmC/EenKEcf23AhCTgTf48JFBbmJKqoZBsERDnjL0FyiVTYWdFsRfTLHxLyKdQ== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -dateformat@^3.0.3: +"@types/minimatch@*": version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -debug@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" +"@types/minimist@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" +"@types/node@*", "@types/node@>= 8": + version "14.0.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce" + integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ== + +"@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/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/prettier@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.2.tgz#5bb52ee68d0f8efa9cc0099920e56be6cc4e37f3" + integrity sha512-IkVfat549ggtkZUthUzEX49562eGikhSYeVGX97SkMFn+sTZrgRewXjQ4tPKFPCykZHkX1Zfd9OoELGqKU2jJA== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/tapable@*", "@types/tapable@^1.0.5": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" + integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== + +"@types/uglify-js@*": + version "3.9.3" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.3.tgz#d94ed608e295bc5424c9600e6b8565407b6b4b6b" + integrity sha512-KswB5C7Kwduwjj04Ykz+AjvPcfgv/37Za24O2EDzYNbwyzOo8+ydtvzUfZ5UMguiVu29Gx44l1A6VsPPcmYu9w== dependencies: - ms "2.0.0" + source-map "^0.6.1" -debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" +"@types/unist@^2.0.0", "@types/unist@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + +"@types/webpack-sources@*": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-1.4.0.tgz#e58f1f05f87d39a5c64cf85705bdbdbb94d4d57e" + integrity sha512-c88dKrpSle9BtTqR6ifdaxu1Lvjsl3C5OsfvuUbUwdXymshv1TkufUAXBajCCUM/f/TmnkZC/Esb03MinzSiXQ== dependencies: - ms "2.0.0" + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" -debug@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" - integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== +"@types/webpack@^4.41.8": + version "4.41.21" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.21.tgz#cc685b332c33f153bb2f5fc1fa3ac8adeb592dee" + integrity sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA== dependencies: - ms "^2.1.1" + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" -debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +"@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.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" + integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== dependencies: - ms "^2.1.1" + "@types/yargs-parser" "*" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -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" +"@types/yauzl@^2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" + integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== + dependencies: + "@types/node" "*" -decompress-response@^3.2.0, decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= +"@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: - mimic-response "^1.0.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" +"@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== -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" +"@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== -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +"@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== -defer-to-connect@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.0.2.tgz#4bae758a314b034ae33902b5aac25a8dd6a8633e" - integrity sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw== +"@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" -define-properties@^1.1.2: - 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== +"@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: - object-keys "^1.0.12" + "@webassemblyjs/ast" "1.9.0" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" +"@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: - is-descriptor "^0.1.0" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" +"@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: - is-descriptor "^1.0.0" + "@xtuc/ieee754" "^1.2.0" -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" +"@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: - is-descriptor "^1.0.2" - isobject "^3.0.1" + "@xtuc/long" "4.2.2" -detect-conflict@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" +"@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== -diff@3.5.0, diff@^3.3.1, diff@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" +"@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" -dir-glob@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" +"@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: - arrify "^1.0.1" - path-type "^3.0.0" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" -dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== +"@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: - path-type "^3.0.0" + "@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" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== +"@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: - esutils "^2.0.2" + "@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" -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" +"@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: - is-obj "^1.0.0" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" +"@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== -editions@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" +"@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== -editions@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/editions/-/editions-2.0.2.tgz#54fdac6fb24b0a1a72ffc1ba0126c10602c3e0bd" +"@zkochan/cmd-shim@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e" + integrity sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg== dependencies: - errlop "^1.0.2" - semver "^5.5.0" + is-windows "^1.0.0" + mkdirp-promise "^5.0.1" + mz "^2.5.0" -editions@^2.1.2, editions@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/editions/-/editions-2.1.3.tgz#727ccf3ec2c7b12dcc652c71000f16c4824d6f7d" - integrity sha512-xDZyVm0A4nLgMNWVVLJvcwMjI80ShiH/27RyLiCnW1L273TcJIA25C4pwJ33AWV01OX6UriP35Xu+lH4S7HWQw== +JSONStream@^1.0.4, JSONStream@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: - errlop "^1.1.1" - semver "^5.6.0" + jsonparse "^1.2.0" + through ">=2.2.7 <3" -ejs@^2.5.9: - version "2.6.1" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" +abab@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== -ejs@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.2.tgz#3a32c63d1cd16d11266cd4703b14fec4e74ab4f6" - integrity sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q== +abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== dependencies: - once "^1.4.0" + mime-types "~2.1.24" + negotiator "0.6.2" -errlop@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/errlop/-/errlop-1.0.3.tgz#dba29c90cf832c3d2ce469fe515d7e5eef2c6676" +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: - editions "^1.3.4" + acorn "^7.1.1" + acorn-walk "^7.1.1" -errlop@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/errlop/-/errlop-1.1.1.tgz#d9ae4c76c3e64956c5d79e6e035d6343bfd62250" - integrity sha512-WX7QjiPHhsny7/PQvrhS5VMizXXKoKCS3udaBp8gjlARdbn+XmK300eKBAAN0hGyRaTCtRpOaxK+xFVPUJ3zkw== - dependencies: - editions "^2.1.2" +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +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.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1, acorn@^7.2.0: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== + +acorn@^8.2.4: + version "8.6.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" + integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== + +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= -error-ex@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + +agent-base@4, agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== dependencies: - is-arrayish "^0.2.1" + es6-promisify "^5.0.0" -error@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" +agent-base@5: + version "5.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== + +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: - string-template "~0.2.1" - xtend "~4.0.0" + debug "4" -es-abstract@^1.5.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== +agent-base@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" + es6-promisify "^5.0.0" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + humanize-ms "^1.2.1" -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, 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" +agentkeepalive@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.3.tgz#360a09d743a1f4fde749f9ba07caa6575d08259a" + integrity sha512-wn8fw19xKZwdGPO47jivonaHRTd+nGOMP1z11sgGeQzDy2xd5FG0R67dIMcKHDE2cJ5y+YXV30XVGUBPRSY7Hg== + dependencies: + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" + clean-stack "^2.0.0" + indent-string "^4.0.0" -eslint-utils@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" - integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== +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== -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.0.tgz#5c894537098785926d71e696114a53ce768ed773" + integrity sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw== -eslint@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.1.0.tgz#06438a4a278b1d84fb107d24eaaa35471986e646" - integrity sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ== +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^6.0.0" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.4.1" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" -espree@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6" - integrity sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q== +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + string-width "^3.0.0" -esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" +ansi-colors@^3.0.0, ansi-colors@^3.2.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== - dependencies: - estraverse "^4.0.0" +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -esrecurse@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + 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: - estraverse "^4.1.0" - object-assign "^4.0.1" + type-fest "^0.11.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +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= -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - 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" +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= -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" +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" +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-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.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: - 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" + color-convert "^1.9.0" -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== dependencies: - is-extendable "^0.1.0" + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" -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" +any-promise@^1.0.0, any-promise@^1.1.0, any-promise@~1.3.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: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" + micromatch "^3.1.4" + normalize-path "^2.1.1" -external-editor@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972" +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: - iconv-lite "^0.4.17" - jschardet "^1.4.2" - tmp "^0.0.31" + normalize-path "^3.0.0" + picomatch "^2.0.4" -external-editor@^3.0.0, external-editor@^3.0.3: +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== + +aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@~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-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +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-differ@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" + integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-find@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" + integrity sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= + +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array-union@^1.0.1, array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +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-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +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.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +array.prototype.flatmap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" + integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.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: + 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-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each-series@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" + integrity sha1-dhfBkXQB/Yykooqtzj266Yr+tDI= + +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== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@0.2.10: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E= + +async@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + +async@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +async@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" + integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +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-lite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" + integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= + +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.8.0: + version "9.8.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.4.tgz#736f1012673a70fa3464671d78d41abd54512863" + integrity sha512-84aYfXlpUe45lvmS+HoAWKCkirI/sw4JK0/bTeeqgHYco3dcsOn0NqdejISjptsYwNji/21dnkDri9PsYKk89A== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001087" + colorette "^1.2.0" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +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.10.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" + integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + +axe-core@^3.5.4: + version "3.5.5" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227" + integrity sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q== + +axios@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" + integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + +axios@^0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +axobject-query@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-jest@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.1.0.tgz#b20751185fc7569a0f135730584044d1cb934328" + integrity sha512-Nkqgtfe7j6PxLO6TnCQQlkMm8wdTdnIF8xrdpooHCuD5hXRzVEPbPneTJKknH5Dsv3L8ip9unHDAp48YQ54Dkg== + dependencies: + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.1.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + +babel-loader@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +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.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.1.0.tgz#c6a774da08247a28285620a64dfadbd05dd5233a" + integrity sha512-qhqLVkkSlqmC83bdMhM8WW4Z9tB+JkjqAqlbbohS9sJLT5Ha2vfzuKqg5yenXrAjOPG2YC0WiXdH3a9PvB+YYw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" + integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ== + 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-preset-jest@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.1.0.tgz#612f714e5b457394acfd863793c564cbcdb7d1c1" + integrity sha512-na9qCqFksknlEj5iSdw1ehMVR06LCCTkZLGKeEtxDDdhg8xpUF09m29Kvh1pRbZ07h7AQ5ttLYUwpXL4tO6w7w== + dependencies: + babel-plugin-jest-hoist "^26.1.0" + babel-preset-current-node-syntax "^0.1.2" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +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-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= + +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" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +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" + +before-after-hook@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" + integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= + dependencies: + callsite "1.0.0" + +bfj@^6.1.1: + version "6.1.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" + integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== + dependencies: + bluebird "^3.5.5" + check-types "^8.0.3" + hoopy "^0.1.4" + tryer "^1.0.1" + +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== + +binary-search-tree@0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/binary-search-tree/-/binary-search-tree-0.2.5.tgz#7dbb3b210fdca082450dad2334c304af39bdc784" + integrity sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q= + dependencies: + underscore "~1.4.4" + +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.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a" + integrity sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + +bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: + 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.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, 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@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.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" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +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== + +browser-sync-client@^2.26.6: + version "2.26.6" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.6.tgz#e5201d3ace8aee88af17656b7b0c0620b6f8e4ab" + integrity sha512-mGrkZdNzttKdf/16I+y+2dTQxoMCIpKbVIMJ/uP8ZpnKu9f9qa/2CYVtLtbjZG8nsM14EwiCrjuFTGBEnT3Gjw== + dependencies: + etag "1.8.1" + fresh "0.5.2" + mitt "^1.1.3" + rxjs "^5.5.6" + +browser-sync-ui@^2.26.4: + version "2.26.4" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz#3772f13c6b93f2d7d333f4be0ca1ec02aae97dba" + integrity sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA== + dependencies: + async-each-series "0.1.1" + connect-history-api-fallback "^1" + immutable "^3" + server-destroy "1.0.1" + socket.io-client "^2.0.4" + stream-throttle "^0.1.3" + +browser-sync@^2.26.7: + version "2.26.7" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.26.7.tgz#120287716eb405651a76cc74fe851c31350557f9" + integrity sha512-lY3emme0OyvA2ujEMpRmyRy9LY6gHLuTr2/ABxhIm3lADOiRXzP4dgekvnDrQqZ/Ec2Fz19lEjm6kglSG5766w== + dependencies: + browser-sync-client "^2.26.6" + browser-sync-ui "^2.26.4" + bs-recipes "1.3.4" + bs-snippet-injector "^2.0.1" + chokidar "^2.0.4" + connect "3.6.6" + connect-history-api-fallback "^1" + dev-ip "^1.0.1" + easy-extender "^2.3.4" + eazy-logger "^3" + etag "^1.8.1" + fresh "^0.5.2" + fs-extra "3.0.1" + http-proxy "1.15.2" + immutable "^3" + localtunnel "1.9.2" + micromatch "^3.1.10" + opn "5.3.0" + portscanner "2.1.1" + qs "6.2.3" + raw-body "^2.3.2" + resp-modifier "6.0.2" + rx "4.1.0" + send "0.16.2" + serve-index "1.9.1" + serve-static "1.13.2" + server-destroy "1.0.1" + socket.io "2.1.1" + ua-parser-js "0.7.17" + yargs "6.4.0" + +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.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + 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.0.0, browserslist@^4.12.0, browserslist@^4.8.5: + version "4.12.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711" + integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw== + dependencies: + caniuse-lite "^1.0.30001088" + electron-to-chromium "^1.3.483" + escalade "^3.0.1" + node-releases "^1.1.58" + +bs-recipes@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" + integrity sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU= + +bs-snippet-injector@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz#61b5393f11f52559ed120693100343b6edb04dd5" + integrity sha1-YbU5PxH1JVntEgaTEANDtu2wTdU= + +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" + +btoa-lite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" + integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= + +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +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-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +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@^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.2.1, buffer@^5.5.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" + +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= + +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= + +byte-size@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" + integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: + 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@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-14.0.0.tgz#97c10fc87c4c7ee41d45e32631c26761c2687caa" + integrity sha512-+Nr/BnA/tjAUXza9gH8F+FSP+1HvWqCKt4c95dQr4EDVJVafbzmPZpLKCkLYexs6vSd2B/1TOXrAoNnqVPfvRA== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + tar "^6.0.0" + unique-filename "^1.1.1" + +cacache@^15.0.4: + version "15.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.4.tgz#b2c23cf4ac4f5ead004fb15a0efb0a20340741f1" + integrity sha512-YlnKQqTbD/6iyoJvEY3KJftjrdBYroCbxxYXzhOzsFLWlp6KX4BOlEf4mTx0cMUfVaTS3ENL2QtDWeRYoGLkkw== + 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 "^5.1.1" + 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" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +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== + +camel-case@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + dependencies: + pascal-case "^3.1.1" + tslib "^1.10.0" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + +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@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +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@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" + integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001087, caniuse-lite@^1.0.30001088: + version "1.0.30001091" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001091.tgz#84908c67b98e02c2a56d4afa51e6458b53fb5321" + integrity sha512-ECd8gfBBpv0GKsEYY5052+8PBjExiugDoi3dfkJcxujh2mf7kiuDvb1o27GXlOOGopKiIPYEX8XDPYj7eo3E9w== + +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" + +case-sensitive-paths-webpack-plugin@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +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.0.5" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" + integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== + +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@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, 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@^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@^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== + +check-types@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" + integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== + +"chokidar@>=2.0.0 <4.0.0", chokidar@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + 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.4.0" + optionalDependencies: + fsevents "~2.1.2" + +chokidar@^2.0.4, 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" + +chownr@^1.1.1, chownr@^1.1.2: + 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@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +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" + +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" + +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@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" + integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +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-highlight@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.4.tgz#098cb642cf17f42adc1c1145e07f960ec4d7522b" + integrity sha512-s7Zofobm20qriqDoU9sXptQx0t2R9PEgac92mENNm7xaEe1hn71IIMsXMK+6encA6WRCWWxIGQbipr3q998tlQ== + dependencies: + chalk "^3.0.0" + highlight.js "^9.6.0" + mz "^2.4.0" + parse5 "^5.1.1" + parse5-htmlparser2-tree-adapter "^5.1.1" + yargs "^15.0.0" + +cli-truncate@2.1.0, cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +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" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-regexp@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" + integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q== + dependencies: + is-regexp "^2.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@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +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-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.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +colorette@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.0.tgz#45306add826d196e8c87236ac05d797f25982e63" + integrity sha512-soRSroY+OF/8OdA3PTQXwaDJeMc7TfknKKrxeSCencL2a4+Tx5zhxmmv7hdpCjhKBjehzp8+bwe/T68K0hpIjw== + +columnify@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + +combined-stream@^1.0.6, combined-stream@^1.0.8, 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" + +command-exists@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@5.1.0, commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^2.11.0, commander@^2.18.0, commander@^2.19.0, commander@^2.2.0, 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@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +compare-func@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.4.tgz#6b07c4c5e8341119baf44578085bda0f4a823516" + integrity sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q== + dependencies: + array-ify "^1.0.0" + dot-prop "^3.0.0" + +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +component-emitter@^1.2.0, component-emitter@^1.2.1, component-emitter@~1.3.0: + 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-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + +compressible@~2.0.16: + 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" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +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" + +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +config-chain@^1.1.11, config-chain@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== + dependencies: + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" + +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + +connect-history-api-fallback@^1, connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connect@3.6.6: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + integrity sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ= + dependencies: + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" + +consola@^2.10.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/consola/-/consola-2.14.0.tgz#162ee903b6c9c4de25077d93f34ab902ebcb4dac" + integrity sha512-A2j1x4u8d6SIVikhZROfpFJxQZie+cZOfQMyI/tu2+hWXe8iAv7R6FW6s6x04/7zBCst94lPddztot/d6GJiuQ== + +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= + +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= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + 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== + +conventional-changelog-angular@^5.0.10, conventional-changelog-angular@^5.0.3: + version "5.0.10" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.10.tgz#5cf7b00dd315b6a6a558223c80d5ef24ddb34205" + integrity sha512-k7RPPRs0vp8+BtPsM9uDxRl6KcgqtCJmzRD1wRtgqmhQ96g8ifBGo9O/TZBG23jqlXS/rg8BKRDELxfnQQGiaA== + dependencies: + compare-func "^1.3.1" + q "^1.5.1" + +conventional-changelog-atom@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.7.tgz#221575253a04f77a2fd273eb2bf29a138f710abf" + integrity sha512-7dOREZwzB+tCEMjRTDfen0OHwd7vPUdmU0llTy1eloZgtOP4iSLVzYIQqfmdRZEty+3w5Jz+AbhfTJKoKw1JeQ== + dependencies: + q "^1.5.1" + +conventional-changelog-codemirror@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.7.tgz#d6b6a8ce2707710c5a036e305037547fb9e15bfb" + integrity sha512-Oralk1kiagn3Gb5cR5BffenWjVu59t/viE6UMD/mQa1hISMPkMYhJIqX+CMeA1zXgVBO+YHQhhokEj99GP5xcg== + dependencies: + q "^1.5.1" + +conventional-changelog-conventionalcommits@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.3.0.tgz#c4205a659f7ca9d7881f29ee78a4e7d6aeb8b3c2" + integrity sha512-oYHydvZKU+bS8LnGqTMlNrrd7769EsuEHKy4fh1oMdvvDi7fem8U+nvfresJ1IDB8K00Mn4LpiA/lR+7Gs6rgg== + dependencies: + compare-func "^1.3.1" + lodash "^4.17.15" + q "^1.5.1" + +conventional-changelog-core@^3.1.6: + version "3.2.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz#b31410856f431c847086a7dcb4d2ca184a7d88fb" + integrity sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ== + dependencies: + conventional-changelog-writer "^4.0.6" + conventional-commits-parser "^3.0.3" + dateformat "^3.0.0" + get-pkg-repo "^1.0.0" + git-raw-commits "2.0.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^2.0.3" + lodash "^4.2.1" + normalize-package-data "^2.3.5" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^3.0.0" + +conventional-changelog-core@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.1.7.tgz#6b5cdadda4430895cc4a75a73dd8b36e322ab346" + integrity sha512-UBvSrQR2RdKbSQKh7RhueiiY4ZAIOW3+CSWdtKOwRv+KxIMNFKm1rOcGBFx0eA8AKhGkkmmacoTWJTqyz7Q0VA== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^4.0.16" + conventional-commits-parser "^3.1.0" + dateformat "^3.0.0" + get-pkg-repo "^1.0.0" + git-raw-commits "2.0.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.0.0" + lodash "^4.17.15" + normalize-package-data "^2.3.5" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + shelljs "^0.8.3" + through2 "^3.0.0" + +conventional-changelog-ember@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.8.tgz#f0f04eb7ff3c885af97db100865ab95dcfa9917f" + integrity sha512-JEMEcUAMg4Q9yxD341OgWlESQ4gLqMWMXIWWUqoQU8yvTJlKnrvcui3wk9JvnZQyONwM2g1MKRZuAjKxr8hAXA== + dependencies: + q "^1.5.1" + +conventional-changelog-eslint@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.8.tgz#f8b952b7ed7253ea0ac0b30720bb381f4921b46c" + integrity sha512-5rTRltgWG7TpU1PqgKHMA/2ivjhrB+E+S7OCTvj0zM/QGg4vmnVH67Vq/EzvSNYtejhWC+OwzvDrLk3tqPry8A== + dependencies: + q "^1.5.1" + +conventional-changelog-express@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-2.0.5.tgz#6e93705acdad374516ca125990012a48e710f8de" + integrity sha512-pW2hsjKG+xNx/Qjof8wYlAX/P61hT5gQ/2rZ2NsTpG+PgV7Rc8RCfITvC/zN9K8fj0QmV6dWmUefCteD9baEAw== + dependencies: + q "^1.5.1" + +conventional-changelog-jquery@^3.0.10: + version "3.0.10" + resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.10.tgz#fe8eb6aff322aa980af5eb68497622a5f6257ce7" + integrity sha512-QCW6wF8QgPkq2ruPaxc83jZxoWQxLkt/pNxIDn/oYjMiVgrtqNdd7lWe3vsl0hw5ENHNf/ejXuzDHk6suKsRpg== + dependencies: + q "^1.5.1" + +conventional-changelog-jshint@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.7.tgz#955a69266951cd31e8afeb3f1c55e0517fdca943" + integrity sha512-qHA8rmwUnLiIxANJbz650+NVzqDIwNtc0TcpIa0+uekbmKHttidvQ1dGximU3vEDdoJVKFgR3TXFqYuZmYy9ZQ== + dependencies: + compare-func "^1.3.1" + q "^1.5.1" + +conventional-changelog-preset-loader@^2.1.1, conventional-changelog-preset-loader@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + +conventional-changelog-writer@^4.0.16, conventional-changelog-writer@^4.0.6: + version "4.0.16" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.16.tgz#ca10f2691a8ea6d3c2eb74bd35bcf40aa052dda5" + integrity sha512-jmU1sDJDZpm/dkuFxBeRXvyNcJQeKhGtVcFFkwTphUAzyYWcwz2j36Wcv+Mv2hU3tpvLMkysOPXJTLO55AUrYQ== + dependencies: + compare-func "^1.3.1" + conventional-commits-filter "^2.0.6" + dateformat "^3.0.0" + handlebars "^4.7.6" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^7.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^3.0.0" + +conventional-changelog@^3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.1.21.tgz#4a774e6bf503acfd7e4685bb750da8c0eccf1e0d" + integrity sha512-ZGecVZPEo3aC75VVE4nu85589dDhpMyqfqgUM5Myq6wfKWiNqhDJLSDMsc8qKXshZoY7dqs1hR0H/15kI/G2jQ== + dependencies: + conventional-changelog-angular "^5.0.10" + conventional-changelog-atom "^2.0.7" + conventional-changelog-codemirror "^2.0.7" + conventional-changelog-conventionalcommits "^4.3.0" + conventional-changelog-core "^4.1.7" + conventional-changelog-ember "^2.0.8" + conventional-changelog-eslint "^3.0.8" + conventional-changelog-express "^2.0.5" + conventional-changelog-jquery "^3.0.10" + conventional-changelog-jshint "^2.0.7" + conventional-changelog-preset-loader "^2.3.4" + +conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz#0935e1240c5ca7698329affee1b6a46d33324c4c" + integrity sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-parser@^3.0.3, conventional-commits-parser@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz#10140673d5e7ef5572633791456c5d03b69e8be4" + integrity sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^7.0.0" + split2 "^2.0.0" + through2 "^3.0.0" + trim-off-newlines "^1.0.0" + +conventional-recommended-bump@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz#5af63903947b6e089e77767601cb592cabb106ba" + integrity sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.1.1" + conventional-commits-filter "^2.0.2" + conventional-commits-parser "^3.0.3" + git-raw-commits "2.0.0" + git-semver-tags "^2.0.3" + meow "^4.0.0" + q "^1.5.1" + +convert-source-map@^1.4.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" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +cookiejar@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" + integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== + +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-webpack-plugin@^6.0.1, copy-webpack-plugin@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz#2b3d2bfc6861b96432a65f0149720adbd902040b" + integrity sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA== + dependencies: + cacache "^15.0.4" + fast-glob "^3.2.4" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.1" + loader-utils "^2.0.0" + normalize-path "^3.0.0" + p-limit "^3.0.1" + schema-utils "^2.7.0" + serialize-javascript "^4.0.0" + webpack-sources "^1.4.3" + +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" + integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + +core-js@^2.6.5: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +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@^5.0.0, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +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" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +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-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.2: + 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.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" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.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" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.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-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@1.0.0-alpha.39: + version "1.0.0-alpha.39" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" + integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== + dependencies: + mdn-data "2.0.6" + source-map "^0.6.1" + +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-what@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.3.0.tgz#10fec696a9ece2e591ac772d759aacabac38cd39" + integrity sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg== + +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-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" + integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== + dependencies: + css-tree "1.0.0-alpha.39" + +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, cssstyle@^2.3.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" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cwd@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567" + integrity sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc= + dependencies: + find-pkg "^0.1.2" + fs-exists-sync "^0.1.0" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +damerau-levenshtein@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dargs@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= + dependencies: + number-is-nan "^1.0.0" + +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-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" + +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.1.0, debug@=3.1.0, 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" + +debug@4, debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= + +decamelize-keys@^1.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.1.1, decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decamelize@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-3.2.0.tgz#84b8e8f4f8c579f938e35e2cc7024907e0090851" + integrity sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw== + dependencies: + xregexp "^4.2.4" + +decimal.js@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" + integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== + +decimal.js@^10.2.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +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@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +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, 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@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" + integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== + +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== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +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@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-properties@^1.1.2, 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" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +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= + +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + +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= + +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + +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@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +dev-ip@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" + integrity sha1-p2o+0YVb56ASu4rBbLgPPADcKPA= + +devtools-protocol@0.0.781568: + version "0.0.781568" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.781568.tgz#4cdca90a952d2c77831096ff6cd32695d8715a04" + integrity sha512-9Uqnzy6m6zEStluH9iyJ3iHyaQziFnMnLeC8vK0eN6smiJmIx7+yB64d67C2lH/LZra+5cGscJAJsNXO+MdPMg== + +dezalgo@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + dependencies: + asap "^2.0.0" + wrappy "1" + +diff-sequences@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6" + integrity sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg== + +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@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.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" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~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" + +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.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: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +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@^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" + +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@^1.5.1, domutils@^1.7.0: + 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" + +dot-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" + integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc= + dependencies: + is-obj "^1.0.0" + +dot-prop@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +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" + +easy-extender@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.4.tgz#298789b64f9aaba62169c77a2b3b64b4c9589b8f" + integrity sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q== + dependencies: + lodash "^4.17.10" + +eazy-logger@^3: + version "3.0.2" + resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" + integrity sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw= + dependencies: + tfunk "^3.0.1" + +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" + +editorconfig@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" + integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== + dependencies: + commander "^2.19.0" + lru-cache "^4.1.5" + semver "^5.6.0" + sigmund "^1.0.1" + +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= + +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +ejs@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.3.tgz#514d967a8894084d18d3d47bd169a1c0560f093d" + integrity sha512-wmtrUGyfSC23GC/B1SMv2ogAUgbQEtDmTIhfqielrG5ExIM9TP4UoYdi90jLF1aTcsWCJNEO0UrgKzP0y3nTSg== + dependencies: + jake "^10.6.1" + +electron-to-chromium@^1.3.483: + version "1.3.483" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz#9269e7cfc1c8e72709824da171cbe47ca5e3ca9e" + integrity sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg== + +elliptic@^6.0.0, elliptic@^6.5.2: + 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" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +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== + +emoji-regex@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.0.0.tgz#48a2309cc8a1d2e9d23bc6a67c39b63032e76ea4" + integrity sha512-6p1NII1Vm62wni/VR/cUMauVQoxmLVb9csqQlvLz+hO2gk8U2UYDfXHQSUYIBKmZwAKz867IDqG7B+u0mj+M6w== + +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.1, encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.11, encoding@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1, 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" + +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-client@~3.4.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.3.tgz#192d09865403e3097e3575ebfeb3861c4d01a66c" + integrity sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw== + dependencies: + component-emitter "~1.3.0" + component-inherit "0.0.3" + debug "~4.1.0" + engine.io-parser "~2.2.0" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~6.1.0" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6" + integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io-parser@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" + integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + +enhanced-resolve@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" + integrity sha1-TW5omzcl+GCQknzMhs2fFjW4ni4= + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.2.0" + tapable "^0.1.8" + +enhanced-resolve@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz#5d43bda4a0fd447cb0ebbe71bef8deff8805ad0d" + integrity sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enquirer@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" + integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA== + dependencies: + ansi-colors "^3.2.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.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + +env-paths@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" + integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== + +envinfo@^7.3.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236" + integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ== + +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, 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.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + 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.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +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" + +es6-promise@^4.0.3, es6-promise@^4.2.5: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +escalade@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" + integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== + +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + +escape-html@^1.0.3, 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.2, 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== + +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" + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-airbnb-base@^14.2.0: + version "14.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz#fe89c24b3f9dc8008c9c0d0d88c28f95ed65e9c4" + integrity sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q== + dependencies: + confusing-browser-globals "^1.0.9" + object.assign "^4.1.0" + object.entries "^1.1.2" + +eslint-config-airbnb@^18.1.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.0.tgz#8a82168713effce8fc08e10896a63f1235499dcd" + integrity sha512-Fz4JIUKkrhO0du2cg5opdyPKQXOI2MvF8KUvN2710nJMT6jaRUpRE2swrJftAjVGL7T1otLM5ieo5RqS1v9Udg== + dependencies: + eslint-config-airbnb-base "^14.2.0" + object.assign "^4.1.0" + object.entries "^1.1.2" + +eslint-config-prettier@^6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" + integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== + dependencies: + get-stdin "^6.0.0" + +eslint-import-resolver-node@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-import-resolver-webpack@^0.12.1: + version "0.12.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.12.2.tgz#769e86cd0c752a1536c19855ebd90aa14ce384ee" + integrity sha512-7Jnm4YAoNNkvqPaZkKdIHsKGmv8/uNnYC5QsXkiSodvX4XEEfH2AKOna98FK52fCDXm3q4HzuX+7pRMKkJ64EQ== + dependencies: + array-find "^1.0.0" + debug "^2.6.9" + enhanced-resolve "^0.9.1" + find-root "^1.1.0" + has "^1.0.3" + interpret "^1.2.0" + lodash "^4.17.15" + node-libs-browser "^1.0.0 || ^2.0.0" + resolve "^1.13.1" + semver "^5.7.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.21.2, eslint-plugin-import@^2.22.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-jsx-a11y@^6.2.3: + version "6.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.3.1.tgz#99ef7e97f567cc6a5b8dd5ab95a94a67058a2660" + integrity sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g== + dependencies: + "@babel/runtime" "^7.10.2" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^3.5.4" + axobject-query "^2.1.2" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1" + language-tags "^1.0.5" + +eslint-plugin-prettier@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" + integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react-hooks@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.5.tgz#4879003aa38e5d05d0312175beb6e4a1f617bfcf" + integrity sha512-3YLSjoArsE2rUwL8li4Yxx1SUg3DQWp+78N3bcJQGWVZckcp+yeQGsap/MSq05+thJk57o+Ww4PtZukXGL02TQ== + +eslint-plugin-react@^7.20.0: + version "7.20.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz#0590525e7eb83890ce71f73c2cf836284ad8c2f1" + integrity sha512-txbo090buDeyV0ugF3YMWrzLIUqpYTsWSDZV9xLSmExE1P/Kmgg9++PD931r+KEWS66O1c9R4srLVVHmeHpoAg== + dependencies: + array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1" + object.entries "^1.1.2" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.17.0" + string.prototype.matchall "^4.0.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" + +eslint-scope@^5.0.0, eslint-scope@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +eslint@^7.2.0: + version "7.3.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.3.1.tgz#76392bd7e44468d046149ba128d1566c59acbe19" + integrity sha512-cQC/xj9bhWUcyi/RuMbRtC3I0eW8MH0jhRELSvpKYkWep3C6YZ2OkvcvJVUeO6gcunABmzptbXBuDoXsjHmfTA== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.0.0" + eslint-visitor-keys "^1.2.0" + espree "^7.1.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.14" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +espree@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.1.0.tgz#a9c7f18a752056735bf1ba14cb1b70adc3a5ce1c" + integrity sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw== + dependencies: + acorn "^7.2.0" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.2.0" + +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== + +esquery@^1.0.1, esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.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.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@1.8.1, 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= + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg= + +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + +eventemitter3@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +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@^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: + version "4.0.3" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" + integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== + 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@^4.0.1, execa@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.2.tgz#ad87fb7b2d9d564f70d2b62d511bee41d5cbb240" + integrity sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q== + 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" + +execall@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" + integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow== + dependencies: + clone-regexp "^2.1.0" + +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-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= + dependencies: + os-homedir "^1.0.1" + +expect-puppeteer@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/expect-puppeteer/-/expect-puppeteer-4.4.0.tgz#1c948af08acdd6c8cbdb7f90e617f44d86888886" + integrity sha512-6Ey4Xy2xvmuQu7z7YQtMsaMV0EHJRpVxIDOd5GRrm04/I3nkTKIutELfECsLp6le+b3SSa3cXhPiw6PgqzxYWA== + +expect@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.1.0.tgz#8c62e31d0f8d5a8ebb186ee81473d15dd2fbf7c8" + integrity sha512-QbH4LZXDsno9AACrN9eM0zfnby9G+OsdNgZUohjg/P0mLy1O+/bzTAJGT6VSIjVCe8yKM6SzEl/ckEOFBT7Vnw== + dependencies: + "@jest/types" "^26.1.0" + ansi-styles "^4.0.0" + jest-get-type "^26.0.0" + jest-matcher-utils "^26.1.0" + jest-message-util "^26.1.0" + jest-regex-util "^26.0.0" + +express@^4.16.3, express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +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: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + 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" + +extract-zip@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.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-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-glob@^3.1.1, 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, 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= + +fastq@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" + integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +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" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + +fibers@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/fibers/-/fibers-5.0.0.tgz#3a60e0695b3ee5f6db94e62726716fa7a59acc41" + integrity sha512-UpGv/YAZp7mhKHxDvC1tColrroGRX90sSvh8RMZV9leo+e5+EkRVgCEZPlmXeo3BUNQTZxUaVdLskq1Q2FyCPg== + dependencies: + detect-libc "^1.0.3" + +figgy-pudding@^3.4.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== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +figures@^3.0.0, figures@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" + integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.6.5" + +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== + +filelist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" + integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ== + dependencies: + minimatch "^3.0.4" + +filesize@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +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" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + integrity sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.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-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-file-up@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" + integrity sha1-z2gJG8+fMApA2kEbN9pczlovvqA= + dependencies: + fs-exists-sync "^0.1.0" + resolve-dir "^0.1.0" + +find-pkg@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/find-pkg/-/find-pkg-0.1.2.tgz#1bdc22c06e36365532e2a248046854b9788da557" + integrity sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc= + dependencies: + find-file-up "^0.1.2" + +find-process@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.3.tgz#25f9105dc32e42abad4636752c37c51cd57dce45" + integrity sha512-+IA+AUsQCf3uucawyTwMWcY+2M3FXq3BRvw3S+j5Jvydjk31f/+NPWpYZOJs+JUs2GvxH4Yfr6Wham0ZtRLlPA== + dependencies: + chalk "^2.0.1" + commander "^2.11.0" + debug "^2.6.8" + +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@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.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-versions@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +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" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +follow-redirects@^1.0.0: + version "1.12.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.12.1.tgz#de54a6205311b93d60398ebc01cf7015682312b6" + integrity sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg== + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, 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= + +for-own@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +foreachasync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/foreachasync/-/foreachasync-3.0.0.tgz#5502987dc8714be3392097f32e0071c9dee07cf6" + integrity sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY= + +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.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +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" + +formidable@^1.2.0: + 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== + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +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" + +fresh@0.5.2, 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" + +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-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= + +fs-extra@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.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-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +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, fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +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== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +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" + +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + 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-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-pkg-repo@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= + dependencies: + hosted-git-info "^2.1.4" + meow "^3.3.0" + normalize-package-data "^2.3.0" + parse-github-repo-url "^1.3.0" + through2 "^2.0.0" + +get-port@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + +get-stream@^4.0.0, get-stream@^4.1.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.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + +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" + +git-raw-commits@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" + integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== + dependencies: + dargs "^4.0.1" + lodash.template "^4.0.2" + meow "^4.0.0" + split2 "^2.0.0" + through2 "^2.0.0" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.3.tgz#48988a718acf593800f99622a952a77c405bfa34" + integrity sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA== + dependencies: + meow "^4.0.0" + semver "^6.0.0" + +git-semver-tags@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.0.0.tgz#a9dd58a0dd3561a4a9898b7e9731cf441c98fc38" + integrity sha512-LajaAWLYVBff+1NVircURJFL8TQ3EMIcLAfHisWYX/nPoMwnTYfWAznQDmMujlLqoD12VtLmoSrF1sQ5MhimEQ== + dependencies: + meow "^7.0.0" + semver "^6.0.0" + +git-up@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" + integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== + dependencies: + is-ssh "^1.3.0" + parse-url "^5.0.0" + +git-url-parse@^11.1.2: + version "11.1.2" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.1.2.tgz#aff1a897c36cc93699270587bea3dbcbbb95de67" + integrity sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ== + dependencies: + git-up "^4.0.0" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= + dependencies: + ini "^1.3.2" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +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.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, 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.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@7.1.6, glob@^7.0.0, glob@^7.0.3, 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" + +global-dirs@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" + integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== + dependencies: + ini "^1.3.5" + +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@^11.0.1: + 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" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + +globjoin@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" + integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= + +gonzales-pe@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" + integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== + dependencies: + minimist "^1.2.5" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, 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== + +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= + +gzip-size@^5.0.0, gzip-size@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +handlebars@^4.7.6: + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +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.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + 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-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + +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.0, 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, has-unicode@^2.0.1: + 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-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.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" + +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== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hexo-front-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hexo-front-matter/-/hexo-front-matter-1.0.0.tgz#0b48b1c1ed143e8cb25b3b223a9037385d910655" + integrity sha512-Hn8IIzgWWnxYTekrjnA0rxwWMoQHifyrxKMqVibmFaRKf4AQ2V6Xo13Jiso6CDwYfS+OdA41QS5DG1Y+QXA5gw== + dependencies: + js-yaml "^3.13.1" + +highlight.js@^10.7.2: + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +highlight.js@^9.6.0: + version "9.18.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" + integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== + +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" + +homedir-polyfill@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +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-entities@^1.2.0, html-entities@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +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-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +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-webpack-plugin@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz#53bf8f6d696c4637d5b656d3d9863d89ce8174fd" + integrity sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w== + dependencies: + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlhint@^0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/htmlhint/-/htmlhint-0.14.1.tgz#46fc7f4cf139c665b238aaa5fc84e024cafdf812" + integrity sha512-VWKrljlwF8tEKH48YPfC30zYKhrsMqm70d7vXswivEqd3DSva8ZlIzfeCa3YWFEFRIIhiXKgKurlqEpCtYMCAA== + dependencies: + async "3.2.0" + chalk "4.0.0" + commander "5.1.0" + glob "7.1.6" + parse-glob "3.0.4" + request "2.88.2" + strip-json-comments "3.1.0" + xml "1.0.1" + +htmlparser2@^3.10.0, htmlparser2@^3.3.0: + 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-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-cache-semantics@^4.0.0, http-cache-semantics@^4.0.3: + 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-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +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.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-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== + dependencies: + agent-base "4" + debug "3.1.0" + +http-proxy-agent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-3.0.0.tgz#598f42dc815949a11e2c6dbfdf24cd8a4c165327" + integrity sha512-uGuJaBWQWDQCJI5ip0d/VTYZW0nRrlLWXA4A7P1jrsa+f77rW2yXz315oBt6zGCF6l8C2tlMxY7ffULCj+5FhA== + dependencies: + agent-base "5" + debug "4" + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" + integrity sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE= + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +http-proxy@^1.17.0: + 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" + +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@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +https-proxy-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" + integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== + dependencies: + agent-base "5" + debug "4" + +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-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== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + dependencies: + ms "^2.0.0" + +husky@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" + integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== + dependencies: + chalk "^4.0.0" + ci-info "^2.0.0" + compare-versions "^3.6.0" + cosmiconfig "^6.0.0" + find-versions "^3.2.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" + slash "^3.0.0" + which-pm-runs "^1.0.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: + 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-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.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +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-walk@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + dependencies: + minimatch "^3.0.4" + +ignore@^4.0.3, ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4, ignore@^5.1.8: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + +immutable@^3: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.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@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + +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= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +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== + +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: + 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.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +init-package-json@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== + dependencies: + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + +inquirer@^6.2.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^7.0.0, inquirer@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.2.0.tgz#63ce99d823090de7eb420e4bb05e6f3449aa389a" + integrity sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +interpret@^1.0.0, interpret@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +invariant@^2.2.2, 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" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +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= + +ip@1.1.5, ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +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.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-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +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.0.2, 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, is-buffer@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + +is-callable@^1.1.4, is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + +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-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +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, is-decimal@^1.0.2: + 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-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +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@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +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-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +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-glob@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +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-installed-globally@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== + dependencies: + global-dirs "^2.0.1" + is-path-inside "^3.0.1" + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= + +is-npm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" + integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== + +is-number-like@^1.0.3: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.8.tgz#2e129620b50891042e44e9bbbb30593e75cfbbe3" + integrity sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA== + dependencies: + lodash.isfinite "^3.3.2" + +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.0, 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-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + +is-plain-obj@^1.0.0, 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.1, 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@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" + integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== + +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-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.0.4, is-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" + integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== + 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-regexp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" + integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-ssh@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" + integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== + dependencies: + protocols "^1.1.0" + +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-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.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-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= + dependencies: + text-extensions "^1.0.0" + +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-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +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@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= + +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: + 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" + +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +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= + +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + +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" + +jake@^10.6.1: + version "10.8.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" + integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== + dependencies: + async "0.9.x" + chalk "^2.4.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +javascript-stringify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.0.1.tgz#6ef358035310e35d667c675ed63d3eb7c1aa19e5" + integrity sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow== + +jest-changed-files@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.1.0.tgz#de66b0f30453bca2aff98e9400f75905da495305" + integrity sha512-HS5MIJp3B8t0NRKGMCZkcDUZo36mVRvrDETl81aqljT1S9tqiHRSpyoOvWg9ZilzZG9TDisDNaN1IXm54fLRZw== + dependencies: + "@jest/types" "^26.1.0" + execa "^4.0.0" + throat "^5.0.0" + +jest-cli@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.1.0.tgz#eb9ec8a18cf3b6aa556d9deaa9e24be12b43ad87" + integrity sha512-Imumvjgi3rU7stq6SJ1JUEMaV5aAgJYXIs0jPqdUnF47N/Tk83EXfmtvNKQ+SnFVI6t6mDOvfM3aA9Sg6kQPSw== + dependencies: + "@jest/core" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" + 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.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" + prompts "^2.0.1" + yargs "^15.3.1" + +jest-config@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.1.0.tgz#9074f7539acc185e0113ad6d22ed589c16a37a73" + integrity sha512-ONTGeoMbAwGCdq4WuKkMcdMoyfs5CLzHEkzFOlVvcDXufZSaIWh/OXMLa2fwKXiOaFcqEw8qFr4VOKJQfn4CVw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^26.1.0" + "@jest/types" "^26.1.0" + babel-jest "^26.1.0" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.1.0" + jest-environment-node "^26.1.0" + jest-get-type "^26.0.0" + jest-jasmine2 "^26.1.0" + jest-regex-util "^26.0.0" + jest-resolve "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" + micromatch "^4.0.2" + pretty-format "^26.1.0" + +jest-dev-server@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/jest-dev-server/-/jest-dev-server-4.4.0.tgz#557113faae2877452162696aa94c1e44491ab011" + integrity sha512-STEHJ3iPSC8HbrQ3TME0ozGX2KT28lbT4XopPxUm2WimsX3fcB3YOptRh12YphQisMhfqNSNTZUmWyT3HEXS2A== + dependencies: + chalk "^3.0.0" + cwd "^0.10.0" + find-process "^1.4.3" + prompts "^2.3.0" + spawnd "^4.4.0" + tree-kill "^1.2.2" + wait-on "^3.3.0" + +jest-diff@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.1.0.tgz#00a549bdc936c9691eb4dc25d1fbd78bf456abb2" + integrity sha512-GZpIcom339y0OXznsEKjtkfKxNdg7bVbEofK8Q6MnevTIiR1jNhDWKhRX6X0SDXJlwn3dy59nZ1z55fLkAqPWg== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.0.0" + jest-get-type "^26.0.0" + pretty-format "^26.1.0" + +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.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.1.0.tgz#e35449875009a22d74d1bda183b306db20f286f7" + integrity sha512-lYiSo4Igr81q6QRsVQq9LIkJW0hZcKxkIkHzNeTMPENYYDw/W/Raq28iJ0sLlNFYz2qxxeLnc5K2gQoFYlu2bA== + dependencies: + "@jest/types" "^26.1.0" + chalk "^4.0.0" + jest-get-type "^26.0.0" + jest-util "^26.1.0" + pretty-format "^26.1.0" + +jest-environment-jsdom@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.1.0.tgz#9dc7313ffe1b59761dad1fedb76e2503e5d37c5b" + integrity sha512-dWfiJ+spunVAwzXbdVqPH1LbuJW/kDL+FyqgA5YzquisHqTi0g9hquKif9xKm7c1bKBj6wbmJuDkeMCnxZEpUw== + dependencies: + "@jest/environment" "^26.1.0" + "@jest/fake-timers" "^26.1.0" + "@jest/types" "^26.1.0" + jest-mock "^26.1.0" + jest-util "^26.1.0" + jsdom "^16.2.2" + +jest-environment-node@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.1.0.tgz#8bb387b3eefb132eab7826f9a808e4e05618960b" + integrity sha512-DNm5x1aQH0iRAe9UYAkZenuzuJ69VKzDCAYISFHQ5i9e+2Tbeu2ONGY7YStubCLH8a1wdKBgqScYw85+ySxqxg== + dependencies: + "@jest/environment" "^26.1.0" + "@jest/fake-timers" "^26.1.0" + "@jest/types" "^26.1.0" + jest-mock "^26.1.0" + jest-util "^26.1.0" + +jest-environment-puppeteer@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-puppeteer/-/jest-environment-puppeteer-4.4.0.tgz#d82a37e0e0c51b63cc6b15dea101d53967508860" + integrity sha512-iV8S8+6qkdTM6OBR/M9gKywEk8GDSOe05hspCs5D8qKSwtmlUfdtHfB4cakdc68lC6YfK3AUsLirpfgodCHjzQ== + dependencies: + chalk "^3.0.0" + cwd "^0.10.0" + jest-dev-server "^4.4.0" + merge-deep "^3.0.2" + +jest-get-type@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039" + integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg== + +jest-haste-map@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.1.0.tgz#ef31209be73f09b0d9445e7d213e1b53d0d1476a" + integrity sha512-WeBS54xCIz9twzkEdm6+vJBXgRBQfdbbXD0dk8lJh7gLihopABlJmIQFdWSDDtuDe4PRiObsjZSUjbJ1uhWEpA== + dependencies: + "@jest/types" "^26.1.0" + "@types/graceful-fs" "^4.1.2" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-serializer "^26.1.0" + jest-util "^26.1.0" + jest-worker "^26.1.0" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + which "^2.0.2" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.1.0.tgz#4dfe349b2b2d3c6b3a27c024fd4cb57ac0ed4b6f" + integrity sha512-1IPtoDKOAG+MeBrKvvuxxGPJb35MTTRSDglNdWWCndCB3TIVzbLThRBkwH9P081vXLgiJHZY8Bz3yzFS803xqQ== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.1.0" + "@jest/source-map" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" + chalk "^4.0.0" + co "^4.6.0" + expect "^26.1.0" + is-generator-fn "^2.0.0" + jest-each "^26.1.0" + jest-matcher-utils "^26.1.0" + jest-message-util "^26.1.0" + jest-runtime "^26.1.0" + jest-snapshot "^26.1.0" + jest-util "^26.1.0" + pretty-format "^26.1.0" + throat "^5.0.0" + +jest-leak-detector@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.1.0.tgz#039c3a07ebcd8adfa984b6ac015752c35792e0a6" + integrity sha512-dsMnKF+4BVOZwvQDlgn3MG+Ns4JuLv8jNvXH56bgqrrboyCbI1rQg6EI5rs+8IYagVcfVP2yZFKfWNZy0rK0Hw== + dependencies: + jest-get-type "^26.0.0" + pretty-format "^26.1.0" + +jest-matcher-utils@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.1.0.tgz#cf75a41bd413dda784f022de5a65a2a5c73a5c92" + integrity sha512-PW9JtItbYvES/xLn5mYxjMd+Rk+/kIt88EfH3N7w9KeOrHWaHrdYPnVHndGbsFGRJ2d5gKtwggCvkqbFDoouQA== + dependencies: + chalk "^4.0.0" + jest-diff "^26.1.0" + jest-get-type "^26.0.0" + pretty-format "^26.1.0" + +jest-message-util@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.1.0.tgz#52573fbb8f5cea443c4d1747804d7a238a3e233c" + integrity sha512-dY0+UlldiAJwNDJ08SF0HdF32g9PkbF2NRK/+2iMPU40O6q+iSn1lgog/u0UH8ksWoPv0+gNq8cjhYO2MFtT0g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.1.0" + "@types/stack-utils" "^1.0.1" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.1.0.tgz#80d8286da1f05a345fbad1bfd6fa49a899465d3d" + integrity sha512-1Rm8EIJ3ZFA8yCIie92UbxZWj9SuVmUGcyhLHyAhY6WI3NIct38nVcfOPWhJteqSn8V8e3xOMha9Ojfazfpovw== + dependencies: + "@jest/types" "^26.1.0" + +jest-pnp-resolver@^1.2.1: + 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.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.1.0.tgz#1ce36472f864a5dadf7dc82fa158e1c77955691b" + integrity sha512-fQVEPHHQ1JjHRDxzlLU/buuQ9om+hqW6Vo928aa4b4yvq4ZHBtRSDsLdKQLuCqn5CkTVpYZ7ARh2fbA8WkRE6g== + dependencies: + "@jest/types" "^26.1.0" + jest-regex-util "^26.0.0" + jest-snapshot "^26.1.0" + +jest-resolve@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.1.0.tgz#a530eaa302b1f6fa0479079d1561dd69abc00e68" + integrity sha512-KsY1JV9FeVgEmwIISbZZN83RNGJ1CC+XUCikf/ZWJBX/tO4a4NvA21YixokhdR9UnmPKKAC4LafVixJBrwlmfg== + dependencies: + "@jest/types" "^26.1.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.1" + jest-util "^26.1.0" + read-pkg-up "^7.0.1" + resolve "^1.17.0" + slash "^3.0.0" + +jest-runner@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.1.0.tgz#457f7fc522afe46ca6db1dccf19f87f500b3288d" + integrity sha512-elvP7y0fVDREnfqit0zAxiXkDRSw6dgCkzPCf1XvIMnSDZ8yogmSKJf192dpOgnUVykmQXwYYJnCx641uLTgcw== + dependencies: + "@jest/console" "^26.1.0" + "@jest/environment" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^26.1.0" + jest-docblock "^26.0.0" + jest-haste-map "^26.1.0" + jest-jasmine2 "^26.1.0" + jest-leak-detector "^26.1.0" + jest-message-util "^26.1.0" + jest-resolve "^26.1.0" + jest-runtime "^26.1.0" + jest-util "^26.1.0" + jest-worker "^26.1.0" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.1.0.tgz#45a37af42115f123ed5c51f126c05502da2469cb" + integrity sha512-1qiYN+EZLmG1QV2wdEBRf+Ci8i3VSfIYLF02U18PiUDrMbhfpN/EAMMkJtT02jgJUoaEOpHAIXG6zS3QRMzRmA== + dependencies: + "@jest/console" "^26.1.0" + "@jest/environment" "^26.1.0" + "@jest/fake-timers" "^26.1.0" + "@jest/globals" "^26.1.0" + "@jest/source-map" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^26.1.0" + jest-haste-map "^26.1.0" + jest-message-util "^26.1.0" + jest-mock "^26.1.0" + jest-regex-util "^26.0.0" + jest-resolve "^26.1.0" + jest-snapshot "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.3.1" + +jest-serializer@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.1.0.tgz#72a394531fc9b08e173dc7d297440ac610d95022" + integrity sha512-eqZOQG/0+MHmr25b2Z86g7+Kzd5dG9dhCiUoyUNJPgiqi38DqbDEOlHcNijyfZoj74soGBohKBZuJFS18YTJ5w== + dependencies: + graceful-fs "^4.2.4" + +jest-snapshot@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.1.0.tgz#c36ed1e0334bd7bd2fe5ad07e93a364ead7e1349" + integrity sha512-YhSbU7eMTVQO/iRbNs8j0mKRxGp4plo7sJ3GzOQ0IYjvsBiwg0T1o0zGQAYepza7lYHuPTrG5J2yDd0CE2YxSw== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^26.1.0" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.1.0" + graceful-fs "^4.2.4" + jest-diff "^26.1.0" + jest-get-type "^26.0.0" + jest-haste-map "^26.1.0" + jest-matcher-utils "^26.1.0" + jest-message-util "^26.1.0" + jest-resolve "^26.1.0" + natural-compare "^1.4.0" + pretty-format "^26.1.0" + semver "^7.3.2" + +jest-util@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.1.0.tgz#80e85d4ba820decacf41a691c2042d5276e5d8d8" + integrity sha512-rNMOwFQevljfNGvbzNQAxdmXQ+NawW/J72dmddsK0E8vgxXCMtwQ/EH0BiWEIxh0hhMcTsxwAxINt7Lh46Uzbg== + dependencies: + "@jest/types" "^26.1.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.1.0.tgz#942c85ad3d60f78250c488a7f85d8f11a29788e7" + integrity sha512-WPApOOnXsiwhZtmkDsxnpye+XLb/tUISP+H6cHjfUIXvlG+eKwP+isnivsxlHCPaO9Q5wvbhloIBkdF3qUn+Nw== + dependencies: + "@jest/types" "^26.1.0" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.0.0" + leven "^3.1.0" + pretty-format "^26.1.0" + +jest-watcher@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.1.0.tgz#99812a0cd931f0cb3d153180426135ab83e4d8f2" + integrity sha512-ffEOhJl2EvAIki613oPsSG11usqnGUzIiK7MMX6hE4422aXOcVEG3ySCTDFLn1+LZNXGPE8tuJxhp8OBJ1pgzQ== + dependencies: + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.1.0" + string-length "^4.0.1" + +jest-worker@^26.0.0, jest-worker@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.1.0.tgz#65d5641af74e08ccd561c240e7db61284f82f33d" + integrity sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.1.0.tgz#2f3aa7bcffb9bfd025473f83bbbf46a3af026263" + integrity sha512-LIti8jppw5BcQvmNJe4w2g1N/3V68HUfAv9zDVm7v+VAtQulGhH0LnmmiVkbNE4M4I43Bj2fXPiBGKt26k9tHw== + dependencies: + "@jest/core" "^26.1.0" + import-local "^3.0.2" + jest-cli "^26.1.0" + +js-beautify@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.11.0.tgz#afb873dc47d58986360093dcb69951e8bcd5ded2" + integrity sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A== + dependencies: + config-chain "^1.1.12" + editorconfig "^0.15.3" + glob "^7.1.3" + mkdirp "~1.0.3" + nopt "^4.0.3" + +"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.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.2.2: + version "16.2.2" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.2.2.tgz#76f2f7541646beb46a938f5dc476b88705bedf2b" + integrity sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg== + 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.0.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" + +jsdom@^16.5.3: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.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.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-better-errors@^1.0.0, 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-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-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@^5.0.1, 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= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +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.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@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= + optionalDependencies: + graceful-fs "^4.1.6" + +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.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + dependencies: + universalify "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + +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.4.1: + 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" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +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== + +known-css-properties@^0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.19.0.tgz#5d92b7fa16c72d971bda9b7fe295bdf61836ee5b" + integrity sha512-eYboRV94Vco725nKMlpkn3nV2+96p9c3gKXRsYqAJSswSENvBhN7n5L+uDhY58xQa0UukWsDMTGELzmD8Q+wTA== + +language-subtag-registry@~0.3.2: + version "0.3.20" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.20.tgz#a00a37121894f224f763268e431c55556b0c0755" + integrity sha512-KPMwROklF4tEx283Xw0pNKtfTj1gZ4UByp4EsIFWLgBavJltF4TiYPc39k06zSTsLzxTVXXDSpbwaQXaFB4Qeg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lerna-changelog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lerna-changelog/-/lerna-changelog-1.0.1.tgz#53090ab7f047730ec88d32087762164626269d3a" + integrity sha512-E7ewsfQknBmQcUspCqd5b8Hbbp5SX768y6vEiIdXXui9pPhZS1WlrKtiAUPs0CeGd8Pv4gtIC/h3wSWIZuvqaA== + dependencies: + chalk "^2.4.1" + cli-highlight "^2.1.4" + execa "^1.0.0" + make-fetch-happen "^7.1.1" + normalize-git-url "^3.0.2" + p-map "^3.0.0" + progress "^2.0.0" + yargs "^13.0.0" + +lerna@^3.22.0: + version "3.22.1" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.22.1.tgz#82027ac3da9c627fd8bf02ccfeff806a98e65b62" + integrity sha512-vk1lfVRFm+UuEFA7wkLKeSF7Iz13W+N/vFd48aW2yuS7Kv0RbNm2/qcDPV863056LMfkRlsEe+QYOw3palj5Lg== + dependencies: + "@lerna/add" "3.21.0" + "@lerna/bootstrap" "3.21.0" + "@lerna/changed" "3.21.0" + "@lerna/clean" "3.21.0" + "@lerna/cli" "3.18.5" + "@lerna/create" "3.22.0" + "@lerna/diff" "3.21.0" + "@lerna/exec" "3.21.0" + "@lerna/import" "3.22.0" + "@lerna/info" "3.21.0" + "@lerna/init" "3.21.0" + "@lerna/link" "3.21.0" + "@lerna/list" "3.21.0" + "@lerna/publish" "3.22.1" + "@lerna/run" "3.21.0" + "@lerna/version" "3.22.1" + import-local "^2.0.0" + npmlog "^4.1.2" + +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== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, 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" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lie@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" + +limiter@^1.0.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" + integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== + +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= + +lint-staged@^10.2.11: + version "10.2.11" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.11.tgz#713c80877f2dc8b609b05bc59020234e766c9720" + integrity sha512-LRRrSogzbixYaZItE2APaS4l2eJMjjf5MbclRZpLJtcQJShcvUzKXsNeZgsLIZ0H0+fg2tL4B59fU9wHIHtFIA== + dependencies: + chalk "^4.0.0" + cli-truncate "2.1.0" + commander "^5.1.0" + cosmiconfig "^6.0.0" + debug "^4.1.1" + dedent "^0.7.0" + enquirer "^2.3.5" + execa "^4.0.1" + listr2 "^2.1.0" + log-symbols "^4.0.0" + micromatch "^4.0.2" + normalize-path "^3.0.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" + stringify-object "^3.3.0" + +listr2@^2.1.0: + version "2.1.9" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.1.9.tgz#ec4ba417831197f71f63d716ff8869b292be096b" + integrity sha512-29IJuXMIDV6GYAW3SGfRl56EInP2Hr7gk4GNUPjUFkSq6jpKHqr5OpH3z8r6yj0XvHBIkhFSE14ytFoBLBfCLA== + dependencies: + chalk "^4.0.0" + cli-truncate "^2.1.0" + figures "^3.2.0" + indent-string "^4.0.0" + log-update "^4.0.0" + p-map "^4.0.0" + rxjs "^6.5.5" + through "^2.3.8" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +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-json-file@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" + integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== + dependencies: + graceful-fs "^4.1.15" + parse-json "^4.0.0" + pify "^4.0.1" + strip-bom "^3.0.0" + type-fest "^0.3.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, loader-utils@^1.2.3, loader-utils@^1.4.0: + 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" + +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" + +localforage@^1.3.0: + version "1.7.4" + resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.7.4.tgz#88b59cc9b25ae54c76bb2c080b21ec832c22d3f6" + integrity sha512-3EmVZatmNVeCo/t6Te7P06h2alGwbq8wXlSkcSXMvDE2/edPmsVqTPlzGnZaqwZZDBs6v+kxWpqjVsqsNJT8jA== + dependencies: + lie "3.1.1" + +localtunnel@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.9.2.tgz#0012fcabc29cf964c130a01858768aa2bb65b5af" + integrity sha512-NEKF7bDJE9U3xzJu3kbayF0WTvng6Pww7tzqNb/XtEARYwqw7CKEX7BvOMg98FtE9es2CRizl61gkV3hS8dqYg== + dependencies: + axios "0.19.0" + debug "4.1.1" + openurl "1.1.1" + yargs "6.6.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +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" + +locutus@^2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/locutus/-/locutus-2.0.11.tgz#83f85109971fd3dd620482a04381916e4a31d4f0" + integrity sha512-C0q1L38lK5q1t+wE0KY21/9szrBHxye6o2z5EJzU+5B79tubNOC+nLAEzTTn1vPUGoUuehKh8kYKqiVUTWRyaQ== + dependencies: + es6-promise "^4.2.5" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +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.isfinite@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" + integrity sha1-+4m2WpqAKBgz8LdHizpRBPiY67M= + +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= + +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.template@^4.0.2, lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +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, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.2.1: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +lodash@^4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + +lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +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" + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +loglevel@^1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" + integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== + +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.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" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" + integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== + dependencies: + tslib "^1.10.0" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +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@^4.1.5: + 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" + +macos-release@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.0.tgz#837b39fc01785c3584f103c5599e0f0c8068b49e" + integrity sha512-ko6deozZYiAkqa/0gmcsz+p4jSy3gY7/ZsCEokPaYd8k+6/aXGkiTgr61+Owup7Sf+xjqW8u2ElhoM9SEcEfuA== + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-dir@^2.0.0, make-dir@^2.1.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" + +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== + dependencies: + agentkeepalive "^3.4.1" + cacache "^12.0.0" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + +make-fetch-happen@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-7.1.1.tgz#89ac8112eaa9d4361541deb591329e9238a531b1" + integrity sha512-7fNjiOXNZhNGQzG5P15nU97aZQtzPU2GVgVd7pnqnl5gnpLzMAD8bAe5YG4iW2s0PTqaZy9xGv4Wfqe872kRNQ== + dependencies: + agentkeepalive "^4.1.0" + cacache "^14.0.0" + http-cache-semantics "^4.0.3" + http-proxy-agent "^3.0.0" + https-proxy-agent "^4.0.0" + is-lambda "^1.0.1" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-fetch "^1.1.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^7.0.1" + +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, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + +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" + +marked@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-1.1.0.tgz#62504ad4d11550c942935ccc5e39d64e5a4c4e50" + integrity sha512-EkE7RW6KcXfMHy2PA7Jg0YJE1l8UPEZE8k45tylzmZM30/r1M1MUXWQfJlrSbsTeh7m/XTwHbWUENvAJZpp1YA== + +mathml-tag-names@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" + integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== + +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-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" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdn-data@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" + integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== + +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.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" + integrity sha1-8rslNovBIeORwlIN6Slpyu4KApA= + +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" + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +meow@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" + integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist "^1.1.3" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + +meow@^7.0.0, meow@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-7.0.1.tgz#1ed4a0a50b3844b451369c48362eb0515f04c1dc" + integrity sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw== + dependencies: + "@types/minimist" "^1.2.0" + arrify "^2.0.1" + camelcase "^6.0.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-deep@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" + integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== + dependencies: + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +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.2.3, 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.1, methods@^1.1.2, methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +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, "mime-db@>= 1.43.0 < 2": + 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-types@^2.1.12, mime-types@^2.1.26, mime-types@~2.1.17, 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@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.0.3, mime@^2.4.4: + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +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, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +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-css-extract-plugin@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +mini-svg-data-uri@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.2.3.tgz#e16baa92ad55ddaa1c2c135759129f41910bc39f" + integrity sha512-zd6KCAyXgmq6FV1mR10oKXYtvmA9vRoB6xPSTUJTbFApCtkefDnYueVR1gkof3KcdLZo1Y8mjF2DFmQMIxsHNQ== + +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.x, minimatch@^3.0.2, 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@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + +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.1.3, minimist@^1.2.0, 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-fetch@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.2.1.tgz#1b97ecb559be56b09812d45b2e9509f1f59ece2f" + integrity sha512-ssHt0dkljEDaKmTgQ04DQgx2ag6G2gMPxA5hpcsoeTbfDgRf2fC2gNSRc6kISjD7ckCpHwwQvXxuTBK8402fXg== + dependencies: + minipass "^3.1.0" + minipass-pipeline "^1.2.2" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" + integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.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@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +minizlib@^2.0.0, minizlib@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" + integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== + 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" + +mitt@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== + +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" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp-classic@^0.5.2: + 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-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= + dependencies: + mkdirp "*" + +mkdirp@*, mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: + 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" + +modify-values@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + +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.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.0.0, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +multimatch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-3.0.0.tgz#0e2534cc6bc238d9ab67e1b9cd5fcd85a6dbf70b" + integrity sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA== + dependencies: + array-differ "^2.0.3" + array-union "^1.0.2" + arrify "^1.0.1" + minimatch "^3.0.4" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +mz@^2.4.0, mz@^2.5.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.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + +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" + +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= + +nedb-promises@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nedb-promises/-/nedb-promises-4.0.3.tgz#136df5254f6c3052e97547fc0403a92492d8cc11" + integrity sha512-NzepLVjy/Vgl5lvlhO6nze2O4GsPUroONP97fRZKPlIbjt6dV7Y5CXMmPQBI6H3Q6whG8kubFOQXJkMAXIUF3w== + dependencies: + nedb "^1.8.0" + +nedb@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/nedb/-/nedb-1.8.0.tgz#0e3502cd82c004d5355a43c9e55577bd7bd91d88" + integrity sha1-DjUCzYLABNU1WkPJ5VV3vXvZHYg= + dependencies: + async "0.2.10" + binary-search-tree "0.2.5" + localforage "^1.3.0" + mkdirp "~0.5.1" + underscore "~1.4.4" + +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.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +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== + +no-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" + integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== + dependencies: + lower-case "^2.0.1" + tslib "^1.10.0" + +node-eval@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-eval/-/node-eval-2.0.0.tgz#ae1d1299deb4c0e41352f9528c1af6401661d37f" + integrity sha512-Ap+L9HznXAVeJj3TJ1op6M6bg5xtTq8L5CU/PJxtkhea/DrIxdTknGKIECKd/v/Lgql95iuMAYvIzBNd0pmcMg== + dependencies: + path-is-absolute "1.0.1" + +node-fetch-npm@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" + integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + +node-fetch@^2.3.0, node-fetch@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== + +node-gyp@^5.0.2: + version "5.1.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" + integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.1.2" + request "^2.88.0" + rimraf "^2.6.3" + semver "^5.7.1" + tar "^4.4.12" + which "^1.3.1" + +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@^1.0.0 || ^2.0.0", 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@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-7.0.1.tgz#a355e33e6bebacef9bf8562689aed0f4230ca6f9" + integrity sha512-VkzhierE7DBmQEElhTGJIoiZa1oqRijOtgOlsXg32KrJRXsPy0NXFBqWGW/wTswnJlDCs5viRYaqWguqzsKcmg== + dependencies: + growly "^1.3.0" + is-wsl "^2.1.1" + semver "^7.2.1" + shellwords "^0.1.1" + uuid "^7.0.3" + which "^2.0.2" + +node-releases@^1.1.58: + version "1.1.58" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" + integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== + +nopt@^4.0.1, nopt@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-git-url@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/normalize-git-url/-/normalize-git-url-3.0.2.tgz#8e5f14be0bdaedb73e07200310aa416c27350fc4" + integrity sha1-jl8Uvgva7bc+ByADEKpBbCc1D8Q= + +normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, 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-selector@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" + integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0, normalize-url@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +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== + +npm-bundled@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-lifecycle@^3.1.2: + version "3.1.5" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" + integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== + dependencies: + byline "^5.0.0" + graceful-fs "^4.1.15" + node-gyp "^5.0.2" + resolve-from "^4.0.0" + slide "^1.1.6" + uid-number "0.0.6" + umask "^1.1.0" + which "^1.3.1" + +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== + dependencies: + hosted-git-info "^2.7.1" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + +npm-pick-manifest@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.0.0" + semver "^5.4.1" + +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" + +npm-run-path@^4.0.0: + 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" + +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.2, 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.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-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= + +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-inspect@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-is@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +object-keys@^1.0.11, 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-path@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" + integrity sha1-D9mnT8X60a45aLWGvaXGMr1sBaU= + +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: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.entries@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" + integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +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.0, object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +octokit-pagination-methods@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" + integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== + +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" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +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@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.3, open@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.4.tgz#c28a9d315e5c98340bf979fdcb2e58664aa10d83" + integrity sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opencollective-postinstall@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== + +opener@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== + +openurl@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" + integrity sha1-OHW0sO96UsFW8NtB1GCduw+Us4c= + +opn@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== + dependencies: + is-wsl "^1.1.0" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optionator@^0.8.1, optionator@^0.8.3: + 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" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +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.0, 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-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-name@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" + integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== + dependencies: + macos-release "^2.2.0" + windows-release "^3.1.0" + +os-tmpdir@^1.0.0, 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= + +osenv@^0.1.4, osenv@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-each-series@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" + integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== + +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@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.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-limit@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.1.tgz#584784ac0722d1aed09f19f90ed2999af6ce2839" + integrity sha512-mw/p92EyOzl2MhauKodw54Rx5ZK4624rNfgNaBguFZkHzyUG9WsDzFF5/yQVEJinbJDdP4jEfMN+uBquiGnaLg== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.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-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= + dependencies: + p-reduce "^1.0.0" + +p-map@^2.0.0, p-map@^2.1.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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-pipe@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= + +p-queue@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-4.0.0.tgz#ed0eee8798927ed6f2c2f5f5b77fdb2061a5d346" + integrity sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg== + dependencies: + eventemitter3 "^3.1.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +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== + +p-waterfall@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" + integrity sha1-ftlLPOszMngjU69qrhGqn8I1uwA= + dependencies: + p-reduce "^1.0.0" + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +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" + +param-case@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" + integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== + dependencies: + dot-case "^3.0.3" + tslib "^1.10.0" + +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.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.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-repo-url@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= + +parse-glob@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +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.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" + integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== + dependencies: + is-ssh "^1.3.0" + protocols "^1.4.0" + +parse-url@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" + integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== + dependencies: + is-ssh "^1.3.0" + normalize-url "^3.3.0" + parse-path "^4.0.0" + protocols "^1.4.0" + +parse5-htmlparser2-tree-adapter@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz#e8c743d4e92194d5293ecde2b08be31e67461cbc" + integrity sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw== + dependencies: + parse5 "^5.1.1" + +parse5@5.1.1, 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@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" + integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + +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-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@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +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-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +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-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@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +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" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +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: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0, 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== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.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" + +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" + semver-compare "^1.0.0" -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" +portfinder@^1.0.26: + version "1.0.26" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70" + integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ== 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" + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +portscanner@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" + integrity sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y= + dependencies: + async "1.5.2" + is-number-like "^1.0.3" -fast-glob@^2.0.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.4.tgz#e54f4b66d378040e0e4d6a68ec36bbc5b04363c0" +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-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" + postcss "^7" -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" +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: - escape-string-regexp "^1.0.5" + postcss "^7.0.0" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== dependencies: - flat-cache "^2.0.1" + postcss "^7.0.0" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-html@^0.36.0: + version "0.36.0" + resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" + integrity sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw== + dependencies: + htmlparser2 "^3.10.0" + +postcss-less@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" + integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== + dependencies: + postcss "^7.0.14" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" -find-up@3.0.0, find-up@^3.0.0: +postcss-loader@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-media-query-parser@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" + integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== dependencies: - locate-path "^3.0.0" + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" -first-chunk-stream@^2.0.0: +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== dependencies: - readable-stream "^2.0.2" + postcss "^7.0.5" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" -flat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" - integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== +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: - is-buffer "~2.0.3" + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" -flatted@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" - integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== +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" -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== dependencies: - map-cache "^0.2.2" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.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== +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -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== +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -get-caller-file@^2.0.1: - 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== +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== +postcss-normalize@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-9.0.0.tgz#3b551279f78ec3b2e151bc8cf52ff6e46c4cc60c" + integrity sha512-//kq5O1xkygzN1iCioFIBtzyVTgB6ce9+Hu0mNHuUhPn+FnnFSPybe5kBemnUPPqd7QrHc+kdX6GVECUWdU2uQ== dependencies: - pump "^3.0.0" + "@csstools/normalize.css" "*" + postcss "^7.0.27" + postcss-browser-comments "^3.0.0" + sanitize.css "*" -get-stream@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== dependencies: - pump "^3.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -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" +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" -gh-got@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-5.0.0.tgz#ee95be37106fd8748a96f8d1db4baea89e1bfa8a" - integrity sha1-7pW+NxBv2HSKlvjR20uuqJ4b+oo= +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== dependencies: - got "^6.2.0" - is-plain-obj "^1.1.0" + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -gh-got@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-6.0.0.tgz#d74353004c6ec466647520a10bd46f7299d268d0" +postcss-reporter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" + integrity sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw== dependencies: - got "^7.0.0" - is-plain-obj "^1.1.0" + chalk "^2.4.1" + lodash "^4.17.11" + log-symbols "^2.2.0" + postcss "^7.0.7" -github-username@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/github-username/-/github-username-3.0.0.tgz#0a772219b3130743429f2456d0bdd3db55dce7b1" - integrity sha1-CnciGbMTB0NCnyRW0L3T21Xc57E= +postcss-resolve-nested-selector@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" + integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4= + +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: - gh-got "^5.0.0" + postcss "^7.0.26" -github-username@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/github-username/-/github-username-4.1.0.tgz#cbe280041883206da4212ae9e4b5f169c30bf417" +postcss-sass@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.4.4.tgz#91f0f3447b45ce373227a98b61f8d8f0785285a3" + integrity sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg== dependencies: - gh-got "^6.0.0" + gonzales-pe "^4.3.0" + postcss "^7.0.21" -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" +postcss-scss@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.1.1.tgz#ec3a75fa29a55e016b90bf3269026c53c1d2b383" + integrity sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA== dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" + postcss "^7.0.6" -glob-parent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" - integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== dependencies: - is-glob "^4.0.1" + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" -glob@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== 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" + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" +postcss-syntax@^0.36.2: + version "0.36.2" + resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" + integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" -glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" +postcss-value-parser@^3.0.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.0.0, postcss-value-parser@^4.0.2, 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, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6, postcss@^7.0.7: + version "7.0.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== 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" + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +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= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" + integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== -glob@^7.1.3, glob@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +pretty-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= 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" + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.1.0.tgz#272b9cd1f1a924ab5d443dc224899d7a65cb96ec" + integrity sha512-GmeO1PEYdM+non4BKCj+XsPJjFOJIPnsLewqhDVoqY1xo0yNmDas7tC2XwpMrRAHR3MaE2hPo37deX5OisJ2Wg== + dependencies: + "@jest/types" "^26.1.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-time@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" + integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== + +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== -global-dirs@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.0.tgz#10d34039e0df04272e262cf24224f7209434df4f" - dependencies: - ini "^1.3.4" +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -globals@^11.7.0: - version "11.9.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" - integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== +progress@^2.0.0, progress@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" +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= -globby@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" + err-code "^1.0.0" + retry "^0.10.0" -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== +prompts@^2.0.1, prompts@^2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" + kleur "^3.0.3" + sisteransi "^1.0.4" -got@^6.2.0: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" + read "1" -got@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" +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: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +protocols@^1.1.0, protocols@^1.4.0: + version "1.4.7" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" + integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== -graceful-fs@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" - integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== +protoduck@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== + dependencies: + genfun "^5.0.0" -grouped-queue@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== dependencies: - lodash "^4.17.2" + forwarded "~0.1.2" + ipaddr.js "1.9.1" -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +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= -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -has-symbol-support-x@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz#66ec2e377e0c7d7ccedb07a3a84d77510ff1bc4c" +psl@^1.1.28, psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +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" -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" +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: - has-symbol-support-x "^1.4.1" + end-of-stream "^1.1.0" + once "^1.3.1" -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" +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: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" + end-of-stream "^1.1.0" + once "^1.3.1" -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.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" +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" +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== + +pupa@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" + integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== + dependencies: + escape-goat "^2.0.0" + +puppeteer@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.2.1.tgz#7f0564f0a5384f352a38c8cc42af875cd87f4ea6" + integrity sha512-PZoZG7u+T6N1GFWBQmGVG162Ak5MAy8nYSVpeeQrwJK2oYUlDWpHEJPcd/zopyuEMTv7DiztS1blgny1txR2qw== + dependencies: + debug "^4.1.0" + devtools-protocol "0.0.781568" + extract-zip "^2.0.0" + https-proxy-agent "^4.0.0" + mime "^2.0.3" + pkg-dir "^4.2.0" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^3.0.2" + tar-fs "^2.0.0" + unbzip2-stream "^1.3.3" + ws "^7.2.3" + +q@^1.1.2, q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" + integrity sha1-HPyyXBCpsrSDBT/zn138kjOQjP4= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@^6.5.1: + 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== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" -has-yarn@^2.1.0: +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= + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= + +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== + +random-js@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + resolved "https://registry.yarnpkg.com/random-js/-/random-js-2.1.0.tgz#0c03238b0a4f701f7a4c7303036ade3083d8ee14" + integrity sha512-CRUyWmnzmZBA7RZSVGq0xMqmgCyPPxbiKNLFA5ud7KenojVX2s7Gv+V7eB52beKTPGxWRnVZ7D/tCIgYJJ8vNQ== -has@^1.0.1, 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== +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: - function-bind "^1.1.1" + safe-buffer "^5.1.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== +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" -hepburn@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/hepburn/-/hepburn-1.1.1.tgz#f5d420042c1533742d6708c6a840501f685b72b4" +range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== dependencies: - bulk-replace "0.0.1" + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" -hosted-git-info@^2.1.4: +raw-body@^2.3.2: version "2.4.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.1.tgz#4b0445e41c004a8bd1337773a4ff790ca40318c8" + 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" -http-cache-semantics@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" - integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== +rc@^1.2.8: + 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" -iconv-lite@^0.4.17: - version "0.4.18" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" +react-is@^16.12.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -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== +read-cmd-shim@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" + integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== dependencies: - safer-buffer ">= 2.1.2 < 3" + graceful-fs "^4.1.2" + +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: + version "2.1.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" + integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== + dependencies: + glob "^7.1.1" + json-parse-better-errors "^1.0.1" + normalize-package-data "^2.0.0" + npm-normalize-package-bin "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" +read-package-tree@^5.1.6: + version "5.3.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== + dependencies: + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + util-promisify "^2.1.0" -ignore@^4.0.3, ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" -import-fresh@^3.0.0: +read-pkg-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" + find-up "^2.0.0" + read-pkg "^3.0.0" -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" +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" -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= dependencies: - once "^1.3.0" - wrappy "1" + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" -inherits@2, inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +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" -inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +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" -ini@^1.3.4, ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" +read@1, read@~1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + dependencies: + mute-stream "~0.0.4" -inquirer@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" +"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.5, 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: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" + 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" -inquirer@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" - integrity sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg== +"readable-stream@2 || 3", readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.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: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.0" - figures "^2.0.0" - lodash "^4.17.10" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.1.0" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdir-scoped-modules@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + +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" -inquirer@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" + picomatch "^2.2.1" -interpret@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" -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" +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= dependencies: - kind-of "^3.0.2" + indent-string "^3.0.0" + strip-indent "^2.0.0" -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" +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: - kind-of "^6.0.0" + indent-string "^4.0.0" + strip-indent "^3.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" +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" -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" +regenerate@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" + integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== -is-buffer@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" - integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: - builtin-modules "^1.0.0" + "@babel/runtime" "^7.8.4" -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +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" -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== +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== dependencies: - ci-info "^2.0.0" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" -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" +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + 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" + +registry-auth-token@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" + integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== dependencies: - kind-of "^3.0.2" + rc "^1.2.8" -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" +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: - kind-of "^6.0.0" + rc "^1.2.8" -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= +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" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remark-parse@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.2.tgz#5999bc0b9c2e3edc038800a64ff103d0890b318b" + integrity sha512-eMI6kMRjsAGpMXXBAywJwiwAse+KNpmt+BK55Oofy4KvBZEqUDj6mWbGLJZrujoPIPPxDXzn3T9baRlpsm2jnQ== + 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-stringify@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.1.0.tgz#1e555f4402e445c364fb23d12fc5f5e0337ec8b7" + integrity sha512-FSPZv1ds76oAZjurhhuV5qXSUSoz6QRPuwYK38S41sLHwg4oB7ejnmZshj7qwjgYLf93kdz6BOX9j5aidNE7rA== + 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.0" + resolved "https://registry.yarnpkg.com/remark/-/remark-12.0.0.tgz#d1c145c07341c9232f93b2f8539d56da15a2548c" + integrity sha512-oX4lMIS0csgk8AEbzY0h2jdR0ngiCHOpwwpxjmRa5TqAkeknY+tkhjRJGZqnCmvyuWh55/0SW5WY3R3nn3PH9A== + dependencies: + remark-parse "^8.0.0" + remark-stringify "^8.0.0" + unified "^9.0.0" -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.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= -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" +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" -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" +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== -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" +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= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= dependencies: - is-plain-object "^2.0.4" + is-finite "^1.0.0" -is-extglob@^2.1.0, is-extglob@^2.1.1: +replace-ext@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@2.88.2, request@^2.88.0, 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/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -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" - dependencies: - number-is-nan "^1.0.0" +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= -is-fullwidth-code-point@^2.0.0: +require-main-filename@^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" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" +requires-port@1.x.x, 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= -is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= dependencies: - is-extglob "^2.1.1" + resolve-from "^3.0.0" -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== +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: - is-extglob "^2.1.1" + resolve-from "^5.0.0" -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" + expand-tilde "^1.2.2" + global-modules "^0.2.3" -is-npm@^3.0.0: +resolve-from@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053" - integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA== + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" +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== -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +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== -is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" +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= -is-path-inside@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: - path-is-inside "^1.0.1" + path-parse "^1.0.6" -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" +resp-modifier@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" + integrity sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08= + dependencies: + debug "^2.2.0" + minimatch "^3.0.2" -is-plain-object@^2.0.1, 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" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= dependencies: - isobject "^3.0.1" + lowercase-keys "^1.0.0" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" +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== + +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= -is-regex@^1.0.4: +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= - dependencies: - has "^1.0.1" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= -is-scoped@^1.0.0: +rgba-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" - dependencies: - scoped-regex "^1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +rimraf@2.6.3, rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== +rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: - has-symbols "^1.0.0" + glob "^7.1.3" -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +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" -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" +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" -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== -isbinaryfile@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" +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: - buffer-alloc "^1.2.0" + aproba "^1.1.1" -isbinaryfile@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.2.tgz#bfc45642da645681c610cca831022e30af426488" - integrity sha512-C3FSxJdNrEr2F4z6uFtNzECDM5hXk+46fxaa+cwBe5/XrWSmzdG8DDgyjfX6/NRdBB21q2JXuRAzPCUs+fclnQ== +rx@4.1.0, 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= -isexe@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" +rxjs@^5.5.6: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.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= +rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.5.5: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +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== -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" +safe-buffer@>=5.1.0, 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: - isarray "1.0.0" + ret "~0.1.10" -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" +"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== -istextorbinary@^2.2.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.3.0.tgz#29458d7b10edcb52f4db9c57945bb67cd20cc4fd" +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: - binaryextensions "^2.1.2" - editions "^2.0.2" - textextensions "^2.4.0" - -istextorbinary@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.5.1.tgz#14a33824cf6b9d5d7743eac1be2bd2c310d0ccbd" - integrity sha512-pv/JNPWnfpwGjPx7JrtWTwsWsxkrK3fNzcEVnt92YKEIErps4Fsk49+qzCe9iQF2hjqK8Naqf8P9kzoeCuQI1g== + "@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" + +sanitize.css@*: + version "11.0.1" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-11.0.1.tgz#e275e5e81a671adc34a8d36efd4182df0d5d4b93" + integrity sha512-Q762QXJGHIyFLayll6zUueGKslmGxNpbEDpSB/sdaZ9Xgz+v6AYlVc5P49sorc9cPR9y47npHBfXswGo1I32tg== + +sass-loader@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" + +sass@^1.26.7: + version "1.26.9" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.9.tgz#73c10cbb88c12b22a9e0107725bfd62296f4978f" + integrity sha512-t8AkRVi+xvba4yZiLWkJdgJHBFCB3Dh4johniQkPy9ywkgFHNasXFEFP+RG/F6LhQ+aoE4aX+IorIWQjS0esVw== + dependencies: + chokidar ">=2.0.0 <4.0.0" + +sax@~1.2.4: + 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, saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: - binaryextensions "^2.1.2" - editions "^2.1.3" - textextensions "^2.4.0" + xmlchars "^2.2.0" -isurl@^1.0.0-alpha5: +schema-utils@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - -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== + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" -js-yaml@3.13.1, js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== +schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jschardet@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.0.tgz#a61f310306a5a71188e1b1acd08add3cfbb08b1e" + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -json-parse-better-errors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a" +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== + dependencies: + node-forge "0.9.0" -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== +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + dependencies: + semver "^6.3.0" -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - optionalDependencies: - graceful-fs "^4.1.6" +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -just-extend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc" - integrity sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw== +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, 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== -keypress@0.1.x: - version "0.1.0" - resolved "https://registry.yarnpkg.com/keypress/-/keypress-0.1.0.tgz#4a3188d4291b66b4f65edb99f806aa9ae293592a" +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.2, semver@^6.2.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.2.1, semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" -keyv@^3.0.0: +serialize-javascript@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -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" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" + integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== dependencies: - is-buffer "^1.1.5" + randombytes "^2.1.0" -kind-of@^4.0.0: +serialize-javascript@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: - is-buffer "^1.1.5" + randombytes "^2.1.0" -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" +serve-index@1.9.1, serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +server-destroy@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" + integrity sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0= -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" +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= -latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== +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: - package-json "^6.3.0" + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" +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== + +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: - prelude-ls "~1.1.2" - type-check "~0.3.2" + inherits "^2.0.1" + safe-buffer "^5.0.1" -limax@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/limax/-/limax-1.7.0.tgz#bcfb2fb06be63e09cd3b47ac195307154691987d" +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= dependencies: - hepburn "^1.1.0" - pinyin "^2.8.3" - speakingurl "^14.0.1" + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" -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= +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" -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" +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: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" + shebang-regex "^1.0.0" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" +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: - p-locate "^3.0.0" - path-exists "^3.0.0" + shebang-regex "^3.0.0" -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= +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= -lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.3.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +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== -lodash@^4.17.10, lodash@^4.17.11: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" +shelljs@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" -lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +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== -log-symbols@2.2.0, log-symbols@^2.1.0, log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== dependencies: - chalk "^2.0.1" + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" -lolex@^2.7.5: - version "2.7.5" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.5.tgz#113001d56bfc7e02d56e36291cc5c413d1aa0733" - integrity sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q== +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= -lolex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.1.0.tgz#ecdd7b86539391d8237947a3419aa8ac975f0fe1" - integrity sha512-BYxIEXiVq5lGIXeVHnsFzqa1TxN5acnKnPCdlZSpzm8viNEOhiigupA4vTQ9HEFQ6nLTQ9wQOgBknJgzUYQ9Aw== +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" +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" -lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== +sisteransi@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -lowercase-keys@^2.0.0: +slash@^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@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -make-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" - dependencies: - pify "^2.3.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== -make-dir@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== dependencies: - pify "^3.0.0" + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" -make-dir@^3.0.0: +slice-ansi@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" - integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: - semver "^6.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - dependencies: - object-visit "^1.0.0" +slide@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -mem-fs-editor@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-5.1.0.tgz#51972241640be8567680a04f7adaffe5fc603667" - dependencies: - commondir "^1.0.1" - deep-extend "^0.6.0" - ejs "^2.5.9" - glob "^7.0.3" - globby "^8.0.1" - isbinaryfile "^3.0.2" - mkdirp "^0.5.0" - multimatch "^2.0.0" - rimraf "^2.2.8" - through2 "^2.0.0" - vinyl "^2.0.1" +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== -mem-fs-editor@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-6.0.0.tgz#d63607cf0a52fe6963fc376c6a7aa52db3edabab" - integrity sha512-e0WfJAMm8Gv1mP5fEq/Blzy6Lt1VbLg7gNnZmZak7nhrBTibs+c6nQ4SKs/ZyJYHS1mFgDJeopsLAv7Ow0FMFg== +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: - commondir "^1.0.1" - deep-extend "^0.6.0" - ejs "^2.6.1" - glob "^7.1.4" - globby "^9.2.0" - isbinaryfile "^4.0.0" - mkdirp "^0.5.0" - multimatch "^4.0.0" - rimraf "^2.6.3" - through2 "^3.0.1" - vinyl "^2.2.0" + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" -mem-fs@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.1.3.tgz#b8ae8d2e3fcb6f5d3f9165c12d4551a065d989cc" +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: - through2 "^2.0.0" - vinyl "^1.1.0" - vinyl-file "^2.0.0" + kind-of "^3.2.0" -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== +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: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -merge2@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" + 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" -micromatch@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - 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" +socket.io-adapter@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.2.0" + to-array "0.1.4" + +socket.io-client@^2.0.4: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" + integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~4.1.0" + engine.io-client "~3.4.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.3.0" + to-array "0.1.4" + +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +socket.io-parser@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" + integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" -mimic-response@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== + dependencies: + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.1.1" + socket.io-parser "~3.2.0" -mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" -minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== dependencies: - brace-expansion "^1.1.7" + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" -minimatch@^3.0.0, minimatch@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" +socks-proxy-agent@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== dependencies: - brace-expansion "^1.0.0" + agent-base "~4.2.1" + socks "~2.3.2" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" +socks@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== + dependencies: + ip "1.1.5" + smart-buffer "^4.1.0" -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" -mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" + is-plain-obj "^1.0.0" -mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" +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-explorer@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/source-map-explorer/-/source-map-explorer-2.4.2.tgz#fb23f86c3112eacde5683f24efaf4ddc9f677985" + integrity sha512-3ECQLffCFV8QgrTqcmddLkWL4/aQs6ljYfgWCLselo5QtizOfOeUCKnS4rFn7MIrdeZLM6TZrseOtsrWZhWKoQ== + dependencies: + btoa "^1.2.1" + chalk "^3.0.0" + convert-source-map "^1.7.0" + ejs "^3.0.2" + escape-html "^1.0.3" + glob "^7.1.6" + gzip-size "^5.1.1" + lodash "^4.17.15" + open "^7.0.3" + source-map "^0.7.3" + temp "^0.9.1" + yargs "^15.3.1" + +source-map-resolve@^0.5.0: + 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: - minimist "0.0.8" + 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" -mocha@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.2.0.tgz#f896b642843445d1bb8bca60eabd9206b8916e56" - integrity sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ== - dependencies: - ansi-colors "3.2.3" - browser-stdout "1.3.1" - debug "3.2.6" - diff "3.5.0" - escape-string-regexp "1.0.5" - find-up "3.0.0" - glob "7.1.3" - growl "1.10.5" - he "1.2.0" - js-yaml "3.13.1" - log-symbols "2.2.0" - minimatch "3.0.4" - mkdirp "0.5.1" - ms "2.1.1" - node-environment-flags "1.0.5" - object.assign "4.1.0" - strip-json-comments "2.0.1" - supports-color "6.0.0" - which "1.3.1" - wide-align "1.1.3" - yargs "13.2.2" - yargs-parser "13.0.0" - yargs-unparser "1.5.0" +source-map-support@^0.5.6, source-map-support@~0.5.12: + 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" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +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= -ms@2.1.1, ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -multimatch@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" +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: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spawnd@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/spawnd/-/spawnd-4.4.0.tgz#bb52c5b34a22e3225ae1d3acb873b2cd58af0886" + integrity sha512-jLPOfB6QOEgMOQY15Z6+lwZEhH3F5ncXxIaZ7WHPIapwNNLyjrs61okj3VJ3K6tmP5TZ6cO0VAu9rEY4MD4YQg== dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" + exit "^0.1.2" + signal-exit "^3.0.2" + tree-kill "^1.2.2" + wait-port "^0.2.7" -multimatch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" - integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== +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: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" +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== -mysql@^2.17.1: - version "2.17.1" - resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.17.1.tgz#62bba4a039a9b2f73638cd1652ce50fc6f682899" - integrity sha512-7vMqHQ673SAk5C8fOzTG2LpPcf3bNt0oL3sFpxPEEFp1mdlDcrLK0On7z8ZYKaaHrHwNcQ/MTUz7/oobZ2OyyA== +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: - bignumber.js "7.2.1" - readable-stream "2.3.6" - safe-buffer "5.1.2" - sqlstring "2.3.1" + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" -nan@~2.3.0: - version "2.3.5" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.3.5.tgz#822a0dc266290ce4cd3a12282ca3e7e364668a08" +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== 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" + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" -nice-try@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" +speakingurl@^14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53" + integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ== -nise@^1.4.5: - version "1.5.0" - resolved "https://registry.yarnpkg.com/nise/-/nise-1.5.0.tgz#d03ea0e6c1b75c638015aa3585eddc132949a50d" - integrity sha512-Z3sfYEkLFzFmL8KY6xnSJLRxwQwYBjOXi/24lb62ZnZiGA0JUzGGTI6TBIgfCSMIDl9Jlu8SRmHNACLTemDHww== +specificity@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" + integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== + +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: - "@sinonjs/formatio" "^3.1.0" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - lolex "^4.1.0" - path-to-regexp "^1.7.0" + extend-shallow "^3.0.0" -node-environment-flags@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" - integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ== +split2@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" + integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" + through2 "^2.0.2" -nodejieba@^2.2.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/nodejieba/-/nodejieba-2.2.5.tgz#821441a683fad25ebd2c8dde1401dd43dbeb027a" +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: - nan "~2.3.0" + through "2" -normalize-package-data@^2.3.2: - version "2.3.6" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff" +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.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@^7.0.0, ssri@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" + figgy-pudding "^3.5.1" + minipass "^3.1.1" -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== +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: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" + minipass "^3.1.1" -normalize-url@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.3.0.tgz#9c49e10fc1876aeb76dba88bf1b2b5d9fa57b2ee" - integrity sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ== +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -npm-run-path@^2.0.0: +stack-utils@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" + integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== dependencies: - path-key "^2.0.0" - -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" + escape-string-regexp "^2.0.0" -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +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== -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" +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: - copy-descriptor "^0.1.0" define-property "^0.2.5" - kind-of "^3.0.3" + object-copy "^0.1.0" -object-keys@^1.0.11, object-keys@^1.0.12: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +"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= -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + integrity sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== + +std-env@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.2.1.tgz#2ffa0fdc9e2263e0004c1211966e960948a40f6b" + integrity sha512-IjYQUinA3lg5re/YMlwlfhqNRTzMZMqE+pezevdcTaHceqx8ngEi1alX9nNCk9Sc81fy1fLDeQoaCzeiW1yBOQ== dependencies: - isobject "^3.0.0" + ci-info "^1.6.0" -object.assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== +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@^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: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" + inherits "~2.0.1" + readable-stream "^2.0.2" -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= +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: - define-properties "^1.1.2" - es-abstract "^1.5.1" + end-of-stream "^1.1.0" + stream-shift "^1.0.0" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" +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: - isobject "^3.0.1" + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" -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= +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-throttle@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" + integrity sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM= dependencies: - wrappy "1" + commander "^2.2.0" + limiter "^1.0.5" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" +stream-to-array@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353" + integrity sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M= dependencies: - mimic-fn "^1.0.0" + any-promise "^1.1.0" -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" +stream-to-promise@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-to-promise/-/stream-to-promise-3.0.0.tgz#8934d66dcbc9189394e8b33200da3bb9611db774" + integrity sha512-h+7wLeFiYegOdgTfTxjRsrT7/Op7grnKEIHWgaO1RTHwcwk7xRreMr3S8XpDfDMesSxzgM2V4CxNCFAGo6ssnA== dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" + any-promise "~1.3.0" + end-of-stream "~1.4.1" + stream-to-array "~2.3.0" -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-argv@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +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: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: +string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + 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" -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" +"string-width@^1.0.2 || 2", string-width@^2.1.0: + 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" -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= +string-width@^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" -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" -p-limit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== dependencies: - p-try "^2.0.0" + define-properties "^1.1.3" + es-abstract "^1.17.5" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" +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: - p-limit "^2.0.0" + safe-buffer "~5.1.0" -p-timeout@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.0.tgz#9820f99434c5817868b4f34809ee5291660d5b6c" +stringify-entities@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.0.1.tgz#32154b91286ab0869ab2c07696223bd23b6dbfc0" + integrity sha512-Lsk3ISA2++eJYqBMPKcr/8eby1I6L0gP0NlxF8Zja6c05yr/yCYyb2c9PwXjd08Ib3If1vn1rbs1H5ZtVuOfvQ== dependencies: - p-finally "^1.0.0" - -p-try@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.2" + is-hexadecimal "^1.0.0" -p-try@^2.1.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== - -package-json@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.4.0.tgz#4f626976604f4a9a41723ce1792b204a60b1b61e" - integrity sha512-bd1T8OBG7hcvMd9c/udgv6u5v9wISP3Oyl9Cm7Weop8EFwrtcQDnS2sb6zhwqus2WslSr5wSTIPiTTpxxmPm7Q== +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: - got "^9.6.0" - registry-auth-token "^3.4.0" - registry-url "^5.0.0" - semver "^6.1.1" + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" -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== +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: - callsites "^3.0.0" + ansi-regex "^2.0.0" -parse-json@^4.0.0: +strip-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + ansi-regex "^3.0.0" -parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" + ansi-regex "^4.1.0" -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" +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" -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" -path-exists@^3.0.0: +strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -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" - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -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" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +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== -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== +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= -path-to-regexp@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - dependencies: - isarray "0.0.1" +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== -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= dependencies: - pify "^3.0.0" + get-stdin "^4.0.1" -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= -pify@^3.0.0: +strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + 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" -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== +strip-json-comments@3.1.0, strip-json-comments@^3.0.1, strip-json-comments@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" + integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== -pinkie-promise@^2.0.0, pinkie-promise@^2.0.1: +strip-json-comments@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +strong-log-transformer@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== dependencies: - pinkie "^2.0.0" + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +style-search@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" + integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= -pinyin@^2.8.3: - version "2.8.3" - resolved "https://registry.yarnpkg.com/pinyin/-/pinyin-2.8.3.tgz#301ccb4358ccfe802523c4bd640a612bee4d7c4b" +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== dependencies: - commander "~1.1.1" - object-assign "^4.0.1" - optionalDependencies: - nodejieba "^2.2.1" + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.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" +stylelint-config-prettier@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/stylelint-config-prettier/-/stylelint-config-prettier-8.0.2.tgz#da9de33da4c56893cbe7e26df239a7374045e14e" + integrity sha512-TN1l93iVTXpF9NJstlvP7nOu9zY2k+mN0NSFQ/VEGz15ZIP9ohdDZTtCWHs5LjctAhSAzaILULGbgiM0ItId3A== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +stylelint-config-recommended@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz#e0e547434016c5539fe2650afd58049a2fd1d657" + integrity sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ== -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" +stylelint-config-standard@^20.0.0: + version "20.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-20.0.0.tgz#06135090c9e064befee3d594289f50e295b5e20d" + integrity sha512-IB2iFdzOTA/zS4jSVav6z+wGtin08qfj+YyExHB3LF9lnouQht//YyB0KZq9gGz5HNPkddHOzcY8HsUey6ZUlA== + dependencies: + stylelint-config-recommended "^3.0.0" -prepend-http@^2.0.0: +stylelint-prettier@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/stylelint-prettier/-/stylelint-prettier-1.1.2.tgz#2b19abe40789c380bffee3d4267c413d981a86ea" + integrity sha512-8QZ+EtBpMCXYB6cY0hNE3aCDKMySIx4Q8/malLaqgU/KXXa6Cj2KK8ulG1AJvUMD5XSSP8rOotqaCzR/BW6qAA== + dependencies: + prettier-linter-helpers "^1.0.0" + +stylelint-scss@^3.17.2: + version "3.18.0" + resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-3.18.0.tgz#8f06371c223909bf3f62e839548af1badeed31e9" + integrity sha512-LD7+hv/6/ApNGt7+nR/50ft7cezKP2HM5rI8avIdGaUWre3xlHfV4jKO/DRZhscfuN+Ewy9FMhcTq0CcS0C/SA== + dependencies: + lodash "^4.17.15" + postcss-media-query-parser "^0.2.3" + postcss-resolve-nested-selector "^0.1.1" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +stylelint@^13.6.0: + version "13.6.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.6.1.tgz#cc1d76338116d55e8ff2be94c4a4386c1239b878" + integrity sha512-XyvKyNE7eyrqkuZ85Citd/Uv3ljGiuYHC6UiztTR6sWS9rza8j3UeQv/eGcQS9NZz/imiC4GKdk1EVL3wst5vw== + dependencies: + "@stylelint/postcss-css-in-js" "^0.37.1" + "@stylelint/postcss-markdown" "^0.36.1" + autoprefixer "^9.8.0" + balanced-match "^1.0.0" + chalk "^4.1.0" + cosmiconfig "^6.0.0" + debug "^4.1.1" + execall "^2.0.0" + file-entry-cache "^5.0.1" + get-stdin "^8.0.0" + global-modules "^2.0.0" + globby "^11.0.1" + globjoin "^0.1.4" + html-tags "^3.1.0" + ignore "^5.1.8" + import-lazy "^4.0.0" + imurmurhash "^0.1.4" + known-css-properties "^0.19.0" + leven "^3.1.0" + lodash "^4.17.15" + log-symbols "^4.0.0" + mathml-tag-names "^2.1.3" + meow "^7.0.1" + micromatch "^4.0.2" + normalize-selector "^0.2.0" + postcss "^7.0.32" + postcss-html "^0.36.0" + postcss-less "^3.1.4" + postcss-media-query-parser "^0.2.3" + postcss-reporter "^6.0.1" + postcss-resolve-nested-selector "^0.1.1" + postcss-safe-parser "^4.0.2" + postcss-sass "^0.4.4" + postcss-scss "^2.1.1" + postcss-selector-parser "^6.0.2" + postcss-syntax "^0.36.2" + postcss-value-parser "^4.1.0" + resolve-from "^5.0.0" + slash "^3.0.0" + specificity "^0.4.1" + string-width "^4.2.0" + strip-ansi "^6.0.0" + style-search "^0.1.0" + sugarss "^2.0.0" + svg-tags "^1.0.0" + table "^5.4.6" + v8-compile-cache "^2.1.1" + write-file-atomic "^3.0.3" + +sugarss@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -pretty-bytes@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.1.0.tgz#6237ecfbdc6525beaef4de722cc60a58ae0e6c6d" - -pretty-bytes@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.2.0.tgz#96c92c6e95a0b35059253fb33c03e260d40f5a1f" - integrity sha512-ujANBhiUsl9AhREUDUEY1GPOharMGm8x8juS7qOHybcLi7XsKfrYQ88hSly1l2i0klXHTDYrlL8ihMCG55Dc3w== - -process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d" + integrity sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ== + dependencies: + postcss "^7.0.2" -process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" +superagent@^3.8.3: + version "3.8.3" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" + integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== + dependencies: + component-emitter "^1.2.0" + cookiejar "^2.1.0" + debug "^3.1.0" + extend "^3.0.0" + form-data "^2.3.1" + formidable "^1.2.0" + methods "^1.1.1" + mime "^1.4.1" + qs "^6.5.1" + readable-stream "^2.3.5" + +supertest@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/supertest/-/supertest-4.0.2.tgz#c2234dbdd6dc79b6f15b99c8d6577b90e4ce3f36" + integrity sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ== + dependencies: + methods "^1.1.2" + superagent "^3.8.3" -progress@^2.0.0: +supports-color@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -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== +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + has-flag "^3.0.0" -rc@^1.1.6: - version "1.2.2" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" +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: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" + has-flag "^3.0.0" -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" + has-flag "^4.0.0" -read-chunk@^2.1.0: +supports-hyperlinks@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" + 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: - pify "^3.0.0" - safe-buffer "^5.1.1" + has-flag "^4.0.0" + supports-color "^7.0.0" -read-chunk@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-3.2.0.tgz#2984afe78ca9bfbbdb74b19387bf9e86289c16ca" - integrity sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ== +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== dependencies: - pify "^4.0.1" - with-open-file "^0.1.6" + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" +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== + +table@^5.2.3, table@^5.4.6: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" -read-pkg-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-5.0.0.tgz#b6a6741cb144ed3610554f40162aa07a6db621b8" - integrity sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg== +tapable@^0.1.8: + version "0.1.10" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" + integrity sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q= + +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: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" + integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg== dependencies: - find-up "^3.0.0" - read-pkg "^5.0.0" + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.0.0" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" +tar-stream@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.3.tgz#1e2022559221b7866161660f118255e20fa79e41" + integrity sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA== dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" + bl "^4.0.1" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" -read-pkg@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== +tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +tar@^6.0.0, tar@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" + integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.0" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= -"readable-stream@2 || 3": +temp-write@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" + integrity sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI= dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" + graceful-fs "^4.1.2" + is-stream "^1.1.0" + make-dir "^1.0.0" + pify "^3.0.0" + temp-dir "^1.0.0" + uuid "^3.0.1" -readable-stream@2.3.6: - version "2.3.6" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" +temp@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.1.tgz#2d666114fafa26966cd4065996d7ceedd4dd4697" + integrity sha512-WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5OeA== 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" + rimraf "~2.6.2" + +term-size@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" + integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== -readable-stream@^2.0.2, readable-stream@^2.1.5: - version "2.2.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816" +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.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" + integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^3.1.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.6.tgz#db0a108bbdd3680d72c9b491fbabad09ba207b99" + integrity sha512-z3HLOOPUHkCNGkeEHqqiMAIy1pjpHwS1o+i6Zn0Ws3EAvHJj46737efNNEvJ0Vx9BdDQM83d56qySDJOSORA0A== + dependencies: + cacache "^15.0.4" + find-cache-dir "^3.3.1" + jest-worker "^26.0.0" + p-limit "^3.0.1" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.8.0" + webpack-sources "^1.4.3" + +terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: + 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: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +tfunk@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" + integrity sha1-OORBT8ZJd9h6/apy+sttKfgve1s= + dependencies: + chalk "^1.1.1" + object-path "^0.9.0" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" +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: - resolve "^1.1.6" + thenify ">= 3.1.0 < 4" -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" +"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: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" + any-promise "^1.0.0" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +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== -registry-auth-token@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== +through2@^2.0.0, through2@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" + readable-stream "~2.3.6" + xtend "~4.0.1" -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== +through2@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" + integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== dependencies: - rc "^1.2.8" + inherits "^2.0.4" + readable-stream "2 || 3" -remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" -replace-ext@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= -replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" +tinyqueue@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" + integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== -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= +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" -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= -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== +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= -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== +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= -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" +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= -resolve@^1.1.6: - version "1.3.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" +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: - path-parse "^1.0.5" + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== -resolve@^1.10.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" - integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== +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: - path-parse "^1.0.6" + is-number "^3.0.0" + repeat-string "^1.6.1" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= +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: - lowercase-keys "^1.0.0" + is-number "^7.0.0" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" +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: - onetime "^2.0.0" - signal-exit "^3.0.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" +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== -rimraf@2.6.3, rimraf@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== +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: - glob "^7.1.3" + psl "^1.1.28" + punycode "^2.1.1" -rimraf@^2.2.8, rimraf@^2.4.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" +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: - glob "^7.0.5" + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" -rimraf@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== dependencies: - glob "^7.0.5" + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" -run-async@^2.0.0, run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" +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: - is-promise "^2.1.0" + punycode "^2.1.0" -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" +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: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + punycode "^2.1.1" -rxjs@^6.1.0: - version "6.3.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" - integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: - tslib "^1.9.0" + punycode "^2.1.1" -rxjs@^6.4.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== - dependencies: - tslib "^1.9.0" +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= -safe-buffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= -safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +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== -safe-regex@^1.1.0: - version "1.1.0" - resolved "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - dependencies: - ret "~0.1.10" +trim-off-newlines@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +trim-trailing-lines@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" + integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== -scoped-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" +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== -"semver@2 || 3 || 4 || 5": - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== -semver@^5.0.3: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" -semver@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +tslib@^1.10.0, tslib@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== -semver@^5.6.0, semver@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +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= -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2: - version "6.2.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" - integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== +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" -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= +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= -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" +twig@^1.15.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/twig/-/twig-1.15.1.tgz#68448ee2d8124adaca92d8d6a145f499f570039a" + integrity sha512-SPGkUM0p7hjgo+y5Dlm/XCSuZe0G3kfcgRPrxkMFln5e8bvQbxDOsia8QEo8xqXfjLR1Emp9FGkVYHya2b8qdA== dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" + "@babel/runtime" "^7.8.4" + locutus "^2.0.11" + minimatch "3.0.x" + walk "2.3.x" -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" + prelude-ls "^1.2.1" -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" +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: - shebang-regex "^1.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" + prelude-ls "~1.1.2" -shelljs@^0.8.0: - version "0.8.1" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.1.tgz#729e038c413a2254c4078b95ed46e0397154a9f1" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.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== -shelljs@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" - integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" +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== -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +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== -sinon@^6.1.4: - version "6.3.5" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-6.3.5.tgz#0f6d6a5b4ebaad1f6e8e019395542d1d02c144a0" - integrity sha512-xgoZ2gKjyVRcF08RrIQc+srnSyY1JDJtxu3Nsz07j1ffjgXoY6uPLf/qja6nDBZgzYYEovVkFryw2+KiZz11xQ== - dependencies: - "@sinonjs/commons" "^1.0.2" - "@sinonjs/formatio" "^3.0.0" - "@sinonjs/samsam" "^2.1.2" - diff "^3.5.0" - lodash.get "^4.4.2" - lolex "^2.7.5" - nise "^1.4.5" - supports-color "^5.5.0" - type-detect "^4.0.8" +type-fest@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +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== -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +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== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" + media-typer "0.3.0" + mime-types "~2.1.24" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" +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: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" + is-typedarray "^1.0.0" -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - dependencies: - kind-of "^3.2.0" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - 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" +ua-parser-js@0.7.17: + version "0.7.17" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" + integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g== -source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" +uglify-js@^3.1.4: + version "3.10.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.0.tgz#397a7e6e31ce820bfd1cb55b804ee140c587a9e7" + integrity sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA== -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" +uid-number@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" +umask@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= + +unbzip2-stream@^1.3.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== dependencies: - spdx-license-ids "^1.0.2" + buffer "^5.2.1" + through "^2.3.8" -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" +underscore@~1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" + integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ= -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +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" -speakingurl@^14.0.1: - version "14.0.1" - resolved "https://registry.yarnpkg.com/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53" +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== -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" +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: - extend-shallow "^3.0.0" + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" +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== -sqlstring@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" +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== -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" +unified@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.0.0.tgz#12b099f97ee8b36792dbad13d278ee2f696eed1d" + integrity sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ== dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" + 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" -string-template@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" +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" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +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: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + unique-slug "^2.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.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== +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: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + imurmurhash "^0.1.4" -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + crypto-random-string "^2.0.0" -string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== +unist-util-find-all-after@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz#95cc62f48812d879b4685a0512bf1b838da50e9a" + integrity sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw== dependencies: - safe-buffer "~5.1.0" + unist-util-is "^4.0.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" +unist-util-is@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.2.tgz#c7d1341188aa9ce5b3cff538958de9895f14a5de" + integrity sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ== -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" +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: - safe-buffer "~5.1.0" + unist-util-visit "^2.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" +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: - ansi-regex "^2.0.0" + "@types/unist" "^2.0.2" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" +unist-util-visit-parents@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz#d4076af3011739c71d2ce99d05de37d545f4351d" + integrity sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g== dependencies: - ansi-regex "^3.0.0" + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" -strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +unist-util-visit@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.2.tgz#3843782a517de3d2357b4c193b24af2d9366afb7" + integrity sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ== dependencies: - ansi-regex "^4.1.0" + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" -strip-bom-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" +universal-user-agent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" + integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== dependencies: - first-chunk-stream "^2.0.0" - strip-bom "^2.0.0" + os-name "^3.1.0" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" +universal-user-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" + integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== dependencies: - is-utf8 "^0.2.0" + os-name "^3.1.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +universalify@^0.1.0, universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -strip-eof@^1.0.0: +universalify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== -strip-json-comments@2.0.1, 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" +unminified-webpack-plugin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unminified-webpack-plugin/-/unminified-webpack-plugin-2.0.0.tgz#9cd9c3f420003e968d6ed5ea365085be5e72df14" + integrity sha512-Um2Yw2OfAhRuIXC9G3CDlR2Df1TkYRihwS4QEuQs5qe/nq+l1OEH+Getq9OjHspqtjR+e09m7rUQWi5fNfYj4g== -strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -supports-color@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" - integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +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-flag "^3.0.0" + has-value "^0.3.1" + isobject "^3.0.0" -supports-color@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.0.tgz#ad986dc7eb2315d009b4d77c8169c2231a684037" +upath@^1.1.1, upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-notifier@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.0.tgz#4866b98c3bc5b5473c020b1250583628f9a328f3" + integrity sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew== dependencies: - has-flag "^2.0.0" + boxen "^4.2.0" + chalk "^3.0.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.3.1" + is-npm "^4.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" + pupa "^2.0.1" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" -supports-color@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: - has-flag "^3.0.0" + punycode "^2.1.0" -supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +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-loader@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.0.tgz#c7d6b0d6b0fccd51ab3ffc58a78d32b8d89a7be2" + integrity sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw== dependencies: - has-flag "^3.0.0" + loader-utils "^2.0.0" + mime-types "^2.1.26" + schema-utils "^2.6.5" -table@^5.2.3: - version "5.4.1" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.1.tgz#0691ae2ebe8259858efb63e550b6d5f9300171e8" - integrity sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w== +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= dependencies: - ajv "^6.9.1" - lodash "^4.17.11" - slice-ansi "^2.1.0" - string-width "^3.0.0" + prepend-http "^2.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" +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== dependencies: - execa "^0.7.0" + querystringify "^2.1.1" + requires-port "^1.0.0" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +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" -textextensions@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.4.0.tgz#6a143a985464384cc2cff11aea448cd5b018e72b" +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== -through2@^2.0.0, through2@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util-promisify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" + object.getownpropertydescriptors "^2.0.3" -through2@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== dependencies: - readable-stream "2 || 3" + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" +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" -tmp@^0.0.31: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" +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: - os-tmpdir "~1.0.1" + inherits "2.0.3" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== + +v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +v8-to-istanbul@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" + integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== dependencies: - os-tmpdir "~1.0.2" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" -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" +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: + 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: - kind-of "^3.0.2" + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== +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" -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" +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +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: - is-number "^3.0.0" - repeat-string "^1.6.1" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.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" +vfile-location@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.0.1.tgz#d78677c3546de0f7cd977544c367266764d31bb3" + integrity sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ== + +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: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" -tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== +vfile@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.1.1.tgz#282d28cebb609183ac51703001bc18b3e3f17de9" + integrity sha512-lRjkpyDGjVlBA7cDQhQ+gNcvB1BGaTHYuSOcY3S7OhDmBtnzX95FhtZZDecSTDm6aajFymyve6S5DN4ZHGezdQ== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + replace-ext "1.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" +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== + +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: - prelude-ls "~1.1.2" + browser-process-hrtime "^1.0.0" -type-detect@4.0.8, 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== +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" -type-fest@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== +wait-on@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-3.3.0.tgz#9940981d047a72a9544a97b8b5fca45b2170a082" + integrity sha512-97dEuUapx4+Y12aknWZn7D25kkjMk16PbWoYzpSdA8bYpVfS6hpl2a2pOWZ3c+Tyt3/i4/pglyZctG3J4V1hWQ== + dependencies: + "@hapi/joi" "^15.0.3" + core-js "^2.6.5" + minimist "^1.2.0" + request "^2.88.0" + rx "^4.1.0" -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== +wait-port@^0.2.7: + version "0.2.9" + resolved "https://registry.yarnpkg.com/wait-port/-/wait-port-0.2.9.tgz#3905cf271b5dbe37a85c03b85b418b81cb24ee55" + integrity sha512-hQ/cVKsNqGZ/UbZB/oakOGFqic00YAMM5/PEj3Bt4vKarv2jWIWzDbqlwT94qMs/exAQAsvMOq99sZblV92zxQ== + dependencies: + chalk "^2.4.2" + commander "^3.0.2" + debug "^4.1.1" + +walk@2.3.x: + version "2.3.14" + resolved "https://registry.yarnpkg.com/walk/-/walk-2.3.14.tgz#60ec8631cfd23276ae1e7363ce11d626452e1ef3" + integrity sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg== + dependencies: + foreachasync "^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" -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" + chokidar "^2.1.8" -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" +watchpack@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" + integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== dependencies: - crypto-random-string "^1.0.0" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.0" + watchpack-chokidar2 "^2.0.0" -universalify@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778" +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" +wcwidth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= dependencies: - has-value "^0.3.1" - isobject "^3.0.0" + defaults "^1.0.3" -untildify@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.2.tgz#7f1f302055b3fea0f3e81dc78eb36766cb65e3f1" +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== -untildify@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" - integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA== +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== -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" +webidl-conversions@^6.0.0, 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== -update-notifier@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.1.tgz#78ecb68b915e2fd1be9f767f6e298ce87b736250" - integrity sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ== +webpack-bundle-analyzer@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16" + integrity sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw== dependencies: - boxen "^3.0.0" - chalk "^2.0.1" - configstore "^4.0.0" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.1.0" - is-npm "^3.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" + acorn "^7.1.1" + acorn-walk "^7.1.1" + bfj "^6.1.1" + chalk "^2.4.1" + commander "^2.18.0" + ejs "^2.6.1" + express "^4.16.3" + filesize "^3.6.1" + gzip-size "^5.0.0" + lodash "^4.17.15" + mkdirp "^0.5.1" + opener "^1.5.1" + ws "^6.0.0" -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== +webpack-chain@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.4.0.tgz#22f0b27b6a9bc9ee3cba4f9e6513cf66394034e2" + integrity sha512-f97PYqxU+9/u0IUqp/ekAHRhBD1IQwhBv3wlJo2nvyELpr2vNnUqO3XQEk+qneg0uWGP54iciotszpjfnEExFA== 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" + deepmerge "^1.5.2" + javascript-stringify "^2.0.1" -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== dependencies: - prepend-http "^1.0.1" + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-fix-style-only-entries@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/webpack-fix-style-only-entries/-/webpack-fix-style-only-entries-0.5.1.tgz#89d7eb4c2833a9c25d9eb5d64cc938e72dbaa041" + integrity sha512-G4TBoc5JvIVNR0GXG+t314V4AqpqLJuApX7aDNTZl8yhXojAXCwJXKQeF4SF65UpP/bjrvptmHLPmdA+aGUZMw== -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= +webpack-hot-middleware@^2.25.0: + version "2.25.0" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" + integrity sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA== dependencies: - prepend-http "^2.0.0" + ansi-html "0.0.7" + html-entities "^1.2.0" + querystring "^0.2.0" + strip-ansi "^3.0.0" -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" +webpack-manifest-plugin@3.0.0-rc.0: + version "3.0.0-rc.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-3.0.0-rc.0.tgz#d488cc34d9509aa4ffcf98eee8559d9106195e2a" + integrity sha512-KL4W5wh/ZnYF1pIzK/beFSgPPINbqD/oQeVS/5YwiZX486wcyZ+ZfeQZ1/8LfxHFG/s27G2hGcwkQ/H/amQCfQ== + dependencies: + fs-extra "^8.1.0" + lodash "^4" + tapable "^1.1.3" -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + 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.43.0: + version "4.43.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" + integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== + 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.1.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.6.1" + webpack-sources "^1.4.1" + +webpackbar@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-4.0.0.tgz#ee7a87f16077505b5720551af413c8ecd5b1f780" + integrity sha512-k1qRoSL/3BVuINzngj09nIwreD8wxV4grcuhHTD8VJgUbGcy8lQSPqv+bM00B7F+PffwIsQ8ISd4mIwRbr23eQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + consola "^2.10.0" + figures "^3.0.0" + pretty-time "^1.1.0" + std-env "^2.2.1" + text-table "^0.2.0" + wrap-ansi "^6.0.0" -v8-compile-cache@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" -vinyl-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +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: - graceful-fs "^4.1.2" - pify "^2.3.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - strip-bom-stream "^2.0.0" - vinyl "^1.1.0" + iconv-lite "0.4.24" -vinyl@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" +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: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" -vinyl@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.1.tgz#1c3b4931e7ac4c1efee743f3b91a74c094407bb6" +whatwg-url@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" + integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== dependencies: - clone "^1.0.0" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - is-stream "^1.1.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^5.0.0" -vinyl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== +whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= 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@1.3.1: +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@^1.2.12, which@^1.2.9, which@^1.3.1: 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@^1.2.9: - version "1.2.12" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" +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 "^1.1.1" + isexe "^2.0.0" -wide-align@1.1.3: +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== +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: - string-width "^2.1.1" + string-width "^4.0.0" -with-open-file@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/with-open-file/-/with-open-file-0.1.6.tgz#0bc178ecab75f6baac8ae11c85e07445d690ea50" - integrity sha512-SQS05JekbtwQSgCYlBsZn/+m2gpn4zWsqpCYIrCHva0+ojXcnmUEPsBN6Ipoz3vmY/81k5PvYEWSxER2g4BTqA== +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= + +windows-release@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.1.tgz#cb4e80385f8550f709727287bf71035e209c4ace" + integrity sha512-Pngk/RDCaI/DkuHPlGTdIkDiTAnAkyMjoQMZqRsxydNl1qGXNIoZrB7RK8g53F2tEgQBMqQJHQdYZuQEEAu54A== dependencies: - p-finally "^1.0.0" - p-try "^2.1.0" - pify "^4.0.1" + execa "^1.0.0" + +word-wrap@^1.2.3, 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== -wordwrap@~1.0.0: +wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +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@^2.0.0: version "2.1.0" @@ -3611,18 +14990,80 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.0.0, 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" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" +write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: + 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" + +write-json-file@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" + integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8= + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + pify "^3.0.0" + sort-keys "^2.0.0" + write-file-atomic "^2.0.0" + +write-json-file@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.15" + make-dir "^2.1.0" + pify "^4.0.1" + sort-keys "^2.0.0" + write-file-atomic "^2.4.2" + +write-pkg@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" + integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== + dependencies: + sort-keys "^2.0.0" + write-json-file "^2.2.0" + write@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" @@ -3630,227 +15071,252 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -xdg-basedir@^3.0.0: +ws@^6.0.0, ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.2.3: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + +ws@^7.4.6: + version "7.5.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" + integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== + +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@~6.1.0: + version "6.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" + integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== + dependencies: + async-limiter "~1.0.0" + +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xml-name-validator@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xtend@~4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" +xml@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= + +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== + +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= + +xregexp@^4.2.4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + +xtend@^4.0.0, xtend@^4.0.1, 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@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^2.0.0: +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.0, yallist@^3.0.2, yallist@^3.0.3: + 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.7.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" - integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.0.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== +yargs-parser@^18.1.1, 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-unparser@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.5.0.tgz#f2bb2a7e83cbc87bb95c8e572828a06c9add6e0d" - integrity sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw== +yargs-parser@^4.1.0, yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw= dependencies: - flat "^4.1.0" - lodash "^4.17.11" - yargs "^12.0.5" + camelcase "^3.0.0" + +yargs@6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" + integrity sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^4.1.0" + +yargs@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" -yargs@13.2.2: - version "13.2.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993" - integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== +yargs@^13.0.0, yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: - cliui "^4.0.0" + cliui "^5.0.0" find-up "^3.0.0" get-caller-file "^2.0.1" - os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.0.0" + yargs-parser "^13.1.2" -yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== +yargs@^14.2.2: + version "14.2.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== dependencies: - cliui "^4.0.0" + cliui "^5.0.0" decamelize "^1.2.0" find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^2.0.0" + string-width "^3.0.0" which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yeoman-assert@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yeoman-assert/-/yeoman-assert-3.1.1.tgz#9f6fa0ecba7dd007c40f579668cb5dda18c79343" - integrity sha512-bCuLb/j/WzpvrJZCTdJJLFzm7KK8IYQJ3+dF9dYtNs2CUYyezFJDuULiZ2neM4eqjf45GN1KH/MzCTT3i90wUQ== - -yeoman-environment@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.5.tgz#84f22bafa84088971fe99ea85f654a3a3dd2b693" - dependencies: - chalk "^2.1.0" - debug "^3.1.0" - diff "^3.3.1" - escape-string-regexp "^1.0.2" - globby "^6.1.0" - grouped-queue "^0.3.3" - inquirer "^3.3.0" - is-scoped "^1.0.0" - lodash "^4.17.4" - log-symbols "^2.1.0" - mem-fs "^1.1.0" - text-table "^0.2.0" - untildify "^3.0.2" - -yeoman-environment@^2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.3.4.tgz#ae156147a1b85de939366e5438b00cb3eb54c3e9" - integrity sha512-KLxE5ft/74Qj7h3AsQZv8G6MEEHYJwmD5F99nfOVaep3rBzCtbrJKkdqWc7bDV141Nr8UZZsIXmzc3IcCm6E2w== - dependencies: - chalk "^2.4.1" - cross-spawn "^6.0.5" - debug "^3.1.0" - diff "^3.5.0" - escape-string-regexp "^1.0.2" - globby "^8.0.1" - grouped-queue "^0.3.3" - inquirer "^6.0.0" - is-scoped "^1.0.0" - lodash "^4.17.10" - log-symbols "^2.2.0" - mem-fs "^1.1.0" - strip-ansi "^4.0.0" - text-table "^0.2.0" - untildify "^3.0.3" + y18n "^4.0.0" + yargs-parser "^15.0.1" -yeoman-environment@^2.3.4: - version "2.4.0" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.4.0.tgz#4829445dc1306b02d9f5f7027cd224bf77a8224d" - integrity sha512-SsvoL0RNAFIX69eFxkUhwKUN2hG1UwUjxrcP+T2ytwdhqC/kHdnFOH2SXdtSN1Ju4aO4xuimmzfRoheYY88RuA== +yargs@^15.0.0: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== dependencies: - chalk "^2.4.1" - cross-spawn "^6.0.5" - debug "^3.1.0" - diff "^3.5.0" - escape-string-regexp "^1.0.2" - globby "^8.0.1" - grouped-queue "^0.3.3" - inquirer "^6.0.0" - is-scoped "^1.0.0" - lodash "^4.17.10" - log-symbols "^2.2.0" - mem-fs "^1.1.0" - strip-ansi "^4.0.0" - text-table "^0.2.0" - untildify "^3.0.3" + 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.1" -yeoman-generator@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-3.1.1.tgz#60cea712618f65ddefd9569a58bb71d2e38d377c" +yargs@^15.3.1: + version "15.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.0.tgz#53949fb768309bac1843de9b17b80051e9805ec2" + integrity sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw== dependencies: - async "^2.6.0" - chalk "^2.3.0" - cli-table "^0.3.1" - cross-spawn "^6.0.5" - dargs "^6.0.0" - dateformat "^3.0.3" - debug "^3.1.0" - detect-conflict "^1.0.0" - error "^7.0.2" - find-up "^3.0.0" - github-username "^4.0.0" - istextorbinary "^2.2.1" - lodash "^4.17.10" - make-dir "^1.1.0" - mem-fs-editor "^5.0.0" - minimist "^1.2.0" - pretty-bytes "^5.1.0" - read-chunk "^2.1.0" - read-pkg-up "^4.0.0" - rimraf "^2.6.2" - run-async "^2.0.0" - shelljs "^0.8.0" - text-table "^0.2.0" - through2 "^2.0.0" - yeoman-environment "^2.0.5" + cliui "^6.0.0" + decamelize "^3.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" -yeoman-generator@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-4.0.1.tgz#6454056e451ebdfe4ac69927343ae37086bbecb0" - integrity sha512-QFSHcJHfDwqNdcr5RPSCPLnRzVpPuDWb6By2Uz77YByqBqvR/r9QGBucCl58hs5QJl4NFgLFgIHZoNDCJP1byA== +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= dependencies: - async "^2.6.2" - chalk "^2.4.2" - cli-table "^0.3.1" - cross-spawn "^6.0.5" - dargs "^6.1.0" - dateformat "^3.0.3" - debug "^4.1.1" - detect-conflict "^1.0.0" - error "^7.0.2" - find-up "^3.0.0" - github-username "^3.0.0" - istextorbinary "^2.5.1" - lodash "^4.17.11" - make-dir "^3.0.0" - mem-fs-editor "^6.0.0" - minimist "^1.2.0" - pretty-bytes "^5.2.0" - read-chunk "^3.2.0" - read-pkg-up "^5.0.0" - rimraf "^2.6.3" - run-async "^2.0.0" - shelljs "^0.8.3" - text-table "^0.2.0" - through2 "^3.0.1" - yeoman-environment "^2.3.4" + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" -yeoman-test@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yeoman-test/-/yeoman-test-2.0.0.tgz#51c8705528fb1defc42a3ff272b6ff20174fd7d6" - integrity sha512-VbwiyvPXDY7pjtIKI3GV6M1W1tmV0B7ijJkb/L28rr92pTxnQD+1FzOXgZRPzqzm1hhpqovgMPJOwIfcXSDWHg== - dependencies: - inquirer "^6.0.0" - lodash "^4.17.10" - mkdirp "^0.5.1" - pinkie-promise "^2.0.1" - rimraf "^2.4.4" - sinon "^6.1.4" - yeoman-environment "^2.3.0" - yeoman-generator "^3.1.1" +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=

    S{rxSto*xV@(j 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⪻gl-Do-EIXS$_n{K=CW=iYty^pmE?*Pz|iUAsrNAG&(+ z$>U?^{&McUuCh!G;|(nagx^MPoPTfEr>gpwFOl_|iBu%&hengFG3v_l znx^d0v75O=O7zTS8^4sM3Z;*Cl7^dQvE$D63FjRXqoK5h~DR;}f=-{1f6 zwLuRCc-hJ}e&~0&v7di_o)1}JCH|s}#)U{LWnR&6OQK!p5W^*xxvU68v&CG%q6XIx z7m?;qk(+h945orEOG2?l28Ss>w_W!3ZUKr!iKNn$@LAbL;Ny{JmDREaW2qZc%(!zz zeT2_4*Bs=4A{$k)2s;upr7e-ZK@4*8w5CNF(8EK0@tdvH!7fg7e)!!V{&3EBzVl6D zgErbvQUDhjfZa%DE|x^!bFC-lc~BgkXsbCa5)a1GN(a7 z8JAB&V&wuN@f($PMZ#zCBN18F;tskYa8fPLkWgf*OdL!^no%T$h?FdQ`3D_k+bGwP zryG!p?Enko1ea5UWBcS->pi%ybs6EGtgM^AYz++$exbf9H=juVsF6uNc1_C0P=DO* zt$qA*=6Cv7xzN)!c;G-r%Ig!aw?~Z(I@kN#sw{m~X6sm4>+X(C$vSIaU`|N8)mo{x zur||{ZzaoEpPW^dlwV_&rJJ<{suLk`En(V zi08QqsdIW49Z)<85yh0gM)!aHOJ?}y2@wGwi*?8=ZaiLB_b>W!j^BQZmK-vRJbCsw zj^bf)A-m;Ep=LMd2YLziQDm=9RmIv(HFGmnWp5#43SWj%ab1)q+7KqJoSZ^=8?0Ks zj5$%|Y~N5Cs#^YCJjEpoWp)%~D2A%OV)#4UegQ=u!NfT)@|;VMi<{TwJNt>B|Ne)& zZ$CVC_5R&IJ^VwP2ZJNcO^wZsmzo}*IB|~ndH1~w_dopb{?!{a*obK2xig=fdeqqJ z=0=s}vR>Vn^xD092PR+HRk&r>YvVa7$37rWdG~|AeDcX(K<%Sl_y2TZys7K)&yQYw zvaLJo(Vs3{G-hj=uyv5$zc2q%t}gdC^U`orXvuM1xIrHio_{H;H9NTm6^lm1_1@1- zmhr{bu&PZOZJ0%`gO8O4eN?;1#I2VVr)q;38owqH~pME_dlbiU59C) z!Z7di-uk=q?U$4GT<{?{^kMbf^5uv`{_uzRjXqEbLv9wCFo7ZxijWZ~itC0+!!|V* zR13i)C2Td(Lf-9eH-#3(#BE5)GAKvyFR4@19z@w!qCFqh6sRT~fud51U=5Zzrlux? zmk1OYJP{#97b$b|z-I&V#BS5A1&Z@lPntJHY`QJ+!1VVfxe-3wNs|lhsvGI$nc<pupDSMMgob?dvTLMYyd?bxMX*lY~f=@TRKOi=s?PjRbI@j#tkJjH4hKv>TrJ~uhc zZFb&OmHJu`MckaL2a3SJSgWnJY}D8UqHv+$RMk!58@NjXx54tA27vL8{uofCcn zK;*z6iwG1|wS}A_K{M;pNp`xCiu4M$^K)?XbHL3s5SEjytVN5**jve=1r*z`Dx_O# zX+-IuqlJi!rE~Cb+Skx^L|q!e6+c?UNmwjc=V-s%v6MaZyGj?=tz>yX0E!SuptuR0G=X9oCF;)LwK-M%`@}8l&4^R>H=u|K3%^VF zEJpeHyCx`hUwxuHMbyg0NWac>Hu$AyCfTF4xj2IrC`VQeqXJvw-b5D|m4 zY3GE93cr-CQE3Bf~%o_nFi2BZv? zw$lih5wo!T&cnXG(MJPK+I#&YBV%I|luDlVy|~u*3X!lTx+zP1lTb3sK6ZHM&auX0 z?I*|goxby(-|xNlC$^)$eECR7`fPOg<*VVM@}}f_r|*o1MV5~~9=?#8;NSsJk>*3l zJg@oY!d|z;tAE+)OiXWW>ufXIA;>dzuHgnnX*iFWY|f5H0-5pk9m0Z>>zvb zskmIu;!l=XH7-$AbifD{*R3oGm4OoiSm7d2G`Hi(6;u?zQK;y-dpA9S^ZgYg zDZQAWNO6Gxx=e{AY(taS${r}vIFIMA7NG_KMGqgKC{(nzq3uwmHKdB8RK-NFLwzAk zBq565C{W~!H`+Q-9h<#DJjK=X1d5a1x0o?yhWi(%OmU;V*#TbAuwv=pW<6z|Wi7*T z5}Z}mygy~8`xF9)=_FO$q=;*`O!^e2a2jPh+k2n??992FI%f5D-@SiT?59`nU!|*v zu$SiOE(17n-7cCuOx>qw7k(TWnGjc>o4ErdV&q>rUHjT^b?gF)T8~2zQB2Ko+oHK0 zOavR3V5&jmDJm#3lWF2$E>Mi*nb=yL5zm0O8Uj8&z^KHnlHCjVg4ASqz3lK1ohi}JT4#AnKBOatdyhta5v@doce?S~g*eVWUZ56ETM2nh`i~%wZX%b`d zG53qpzlI+ndyt&zN@Bx3TMi`~Ec5C7va=ejl46e?JF>{XSoXH=`{3BVPxdvI)`d5O z6}2`XyIk3nn27Rid~Rg}r;Wze%+wlvaX~TjwRtsCW=gCtOwiVLiRA=$p!}nat29(; zF`%fb&Bl&kLvLV3F1ZE4z#KGV0w)8-Sv#k;Rdh$lj7FtEu>vScbMqVpMIvbE2*L0S z1&V|U+zhi-u{|@%>11~>$^5k;i0uf{=9#t_sfK#KW0Io&9>dI;R1} z>3){B%6X&`jms$E)m+~D&<`|PaI-;hNTFJ;d2)s%%dov8Pj5ZG_=i`&xp(i*jh^A* zvyac;X)HWZUR==JGZk$UOpTiy;u0tzijbc7lI;Y z!_gzdJwyF>Mh_45^j{k~Fepyq%i(_XaZXO$ZXdnYe{!t6srcxf!SR^*rqRcbzLT1u zaR6}C9*`mkZ@$?w*)8$@-@b{q9^aRU8Ey-x%ea{p5{~2r4d?Ygy&NBJXA8_h&9ac> z$kdH1e96KGEkAx}0Xku1Tt%(@=+T3XVn>T{AW>sQwMWDun{M80I&kfuP+ArezJ!ZJ z&{BpzasshN%(HRHClGqcf&~?@uDjIO(f1zllWrx?D^G4VnA^rYmgEWb2E1#D~t>ey^x}w6SSnHLp((vemP2L+?ukD zP|?r3OWPZXY7naJ36N16sg%QT6tz-u)fOOG5-XEg!bxd0lnkU6zmi%t90i!Q@R8z+ zlb?f)vxk$jn*+Wg^U$&_-OU4D;yVyobB#JnI_#8=Ck?LzB|D9!pC7vTG8q9Bp>vLi zHkvgIX3E0OFJk!294!P~HuT7vPlY7nnT23aV^)Dxcx>z8J$qfV4*%{~d-mnu5q=& zIeNYF6tOO2n}TAmBo}%?LZAtXQ_syxYXgefsw#a%MRRW_^;t6%Nhq=^*_2%T%dctA zhIv$?kqVp2Xx)}IG|M=3mf?<)yU31@TQ6NTkjm^S!bFu!goF}BuhRH&a#%w%PiF*B z#8aeF?-bdwbSZkky}GhI7j_1xn(vnX9k%^!N3X)5=^4pT8-Lok=}w zXQ28|;37~IBZ8(eajK$XKJ>c}0>PdMidRigJfl#_=RqPj^z2Y;0g8br>p(=1h{^Dx zU+vR(mdedY76P~X3F=6VoMIb{KKn1+{&oxV|8oZ;ES(t+Vq&xa=(hb9&VM)@-FNe}7=HwMo44_tf7 znrHm5moI_hwey$uF0sl=sBdnW=o!5|exfj=acro6JTYb9@c^D;RhN#LCNEdf0Ahc< z#yRoK%&%?OK-rvr6C5Yk%)*`sgs@ac0HdtIWh}7u1cs;}8Lp#yFjOagrMg9w^$#-Phy8rdW(uf;(Ayh7_ypq~ zV`}zGq>f_BBC1(uvls+a`r*0-KV(hpI{q`+F148OneEER%=(8DK)-?F-R`(}qxEd4 zNU2L&6kS{q9c0#c+X|>iQB^785Gtb%=3_~A!wf~KFUh(CQDPJyl`X0&RN%3|(O1gd z3uJEE#>2-(6qIbKoe&8K6b&GNW**|p_vgJo#lqb|RZ1i?qnS4ak8tkHPOZKd*M#>> z=k%GBVbN{MKl9|OGKpn++d2#cDQgC~%?Vwsp~{!yAhmJY#Px%f-Xi3!3)>MS(NNhpm7m=Kbr zV_2jxL{jVWIW3Q9{gDnHuE;*}N#P}IL<2#@0iYv;&>EJ#<~Z5a;2t~Kd3nP^5w9v! zipmUIWEVgwF)KQA`;FQ+6xk`Q?b4q*tYXUixmJC{#2Xg%(Ua z#c!=&N|nXNJH5-#ppWa)0L8?+`p!7L(alNQMQ@YAGPf)>&&7XnKx?C8X=4m_tabO+ zgL`%()5*?JI(y*aQvOTQl44PT6k1e4=Pyw4Q>X|JFaP~qAkZU5=Hz={uy>h!;u8r- z?sEZ(XY#vo7!?!GF!54B94$4Gjzq^jz$_)z{be@G0w|kq&$O;?&O$OoTPHkeM7W zyjfm2F+Mc>aBzY&<T0sXQ)oTbGGHO6~&ZQ!h=@W zq7!2*Z@IsvEHa74O-4vXF%99L@DOj(3u>?eN6|_&bOV_FEp818yvH#6N=9zid0WkPLKx79{gLJ1U|8Sb#O@vy@~ z!hggMoGsmdhAzx+9yaN-@9nIpsO{*Y)WU;*_-_g~y^4T6n6$0#ZQW zo`A5p8eg*7j=XO2njJZk5t)^j-leb4HM$B9m1>TwtIBz%ku}e?p0P|-xcOm}%$3NZmEAL8ZkP+JQ@<&^RFaBQ=L7=9ZW9y(6%;QADk!E!@l}Cz=7`jmtT>r9nPwL89CL6NJ8JdaIPWM0) zqqP))pZR&51$OOD*}vx_s!$;EPV;6QP*6j}tq@DM6uQ>E^Ft^#*Z zxOiX1%T(luO%xRI7I73WOJ?y66KPl!KXDexjydvk$e=fsQtJ62tB!DT3>B!q=~fQm?MoO4jTKBTHl1tc3>9^ zn~jyDxOMA3M7kF3+U&T4gyv$((Xc^5QQV#0?nE8jvt2f0^=uy-AH_uxk6i&2MMB#o zQMQr(aJr8qpQxZHMI9k!5cWfd1t?U6iaw46&npxZlc-BkmI`-8sZBL}i>9|gk(^=< zo}vK3%@QUO8e204!WosG6}L%ZU;YYu{O2MrbBdPtBX3f=Y1?2SJ3%!fNFwhe1D+Q( zj!j`qair`yTAH0(BW0fXCu9chz(<=G*~@%OdRu*No)`CUnlVlXsI0mP6uSkAFj3}A zEy=#R7`l3ys9m^_Z2{DK+)t#jcV**22|}t}3zAz;#Dp~@8|&lP zp>;EnzHZ()yTV!MYBZXl=$DT-%o+xS^xJ05>R@fmrnZRuS@cnFYMa&8o6sU@RWe{5 zQJoYTA_Ao&2eOefJU5m287NK#iftV@P9F!RMM!{o4u5d6K#}^gD9Ca<6>!KrU7A>D zM{m9;lE_6YGC3i4y$OogTPR9(Wwsqdary*KIav;dNS&8QxPoF;LXDj?Li-Ri*sw>> zB?KYs(xaYrjtkb=FR@>_dH0^pd-gXTEv<_V57x-!^!hnJ0fq8UMzQWe3@CmoO#JH~ zKV>Bj77-y-d;%4J%2^mF@-F;XC2Rzfm(TEAHyKBm7;(89Fsd$Y-mdCS8s#LZ9xluy@{Tc+P!9lCz%5<@9VTKA6(^$*^8KH87h_ju&aiI#|h zqS2o5@q6RjOUuj0PYvI`*;L$8vDRfBI@mjguALp)v3>lbd;5QJt?%ido<6$$d}#QZ zlv!xx8G3f7sOjdy6Dbqz6JtYz6NAG*F`*2p+w9`J)DV{iDq--!{ zwT1OcU3PJ--8Mo{Na2wfY2&cM71`tJ*bFQSI)X>|Xyu86SY0a5#pWTmxZ8in|lyb%gjE>2jIPD{Q%qJe7kpQzMjK zq=-T*&I*y9umg&rvi=lr5h!xX5-1WrV;-UOC_+LEjU2Ui$I26%&&A4hU5SSoiW?}I z%$s7#I{_%l?s@6o-tMq}<| z;nXV&(yX2BoYy8CT7f`pQnsHH)D#ciAm9Gq&ZdUNUR0gB(g$sCfx9~P&Y+@%N+AKzS_DEtGHa#3vLHN;z# zCwa^R6<(`UBsWT&jdWurPn4CxQ9g%!1VU4^&jq_#);Kxi8Iq`VvJtPq#&nSQ)xt=d zUil)RY3kY_dWMSb(sLhuo=fBImQ8^j9bIuP zQXQA(#GM@PD8(?PBEkp)#Xy)S>Z|9@oB@j6`OSgUhVw;h#w6Y^axy}VK)wvuu?=?< zq3bp}spwo&O;qt=Fj3MIxvPHtpHM{UX6857M#P0B=DO)3Q4-7wN=?><2oz(&V#{(3 z8jqTUbf0w8BfRJx3yN-JUqkD$qoRk#GXKTj*>U7xBUB7XGC^_89O8G?zZ3N-M8u>^ zQ9Q-JPM!Kkb3&0sjg*?@lzd;>aeiugD+&}rrDPWGa!ys{=L+IylB$H!yeN`6g^Ft5 z463x9oyh)}7QZ-QG$Cl*2nArF2k(81;8zA%FmrLm1V7UwNgdO4MgSpDhmi(g0Q}lAQ^4!dD_}1S_E%vuRM+tH>45iWApA2NEf+E%DyBy|Kc;-aK zc;kd`&UUh5*3#r3Qc{MAk`@RBij2|ll=2jnm>5vRWcZn{#Zy#RWb%$8^vV!;$cP0U zFr*9US=uIhMN#ge+s0k?K;bWegDLM@NCRTJ_=yC|6=ZDgi}8M>$>t2zy^fh*<3+}{ zNEHJ06|iIDE>XBNw>qy{6SskuaE&q2+l#(;z6UtKi$Kegm|JJtRjrY&xU?+si~}z) zP;~Aj2#T<@Rb>_#8X#tcie38dyH|mt_=@F}TL2uJn4v zJ}FqM^@!5ISE<}c^$DH4BB1lm%Q|s_ zB}Exs_1(F2(I(`Yptx+tw6z^Fqo&n&ZHcIW<>U}GREjyUfBem;HpEm(k!=b@(4o88 zNaHrvmex_xTR|Jm&dI>>9HN5f#8sr3W%9YpX9DMd!;jC+p_@;jh+{~gj1xtO4MAs3 z7S|HQ2Ij}zz01@WMC1jPvNuJZNNE+AMfz?k-8%SmOe;stT(h&{Nff?eM!eolR}fo} zoMl(0pqNom6cek{a~iCwXJ(WvthXJ>9Cq@zV@0hQY*JfbZ?!AsC~K1fqQkwMRIz1! z+S`03t7FYrG{w(Ft))fn2ir%6$8Pt$cy;US zFZzo<9v^x*FxZ$}cjd-V&)~D6)~4k7^$WEVV-sVIt-~+-4|~pEwD*JGoTW5PKhDU> zo23_edQR_K;(BisD2`9u9=Ue5hqUFh(X-EvSd}Fh(bCLHQjT9^W(KNDrQ_`A2_UEC zVLknet2cxfG^Ea{-<$M#Y$t~#P{{>9)5$wd z5wrN>w4Zca%$WYQ_1y*$v7seQ3MnQaZsR+2&gs0X@ACCf(nE1K7{@V-1XxJmGD5eT3;wU!bLgGW#7eUJc+(WEZX(A|?Kt+|6i&Hcdl5(5- z28!CaWEE30MHpK{^yH)QtMPIUbqckmMxsU3lydPDb?q-6}@_Ger{yP+779S07WH*O~dsj+V_BBM^{CJ$y1~=FOd4l z-LfxNK!KRq`~pvWK`b0X)&_&PjE$t2F=yhjo-(F{b82ozzW z6#IFtA_G5OxbSjfV(*&#{N9dD!4+}cy=_jKbT56p(JfD#l^vEMOG*n>5|uxG#Z8dYlE$9l$Us0b7# z%P1N!Qbe#VecsoPCYa1E|L8|QI`sQbKDoZTwXwZ@^!e!d7mr^(92uBcIEp*iGZA}( zq~qCv^Cx1mV+xuV7Cj#sdtOw2=i1QGMJqqJ@SDN2=TA|69vSMnGtoLabn5hl3#Z$k z-3j~P&huyF9Y-g|Mn)bz!&6M?GBQERdIX?&^z^+e$W2_ia^cE_3-%#a2!sb%XsBpfJQEAYa1cSGVk2un>Z&uN@f&w}CJ|W6(hFq* zMlNp*sAlGcdzma8&+WCW+Q4F=^zp|c9lpw$Pxm6Vj9h>gcZ`dqW ze>cBk&f4#O;~U>yAJs{iEX^qfi}#eL_~o566HE6X7r%LL?em-Ny3d|AtwS#Zhw?(u zx@X$Silh%eLU7dG+A;?PMfvUoiYPgx{hcJG2a3rORAX=vcM%BkQWF1>bL4Y;Qu2_G&0TS z?c!l)hjM7GuB^t}Ljog>pPcknsRj4YAcv1$!?IwJDPz}@+cc+2XAQQ-4K}K#4ONM; zH34$=G;)ptMXi^2YD44h5|`+Mzxw5G?d=$K*=*&DV31vEMngt)UR8a*o(2n`sNc8O z-pkT`>Dsi8HW7q1tO}$m5TT9iSkork>Nc(aiGm^};4w%E#ad0fmEO?CgWzEBUyX-rxk%zA=H2{Jd}Z#sa>+~X;vW3_K8<{E$h|jk+OKX zC@5mMupfWCFd{xN%YkBai{8=@?Ce(MWT-VHG)21U^s&jwnZ9|+#*m;geL+}utS&y1 zB1;}8CxbVc5tq8y*y?Jqc$9#Q&awsmbn<)RkmTvA!oAUl5GYb*fs1&GQ|V6RV$#-8 zm6kt3MK#l>iq04=qJp7}j;ee3v0{9Qxf;{0s93?tLBeJ;5v3;wCMpAolwE@P#Q{Q$ z->@d9Dxo>D(@EndPe8`1P8&^?lckuoq9Qlk%IOkQzhop;r08M;6ghb4ZxfFIECNjl z4#{hU+#VPnnRxza7(s{E*ozl0208NEQ;yv}Iq>+^wUOb`Z(qJMaDKe7Zm93pt83?X z&_h^Wo_({qab#qoyr}2tu+@qWKj?XQ{?d;gyzYA>U5X>^&)X+PdtRJxe>7BZ5dVT6ctZ#Z{rJhpK)tHh#M2!s+7=9&mX8lcDkz@-_`&#&ja#q@-%s1qo%V zH*5@vDa89r6@(RFICf$JG-X*BH5SupjYdW2n5uSb3KWrU0*lJzhG&vQpM{U4)XWUx z@I1a0I%bLIS-@(HyqKl}kBv$<(Y$^jJcw0oi@%eyfB#1Z_W$A+zdLe(61G6m(+Vfl zBQ)I%MHW}xjW^iJFr~cGOe%8%BHjNMinQY3yGzRs=|sFnQ!p*M9aLvzttpvIYy2&6 z2^4`6?c^ecDNrP<2^6g;c(aySZtWM)YK&m;GISy&bXYp8H=<(;KH^n+4#{1mt@+xt zd6Onh`TTn6xIv8`UDqk^eN~|N)hKEL0GvZd>-5$!Tm0DnM$zrNM(7dEN0`Jht5E(yNKPO*ksomP-V zQg{T4h>(5j8^%g+r*P&`S<&(lp@FYY!Qlfx-}gg1CmU;*aM#qNvZ_SAJ`N~GbZGYi zMQiuDYdWKX*KfhoS|v4QeBRFWY6D3cISG|(nA_CIlnuiA}|7CKnns(`P@0t%c&qQBK~1ZGgk_ScNG&QS1Zl3 zQhlb7-vx#uP(Aj@&W z%G~UNog9)<{WF+?2xC<+$@aYPq?Ic(3mO_5Ib37~S&as92n5R17`3d_{uC4{3;Z;V zS_@E2`!rCXXr>}CH1UuD(uK;vqO$t}M561v6rvRqX-rb7M4+gc2ozN#cc*OF7ceri zE>u)rzpPc&C-mmPL?CF%lj%8@&Ru>SZwiV+Me~g<*W^{0=%NNgZB0B!8HARuU&Tb; zzsgf&0f}qVD4ycb=$$*m!|-h2ESe7e1H)7vZpRD_KfTyLa;K?z^wj9{lPQCJkFTA- zSC}1U)igdH){;CiGLaH=zHiw6!%Kq?AHRNZi5Wla(X)}U)|B@4vFD>>4~I%G4fdQJ zc>a9Hh10`l$4a*ab#>EJ5mJ^KOKNcUX*|W_=(~bLvDI?*;Plo+??XZMSL~M%H6};9 z`p3p+1z|37B+5<;1xM0?4g8L%LdQxzku+l|Cf;XpaU;Jz%4F4^AdmnWEGpx^RXCQO zT7{)z5|5jWM{N00PAH2xQ}ev&KMard^E`7wEy@F7Dpy zXvIFUaNiQ|H&B#`mK>m{sAw9nV@V&sj5ko^T*U8=jr*_=1BkZ5M@zNaG}Hm76A461 z(W{{o87;*iSq4M!Z#5q#0!4q851Lky?vjNMg9G9M4JuF43%>=NTk6QC~CF66>iqoLO zZdn}l5(oGA%<2@@C|c>8BjC>jkXGkLQ@kI zT~d>i13c`)4<2l+F7e6Of8ghPmjpRETYDviM2DvW#a^0@;h0;lFb zxlC|O@qrlB%tVpUA^QdZuhus+pbipIE>bvzhbB{+Z6;qa*LeT_Pb==mS9&DG*G9&! zs4An?*{(KG8&_82P-aZZOm+2TLvnafbVfl~Ol)eRw#um{)7ysDF=A(5e=_E~7S)|7 zKHAWL;~<)8jm0cw(9sM}GD10Tt3-Z`cJQD4h1gkPQHEFU<0nqVpduYOS7Ex;ocRL~ zTUyLe1do_vB9$0S97Tzo(*%d)OF<)WlqT-U_|BamQnHGo)Pw)8f@fz$MXS0PcBj}T z56Kt%IMjAp`e`-R%2XE?SG49pJaw7=MF997E`W+@xU!k9S{LaSQ4Rc3U1jq2Bmr;F zy&KoBKe+Vx;$Z)fOvDY)Vly-}K5+5r%ZFp*6APz~k0KC(ZsJf+OnlzW!ioN~ceoxK zy>h&#Z}`Hc{)aDK_Y4eO1Bp!d^$m|TooJjGYrj4Aba-rZy#H+f(DR8qgCoPwV}cxv zxqc2};hEL*FCfAAqyI9Xc&c^Dp(|IeU$M##n4g@Q1OjQWH;OhXC6!7L$iRJec1#i4 zITT02!c26`z)G;r_(W z7@i`Uq4xHUJ9d0@@CQFQ+1?HoY1v|Vs_cnhY~@<=!_O$y1EOa}g6>B>=RWFNnUVo?}wjJ$dZe9BeqP9P=97w{L+ zPA@1h^*8bv#$y0ud{{E%Oa_((+E`t<4E)s~SXd^ms22Gh>gm+pnT2+8mikk=Gsi_G zZSQWIS%FGSkgazz=LZ!pU*%z71RL)z-+z)%p@lnlNz6&`3?uK? zV+7177h&*_hi{>160v*-MQtFkITs&a>4reFzRWr|ff&oKwp?3Zo9>X#?j{Ex-^_wc zJVl(sY+ZUJ-7c(eb#`#_*p?a|G{2Euge%$A<0v_J*XR%(dH>W95{hEdRgK9|3-02( zF2x9`o=hdDs3!e@qG|)nCzI) zXx6UL$SF?s;W&^LiR4^~A|;#*4))mQobI$VxKlM6Oc!I4Wi=7od*TXONZd?|3$rc2 zl33eE4m`ScW(XC9l6WJMQe3ejtbPAI1Y+q^ymadIg9q0KpS`^H?Af#7VH6ZDzUsR+ z^8Coc`xB>-gSdEhcwcK_y?$YN&(o)8o0=vjR&M<8PGA4ohYv6I5A>gU{Q^&sp_ucd zw+oX~PMseddh~Qu1h8+n1IXJWBcr#Yx7l??YTSq;JzPB(UAa!oEcPFc;)Amnhmotj za^*%*dBFUJyo^{~W>#cac6_$BfF|Tj`#M_LOG^%}OZ?q4OcT^B!%ci^C~$BkLpbEPLNNtJ#1w^uP*FDb znN4|$A{i!yy9Y$K#0F-g+0}HnuL7q{gXWXOME0jIel(dMSh!; z`*bB8qo6oL1(7o}0!1>4%mh)AnNpPe*ML!(H2qM$O~ zcf;xxc!G3hvkbLHw6JBnipFW}nKpxuG@@fNs7+_3ohAx*N1&*FK9wp!%UjweIt7X? zH(PE>r--U4Lq(}Qn{$eAuc!6y{Ztig&M-SDRqk(paVmhGH(n%S} z>p&XZj+fpguf&D9`cU_2OILlbCcT7Ncdr^hxAcPIFqST+dM;V=!G|k27+IEpxQ`*X zQxhR8L_77&I=Z+|pSgYuV;)Owx(usO1k*Bo-noj-I+1Po=3hRI;tzAk(s-T!F)FMb zqSoIA6mbG)rEwn-nW=Nm+{eR|{=UF`YO+9)M=}dSk(RUwK*UnD#Skyv+PVUrKruO{L8sG}1v|M!^X6lnS@_E8 z#-mmw(pRoqz98sBnjH|?_eFw$`7F&E4XHgCg~`y&kADmp6&1l^1$vNYfTC1durq=~ zu*fw){7-|5LQE49MH@nOt~35Ds|gewDJDe`Jv$*8xkf51m=lksRhu)vm|d`u*C4l3 zvLJNaYZ!WxZVJeUH=s=3?o-}-k0<8k7({bksi~N9jKnsfEEC3eB&s$^bDP#NEnjkM z|KO=@Uu}=AfCNs)cNF{n=SXwU&LNss&2_BjK4YY;&I=# ziI(K(6&sJU2(a&Bf6s;Mgut&~0>$A|gJZYbFT|u=zy7-K>GQ$Cp`nTP+fBD`k3G6J z`e2z&l~$IXhlaSUJ1$II{U216M-R?EzV`b1l?(UAZr^S#Ce4Q%s6!JhlgO60qp^}B zA}%|xEcK0>2OwjcZ)Vr!Q%h6@htgII6qUCqdL2a4%A|FXa)pm9aSZVaa=~Q9xK8xaGKj-vc1 zko5F)v|8j#oNMFO713>UnmyeOX-Z4#a(>n`OxYB_sw(2yGOT9G3@2-M)W>qFatyg< zD8Bc(nV+TnGH*?7S6jX0MS-HN$lR2v*9ifhU@v(|?3|spbhp)*mTbX9We#+FPyYM4 zE;sY0AjZCFlJy~B=MdaERnkZhu(`ZmK~YRa&p43pl8SMPaAMp@M-G+qmN%Yc41S~@ z!^@=h(!8(*zq7Cq#v(w&DN!d{jWRD|#PfGTJ;%q%3spsZBsnz>6$9$_(&THj$tml! zadVzsmSZt}hGngtgA4$6=HN_9XjS92Le_V9=XtOi!p_>AzQXVN)!4B%*r!b6tO<9K z?kZpZCGf$C%znBDD76gk&FST5p$ALPucc-hp5hv{_S0|YsDxRWC zbVhbjc5J3zTjTAU6>evjlw|M8G+1LX<1CJu>OhLdRED0N^lq!1iD7XQf6NthWaYzK z+j5Rd(38Il+<+o+8$6vHABrP<%A@d;;%q zw|$~+`Spi=&#qrO|Kj4|rrTqq!`Ge;pH8o>%^Y|TgxOC}FYkd;SMwl+48R%2~ecnxE(kt%2)dJfBuX<3+^DHb3WO}&f{VWOwG z0v%3+B1}}9ki}7ym9l0e`q%i^m`z9+&Zm5Zhv8TW)nFq15~ly=Z%^5CaQ{gY6x)CB zgJXvqQ&`~Z=;_H`l+UOn7vVEd^rH1pu!zn3cPyIj%&;bQhE&P`p>h-@1B^)<6)8xd zXjkIJwujUtf0)Px_Bpz`E^?(kUBQuO@EjMbIC@tS?f2>mBPq`&E;th}QwTvK?%ttXEq@ zNap1D0bxl4vCt%Qf9MsQ(%5Xo3pzB(Zqg!I_XsmHq81d$uCTfUu0($ z6^VAFMDR9#PDH0$rvF5DRnad_+U`Dn<4F=;D=KP5g$O9BC;3Zp>e)&ilvUdg;&OGO zAORQ&rtQ4=o?((7@{L_cavQq*G-Me&Yio?@GOtoK+nPp3OE)Kdjv*K)Bi!3|13lXg zI$Iyk1#WI@R_**Ia?UohnNo3cc1jPHF5&2E*X2Q8!ESOux)GS?u#&DD-!(TU7jZbl z%rDLaip*ELvj}u&PO!C2dT;QLAtEMF{EPe%C`Jhs=TKj13zUc$BRU3zN+pJ;RHq&b zP0)`ylUQ#m*1|(|t6oZo$i*Bq14T0tC2kH=H`&=#ue5l}vo=Mg3lxp@U2(ZpdZ3tP zrz_Nk>Czo)QoVHA^pd24%y3^_Ms{IgtgfK4#@j0+HHi0E^@$UuyLSbUQrwk6@Wmf0 zlGL@*Ys4i(4FZ)ev~uJ|Z3#1NnwF2L`4y9a;@?e%i%ZkZ#}X+2Cl6b={5usf8G;6h zQii8PDUiZTpiKHj5kFs^qr}Cz2o={$PSHHY;-=xZK{C-DSC2!C@iDsGrqils#^UFt z_qjv#C2MHjb(=W_r*YEz0!6j_RK?F^o}eND9E{{C%+~hM2ZtX%LRx$HPS2^=VlVoD z;;BEqy7lVSL9~`=II!2${Twic+`1#q3eFIJLYv#`WaP%xY`%YcI ze*F0HOAjTbID&(RmfWJ)=8)^xZaqply7~0^v5BF9YtOD-d$z!Nc6z!LV6B79#g%1; z9$dI`{E)&Ue~ur2aQ&3@2c4d17f&$&C^i%{G|&Y^lpI!slR#OsvX%opM=P@tMTId5 z+06?Rb(y3*6bzxEc>pBI6E6|7O0o)P^@u=Gu&A6v^OZc{IkVO9c@%wpL}%yDUE5JcCL6JqyV6=%p6au9%VpI56$=TX&9U;dP3JD>*G{L`i!LOR zHiCFyY=dA!T0LH&Dh5C;GZSIkTUQZJk@y)$Pr4M%RIHTT>>E#UVRI2LDvqRLA}lqL zlz%UoM5I6w2NLl@EKZlps~;I_l-3;9{Mj(lLg!|BXAZrO#wzxE=HTPiR=MF|)G){< zZH(?+*3+H3YSPPe;a(0lw%al{*!smc*Jw1~j9S0Opdp}fW^RJD(X*YM>E_GwSvK3* zZ7uP)NS5WqB^rC1TWZsTwRXsyPV3yVehX_r$ydys*=AWweO$k3l^KfPRGy;rtVm>e zS)hnph*Jppq!)!k^f_@4v2$Qi<~u+M5HyRQW6k^lhCt8+MJi4hXq4VqlL7=5!*!gb zle7ZGoKd-+7*le|E-LBoDT6&baWgSCfxQWsVvsBFFEUuA2T9_!M5w(N>sLA5KH&i?$ zS;ZFY4GZ5f5h!Acib6zuWLbEsvWXS>^)1calV^2C32oE5)6^&n1{KBBuo6_HP^KCb z`EBASZgg3^c*#1(AJF4;R}CQeic{WqH!4jL*8SiyFGU~;Z;|7|O_b?yL!=rfovKoL z4&^E|l!Nlnhx-SfK0MXa&uktJ;NZo_uO8Ev^Yjm|UcI{Yhd;f1`fOzU=C`vh^pEc= zx)~SVQrP%>l(jB@y0yP${WRMvkNVCMAP*1UxpDfuq!j-I6~|8AM(edXas1K6v8IV* zt%CzY&xyrvy&Tcac27^2fe%cu`r<)`Xopjg3_2G*ChRGI*Fr`<_APWz_$h##XurE>hKmZ z$YldAECTj?MV*W zKj5Q}HmgF51aW8r)+|$%7R5rr;@jlnJEJB|2M8ckP&D^aAutoVQAEe2dl5NCA0KZ? zaO2uWd!mm<`I#CENaqSDasiP%^uz^LaLhB(=F#EjV9hWPP{L^6M>l7>yPLNcZXJ~d zZ{PRl0W!)m-kdqpjS_nntk~!g?(J07+ga7t+u5O&NxE!1Ds)pm|J84-@9eGZFy!N& zpbn_B(`?D_4CalE zBo(2e`S9RvBKup^UJlZnV$$zf|He~nkw97H8wHAQ>ocT2b7cj--h@lBY~f>^=#$mz z=vnMS&|5`VTvPNxJSG<T2ma;E_3Lx0DiPDpF~lWQMwXXX+Bwy_84S~=U5;AcA$y(Z z%=uQ}*UIwp^xCLzZZa*#qi017XHj~yBklu52tcrmo?tHCB1q_skRBb1ENAXsZ5C53 zG(!;{{#2N#f@bA=mrL166!F=S@yAJ1j3LBQ~73^UC?9M`_8#w#!utN~K4!y38amA{aL@ z6l+)n6D6ah!6M~|0YzCrz=(YW^>XS&Ld1MLMFquoZsI#OzKft$O3~E1tZiM0y%uym;`VpcShhoa#A60DeIh zFMmkQ`TFTgY!VzD6XP_M-B8>>9=H*qusjlqqGTVNO$^48s5coDjs`SK3z$u*F2*wG z;g+66I4FdiFH|(86CFb!NH~8~0Ij(9E`;XuHGG0k$%hOcJGl5dkZZEzuCM)K$IS%L zM-H|&-E7_e{lijyc3gzEqN67}=z$_fC!2^WBlSQLw7u~T|JQIHmBT2SzhdSFQ~AAy z;wj23v`k9li^;y`5=k2Z#p>#S`AOmuLPdn(#e7#1Rm-Mzfudt{W>?#}h%!5G2Q(Wc z4B+1cielDI-X5WxQ;}+Yf8J~dS&QXWrS>OR>9u*T_Ey#YK9&~q{1~GR&P^1+*wN4U z`Okm#b6@|gfz@icDw|)Zb6X=&bOw3TErM+<9ceAfsU}_I zJLa?~bWE1w3+SuW3QB42CileAlY@7cP9_Td)g0L8wplHA`n(qBAW&u)FvrWMc)2hTvM3*E@M9WM^e*i(?V}1*;Hn`5>Xvjl~3t(vI`C;H+-m-F;VUF^AA9l^`n( zPM~-aYK?kv?73~_V zwDdr6%B8H#i9%y-dd?cjfi9iK*Sl}nU`?xpj~bR&Z9BG#iZg6g{LHF9;^$ZA2Zvww zy?Akn(U!hjg9AdwYfo=IeE90t#s0Ce@|Ko~XQNH!sm)E%<4r*EY#-t}C*$po|K=IW zIv>dXrQ;7SN|WN~wW0odJ4y?(%bOP79638Oj>gW|^LC*4rih%(oe>oAht1t}8~FwuUIRdz#ZbVgWXE7CR%sZh}v ziHMap0VbO5e*GCrZc2%zAcMq5rYs-x#{gkwCZ40%+agPdqbW?5q@r5;!0;b`#Cvq* zE}v6K^fA3QT;pW>di$b$zG!QT%sn41EN|R%Sda&=)D6$9JV0kDy#ZQ8|?_)y}u zAy!Et@<5wvM}>60;5V9~ zXkju5M8F~g19XwCCGM8A7i2T{W@mY?%;F$6RZ%estm92kR7@lyrYPRsecy~fps0rZ zWd0@*_wr3tO?@Mq^Ps6$M-exYTi9rZqOnr7KH|N18LNUFf+<9+Iltf;wk!-8EPq5 z$7S26W{0uouON$rTxt$A7!sEnsIe-|txFeO+q-k^8wc@I8O~#EiDDv~V>(%ltS0?9 z2f#$-^MO6i7VnILiW!Blk=iqtyTnIv-STw2J|R&eXcH7AW@5%CFDb85^oEKuGUSyp zibfkbMQ?36M~zoOoW3B#KeZ_`F*Z3fD=Y!c@YK|>;!H0E#jMl}*03r$QYF?581WIg zCl7HHQ$xg2l>Schk^mDCxo_a7nPak9d_a4Fp)4UVx7(PZ_zsNf@&<}f5fix_{uU+$ zC-gF8F%3-Q-|WbbFfAt_lI~3F;PlyHP*a;s)!;8GG?J#Lb9=>tC42X7PuVU`?t#)2 z_Umv!Cs|s!<**pA))1@;Lu(|tgKr5F5qFkfw~DL8XEX^*|2~xZ^AA5cIC}QtrAt5i z)wQ$4&A0k4p85nhGRchA4U6p04^6Z#Y)MIJYN*#XXI!|`G{ywrQ=m9p@4aB~5&q?+ zjYz5{5xvM&H$L2d`)2vQ=M#;EP3@1KUK>2vJm(7@4i4*k&GV-!z?rOIhp_FrIIqwmDEN$VL{8gO2q*O$?1I#=G9+tIui8lp`l2f#m_8R5@McE%H+Ogskt|Kqb^s_*bkIXzY z(>y~6nQ@6d@gD_?R;lS-z1p%MgeM8FgD9J`-GNdZW?5r!pvNaCy{ZN%QpNEIb*TwA z;3?(B=B1V__epi&o0>PbqpPhuQNrhBJNjEO6BM^}puoaWTQhy_rZclTS?KnSElN4M zHD7+CMo^7s=M2X#vKkM_b+}{ zL9vRL(#s_wcAaN&GD{;#%VFc4`bqS-%GOk@R6ZX9B@N(`rxjIe^DnqbLJ$WD$c&`BP= zhEZ9TA~3|PHg0pF?VVW%x)HO8qEed*$}_Svk$^~ytSt+VX^0I0iZpNgyXG~V5Ew#2 z%zRJ$#+2Q=tXySduEL;ddS@Am%m>i;DL;w1sgOG`OjK?}Y#Woq66gWN|8f=07p}}n zMIvbPAS1;mlByLTkxgR;B^GAvfQbw|v$Lf`?b~6|pN3skmNo>?;w9qG&!qFv*4kz9 zzI|I$wzI^0`vH_dQ&Nt$7H5WXu3oB1@2Uv~iL^R$b`zCmR)@MuMns0))xsq472%=v z#?T*z`uKkGo%X(mfBxiyKmTU<(Zk0;@xqcNe`dQMLwyGi?m2w&`B+MEOGwPk%=nh_ zlv6`Z?PL9CA3?>lO-W1o2VOk5bm_xw+djN>_D_HK)6*BjV( zC~t0RYVUhGaOz0H-@oN;w`{|q?I$M2PqtSt526Nr{R2tWN>`qLvFlF*UW%r9koWxtYKagNb5F zZf5S%?{Q8AS`^tOjYSP9u}zLv-t~nTw8J1>`62inxUAh+)J~o$n(J9 zEflq)W+{U)sE$cYZOjuW@(Df#6uC82%9|y()<~kz!-ufnl4QI=WiiuH=;6yL@nmH- z1}xw;N5pd4-1SkLzO`n{(luLF&9#)8jI)gsbvF&3;u<_f(u!VoaShc0by-Os9<>f0 zD+;}=-JA?nMiGAG8z@Uns_E=#BlyFV3an~H{xnSxB7$GNYHcEeJA7btb2h)#LgdEW zmMs^Psad|e3B9DPd$p3Jt&La9F9?xTR}yC@U965$2%5$yrl)4;jowB?xJ~L1B<5o? zsnyAJD2szL8ZwKEcqu{MyF_Np9X@LG(# z<(!T*h^V|&lOBZMD)rq^@@Ese3^Xraymk9W2gq{m`EANaQ%hP`y9Q*zk&DU9kIg1iFDSI~hiIDYpVFKS6`4iMv=|VlP;#SI;nAM+DYMsA zGuT+l%uYaNbtYKEi%d$d0*WPkkt6UFED}L8X3hU&Yh&YGBdvYpSkL z(JlyOG*;1bM0a%NlDEfGbeQtluYQ$ohA(}7EumibPo<|jA$|IqsLO4gtG@TW?{4ZP zYgaE8&(1iYSm6#7Md2SKyQqA{X>-4q54Ymfaj6G-%6sD)Ptkm|0|9{|;j^wwMZ9VZ zI@fsaiRnPPDe(J0P;609OooXjlt$twkz}Mv3;r@0uLDk|1|OyPt*;@Frc*_)FQdPk zzAM;aCo|g2`DoG&WmTzV;a+&nrJf5|zg7Lwht5l}Z><;A=k;?fMK;IThJJomCsX*$ zZWVp7LvHC}&(bUe>@w+cFAR4gyi*ZgS7lf>WAw$9y0K7-8_W#Fmj7VlyL<1L_(a(m zwICWMs^RA?>Sdd?2>^Bl^TOuj@Dg@n27#gmC^CPon&olfrzr(taTeJO?6`doUgAf4 z_H5m|BOr(sa@Go%Gn{E!y&9OdmUw2h2Yt5`8y&oL+U!W9la0t%g(@;yGt}Z5`oogt zzdtg3asMawd-s0u3421e?2WHnqPT zzVty|USeFp@pY{y*|pyovU17wwXsDFhJgUF`!(SFT%dg|uTz%DsJ_)ujj{YB{iY&%~X%i$Kgzfp=_jWVV*7 zb%M6cn|BB!D`umoPqqGG!ou*(SS8+#y$i6_eF*7Gm1Tvfd!fP-jE-Lkp(IhtIL$$+N9{zstSEoNjOPHE4mtSf=fc>Z?o?T z#Rw+@P?Yf57DY2_+7XC`*ml9(4%GLx+px@!iK!}swi(9*C^8DgNWgUVK<63_`4YP^ zz1+DaD!(IY&D?LzRZx^e8OJh87Fq^QgM?_lTbN9?VxYhErEZS#Y;~x!$1e*W(t9H@ ztvc>8DV9Prx(O)|o1m!Y($#jRSM9HLwY3zQ#CP`gk>kL{+t<#=D=9U0(I>z8R)u7c~q5mddK@$drr^v^fb*3A!h1A!mxu-1O&~9N)V!BA_}4c3d1hQu!yX(i3rG6 z)&Y$mLfDi@2#BTz1O{WE>O{c`QE@BQ3o{XR!* zY*4CVV;yZL>_bJ77AQJIhS{6{z5^6*#8lMyc~}Sdr6y$OB+&PBlG+IY zUQz&MzWgFrHv55Se#Z`ydTWn!y(S#wqC-&`w>-e0ob+^I!BRTG3nxVsq$I(xPeQL9 z?CovuO^M5I7hkd{C@`00O(j@dFczNSTa)S$?V3UI&nv+wJisqDmUkdu852S$z}-%g zKT%N}yLqLlIer1e(!eh#hqXrWIe3zI5#IE91n?YG%xP%JX#kQrauLN9r38$>-%fu3 z?M?jpfRk`hO}A`ieHQ5ewWpK{3z}eh^sGEZk{&+<;k>h`Ly<5~ud%4{9woU=l~}O2 z>vg(sJdeh)fkFNW5!cw8siCfMg zrO=B@_O||P*Xx^>zrs|5gO7u4{;}Yb8{aU`PYDdqiB{|1zxqmi5o_yhc#1a)Za*K3 z!BsqbgCUfWp<>qhO-=QE^Yzzvo`xKbX})r0;%Z@J?r>I3$Ek>d$-c`Mrmx(3{LR<> zbq59?o?VBVI6nU3AyEAK;mG6ufrh-&3=z5ZzuC>=zv-)2hOt{?qwgCVrdB6CICuRN z1?`EDPv1ZH`R5nySS*_5>JuI0>Kl;ZwPk(evCuE7kJSaRK;A2I&qc?EY({($)NVpV zo88x&{c1Lw#GEJh`GT@g=g@8>C8BbCoY+f>gg@0yLGgzsk5#>8zDy0iNc##DNdp5#srMkhZN-9DZd@!~ zyu#e6xp1a^tRk&~Ym_f!oYBrbI`e2;q=e5Vc4o%>2MD0?aBUH2f_k4wos?>KDIYUlC~{ybg3|!VfKz7Dvx^^H(isjyzZZB#KDw z!7wm~b63(zS2QuDR9X2_nR3qH3nV$BWunA&!pS64nX0(Q-#NvXCjbeuI_MWLB(FS0 zIE(>BaVFzaQ}cbI{rCud-l9U6KnOvmMD5{TZ|hLz7xVr9%zoN={|I?R5oXn1bFXNd zP@ToUT>c6bOdE5ld>Xk{J((#@G_C|l98k@+@2D3JD}k^uhyxePtRHFx(Y=~rPj(E;y-umo#k z=3xmn(n|ACzR3trq7yhHiR%Q4l{GaP8ORAF<>W{uE8aCH111Khl=FjWe>yI@F%%_< z{WBlaaJgLs&X{OnFooK)DziYvA2sCY=LLg`pUef%)U7#_Q52IJCl3Q#PufQ zHtv$l!%2!%nSwHtq zeEaQ%JBTz)etG-C)D%0d{^!edr^6j}R~~g`#|2gUBitWVFge&a_Mqj|81v7=IRl*` zN#R5NeJ?(r`WlEn9DUqBQV>pgBc6oB?e6L84;qG8V1?H>b{*xLro!;+Lsto&ryn#v z80tKKHp!8YlTG5fCPbmeEXU%R$}Hh@L9hOaR6GWM4}HP(&BL zlxswRcwFk2;O9`@8|x7UADNl979ri0E?lD+Axk^0T+GXS99X8Wb?LB8*;$%$?0Kcz z`mF!uFKtj;Hg!JJUgkqMRd&eKAv3zf!QeFuBBWlbqWlh{E#BI6bnmXW-q`fUCe~ub zfkdDfnEa>jKK$@#>#kjyZ8on63#I*1YS02j)ti_>^p;VSs)>03MQxvrDw<;41&aAh z&5+#_PqH0wo>8$S>;szO>DXH*2opX_&vS-06Z+nr-$t!Q_mLr28p<$x-YWHK{+>)3qZ zFGJi(;*TZqzn7p^Gk~aF#ABRqaF>ijF#jEL8T5IQ7fNC8ozm4}sJgc`x3^c;GrGoV zdi|2p1K{sCqpanb`PN(JXVB5yNIReBYAZ@Y?TD;pBp6npkh~*`vTSX3sb8v}TWts7 zacwPYFPri*2=<#`Bk+zyStWzMHtusylyTb*u-(MKNapU~d_}KmaJ3#UF ziBl%Vl#Z{AOdP9DZMxNwz8ffZokE6o;=(uG6OTr&Hq=xM4NN_Jaar~PJ{%pt({;|c z;lS=F_QgN$d-P!FQ9vDU`NPu_*Y~{NIXHN8XjG=EA4E)yb@f~gG4ZmsO{ht7NcKc8 zbjzOH>gwND9}D*J@RIV#k#$F!PURf|hDSChSgvyeipFc**RMN_r#Pjc*eBKU?v|u* zZ*SLdaTuzvRRhJ`i-5BOQu#E3P(jwx={BOvMYe2#DnF)bD(wbu?PO`vuYcQXv5}?4aWHERiXVS;5|`y<+pbN&+G%cs zm#Ib2Kv5~&Q2j_01rPBQ(lvSOKt|g#R!s>*`{L}<~i0H_CNzq2S zc&UM2dJrNRq~85(94LO@-QD>qy(gme3>yg#;o(Mzv&nh&TW|hKgCfn#=80cE8+?X6 z!FF_{M-?1)G*he9{5Z@q0#XCwQUVz{2+vN+s;fIzSjf0ZPGT0zi4rnGlY+(7^#^- z)WlcN5Gw~$Kzu-+C{J;wnZvc5>P~JxjZVx@@aLL)yXkdx&D|h=p$MLxlp@RPl$L(B zo%R8tqAEczbmS-&>ema5JTC3q^H@}ae$uvtN*X&Dj&g_`-ACqu0EOXaPqsHeMVKf_ zMMXr;V)`wv1Zb3g8}P{g99d8bDxxz`l8i*R!7{qj-grf}6DTk)dgbT8{g>Z<*0%lH zwW8?w+WO-3w6EUVvdzwgmOLWpsC$<$bpGylG2dUf^DO4usqWj8v)?}ZpKrdtaQ8}{ z;}zcP#;z7dCq$fn5<}v#XSD87?X8>L&-({%4U9Y(8fvcW?7^=DiZ9L%j`v)8&$#96 z*@FF(VgsgNZAqr#(C_^<2Ju_mNP%gyfZ9XWEu((;hC-Fxq?5-2Jv(nCatd3^&(k;Eik zOll%Du07wggnk7z2_dgE$}z;YG7aV(o+EN%ehEI-){*W>HE2iV)DSVKrtds1@$o8W zm%#ixmYR`Bg38Y)whSn4u{R~4J(QY_oRT!YkbD%U@(`=}_3$}RR1fU=)Yrt`6$g;1 zJ{W-s7S*geC+si42sP)KsJN))bNDwGNeFFZ1r#X_tn?7s8qCehB%w5qdNidLsTQ{6 zp$wF0UsfJ@C|W@=EIKjOhx(A0QurcIt}WPKi6g51y~SjMOr7n`rBR(+q7`&R!Ww1f z66Qp5BVAUmlzO#~DcMI_pIw6`$cwfBifvne{mQ{tZ0O$Eu2czvQg;4n15wkT|M&Tg*_z21v4w;v9CEHQxeB~R z(>Mn;SATNw4EGdr2+_YJQV(^%BzGPUxfIEgdWo9mj}`?H_5)AO@8 z8DOw;^o?D=+V|F`H-5h1omZ#_z43~TgB3E7vZrv1t!Y9Qa{Bd6S$TPBXll*mUrdeT7Y-a{at;elK?WQR z$i3RCRW@%46psc4q3obz@skBl@vjn#3!RDzikNU;c6Vvw;y>#Ru0C^e*DetVwQz20 zPif!VrZtTl(Q}G_$XQHFEb5P>G%jnuRgW9jD1D%Pk7krKW3lGVK%}Geb+&}t2Cra? z&5J^_vTM9+(<=+U`pV~bnpV!L;_=HpH+~n>eWCx`Z+rUsM->|B$c!*i% zN4L8CeT-u+AuV>UbFkw|;q;^Fo(qqsrbnl`uh-^yo$JI=WCZ5n$aH@<^Lus=E?ry| zGclCyaA}}0`_V0+IN>$aGj;j$?OQj2Vl7&YeIpZ1Va!`@K2qvuXX)p$ex2(v6jF`{ z+8YrgI=;WoZQXl#inSqZW?r@1?yIlp+1a+mBkbMxE&@et9*WbnoaP`2SK}KVc+EGk zhz)hQG;8Gcx~e7(arujaG4fmSH6kOM6ClZPpKxz_5E{HmFgG-?(jZTSyDQAB9q}ZI zt^86G!y>Km3jLUYu|OHy!IZ?FRf4~Z=+)v!;#pcT_5x4-MpZg#I!-BybC%-1s9LHh z8Y4Q^@{1bygo}DW&BGrXG$h(qrsf2hgr)?|nm@J_u))TZnvc|pHnSh!+R=pZZg$du zMJUdx)Wbd?@{lND0Q4dja3U5K$)KPpfO%MnHkPP2zNY@wrHpr25CUe>4WFM`VwId+ zR)(i&lNl?z3b|!eW|`!%-?oi^S@ggiVsl-YXaR~l-*{#F@;8|!-mb;Bfu6fw$4vl= zQ1Q=y{_}<(%n5WTmOt$`U%FSiZt*--GVo2HURnMBnelT zJVd9+p{&ryYPEAwXhtISUkV(F2-IYtW1mgosE~9xYC^{feGB=;(xW3;0tOw`CKG+$ zLw1IqktI)Yy+yt(1O!bYA4%>aQ_8aDtx}k6b0)(^>dZn~3mwb}``Mh9>V2-EIOcGj zq5G-b#tg#M!omi%$+EWTKy62JeaH?+Gxs#|0U_yCEgc;|vze&hyCDFD`&BiBv5`0zp_;SxzaIkL{DE4>Wh>1Bo`~97- zFF)?@>!zx5>eR@C@b^E*-akJwopq`%>FP+|oo_CWPKdaU$Er)`pMNc*(tQAR@H_*} z4~7uBnYbFd{p`rqM?mq>=yi{?0>#I-Zk{^zsOf57-@rt3bYwJ%J7af~>({RzvCSxy zwu@j^L|9o{uY3Qk}GG*BNh zqwOz2ye{0Wcye}TsBBVJVQ|D!Ew)E1%RV*Ribhtn?*tV`Hzkm>n1aq&Pg=!`F| za7Jn$9PzVoP_vgX9$|A?MQ;9YD)Ky{m@rXHO42J$*Hd|69NNf%Rjam|rzkQxDtb3j zk+Zv9f@nyZ0!0ryce=d8?8|VugJA*dn}H(3+lSaJK<}eMwUk;G*%&xy@{5wqEwN-T zNa6xTBom~O+Fq2j7#L*jAW^$A{$-1Iww`2??VUJ-#j)+Jz2eFV6!*Qp;pM%;L|nx` z>&C;qCtH`C`A}kGwXcuJHJZs0$|*`o7IPJ1$s=ycVKd$bhQ663EK_8XQxb{M8?@rKK}7O)1wHxU)O`tmperS%*Q#vXRj$mhtR%S`}qj8lMsAN%jsXa+XSHYNNP` zlU-o(+3bn?&jtscjZ98<%?!=R*7(y=`<jIA{C}PKijh{#luEe2QBOePvrAW&z1jWSs*h~y0 z(prQZkOP0mvP`Jquy`?VrbeQJ=WIi@Eud+rxOj5%ib+MsZc3L)nX-AypD&buYM!7tJ;y4-wuNoJg6>wWku#sw7ysB{Ot zLG5^mC(-yKa$d3z8QuR9Dz*m&esV@UMHM}ZIOY#9_(M-o7lgnTpveDCE40k*XkigA ze|`R(NNl4(Ax%KC)_V?#QhEl8b69-ShK~s*mttT~DQ3#fGROx6mHvZdycbE3%}%qW zJT@>|zr|(CHfvarU0hXPy4Ho?(6(*wAHI2c>e7wb3sW$$XZEYFeiy@jzVUCKfBpFO zGi%$-**okj4wVt^8V)! zx?Y^0sQuz+YyiB4b2vD0@%qpRQ2gfRty9fSSG)TL$MUkv%A&p2`WWZ!AG&_d+E=x* zrjVhwGF@kj4$LZRcgKq@-m6xvyK!Sx%#C$lefr+JzqECGcg?3ihT`R(uCwPRpNtix zr5&h9j4z6g&9{nEi`6;ds}zZULZb=J12ssd;jP^h{k&3Bt#fjkD)>eCYgnu~;AY9< z=u)-mh30;s=*YSO+JQuD;r5X)~06rIC#+9C%9k|RJHYM;WN$;vl$KsDv$fF zVj2eHxXgnQCy?iV+^P82U_@Ji1|2c7LbC83V6jRc%^oZ3x%nGbKwEmaS=%K9$mUm4 zqqg<|eiT|@qR&d_&}#rIF3!i)N@8yUZ)&WZWhcyQ>PLIk!qeU}vrLWlm=lm#$$tna z#<7FL-juJgH(LMhwnJ93t3}9YpWtG%bweAWnyZCHTWf2%2E}mueM`RE@H$Au1d88r zQMTdFfBZA@(s8*daofS3cuM)?^n`=18Wkycq?W5%FveWFz>%#;jOoS6`e&sN1~LJ6 zbPArJxR)?d*eI1}bhjy=19e_9d^Td;nhnctm*5OnRV3hBqpnD5j=BZuJO3n=5Q$7+ zBF<0W+Jl9e8K%!n#vepWKgDPFWLMvLAd+5b=iq#(;K|UA-BIZwc0}3^(j@{Dp&~cA zRrd$MU>Ejmw*LMz{6?4vCTEK!(|CV$wDL5%Avq2E_nY}p&~f4Y-!D7IwJ16aY4>&U z85IF_;fdM)dH&uR(zk?1Fno;qiiArlcRI{9P?QZ%YW1B$#u*0U;08W;V6HGRQ+C4x zMp2SyO^pm`xrlTF-N~jZ#E_%Z%4Ks+)03xPe);rNM0|_eX4)uLeZ>sf`(Kfx+FY9G zPeQS{xT-R0cTCLW;g*nyJXW)`co(+V)iz`gXBc@BdgT{|`-Z0!;qM1UXJ?cE#q#Ku zhUoToI?>zcP2VZ*^MA-#%gOpJqiZpC~ZoqS?oDP}JITcoSkRq#RH)CQP*%B#xw%%uiE(ZGUf{a6Pk z-z~pdXXf2d*;t$%6mNDoD$UOFM)94#&P(6-O)<*S$@X)Y7&F^<8Rzfu-Ma`bKAP^D zX1i7YKxfay@p$qdL(|iJk1tH!x_A?%#12>ymyulaaBz7&=uXmpFJ|4t@kV0eO>czNa zwjOTL8Cl*JYqNLM*6u#cj{_Mk*R5N%3IWC!b5!hl@sRJ?*?I2#Y*&A0!9_MyP zu~sU-E-@`V3Cy>|1-PcN%plG;DI+I5!N-p^fqtphH5G=APHD~l{)&law$UjfOfC|4)bUZ6x1F5DOV)SL#w58)9dlR5UC|WO^`NK&sHgl68Bs z#>GcU&hEAjsgVkbc0Q(_)q$ZR#2QOc)szZ0XD(22i#Us778c81dTp_@19Cy;R_rRW z5-gUPmuXwQ0HuS=HlPRmIOyy0?z3P!)JFBPLiQJPn%1p~UYSu45G$pY53{p8jQGWXQ5c>FEM9@-tR!!Sl z6$y-T%eC5tzYBw~KRZc#W(j#j+50Th%b3)_xaeGb6IW0+ONfG)5)jqLW|f2;5A@`s zOa$_Q`HkP~1?RIUy%;Pt4KQ7^4Ugeac5UMa^-0xP9Zd|a)fPARU+9}1e?HYS_3+ym zgx3ouzkN8>_x0tkpMTvyIC%T^&GFHjq7pGRlKuPZg>_dSJbEzF-T!niHQ&In_ugrCe^MFO^DGL|Q^bs~IPOG+`;@PS!2b>(|sk zikZyvfg{B09u8gs;aP=OFx1cLXlV7<9zjX`jO+vSz%=K@Cx)^6DppKuCDovaZP{fbvD8Ae>gGE45u!wT3vpu}ZwO{FB@8O{~M0@aS0&SEhhuvKzdW*Ip~91bSG8T~fG@D!~rJX<&78OK>zlp!r0q&knii`w>n zbn=h$o}yq8FzQU?@vr~m&ws>3_K7I3q+FZzMLp{9xOVUl(rOC?FNc?Vt!^jCZCOeKihb^sv)VSrLppKL}^-OL zjA&!9Uz<}?QQ;rJj=WSH+n^*h`zX3WqO=Ad6*h)tlL;mhb1H)V;@T(IXkAeWS&li9 zl}IO2BBt1e(ZEW-7J^Dt-%2Aw3>{@$-^9^)v+-ujmdaW2Ur*86c7&6g<$LR`{Y)HJ zty{M_zQ(_%q2q%OPSiH%rGI&Pw}Y3lqvak)!?b3$-&bC3aJ415Z4~W4>|K3rgRgmX zU143ey*?e8JuC6W@w@E9zd#xK z!kup}jNcxu`|!WdPWRvGzxnm!I}~F2MO)|Y-SInLkKZj$i)hG6vWoQzGZ`9r(K*<2 zwU7XbBQ!Fp$YRkie@TJB#bezO5ATcX*3sYX+M=#={^1m! z;zgi%ex0SUwU@PneQcStyp>`!E+o>8ij0Z$$R)S#F>qY2ym9g4c)-*aGhD|W52q&Cd zw+ASC$a*bHOOHJ+seXrOlQU$fB|4CShrlA&aw{s&sD;VG5f8pZ+vl>L?$vj7I>W`q zHne@I0Gb17wW)=vGw5@$BCxh1{KAX~!yMeLZIW9zLB*oQ7KCg9MY`ycqTBwo;q^Z) zIEt8d4H`8l@+`N?P*QF?ncI6t@`z|RM5{&}!e@S!uH{$&@tf=1fzWg&z`!R{y)`Q_^>q?Vp&Pol}$TAD``C zT5+l)qOzmIv7w_jrnxySueo@CLw)7$s?#%1imRTmsQg(K1r)G-zp|yalp)ob{V_LU zOicD4-e0h4T})H0cM{QaeSI^P=X+mXa&$BH3$rW@d2%AErF8#LM0}*fdRtrOF~Smk zJ#7u*8zRH}z1FW^x@A>uhhYN6D`{tRr3v4hu0oo)H?Ws$mncTEj6j9Q+z>zOoBVWB z_XUci1HStXmcl`i+QvP6{pim`YnJ_8M|ncR=$#r91&Xpi@VCEybIxSb>gtV3(M(R} zHk!DZCR@RkXf9$%K-fsFMYH7!i%^jTRxeSCHrTQ*;qCSIR>{kkx|oFAaPzUZUGvqd znaa~MV|Om!>3iDM*Y&>a1n5L_cCe@K@p$)zJ9lp1J#pgJ-R?)%ANKY2Odr2G*4;gE z>%qim&-2SXIWjOX{`hNrzzdhBMynq7bl-%GG;%+GJU0Br(9k&dZ$E$Bcln#UHy;y^ zKOVpEb^mC63k~+AHMXR>)6SkBxp{Zs>Tq>R{My|Sc?m0Jg{ze$&aB;xy^qLp`M2?J zXxX#;-KrZgtB!nrBL?qZY|W>ig2nTf0Qv0T`5RDeEjg7E`_-|k>n%F69KSF+J~hCP zgD;LPfEnDn+nG6;IWa9*npVL9pI*faqU8#$9CVE-%gQPQikc0BMDY|U)3IeCA|#~3 zU)0;#9U>|FB-iqMMy)g`igrOjfYlnsFwI$fl{590g&K-Np+Hf)uN!w&eP!NsTq-cq z1g;x^L~e1Vivu<9vXvSYX;IawxN@6IDxRWRUA{J7wmMUCDlZeK5>x#=z|n)uqHHb2 zSDc@@!4I`C;E*zMwg8H172x8P>`G&9UaPTSD;@l-Ew(atMe&qgShC-$K_)n(Y}c+0 zFYo&khpuuJ0ibR=Ab<5A+*4;|e9|u2dQ7T8qwT3;5iR5fB&s21 z^VN(G%fN8T8P_=4^TcpQ)MEIPKv5aB@bWWgH0o;JK#@6Ts2GL@k`Ijt08@7&Wi7v~ z{K@68@KT-D?g@BTIiHVR|DW;mHyT62R}5#LZcJ~&Ylw-eOfRm@ zNyKt#Yz?zNWSLh*M0M_53|4Tq_{lSvH~{^gJ(($nKdgP@GWZNAa?QN~Y;dwU9Ydl z>i!JCOwW7r>`BOz$tU$yIo>U`#V69;T)ZqN?@v~4dE2%&s<`p$2bHH z{1*H~S+T&aF1!65e@{F_s?J2s+FnxzSd@~6(%*rK+WJ886lK}8)`T-B04^Z3;bfuw zMd71NW}DhLD--vTz*(Ya0I5NdC|aP1DPhws@0rCA1Q_|m8tid%GfW_Carx@T?wM!z zZc`}f?(VtzVCeh{6k`V`CW@zTij9quG#t3uJvu!=B_%8P?7-C6!1VO!X!rBWckWKJ zu>hBmIGdu!h3V0etAzuPpI<;R=ke{~kFWQL%3^gF`(a8Fun=nBV?016hN z-U1XcAo*_+K6BQeoHtTMj0xvzC(^Kru4cRoc3BDx#OguHeAqK{Dz|aBYX8 zMtn=o0XkIt<0!QBmOHF9+%efd-t+m`j)WD*y`Ox^;Zb#(K(a~O1y9JzC7KM(0W<5( zmV_~@2wG5e{}52u~G3IpHvkC$NQYbChIFt<1zA1tYl~kYf3Zx zTxf@ontCWkt%YMtgQ74|Ag^--Q=3g?NlQvnR(3#PcxrgIe?oSEwO55ev1!%*j+U5? zh#M6h&HEdgVh&f6$g^rz;Dto=UH6a6Dk|Gu7psVxxxl6P@4hea0 z-P~=KkFuBf@K+cxL^p-8_HoJM_`QhW(`ngdp(1{5C)cGadwC+T?;#zw~sJH+|uC(>gvMqWG1!SufJStPGglM=3 z4!Q8_*k+X)Yb&ueZHX+7&bL@r6ks1_&qru6C;lZj;o)LWgAPm-D6(x;+ZZitsv+-E zR+_yg8g+P!0Fe_ZMpJ4a?KOHKkeRY@(0&dry?sf$m3q#qt6^$4p)lo{W_0ojEA zfv33>sBsOjT)GvF-9A)0K6Cf&_}G(Pcm}GPfu&bWU9-G^MvaF8C7~z(XTt zJzXU8Ocn7N4FLhta!_=TWl3?7XmEx+yWiC_I^R$O}I-_tA1rbf@wHzh!8WwSI z5fe#_PmRPYN0!d6W5;1)X=MckWD&29j#7T+@}#zYbj}6`hnmy5g^L__51N{?QIxM> z+&DmHibL@f1&Y|P#zai(X5kjoG`JZ=7wLNQjhV)%9W6T!?>|vI+pyy>P<+-{wSPxbNLBsQ+4`#4s*d8>;`-T{51yW` z^^d4*d@>VZmuT|j-k0azefQH<1*Z%4r>8ZWnbbPDxdBB-RQ^Tn9TT}I?mMWBY6NtK zhBQ1x`j|^2hT5juivdMdC6{SG+HzD@6e=pXD=1P=2a*CsJ_BFzXRq(t^(U|h6f>*ME0vdV-y$$F6n{JYdHue0wf->n83W-~)<1xPcF|~byVtoX(D}TN-B>8rvLX7;<^GA5;-;K%_o0U`2z_6?7`UnI!EVRY_?pgv z88<7Ili<>9Mg?J=QIe$*k_KD$I9P1@=);4VY`CL&83%LS9?BwUjk!5F791v|UPt!W zaMQ{CJGV{OGo6|nyf5Ap;%40 zLuaVI>f0aVr`)eTp_zPDs|NM(ASQF5U!m-UCD z6%;kmaM@}gk+T&@L%*B&mw3_A#hOqUCawpE+f))7e7~zJSG>*7YG4BtX?XyMT(-eP zty#y^AiB76G`94T_kW3Dw_AFfCmC5JuNdm=OAsf_{VJ6aLY~>G+JNV(5lfFC^ zUomwKrh^MP&W`>?f z4)Mv*6FkMr%2B+{v9U35*pdF=LFMRZ1O^qe#ru>wDikkhK*w+qb%TeT)ny)v$Ex*K zXEhOs@{n|6rbc?DR+Lg@u{M?#+XIeH2l6T?G9ONBBm&y)7*gDLy6NzZ5YmgM3vL)T z?MTN{OphsO0*dwZvy&&jd{Ud89`eEc$>P$mkZ0dNo1taV@^E8ignvX!OjFtpCu4cJ zxUJf}*~9J7X0AQBGS<3fS$-5o*P0rZl^JE6`I6YcAXFb^VX3Y+tE9xZND*4w>?baw zYS-ab+t30P_p-cU-=AJ5gqC>uKi>Io)=7)OLfNCbkrPx@wviLH=+zi*B2Z*HT?NT< z*qYM5#sX;SE=K0&a8W`X3tPEXQ8b4&#$A2rg;e93WorzdKE3}W-R!kRw#MmI%`Hw} zMRj~oKRb&E#NYt?QqIO)TxaQWcBH54YUS05vGJ+C@qX&Y{Wtr@rte(nsOcJc)Y-?{ zK6>9z zZ>y-BpVqW)tWVM-@^wrN)!#&8%6stA}zT_>dn}CgmOs;Qe&}ZM}Z5~R>max zRRBftX7Q)Fkr)~yajS6=H`@Xz>LzMB^k>3Fdpi$i_=cxG`0#9f2B_VE*OvJnW$eR*SHT&iDXYJUUKaC$5Z5# zaA@f(|Mu(8Hh%V*VJE<4*RSC;H6Q_bCU?#q^ZpUBiW zD%jfc6SDn8pe%r5GgPoD-6rNR;6{2cl+1B>e9?A+Vqy+WJ2TJjpMRDf5uTBk-guv5 zU2oQ;ksZLHdKr2bDmvL)(-m@4qx*hHCAJ@KBv}B+k)MK@lcu`u*2LK9&N$ z^tH?EJ_AjZo$U-u^EhCe1hf^kjglB@>gcEqDXy(e1B&q3@jwH!Y)@tiE=AS)r^mGH zzqJ2E`b>*|Q^b|0lg;sVwe{59pG{Uixj*wHt$9a8K~zCO!Qq1aj(Cc=97Jc95~6Xf z?2uZeW+tm9Ww!^bWo0ypBSWndQ2SbG;T9z^si;td#zn*+BT$qT|5Vo1(q|+&p(5LC zM3zxiS8x^qBBoaDzw_2-{PAI;S|G>?Tm6y9#zwMd`orkj8AdcelU$Zr^zJ(Ah^1x=@t8LruE>@rBFXH@_i1zD!}| z#pgXEJtL#H$Ddz#+}(|H*gblkLd(~D=t6g&npGYhdpHOHu z+kHKEZ;o{CHl`}K*~!dpv&T9Q(qh*9!mW*+8rE6z>V}Dn%#VKP8X0-O&=Dvaij*pS zS&rzwI!ZbEFlOwwidF-P)$jn-$n`jy3x7gx#AMkMTHHX3~L3+DTuqgUG8iEuzNv_t=NuvB_}>OMHJ%WmG{iPGnz-5?!>; zZM{IUOgUnh4oby2$T$}#gGv1!_jNwbQxW4i1w{s?=fMaSjUrb%tdtHkNvpCc8f}}@ zXb1azd&1_G3tO4DDQ_9y(S@X<3!=KDY1vIEPqVa4Ta~Zf$PWz|;k7D9Yex)cVWNX7 z2**}fTkQH-rYy)?WI#IGQ>6VEO13gu-PVRqYosVExY(L-) znW*0=0xm?;ax?!39nt(;>MM~riYk6~S^C>w|N7rP1B&l__RdDoxNAx4R&6yp7e>Bp z-mrPow=l~qKU}EDNrZK9q+|gNEsgXT(@K1eDva2FlFAB3qW$CTaSYOs8_cPx&2u{7 ze+=d@H3$@!_~JWeddGT&wVIoHWCXF~S5z{y0OOFH>_-3I_&=K^J zgvQ8^<3%#^fZGTroyA#PjG1ax7YXJ_Ldqi`DaZQK^+#^R6da*Qx@G;^iYDfaYTXzY zSykMB=g#2R-J6eUAEaIHoWf-+7dW))#!l+To7b8-S*p|pjWwb|1N5BC8a9i{A)O>^4wd@`R4|`hN=6W$ zo%Tf$?~;M#TIzY|U^}{*RkRpt93*Oni5>*ny3x@m;k7k?+jUsP7>`JkPvI`oXJ3pOQerl-Y?@e zd^Y11k)mEBwN@J`-nQ z6Ac<01&5z$P<->1w~|ATWkr{Ws-jZ#SE7U|Kru73^(eZ-f)d)7j~;ipUeDd;SQ##NM(W{x@)}~mSiSp?jpfWN0Ow&WnX<54I67ksl>|4 z+J#uk(a^s+Z-3hE5Xp(whLpLEC6%p=pC-Mtq#sDW0-jNzv8F*;LqPp=`0%*ex7YsN4e-wbv5i zo#trp>RoT05LwZ3_l}G@kB&}Ecc6GUIug^>GbO89m})^3XYAI6{-K7Un&a08?tsLx zyKFRl{>_~}Byaj&yf_c(&VG)s$b9@a&mX=Rn7DnrZ`AlKP~?+uKOVzq^#@Kz;r$=gUO^*#soxg+~p)=cf)qXV7ft_EpUl`)Aj*cct#)Q+-VEa4kig-#S zyDJd$FfsH(L)*y-D3-QhwAApI_3uC<&dhR^q&+l~x*5hbJ^a{aH*1LlR;@d7>BiZf zkr$WFo%?q7(h*yR=NuB5$>&w24o?5@B;39^M#9DBCjS&!SDEZ#m>2K7>-7!a{cH(; z(GNF#D1X-D3W`d3J1*5q!=KvEg6U2oCU@tksBuvrTUp9>+If>$TX!dQQ-u&rfGDh8 zoQYQ$YvltJp`uKv@VCUaEV3#oqXBgui58q~DcEZ7Q6hnw59Qa`0TSc=~H|2SKN~q z2Z($J-*Ho0@0m0FsjijBrlg#?7Anh1gb_u^4I=w5aT-h%J1(p_bNqPV_7(qrkUD^G zxi3&`%5zI&lI^&1#awB#+nbUK6yqx!Cub+0Tsm?jW_NSPi4RVFaH1J<C0c1) z@E0eih^m<;59ykbks>B)gUW>rr++*?fPl86$%)y60ueKeIvrKd($I7~IL*8XbtR<< z6P2>K1o(5=#CafM+C8rMk7!*i2UD)~{%pg`?d1q7%J_3hP(UJ$?kxIB%E6V5^uoWV z5`s@qixc6-i-H#bjoLn5CMISFj7`j!q$S|nOjtISi!_O0oz7oUIn{^yrs4l`IX(tY8=H&Zn2Jbv6a5JT-npxDJ+9?-n_ z{-v&gp6l0#&eCmt?!C{Wt}-``!NjjFy?^P_#fuR;3JUfcnjo$(zM`Xhn@Q1r`d z2{+&RrzI@&#c}-8A9j8B;U}N0&~l1_h*>ewqAjd~Yl21PFlq@#J%AR2Lu%YbRiGJ7 zTFys)SX~jfae;}tDTRnNwy}}U+YDG$ypn}v{1r80(=%pNQnr{sCl?HLb?)&O$5h0y zlmz2?+e3Tym>!a}qd<|~C!SY_0T-<#w@mL|`~^pkhAw5SLAg(`{mZ(mlrcdW#N3 z{lR>Ts`cz%$2>2^2TH{_@elk|I|$KUN)RYRJygI$vDNKmNFl zQW=U7Gn3zT&OYmmsv^WZb%jQLRfKD(!Bqq~Z2uFnAGL457b=Qp%8eR;=UQ%1#tls3 z{gl8s(H(v`8tyi+V*h z<_Q7W4s@KRo%B(tb>h^Xzt!bx5X+6GN=Gw>o<8V3{iaPin&i{AE& za}TD6dLDKUj1JI;Jw^@W?ijA)Xy>eGtK4j*${_RgMPK-Uge$mXZqRHv~_m5os z{1V1!%2!`8oi28fC+YiAZk-|EGf8rirOh~o6wT^C_~6v=srt&OQaiG{X2$$kO?K~h z1f#p7O7oh$^URDjCdP2VjCmLn!~9B&+%txUeDZ#*U}lUl)p2IDo^_AUTCQKZXwRP1 zpyA_n+JZFJe{e+Obf~?V;nK8NlYQpDu$>;O+-j1yfbmloGO5sE+U~-WwajNi&mYW}1na?SMG(2QvhU zN`FE+5HOWrR!b7l?@YoF-44j3Je+`D`jv_UN?}AT5Uug2_D%5Y?H!t3U9Ae^^8i#= z3pnJ=MOPmb-zqS8JD_phPIgpf3PNLztf(j0N0!Bw%Wz~}uuR8XMR(|7*8%|l~%N7a%R{Js9E?y=j`Hy_ce{a}Ln^RU0y^{dmT zP7P3i`Fg6qkD5x~qpLWIZ-093Dot8Fot@R2;=^nV<|GW=$s+8hYM~^KyAMfrt za{a=?2Qg0WmH-ePGP$M;TP~k27&A3Ial{F^f5UJ`R@mVwI__w!um9i_#=u>kA%oHM z>7Wure$j;74FxbK?sCr<7-CM!938nQZKnY7@L@AEcu0UgGc!6+)i}^U-p_c=c;|at zmeb>29>nBnAnjrbis6LLHQ^l7IE%zWg&E!{0!2@siqf3Somye+KmLH5fAquOU(=x| z60?aK6!p+q=OI^^q7GP84`B}ok|rrk95W4kIu!LnjWX`*Wt*i&o<@riu;nRE+=z)x zH)I5Zix(N?`2Bf$$cXDGsbqd-d{8__KHCT=s#$q$Oq(lp%>`4$e)V0} zTp2+{YAp!!+54F;PA*Aa`Py<%#Fh+zq6M94Tu^^AT261 zxQnTxr_I(+AGKCiTCi!`(Yd$aF#fn2jp?J*Vz3btCBxR={(9HelXSj)LiYZksA-*% z`PvUpW|otRJox*6|AclMfnqi4mbsa6bg<{5Sql|qR3zn?KoR@TkIu9fW#k!~HMRKr zvyfMVV(-Ui+6bS?@0e}3cejTp!Mtea;m zph;kVRZaFb;zGA0+8uO^$!3HeK;jo4Z~qwA zkSTMR$VL|=YOe)X>7CgX=Fk9C3NFpA(Xtw4(2An%B9Y>}} z7>;%K(LF;8HeH8PgEt4qCMG6s^>=qfxjzC+kGe+hc7x3RuaOHI?5C6G()p1QV&v|- zgJ(Bep6{CO>VmL*i#{pI3_9+4_n&|9%QbLp=+4x@#MSF(&k-}f_*{&{-X(Nt|H5!R zkGRqM)ndk?DWYfI-O?J1n-vwoqLY-DC2piU1k+}DVyO3ZU*=y@Q@9Z)sr zZlVvNOHDvT{WH|ZxX5?jVwxXox>Bj&z(t{-L;?mFP9a$npg709MY@0pMj?)i{3LS@ z<8t{RcUX_Qls8%{G2rO4a*=tP`O25(p}2UdjifCpx;W!amWlQk(X{zm?eEc!f zwiGWnd~`+zBq*u?#lYUsGuwNMV%bbzLYH%SxvwnJ2M*OK$7tUcC-UG1+O%_=oSJGo zybD#Uv2$cNpWN==M6JFeSoX>Dd))7){Y;Yh+U8_V7Axfv65t)o%pG$UYj z{-rFG+a0naCcQD_bVH%LoBwbjEpMcmV|^m?12W>2{x8|x{G?+ky^>s%Ld(GoX99hL z&m2UC7L9F+D@Tu>35AKGCGqm>Os>$ABMjUrioV+1Gs_>6v7Jy6EQ-NI>@8g=hm&4t zvA|cf(cDA>(T6Z)I7`7$fskt}xiS~+P#|dKU~grMzaWKawCUj^ZN7X2aRA7O;VQoS z%O>LI^IctdcwLouZ+FAEfsq~-m-gR%$k5-TTho0LkES2NrRl39Jw2miUHx~SKb*Kd za9-x0$Gac07WH<2R}7iN@rjW`iR= zFV2t9>VNgpkCBL@sKwJq$idYM$8f>~hg z?Txll+#kT;P9y8h;aedd^4Ye?IeGP>mtI}{>Z_WkxEwE0Rr^qp zSc#Y#GF|*40sy0HK)#QQkvJ`)x`4&1U11boMB23sEM_Jn@!ux4KtQqizD0Qo`ymu@ z%{Tt`UpH+3PBK&kT;F|i@S`OsKl=EZ>OkazOjT%LZ)WeA-rnFid&=J>(a|Z@1hN`+ zvQl713JV^4H+=MAYkS4v3YeIk1&pxa;iB@7&twL=Qp6=h#xe*If;1>%1keIS#Y9=6 zDvjT4ndcqUH$2!|S{8v~A{bEOOh8c`O2HUVB>BhyeL#Z0155)W3g8GH|* z$j`R`#RVk(bqQKJxIg*5P*IblOr`L{?kz9xFzQ@B39g|GJA(h9;Y7bk(T8VkhF4@l z09(3KhtVNp$7O)K_Tq>v^C78tz;124c(JU*&q**bBgzs_()~bbX;V#3%K`VbN7m;x zl{$GJ4~|^7-qjvumYDr9tD>4&?P({Dh|_`E=E|zmRZY#=Em_0ENzvj7OGj07Xm*l! zP+(DhZct!Gwr}rITDcK}{Qc4PK#>lX)^2n?mi+9@hLYZEJUqxd+soVc?!q;cHbt1I zWX^?;?`&dF24e@l3Y_0kX+sz&Or-FvNU4eC5JB54GT@FXwFm))haA6F_6|n2`Xd(y zT5si+qZ&bb%_Mjh7McQ1xQOjRXpa|{ArbO zCjZ6h|&F-Fo@je{N zsgdhmYpwRY@z1|_*UBsX@z+z2`|n`=-(dX@d%!6@k>}^UMSMp=BKGO0mz?q%3L^~d z?ChYT$yz5vJF?Un4J18GWLgE!XVFT5;~v>o?}I*`^a&W+nZQvlFi~cHWgzA~>04RP zfFP=@1P?%Q;>qOT_&0aPyGLgZuUo%nPrN%-W;{e$m;n@JgGNMseRg#aWy@^uETFgv zPjM@)#Tj8?C9m(5QKWa?+R7iAgP-cNf+9z0fP)4_KuA=}UA_FwW92vs*fbPz4^w`c z;-YHp#`G~5F&&J0VMarxD$`&JxH=U%i??VR>#$97hng$OX+CNPiTW4m>1A%`KB_pY z)Wk3aM}8PShlu;NWgL3yz%n&;W+RtP^6I5;zh=YSi&R<`FEij)F>$r+9&=mnIWT`m zB%QC79LjyHR&Lo=hS{rgDm09YMGjSNxG(x$KI$V(cr74Mr{Z5Zk&TM%?BJ}zP;W>V zj&md@IkSvfgJKYS>VaZLFn51oq3RSU^=eHy_Y*yQ{t*)AZ9yM`|7bP7A_rRykvxFr zOlmT_)Xs|*8N33&qNGq9<3RGDp}sQj!gD?juESoDth^R!N>m%Ya{~Or?7h%Vb~p4A zD00N-#G~MT09EA*$}O_DC8wgHB`GVX;Z#e7(^^`x!h(+V9$9s`GHthaop;mW-G^^% zwrgrB^mpGK6_uV|TbFb!JZYHvJUvUyBKg&zUFn^KxPD-8d`(VyFA7JL_douqguj3< z;WSR--hCUk2bQ$8iiYCvR~%jP^7hvi6&YJnG}M&N@fDr55kibbyke3$#9*R?)7&9R zB*)=uE*1u!tHq>)TObGKFj1ExJm!H5ca2=&qJYr~EV5<<0M1KKDYsH#18The_WL*Q zJijne>x66}BPpFj6JrApUr>IYdfweN(Aa$H76U9@V~-|AA6!3cH=K3#>Z7ia>Bkoa zKL7kh&xOtx*Cz&UBDu&cAM-62?)LTc+-4dEPx0(3HxFCSb{0~(7eD@*J|3FCHM{fh z;rMv}g$v#Ioea#6bai$j?~T2G(J`W>gIKvP&&1Bp4s*BjA|8-AbU(wjbacB!+pk=| z$KFcRBG}CAA(c-ndZ+B{=+wdd@ElR$S5%bdBi+cL9yvGKH4~LrIoLnm-E(?o_wEC` zjaz8-VQmGAD{w}=!+~OaTGfe;EDqR0Z-0T}&OiLuACj$7!)1*e>6}c`AIw&iBX=64 zpctp#yo>C&C>AagV|)lIqIIn>so5OZwEUvZNS#megy!_|MNmqRig8DM7B_rA(NJQZQ92BXtY?ZG0B`<&Xu?SLO!o*KdUhPGb?8EjF zpbQlQU44A$2$FsO(Yb-Fkdmb@tS|HR1=oq~?fVY4wo`QNARq`8CC_0jb;-el$qX{F zJVi57fYk!Ud7VaNhT%{E^M{cL#m2L5951gBg={o%vx0)dC6kyUvS@4*MCBa{28ySM z;-PN__e2UuvpF#8TTKHgC6o440@Z)zDgLO38z_pa7{o+NI7SUS52H!jyTQ9A(T^aB zd^#@zzvC>fDI{A;u_Z7*I@&(2PTHzu32SNwOTPF(PPu%C_1NhM?`Z+U3P_8#NjAMv-qql{@Hnl4-UoS5qFE=zeLiKG*~>k7S-_`zyxQ*-IiISKtXt7cd zR(1At1HH$0`yO`Pef*qRz^-#KmL93`sjOld>89`k6X|hWfa0Ay7cTVm6H{{$LuYBI zmM9$)D1tYP+MT?N@}m=wiN*2sIOJnRR@5QZcBPdUv6;OznurWFyY^(zAAKAzl32VX zO$GWo6mf!J!23hz2To_#HO=%q>?%f8E+k}kOGOo9P*uf^T%|YiJ{ewkdH(u|O;XD8fSB)ICt6vk;tdUu=Pks!%PNK6y&7 zdT4&1Uj5MV3e9!631{IVrjbqaCZ)5`qRhdDHbd=;=R8TSmB~tG(WZD+_^QXztk(jv zlEr*Y5A;=7{px(&4fIwjGvlb#PYu1F5$VMk^!G;vRn_4q#7gYvw+@Mu@1{TxTN&6va{e*MIxN z%O}4>i%Rnk0SSG3*N$$K6&~$H*E0Ewi#T_6Nmy8FYNUMo=yF%r&`?Dm*FdH>8B%I* z-Fs$leok`-K}S%KD*Pgal)ra7P)yW-7_Yiz*fc%wDIP2Iui;rnpBZV13}d7v1Des! zN+m{`V1j&Q)qyMjiWpf%sXv24MCK?|$MLxeiUbxq7Fb4==V z$#mWb78MCK^=-MQp3_vg!KNII%q*yPb>d-L6l9Fl&?-n9_1(E<0>z^i8zjf;rA^UJ1^X3>UrO---ifHhKS+lcOR1k1_O|5Vp zWg#j1$K_8h{ro;;Q3BMyHX^k$FB}w8itIv@SO4W-{^ch>d2eW7Y%n4|Z-3`#eTU^1 zwyExCNkx6*Jx;~|MiE=U|F(>XQ7OD;ouZe#aGSS zK+%_;oU$$RID|NgigM8mD9#~LflGOB@<@+jFYtwSxozKsJP(ADuyqJo{1+&PY)Gr>eV7hK`L{ZjX-fJ zP<&Ojz$z-PRI>u6MjW%iEm>r|t(b%r^_vplC}K9T4zZ?77n?gvj}PO3UYM*$iNtW} zjSe~3^QFm1P?1Q&$WI6iH7u$-G-zzy`w_)vbOiv2Hb6@tz5T-v55AegzrvPTmd>!` zr^Gd|ER3BKevwlB4sZ={O$tq77nUo2poE+4?9^(@@9040n7mgZf78OkV}<#9j~+}; zAr@6o6i1Oblz&HuA{(W{rB5+cY6)QqifXh_qvncgU)Mxg_wOr}780v!Ya#5Tg)tQ? z2a1@WIZ%v85K_o_23l6rXd^Q>3zN@sUby;^qbT7s0k=R=HVHkzBGQ^=VCKQZqrzb_ z0azX4SLBb_R~Sj8PZ}UJcet*QC5Nd#YngS8cJV!4o*x;I5fqexLLNi^HHis^#(add zA~O@E2};5nXCdlvM@K|jPB_1jq$b1oy26Z#c>=U*wK?G)+YeOoUT5?>gfAgE_K$0BgC^Q%KqJde`UgWt6`E(fv z?cLDJ`Q?-QL}+O%bMAPHYHQU_0%x6y%2QN#c!*jPChPk!);zyrps1*@sMHm))u`h* z14KDd$<-HZRLP%b4kL3MM24Vc?}p=La4cUcA(W zm^Pz+ocg*?^fT7{xWA{XcG&yTqeo}s3(rp6dH&6X?uV+5e12$pV08D97wAXa>3=-c z*Z27D9iZ4fIDH%9eSNua3MpHG;++L3qNmf(XHMZE{vfKJpqc^_#Y)W#H7M%am{~pQ zZn)OZ=a7r3Ey(~YKcbmvF}1@NB>^U^_#{7-va&y9qzrcv{}`bB(?9;>KfJoW`1aV~ z^}{<(kDX|A=Y>tNrnaTAs_{hQ(=YGcyH|DZM0x~J#BpShfj*4*oEHB8TV~A6N!4FF z7OE2CD(C`?tX}(@#3D>v?Ct}8A&uf8xB7)^F|K(8oz=B+*8q#|*6~QXXpob{76I}3 zgdm}_a8j=`%M*OQin8Y%N#ztSHn+vgl%YW7IbvWC6NyIM6c?8(?k*PrV);^Kn*4;$ z##a}hsMMCUp_oPDT#{2Xc$e@QPtiaMMRHFf7u5u7BTy6*HcI1|vnS!K+Cxh9g>;|2 zjg0|)jFkQ8^p@k(UP>@{FxDPcl6NGy=6x&{T?mPxl&7dWi`?IEhWRjEm``{}W*#JB zK+!oaKR-4G>J`Z zKUaAq34?s%Y3bPlid=+=qUn&LLGkyW2o!ZsQJ-b`F%orD3KSI;iM)xPg^3jrSXxMZ z#MM!3Z0zndtKsUX1M?H(+Xk?6fWnGb%CWKl6*mvF?T~%cVJX9@kt87fd?MospR?IJ zeLOrMyoSW$0h0q}j%%Hctnx4}m}x#8Q-3Nwq@uJbuPL1FCGWK;_Jt+YWyL#MzJGXs z8inc|QKxsLrDa3o++)89LS!SS1uT|^m99k+yk7QUMMN}Jz(k}JnK4(gYjLs#Gq=}s zV{3adeXC0t1?^q3WW!Ma$sj!k&n87hmdZL~=IXFg7j>iyloNjt7{Wgn!6QtxHAQzBgNiOxUlbQHBY9Hhzwo9#9L7>)Z%XIH^>Y^) zYGK&<@l^MPzJZ4idv0R4l~hjGgImaqp+Af1^m{QS7)CGxC<4;Q3s3}$x3E*YS24{@ z9R)06ghQ~AX&0BUNDnaY6`hJDh>>k1RYl@4Iss?W2PBrkO=Y;j%1kYO{;&V~kN>bJ zed0t%L)FB+v9Sn`Wy`_CvYO_`^e>-QJ^k|Oy<)t@^eCR-P6O_L4%j7BAZL`~8d%79 zM6gya^$nq7?)+$83R<;BzS_-8;k-g_Pq?=2yB)H78Q) z)qGb-%40F15%=e0C+3*C%>gKCyAQZvO62=TP~%uOuL#^9{~}u+qdsx zH#-XL{7ES)ZN}=Lq}ry?6qbL<4O&C?JS33@vE! z30{WA?6fi|m@Q79Oh1LP^i9Mo-Is^T;PokK=!vpmvtlSM7v;}-_`{q_%Zk9KvQ ze|X{R=a<3a6usP!ZeHlWJIM_Y#Ddj=`0e0_m^R_D&2?d<6}e?3CBrVw!7 z#{cV)wR(BWHM&#=FQQm%fdVi)B?tF37@gPKK#USz&H;@MZ}xD>+M+Owwb0H zRXBDu^rICb!JS0~sA0jnNXhBy#$9;;5edjt;H;cu9g31=J!Itk7F7JFSG>~FYKxzu zk6e}Gy!@qqd3EWUoCfquo<1%9lH~-APw!Rju5E6t5>K(YB|glqf=G*&jHGO6NNPl; zq%qN>Qt~Sr6lL(1g`6t?XP`x-AaKD=R6}`ln8a4PY}=ywT1&U+bq)Cl{iNzAwpD|8 zOND)^4F?RuFBK|tf}mTt+PhijTtp29%Z)Vx zqeSEmS|C%FZ)EDi5M5HJ!FPu!`71A~6RPRgYp~D(}nD^H2m<`Wggp>aA=rbwFJ$nRf!&ah)PX_*lR% z4c0(WjYlt}6)Bj|<_Z;cC~ElAnE3yBiXt7x*9BA628s_*cK|v-u@WlwYf!v*_e7yx zef`awCvX}y+1eG=2|0F7W@%|TCQc^qG#yn}msAr_hsX1Z^7E_7NR2#R9TwnAi;xs( zkm@Dcs+s+^vA7`QR3raHO;%laLXCGuQFUGT+9O|W-fU@@R&l`Xh?CQekn||;;o+d+ zVSWkz;k7bz+oHx8^QzeVQgs?J4EMZYQn&c2!SU`PcJ7I;`SwMK=_I%9L-=Udl1&@i zf!F?4= zbIq$?%@>%0KMyM-f@A@rG9!@Zp_FJP!3Y@lSjmt-#I)wS^I5V5ld$`chh_ToO?nOo zdhq+sj*i})hKzj#&Nzv8Zqs%>Firh=peK991Jt!AhO4i$d4NTJEcxp?Pu&=Q@$AIa z7vl&cu!4Opce-CZ?Cb91JT;E>V;U6i-qM+P>q>+f zBPrs_TDm!*BK*dhJBAkE&kHSs#0WWvWb~ZE^vMrhEcWL+AUS^?m!=Ei{}r9w?G( z9^t}BHkyy>9}rw}4M*R2^`|dMFXCzi#YKeCsS| zsj~`qxQ8JLi<*~$qE>=&AZ}S?%IF_kO;_%*qWGe6!2zqCf+|Yq5=jmfx#Es zU*EZrB>c(m4t__IBGb{k@DzdK(cZ0@MGltMUb&$lklpq{W#G`gRMLki!b)KwATlf= zHZIuJ&o3b1kZJP1y+@Oi%Qq#JA1m=SvE4!)x$ahP8t+DcSJhu@d$Gtx;}6L7jX(V z^3FI+ymNu7_Bc=kiBlA}yEQ64);&cWMKKbK5h10eYb}rb&hUU8xnD05n%g38VV=*CDDVAcn!*aD>s~s2l|-`+#Dg3D_y^I2Xl-x(2qbd)?vH=kdQh17 z(T0<~t{Ks(elGc;Qdsc{j0+2pEOZ6O0u~@iEc~JT%(%eB=mf8I)~nyyd30B@OzPng z5)w0Nhh^>pig7t?rvi#CYM>8SP_1B=*Sr)X0H&DMi>Tx)uEt;66SBV7J< z$5ybo#?QgW+Sr6wFr zAZ?FX`%ra}753(D0!8!Q+I^u1U=z#`vM#460qGc)s1^$#`>D89-+h_m?1fBuJ8ELvY;7rzSexroE4SG*M! zL8P7vorfY+1b}EBi&@B+K4%VGZG#6pCmjF=RcWBe#sJZpDK9Z!97~PHSsa061a)X! z3j{^5P*b`2@Vl4)ByBpIL|1QLN%9hL6d8a3ir;N0z!k^-Ki1wQ1&XP>mqusC`9`kwGIq1`*}AiciQ&`)poqUEp)v_Xxbac!q!FDe8g{pNIz68G;l1VAAPi+S4jpA}XO{daZw!fRB1|DXZ4l z<;)R%4=~<5m2|lN#B}|Mj#GGz*p=bJ=m2+Q1JdG?0{jxhH(rrcP1GEik?7+Sy*6xZ zdQ7cT@$B~}(hG{|*FDC!B*l=Cp*C(+*txAEp=D^25Rl_tmz^bh{3%yu``39lG*JC1 zMJ_ecYxDZej-^rwD)kGDW@^SmCH)oL!i+?O?{{+^N{JbBkwnj;>Y39G2_>H_Tt5^ zyNJW~u^0bB|6{;7$o{G;)tg6>unNzoVddlboX1&08N-rKh#D zRM@ff`Gy(3BBS()6{RM058yIt5Y&Mf=Niw+HAjpvMubavh|(QFt#p!RkT)rlU+J6w z^e?TsWlQs&SGV?F3r_KH+`MIrAMa^I&h=H05UXmcAW4iUKxLHeV&~Sj#ST7Jw)Wwn zx*Qd+S8Se+IuwbYi{kTF8tuVZ)Fs0(nWfnxG{m$kY>&E2zbGFPVse&VN=_=N2yOTl zgv=Uz6o=;K{%Ek#iy{E-Fy|AryJ6J>(A8b4f)pDgIe-X6$9o zNyLC6ypUj;8jC0D%uqwMITK8lCnJIEx!N=N4r$-eYPEThS7#mWT#c)>mpV=ue@f((;BJQnB<3c&X8!V! zrD4>8=;Tb-%#sp6+IA>0tEvkAV)Cw^9o$(IAD@?}YgseeLdTBqfDM7jX1+ z9z3fJEh05@=4fv&#?A#cM|l~#=Y^=GqDU0nyamUz;z8pTs=vI$D=0QRIl<0M&7{|D zILN1PSoPxMRk*w7@d`U0|gHr9o-lRuI`H2EWs3=&J!m~;%dJs6P`&=E;w^iaT za)&i=xG5e|ncgO^O4CK8w3hO!yEsN3;`W_x*-Q1Xv$K1!YxH_gH&lH1qI2}_*!11L z>Fb}rnCf}-iB&*n_wCWa3qY~2>pWY`hN41%;^@%C=))JlRDi&yUHn8brThy)u{9DrOVEt>r{f2c?wfb@B`*R+FbEde z)TrPG1D7o>^E7x@NzpFsO2r_fVj^daiwg#Y^2?dRIFq@^z>}@d1kM^1`L?eSf7>it z&A$O4aU3bUNF`eJIBwCD#(*M76pvQCModxBh`kwVCVv5nfKWjZS25XK3$S?@>jNur z7?pBBTzm4#?bncW(Ct6JIJ%_w%rz=nG7X1lVDdXaQFORJ`|gi_{*x@x#9buCO9CIZ zU@Vgem6ki!F;X{RPhUlVauwO^%$O)`u8WFXND4)T)Fx!^OUZ1bTOpxTTqKo6%*g?Y z+jsUVD9TZk!#inWxHqn%S}dBKP3Ra9uk$j1LJm*_YpPLEsf&p(ndCbM#pKppita$M zEjHG?jC??OudHS5Wuit2Fv3&Bd}Pi4@8^<=^VMhU$DShJ9@7>jqq`;j>cLEfApMU^ zCBuCcwI=&_3|$=^qc?=&^NCYg@p^?t*7JUF;)5&UBpGQpqX+{UKltF*mFnmWM0Bw1 z8t~nB*H0f&`K89=Wo)`d5vpMEk~@MO1R zWGcPmiK*o!y+?Px^~PIm2ZPVJp4_-8SptRR@}QJVXN!#-EjktTG7J6;wPyzvcn}WD z{@UmSA8K`A(Mp9OS}qae4kp*)Kx%?HMz-s>!A9VRiI)f+85+P;Ay$RaoUN1~#FlM) zmf4o%mJ|i#FM8>h?|!;tqMy|RLPqwmJco<}VBB)A z9}ErLn!eiooJPgIha;U`XGgA%4vt=VKqhweVU4QYG$E@#o~ z(vpgtwL%Mo0f#LArH zu4Xlyq;#lO@@Xcp3}@#GRFv7*lWlEeE|w#XdMpTMrG)tym&jDJ-A#>Em5o%Nk^M;9 zv6~B9H5}J0-}Lh9ue|xDfrVdAYEj&oYt^6pr#e8n=r_t!bOnkGk>xL2W{P&85$w>n zOo=Vi(YH;Za1T&aw}MHXh~{4 znYQUbudc|M=$Xh_s5oyt&^{%(Jta8Mwf)UjXTFi%t1}Npz9&0$m+OzHM#~SSms;j0 z0k!8=dYY={O1TRbH7H`l&+#N@I4>#=E^o|8N zN%;v0QgKFnOWt_pU;YId$4v*1ZbyV~yDKgtyecfL#^^Jw&I*(`ngFt}5H$KH)g-DC z9J|W=?7~Pg<_6g9UKMpZy*Qz5-@&#Lvd#yKXqVwD|+VX)=sZk$ZJnr4_e2I`A2@$pi*4sInrohE$-TNnW1a{>j6R zJ9gxR=grLAzjwOe-qU9VF)<;A72#PGI|_D~*d5 z;hc=@5BZg%;5g4$P^8-_dmAMOvq_6G2s7{zotX>}DF;z@@QOr|$zG@^85&v5tHDrd zY|8_^pIeRatBr0deTcJ&he?l)7u6IGeLPy=r~>WvZ`(&Ztjy0143>F-qNTi|-n-h( zj9=IIrOt9V!`dg(aQaR+tvmunGLN87QIXVQpO#bX>*?&iz{7!Y@f4}Y z+|}9?sXqh77BSw+=_;cbTw`aAp7!tDDj=TLBEd&EP!#}SA?YEmIQwS6#W~|0-rGOP zS2GD=U}Jk`8Fze((4oso3TM7kx(QhND&z1?EI5$bOP;&wOB-K){pWAJ^$Nlh#vb`W zV72#T@AiXuG1Ypv?cc;JtREcm9RdBo%$4alPtn>hel$9l6p}CH9 zl&dO>UZb8HN93%FKB&Z`KI;4q&1t=;iZj%8iiTW`KqUWKg zc&M%fgY!@{Cz+I~#uSow?rhue@m!HvDk%*5K*%ZD8{x%pUZW?3?A*5;mckfx=l&j7`l zG|R~9AXodqW5Fv9A|LBn;+oR#8dtKK7Ovznp`v+aQDCq6VwnISF>Uh>iA8xM#qjZ* zkm>pN3|xyx)QV5+%i$netO)w?}f^z4*q>ykFo-$yZ~8z^2f z{xk+Cs`(YzsCkM&QMD_=M_8%n6m=%vDh5>XUnWM*iWN0zZM z!Z6m^dC8K0dMA1HvMml7J^{WcgfaK*yFIS_;F;|twGN&+_&4z)3&SgfDg69xBnPpT zc=fzDsreSwgM$G@o*{w;hMX|Drua=GqSi2|LvdkF4<@SO$=ozE7aqPVIMf|Na0Uit z2jA*gpePweTu6mQF#+O_u*lWCX+`P3{kwK^7&~WB5mViaHm|TPe7V?b%ec~DxFAUj z?KLBgCWbazNq9|#nkZTiVl?SbeNJEV5R-Qb6gTeN)rLaU-j_u|Tg%g`%>f_x%4`F5 z+VcEZ>VcG_?aLTS*s_Mz2^{x+-qDe+<%m0Ei~A;4Et0_0{bd&(^^5B2AXo_%hv%)% z*DuE_Alme`m&`LNSx?v4csgP4zJvSPWaEBCUJjOszbH_A{i99o2?;!z8jwdyvNRzz z1Bn}i*QJ+{(y8kFlK6zCF9abnl;(p#aad+P3%x1hDk!S>xwVyA3!^Pi(Ok+dK(Txd zia5V8QG;UWHRR31Vi;aAODHsU%xh>V4bLuws%C39 zZ(f^7WztvVHHiaCl1UM6@-%g;I$b$4GdnvI>Vw{o4BEmFQvq`(QfvvN%g@#4d zx}oT(XBX+c!KLIY6dgTyfnqKgkMvO%Qu#=?bpx`oS_^1R7|c|L}>)L{OFBtm?B!-a}m!nx*5{200N zP-Gx!Xa7<^bjR$RTn_#2ch+l7qN1X9up>*RX_G0LCe;LFxcCOI_)XyP-(36TH!A{H z{D%E3$3LXdBGGeEiElME#e6i)K_Ot=V(a2%Z=|%%6hN@K3N$F>3Vc#=(U#`uPN58~ za63P&0u3>UsNLvyF!=~r1Z*myC>`1;Z^xQ0<0)aK$|!1y#5tF74wQ31RA<5F-~D|X z;qwAL^&*Xd!BU&$FBvRXIDA#EFnt~2JRLdDi8ijJP)BZ&{+#)oj^-(xiJ2*Z#adHo6H`fV9f}xNrnsD{#KKv%=*&S;s7UmNal2>fQq!^`*Ff37cP7x?_ zg^l02AW%HTACnlMm}9n9oIrfI3ZS_8(B{pnj7uB5G1#YkLa})udUN>^9M!qOTV+8c z?-Ph6CCNDuBw}&VG_q2qj*qW!_rn+_bYUO=?=WL0q~CUqB$f+D+U6I*6#uuOQylemb&HbLM*k`Ys=TrlNL z{(YuB3slty7x?-1tIKU{Ui+zmf#~Zj6*S8Djm~dX5LXv@MuVa)|5Xk`xu7B;XH3JP zUX^x+iM_4+TKD}05U+jwQR}{~TQl1-W!+0TOcZk^`6jQaGIMfM<_@cwuQrN}3sQ9t zE_KHWLsMEa`66?JS8~mhv9@cWN@)Rau@K`bOX@V?h`rQ${n8;iBjm|x*7;PF?A?1X zGc!!2+U*Xo3mE}^!sX=udimg{k}#l%kH}W}3Y?Z=nzp!C2nAOpYCwQfzL8%GU)!mxDh2uy(9hL<) zZ`BhH=}`1{&v1mFk*W=IUcxmJ(}YTH>24yd$D$_gtJASA-DNI~E9Qi>HVOUL=%+gyxuD zLUvKtJTNCAD3~(>eMSgIsPIL%#bRnof3K#`o{OpAke;`N?>YAKNK(x+?J{Nk6E_jM>zSQ+_T3r^4JMIbi}uE`mcWm${e%jiI_{&(>|Jn3*P0-?o$Rn<`Rr zc`lTe;b=boLo)6vgiVg)27Vc?H?Y~@@MLbIh74)qhOi4WXxZ+rDgJ)#8;$;Q5qRZ{+2mg z#hPc9p`@)y5KNV#8WCyFH-7%c&wui_KS57#<4I4?jcp$u7a3XMB4EVGI#SUHqUzFI z@$P$W8BtYF-uuNbm$&Wx)6rceX^eL4h!QB4rqRHYszVW#)rxqe1ZlP_bthR(WX(z7 z2ox!5b99K3D$Wp83>V!my#UVJZHA<{OSF+5fg;kXt*t;&+7>k^9u+A1Qnm()n$^ws z<-j$)qv5YiYf!@Q63Hnt{2eF3X>Up(Uno$#c8&P^2VW_;l8m6(x9hvl7b@fm0HAkFHYo2`e!Ts4U>nCTjc2rJ&fBz}2`fOt$HiG0n3f0T%4jHEtArR_?{t1k z)(vRc>0U`Iit}gz8ij=F4Chd$v&Uytt0!$u&EYDoiy{GoWCRDK?lr1+X*KPPaSafq z2u*(?lhK;SEYI64eht|Zo5f5~7*I2m^p%0ZyO%~UL&d3wS09C6?Lvul;Obb_t?t`n zXjPMDygQQKaM8+Z?fH?R_m8+|H$Cck-Y)1dB*(aMp~*ungAeTHSuyiyL=LikD8rS+qu@}@y<%~4glD)W(g=&Z1fAea z?XhMFXVHvc8okX@X?de1b?qUK^~+w{X3A_@G`{_@L@?i|8aGrWfG-3gYf1m8|3q1q5z(nHdrORbA^ko+~*9^;|bQ*fwrLQJGyT|G8ahJ7AxDxcy`sB4J3Qz{E^R zvV#-yN%U~Dlul|Ybl;Qk_9ewp7LD$VY?yYymn4C)BB;ca<|>=Fe)?*1>sG$~TU$5u zUi-~3k^=zMH&{_I#g|N2bzpU&e{=ecb56cbCTBn8m)iRJpSJIcZZ1xb+K;{q_@n!| z)Ey{(w=q9el8FHU3W}f+4^s8#h=IxkQR>9dgkU03w6`I&P?5M@O3(2)lZd>?e*@09 z=Wcj;@7|J3NRO*{P!FGx=oYFY!#I~!6iG4Yrll3JzosHgR7w#1&OWBdLQ*jWADTW- z85W#_qWZcY&B83$aLzCXKaJH@xHT%znAFs8>Q=`ow8trtP<%esP*qv^q-Fn1^Y`DM z_)_Nk?$_jnJp2CH)5_VWPigsvpLO1ijcNM}4&OMps^DSHa+PzT=gWxL!_;QAjHpp;k-Q>~ql03i;vCNa zR`&QwBQ0kdCjhQMQNOfhMVt`BQxsLHMdewlomR*nyXdJ!aTQUOR~tWGT54drXsHD+ z;8m0TQm$Mu&vSB*o?L+tU=AJauycK_5W|)j4co?NFpi= z8P2)(MNlcr2XYeW#0}smPfaY6Rtw*ZIEK!w(IG=sErix1j(v$vdG*u*T`0=h`px4kJF+#cS{eSwH;JqJeaGb z==xv!=2Oj^6g)0fH<%{z0Owvqd3)Pyd;yOX7a3}Si~>6OIMm|-rXa}`cLbcm&aFn| z7scklC>cqejISCje|701goLF03<_mTdKu``)A4wH3zkxD zBw_c3@`Qd56lHh7hQ0f?Chy8bAgXPjVxpwi&AB3ML02(Z3YW2>RZF7)XM3qX2Sn#a z)Ar|?8+<%C+O#Bjak9lLKmCV;yJ+3;Y~5bnn*y9P-9p)=N4+{Ih%U^sz^uZSsF+!& zq$l4$n_2bt+k0F09&F2W$!n-DPLD{dVE-s@dkJN`UjArfoBYY?{Kl9R;SG^FT^XTL zGK-MYPh^@D6qR^I240^~5hjw~W*-5g+XRK1ctz5QOw4?8@7}gHXHU;vIutjshhOs) z7vg8UTa^|3MC>o9sNYje1d5-a5Jc=ugJz0y71hSPGl4&X;zIbXu5>%T;@^)cr|}f? z$VjwY3D4^wrFiQDG*1vcgn1ps``@1giYK0ZfA8t{-+wT9KcuDL{_OYnzMTE?f1ch& zU818dZ}Le8O59BmyFugOnaP-@q#8%NV}23!>FF{8R>#_g^m?WGSE#rcP6{%cwvQz5 z^vc<1vkHpCD+*aFd#tU9U$oq#tEOq5g9B&#B%B)nB8H)o(I z5_Wis5{4r(0Z;XrKVF(r@LVK&t!Ti&iFAvhiJBy0{~$UKBh!PUr*73v)RLXOHQGJi z({;OVwARD=e9!2r_dHguG9K!gy3;?>^AIqyz2M?n1lq16MT>_y)jfLs{P`}Ji2Qcv z=bu`!J79g-esL6aEHdWT)kjXTr*mYGa9W_)&FKRFI7C$S=lc2z8D%n*o%Zf_PS$3n z;ojK_bePV>1s-P8W$Vv}xx(h3^$+K;_RdmoU%caKzNH%QqPVCPWhAADzvv1olQL3$ zM43^&I@IcNrrarl$Me!rO>bsslk8w4nv=2dX17(FH7LHCTMiU+Q7XbwTr2~6b5wjA zsY7$#k@!t(P@G$O3Ld3)i-)dJQJJ<)pEFbx`_Vpp5UDSwnp23-KSa^lBGzHi+p452 z;8S4y3Ea~_rwT8adaT!-`7G_JoykCP-qfeVL(NnK&pYj_%K)yyYIE)^n}?!qJk@_aVU?bhP7yMiOtTocUm`jo;(UU<1(qvl-SsKwzKM4 zlKeqMDKci18|>>{dU$rSApFVq-*@gWaBN>9Q2gh2ZQYAII+9q@gritmnz`%cpS_bA zc>oZ)YnFCkhbqM+Qf^jIC-3^+`c&TsJ*>3mg5OoZi7gAh-#ygid*5=pUSV&?XR z@OcB_^M(y4H}onf%1HH`dM&jQCIEv}T2WV4JT9g@M7`(&6OYL_i_DcC)S-w(8HIYN zKOa7?_)9GEUFKxR_#O(f(mwR4BYQYwe@NBziJO42YnhpBPM>{x z0&nrz{mJ^6FTb6AszDLEcdB`Cvhu_SFi(bM&;^U|_BAo9C=9O+c@l*-^Qjdq_{!$P zVydPSo<)x&R_A~EK2VhK`3c@Uf;uU=q0BoJ21F*TO-=9;UBoxv0)FK|?R#v^i-K}3 zc+EJow(lK!TsKmx!&ck0mkH~DA!pf3VCrBbDM3>_MhTzom1v?By*7Jn#V0i4800;j z7nfT1HYasw!FCM{={iPQxSHElfPP(>1J7f;Sb5n}hTdaq%8m{)kZX-Q`=4JRw+EZX zt`2s0kKVlUAZu9OW=3%U2QTy$o3#v$TtD)jLjY>%JyYX1A3Y#meuzJK-Oqk<>}KQPj<}gCVU2pOUr>` zV7s{MxJQz=HBj8p_X{jFg^M_cI`c4|gpQ(2DD%hgO=qGmgsuCEb3yd0%3b8leO(y> z4~|>$7Zns2+nXjWczMfTQC#E+!P`P(&Kwo>XLiO46#o*7aB&XEuK~s7wEL_! zcQ#m#sVQiAK>!&bvKm|QP({qw&h&1-mMm>&TJHtaqeikz z9w;qFqUW~EvP`U`EmImBMT;;$y1d9R8F_fsK)kfdOURgJ*)v&(PS> zo9k@z#?MJJ{_AhwYKvpF9ju~4T%Fa#V%v$z+GpR7cb=WuoqMtsDE{5w{q*f~H=FB_ z4^&B#%w4a){!X%=JL^egObs}ug&au3apdnFP{Eai&(z@jkg`S)g1s2bjuLZ(t0X2% zoh8C9Vrr!=b1VN5+}_L*^eZs(q!K=Fz;SFnSq|En9@Hee75CU}0TY>QVIeXB@_Y#j zfN4 z)q~N>%6eLKt~AttE^b_7)MR7hY~___vmaDG>%4dV%UOZq{iiwEk5?cd$lxPN~|qARZ+sb|({#(KXjAtL7e1So#13N1Chfz+m4QQ8a2@Ffpn zlA7RRU?5OrfMu~~a8McIhABa@`JU3Q02d{j$j(wMIa6!%Qof?9a6I(PB;PF7Ud=-DXz`k*>-QL0+2Y#l zS#RXwVtsLBd`hap$l~0j*=e9_VziL|9i+N_f!yEJX!`zvfs5ajEF0wy#|QTrv$by(#C>uxJ6Y)J%Cz5K(xK`qm7hOtmY7EoBLEEQI=QH zI>|wY3*4Cp0?En1Jci$_%dx`@a)$DlpZ=x`b`lyIOO_ zQ%q9(`Qek2ZVy(8$!j=#^2?gbENXiSH74RuDo#ix;4%6A}vzk|I9&q}pbR&!-w1Cr{s>oIM>fd%t*c@`ER{#Z}KHpM6{T z{kQj@KAU{{^d2w9d#6r4z5DdU++fT!Rqaz5M`8-nVhU&gJ%PxCe?tpv4g3P)lX#(B z5l^vDpva|#eC~{b;*+G~!^eWjZ&cIT8EH-I6=v<{Z1Bn}Z?L~qBt=Ss<7k{=+^ZB zgwLjg(tEU(&`d&0{4I=i5n_s3zk!jdG}6)RjY5RwCC2xrh-t@0haL?@+?u|rX3hKi zkj%M2w@!Ec(8$%#35GYHz20?oda!@uDw5ll7u_P_opYm29*jL4yW8J$zA?w+`ist< zsm}8^>=N87kRNi7&bdB*S?p_V_PMi9`V>1m2Ly_^iGyMT(~5~|&<`PB$|`1?jonKd zv`Wf?i8`nNPcsmwQ8DZPvZPcF(CQ1Fo?#pii4{3 zGS5ZW_xC$vY2N1JbEdnKs^9S^ulKX@k&sfEoeBHF#^e``DQfGF?uj&HYZ(k7<6 zvYQ}+i%6sb!<`Ar3ai40nA)>A^742AJJwlf`QCwGVD#8YPqA zzdQFIJUDUU!w=v4hxfXU$66}q?PO+{U)zKg8@|}^T9tBbtaHDgJhjs7Fa{_V2Vi67 z&tK-?02OJJmA=J|l%tuVR!~Ieog;@*Gy#U>^-8Fc7m3(+LoFM(0rTp10_--e!qHo^BoEy_q$OGd%3IY zm0i8Cu&=B4&V&1XcW(hjD9B*T-`>4@_iuF*N^W?KWv6w!@|Mk?f9GXhC42rB8J^d6 z;Gw7hEO}i)m9zyhhrJu(b}1+}m+)?Yr(8>;ND5m+$VsF|T1<|khmF=cS`A_KX}O4o zRGK(IbSmnOVOXU$2;izMG37S!BF88)i-8!WWKH2AD3xOJEVV~iHI#wDKwE>iBl=H7 zJu0|Kg^LhT_OiH&sVxO+vc-sKn7~nq=+H;vC}nAx$vylIJv1Z)uY7dncwX}1V`pep zl%c;5zy0>T_x}0l=bMh4i%X5$zV_U%kFI=m<()A(GghXTyc!rqtC_>1Jl%i}X#{+*%L1E-NxyHCoD3EakA)fXTWhI3^Et0Ntc zTm#7L%|%7jt4pK_VIUMIKu<{Kfc{=-ldUXalZ>R-65 zGKe6|nF>O%>P1!<#1tRZa=gcMV)CN~MEW=EAgC>*ca|1=BX!k=!&ikY$P2Cnf z8-~dZO_i1giz!TP!(y+26)f2DaT_hxa8DN}PZPz<;51JW2^wFzudTj~7~apdg-*q? zwzPEz?%!mL|HOm$-h0q>d@b3^_DXYIoWV2DVd0)HKIU-XPhC56@#LwsMPtT|Wp%g% zi|std&X=w6(P)tDR*4kq(m*jMx~Kq85sy(#Rs+U-cAe%k0!Um96fLEtbMX`filzJn z{3KKaa26*s*hsx)ePVVZ9F;AC5K)+@d79!UDpfGeSG=x|`Y0i8l~sg^nUW&Kh@C0x z^8Zs7RC``BPSeo?6vZBf;yy$_2k$>RI;bi=T*+dMssh5E-kt-!y(@aVzU=OL?d9IS zFCX+A>YCqk|H0i`_ix>mG~%B3_k8fqC45HgcQPwTb}?Z~aq*T=hmC8NytbDa8cuum zsD4OR+Aw^cgj}P%=RCithh`k!nuyR7NGhh$8qiuq<%-{LVv(17*F+Fnx?J9Bm?f)*pUh}2*pMq~J_ICp;{XvfH)wHK&=kO;g{w|mQ#Yj}Gy z0F6?_w{J85_s?&>^YS9M)S%Vo-CGu3i+=Z;OPkj19qX08ZRNK0w?}$!&i>*M4LnC` zYEBiVg?1c!=hI!)Tf;?)V~kJI?mCz#_NIa&n_LtY38q!|wr0QAh=_DBP~1}O5akma zn*x-y6GpK=E5cl!T~btDfJ;Y-gq-3dMAWTnAdt>h>&+7eKc-m8$AqwYwT2rAM~F(j zJcbDo`#-`JS;%aB#zo2NHj!ptv0{Znqk>|47%x+xD7#b)jxridr}iw@Kv$J~)25r1 zDx#A;ZjrBu;0zdSgL!%dnk%^hM2U}eUs2~5rbAJk227CYVhA&OI@%4Oa1d~ML3#MF z(Zl@gq_(1fDn1n-Q8L{ovp(i0kNm`86xVWyL?QBTh@EEKrIE|g;3uVMSQ$o%m9)68 z=e%dvzkXFsqP;FI&-H_o=e;lTQ>_wKD`l+YBl{vq`K1CrTmjcDbv)9l5si!z#B9E&-{oRWBcQ)LA0JwJ4Jh*$OYu5&H zi4S@@c2Q|jGcC8iq{VUTyNkNce6-=q&oQt_>H2Sh;*PDnJgUtxJHFZQdx0X^MyyIT zdu%N)L9bk-I~Mlb@9hPO4|;cHqez>P(cYTTh(2zFPjmol%N%D|^J#s7hirVrDKuEq z+g!E9w*ypUHrj-H=&migS2sk7Ny#Q68v)Lg(J0K>UBjHOid_VabjBGynE)UOPs&QA z7E!BmcU3Dvl^!=|4UC+qOXt+)WEp*oxQjezlw&GUU)(8N#Ure2UYnG*Ztpjj-Z?=D z`O?cDU!qeHWyPB>uZs20Uzc3`YR$OJZC`!x)i)o1v!?a*v}c!&oNP{6{?(yN7cLy> z=(tv#fByKTx8G^b+-42fl90U7p}gR*4n^i)fMWkT0uqdB(2onQK8J{!G3M6@6Qd$h zHUqCm;^zdKAhhtAK$pX^LX}Sx>bOwpUe1b(3W}QnT{82Tm=W$6Lm2JV2frF7M zl2-g1<&4)v%>@rpnezSmOV6XUfoFrKlg`b7XjefI)2_K1d>o_yio6Th(+bWyF9*3O zP9HVC5#W$dQR@gWUwfK$=34(+pg7QsGl)~<?#mG*IM(@iUMFC5Rqw=eK_6?1O15 zS0V_FdX2b;VsLTx;%Sq{kJl$rr8h@WP&ZL)qG3!Mu5xykqtaArloE6$WeKbS>-Q8J z1d0tTv}y_~t=!+ht$c<4rd47JigW9?Qht*zSoYdEjEl;PLcoTSjr?bL zI5lfLMNJh=X7EV}gtxC>Nf7+T&Xv5KT$LL0>6SrHQT1WVl(gCvE!(0M75VRSsXU25 zBN{`WsOs{=y^ZTfE?s|e_9KqsAQ-7kYxe}9+Y*-b?aAxwsq1a7>DsinYu78iT^qW4 zIu0Md+Y1r9dTxDzQSHg`yoHbX$XR4}l`a1;MmF=PWunpiJblW84Edu0jGy47&T0>(*VxRGxra z>8NR}_^IFuxo5TTSz5Y-I0iu}^=5qyYKW19O%vWH*p&QYq|2xYhtJSR(=pD6KU`Vz zSH#XokL-EnmBU}(d>b9GqwnmgKGk4$@1*qpB|p_0}o!4P+JvUBQ0M6b26DiC_{#r8%2XXyquXFQSFz+{15_uZXb@ zTv>w1GOPb8JFSK62znwMQiMMAmu;@7CfOvOVuj69gJK*cGcZ`fKp%NU;%I#PVDi40 zgwlGM#cmXkaKRNEFb#@QI-z~u*O^f|o`~t9H#(*sUN7))afDleM*L4dCzoNv5QI=r zW+IEOHKO&>ptw5@fS*DB0RxC)!IF!EPFDJ($`UfTjMH-JWVs&CXevbCVi}ztWsf{pzpDva`=q!72 zX(wuLLm~2wojYe!TV`#`>*D-TSy7WO8Whpfk?tR*W5U-clD1mtTniV`BBSx~5id|! z*S?Pp3$q6w!XCz=4n=jdYEE~;{H{C4>+aNbHSg^@@XGwIJ-hmP>+AC4p?Tw?yn_6_L)_fl#yTunxP15C*Iwh5_CBw_a`95YVpU&1 z6z{LtTY|%zzpXw?7AX`NvqH@7YO`cRVj%SpiYF#DiAT}_okXK22FpOAGNq5G-PD&m z`>KOX1tKC0VQfN6Ooh*)p-4Ex{x$w_)bq}3APvd5n3O3=ldEwA>F4Ha7?6t){^1Z# z@K=RsjBAS8d?^BPXE}^rPT?FLIlFe2cY3~|{+mk|5U{**VAqkGZ{jB+d$Xs&Xr6UG zpupUkedWTHu0v-&{oSg>XP;qI{aMqN`4=u7JCxUXe1%(P`x~CM>$YZYyP8;5@x`SN zzFKqW#Cw|Q;WM714n-c&>;zEkUtP6ujK}$i3f-Bb4*f`9q6R`0FFzVNt4n#1r)W@w zn(9F*KQs8O5pUI_8AuEiK3uTT0L#YTgjFRu-fii;>t(d|=VSEnqZKIPsFdc*?q_Qx z*mEAGt&*}g@oN`%(b&-Bujy55!+QEID(-5_`5uNMJylM!)LwraldR#>4^y$fq2>|j zas0Tu_`xf`(c|r1@COw;wR1lgRaefaV2fwaC_B}`ZD$zv+h08~t)5_92d9QkuHb6F zF74xwJ@Ld70?onYS5Oh-aC>~g>z}=j{aQ7+9h&BjQr zRT0R^yD&ePK(RhwO5HMpP5F??16)Pc2VsK%Z^l(<-5h*8=~ua z^6vK?=xVO2Ik0ti@0z_`UCnb2P=3DE*L(M0Z{524`729Uz;yRh&F&H>zrQuxAuq2x zFEmE{un>hs4DIb`d?3QIlvScwMhd>KuOEud2_o}!{+X)qZ?LT8#Ip2tS1ue{)Yx%?-THa}4HSimRG^Xi zmQAM+ksBwZ(4sqwi5;PnqB0GHT3e!i1k1%k){i<)TQyTacv0Mk&VG*_)}`^8SMG zY;9S6Alq2f!WB%%9j!RpAFE0P#^7NN} z$*q29>Q@qh4_$!1ABBO*YTkm7dD=9xh$>!|^DM0{t)R$+6)vGrkh4mJtJ|vh;wq5~ z%;as`9kEf>t4K9Ej8waLicP*m(W=lQP-Lw>53#d@mffbxdaI|2htTj&%OI~y{Utr4 zA<*8>ng36PR3RAqAT=8sJB2E6Ti~(}dtZ$i6FYXt9%^=yFKL_k?Bu!aN>du+7!X%S zKPq-0*||HwVO)%xTZoU34?6quC4C}{<}4Pag1LOFtvr`uC&Z>pb@6;v1u&UN1ei(% z@$LIfb7wBykEd9HEIeqFc5h}9`IfB|jT$D;ZlAn9L*{qz2Zeq>k$MEPE*V!99bu#d z&&s#dw-S-hWHL28JEPyD+%_N!fv320@zR~MXAg4nQNxqW7`TmKSo6l3zTW$No9-W| zntx|qN!^O7`8~}W=l4marI(^JXnViw{)Kno;lF9=vt9CF=irv zKlLkN5I0K|=cAM8Un<9&Sohj%8x9OY@jyaVT3dZwdTx?bH3Sf?c9}*U-|rPe7oo9bJ(C0Z?MuikhyCHhc56bYXtrzm!_ABsou7g>!jYGrz# z;x~H|lm?C-D`N_TI_w_eAE!r6dqfvY+B#^O6A26D)Q`nM(>|V#xTtuI=_TrmB$#>O z8uAI6)dqadZ|TOtr&XUVI1CvX_4ZUqfTGIy`I)tbLVoE^zWEuo?){T-LPcFdTinG7 z+izS%rbegYVEM&P>*Cfr1|Oa|(N|I_GGc0q#bgY2mhy=*$R<0RU4(0DRFG?&%_%Om z`C+3>4FbM)iuz0j^|+dP$cS#R61!$flS=_f|qzWoR6_74mG;&EiW2bhU* zu#K3Gqj>$Z*+B8+%;{90eLbgwLwRr28W_2WG2UaZ?qfO>c{iSg_o#tVTezljjNC;X zstGU(6iw=u(a>bUfa3mrwF1Q^OTMi^248ISBL5jY;g^r{7k$P={1(^(#RtbamMyBO+p?G3F`4584T>$R2D)4sRFi)++^wt1O7)6h zPsy4>2T}8651RMt5W%Bph~&tUXWgsmDrCd5%p;birI*?0FS6}Bc(8qE+EpmYJadUQK9~U%$rxs&t=wrtj1m0@`fnsG z(HB@2C^0jnaMLpT=VMxFcNAG~%~NE*|D)lvf~C6I^49ZZ_34AN(RFvW)X628-wmC zD&crf@|6Z*9PJ9)0Zvzjcn6Nkq`h0~ZPJmwlS@%WizN6sxf zckb|##_+1KhtGX=<%3V(W@r7kZ@+os+Y<-UMzy7xx1~iCY&vr%*)4i^_U5#=wDmf# zTjt#9&09UDqMcQs~LUlAy3SbS5@DPr%b;8`ByAK|mcM9R;b zc5}cE)GJNAU$XXiX4HnQniQNLsn}$ zgt#EeW){_`plFf;OrQb12n9uw-|U2Hs%&Ue+o0%OY-(cPOOw2Ea3z}>$kb7mw#r;^ zMSU(v^nqb=29K<;bnuvBG6BW92S?8wSW#EE=^IA1D7aKu5t+qPBrd=d7L~7vsR*Jv z$;~S!)`xhxFe^fnR$(`=59-bFV3E|GnX4QNqSLZ>rmcxUPnwKqx1=g0^E*3DFH9wx zw$`&{vLHLLD7-~NjcxB{+H5pn*R~xjYu_(!V}3;mL#NUJp+ON29z-ufwz600jRky@g^T+79^CKNpm=95Z)ju=BE}%!-I{3e!yL=A znW&2i@ej$YkM~YhRD^vDc{T)lvweV>J~1h|Kt}DhV3C?L*Gha=11YA$XnJ(ComTEL zrKhMUQ!S2a>cG$0k%F||MM2*p4=PtvTZH5orp;$L8Vve&eXazJV3IfNiFHSgeDKv5 z-=GSV{K_}qY}xzK7njZ)MZe($-8ml~TV)Pkot~C7rew#NW4p$Ru#mO{_pR$cwlyxS zsSC*ouWzyihgGJtX@g_7Hl6sUb=A4S@cBKU_~Dz%Q{)~{go#`OMHM{DJ_IUUG;b@@ zkJW?(En*&Y>mGsR01*dGRhUaEWUim&q|~Uj2z(HZs_p)#U?lmd)^jA*8iR@S8Zz5U z^UKQ8lUebY4I9;>jaCMxG*8jmCQwYP#}{XHDaeB}ql|wIvS6EU*eFqzp@^bUQP)q@ zy~W`Zu3Y;1hIX4Xc*6L+DO#_#tS|+NKPj4EfDtYV6eXbL{n6lLr;>nnPWW&Ni^Bn8 zaG1Ss>0iT7gR`A`LV1w=zMW6QNbw$r4B>;$zi+(qjO!vode#|6g{w{?Sc_L_{Ovvke^#UP-leE>*u z7ZaDm6}4?D)#TbmZWK5g1D(mzQ8{sMvOq)e4rP*U>RChM2R+P8fTLyA8 z{SKpExT8^zFnVK1B+{Bm`6)T^QL975TMUdRwJ16fGA^Hk)i#j+gxnJJmr9|9Y7ti2 zZkj}CokDp%zFi6Ot195l-zWOqe7t>SSzB8@Ok^QeMIt@n46ddnN_|>TNX5PVpyWxR zX1Hj~7cglEd>YG{z-IcO1t==p#;OKeeUa710)%;s_wU@#-CGAx592k$>p{xj3H(|Fj11*&+I0WK zgPzc+m{fm(qL#Z=P^2A%$ey|JYHqJ!giv{k_wV2T-Hz;fCN*>8mwPO8YehZGpEixi zit-7v&MnS+Rbp-`WD_V73!5v0B|E6Ln5yYMIVJ`GDW)URmAhJ!kqd4r;T)dN?0Op?IEOM*-da|*P`eh3DpJP z?D&TLdUO!duK4Y-6(#4(GgCd5?cLLL>~5!9`MR=`r}+zz*SMZmvBty4`0xMrZ;1Vb z7}FbS%NiurW34Pr&pv!Ya}+UY$)VOPP$X;?7g1|p{Kro}28g;b`&^eFkTsX~iZ!Ug5gq}>L5_0oQ6?thm6)xrLGH{Lxu+$D z*$?w`n$g(YT~k0$ek(F@^}H(0we`wVv|4G*0g9}jLQs(0EFttLPenP((Q5u|l#B3f zloVUAfu`+I!zY~TID64))PQ6xr0aJXd4|5KnKR+7ZW4b* z%^}$Fs^`q_e?4tyCO90VqHcN=q7`3CQq2DLF0M_5_(1WvpJ;G037rHKDYPgmVhv>b z6~AjOrbDhSy65|`}gS`-`UWX zzcP&vJxavz#OKR$iz1dSZ0+B{-x|=p*Q2YiqwCgz-W65LHa_22myl4`wK+-#{dnx| zmpIhhG-EI^v4V+*aW%X4>>^Rv(diZ9pGtHoyOcQrL_nBgEu<6#6zfw`R&)(Qam9|J z$_9pL9he;QX*EZtR29nR^NRXZRfr4RoI-g+2*(-Ky5=!$r29E>gq%P^B zyFt@7dN)Uoe6%P#IVF8v(YPz`96NUO41%(_imw&5R;C`lwmhNh=A}b<1#SCJp57+I z>pz|hPucSC{|*!X?fk#*ueG)y8sAjbR+{0SYRyPG4Ec1EoFZvN-BaWNU@77AKN3C* z4~d~a{`89tJ7`GM^%BLwT{XZ zMoTVGbeX{WNt`_|ZFWt$>!l8RgPk^pDRau|CO{OE)ZuVDr?^N}c40G$BnWjwkU>F_ zD;z>q^?1Zr6l`INikN30f|$empWbDw(ZsmC50^5kDVx!|&77;zYX@i-;v$A>&Q z9VnhYondp80}9jLe&Hfu)T=E(ks1rclRE-Op(7>?|NP!RzIpS8_fo>=otY&foHPK&!Lpw2GIIEV z#*8wnk%qR_@i|Z_hp!6_pNpzhax(v5i&}9Y^1GSzK(bm=pt!#++*&IQ>}jXTZ7HKcF{3d#KB}=X z??4q&6XeG^m>auSc!-Wo&#vABTgNPXw|d#;mb&J3g?IWG^xKtp_wLsIgpuf&A*r27 zGPFE-#r@u6hmOahj3iPGnyP|`D9V5jP!!Qg_WwQ%#pb=aRtv%cKygiUYk5eVF*(B+ z8R=e(C$)unt2xQ$EsH0T!&?@m@g+(DD4{_2V8RpJ`L%BxYT_rh* zvnaFqns2BOh&wpk*-x3qN=+`5Vl`Jhz_SUp#l@6V*WiYv;ap!leni%fvZ(&tq9tqA zJ)d~(0*%%(GR4-@o44LCPmMZsr6!^KCgUsVro}5yfA-e%47KM+oB#da1d5O`y!Gno ztLbH);TB`2HW$Q3Dfo93|uNX!4Q!D(z^s*uu*WV(t5< zUadFy(PZIjj5+-6+lL#OMo@-+A9&QDDD7hDK#>JhtQBC!&%hrBhfmDKQRN5;PVE7o zWD7ZKhU;iI#1VNL_%+1|Fg^LE>3@O$P+`JT)@f@MpxRYA}Lck-A>B%m4Eh%g;INlj@-a>-;qnq z-`73Jv&q}t9#gP%7AFBNawRE7-yl984SIY<@`;SGSda=}>W@hmplC7zMUi9Fd0{EhlI>t5@;)L3^ zY}l|@bj+ghQ2EcKAIxSeyV`nH>t|GZYGkl_KTxc!O(gTma0cAAl~JXp#M1tJ^1|k5 zwy5XzB~SuTzF+I^uI458`|kJN+0uJwYw?_|8Os{C&2QdPv8+dga%u*k_?B+k;h(Xi z@$jKTd9ksMe#4vvPMEi96{;_XiF{-A1W*M)@&16PxHrq%;7}Y8Rp?Ni+iEdJ#HEH; z+5A)EOS0U(Maj!G5WiZhr1&-kx^l-``GtZ&)r_dH$XQ6KNQiOG2dGW+nPT8j@{8^| z6s5qT+{GbIm_$R=ckIC*rbAJVTY`42S;7Tu`Wm?A*_!^TpHf(aicS;O9!9U>=23F0 zADo+0omqbP!U-_;k79rS=82alu04L_gX5d;-2Cv$oD$R0XV(9C`jeB-UQZ|vfryw; z@n8Pw^@Ew=mFYRgqL@@yqeI=JP?X)KGSTu6|DcG-KceU_)!JuGlkJ3m0t^X~Z?MGL?yiy=*eAs3vm*1s@5W z1(K?IW3;9Bzd2qT|w$iWxS1Fk zOgT?cBP=dD`L6t7=BX!F%qwvaX- z&exER2W^fUD5^jj92#IE#?AgBwAzb`FX?U~!H7AkRHQ*B71R+e&5ZI9tpu9_NUZ2g2iHB4f-<(5K+Ih8VM?n;R(P z$bTjsmt0%SG^5wr=q9IVPLFp=MMn5R95yM7yq^H6fihEh0P?&^+nv|cIzu%glks02iLoq{*5Mlzw z(ze#j#C&UE62d>ZSb0T8`o|{!uDosF}4SjsuFJ{&7Q|8aiw=&XvEvK(UZ;pQ3zttxZ;SY+m%> z0YqfbPeIXK+vKs(VPd1l=G@lGQRX85IAcP3QdC4qPDFeJc?WjIG4G%naExFQ$wW;- zQF(~&u3Tu&q5`D=PphrC3l&|7viT=rhDJsMrW$t?6o;t+1Og$&LZJ637P;Xk9TnWr zR$u9F@9MzjW8joK6HXnIRrTcj-ua+;p-1T1j+@FP_WkzerE6yo9X*rRc<1KPcNP@{ zPMiDdlRy4=a%B3dH39gEXng?1^MCi!OQS3InQVbEA?4KxCB=D12can8vkdpCoZ_3@ zhl?5%F-@uR{ck?np=;M9&<`r6d4^gYSuqj0Fy%2S9?FI0C=w5s6s4&3Y{hJ*Z7gOq zVJ}K#8ei4t4Y-J{g2PtrpY}*{s;lL6|MJa)95z=oIV|4Y@ztK>%&qH~qF0Na3kVRD zr)U!u)O4UIOpHUfNH!6WX7Q&Hn?Yv1mD(@ZNlGXv#Ns-NM(ilx(%LX5m&h6VjPn#n z-mJ7;1PX^LbRINl2{SeF0m6p|m4{G8bDGkB*RQfa`{>8yl&gZG!87i+_=Xc>shW* z6Tcks!|m^X{JUTM#e$PS@p>6hl&G0Ar5cr$R=EL8f)BR*&7wLe7hFj#Pix~&Ra8_; zJ6eY~XDrCq7k|;$ou^@>9i`(;S-7XC(Uw@>hR0}C;j>7P0Y%PAdDLAs`^th~g+*gi zJpTlWB>QmV%mD$hQ%dK}WkrC&KO`q2HMaNdfBxt9Zl3u1qW|2bE9b3eRcWT)zMq_~ zsK>#=cxQ&T1x*1`Zefaw9E^-d<#^Nb>uRh`sV`(88Y@pSD~a|dj4KNvTZVncx<&yY3>CF=qd zL7|hM!A~vP;HmhEGhW421d9K7;_I_{ixyo&ELJqONd*4G-+%kwn;(9C;=>~ybzR49 zo|)s}9X4s{%6}R;yWorF6^s7u-z0}2uHv-6`^|6u>Nmp;xoNAava`!$&pzTQN}nR( zv+gOL&^mH%e)O@J!s0i-|7f?!zv@GM@Q-jtU2`i_myk`@S`u|PvA=_H6=JbSKVjq) zaT9S8(E;1Cd&`dGszIkvyQQDr#ah>?kLEH2nJ9+<$H8nXJveDVk%MQ;s&y^-t=p(N zb3`+AU0w3CGI?JocajJcgHkbuh19GH4mmCHv!H@x_h_o|3!5VKXnw<>&Ba1Hi6t}B z(`ozJ8{2`1<}I=`$1n=?VPH>P4ys_&btnr+2V>{~L;AyIu$gg~r?lMokr@edn&IMT zk=pY1d)x2bzu((Akpl3<)ln2S*s{8P`}Ux~60flyW5?y#L%>BqPur^o2SXu zlem;VMG3AwhfK~XjtVK~LYB-}NDB4_gZF;nKwM6sc?0lz8G-#@SS>)wtV zH!jAxd(K?BRG_H&i0KKOG!AB`t6NG&Nzo9~>V6!7{c}~>DHfJA`sd^uwI;o+c*;Zg zshBZ73*gntP$2sN9qL##j}Yhba+{5eOTEL!-5U!_r-hX^h~x$1(d{drnK_cp1#Ri1 z8)Yk&c&0lLuao_Pxu{D!>|U{DV^VIejbWI!^;cVg)9V?G@sw!_vMsXCumvY>@zSL` zOM&7i@QWNc3t{=bmox`>H7}XJrmAE`b6(A&Dt#~NwwAiC6*aw7T6WFvU6b9lWUI%x zRf*kQ^yJ8(-yNy63?>zIKT(HbjawYceC)`#$lKrqe{mF*QE3iM-;AFmDIR7DTnDvAF9Tn5U$}EN*GLVqv~k5jB4u?DMVM< zRsay?PtLw){hv(z@q8>y-GYhE1`MUzNuw1K6%?gz>1QvZJI)+(1E}NzQ;sBTlw>1R zl**yhCFLz!gCbk#jvrA}JaOhqU0&YdxbLi zp7#Cs^9p|d!G-Q6$#{y-zXcP8ihs9Y^h;r78Q~>~<$+!bihB9^=3t+qGS!pwC=@^b z_=`o2g#`+VY!Tp6pH0@)9JsCSK2k((m8+6mkxj-;9J5@u5K(D?jFM5@ldxA-rs7%Z zL`L&dgMph!fLM%Q+@9HFh7ci>T0W^$i9Ex8=?Njemnr~rx#XT-#K zO^kF=x()y)NJclvDXJZM!+ljL1GViLK(SsX8Co)%CTxG_>x(lqtwarr!NK+e3Som# zWMPUE-kX!a?~jc4GCv%}ekhvkD7W!7{G1Sba54XO#=TDLJ_Z!ok`Nc^PXcGP*S+oA zBfU!kq8BYZcldB#UQ|>JyXUdUpdc5?W&U!(Kiz)rSu(3DCztw8W}?{SDFROlia&h+ z76yJw9h7>XEdC&proO>7C_b^GK;q~4z!-m5p`tW0idnL9YI9SfJ?iFn!^8u3mY~gu zjKsz*o0bRU(2{2{lYd;g_}P=Q=gocgwGjMR0RYHTkN!WilzHlcttUVN9Z0)Yu&oMnau&a@^-)5x@bjB z-ht&siHvB$(yhz7n(IUyyJz|F<;nBsZw<(+&X|8^OY8xuwDhnMA1FTmh^Gh>H7F8b zIQb3XXj2xKRg0-uJw*m~Y=vvOH7Gt1PjT0dESovL*ugC&#Ax4QPFa;3nY%fwdSgn- zy6htKt_pH|TtzAbCK`N!pS#j};C)WdD=J@5PTZ7>{s7upneG=tMa&@Y!<-GQz8Vh{ z;hi#=h%^dM@(gw~*bmdfXKk(@B67mik?Z0|1zN9MbHzc-VeB$t!r8+oPQb)B&s?~6 zj(_7mi)13(ayLHtF_E?~guzr>n;NZ(8^a6HRmf z?xp7lp?&wKWz+}8#GE~ztH@Kq#LZ?NPi@#n4orxs;UxTQ(zug8q%FKI_Jfhck<5qf*_LS8wAm zqu+$JeXZN9wPiFWZfRbzX~$Qqgq*)N5*0g?@E9b7& z9nK34jg5*re}3XUiT({l%YXIaGnfBr@jLOvaECE(SUmV^2y=$t@B94S+L}D_fEWLyvk;I};(9_d!6n#tEZPr3# zYO1AZW1%^OuI@mCVdlJf{CHMv?TTPAgHV~Q9?MHBWKKC-K~ZhfO&1;t6w{SU2|!hf zC$lOOr;^V>axtDUvlzZGQG2c#Q=`&_0Z}!}a1?v)bT5knms!!vQJ~wHL~9WME#(`S z{MoPPUY>mL;N<;@WCJtEX3KZMvIC$<0V5>P>=0dCQIe5w<4yXrg9OTNU0?s~)vIM0 zSM%G$TVZG#P?QA_Blqp!>A4?x;V5Rd3KWe=B@=J;^xoN2*Zh9#@&gMydk!o&d)Hdq zXJ@p`={>MS5{Nx3^6spgKYv|yXXDnoJ7c0XNyW3bZoRurxs=#LQ2gYePfZ6BsC6hu*+YB@tb~wWDY?eCN=PW}E*!fNx;btbd)p3Qy0*-%2^dPLg&Oqv zmtK15x#yl+Fzki>Wu?A|I(8^1is310(qSS?rl5F2_Y^5z ze@>whMQ!5lhrGopS`C`y;vbnj{ty%m8WSe~!TU8>ry!B|S!~u?)k2*LSG*Y0@HS>U z%;B#K72RUJygJY4<<->W!Nn6DxBH^;~pxUjuvc1ij*n-__(`P>S!!sja zBBv-&v^vW?jN&3^t)pB5XWfuH41-qev<$bhu!!zm^$s2c@IasDED8>F-C8L^D=2bI zs|IhqhV9P^4crFKL|C|wm_alFB=PPpWk&uNj8~9cVo*_r@z^erlq67$5Ag?zQ^UyI zwpml+{r!zhqv6yL;Zp9Pt-G{=m$IdyUad(@$3LW9kRt@vWv8i);h10%Ur}<7IB{}I zNXTSe!)F#KR}h zRQl{2uaCU^!n3pAn7l7Py{tYXLsnVirQ$+Ks|zDK@wuBz5T#w8e=t)m|1Vqr#xt{9 z!rR*G+Z*yF*PWK39L3Z7_ATBSJWm#E14WXTTi;EoYtBO+u@BvwO(n~k51j4m*^!-F zPf5GBaDH!J_i>=ux2dLk)tqI?C7}+_&*`aKQ=|5@tnIn={?MUJgciUcX(BK^k&&& zT(r5Wgx*goW5ytF)shAFl<=koMM)IP8y*%We|1emjB7Rh%tNq_0)U|VYW}AW{L=>aY@|)*g8a8awy!}oy zCQP`fd5X#eih4^9L(jrP`526RXvOK)_xEUP2#}Jk;1E^XhFoY+#8_I&d-fm^weCd3 zEmOv@Uqf5Qw|iqWcckF5k&`U7+|1``>L_Y#g|DD*y&{XmC~P_TCIh=>r%f8BR62qy z+tS-Ab91u_Klt|TGZ&5=IVLHD3l}b&J9p)P?kOgQTg@!kZi#()v$mfnv?|<6}8a;4T~zCmi|U(&bW=@Fse^6`1_KL z2qc~o1#N1p(W{42eAw`URD69wn#-djdcX#x%jBUUBC4%dSFSGuibSWj`t>_kw$umH#$)0A2FH@cP@jOs zk^A;p!{(9y!M!7_HYaR#=)DCIdmr?4_crgSyR)LR`@m}@1>w2%_2rG-Kryf90ri%e zt{rP?Hdp1Ht15pO&qLVVpOl)FM|$sXv! z)zTC-jyelaR2?~;_Zy3BHdBzdIW;#X&^xoipA3A`s^lcqbcy7Ba$%HDyjg~t{P|1r z*A~4TcU=KiZ_p6q+>#umn3`}w8{!mD{F*Z|+=mYzzDE2E7J^(~LOp zwHLoTasno5rbCee_t632FsKL=6%xrOe(~`ayR?xOfJGD|3j-4LJpsDzAzAUC4Ec#D z;`>{xDxjc*%hlDp!Qq&(6c%Axnb9(4|?7aIQAauJ)%P~JTTIq)Ra#IYd$sxIC$WdFxNIp zSA?ayqF%J(22SyFbfIK29DQk`9=gbkiH=S#!H#x17l*6Lt*{S~9kRT3+K}^4bQJ&C zrr=lVgmiSDc>X>H5hqTBb0Cm9#YFVtz@nfLXHh+Jo>{e~3?xEp(BXF&>lQn4?W~D9 z7V#O+J5GP*_Dj#cj;&n(#`@VO**km?HPrpn#!p}RizmPTwel2CpI+JSJDeaxz^Dyl zOL~zrCRDUX&_LSf%7WAF^kIDJFauE3mjl8=ee;W6eF2<=&Hld9^{qkCKpom$pePAZ zC9OmAqa*RQ%C2irR4u&_QKD)07-p0SpOx4lQ!NpzXZ>nwFd56yc9ovBMqE#P85u~k zIQoS#mDhlvce%|H=#ST9#__4I4^L0ms?jal`)5LS1py0t0u!|qqk>nxTJ0J6*0OBWAu8|_MH9zLry&cjWPRcF(1w~(hA_QYkR&?~bWxcn0y9A1Ty$5!T>pO6~tC^oEGd#PZsQN%}UmvIYeRuL| z76ybCugdFOx4XM*Z|JT2-`%=Z*LC;hcO`NLh-4{cPnHfvhRP?h>rR-6kJm(5DX?6A z5BdDewHEOiH7GvNpxEgVXlXO~dp5Z?rPf+AEJiAmaUmti`pk=0Y{?I2uwzj~_nNap-HXc;Va? zCZS*c0{iHLGZ&6B0e$q?qKFwcs7F8Os#`7P@on=Y)Ii zZwri1iobE=7&LqsiYj~-DE_@BswhzWSec;l(vfq@RZPw%-;lF9qFh4W5+WMCKT#R= zmPgcaR53=?pR;8XTOq2+9s$UN%KLF+b#;mIGfRZ7WNRu|O{oPZSRqYe)#XXNghC9? z!+5)yT1qN3%vS`CEb&ISs59SQx^#B~Dn5VvyGtMKN~mZIIIKZ2-+MwN!umd03|?ig z%4VHMM93_1iVuyb3@2#wW1embJ`oefLmDbeuiENubR#EH>^*EaZ%2%yP^cM%r1$|06N#QFH8bwQ$eYpMJGY<$x3N42C1?7*ryeRunMdl=m7yWhRHrmv@_x2I}r zYi1b^@TwhMeLW1cux_uern@HeRB>MCnl;^hoAU1Te%E*R&hfh&-W{wxpT=a>G*C1J zu1@t2QK}n0MzeT|f!2y}u?l)3GY|=1(>(~qvz^;h4JI@fTuTkEx#?`Hbtm8sNlB>6 zX1PeATWqYEGPF;Y*@#P#O57}cwMKZzP5QF6#%)8G=+0skoaN9Npd#jn4OL(qA>12+ z6e!{FV?&+-ia3Zv6&7KjU1bCGlVF;VnvZiHK4K_-BL)|T>n4FV4x=^rJE; zdb~rR_;ts3#L%yvJ%z)#@T;#r`jl$R%|o59en)k>ujAsWx`o${pW8J5R7B9kiJd_q z4ga*-c&{)aCCZEYZdj2L?nm5z;Ksf>X>6gYtCIcBlgY*mypbTcWdjr8-7++ zL7$?#bgJ>1N zs5<`m9Pp>Oh+m~z9LBU^3sH^gOsIC zoE5}dR}}7Gl+WgvSe(QtGK#pAUNNMDnCmC}KkpS}xIFR?m+=%86*;jq^O^NHi@1x6 z7cBUvAD^Rn`!imm^}g!RWO<9TpBy{`+K?iNCO?rg$#4RO44Ds5+xyjzDIs%zgCf_; zW5fnEb+kZRry}6vbs#G=s6g|>D1}BMYz>M*27WjSk{T45gyD+&-abYVvQd^}4w?0Y zr^TCN-_Fyu!4u&qTu;6z&!Yp9sM%^IaHi)P6o!ZA2J-5))RyO32&T)Z4r#e-t|X$6 zqlyc~MTm%L5p+2RXpuQLr($zO1z&>r(7QZ4L3`%rHREcQ&F|{IL!l+Lbn*VM@l$6` zn>uw`uxr+)4K!uvRC)$a8b591$%8A~>eFoHqDYIESe}&IN$=Z+1ow8CU0TqsWo+-c|0_yrkg$;Res+3NIMR8{p$5k%1lOY z#5}Z6*_yAQm{V>|$*<6$2&7kaJ>)6g+wSj6(!iNJ|Qs*H>#HUY#GmSk5|Z7wQI z$%^-huU=Qd$hsL6^5^u2hDJ281HA=^sxO-*E)o+A)Kk<^BLTGDZ3y&6jF6MW%Z~%a z$6%tMP_Q`kH^M|J$!+<*<6)s75tD2B6Gx1|$K>niPN%Fj()p-nbd^c`g9d6`UPs4w z-_eaj67AS`H!fb3{NmZXnj=TvK5>(eF!OS(16m$Fa_GW}CD#g_yxj86%M4CV-tOE~ zuh^KVaW#1kP13lq#i8SCH72NgiqaQ;6T?Lm9LkCM%O#ljxiInltsgVym#lZu^7+X{ zNfA`^a;lS8m59Taski6!dy1B^?C!X@uegwRC9%2Nc4F~CsXsDL6m{WVds z=TlMWsNJlSit5-D+oG6MXuD>6*?+U(KUoW zh5KrDp6d=J@irflA5Ie=qZ+A_QN-pvFT_VYMIfR<@##`qph!mr`&N2WtyEBy;Y0MM zEEX%Cds_nyq_Se&l4}iWvIHXGYyqeZ#wHuPRkS0H3-(iJSX8vr`ADrUB{0UPJSKuV z3lCQ0r25nFn!}rPf;I{>F0ZDpuB)bI&axQNGb}%xIrW99Q>VJduXuUWhP`G==Z4V> zrY)Vfbapy&5EWPo>r-Xl;k0=puLDK;w3}4ROLQ>w z*~jFdb7|{auUofedaPJew_(?o-kw{%eNFv4G(X*G;_=)M6AZiS>((;2PLWjXIm<>rI&uK)AQUCLxYA_uHt52xIr-t1CIV&|>p|cQ z-9TYgnmC1fAN%vtPf*P`r7AnfR16*Q@|LmlEVo(c`U zaqQ^LLto=4va1wM9zS&G!dK@)V`i)k^_u1T!nEMkOXho(dwWH(8e?}-d{ItP^w?8p z;h-|WsD;mxQ$!ty>F55W;s@d=YQ2iT|ERloBMFs?Y+)QRudLHcp%DgWaZofz&9?x+ z%^ZA1l$MExiDC5xrB(XcKF$J3l7@oBLPbL87XTE6h{{oPh?mTdSsv$gl;fE?AvMsJ zk?TBx1|_;SPhC12U(19&E6!1ZCL5LG;BXEoq7d)T3?qj{dh51Upjdz$>1uyx#|iW( z@T$gxQV?UusmTQ>+6@Pac<}o(tqs<)c2ikmy(W?_Smc%(4C!yt5tD==--4a46v5L5 zNBT4lItmnlsN5N%J`bO4!i4SjI&lWY^i1Ju&CY{F%x#>9!?^R~yxe@EFt>4Td3kxE za1r+=Xtm4^o8~?9hub3shMe^)xVUom?DdOZ#8bR{S%YG}Y7cX?15b?6YmM8|z^)K3 zZ>~qMa=>tmw{ztle5)^ zz>^hM#ogSX`W#>hoy+Q?{O!@?ojMIB0>y|$YzN&P;Z0d@{CLF2UFm!+&(EeWf=;jY{o(EN zW-i`$b@qB|ZKc&Gi5^_uneh~>6X*`_b+Z6W}?Jm zDM;yT-c{4LYfqPyS#I5b0Oy+7?cB#y-@C0~k-gKc8;P9{^|A4A(X02j)SX?k`)mgr z@7hG~8kQOM`n@XpNtB9AVlTpRlL!Y8PLq<}* zAQ!Cdl_MIrhNEo2M)B(0o_GAL<{)0|AaX@uQaTz;4JOS9groH<@$9HGXo;`Ho zgTvbyb3+Tr;QK;w#Qd>dIWb;7WAm21QfSO&!$oN5@vnu4+Ib+S__eg;VB#>6RJ^2z z&yex=myU;uqNlftg0cv2ed75#NaLAVZ7-HA;WOTMLdj-$2@MN2Mmw-iwn#!2wLeEU zAtFzbq96kYv`FyPgnhz9cnB87xT(Pse^3H0`NPD~Trxy=~XLB zM%qddlyHJ`kPuw-S8eqmntS3G^3P5l(6$R;Ja2G=J-8Kt#{LOFy)45TEZjw{_{>>{ zViZVReO|LXw;HmEpknH;029`(RyMaVePm}baU|gVxxBJ-KH2mKI87H+pNCnTBf?+@W9DyPh zBz(iv61Y5|dboP1%Djud1lKtshO6+TDI`fX`` zrML=I&kRsjOpnaNr1M+#38Ob5WVBQUHCUQztuo2WVi^8YBiF=sIrW5w13fuv0+8DZ zi`DUKL*2%DxJ4&~6qM}9j*sz)_eqVc$kuj?Q&AvIfv?!zRp;g=GdHMLNM$Hy-13)q zE!^cm6pxRaBdewhvg_OODVk(vl(na|9^5x~Ugg1BRvwtkeIOz>hJ~w4Y%y5K;JxpD zw!sJ#vCONP0E^k@T0hr{b;(N>F3j7oqU%8qJ{#Vk;^O_DUH9=B8T6AiFa+4oS18d# zWE&2w?Oc;`Dmppz?1uT>Ub#*y#-*htCv<;#YX$vnh3M^Q?jlgU4ix92T@;2?kqEp| zi*%d6A~wp~)sioQ02IQ3;_hAzigI~&NpX71RcRz@Z?oo$N2{<{AZn+%IVn}yIXMyh zk$hGal#5(C8%9$jV<=NYT+)ldwB_I;N|%l+WK^Bn28u1iFc%OubcoQ86Iai{#9ur$ zM5LTZE|N`DsN_jhU=$Qr?wht$$Dt0zClnTipCg88PsA~lE(s}eOB~Z*|I-dxFAa*= z;R}b(c3k*S^vK`2aO~?3j|$SrHl8_xr+E0t(M!iC442lMQM3!W&OaQQ8shKoi%dfyeBqccEAl~?n7DfI6MZHl+U0))4#$Y0z;+zPiJVmF?M_EWrR0zfm zs#Mgh03Xq6bM33tB4Y)S zd0v9VRO-}V(b0bT?aP;!vXpqx7_ zMIxV7>WPqSC3Db<&=N#HJ}psw-~13lc+5}N7}H%oOj6lWUEvYcmBR=0k7#;iEH!|2 zlt%`jXsOeNdiqKr6z1$|Kn%rM-{UXN zqUz-F#MD(OLOlL7-!XsFMp$5E;iVDpltCF)3iYg|Wd}>g$atfMT~t7|Imzc#)L80O z0XrfJva^dOve(5YCNf102a+p`&n2Yxik0nx<9yWn{Fve~KHil7=PaDRYr~S5z*5#H zl^5(LGgFd}Za-z@**h6rIk*Z#%ug`q_WJ`M8m$!P@a$X$hN!G`<@+vfw1=TC(&GYnC%Unf} zsJ5{CR!=9tom`lhuR$?+k%Hm_1;x&VYu06owVcjuxe60CDpIOs;d)9)QbIzZ(ac7j zs*>dDlz1P!pV*jqoFZ@18Sc)a1|jjX5>Rw^m)r1)xn^PsKY=1}1AtOt`Nc1A0l6tT zMNsHBRN08po)fk6B zQ)SX>nigZ?{XzZlb03T~CRSHe?_RU0!!n^aiRALy?OQH95tPnQHm`b2bY> zyYPY(DGK8$B4@B#ECh=Ri71q84Zp#JiXyeHoY|Ga!s2L@mFP!A$Pz(WwcP%5uEwD!pLLfM>8EOZ_;3wX=uqk6i4==-w7xZQria5=XOoJk*B-N2^O20oM~AkoW@bX6`~B&P+9Bk!iy6D94g12B6vWj zKPFu`g_RFn=ExXtqQHsp5hzy6{*Sg&XJI>?==il9&mME;%wJYK zXW6p6nq7C7yBck_oGgUF3KG!0Fil5OICDfXLnb3@2=+F?&br%J$pD)W>FRB2RMvUZmw!= z{p6EvqIk2stFM!}llyfJc{Rzg<61pB7gbDfDEGX6{p88CinU+f?SYDoS3U zkJemcq)&WBRYgR+cf`7cgsh6qjS)U$d4Wc(rZ+W2X*j8PSuUkPzZAI#S&BN^U_aVm zklYP4~u03__^MJ}sSzEt%(b+?KRuL#lkp@2MP}I2y6a|Td z&g2yZii0A^2?fm6Wx>V}iU8v6@B;TSbM#dgWmi|1^C7~CF=LpVXN(1pe4|KlqR)xi zc2Y_;eq?nK2n_M^#}lHFfCQosEadH4fe{*FTwyRFI9h0zZ5wFCue?u{Rp)LreEXjbwwM3r{p?E$T@{cUM& z^v0PC^-s%v;aHeG_ztd?xE>99HJ}t>!!fKr?N+9AtH?>h<#)Pz|$d$tMT%?fE8wm|EeAJuVn$sNQ69q{!j&|lJ4ZBkLUnx z5HUbS+)8B{Cv_~Ne-j2)@a2mD#;+0u85Bbb#QPS7dob*5DxkT`KNmO$9Y#MC~l77Wi@`-=n=yf zsQ7I3B$kf&II!1l$&&fYmTcPe<#KmVl=?%w%;7ED+O4n8-uLU1r$70OrBw}#+T=Jy z5tq9a$H2rfyn`z!CKV%k(pXUIyl?5esr$(%aM3D-Ae11d4BAEgQRmB0Ac6i}E^?W4$s9JLe~CUy{}O+4Yk@X6&BG znp2=y4eY{IR^8g(X4)?klgw7)Mdz#zS@TMBPfyRSPXE<04G2LfDDpe$)}g4{6!(^- zXPy>67Sp3=&f+ZQSPLU~XErA%B$<=eC9LxD%E{i*IL<91#B3J*08Jv1|4sf{2HN#i znMK;MhS`r7T>9A!!AAs#aP61B{HwouLSkV-BU!?!lZJ^YN70$$i62nhKXo!7eN0E8 zUU0$0xg0*sUZ}`_6zooGf^PmCVkFE}z~b*8xg81;AD_Lb^a1g8UOjyL;>GP3FCIF2 z;=QA1r`#YvNG;~;6US~i{bnes)FDIuEYsq<;&2e zJoNP;Sg1TjOmuh@4@oEr8Q=c>?|%3Br{8}2`R9buzhkrZ02UeeE6N(f3~3U*(NR%) z812Bmii+f|>oz+?kWKXP@GvK#%1M{DU=e4rF{Lp8^^KSqx9E-ZA`%hH>fRXtmI3BR3TPd&m#Va(1Y%;w97?d-$F4g8ht7w~lv7;4K> zxCJy66v^xY837BX)U=iCA*RofJUY-a=qvIiXb7Yd4HA3htY%z|$W7Qq=OOl`u}O&xkVDK$q?Q;=6s z43ZZCV}4qh#y1S{cqOnyiwGG5TU%SMuDtrz?2*r$JpKCmwl=)ghT1HTSg(kQJ^`U)#yB_#6cPQwLx?UcE=;lb z?wdF7g?$IZRsJFoZ!A5qNwS2!w{G3dK`7qO+nd}16j74Eh@ho)NZ*i|VIy#k zoDf&EuBsrZDj^{@BqlU^%ifJ1K0e-RQ@y|8p+6QQeyT=B)tM@>+Wt3b7!DpaXVj2? zsSGAQCGj*+oMiHZrozNYlg5vB@dJvP($aOS{spG8K#NY0Y$axCB}QT zE9=Ubzae~zqfWpfn3{U3o7!^+iA5Cn)XJrcYmcAZKH=ipBXs3-Y)9^f!V3=Lp^J2b zyU1ZTt@ikZb6H!nyi(&{y>a-XXk)GG>ZHQrv7vJoUb*&Nhk&u;hE}B!C}QAIODcW~ z5yd{0+~S74JG9x8WQl(Z%2Oa>L7{}o(Xfqtkpn11{2>MAHYRyQxp@#+$j)*PI<;jb z3s}TmOi3ZOj(4b5R=|t_Y{WfOQ>l8jSs186kPFW0HZ@CigW$->d|d6;ZLNvkmHVDW zEcuPuB-hIR{AWK8PYh3#wUK2RDdh7(u8$Y7CtZU=1`*DZG@ujn&gv~?xV@j9LKd|V zZcO>@uZC$*gp@#0Z}wKret?5(KW+O7n3Mt7ulCS!uKIS^ma1Rm{!xl8Vs4n`g|1(G=RER}tNwTYI7M6JuW+PN_)rv9q8SLW?EK2cE2Jg~M7C^m0>{`u?d`KE3Avma+p|Am2x=LnDGi<+C) z1l+rqcdJLBct0j4#++|qmyW8O?|1}?8EcLt7_)}@HNt*_*QNBfN)J(NV^6Hol=SHHyH zdxG#8FiPKIn2BGpK+$)+VYJjx+A?35w0PclslUL%{>-9OYK9O%%YtAfi%gfKF-4Zw zddCo)PK1d-k=Re(##7hcIn*Hq=T|Sjx_0fW+b`lW-Z*~hB7yV~g5WF1zCHmH1&R~M zaw3)T_!H9%N8ZUxsxo`I$3?z+=%eUB%Zv%Jp=-CVUF)#9s^Dw~JN1EL$Jg}qdvl{=hC_J7SE&5 zGI^5k%GmZ%S}V8C zL?tDm%F}+z^!_Ammxh2$h0tm_mwGPG)@s&rAg8)|6R~P#>{*J6tMTX}FrN_jpa~K_ z^UHOio(L3GGErqFRhdy3SlL9RTxwEMjgAzgOD#aKt)Z03GG2KW&r0epCQqJH$)d+V zu*j!dnrP6Iv>GFQAu$st;#2q+aj4~_+S|KZB6Bm9*hqM|21R_t=`W1OPn^DB!3!_Y zFpTFoeYA^-O@O%~ev=lSc6B9CJUw~j+)1{Sat?d5H8&@~C)8^@KgC)aYWZp6xxgDB zcn&Bm54V)goHncyC^A!%mWJHelCGNGf#e|oY^L;Y0J90 zI5^IBba!?ZhsQR&RqFiuXFp!Q{^Rx6Pi7vt&$iRPg|mPB@%!7CWh2G+e|YA{leUz- zFTcF2S(MPm-Rtb`QBdr}qiRaA)>|kve8|utLm&Ukmz>U=xfq{B^z0b}P(#5GFqfjC?nXwfY}w-PZJDR>lcGoQp?|XaAr5DF5~2>KoVXr$5>M;`gKec)F=a2L7VT_-$}ouDQ{FOMNPL z`u`94O!a$Fzrmkzi`y7?|C8@u|0MnY;fZ|epZ=V)`sELrJd2Bm?BS2`(Sbh{|D8Od z9{*FhmhYPHh?@f^9+NAcsu>>?)Boap;7|Cz<-3uSd>wU|%h%?c;1;HTr}7c`JWT)H z$SuBv_I*73+x)XX`LqAV_*(K3;%Vvt<0M~e@M}Eu%hDeZ<5K^Cenb0(Joo@*WlLNBfxc%STBQJI_E*~}Zfc&58XprxO<3zXr0Mqq>+GlgH QMF0Q*07*qoM6N<$g0Xh!V*mgE literal 0 HcmV?d00001 diff --git a/docs/src/assets/images/play.svg b/docs/src/assets/images/play.svg new file mode 100644 index 00000000..38bf0db0 --- /dev/null +++ b/docs/src/assets/images/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/src/assets/images/star.svg b/docs/src/assets/images/star.svg new file mode 100644 index 00000000..b739bf5c --- /dev/null +++ b/docs/src/assets/images/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/src/assets/images/terminal.svg b/docs/src/assets/images/terminal.svg new file mode 100644 index 00000000..9f3a7c3a --- /dev/null +++ b/docs/src/assets/images/terminal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/src/assets/images/twig.svg b/docs/src/assets/images/twig.svg new file mode 100644 index 00000000..f8480d3e --- /dev/null +++ b/docs/src/assets/images/twig.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/src/assets/images/xfive.png b/docs/src/assets/images/xfive.png new file mode 100644 index 0000000000000000000000000000000000000000..ba762dc9cde520ea60a2dfbc4ab5bd7cfd46eab7 GIT binary patch literal 170438 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